File Index
Files and directories
Sign in
FILE

layer2.h

File preview with syntax highlighting.

linux-6.19.14/drivers/isdn/mISDN/layer2.h C
  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
 14struct 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
 28struct 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
 38struct laddr {
 39	u_char	A;
 40	u_char	B;
 41};
 42
 43struct 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
 70enum {
 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
 83extern struct layer2	*create_l2(struct mISDNchannel *, u_int,
 84				   u_long, int, int);
 85extern int		tei_l2(struct layer2 *, u_int, u_long arg);
 86
 87
 88/* from tei.c */
 89extern int		l2_tei(struct layer2 *, u_int, u_long arg);
 90extern void		TEIrelease(struct layer2 *);
 91extern int		TEIInit(u_int *);
 92extern 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
~/ Read-only file preview.