/* SPDX-License-Identifier: GPL-2.0-or-later */ /****************************************************************************** * * (C)Copyright 1998,1999 SysKonnect, * a business unit of Schneider & Koch & Co. Datensysteme GmbH. * * The information in this file is provided "AS IS" without warranty. *
******************************************************************************/
struct smt_p_sde { struct smt_para para ; /* generic parameter header */
u_char sde_type ; /* station type */
u_char sde_mac_count ; /* number of MACs */
u_char sde_non_master ; /* number of A,B or S ports */
u_char sde_master ; /* number of S ports on conc. */
} ;
/* * P03 : Station State
*/ #define SMT_P_STATE 0x0003 /* station state */ #define SWAP_SMT_P_STATE "scc"
/* * note: latency has two phy entries by definition * for a SAS, the 2nd one is null
*/ struct smt_p_latency { struct smt_para para ; /* generic parameter header */
u_short lt_phyout_idx1 ; /* index */
u_short lt_latency1 ; /* latency , unit : byte clock */
u_short lt_phyout_idx2 ; /* 0 if SAS */
u_short lt_latency2 ; /* 0 if SAS */
} ;
/* * P07 : MAC neighbors
*/ #define SMT_P_NEIGHBORS 0x0007 /* MAC neighbor description */ #define SWAP_SMT_P_NEIGHBORS "ss66"
struct smt_p_neighbor { struct smt_para para ; /* generic parameter header */
u_short nb_mib_index ; /* MIB index */
u_short nb_mac_index ; /* n+1 .. n+m, m = #MACs, n = #PHYs */ struct fddi_addr nb_una ; /* UNA , 0 for unknown */ struct fddi_addr nb_dna ; /* DNA , 0 for unknown */
} ;
/* * PHY record
*/ #define SMT_PHY_A 0 /* A port */ #define SMT_PHY_B 1 /* B port */ #define SMT_PHY_S 2 /* slave port */ #define SMT_PHY_M 3 /* master port */
#define SMT_CS_DISABLED 0 /* connect state : disabled */ #define SMT_CS_CONNECTING 1 /* connect state : connecting */ #define SMT_CS_STANDBY 2 /* connect state : stand by */ #define SMT_CS_ACTIVE 3 /* connect state : active */
/* * MAC record
*/ struct smt_mac_rec { struct fddi_addr mac_addr ; /* MAC address */
u_short mac_resource_idx ; /* n+1 .. n+m */
} ;
/* * P08 : path descriptors * should be really an array ; however our environment has a fixed number of * PHYs and MACs
*/ #define SMT_P_PATH 0x0008 /* path descriptor */ #define SWAP_SMT_P_PATH "[6s]"
struct smt_p_path { struct smt_para para ; /* generic parameter header */ struct smt_phy_rec pd_phy[2] ; /* PHY A */ struct smt_mac_rec pd_mac ; /* MAC record */
} ;
/* * P09 : MAC status
*/ #define SMT_P_MAC_STATUS 0x0009 /* MAC status */ #define SWAP_SMT_P_MAC_STATUS "sslllllllll"
struct smt_p_0016 { struct smt_para para ; /* generic parameter header */
u_int sba_cmd ; /* command for the SBA */
} ;
#define REQUEST_ALLOCATION 0x1 /* req allocation of sync bandwidth */ #define REPORT_ALLOCATION 0x2 /* rep of sync bandwidth allocation */ #define CHANGE_ALLOCATION 0x3 /* forces a station using sync band-*/ /* width to change its current allo-*/ /* cation */
struct smt_p_0017 { struct smt_para para ; /* generic parameter header */ int sba_pl_req ; /* total sync bandwidth measured in */
} ; /* bytes per 125 us */
struct smt_p_001d { struct smt_para para ; /* generic parameter header */
u_int allocatable ; /* total sync bw available for alloc */
} ;
/* * P20 0B : frame status capabilities * NOTE: not in swap table, is used by smt.c AND PMF table
*/ #define SMT_P_FSC 0x200b /* #define SWAP_SMT_P_FSC "ssss" */
/* * NOTE: all 2xxx 3xxx and 4xxx must include the INDEX in the swap string, * even so the INDEX is NOT part of the struct. * INDEX is already swapped in pmf.c, format in string is '4'
*/ #define SWAP_SMT_P208C "4lss66" struct smt_p_208c {
u_int p208c_flag ;
u_short p208c_pad ;
u_short p208c_dupcondition ; struct fddi_addr p208c_fddilong ; struct fddi_addr p208c_fddiunalong ;
} ;
/* * NOTE: * special kludge for parameters 320b,320f,3210 * these parameters are part of RAF frames * RAF frames are parsed in SBA.C and must be swapped * PMF.C has special code to avoid double swapping
*/ #ifdef LITTLE_ENDIAN #define SBAPATHINDEX (0x01000000L) #else #define SBAPATHINDEX (0x01L) #endif
/* * NIF : neighbor information frames
*/ struct smt_nif { struct smt_header smt ; /* generic header */ struct smt_p_una una ; /* UNA */ struct smt_p_sde sde ; /* station descriptor */ struct smt_p_state state ; /* station state */ #ifdef SMT6_10 struct smt_p_fsc fsc ; /* frame status cap. */ #endif
} ;
/* * SIF : station information frames
*/ struct smt_sif_config { struct smt_header smt ; /* generic header */ struct smt_p_timestamp ts ; /* time stamp */ struct smt_p_sde sde ; /* station descriptor */ struct smt_p_version version ; /* supported versions */ struct smt_p_state state ; /* station state */ struct smt_p_policy policy ; /* station policy */ struct smt_p_latency latency ; /* path latency */ struct smt_p_neighbor neighbor ; /* neighbors, we have only one*/ #ifdef OPT_PMF struct smt_p_setcount setcount ; /* Set Count mandatory */ #endif /* WARNING : path MUST BE LAST FIELD !!! (see smt.c:smt_fill_path) */ struct smt_p_path path ; /* path descriptor */
} ; #define SIZEOF_SMT_SIF_CONFIG (sizeof(struct smt_sif_config)- \ sizeof(struct smt_p_path))
struct smt_sif_operation { struct smt_header smt ; /* generic header */ struct smt_p_timestamp ts ; /* time stamp */ struct smt_p_mac_status status ; /* mac status */ struct smt_p_mac_counter mc ; /* MAC counter */ struct smt_p_mac_fnc fnc ; /* MAC frame not copied */ struct smp_p_manufacturer man ; /* manufacturer field */ struct smp_p_user user ; /* user field */ #ifdef OPT_PMF struct smt_p_setcount setcount ; /* Set Count mandatory */ #endif /* must be last */ struct smt_p_lem lem[]; /* phy lem status */
} ;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.