root/drivers/isdn/mISDN/l1oip.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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 
  63         /* timer */
  64         struct timer_list       keep_tl;
  65         struct timer_list       timeout_tl;
  66         int                     timeout_on;
  67         struct work_struct      workq;
  68 
  69         /* socket */
  70         struct socket           *socket;        /* if set, socket is created */
  71         struct completion       socket_complete;/* completion of sock thread */
  72         struct task_struct      *socket_thread;
  73         spinlock_t              socket_lock;    /* access sock outside thread */
  74         u32                     remoteip;       /* if all set, ip is assigned */
  75         u16                     localport;      /* must always be set */
  76         u16                     remoteport;     /* must always be set */
  77         struct sockaddr_in      sin_local;      /* local socket name */
  78         struct sockaddr_in      sin_remote;     /* remote socket name */
  79         struct msghdr           sendmsg;        /* ip message to send */
  80         struct kvec             sendiov;        /* iov for message */
  81 
  82         /* frame */
  83         struct l1oip_chan       chan[128];      /* channel instances */
  84 };
  85 
  86 extern int l1oip_law_to_4bit(u8 *data, int len, u8 *result, u32 *state);
  87 extern int l1oip_4bit_to_law(u8 *data, int len, u8 *result);
  88 extern int l1oip_alaw_to_ulaw(u8 *data, int len, u8 *result);
  89 extern int l1oip_ulaw_to_alaw(u8 *data, int len, u8 *result);
  90 extern void l1oip_4bit_free(void);
  91 extern int l1oip_4bit_alloc(int ulaw);

/* [<][>][^][v][top][bottom][index][help] */