root/drivers/net/fddi/skfp/h/smt.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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  *      SMT 7.2 frame definitions
  13  */
  14 
  15 #ifndef _SMT_
  16 #define _SMT_
  17 
  18 /* #define SMT5_10 */
  19 #define SMT6_10
  20 #define SMT7_20
  21 
  22 #define OPT_PMF         /* if parameter management is supported */
  23 #define OPT_SRF         /* if status report is supported */
  24 
  25 /*
  26  * SMT frame version 5.1
  27  */
  28 
  29 #define SMT_VID 0x0001                  /* V 5.1 .. 6.1 */
  30 #define SMT_VID_2 0x0002                /* V 7.2 */
  31 
  32 struct smt_sid {
  33         u_char  sid_oem[2] ;                    /* implementation spec. */
  34         struct fddi_addr sid_node ;             /* node address */
  35 } ;
  36 
  37 typedef u_char  t_station_id[8] ;
  38 
  39 /*
  40  * note on alignment :
  41  * sizeof(struct smt_header) = 32
  42  * all parameters are long aligned
  43  * if struct smt_header starts at offset 0, all longs are aligned correctly
  44  * (FC starts at offset 3)
  45  */
  46 _packed struct smt_header {
  47         struct fddi_addr        smt_dest ;      /* destination address */
  48         struct fddi_addr        smt_source ;    /* source address */
  49         u_char                  smt_class ;     /* NIF, SIF ... */
  50         u_char                  smt_type ;      /* req., response .. */
  51         u_short                 smt_version ;   /* version id */
  52         u_int                   smt_tid ;       /* transaction ID */
  53         struct smt_sid          smt_sid ;       /* station ID */
  54         u_short                 smt_pad ;       /* pad with 0 */
  55         u_short                 smt_len ;       /* length of info field */
  56 } ;
  57 #define SWAP_SMTHEADER  "662sl8ss"
  58 
  59 #if     0
  60 /*
  61  * MAC FC values
  62  */
  63 #define FC_SMT_INFO     0x41            /* SMT info */
  64 #define FC_SMT_NSA      0x4f            /* SMT Next Station Addressing */
  65 #endif
  66 
  67 
  68 /*
  69  * type codes
  70  */
  71 #define SMT_ANNOUNCE    0x01            /* announcement */
  72 #define SMT_REQUEST     0x02            /* request */
  73 #define SMT_REPLY       0x03            /* reply */
  74 
  75 /*
  76  * class codes
  77  */
  78 #define SMT_NIF         0x01            /* neighbor information frames */
  79 #define SMT_SIF_CONFIG  0x02            /* station information configuration */
  80 #define SMT_SIF_OPER    0x03            /* station information operation */
  81 #define SMT_ECF         0x04            /* echo frames */
  82 #define SMT_RAF         0x05            /* resource allocation */
  83 #define SMT_RDF         0x06            /* request denied */
  84 #define SMT_SRF         0x07            /* status report */
  85 #define SMT_PMF_GET     0x08            /* parameter management get */
  86 #define SMT_PMF_SET     0x09            /* parameter management set */
  87 #define SMT_ESF         0xff            /* extended service */
  88 
  89 #define SMT_MAX_ECHO_LEN        4458    /* max length of SMT Echo */
  90 #if     defined(CONC) || defined(CONC_II)
  91 #define SMT_TEST_ECHO_LEN       50      /* test length of SMT Echo */
  92 #else
  93 #define SMT_TEST_ECHO_LEN       SMT_MAX_ECHO_LEN        /* test length */
  94 #endif
  95 
  96 #define SMT_MAX_INFO_LEN        (4352-20)       /* max length for SMT info */
  97 
  98 
  99 /*
 100  * parameter types
 101  */
 102 
 103 struct smt_para {
 104         u_short p_type ;                /* type */
 105         u_short p_len ;                 /* length of parameter */
 106 } ;
 107 
 108 #define PARA_LEN        (sizeof(struct smt_para))
 109 
 110 #define SMTSETPARA(p,t)         (p)->para.p_type = (t),\
 111                                 (p)->para.p_len = sizeof(*(p)) - PARA_LEN
 112 
 113 /*
 114  * P01 : Upstream Neighbor Address, UNA
 115  */
 116 #define SMT_P_UNA       0x0001          /* upstream neighbor address */
 117 #define SWAP_SMT_P_UNA  "s6"
 118 
 119 struct smt_p_una {
 120         struct smt_para para ;          /* generic parameter header */
 121         u_short una_pad ;
 122         struct fddi_addr una_node ;     /* node address, zero if unknown */
 123 } ;
 124 
 125 /*
 126  * P02 : Station Descriptor
 127  */
 128 #define SMT_P_SDE       0x0002          /* station descriptor */
 129 #define SWAP_SMT_P_SDE  "1111"
 130 
 131 #define SMT_SDE_STATION         0       /* end node */
 132 #define SMT_SDE_CONCENTRATOR    1       /* concentrator */
 133 
 134 struct smt_p_sde {
 135         struct smt_para para ;          /* generic parameter header */
 136         u_char  sde_type ;              /* station type */
 137         u_char  sde_mac_count ;         /* number of MACs */
 138         u_char  sde_non_master ;        /* number of A,B or S ports */
 139         u_char  sde_master ;            /* number of S ports on conc. */
 140 } ;
 141 
 142 /*
 143  * P03 : Station State
 144  */
 145 #define SMT_P_STATE     0x0003          /* station state */
 146 #define SWAP_SMT_P_STATE        "scc"
 147 
 148 struct smt_p_state {
 149         struct smt_para para ;          /* generic parameter header */
 150         u_short st_pad ;
 151         u_char  st_topology ;           /* topology */
 152         u_char  st_dupl_addr ;          /* duplicate address detected */
 153 } ;
 154 #define SMT_ST_WRAPPED          (1<<0)  /* station wrapped */
 155 #define SMT_ST_UNATTACHED       (1<<1)  /* unattached concentrator */
 156 #define SMT_ST_TWISTED_A        (1<<2)  /* A-A connection, twisted ring */
 157 #define SMT_ST_TWISTED_B        (1<<3)  /* B-B connection, twisted ring */
 158 #define SMT_ST_ROOTED_S         (1<<4)  /* rooted station */
 159 #define SMT_ST_SRF              (1<<5)  /* SRF protocol supported */
 160 #define SMT_ST_SYNC_SERVICE     (1<<6)  /* use synchronous bandwidth */
 161 
 162 #define SMT_ST_MY_DUPA          (1<<0)  /* my station detected dupl. */
 163 #define SMT_ST_UNA_DUPA         (1<<1)  /* my UNA detected duplicate */
 164 
 165 /*
 166  * P04 : timestamp
 167  */
 168 #define SMT_P_TIMESTAMP 0x0004          /* time stamp */
 169 #define SWAP_SMT_P_TIMESTAMP    "8"
 170 struct smt_p_timestamp {
 171         struct smt_para para ;          /* generic parameter header */
 172         u_char  ts_time[8] ;            /* time, resolution 80nS, unique */
 173 } ;
 174 
 175 /*
 176  * P05 : station policies
 177  */
 178 #define SMT_P_POLICY    0x0005          /* station policies */
 179 #define SWAP_SMT_P_POLICY       "ss"
 180 
 181 struct smt_p_policy {
 182         struct smt_para para ;          /* generic parameter header */
 183         u_short pl_config ;
 184         u_short pl_connect ;            /* bit string POLICY_AA ... */
 185 } ;
 186 #define SMT_PL_HOLD             1       /* hold policy supported (Dual MAC) */
 187 
 188 /*
 189  * P06 : latency equivalent
 190  */
 191 #define SMT_P_LATENCY   0x0006          /* latency */
 192 #define SWAP_SMT_P_LATENCY      "ssss"
 193 
 194 /*
 195  * note: latency has two phy entries by definition
 196  * for a SAS, the 2nd one is null
 197  */
 198 struct smt_p_latency {
 199         struct smt_para para ;          /* generic parameter header */
 200         u_short lt_phyout_idx1 ;        /* index */
 201         u_short lt_latency1 ;           /* latency , unit : byte clock */
 202         u_short lt_phyout_idx2 ;        /* 0 if SAS */
 203         u_short lt_latency2 ;           /* 0 if SAS */
 204 } ;
 205 
 206 /*
 207  * P07 : MAC neighbors
 208  */
 209 #define SMT_P_NEIGHBORS 0x0007          /* MAC neighbor description */
 210 #define SWAP_SMT_P_NEIGHBORS    "ss66"
 211 
 212 struct smt_p_neighbor {
 213         struct smt_para para ;          /* generic parameter header */
 214         u_short nb_mib_index ;          /* MIB index */
 215         u_short nb_mac_index ;          /* n+1 .. n+m, m = #MACs, n = #PHYs */
 216         struct fddi_addr nb_una ;       /* UNA , 0 for unknown */
 217         struct fddi_addr nb_dna ;       /* DNA , 0 for unknown */
 218 } ;
 219 
 220 /*
 221  * PHY record
 222  */
 223 #define SMT_PHY_A       0               /* A port */
 224 #define SMT_PHY_B       1               /* B port */
 225 #define SMT_PHY_S       2               /* slave port */
 226 #define SMT_PHY_M       3               /* master port */
 227 
 228 #define SMT_CS_DISABLED 0               /* connect state : disabled */
 229 #define SMT_CS_CONNECTING       1       /* connect state : connecting */
 230 #define SMT_CS_STANDBY  2               /* connect state : stand by */
 231 #define SMT_CS_ACTIVE   3               /* connect state : active */
 232 
 233 #define SMT_RM_NONE     0
 234 #define SMT_RM_MAC      1
 235 
 236 struct smt_phy_rec {
 237         u_short phy_mib_index ;         /* MIB index */
 238         u_char  phy_type ;              /* A/B/S/M */
 239         u_char  phy_connect_state ;     /* disabled/connecting/active */
 240         u_char  phy_remote_type ;       /* A/B/S/M */
 241         u_char  phy_remote_mac ;        /* none/remote */
 242         u_short phy_resource_idx ;      /* 1 .. n */
 243 } ;
 244 
 245 /*
 246  * MAC record
 247  */
 248 struct smt_mac_rec {
 249         struct fddi_addr mac_addr ;             /* MAC address */
 250         u_short         mac_resource_idx ;      /* n+1 .. n+m */
 251 } ;
 252 
 253 /*
 254  * P08 : path descriptors
 255  * should be really an array ; however our environment has a fixed number of
 256  * PHYs and MACs
 257  */
 258 #define SMT_P_PATH      0x0008                  /* path descriptor */
 259 #define SWAP_SMT_P_PATH "[6s]"
 260 
 261 struct smt_p_path {
 262         struct smt_para para ;          /* generic parameter header */
 263         struct smt_phy_rec      pd_phy[2] ;     /* PHY A */
 264         struct smt_mac_rec      pd_mac ;        /* MAC record */
 265 } ;
 266 
 267 /*
 268  * P09 : MAC status
 269  */
 270 #define SMT_P_MAC_STATUS        0x0009          /* MAC status */
 271 #define SWAP_SMT_P_MAC_STATUS   "sslllllllll"
 272 
 273 struct smt_p_mac_status {
 274         struct smt_para para ;          /* generic parameter header */
 275         u_short st_mib_index ;          /* MIB index */
 276         u_short st_mac_index ;          /* n+1 .. n+m */
 277         u_int   st_t_req ;              /* T_Req */
 278         u_int   st_t_neg ;              /* T_Neg */
 279         u_int   st_t_max ;              /* T_Max */
 280         u_int   st_tvx_value ;          /* TVX_Value */
 281         u_int   st_t_min ;              /* T_Min */
 282         u_int   st_sba ;                /* synchr. bandwidth alloc */
 283         u_int   st_frame_ct ;           /* frame counter */
 284         u_int   st_error_ct ;           /* error counter */
 285         u_int   st_lost_ct ;            /* lost frames counter */
 286 } ;
 287 
 288 /*
 289  * P0A : PHY link error rate monitoring
 290  */
 291 #define SMT_P_LEM       0x000a          /* link error monitor */
 292 #define SWAP_SMT_P_LEM  "ssccccll"
 293 /*
 294  * units of lem_cutoff,lem_alarm,lem_estimate : 10**-x
 295  */
 296 struct smt_p_lem {
 297         struct smt_para para ;          /* generic parameter header */
 298         u_short lem_mib_index ;         /* MIB index */
 299         u_short lem_phy_index ;         /* 1 .. n */
 300         u_char  lem_pad2 ;              /* be nice and make it even . */
 301         u_char  lem_cutoff ;            /* 0x4 .. 0xf, default 0x7 */
 302         u_char  lem_alarm ;             /* 0x4 .. 0xf, default 0x8 */
 303         u_char  lem_estimate ;          /* 0x0 .. 0xff */
 304         u_int   lem_reject_ct ;         /* 0x00000000 .. 0xffffffff */
 305         u_int   lem_ct ;                /* 0x00000000 .. 0xffffffff */
 306 } ;
 307 
 308 /*
 309  * P0B : MAC frame counters
 310  */
 311 #define SMT_P_MAC_COUNTER 0x000b        /* MAC frame counters */
 312 #define SWAP_SMT_P_MAC_COUNTER  "ssll"
 313 
 314 struct smt_p_mac_counter {
 315         struct smt_para para ;          /* generic parameter header */
 316         u_short mc_mib_index ;          /* MIB index */
 317         u_short mc_index ;              /* mac index */
 318         u_int   mc_receive_ct ;         /* receive counter */
 319         u_int   mc_transmit_ct ;        /* transmit counter */
 320 } ;
 321 
 322 /*
 323  * P0C : MAC frame not copied counter
 324  */
 325 #define SMT_P_MAC_FNC   0x000c          /* MAC frame not copied counter */
 326 #define SWAP_SMT_P_MAC_FNC      "ssl"
 327 
 328 struct smt_p_mac_fnc {
 329         struct smt_para para ;          /* generic parameter header */
 330         u_short nc_mib_index ;          /* MIB index */
 331         u_short nc_index ;              /* mac index */
 332         u_int   nc_counter ;            /* not copied counter */
 333 } ;
 334 
 335 
 336 /*
 337  * P0D : MAC priority values
 338  */
 339 #define SMT_P_PRIORITY  0x000d          /* MAC priority values */
 340 #define SWAP_SMT_P_PRIORITY     "ssl"
 341 
 342 struct smt_p_priority {
 343         struct smt_para para ;          /* generic parameter header */
 344         u_short pr_mib_index ;          /* MIB index */
 345         u_short pr_index ;              /* mac index */
 346         u_int   pr_priority[7] ;        /* priority values */
 347 } ;
 348 
 349 /*
 350  * P0E : PHY elasticity buffer status
 351  */
 352 #define SMT_P_EB        0x000e          /* PHY EB status */
 353 #define SWAP_SMT_P_EB   "ssl"
 354 
 355 struct smt_p_eb {
 356         struct smt_para para ;          /* generic parameter header */
 357         u_short eb_mib_index ;          /* MIB index */
 358         u_short eb_index ;              /* phy index */
 359         u_int   eb_error_ct ;           /* # of eb overflows */
 360 } ;
 361 
 362 /*
 363  * P0F : manufacturer field
 364  */
 365 #define SMT_P_MANUFACTURER      0x000f  /* manufacturer field */
 366 #define SWAP_SMT_P_MANUFACTURER ""
 367 
 368 struct smp_p_manufacturer {
 369         struct smt_para para ;          /* generic parameter header */
 370         u_char mf_data[32] ;            /* OUI + arbitrary data */
 371 } ;
 372 
 373 /*
 374  * P10 : user field
 375  */
 376 #define SMT_P_USER              0x0010  /* manufacturer field */
 377 #define SWAP_SMT_P_USER ""
 378 
 379 struct smp_p_user {
 380         struct smt_para para ;          /* generic parameter header */
 381         u_char us_data[32] ;            /* arbitrary data */
 382 } ;
 383 
 384 
 385 
 386 /*
 387  * P11 : echo data
 388  */
 389 #define SMT_P_ECHODATA  0x0011          /* echo data */
 390 #define SWAP_SMT_P_ECHODATA     ""
 391 
 392 struct smt_p_echo {
 393         struct smt_para para ;          /* generic parameter header */
 394         u_char  ec_data[SMT_MAX_ECHO_LEN-4] ;   /* echo data */
 395 } ;
 396 
 397 /*
 398  * P12 : reason code
 399  */
 400 #define SMT_P_REASON    0x0012          /* reason code */
 401 #define SWAP_SMT_P_REASON       "l"
 402 
 403 struct smt_p_reason {
 404         struct smt_para para ;          /* generic parameter header */
 405         u_int   rdf_reason ;            /* CLASS/VERSION */
 406 } ;
 407 #define SMT_RDF_CLASS   0x00000001      /* class not supported */
 408 #define SMT_RDF_VERSION 0x00000002      /* version not supported */
 409 #define SMT_RDF_SUCCESS 0x00000003      /* success (PMF) */
 410 #define SMT_RDF_BADSET  0x00000004      /* bad set count (PMF) */
 411 #define SMT_RDF_ILLEGAL 0x00000005      /* read only (PMF) */
 412 #define SMT_RDF_NOPARAM 0x6             /* parameter not supported (PMF) */
 413 #define SMT_RDF_RANGE   0x8             /* out of range */
 414 #define SMT_RDF_AUTHOR  0x9             /* not autohorized */
 415 #define SMT_RDF_LENGTH  0x0a            /* length error */
 416 #define SMT_RDF_TOOLONG 0x0b            /* length error */
 417 #define SMT_RDF_SBA     0x0d            /* SBA denied */
 418 
 419 /*
 420  * P13 : refused frame beginning
 421  */
 422 #define SMT_P_REFUSED   0x0013          /* refused frame beginning */
 423 #define SWAP_SMT_P_REFUSED      "l"
 424 
 425 struct smt_p_refused {
 426         struct smt_para para ;          /* generic parameter header */
 427         u_int   ref_fc ;                /* 3 bytes 0 + FC */
 428         struct smt_header       ref_header ;    /* refused header */
 429 } ;
 430 
 431 /*
 432  * P14 : supported SMT versions
 433  */
 434 #define SMT_P_VERSION   0x0014          /* SMT supported versions */
 435 #define SWAP_SMT_P_VERSION      "sccss"
 436 
 437 struct smt_p_version {
 438         struct smt_para para ;          /* generic parameter header */
 439         u_short v_pad ;
 440         u_char  v_n ;                   /* 1 .. 0xff, #versions */
 441         u_char  v_index ;               /* 1 .. 0xff, index of op. v. */
 442         u_short v_version[1] ;          /* list of min. 1 version */
 443         u_short v_pad2 ;                /* pad if necessary */
 444 } ;
 445 
 446 /*
 447  * P15 : Resource Type
 448  */
 449 #define SWAP_SMT_P0015          "l"
 450 
 451 struct smt_p_0015 {
 452         struct smt_para para ;          /* generic parameter header */
 453         u_int           res_type ;      /* recsource type */
 454 } ;
 455 
 456 #define SYNC_BW         0x00000001L     /* Synchronous Bandwidth */
 457 
 458 /*
 459  * P16 : SBA Command
 460  */
 461 #define SWAP_SMT_P0016          "l"
 462 
 463 struct smt_p_0016 {
 464         struct smt_para para ;          /* generic parameter header */
 465         u_int           sba_cmd ;       /* command for the SBA */
 466 } ;
 467 
 468 #define REQUEST_ALLOCATION      0x1     /* req allocation of sync bandwidth */
 469 #define REPORT_ALLOCATION       0x2     /* rep of sync bandwidth allocation */
 470 #define CHANGE_ALLOCATION       0x3     /* forces a station using sync band-*/
 471                                         /* width to change its current allo-*/
 472                                         /* cation */
 473 
 474 /*
 475  * P17 : SBA Payload Request
 476  */
 477 #define SWAP_SMT_P0017          "l"
 478 
 479 struct smt_p_0017 {
 480         struct smt_para para ;          /* generic parameter header */
 481         int             sba_pl_req ;    /* total sync bandwidth measured in */
 482 } ;                                     /* bytes per 125 us */
 483 
 484 /*
 485  * P18 : SBA Overhead Request
 486  */
 487 #define SWAP_SMT_P0018          "l"
 488 
 489 struct smt_p_0018 {
 490         struct smt_para para ;          /* generic parameter header */
 491         int             sba_ov_req ;    /* total sync bandwidth req for overhead*/
 492 } ;                                     /* measuered in bytes per T_Neg */
 493 
 494 /*
 495  * P19 : SBA Allocation Address
 496  */
 497 #define SWAP_SMT_P0019          "s6"
 498 
 499 struct smt_p_0019 {
 500         struct smt_para para ;          /* generic parameter header */
 501         u_short         sba_pad ;
 502         struct fddi_addr alloc_addr ;   /* Allocation Address */
 503 } ;
 504 
 505 /*
 506  * P1A : SBA Category
 507  */
 508 #define SWAP_SMT_P001A          "l"
 509 
 510 struct smt_p_001a {
 511         struct smt_para para ;          /* generic parameter header */
 512         u_int           category ;      /* Allocator defined classification */
 513 } ;
 514 
 515 /*
 516  * P1B : Maximum T_Neg
 517  */
 518 #define SWAP_SMT_P001B          "l"
 519 
 520 struct smt_p_001b {
 521         struct smt_para para ;          /* generic parameter header */
 522         u_int           max_t_neg ;     /* longest T_NEG for the sync service*/
 523 } ;
 524 
 525 /*
 526  * P1C : Minimum SBA Segment Size
 527  */
 528 #define SWAP_SMT_P001C          "l"
 529 
 530 struct smt_p_001c {
 531         struct smt_para para ;          /* generic parameter header */
 532         u_int           min_seg_siz ;   /* smallest number of bytes per frame*/
 533 } ;
 534 
 535 /*
 536  * P1D : SBA Allocatable
 537  */
 538 #define SWAP_SMT_P001D          "l"
 539 
 540 struct smt_p_001d {
 541         struct smt_para para ;          /* generic parameter header */
 542         u_int           allocatable ;   /* total sync bw available for alloc */
 543 } ;
 544 
 545 /*
 546  * P20 0B : frame status capabilities
 547  * NOTE: not in swap table, is used by smt.c AND PMF table
 548  */
 549 #define SMT_P_FSC       0x200b
 550 /* #define SWAP_SMT_P_FSC       "ssss" */
 551 
 552 struct smt_p_fsc {
 553         struct smt_para para ;          /* generic parameter header */
 554         u_short fsc_pad0 ;
 555         u_short fsc_mac_index ;         /* mac index 1 .. ff */
 556         u_short fsc_pad1 ;
 557         u_short fsc_value ;             /* FSC_TYPE[0-2] */
 558 } ;
 559 
 560 #define FSC_TYPE0       0               /* "normal" node (A/C handling) */
 561 #define FSC_TYPE1       1               /* Special A/C indicator forwarding */
 562 #define FSC_TYPE2       2               /* Special A/C indicator forwarding */
 563 
 564 /*
 565  * P00 21 : user defined authoriziation (see pmf.c)
 566  */
 567 #define SMT_P_AUTHOR    0x0021
 568 
 569 /*
 570  * notification parameters
 571  */
 572 #define SWAP_SMT_P1048  "ll"
 573 struct smt_p_1048 {
 574         u_int p1048_flag ;
 575         u_int p1048_cf_state ;
 576 } ;
 577 
 578 /*
 579  * NOTE: all 2xxx 3xxx and 4xxx must include the INDEX in the swap string,
 580  *      even so the INDEX is NOT part of the struct.
 581  *      INDEX is already swapped in pmf.c, format in string is '4'
 582  */
 583 #define SWAP_SMT_P208C  "4lss66"
 584 struct smt_p_208c {
 585         u_int                   p208c_flag ;
 586         u_short                 p208c_pad ;
 587         u_short                 p208c_dupcondition ;
 588         struct  fddi_addr       p208c_fddilong ;
 589         struct  fddi_addr       p208c_fddiunalong ;
 590 } ;
 591 
 592 #define SWAP_SMT_P208D  "4lllll"
 593 struct smt_p_208d {
 594         u_int                   p208d_flag ;
 595         u_int                   p208d_frame_ct ;
 596         u_int                   p208d_error_ct ;
 597         u_int                   p208d_lost_ct ;
 598         u_int                   p208d_ratio ;
 599 } ;
 600 
 601 #define SWAP_SMT_P208E  "4llll"
 602 struct smt_p_208e {
 603         u_int                   p208e_flag ;
 604         u_int                   p208e_not_copied ;
 605         u_int                   p208e_copied ;
 606         u_int                   p208e_not_copied_ratio ;
 607 } ;
 608 
 609 #define SWAP_SMT_P208F  "4ll6666s6"
 610 
 611 struct smt_p_208f {
 612         u_int                   p208f_multiple ;
 613         u_int                   p208f_nacondition ;
 614         struct fddi_addr        p208f_old_una ;
 615         struct fddi_addr        p208f_new_una ;
 616         struct fddi_addr        p208f_old_dna ;
 617         struct fddi_addr        p208f_new_dna ;
 618         u_short                 p208f_curren_path ;
 619         struct fddi_addr        p208f_smt_address ;
 620 } ;
 621 
 622 #define SWAP_SMT_P2090  "4lssl"
 623 
 624 struct smt_p_2090 {
 625         u_int                   p2090_multiple ;
 626         u_short                 p2090_availablepaths ;
 627         u_short                 p2090_currentpath ;
 628         u_int                   p2090_requestedpaths ;
 629 } ;
 630 
 631 /*
 632  * NOTE:
 633  * special kludge for parameters 320b,320f,3210
 634  * these parameters are part of RAF frames
 635  * RAF frames are parsed in SBA.C and must be swapped
 636  * PMF.C has special code to avoid double swapping
 637  */
 638 #ifdef  LITTLE_ENDIAN
 639 #define SBAPATHINDEX    (0x01000000L)
 640 #else
 641 #define SBAPATHINDEX    (0x01L)
 642 #endif
 643 
 644 #define SWAP_SMT_P320B  "42s"
 645 
 646 struct  smt_p_320b {
 647         struct smt_para para ;  /* generic parameter header */
 648         u_int   mib_index ;
 649         u_short path_pad ;
 650         u_short path_index ;
 651 } ;
 652 
 653 #define SWAP_SMT_P320F  "4l"
 654 
 655 struct  smt_p_320f {
 656         struct smt_para para ;  /* generic parameter header */
 657         u_int   mib_index ;
 658         u_int   mib_payload ;
 659 } ;
 660 
 661 #define SWAP_SMT_P3210  "4l"
 662 
 663 struct  smt_p_3210 {
 664         struct smt_para para ;  /* generic parameter header */
 665         u_int   mib_index ;
 666         u_int   mib_overhead ;
 667 } ;
 668 
 669 #define SWAP_SMT_P4050  "4l1111ll"
 670 
 671 struct smt_p_4050 {
 672         u_int                   p4050_flag ;
 673         u_char                  p4050_pad ;
 674         u_char                  p4050_cutoff ;
 675         u_char                  p4050_alarm ;
 676         u_char                  p4050_estimate ;
 677         u_int                   p4050_reject_ct ;
 678         u_int                   p4050_ct ;
 679 } ;
 680 
 681 #define SWAP_SMT_P4051  "4lssss"
 682 struct smt_p_4051 {
 683         u_int                   p4051_multiple ;
 684         u_short                 p4051_porttype ;
 685         u_short                 p4051_connectstate ;
 686         u_short                 p4051_pc_neighbor ;
 687         u_short                 p4051_pc_withhold ;
 688 } ;
 689 
 690 #define SWAP_SMT_P4052  "4ll"
 691 struct smt_p_4052 {
 692         u_int                   p4052_flag ;
 693         u_int                   p4052_eberrorcount ;
 694 } ;
 695 
 696 #define SWAP_SMT_P4053  "4lsslss"
 697 
 698 struct smt_p_4053 {
 699         u_int                   p4053_multiple ;
 700         u_short                 p4053_availablepaths ;
 701         u_short                 p4053_currentpath ;
 702         u_int                   p4053_requestedpaths ;
 703         u_short                 p4053_mytype ;
 704         u_short                 p4053_neighbortype ;
 705 } ;
 706 
 707 
 708 #define SMT_P_SETCOUNT  0x1035
 709 #define SWAP_SMT_P_SETCOUNT     "l8"
 710 
 711 struct smt_p_setcount {
 712         struct smt_para para ;          /* generic parameter header */
 713         u_int           count ;
 714         u_char          timestamp[8] ;
 715 } ;
 716 
 717 /*
 718  * SMT FRAMES
 719  */
 720 
 721 /*
 722  * NIF : neighbor information frames
 723  */
 724 struct smt_nif {
 725         struct smt_header       smt ;           /* generic header */
 726         struct smt_p_una        una ;           /* UNA */
 727         struct smt_p_sde        sde ;           /* station descriptor */
 728         struct smt_p_state      state ;         /* station state */
 729 #ifdef  SMT6_10
 730         struct smt_p_fsc        fsc ;           /* frame status cap. */
 731 #endif
 732 } ;
 733 
 734 /*
 735  * SIF : station information frames
 736  */
 737 struct smt_sif_config {
 738         struct smt_header       smt ;           /* generic header */
 739         struct smt_p_timestamp  ts ;            /* time stamp */
 740         struct smt_p_sde        sde ;           /* station descriptor */
 741         struct smt_p_version    version ;       /* supported versions */
 742         struct smt_p_state      state ;         /* station state */
 743         struct smt_p_policy     policy ;        /* station policy */
 744         struct smt_p_latency    latency ;       /* path latency */
 745         struct smt_p_neighbor   neighbor ;      /* neighbors, we have only one*/
 746 #ifdef  OPT_PMF
 747         struct smt_p_setcount   setcount ;       /* Set Count mandatory */
 748 #endif
 749         /* WARNING : path MUST BE LAST FIELD !!! (see smt.c:smt_fill_path) */
 750         struct smt_p_path       path ;          /* path descriptor */
 751 } ;
 752 #define SIZEOF_SMT_SIF_CONFIG   (sizeof(struct smt_sif_config)- \
 753                                  sizeof(struct smt_p_path))
 754 
 755 struct smt_sif_operation {
 756         struct smt_header       smt ;           /* generic header */
 757         struct smt_p_timestamp  ts ;            /* time stamp */
 758         struct smt_p_mac_status status ;        /* mac status */
 759         struct smt_p_mac_counter mc ;           /* MAC counter */
 760         struct smt_p_mac_fnc    fnc ;           /* MAC frame not copied */
 761         struct smp_p_manufacturer man ;         /* manufacturer field */
 762         struct smp_p_user       user ;          /* user field */
 763 #ifdef  OPT_PMF
 764         struct smt_p_setcount   setcount ;       /* Set Count mandatory */
 765 #endif
 766         /* must be last */
 767         struct smt_p_lem        lem[1] ;        /* phy lem status */
 768 } ;
 769 #define SIZEOF_SMT_SIF_OPERATION        (sizeof(struct smt_sif_operation)- \
 770                                          sizeof(struct smt_p_lem))
 771 
 772 /*
 773  * ECF : echo frame
 774  */
 775 struct smt_ecf {
 776         struct smt_header       smt ;           /* generic header */
 777         struct smt_p_echo       ec_echo ;       /* echo parameter */
 778 } ;
 779 #define SMT_ECF_LEN     (sizeof(struct smt_header)+sizeof(struct smt_para))
 780 
 781 /*
 782  * RDF : request denied frame
 783  */
 784 struct smt_rdf {
 785         struct smt_header       smt ;           /* generic header */
 786         struct smt_p_reason     reason ;        /* reason code */
 787         struct smt_p_version    version ;       /* supported versions */
 788         struct smt_p_refused    refused ;       /* refused frame fragment */
 789 } ;
 790 
 791 /*
 792  * SBA Request Allocation Response Frame
 793  */
 794 struct smt_sba_alc_res {
 795         struct smt_header       smt ;           /* generic header */
 796         struct smt_p_0015       s_type ;        /* resource type */
 797         struct smt_p_0016       cmd ;           /* SBA command */
 798         struct smt_p_reason     reason ;        /* reason code */
 799         struct smt_p_320b       path ;          /* path type */
 800         struct smt_p_320f       payload ;       /* current SBA payload */
 801         struct smt_p_3210       overhead ;      /* current SBA overhead */
 802         struct smt_p_0019       a_addr ;        /* Allocation Address */
 803         struct smt_p_001a       cat ;           /* Category - from the request */
 804         struct smt_p_001d       alloc ;         /* SBA Allocatable */
 805 } ;
 806 
 807 /*
 808  * SBA Request Allocation Request Frame
 809  */
 810 struct smt_sba_alc_req {
 811         struct smt_header       smt ;           /* generic header */
 812         struct smt_p_0015       s_type ;        /* resource type */
 813         struct smt_p_0016       cmd ;           /* SBA command */
 814         struct smt_p_320b       path ;          /* path type */
 815         struct smt_p_0017       pl_req ;        /* requested payload */
 816         struct smt_p_0018       ov_req ;        /* requested SBA overhead */
 817         struct smt_p_320f       payload ;       /* current SBA payload */
 818         struct smt_p_3210       overhead ;      /* current SBA overhead */
 819         struct smt_p_0019       a_addr ;        /* Allocation Address */
 820         struct smt_p_001a       cat ;           /* Category - from the request */
 821         struct smt_p_001b       tneg ;          /* max T-NEG */
 822         struct smt_p_001c       segm ;          /* minimum segment size */
 823 } ;
 824 
 825 /*
 826  * SBA Change Allocation Request Frame
 827  */
 828 struct smt_sba_chg {
 829         struct smt_header       smt ;           /* generic header */
 830         struct smt_p_0015       s_type ;        /* resource type */
 831         struct smt_p_0016       cmd ;           /* SBA command */
 832         struct smt_p_320b       path ;          /* path type */
 833         struct smt_p_320f       payload ;       /* current SBA payload */
 834         struct smt_p_3210       overhead ;      /* current SBA overhead */
 835         struct smt_p_001a       cat ;           /* Category - from the request */
 836 } ;
 837 
 838 /*
 839  * SBA Report Allocation Request Frame
 840  */
 841 struct smt_sba_rep_req {
 842         struct smt_header       smt ;           /* generic header */
 843         struct smt_p_0015       s_type ;        /* resource type */
 844         struct smt_p_0016       cmd ;           /* SBA command */
 845 } ;
 846 
 847 /*
 848  * SBA Report Allocation Response Frame
 849  */
 850 struct smt_sba_rep_res {
 851         struct smt_header       smt ;           /* generic header */
 852         struct smt_p_0015       s_type ;        /* resource type */
 853         struct smt_p_0016       cmd ;           /* SBA command */
 854         struct smt_p_320b       path ;          /* path type */
 855         struct smt_p_320f       payload ;       /* current SBA payload */
 856         struct smt_p_3210       overhead ;      /* current SBA overhead */
 857 } ;
 858 
 859 /*
 860  * actions
 861  */
 862 #define SMT_STATION_ACTION      1
 863 #define SMT_STATION_ACTION_CONNECT      0
 864 #define SMT_STATION_ACTION_DISCONNECT   1
 865 #define SMT_STATION_ACTION_PATHTEST     2
 866 #define SMT_STATION_ACTION_SELFTEST     3
 867 #define SMT_STATION_ACTION_DISABLE_A    4
 868 #define SMT_STATION_ACTION_DISABLE_B    5
 869 #define SMT_STATION_ACTION_DISABLE_M    6
 870 
 871 #define SMT_PORT_ACTION         2
 872 #define SMT_PORT_ACTION_MAINT   0
 873 #define SMT_PORT_ACTION_ENABLE  1
 874 #define SMT_PORT_ACTION_DISABLE 2
 875 #define SMT_PORT_ACTION_START   3
 876 #define SMT_PORT_ACTION_STOP    4
 877 
 878 #endif  /* _SMT_ */

/* [<][>][^][v][top][bottom][index][help] */