/* 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. *
******************************************************************************/
#ifndef _SCMECM_ #define _SCMECM_
#ifdefined(PCI) && !defined(OSDEF) /* * In the case of the PCI bus the file osdef1st.h must be present
*/ #define OSDEF #endif
/* * include all other files in required order * the following files must have been included before: * types.h * fddi.h
*/ #ifdef OSDEF #include"osdef1st.h" #endif/* OSDEF */ #ifdef OEM_CONCEPT #include"oemdef.h" #endif/* OEM_CONCEPT */ #include"smt.h" #include"cmtdef.h" #include"fddimib.h" #include"targethw.h"/* all target hw dependencies */ #include"targetos.h"/* all target os dependencies */ #ifdef ESS #include"sba.h" #endif
/* * Event Queue * queue.c * events are class/value pairs * class is addressee, e.g. RMT, PCM etc. * value is command, e.g. line state change, ring op change etc.
*/ struct event_queue {
u_short class ; /* event class */
u_short event ; /* event value */
} ;
/* * ECM - Entity Coordination Management * ecm.c
*/ struct s_ecm {
u_char path_test ; /* ECM path test variable */
u_char sb_flag ; /* ECM stuck bypass */
u_char DisconnectFlag ; /* jd 05-Aug-1999 Bug #10419
* ECM disconnected */
u_char ecm_line_state ; /* flag to dispatcher : line states */
u_long trace_prop ; /* ECM Trace_Prop flag >= 16 bits !! */ /* NUMPHYS note: * this variable must have enough bits to hold all entiies in * the station. So NUMPHYS may not be greater than 31.
*/ char ec_pad[2] ; struct smt_timer ecm_timer ; /* timer */
} ;
/* * RMT - Ring Management * rmt.c
*/ struct s_rmt {
u_char dup_addr_test ; /* state of dupl. addr. test */
u_char da_flag ; /* flag : duplicate address det. */
u_char loop_avail ; /* flag : MAC available for loopback */
u_char sm_ma_avail ; /* flag : MAC available for SMT */
u_char no_flag ; /* flag : ring not operational */
u_char bn_flag ; /* flag : MAC reached beacon state */
u_char jm_flag ; /* flag : jamming in NON_OP_DUP */
u_char rm_join ; /* CFM flag RM_Join */
u_char rm_loop ; /* CFM flag RM_Loop */
long fast_rm_join ; /* bit mask of active ports */ /* * timer and flags
*/ struct smt_timer rmt_timer0 ; /* timer 0 */ struct smt_timer rmt_timer1 ; /* timer 1 */ struct smt_timer rmt_timer2 ; /* timer 2 */
u_char timer0_exp ; /* flag : timer 0 expired */
u_char timer1_exp ; /* flag : timer 1 expired */
u_char timer2_exp ; /* flag : timer 2 expired */
u_char rm_pad1;
} ;
/* * CFM - Configuration Management * cfm.c * used for SAS and DAS
*/ struct s_cfm {
u_char cf_state; /* CFM state machine current state */
u_char cf_pad[3] ;
} ;
/* * CEM - Configuration Element Management * cem.c * used for Concentrator
*/ #ifdef CONCENTRATOR struct s_cem { int ce_state ; /* CEM state */ int ce_port ; /* PA PB PM PM+1 .. */ int ce_type ; /* TA TB TS TM */
} ;
/* * linked list of CCEs in current token path
*/ struct s_c_ring { struct s_c_ring *c_next ; char c_entity ;
} ;
struct mib_path_config {
u_long fddimibPATHConfigSMTIndex;
u_long fddimibPATHConfigPATHIndex;
u_long fddimibPATHConfigTokenOrder;
u_long fddimibPATHConfigResourceType; #define SNMP_RES_TYPE_MAC 2 /* Resource is a MAC */ #define SNMP_RES_TYPE_PORT 4 /* Resource is a PORT */
u_long fddimibPATHConfigResourceIndex;
u_long fddimibPATHConfigCurrentPath; #define SNMP_PATH_ISOLATED 1 /* Current path is isolated */ #define SNMP_PATH_LOCAL 2 /* Current path is local */ #define SNMP_PATH_SECONDARY 3 /* Current path is secondary */ #define SNMP_PATH_PRIMARY 4 /* Current path is primary */ #define SNMP_PATH_CONCATENATED 5 /* Current path is concatenated */ #define SNMP_PATH_THRU 6 /* Current path is thru */
};
/* Define the AIX-event-Notification as null function if it isn't defined */ /* in the targetos.h file */ #ifndef AIX_EVENT #define AIX_EVENT(smc,opt0,opt1,opt2,opt3) /* nothing */ #endif
struct s_srf_evc {
u_char evc_code ; /* event code type */
u_char evc_index ; /* index for mult. instances */
u_char evc_rep_required ; /* report required */
u_short evc_para ; /* SMT Para Number */
u_char *evc_cond_state ; /* condition state */
u_char *evc_multiple ; /* multiple occurrence */
} ;
/* * Values used by frame based services * smt.c
*/ #define SMT_MAX_TEST 5 #define SMT_TID_NIF 0 /* pending NIF request */ #define SMT_TID_NIF_TEST 1 /* pending NIF test */ #define SMT_TID_ECF_UNA 2 /* pending ECF UNA test */ #define SMT_TID_ECF_DNA 3 /* pending ECF DNA test */ #define SMT_TID_ECF 4 /* pending ECF test */
u_long rmt_t_non_op ; /* RMT : T_Non_OP timer value */
u_long rmt_t_stuck ; /* RMT : T_Stuck timer value */
u_long rmt_t_direct ; /* RMT : T_Direct timer value */
u_long rmt_t_jam ; /* RMT : T_Jam timer value */
u_long rmt_t_announce ; /* RMT : T_Announce timer value */
u_long rmt_t_poll ; /* RMT : claim/beacon poller */
u_long rmt_dup_mac_behavior ; /* Flag for the beavior of SMT if * a Duplicate MAC Address was detected. * FALSE: SMT will leave finally the ring * TRUE: SMT will reinstert into the ring
*/
u_long mac_d_max ; /* MAC : D_Max timer value */
#ifdef DEBUG /* * Debugging struct sometimes used in smc
*/ struct smt_debug { int d_smtf ; int d_smt ; int d_ecm ; int d_rmt ; int d_cfm ; int d_pcm ; int d_plc ; #ifdef ESS int d_ess ; #endif #ifdef SBA int d_sba ; #endif struct os_debug d_os; /* Include specific OS DEBUG struct */
} ;
#ifndef DEBUG_BRD /* all boards shall be debugged with one debug struct */ externstruct smt_debug debug; /* Declaration of debug struct */ #endif/* DEBUG_BRD */
#endif/* DEBUG */
/* * the SMT Context Struct SMC * this struct contains ALL global variables of SMT
*/ struct s_smc { struct s_smt_os os ; /* os specific */ struct s_smt_hw hw ; /* hardware */
/* * NOTE: os and hw MUST BE the first two structs * anything beyond hw WILL BE SET TO ZERO in smt_set_defaults()
*/ struct smt_config s ; /* smt constants */ struct smt_values sm ; /* smt variables */ struct s_ecm e ; /* ecm */ struct s_rmt r ; /* rmt */ struct s_cfm cf ; /* cfm/cem */ #ifdef CONCENTRATOR struct s_cem ce[NUMPHYS] ; /* cem */ struct s_c_ring cr[NUMPHYS+NUMMACS] ; #endif struct s_pcm p ; /* pcm */ struct s_phy y[NUMPHYS] ; /* phy */ struct s_queue q ; /* queue */ struct s_timer t ; /* timer */ struct s_srf srf ; /* SRF */ struct s_srf_evc evcs[6+NUMPHYS*4] ; struct fddi_mib mib ; /* __THE_MIB__ */ #ifdef SBA struct s_sba sba ; /* SBA variables */ #endif #ifdef ESS struct s_ess ess ; /* Ess variables */ #endif #ifdefined(DEBUG) && defined(DEBUG_BRD) /* If you want all single board to be debugged separately */ struct smt_debug debug; /* Declaration of debug struct */ #endif/* DEBUG_BRD && DEBUG */
} ;
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.