diff options
Diffstat (limited to 'drivers/net/skfp/smtinit.c')
-rw-r--r-- | drivers/net/skfp/smtinit.c | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/drivers/net/skfp/smtinit.c b/drivers/net/skfp/smtinit.c new file mode 100644 index 000000000000..3c8964ce1837 --- /dev/null +++ b/drivers/net/skfp/smtinit.c | |||
@@ -0,0 +1,125 @@ | |||
1 | /****************************************************************************** | ||
2 | * | ||
3 | * (C)Copyright 1998,1999 SysKonnect, | ||
4 | * a business unit of Schneider & Koch & Co. Datensysteme GmbH. | ||
5 | * | ||
6 | * See the file "skfddi.c" for further information. | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | * | ||
13 | * The information in this file is provided "AS IS" without warranty. | ||
14 | * | ||
15 | ******************************************************************************/ | ||
16 | |||
17 | /* | ||
18 | Init SMT | ||
19 | call all module level initialization routines | ||
20 | */ | ||
21 | |||
22 | #include "h/types.h" | ||
23 | #include "h/fddi.h" | ||
24 | #include "h/smc.h" | ||
25 | |||
26 | #ifndef lint | ||
27 | static const char ID_sccs[] = "@(#)smtinit.c 1.15 97/05/06 (C) SK " ; | ||
28 | #endif | ||
29 | |||
30 | void init_fddi_driver(struct s_smc *smc, u_char *mac_addr); | ||
31 | |||
32 | /* define global debug variable */ | ||
33 | #if defined(DEBUG) && !defined(DEBUG_BRD) | ||
34 | struct smt_debug debug; | ||
35 | #endif | ||
36 | |||
37 | #ifndef MULT_OEM | ||
38 | #define OEMID(smc,i) oem_id[i] | ||
39 | extern u_char oem_id[] ; | ||
40 | #else /* MULT_OEM */ | ||
41 | #define OEMID(smc,i) smc->hw.oem_id->oi_mark[i] | ||
42 | extern struct s_oem_ids oem_ids[] ; | ||
43 | #endif /* MULT_OEM */ | ||
44 | |||
45 | /* | ||
46 | * Set OEM specific values | ||
47 | * | ||
48 | * Can not be called in smt_reset_defaults, because it is not sure that | ||
49 | * the OEM ID is already defined. | ||
50 | */ | ||
51 | static void set_oem_spec_val(struct s_smc *smc) | ||
52 | { | ||
53 | struct fddi_mib *mib ; | ||
54 | |||
55 | mib = &smc->mib ; | ||
56 | |||
57 | /* | ||
58 | * set IBM specific values | ||
59 | */ | ||
60 | if (OEMID(smc,0) == 'I') { | ||
61 | mib->fddiSMTConnectionPolicy = POLICY_MM ; | ||
62 | } | ||
63 | } | ||
64 | |||
65 | /* | ||
66 | * Init SMT | ||
67 | */ | ||
68 | int init_smt(struct s_smc *smc, u_char *mac_addr) | ||
69 | /* u_char *mac_addr; canonical address or NULL */ | ||
70 | { | ||
71 | int p ; | ||
72 | |||
73 | #if defined(DEBUG) && !defined(DEBUG_BRD) | ||
74 | debug.d_smt = 0 ; | ||
75 | debug.d_smtf = 0 ; | ||
76 | debug.d_rmt = 0 ; | ||
77 | debug.d_ecm = 0 ; | ||
78 | debug.d_pcm = 0 ; | ||
79 | debug.d_cfm = 0 ; | ||
80 | |||
81 | debug.d_plc = 0 ; | ||
82 | #ifdef ESS | ||
83 | debug.d_ess = 0 ; | ||
84 | #endif | ||
85 | #ifdef SBA | ||
86 | debug.d_sba = 0 ; | ||
87 | #endif | ||
88 | #endif /* DEBUG && !DEBUG_BRD */ | ||
89 | |||
90 | /* First initialize the ports mib->pointers */ | ||
91 | for ( p = 0; p < NUMPHYS; p ++ ) { | ||
92 | smc->y[p].mib = & smc->mib.p[p] ; | ||
93 | } | ||
94 | |||
95 | set_oem_spec_val(smc) ; | ||
96 | (void) smt_set_mac_opvalues(smc) ; | ||
97 | init_fddi_driver(smc,mac_addr) ; /* HW driver */ | ||
98 | smt_fixup_mib(smc) ; /* update values that depend on s.sas */ | ||
99 | |||
100 | ev_init(smc) ; /* event queue */ | ||
101 | #ifndef SLIM_SMT | ||
102 | smt_init_evc(smc) ; /* evcs in MIB */ | ||
103 | #endif /* no SLIM_SMT */ | ||
104 | smt_timer_init(smc) ; /* timer package */ | ||
105 | smt_agent_init(smc) ; /* SMT frame manager */ | ||
106 | |||
107 | pcm_init(smc) ; /* PCM state machine */ | ||
108 | ecm_init(smc) ; /* ECM state machine */ | ||
109 | cfm_init(smc) ; /* CFM state machine */ | ||
110 | rmt_init(smc) ; /* RMT state machine */ | ||
111 | |||
112 | for (p = 0 ; p < NUMPHYS ; p++) { | ||
113 | pcm(smc,p,0) ; /* PCM A state machine */ | ||
114 | } | ||
115 | ecm(smc,0) ; /* ECM state machine */ | ||
116 | cfm(smc,0) ; /* CFM state machine */ | ||
117 | rmt(smc,0) ; /* RMT state machine */ | ||
118 | |||
119 | smt_agent_task(smc) ; /* NIF FSM etc */ | ||
120 | |||
121 | PNMI_INIT(smc) ; /* PNMI initialization */ | ||
122 | |||
123 | return(0) ; | ||
124 | } | ||
125 | |||