OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [net/] [llc.h] - Blame information for rev 1774

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
#include <linux/skbuff.h>
2
 
3
#define LLC_MODULE
4
 
5
typedef struct llc_struct llc;
6
typedef struct llc_struct *llcptr;
7
 
8
/*
9
 *      LLC private data area structure.
10
 */
11
 
12
struct llc_struct
13
{
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
31
        {
32
                /*
33
                 *      FRMR_RSP info field structure: 5.4.2.3.5 p55
34
                 */
35
 
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;
42
 
43
        /*
44
         *      Timers in 7.8.1 page 78
45
         */
46
 
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];
58
 
59
        /*
60
         *      Client entry point, called by the LLC.
61
         */
62
 
63
        void    (*llc_event)(struct llc_struct *);
64
 
65
        /*
66
         *      Mux and Demux variables
67
         */
68
 
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 */
74
 
75
        unsigned char llc_mode;         /* See doc 7.1 on p70 */
76
#define MODE_ADM 1
77
#define MODE_ABM 2
78
 
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
94
 
95
        struct sk_buff *inc_skb;        /* Saved data buffer for indications */
96
 
97
        struct sk_buff_head rtq;        /* Retransmit queue */
98
        struct sk_buff_head atq;        /* Await transit queue */
99
 
100
        unsigned char xid_count;
101
 
102
        struct llc_struct *nextllc;     /* ptr to next llc struct in proto chain */
103
};
104
 
105
#define ADD_TO_RTQ(skb) skb_queue_tail(&lp->rtq,skb)
106
#define ADD_TO_ATQ(skb) skb_queue_tail(&lp->atq,skb)
107
 
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);
124
 
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);
131
 
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 );
135
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.