Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 #ifndef _LAPB_H
  2 #define _LAPB_H 
  3 #include <linux/lapb.h>
  4 
  5 #define LAPB_HEADER_LEN 20              /* LAPB over Ethernet + a bit more */
  6 
  7 #define LAPB_ACK_PENDING_CONDITION      0x01
  8 #define LAPB_REJECT_CONDITION           0x02
  9 #define LAPB_PEER_RX_BUSY_CONDITION     0x04
 10 
 11 /* Control field templates */
 12 #define LAPB_I          0x00    /* Information frames */
 13 #define LAPB_S          0x01    /* Supervisory frames */
 14 #define LAPB_U          0x03    /* Unnumbered frames */
 15 
 16 #define LAPB_RR         0x01    /* Receiver ready */
 17 #define LAPB_RNR        0x05    /* Receiver not ready */
 18 #define LAPB_REJ        0x09    /* Reject */
 19 
 20 #define LAPB_SABM       0x2F    /* Set Asynchronous Balanced Mode */
 21 #define LAPB_SABME      0x6F    /* Set Asynchronous Balanced Mode Extended */
 22 #define LAPB_DISC       0x43    /* Disconnect */
 23 #define LAPB_DM         0x0F    /* Disconnected mode */
 24 #define LAPB_UA         0x63    /* Unnumbered acknowledge */
 25 #define LAPB_FRMR       0x87    /* Frame reject */
 26 
 27 #define LAPB_ILLEGAL    0x100   /* Impossible to be a real frame type */
 28 
 29 #define LAPB_SPF        0x10    /* Poll/final bit for standard LAPB */
 30 #define LAPB_EPF        0x01    /* Poll/final bit for extended LAPB */
 31 
 32 #define LAPB_FRMR_W     0x01    /* Control field invalid        */
 33 #define LAPB_FRMR_X     0x02    /* I field invalid              */
 34 #define LAPB_FRMR_Y     0x04    /* I field too long             */
 35 #define LAPB_FRMR_Z     0x08    /* Invalid N(R)                 */
 36 
 37 #define LAPB_POLLOFF    0
 38 #define LAPB_POLLON     1
 39 
 40 /* LAPB C-bit */
 41 #define LAPB_COMMAND    1
 42 #define LAPB_RESPONSE   2
 43 
 44 #define LAPB_ADDR_A     0x03
 45 #define LAPB_ADDR_B     0x01
 46 #define LAPB_ADDR_C     0x0F
 47 #define LAPB_ADDR_D     0x07
 48 
 49 /* Define Link State constants. */
 50 enum {
 51         LAPB_STATE_0,   /* Disconnected State           */
 52         LAPB_STATE_1,   /* Awaiting Connection State    */
 53         LAPB_STATE_2,   /* Awaiting Disconnection State */
 54         LAPB_STATE_3,   /* Data Transfer State          */
 55         LAPB_STATE_4    /* Frame Reject State           */
 56 };
 57 
 58 #define LAPB_DEFAULT_MODE               (LAPB_STANDARD | LAPB_SLP | LAPB_DTE)
 59 #define LAPB_DEFAULT_WINDOW             7               /* Window=7 */
 60 #define LAPB_DEFAULT_T1                 (5 * HZ)        /* T1=5s    */
 61 #define LAPB_DEFAULT_T2                 (1 * HZ)        /* T2=1s    */
 62 #define LAPB_DEFAULT_N2                 20              /* N2=20    */
 63 
 64 #define LAPB_SMODULUS   8
 65 #define LAPB_EMODULUS   128
 66 
 67 /*
 68  *      Information about the current frame.
 69  */
 70 struct lapb_frame {
 71         unsigned short          type;           /* Parsed type          */
 72         unsigned short          nr, ns;         /* N(R), N(S)           */
 73         unsigned char           cr;             /* Command/Response     */
 74         unsigned char           pf;             /* Poll/Final           */
 75         unsigned char           control[2];     /* Original control data*/
 76 };
 77 
 78 /*
 79  *      The per LAPB connection control structure.
 80  */
 81 struct lapb_cb {
 82         struct list_head        node;
 83         struct net_device       *dev;
 84 
 85         /* Link status fields */
 86         unsigned int            mode;
 87         unsigned char           state;
 88         unsigned short          vs, vr, va;
 89         unsigned char           condition;
 90         unsigned short          n2, n2count;
 91         unsigned short          t1, t2;
 92         struct timer_list       t1timer, t2timer;
 93 
 94         /* Internal control information */
 95         struct sk_buff_head     write_queue;
 96         struct sk_buff_head     ack_queue;
 97         unsigned char           window;
 98         struct lapb_register_struct callbacks;
 99 
100         /* FRMR control information */
101         struct lapb_frame       frmr_data;
102         unsigned char           frmr_type;
103 
104         atomic_t                refcnt;
105 };
106 
107 /* lapb_iface.c */
108 extern void lapb_connect_confirmation(struct lapb_cb *lapb, int);
109 extern void lapb_connect_indication(struct lapb_cb *lapb, int);
110 extern void lapb_disconnect_confirmation(struct lapb_cb *lapb, int);
111 extern void lapb_disconnect_indication(struct lapb_cb *lapb, int);
112 extern int  lapb_data_indication(struct lapb_cb *lapb, struct sk_buff *);
113 extern int  lapb_data_transmit(struct lapb_cb *lapb, struct sk_buff *);
114 
115 /* lapb_in.c */
116 extern void lapb_data_input(struct lapb_cb *lapb, struct sk_buff *);
117 
118 /* lapb_out.c */
119 extern void lapb_kick(struct lapb_cb *lapb);
120 extern void lapb_transmit_buffer(struct lapb_cb *lapb, struct sk_buff *, int);
121 extern void lapb_establish_data_link(struct lapb_cb *lapb);
122 extern void lapb_enquiry_response(struct lapb_cb *lapb);
123 extern void lapb_timeout_response(struct lapb_cb *lapb);
124 extern void lapb_check_iframes_acked(struct lapb_cb *lapb, unsigned short);
125 extern void lapb_check_need_response(struct lapb_cb *lapb, int, int);
126 
127 /* lapb_subr.c */
128 extern void lapb_clear_queues(struct lapb_cb *lapb);
129 extern void lapb_frames_acked(struct lapb_cb *lapb, unsigned short);
130 extern void lapb_requeue_frames(struct lapb_cb *lapb);
131 extern int  lapb_validate_nr(struct lapb_cb *lapb, unsigned short);
132 extern int lapb_decode(struct lapb_cb *lapb, struct sk_buff *, struct lapb_frame *);
133 extern void lapb_send_control(struct lapb_cb *lapb, int, int, int);
134 extern void lapb_transmit_frmr(struct lapb_cb *lapb);
135 
136 /* lapb_timer.c */
137 extern void lapb_start_t1timer(struct lapb_cb *lapb);
138 extern void lapb_start_t2timer(struct lapb_cb *lapb);
139 extern void lapb_stop_t1timer(struct lapb_cb *lapb);
140 extern void lapb_stop_t2timer(struct lapb_cb *lapb);
141 extern int  lapb_t1timer_running(struct lapb_cb *lapb);
142 
143 /*
144  * Debug levels.
145  *      0 = Off
146  *      1 = State Changes
147  *      2 = Packets I/O and State Changes
148  *      3 = Hex dumps, Packets I/O and State Changes.
149  */
150 #define LAPB_DEBUG      0
151 
152 #endif
153 
  This page was automatically generated by the LXR engine.