root/drivers/isdn/mISDN/layer2.h

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

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * Layer 2 defines
   4  *
   5  * Copyright 2008  by Karsten Keil <kkeil@novell.com>
   6  */
   7 
   8 #include <linux/mISDNif.h>
   9 #include <linux/skbuff.h>
  10 #include "fsm.h"
  11 
  12 #define MAX_WINDOW      8
  13 
  14 struct manager {
  15         struct mISDNchannel     ch;
  16         struct mISDNchannel     bcast;
  17         u_long                  options;
  18         struct list_head        layer2;
  19         rwlock_t                lock;
  20         struct FsmInst          deact;
  21         struct FsmTimer         datimer;
  22         struct sk_buff_head     sendq;
  23         struct mISDNchannel     *up;
  24         u_int                   nextid;
  25         u_int                   lastid;
  26 };
  27 
  28 struct teimgr {
  29         int                     ri;
  30         int                     rcnt;
  31         struct FsmInst          tei_m;
  32         struct FsmTimer         timer;
  33         int                     tval, nval;
  34         struct layer2           *l2;
  35         struct manager          *mgr;
  36 };
  37 
  38 struct laddr {
  39         u_char  A;
  40         u_char  B;
  41 };
  42 
  43 struct layer2 {
  44         struct list_head        list;
  45         struct mISDNchannel     ch;
  46         u_long                  flag;
  47         int                     id;
  48         struct mISDNchannel     *up;
  49         signed char             sapi;
  50         signed char             tei;
  51         struct laddr            addr;
  52         u_int                   maxlen;
  53         struct teimgr           *tm;
  54         u_int                   vs, va, vr;
  55         int                     rc;
  56         u_int                   window;
  57         u_int                   sow;
  58         struct FsmInst          l2m;
  59         struct FsmTimer         t200, t203;
  60         int                     T200, N200, T203;
  61         u_int                   next_id;
  62         u_int                   down_id;
  63         struct sk_buff          *windowar[MAX_WINDOW];
  64         struct sk_buff_head     i_queue;
  65         struct sk_buff_head     ui_queue;
  66         struct sk_buff_head     down_queue;
  67         struct sk_buff_head     tmp_queue;
  68 };
  69 
  70 enum {
  71         ST_L2_1,
  72         ST_L2_2,
  73         ST_L2_3,
  74         ST_L2_4,
  75         ST_L2_5,
  76         ST_L2_6,
  77         ST_L2_7,
  78         ST_L2_8,
  79 };
  80 
  81 #define L2_STATE_COUNT (ST_L2_8 + 1)
  82 
  83 extern struct layer2    *create_l2(struct mISDNchannel *, u_int,
  84                                    u_long, int, int);
  85 extern int              tei_l2(struct layer2 *, u_int, u_long arg);
  86 
  87 
  88 /* from tei.c */
  89 extern int              l2_tei(struct layer2 *, u_int, u_long arg);
  90 extern void             TEIrelease(struct layer2 *);
  91 extern int              TEIInit(u_int *);
  92 extern void             TEIFree(void);
  93 
  94 #define MAX_L2HEADER_LEN 4
  95 
  96 #define RR      0x01
  97 #define RNR     0x05
  98 #define REJ     0x09
  99 #define SABME   0x6f
 100 #define SABM    0x2f
 101 #define DM      0x0f
 102 #define UI      0x03
 103 #define DISC    0x43
 104 #define UA      0x63
 105 #define FRMR    0x87
 106 #define XID     0xaf
 107 
 108 #define CMD     0
 109 #define RSP     1
 110 
 111 #define LC_FLUSH_WAIT 1
 112 
 113 #define FLG_LAPB        0
 114 #define FLG_LAPD        1
 115 #define FLG_ORIG        2
 116 #define FLG_MOD128      3
 117 #define FLG_PEND_REL    4
 118 #define FLG_L3_INIT     5
 119 #define FLG_T200_RUN    6
 120 #define FLG_ACK_PEND    7
 121 #define FLG_REJEXC      8
 122 #define FLG_OWN_BUSY    9
 123 #define FLG_PEER_BUSY   10
 124 #define FLG_DCHAN_BUSY  11
 125 #define FLG_L1_ACTIV    12
 126 #define FLG_ESTAB_PEND  13
 127 #define FLG_PTP         14
 128 #define FLG_FIXED_TEI   15
 129 #define FLG_L2BLOCK     16
 130 #define FLG_L1_NOTREADY 17
 131 #define FLG_LAPD_NET    18

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