Merge branch 'linus' into core/softlockup
[linux-2.6] / drivers / isdn / mISDN / l1oip.h
1 /*
2  * see notice in l1oip.c
3  */
4
5 /* debugging */
6 #define DEBUG_L1OIP_INIT        0x00010000
7 #define DEBUG_L1OIP_SOCKET      0x00020000
8 #define DEBUG_L1OIP_MGR         0x00040000
9 #define DEBUG_L1OIP_MSG         0x00080000
10
11 /* enable to disorder received bchannels by sequence 2143658798... */
12 /*
13 #define REORDER_DEBUG
14 */
15
16 /* frames */
17 #define L1OIP_MAX_LEN           2048            /* max packet size form l2 */
18 #define L1OIP_MAX_PERFRAME      1400            /* max data size in one frame */
19
20
21 /* timers */
22 #define L1OIP_KEEPALIVE         15
23 #define L1OIP_TIMEOUT           65
24
25
26 /* socket */
27 #define L1OIP_DEFAULTPORT       931
28
29
30 /* channel structure */
31 struct l1oip_chan {
32         struct dchannel         *dch;
33         struct bchannel         *bch;
34         u32                     tx_counter;     /* counts xmit bytes/packets */
35         u32                     rx_counter;     /* counts recv bytes/packets */
36         u32                     codecstate;     /* used by codec to save data */
37 #ifdef REORDER_DEBUG
38         int                     disorder_flag;
39         struct sk_buff          *disorder_skb;
40         u32                     disorder_cnt;
41 #endif
42 };
43
44
45 /* card structure */
46 struct l1oip {
47         struct list_head        list;
48
49         /* card */
50         int                     registered;     /* if registered with mISDN */
51         char                    name[MISDN_MAX_IDLEN];
52         int                     idx;            /* card index */
53         int                     pri;            /* 1=pri, 0=bri */
54         int                     d_idx;          /* current dchannel number */
55         int                     b_num;          /* number of bchannels */
56         u32                     id;             /* id of connection */
57         int                     ondemand;       /* if transmis. is on demand */
58         int                     bundle;         /* bundle channels in one frm */
59         int                     codec;          /* codec to use for transmis. */
60         int                     limit;          /* limit number of bchannels */
61
62         /* timer */
63         struct timer_list       keep_tl;
64         struct timer_list       timeout_tl;
65         int                     timeout_on;
66         struct work_struct      workq;
67
68         /* socket */
69         struct socket           *socket;        /* if set, socket is created */
70         struct completion       socket_complete;/* completion of sock thread */
71         struct task_struct      *socket_thread;
72         spinlock_t              socket_lock;    /* access sock outside thread */
73         u32                     remoteip;       /* if all set, ip is assigned */
74         u16                     localport;      /* must always be set */
75         u16                     remoteport;     /* must always be set */
76         struct sockaddr_in      sin_local;      /* local socket name */
77         struct sockaddr_in      sin_remote;     /* remote socket name */
78         struct msghdr           sendmsg;        /* ip message to send */
79         struct iovec            sendiov;        /* iov for message */
80
81         /* frame */
82         struct l1oip_chan       chan[128];      /* channel instances */
83 };
84
85 extern int l1oip_law_to_4bit(u8 *data, int len, u8 *result, u32 *state);
86 extern int l1oip_4bit_to_law(u8 *data, int len, u8 *result);
87 extern int l1oip_alaw_to_ulaw(u8 *data, int len, u8 *result);
88 extern int l1oip_ulaw_to_alaw(u8 *data, int len, u8 *result);
89 extern void l1oip_4bit_free(void);
90 extern int l1oip_4bit_alloc(int ulaw);
91