home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / linux / if_frad.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  5.1 KB  |  202 lines

  1. /*
  2.  * DLCI/FRAD    Definitions for Frame Relay Access Devices.  DLCI devices are
  3.  *        created for each DLCI associated with a FRAD.  The FRAD driver
  4.  *        is not truly a network device, but the lower level device
  5.  *        handler.  This allows other FRAD manufacturers to use the DLCI
  6.  *        code, including its RFC1490 encapsulation alongside the current
  7.  *        implementation for the Sangoma cards.
  8.  *
  9.  * Version:    @(#)if_ifrad.h    0.15    31 Mar 96
  10.  *
  11.  * Author:    Mike McLagan <mike.mclagan@linux.org>
  12.  *
  13.  * Changes:
  14.  *        0.15    Mike McLagan    changed structure defs (packed)
  15.  *                    re-arranged flags
  16.  *                    added DLCI_RET vars
  17.  *
  18.  *        This program is free software; you can redistribute it and/or
  19.  *        modify it under the terms of the GNU General Public License
  20.  *        as published by the Free Software Foundation; either version
  21.  *        2 of the License, or (at your option) any later version.
  22.  */
  23.  
  24. #ifndef _FRAD_H_
  25. #define _FRAD_H_
  26.  
  27. #include <linux/if.h>
  28.  
  29. #if defined(CONFIG_DLCI) || defined(CONFIG_DLCI_MODULE)
  30.  
  31. /* Structures and constants associated with the DLCI device driver */
  32.  
  33. struct dlci_add
  34. {
  35.    char  devname[IFNAMSIZ];
  36.    short dlci;
  37. };
  38.  
  39. #define DLCI_GET_CONF    (SIOCDEVPRIVATE + 2)
  40. #define DLCI_SET_CONF    (SIOCDEVPRIVATE + 3)
  41.  
  42. /* 
  43.  * These are related to the Sangoma SDLA and should remain in order. 
  44.  * Code within the SDLA module is based on the specifics of this 
  45.  * structure.  Change at your own peril.
  46.  */
  47. struct dlci_conf {
  48.    short flags;
  49.    short CIR_fwd;
  50.    short Bc_fwd;
  51.    short Be_fwd;
  52.    short CIR_bwd;
  53.    short Bc_bwd;
  54.    short Be_bwd; 
  55.  
  56. /* these are part of the status read */
  57.    short Tc_fwd;
  58.    short Tc_bwd;
  59.    short Tf_max;
  60.    short Tb_max;
  61.  
  62. /* add any new fields here above is a mirror of sdla_dlci_conf */
  63. };
  64.  
  65. #define DLCI_GET_SLAVE    (SIOCDEVPRIVATE + 4)
  66.  
  67. /* configuration flags for DLCI */
  68. #define DLCI_IGNORE_CIR_OUT    0x0001
  69. #define DLCI_ACCOUNT_CIR_IN    0x0002
  70. #define DLCI_BUFFER_IF        0x0008
  71.  
  72. #define DLCI_VALID_FLAGS    0x000B
  73.  
  74. /* FRAD driver uses these to indicate what it did with packet */
  75. #define DLCI_RET_OK        0x00
  76. #define DLCI_RET_ERR        0x01
  77. #define DLCI_RET_DROP        0x02
  78.  
  79. /* defines for the actual Frame Relay hardware */
  80. #define FRAD_GET_CONF    (SIOCDEVPRIVATE)
  81. #define FRAD_SET_CONF    (SIOCDEVPRIVATE + 1)
  82.  
  83. #define FRAD_LAST_IOCTL    FRAD_SET_CONF
  84.  
  85. /*
  86.  * Based on the setup for the Sangoma SDLA.  If changes are 
  87.  * necessary to this structure, a routine will need to be 
  88.  * added to that module to copy fields.
  89.  */
  90. struct frad_conf 
  91. {
  92.    short station;
  93.    short flags;
  94.    short kbaud;
  95.    short clocking;
  96.    short mtu;
  97.    short T391;
  98.    short T392;
  99.    short N391;
  100.    short N392;
  101.    short N393;
  102.    short CIR_fwd;
  103.    short Bc_fwd;
  104.    short Be_fwd;
  105.    short CIR_bwd;
  106.    short Bc_bwd;
  107.    short Be_bwd;
  108.  
  109. /* Add new fields here, above is a mirror of the sdla_conf */
  110.  
  111. };
  112.  
  113. #define FRAD_STATION_CPE    0x0000
  114. #define FRAD_STATION_NODE    0x0001
  115.  
  116. #define FRAD_TX_IGNORE_CIR    0x0001
  117. #define FRAD_RX_ACCOUNT_CIR    0x0002
  118. #define FRAD_DROP_ABORTED    0x0004
  119. #define FRAD_BUFFERIF        0x0008
  120. #define FRAD_STATS        0x0010
  121. #define FRAD_MCI        0x0100
  122. #define FRAD_AUTODLCI        0x8000
  123. #define FRAD_VALID_FLAGS    0x811F
  124.  
  125. #define FRAD_CLOCK_INT        0x0001
  126. #define FRAD_CLOCK_EXT        0x0000
  127.  
  128. #ifdef __KERNEL__
  129.  
  130. /* these are the fields of an RFC 1490 header */
  131. struct frhdr
  132. {
  133.    unsigned char  control;
  134.  
  135.    /* for IP packets, this can be the NLPID */
  136.    unsigned char  pad;
  137.  
  138.    unsigned char  NLPID;
  139.    unsigned char  OUI[3];
  140.    unsigned short PID;
  141.  
  142. #define IP_NLPID pad 
  143. } __attribute__((packed));
  144.  
  145. /* see RFC 1490 for the definition of the following */
  146. #define FRAD_I_UI        0x03
  147.  
  148. #define FRAD_P_PADDING        0x00
  149. #define FRAD_P_Q933        0x08
  150. #define FRAD_P_SNAP        0x80
  151. #define FRAD_P_CLNP        0x81
  152. #define FRAD_P_IP        0xCC
  153.  
  154. struct dlci_local
  155. {
  156.    struct net_device_stats stats;
  157.    struct net_device      *master;
  158.    struct net_device      *slave;
  159.    struct dlci_conf       config;
  160.    int                    configured;
  161.    struct list_head      list;
  162.  
  163.    /* callback function */
  164.    void              (*receive)(struct sk_buff *skb, struct net_device *);
  165. };
  166.  
  167. struct frad_local
  168. {
  169.    struct net_device_stats stats;
  170.  
  171.    /* devices which this FRAD is slaved to */
  172.    struct net_device     *master[CONFIG_DLCI_MAX];
  173.    short             dlci[CONFIG_DLCI_MAX];
  174.  
  175.    struct frad_conf  config;
  176.    int               configured;    /* has this device been configured */
  177.    int               initialized;    /* mem_start, port, irq set ? */
  178.  
  179.    /* callback functions */
  180.    int               (*activate)(struct net_device *, struct net_device *);
  181.    int               (*deactivate)(struct net_device *, struct net_device *);
  182.    int               (*assoc)(struct net_device *, struct net_device *);
  183.    int               (*deassoc)(struct net_device *, struct net_device *);
  184.    int               (*dlci_conf)(struct net_device *, struct net_device *, int get);
  185.  
  186.    /* fields that are used by the Sangoma SDLA cards */
  187.    struct timer_list timer;
  188.    int               type;        /* adapter type */
  189.    int               state;        /* state of the S502/8 control latch */
  190.    int               buffer;        /* current buffer for S508 firmware */
  191. };
  192.  
  193. #endif /* __KERNEL__ */
  194.  
  195. #endif /* CONFIG_DLCI || CONFIG_DLCI_MODULE */
  196.  
  197. #ifdef __KERNEL__
  198. extern void dlci_ioctl_set(int (*hook)(unsigned int, void __user *));
  199. #endif
  200.  
  201. #endif
  202.