brintos

brintos / linux-shallow public Read only

0
0
Text · 2.7 KiB · 8b172c1 Raw
118 lines · c
1// SPDX-License-Identifier: GPL-2.0-or-later2/******************************************************************************3 *4 *	(C)Copyright 1998,1999 SysKonnect,5 *	a business unit of Schneider & Koch & Co. Datensysteme GmbH.6 *7 *	See the file "skfddi.c" for further information.8 *9 *	The information in this file is provided "AS IS" without warranty.10 *11 ******************************************************************************/12 13/*14	Init SMT15	call all module level initialization routines16*/17 18#include "h/types.h"19#include "h/fddi.h"20#include "h/smc.h"21 22void init_fddi_driver(struct s_smc *smc, const u_char *mac_addr);23 24/* define global debug variable */25#if defined(DEBUG) && !defined(DEBUG_BRD)26struct smt_debug debug;27#endif28 29#ifndef MULT_OEM30#define OEMID(smc,i)	oem_id[i]31	extern u_char	oem_id[] ;32#else	/* MULT_OEM */33#define OEMID(smc,i)	smc->hw.oem_id->oi_mark[i]34	extern struct s_oem_ids	oem_ids[] ;35#endif	/* MULT_OEM */36 37/*38 * Set OEM specific values39 *40 * Can not be called in smt_reset_defaults, because it is not sure that41 * the OEM ID is already defined.42 */43static void set_oem_spec_val(struct s_smc *smc)44{45	struct fddi_mib *mib ;46 47	mib = &smc->mib ;48 49	/*50	 * set IBM specific values51	 */52	if (OEMID(smc,0) == 'I') {53		mib->fddiSMTConnectionPolicy = POLICY_MM ;54	}55}56 57/*58 * Init SMT59 */60int init_smt(struct s_smc *smc, const u_char *mac_addr)61/* u_char *mac_addr;	canonical address or NULL */62{63	int	p ;64 65#if defined(DEBUG) && !defined(DEBUG_BRD)66	debug.d_smt = 0 ;67	debug.d_smtf = 0 ;68	debug.d_rmt = 0 ;69	debug.d_ecm = 0 ;70	debug.d_pcm = 0 ;71	debug.d_cfm = 0 ;72 73	debug.d_plc = 0 ;74#ifdef	ESS75	debug.d_ess = 0 ;76#endif77#ifdef	SBA78	debug.d_sba = 0 ;79#endif80#endif	/* DEBUG && !DEBUG_BRD */81 82	/* First initialize the ports mib->pointers */83	for ( p = 0; p < NUMPHYS; p ++ ) {84		smc->y[p].mib = & smc->mib.p[p] ;85	}86 87	set_oem_spec_val(smc) ;	88	(void) smt_set_mac_opvalues(smc) ;89	init_fddi_driver(smc,mac_addr) ;	/* HW driver */90	smt_fixup_mib(smc) ;		/* update values that depend on s.sas */91 92	ev_init(smc) ;			/* event queue */93#ifndef	SLIM_SMT94	smt_init_evc(smc) ;		/* evcs in MIB */95#endif	/* no SLIM_SMT */96	smt_timer_init(smc) ;		/* timer package */97	smt_agent_init(smc) ;		/* SMT frame manager */98 99	pcm_init(smc) ;			/* PCM state machine */100	ecm_init(smc) ;			/* ECM state machine */101	cfm_init(smc) ;			/* CFM state machine */102	rmt_init(smc) ;			/* RMT state machine */103 104	for (p = 0 ; p < NUMPHYS ; p++) {105		pcm(smc,p,0) ;		/* PCM A state machine */106	}107	ecm(smc,0) ;			/* ECM state machine */108	cfm(smc,0) ;			/* CFM state machine */109	rmt(smc,0) ;			/* RMT state machine */110 111	smt_agent_task(smc) ;		/* NIF FSM etc */112 113        PNMI_INIT(smc) ;                /* PNMI initialization */114 115	return 0;116}117 118