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