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

Subversion Repositories or1k

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

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
#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
typedef struct lapb_cb {
82
        struct lapb_cb          *next;
83
        void                    *token;
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
} lapb_cb;
104
 
105
/* lapb_iface.c */
106
extern void lapb_connect_confirmation(lapb_cb *, int);
107
extern void lapb_connect_indication(lapb_cb *, int);
108
extern void lapb_disconnect_confirmation(lapb_cb *, int);
109
extern void lapb_disconnect_indication(lapb_cb *, int);
110
extern int  lapb_data_indication(lapb_cb *, struct sk_buff *);
111
extern int  lapb_data_transmit(lapb_cb *, struct sk_buff *);
112
 
113
/* lapb_in.c */
114
extern void lapb_data_input(lapb_cb *, struct sk_buff *);
115
 
116
/* lapb_out.c */
117
extern void lapb_kick(lapb_cb *);
118
extern void lapb_transmit_buffer(lapb_cb *, struct sk_buff *, int);
119
extern void lapb_establish_data_link(lapb_cb *);
120
extern void lapb_enquiry_response(lapb_cb *);
121
extern void lapb_timeout_response(lapb_cb *);
122
extern void lapb_check_iframes_acked(lapb_cb *, unsigned short);
123
extern void lapb_check_need_response(lapb_cb *, int, int);
124
 
125
/* lapb_subr.c */
126
extern void lapb_clear_queues(lapb_cb *);
127
extern void lapb_frames_acked(lapb_cb *, unsigned short);
128
extern void lapb_requeue_frames(lapb_cb *);
129
extern int  lapb_validate_nr(lapb_cb *, unsigned short);
130
extern void lapb_decode(lapb_cb *, struct sk_buff *, struct lapb_frame *);
131
extern void lapb_send_control(lapb_cb *, int, int, int);
132
extern void lapb_transmit_frmr(lapb_cb *);
133
 
134
/* lapb_timer.c */
135
extern void lapb_start_t1timer(lapb_cb *);
136
extern void lapb_start_t2timer(lapb_cb *);
137
extern void lapb_stop_t1timer(lapb_cb *);
138
extern void lapb_stop_t2timer(lapb_cb *);
139
extern int  lapb_t1timer_running(lapb_cb *);
140
 
141
/*
142
 * Debug levels.
143
 *      0 = Off
144
 *      1 = State Changes
145
 *      2 = Packets I/O and State Changes
146
 *      3 = Hex dumps, Packets I/O and State Changes.
147
 */
148
#define LAPB_DEBUG      0
149
 
150
#endif

powered by: WebSVN 2.1.0

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