Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/drivers/isdn/mISDN/l1oip.h
15111 views
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
92
93