linux/drivers/isdn/mISDN/l1oip.h
<<
>>
Prefs
   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 */
  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_DEBUG
  39        int                     disorder_flag;
  40        struct sk_buff          *disorder_skb;
  41        u32                     disorder_cnt;
  42#endif
  43};
  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
  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
  86extern int l1oip_law_to_4bit(u8 *data, int len, u8 *result, u32 *state);
  87extern int l1oip_4bit_to_law(u8 *data, int len, u8 *result);
  88extern int l1oip_alaw_to_ulaw(u8 *data, int len, u8 *result);
  89extern int l1oip_ulaw_to_alaw(u8 *data, int len, u8 *result);
  90extern void l1oip_4bit_free(void);
  91extern int l1oip_4bit_alloc(int ulaw);
  92