| /* | |
| * IrNET protocol module : Synchronous PPP over an IrDA socket. | |
| * | |
| * Jean II - HPL `00 - <jt@hpl.hp.com> | |
| * | |
| * This file contains all definitions and declarations necessary for the | |
| * PPP part of the IrNET module. | |
| * This file is a private header, so other modules don't want to know | |
| * what's in there... | |
| */ | |
| #ifndef IRNET_PPP_H | |
| #define IRNET_PPP_H | |
| /***************************** INCLUDES *****************************/ | |
| #include "irnet.h" /* Module global include */ | |
| /************************ CONSTANTS & MACROS ************************/ | |
| /* /dev/irnet file constants */ | |
| #define IRNET_MAJOR 10 /* Misc range */ | |
| #define IRNET_MINOR 187 /* Official allocation */ | |
| /* IrNET control channel stuff */ | |
| #define IRNET_MAX_COMMAND 256 /* Max length of a command line */ | |
| /* PPP hardcore stuff */ | |
| /* Bits in rbits (PPP flags in irnet struct) */ | |
| #define SC_RCV_BITS (SC_RCV_B7_1|SC_RCV_B7_0|SC_RCV_ODDP|SC_RCV_EVNP) | |
| /* Bit numbers in busy */ | |
| #define XMIT_BUSY 0 | |
| #define RECV_BUSY 1 | |
| #define XMIT_WAKEUP 2 | |
| #define XMIT_FULL 3 | |
| /* Queue management */ | |
| #define PPPSYNC_MAX_RQLEN 32 /* arbitrary */ | |
| /****************************** TYPES ******************************/ | |
| /**************************** PROTOTYPES ****************************/ | |
| /* ----------------------- CONTROL CHANNEL ----------------------- */ | |
| static inline ssize_t | |
| irnet_ctrl_write(irnet_socket *, | |
| const char *, | |
| size_t); | |
| static inline ssize_t | |
| irnet_ctrl_read(irnet_socket *, | |
| struct file *, | |
| char *, | |
| size_t); | |
| static inline unsigned int | |
| irnet_ctrl_poll(irnet_socket *, | |
| struct file *, | |
| poll_table *); | |
| /* ----------------------- CHARACTER DEVICE ----------------------- */ | |
| static int | |
| dev_irnet_open(struct inode *, /* fs callback : open */ | |
| struct file *), | |
| dev_irnet_close(struct inode *, | |
| struct file *); | |
| static ssize_t | |
| dev_irnet_write(struct file *, | |
| const char __user *, | |
| size_t, | |
| loff_t *), | |
| dev_irnet_read(struct file *, | |
| char __user *, | |
| size_t, | |
| loff_t *); | |
| static unsigned int | |
| dev_irnet_poll(struct file *, | |
| poll_table *); | |
| static long | |
| dev_irnet_ioctl(struct file *, | |
| unsigned int, | |
| unsigned long); | |
| /* ------------------------ PPP INTERFACE ------------------------ */ | |
| static inline struct sk_buff * | |
| irnet_prepare_skb(irnet_socket *, | |
| struct sk_buff *); | |
| static int | |
| ppp_irnet_send(struct ppp_channel *, | |
| struct sk_buff *); | |
| static int | |
| ppp_irnet_ioctl(struct ppp_channel *, | |
| unsigned int, | |
| unsigned long); | |
| /**************************** VARIABLES ****************************/ | |
| /* Filesystem callbacks (to call us) */ | |
| static const struct file_operations irnet_device_fops = | |
| { | |
| .owner = THIS_MODULE, | |
| .read = dev_irnet_read, | |
| .write = dev_irnet_write, | |
| .poll = dev_irnet_poll, | |
| .unlocked_ioctl = dev_irnet_ioctl, | |
| .open = dev_irnet_open, | |
| .release = dev_irnet_close, | |
| .llseek = noop_llseek, | |
| /* Also : llseek, readdir, mmap, flush, fsync, fasync, lock, readv, writev */ | |
| }; | |
| /* Structure so that the misc major (drivers/char/misc.c) take care of us... */ | |
| static struct miscdevice irnet_misc_device = | |
| { | |
| IRNET_MINOR, | |
| "irnet", | |
| &irnet_device_fops | |
| }; | |
| #endif /* IRNET_PPP_H */ |