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 */ |
24 | struct 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 | */ |
34 | struct 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 | */ |
55 | struct 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 | |
70 | struct 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 | */ |
120 | struct 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 | |