* add p cc
[mascara-docs.git] / i386 / linux / linux-2.3.21 / include / net / llc.h
blob609b2123d4bd71bd3643641afaaa29f754d00617
1 #include <linux/skbuff.h>
3 #define LLC_MODULE
5 typedef struct llc_struct llc;
6 typedef struct llc_struct *llcptr;
8 /*
9 * LLC private data area structure.
12 struct llc_struct
14 char eye[4]; /* To recognize llc area in dump */
15 int retry_count; /* LLC link state variables */
16 unsigned char name[9]; /* name of this llc instance */
17 unsigned char s_flag;
18 unsigned char p_flag;
19 unsigned char f_flag;
20 unsigned char data_flag;
21 unsigned char cause_flag;
22 unsigned char vs; /* Send state variable */
23 unsigned char vr; /* Receive state variable */
24 unsigned char remote_busy;
25 unsigned char state; /* Current state of type2 llc procedure */
26 int n1; /* Maximum number of bytes in I pdu 7.8.2 */
27 int n2; /* Naximum number of retransmissions 7.8.2 */
28 unsigned char k; /* Transmit window size 7.8.4, tw in IBM doc*/
29 unsigned char rw; /* Receive window size */
30 struct
33 * FRMR_RSP info field structure: 5.4.2.3.5 p55
36 unsigned char cntl1;
37 unsigned char cntl2;
38 unsigned char vs;
39 unsigned char vr_cr;
40 unsigned char xxyz;
41 } frmr_info_fld;
44 * Timers in 7.8.1 page 78
47 #define P_TIMER 0
48 #define REJ_TIMER 1
49 #define ACK_TIMER 2
50 #define BUSY_TIMER 3
51 unsigned long timer_expire_time[4];
52 unsigned char timer_state[4]; /* The state of each timer */
53 #define TIMER_IDLE 0
54 #define TIMER_RUNNING 1
55 #define TIMER_EXPIRED 2
56 unsigned long timer_interval[4];
57 struct timer_list tl[4];
59 /*
60 * Client entry point, called by the LLC.
63 void (*llc_event)(struct llc_struct *);
66 * Mux and Demux variables
69 char * client_data; /* Pointer to clients context */
70 unsigned char local_sap;
71 unsigned char remote_sap ;
72 char remote_mac[MAX_ADDR_LEN]; /* MAC address of remote session partner */
73 struct net_device *dev; /* Device we are attached to */
75 unsigned char llc_mode; /* See doc 7.1 on p70 */
76 #define MODE_ADM 1
77 #define MODE_ABM 2
79 int llc_callbacks; /* Pending callbacks */
80 #define LLC_CONN_INDICATION 1 /* We have to ensure the names don't */
81 #define LLC_CONN_CONFIRM 2 /* mix up with the 802 state table */
82 #define LLC_DATA_INDIC 4
83 #define LLC_DISC_INDICATION 8
84 #define LLC_RESET_INDIC_LOC 16
85 #define LLC_RESET_INDIC_REM 32
86 #define LLC_RST_CONFIRM 64
87 #define LLC_FRMR_RECV 128
88 #define LLC_FRMR_SENT 256
89 #define LLC_REMOTE_BUSY 512
90 #define LLC_REMOTE_NOTBUSY 1024
91 #define LLC_TEST_INDICATION 2048
92 #define LLC_XID_INDICATION 4096
93 #define LLC_UI_DATA 8192
95 struct sk_buff *inc_skb; /* Saved data buffer for indications */
97 struct sk_buff_head rtq; /* Retransmit queue */
98 struct sk_buff_head atq; /* Await transit queue */
100 unsigned char xid_count;
102 struct llc_struct *nextllc; /* ptr to next llc struct in proto chain */
105 #define ADD_TO_RTQ(skb) skb_queue_tail(&lp->rtq,skb)
106 #define ADD_TO_ATQ(skb) skb_queue_tail(&lp->atq,skb)
108 void llc_cancel_timers(llcptr lp);
109 int llc_decode_frametype(frameptr fr);
110 llcptr llc_find(void);
111 int llc_free_acknowledged_skbs(llcptr lp, unsigned char ack);
112 void llc_handle_xid_indication( char *chsp, short int ll, char *xid_data);
113 void llc_interpret_pseudo_code(llcptr lp, int pc_label, struct sk_buff *skb, char type);
114 void llc_add_to_queue(struct sk_buff *skb, struct sk_buff **f, struct sk_buff **b);
115 void llc_process_otype2_frame(llcptr lp, struct sk_buff *skb, char type);
116 struct sk_buff *llc_pull_from_atq(llcptr lp);
117 int llc_resend_ipdu(llcptr lp, unsigned char ack_nr, unsigned char type, char p);
118 void llc_sendpdu(llcptr lp, char type, char pf, int data_len, char *pdu_data);
119 void llc_sendipdu(llcptr lp, char type, char pf, struct sk_buff *skb);
120 void llc_start_timer(llcptr lp, int t);
121 void llc_stop_timer(llcptr lp, int t);
122 void llc_timer_expired(llcptr lp, int t);
123 int llc_validate_seq_nos(llcptr lp, frameptr fr);
125 int llc_data_request(llcptr lp, struct sk_buff *skb);
126 void llc_unit_data_request(llcptr lp, int ll, char * data);
127 void llc_disconnect_request(llcptr lp);
128 void llc_connect_request(llcptr lp);
129 void llc_xid_request(llcptr lp, char opt, int data_len, char *pdu_data);
130 void llc_test_request(llcptr lp, int data_len, char *pdu_data);
132 int register_cl2llc_client(llcptr llc, const char *device, void (*ops)(llcptr), u8 *rmac, u8 ssap, u8 dsap);
133 void unregister_cl2llc_client(llcptr lp);
134 int llc_mac_data_indicate(llcptr lp, struct sk_buff *skb );