/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Layer 2 defines
 *
 * Copyright 2008  by Karsten Keil <kkeil@novell.com>
 */

#include <linux/mISDNif.h>
#include <linux/skbuff.h>
#include "fsm.h"

#define MAX_WINDOW	8

struct manager {
	struct mISDNchannel	ch;
	struct mISDNchannel	bcast;
	u_long			options;
	struct list_head	layer2;
	rwlock_t		lock;
	struct FsmInst		deact;
	struct FsmTimer		datimer;
	struct sk_buff_head	sendq;
	struct mISDNchannel	*up;
	u_int			nextid;
	u_int			lastid;
};

struct teimgr {
	int			ri;
	int			rcnt;
	struct FsmInst		tei_m;
	struct FsmTimer		timer;
	int			tval, nval;
	struct layer2		*l2;
	struct manager		*mgr;
};

struct laddr {
	u_char	A;
	u_char	B;
};

struct layer2 {
	struct list_head	list;
	struct mISDNchannel	ch;
	u_long			flag;
	int			id;
	struct mISDNchannel	*up;
	signed char		sapi;
	signed char		tei;
	struct laddr		addr;
	u_int			maxlen;
	struct teimgr		*tm;
	u_int			vs, va, vr;
	int			rc;
	u_int			window;
	u_int			sow;
	struct FsmInst		l2m;
	struct FsmTimer		t200, t203;
	int			T200, N200, T203;
	u_int			next_id;
	u_int			down_id;
	struct sk_buff		*windowar[MAX_WINDOW];
	struct sk_buff_head	i_queue;
	struct sk_buff_head	ui_queue;
	struct sk_buff_head	down_queue;
	struct sk_buff_head	tmp_queue;
};

enum {
	ST_L2_1,
	ST_L2_2,
	ST_L2_3,
	ST_L2_4,
	ST_L2_5,
	ST_L2_6,
	ST_L2_7,
	ST_L2_8,
};

#define L2_STATE_COUNT (ST_L2_8 + 1)

extern struct layer2	*create_l2(struct mISDNchannel *, u_int,
				   u_long, int, int);
extern int		tei_l2(struct layer2 *, u_int, u_long arg);


/* from tei.c */
extern int		l2_tei(struct layer2 *, u_int, u_long arg);
extern void		TEIrelease(struct layer2 *);
extern int		TEIInit(u_int *);
extern void		TEIFree(void);

#define MAX_L2HEADER_LEN 4

#define RR	0x01
#define RNR	0x05
#define REJ	0x09
#define SABME	0x6f
#define SABM	0x2f
#define DM	0x0f
#define UI	0x03
#define DISC	0x43
#define UA	0x63
#define FRMR	0x87
#define XID	0xaf

#define CMD	0
#define RSP	1

#define LC_FLUSH_WAIT 1

#define FLG_LAPB	0
#define FLG_LAPD	1
#define FLG_ORIG	2
#define FLG_MOD128	3
#define FLG_PEND_REL	4
#define FLG_L3_INIT	5
#define FLG_T200_RUN	6
#define FLG_ACK_PEND	7
#define FLG_REJEXC	8
#define FLG_OWN_BUSY	9
#define FLG_PEER_BUSY	10
#define FLG_DCHAN_BUSY	11
#define FLG_L1_ACTIV	12
#define FLG_ESTAB_PEND	13
#define FLG_PTP		14
#define FLG_FIXED_TEI	15
#define FLG_L2BLOCK	16
#define FLG_L1_NOTREADY	17
#define FLG_LAPD_NET	18
