xref: /openbmc/linux/drivers/isdn/mISDN/l1oip.h (revision 0da85d1e)
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 kvec		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