Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/net/irda/irnet/irnet_ppp.h
15115 views
1
/*
2
* IrNET protocol module : Synchronous PPP over an IrDA socket.
3
*
4
* Jean II - HPL `00 - <[email protected]>
5
*
6
* This file contains all definitions and declarations necessary for the
7
* PPP part of the IrNET module.
8
* This file is a private header, so other modules don't want to know
9
* what's in there...
10
*/
11
12
#ifndef IRNET_PPP_H
13
#define IRNET_PPP_H
14
15
/***************************** INCLUDES *****************************/
16
17
#include "irnet.h" /* Module global include */
18
19
/************************ CONSTANTS & MACROS ************************/
20
21
/* /dev/irnet file constants */
22
#define IRNET_MAJOR 10 /* Misc range */
23
#define IRNET_MINOR 187 /* Official allocation */
24
25
/* IrNET control channel stuff */
26
#define IRNET_MAX_COMMAND 256 /* Max length of a command line */
27
28
/* PPP hardcore stuff */
29
30
/* Bits in rbits (PPP flags in irnet struct) */
31
#define SC_RCV_BITS (SC_RCV_B7_1|SC_RCV_B7_0|SC_RCV_ODDP|SC_RCV_EVNP)
32
33
/* Bit numbers in busy */
34
#define XMIT_BUSY 0
35
#define RECV_BUSY 1
36
#define XMIT_WAKEUP 2
37
#define XMIT_FULL 3
38
39
/* Queue management */
40
#define PPPSYNC_MAX_RQLEN 32 /* arbitrary */
41
42
/****************************** TYPES ******************************/
43
44
45
/**************************** PROTOTYPES ****************************/
46
47
/* ----------------------- CONTROL CHANNEL ----------------------- */
48
static inline ssize_t
49
irnet_ctrl_write(irnet_socket *,
50
const char *,
51
size_t);
52
static inline ssize_t
53
irnet_ctrl_read(irnet_socket *,
54
struct file *,
55
char *,
56
size_t);
57
static inline unsigned int
58
irnet_ctrl_poll(irnet_socket *,
59
struct file *,
60
poll_table *);
61
/* ----------------------- CHARACTER DEVICE ----------------------- */
62
static int
63
dev_irnet_open(struct inode *, /* fs callback : open */
64
struct file *),
65
dev_irnet_close(struct inode *,
66
struct file *);
67
static ssize_t
68
dev_irnet_write(struct file *,
69
const char __user *,
70
size_t,
71
loff_t *),
72
dev_irnet_read(struct file *,
73
char __user *,
74
size_t,
75
loff_t *);
76
static unsigned int
77
dev_irnet_poll(struct file *,
78
poll_table *);
79
static long
80
dev_irnet_ioctl(struct file *,
81
unsigned int,
82
unsigned long);
83
/* ------------------------ PPP INTERFACE ------------------------ */
84
static inline struct sk_buff *
85
irnet_prepare_skb(irnet_socket *,
86
struct sk_buff *);
87
static int
88
ppp_irnet_send(struct ppp_channel *,
89
struct sk_buff *);
90
static int
91
ppp_irnet_ioctl(struct ppp_channel *,
92
unsigned int,
93
unsigned long);
94
95
/**************************** VARIABLES ****************************/
96
97
/* Filesystem callbacks (to call us) */
98
static const struct file_operations irnet_device_fops =
99
{
100
.owner = THIS_MODULE,
101
.read = dev_irnet_read,
102
.write = dev_irnet_write,
103
.poll = dev_irnet_poll,
104
.unlocked_ioctl = dev_irnet_ioctl,
105
.open = dev_irnet_open,
106
.release = dev_irnet_close,
107
.llseek = noop_llseek,
108
/* Also : llseek, readdir, mmap, flush, fsync, fasync, lock, readv, writev */
109
};
110
111
/* Structure so that the misc major (drivers/char/misc.c) take care of us... */
112
static struct miscdevice irnet_misc_device =
113
{
114
IRNET_MINOR,
115
"irnet",
116
&irnet_device_fops
117
};
118
119
#endif /* IRNET_PPP_H */
120
121