linux/net/irda/irnet/irnet_ppp.h
<<
>>
Prefs
   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 ----------------------- */
  48static inline ssize_t
  49        irnet_ctrl_write(irnet_socket *,
  50                         const char *,
  51                         size_t);
  52static inline ssize_t
  53        irnet_ctrl_read(irnet_socket *,
  54                        struct file *,
  55                        char *,
  56                        size_t);
  57static inline unsigned int
  58        irnet_ctrl_poll(irnet_socket *,
  59                        struct file *,
  60                        poll_table *);
  61/* ----------------------- CHARACTER DEVICE ----------------------- */
  62static int
  63        dev_irnet_open(struct inode *,  /* fs callback : open */
  64                       struct file *),
  65        dev_irnet_close(struct inode *,
  66                        struct file *);
  67static 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 *);
  76static unsigned int
  77        dev_irnet_poll(struct file *,
  78                       poll_table *);
  79static long
  80        dev_irnet_ioctl(struct file *,
  81                        unsigned int,
  82                        unsigned long);
  83/* ------------------------ PPP INTERFACE ------------------------ */
  84static inline struct sk_buff *
  85        irnet_prepare_skb(irnet_socket *,
  86                          struct sk_buff *);
  87static int
  88        ppp_irnet_send(struct ppp_channel *,
  89                      struct sk_buff *);
  90static int
  91        ppp_irnet_ioctl(struct ppp_channel *,
  92                        unsigned int,
  93                        unsigned long);
  94
  95/**************************** VARIABLES ****************************/
  96
  97/* Filesystem callbacks (to call us) */
  98static 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... */
 112static struct miscdevice irnet_misc_device =
 113{
 114        IRNET_MINOR,
 115        "irnet",
 116        &irnet_device_fops
 117};
 118
 119#endif /* IRNET_PPP_H */
 120