Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* |
2 | * IrNET protocol module : Synchronous PPP over an IrDA socket. | |
3 | * | |
4 | * Jean II - HPL `00 - <jt@hpl.hp.com> | |
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 int | |
80 | dev_irnet_ioctl(struct inode *, | |
81 | struct file *, | |
82 | unsigned int, | |
83 | unsigned long); | |
84 | /* ------------------------ PPP INTERFACE ------------------------ */ | |
85 | static inline struct sk_buff * | |
86 | irnet_prepare_skb(irnet_socket *, | |
87 | struct sk_buff *); | |
88 | static int | |
89 | ppp_irnet_send(struct ppp_channel *, | |
90 | struct sk_buff *); | |
91 | static int | |
92 | ppp_irnet_ioctl(struct ppp_channel *, | |
93 | unsigned int, | |
94 | unsigned long); | |
95 | ||
96 | /**************************** VARIABLES ****************************/ | |
97 | ||
98 | /* Filesystem callbacks (to call us) */ | |
99 | static struct file_operations irnet_device_fops = | |
100 | { | |
101 | .owner = THIS_MODULE, | |
102 | .read = dev_irnet_read, | |
103 | .write = dev_irnet_write, | |
104 | .poll = dev_irnet_poll, | |
105 | .ioctl = dev_irnet_ioctl, | |
106 | .open = dev_irnet_open, | |
107 | .release = dev_irnet_close | |
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 */ |