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