Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / drivers / net / fddi / skfp / h / sba.h
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