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