93 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/*3 * see notice in l1oip.c4 */5 6/* debugging */7#define DEBUG_L1OIP_INIT 0x000100008#define DEBUG_L1OIP_SOCKET 0x000200009#define DEBUG_L1OIP_MGR 0x0004000010#define DEBUG_L1OIP_MSG 0x0008000011 12/* enable to disorder received bchannels by sequence 2143658798... */13/*14 #define REORDER_DEBUG15*/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 1524#define L1OIP_TIMEOUT 6525 26 27/* socket */28#define L1OIP_DEFAULTPORT 93129 30 31/* channel structure */32struct 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_DEBUG39 int disorder_flag;40 struct sk_buff *disorder_skb;41 u32 disorder_cnt;42#endif43};44 45 46/* card structure */47struct 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 87extern int l1oip_law_to_4bit(u8 *data, int len, u8 *result, u32 *state);88extern int l1oip_4bit_to_law(u8 *data, int len, u8 *result);89extern int l1oip_alaw_to_ulaw(u8 *data, int len, u8 *result);90extern int l1oip_ulaw_to_alaw(u8 *data, int len, u8 *result);91extern void l1oip_4bit_free(void);92extern int l1oip_4bit_alloc(int ulaw);93