1/* SPDX-License-Identifier: GPL-2.0-or-later */
2/******************************************************************************
3 *
4 *	(C)Copyright 1998,1999 SysKonnect,
5 *	a business unit of Schneider & Koch & Co. Datensysteme GmbH.
6 *
7 *	The information in this file is provided "AS IS" without warranty.
8 *
9 ******************************************************************************/
10
11/*
12 * Synchronous Bandwidth Allocation (SBA) structs
13 */
14
15#ifndef _SBA_
16#define _SBA_
17
18#include "mbuf.h"
19#include "sba_def.h"
20
21#ifdef	SBA
22
23/* Timer Cell Template */
24struct timer_cell {
25	struct timer_cell	*next_ptr ;
26	struct timer_cell	*prev_ptr ;
27	u_long			start_time ;
28	struct s_sba_node_vars	*node_var ;
29} ;
30
31/*
32 * Node variables
33 */
34struct s_sba_node_vars {
35	u_char			change_resp_flag ;
36	u_char			report_resp_flag ;
37	u_char			change_req_flag ;
38	u_char			report_req_flag ;
39	long			change_amount ;
40	long			node_overhead ;
41	long			node_payload ;
42	u_long			node_status ;
43	u_char			deallocate_status ;
44	u_char			timer_state ;
45	u_short			report_cnt ;
46	long			lastrep_req_tranid ;
47	struct fddi_addr	mac_address ;
48	struct s_sba_sessions 	*node_sessions ;
49	struct timer_cell	timer ;
50} ;
51
52/*
53 * Session variables
54 */
55struct s_sba_sessions {
56	u_long			deallocate_status ;
57	long			session_overhead ;
58	u_long			min_segment_size ;
59	long			session_payload ;
60	u_long			session_status ;
61	u_long			sba_category ;
62	long			lastchg_req_tranid ;
63	u_short			session_id ;
64	u_char			class ;
65	u_char			fddi2 ;
66	u_long			max_t_neg ;
67	struct s_sba_sessions	*next_session ;
68} ;
69
70struct s_sba {
71
72	struct s_sba_node_vars	node[MAX_NODES] ;
73	struct s_sba_sessions	session[MAX_SESSIONS] ;
74
75	struct s_sba_sessions	*free_session ;	/* points to the first */
76						/* free session */
77
78	struct timer_cell	*tail_timer ;	/* points to the last timer cell */
79
80	/*
81	 * variables for allocation actions
82	 */
83	long	total_payload ;		/* Total Payload */
84	long	total_overhead ;	/* Total Overhead */
85	long	sba_allocatable ;	/* allocatable sync bandwidth */
86
87	/*
88	 * RAF message receive parameters
89	 */
90	long		msg_path_index ;	/* Path Type */
91	long		msg_sba_pl_req ;	/* Payload Request */
92	long		msg_sba_ov_req ;	/* Overhead Request */
93	long		msg_mib_pl ;		/* Current Payload for this Path */
94	long		msg_mib_ov ;		/* Current Overhead for this Path*/
95	long		msg_category ;		/* Category of the Allocation */
96	u_long		msg_max_t_neg ;		/* longest T_Neg acceptable */
97	u_long		msg_min_seg_siz ;	/* minimum segement size */
98	struct smt_header	*sm ;		/* points to the rec message */
99	struct fddi_addr	*msg_alloc_addr ;	/* Allocation Address */
100
101	/*
102	 * SBA variables
103	 */
104	u_long	sba_t_neg ;		/* holds the last T_NEG */
105	long	sba_max_alloc ;		/* the parsed value of SBAAvailable */
106
107	/*
108	 * SBA state machine variables
109	 */
110	short	sba_next_state ;	/* the next state of the SBA */
111	char	sba_command ;		/* holds the execuded SBA cmd */
112	u_char	sba_available ;		/* parsed value after possible check */
113} ;
114
115#endif	/* SBA */
116
117	/*
118	 * variables for the End Station Support
119	 */
120struct s_ess {
121
122	/*
123	 * flags and counters
124	 */
125	u_char	sync_bw_available ;	/* is set if sync bw is allocated */
126	u_char	local_sba_active ;	/* set when a local sba is available */
127	char	raf_act_timer_poll ;	/* activate the timer to send allc req */
128	char	timer_count ;		/* counts every timer function call */
129
130	SMbuf	*sba_reply_pend ;	/* local reply for the sba is pending */
131
132	/*
133	 * variables for the ess bandwidth control
134	 */
135	long	sync_bw ;		/* holds the allocaed sync bw */
136	u_long	alloc_trans_id ;	/* trans id of the last alloc req */
137} ;
138#endif
139