1 /******************************************************************************
 
   3  *      (C)Copyright 1998,1999 SysKonnect,
 
   4  *      a business unit of Schneider & Koch & Co. Datensysteme GmbH.
 
   6  *      This program is free software; you can redistribute it and/or modify
 
   7  *      it under the terms of the GNU General Public License as published by
 
   8  *      the Free Software Foundation; either version 2 of the License, or
 
   9  *      (at your option) any later version.
 
  11  *      The information in this file is provided "AS IS" without warranty.
 
  13  ******************************************************************************/
 
  16  * Synchronous Bandwidth Allocation (SBA) structs
 
  23 #include "h/sba_def.h"
 
  27 /* Timer Cell Template */
 
  29         struct timer_cell       *next_ptr ;
 
  30         struct timer_cell       *prev_ptr ;
 
  32         struct s_sba_node_vars  *node_var ;
 
  38 struct s_sba_node_vars {
 
  39         u_char                  change_resp_flag ;
 
  40         u_char                  report_resp_flag ;
 
  41         u_char                  change_req_flag ;
 
  42         u_char                  report_req_flag ;
 
  47         u_char                  deallocate_status ;
 
  50         long                    lastrep_req_tranid ;
 
  51         struct fddi_addr        mac_address ;
 
  52         struct s_sba_sessions   *node_sessions ;
 
  53         struct timer_cell       timer ;
 
  59 struct s_sba_sessions {
 
  60         u_long                  deallocate_status ;
 
  61         long                    session_overhead ;
 
  62         u_long                  min_segment_size ;
 
  63         long                    session_payload ;
 
  64         u_long                  session_status ;
 
  66         long                    lastchg_req_tranid ;
 
  71         struct s_sba_sessions   *next_session ;
 
  76         struct s_sba_node_vars  node[MAX_NODES] ;
 
  77         struct s_sba_sessions   session[MAX_SESSIONS] ;
 
  79         struct s_sba_sessions   *free_session ; /* points to the first */
 
  82         struct timer_cell       *tail_timer ;   /* points to the last timer cell */
 
  85          * variables for allocation actions
 
  87         long    total_payload ;         /* Total Payload */
 
  88         long    total_overhead ;        /* Total Overhead */
 
  89         long    sba_allocatable ;       /* allocatable sync bandwidth */
 
  92          * RAF message receive parameters
 
  94         long            msg_path_index ;        /* Path Type */
 
  95         long            msg_sba_pl_req ;        /* Payload Request */
 
  96         long            msg_sba_ov_req ;        /* Overhead Request */
 
  97         long            msg_mib_pl ;            /* Current Payload for this Path */
 
  98         long            msg_mib_ov ;            /* Current Overhead for this Path*/
 
  99         long            msg_category ;          /* Category of the Allocation */
 
 100         u_long          msg_max_t_neg ;         /* longest T_Neg acceptable */
 
 101         u_long          msg_min_seg_siz ;       /* minimum segement size */
 
 102         struct smt_header       *sm ;           /* points to the rec message */
 
 103         struct fddi_addr        *msg_alloc_addr ;       /* Allocation Address */
 
 108         u_long  sba_t_neg ;             /* holds the last T_NEG */
 
 109         long    sba_max_alloc ;         /* the parsed value of SBAAvailable */  
 
 112          * SBA state machine variables
 
 114         short   sba_next_state ;        /* the next state of the SBA */
 
 115         char    sba_command ;           /* holds the execuded SBA cmd */
 
 116         u_char  sba_available ;         /* parsed value after possible check */
 
 122          * variables for the End Station Support
 
 129         u_char  sync_bw_available ;     /* is set if sync bw is allocated */
 
 130         u_char  local_sba_active ;      /* set when a local sba is available */
 
 131         char    raf_act_timer_poll ;    /* activate the timer to send allc req */
 
 132         char    timer_count ;           /* counts every timer function call */
 
 134         SMbuf   *sba_reply_pend ;       /* local reply for the sba is pending */
 
 137          * variables for the ess bandwidth control
 
 139         long    sync_bw ;               /* holds the allocaed sync bw */
 
 140         u_long  alloc_trans_id ;        /* trans id of the last alloc req */