linux/drivers/net/fddi/skfp/h/sba.h
<<
>>
Prefs
   1/******************************************************************************
   2 *
   3 *      (C)Copyright 1998,1999 SysKonnect,
   4 *      a business unit of Schneider & Koch & Co. Datensysteme GmbH.
   5 *
   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.
  10 *
  11 *      The information in this file is provided "AS IS" without warranty.
  12 *
  13 ******************************************************************************/
  14
  15/*
  16 * Synchronous Bandwidth Allocation (SBA) structs
  17 */
  18 
  19#ifndef _SBA_
  20#define _SBA_
  21
  22#include "mbuf.h"
  23#include "sba_def.h"
  24
  25#ifdef  SBA
  26
  27/* Timer Cell Template */
  28struct timer_cell {
  29        struct timer_cell       *next_ptr ;
  30        struct timer_cell       *prev_ptr ;
  31        u_long                  start_time ;
  32        struct s_sba_node_vars  *node_var ;
  33} ;
  34
  35/*
  36 * Node variables
  37 */
  38struct 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 ;
  43        long                    change_amount ;
  44        long                    node_overhead ;
  45        long                    node_payload ;
  46        u_long                  node_status ;
  47        u_char                  deallocate_status ;
  48        u_char                  timer_state ;
  49        u_short                 report_cnt ;
  50        long                    lastrep_req_tranid ;
  51        struct fddi_addr        mac_address ;
  52        struct s_sba_sessions   *node_sessions ;
  53        struct timer_cell       timer ;
  54} ;
  55
  56/*
  57 * Session variables
  58 */
  59struct 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 ;
  65        u_long                  sba_category ;
  66        long                    lastchg_req_tranid ;
  67        u_short                 session_id ;
  68        u_char                  class ;
  69        u_char                  fddi2 ;
  70        u_long                  max_t_neg ;
  71        struct s_sba_sessions   *next_session ;
  72} ;
  73
  74struct s_sba {
  75
  76        struct s_sba_node_vars  node[MAX_NODES] ;
  77        struct s_sba_sessions   session[MAX_SESSIONS] ;
  78
  79        struct s_sba_sessions   *free_session ; /* points to the first */
  80                                                /* free session */
  81
  82        struct timer_cell       *tail_timer ;   /* points to the last timer cell */
  83
  84        /*
  85         * variables for allocation actions
  86         */
  87        long    total_payload ;         /* Total Payload */
  88        long    total_overhead ;        /* Total Overhead */
  89        long    sba_allocatable ;       /* allocatable sync bandwidth */
  90
  91        /*
  92         * RAF message receive parameters
  93         */
  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 */
 104
 105        /*
 106         * SBA variables
 107         */
 108        u_long  sba_t_neg ;             /* holds the last T_NEG */
 109        long    sba_max_alloc ;         /* the parsed value of SBAAvailable */  
 110
 111        /*
 112         * SBA state machine variables
 113         */
 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 */
 117} ;
 118
 119#endif  /* SBA */
 120
 121        /*
 122         * variables for the End Station Support
 123         */
 124struct s_ess {
 125
 126        /*
 127         * flags and counters
 128         */
 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 */
 133
 134        SMbuf   *sba_reply_pend ;       /* local reply for the sba is pending */
 135        
 136        /*
 137         * variables for the ess bandwidth control
 138         */
 139        long    sync_bw ;               /* holds the allocaed sync bw */
 140        u_long  alloc_trans_id ;        /* trans id of the last alloc req */
 141} ;
 142#endif
 143