]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /***************************************************************************** |
2 | * | |
3 | * Name: skgepnm2.h | |
4 | * Project: GEnesis, PCI Gigabit Ethernet Adapter | |
5 | * Version: $Revision: 1.36 $ | |
6 | * Date: $Date: 2003/05/23 12:45:13 $ | |
7 | * Purpose: Defines for Private Network Management Interface | |
8 | * | |
9 | ****************************************************************************/ | |
10 | ||
11 | /****************************************************************************** | |
12 | * | |
13 | * (C)Copyright 1998-2002 SysKonnect GmbH. | |
14 | * (C)Copyright 2002-2003 Marvell. | |
15 | * | |
16 | * This program is free software; you can redistribute it and/or modify | |
17 | * it under the terms of the GNU General Public License as published by | |
18 | * the Free Software Foundation; either version 2 of the License, or | |
19 | * (at your option) any later version. | |
20 | * | |
21 | * The information in this file is provided "AS IS" without warranty. | |
22 | * | |
23 | ******************************************************************************/ | |
24 | ||
25 | #ifndef _SKGEPNM2_H_ | |
26 | #define _SKGEPNM2_H_ | |
27 | ||
28 | /* | |
29 | * General definitions | |
30 | */ | |
31 | #define SK_PNMI_CHIPSET_XMAC 1 /* XMAC11800FP */ | |
32 | #define SK_PNMI_CHIPSET_YUKON 2 /* YUKON */ | |
33 | ||
34 | #define SK_PNMI_BUS_PCI 1 /* PCI bus*/ | |
35 | ||
36 | /* | |
37 | * Actions | |
38 | */ | |
39 | #define SK_PNMI_ACT_IDLE 1 | |
40 | #define SK_PNMI_ACT_RESET 2 | |
41 | #define SK_PNMI_ACT_SELFTEST 3 | |
42 | #define SK_PNMI_ACT_RESETCNT 4 | |
43 | ||
44 | /* | |
45 | * VPD releated defines | |
46 | */ | |
47 | ||
48 | #define SK_PNMI_VPD_RW 1 | |
49 | #define SK_PNMI_VPD_RO 2 | |
50 | ||
51 | #define SK_PNMI_VPD_OK 0 | |
52 | #define SK_PNMI_VPD_NOTFOUND 1 | |
53 | #define SK_PNMI_VPD_CUT 2 | |
54 | #define SK_PNMI_VPD_TIMEOUT 3 | |
55 | #define SK_PNMI_VPD_FULL 4 | |
56 | #define SK_PNMI_VPD_NOWRITE 5 | |
57 | #define SK_PNMI_VPD_FATAL 6 | |
58 | ||
59 | #define SK_PNMI_VPD_IGNORE 0 | |
60 | #define SK_PNMI_VPD_CREATE 1 | |
61 | #define SK_PNMI_VPD_DELETE 2 | |
62 | ||
63 | ||
64 | /* | |
65 | * RLMT related defines | |
66 | */ | |
67 | #define SK_PNMI_DEF_RLMT_CHG_THRES 240 /* 4 changes per minute */ | |
68 | ||
69 | ||
70 | /* | |
71 | * VCT internal status values | |
72 | */ | |
73 | #define SK_PNMI_VCT_PENDING 32 | |
74 | #define SK_PNMI_VCT_TEST_DONE 64 | |
75 | #define SK_PNMI_VCT_LINK 128 | |
76 | ||
77 | /* | |
78 | * Internal table definitions | |
79 | */ | |
80 | #define SK_PNMI_GET 0 | |
81 | #define SK_PNMI_PRESET 1 | |
82 | #define SK_PNMI_SET 2 | |
83 | ||
84 | #define SK_PNMI_RO 0 | |
85 | #define SK_PNMI_RW 1 | |
86 | #define SK_PNMI_WO 2 | |
87 | ||
88 | typedef struct s_OidTabEntry { | |
89 | SK_U32 Id; | |
90 | SK_U32 InstanceNo; | |
91 | unsigned int StructSize; | |
92 | unsigned int Offset; | |
93 | int Access; | |
94 | int (* Func)(SK_AC *pAc, SK_IOC pIo, int action, | |
95 | SK_U32 Id, char* pBuf, unsigned int* pLen, | |
96 | SK_U32 Instance, unsigned int TableIndex, | |
97 | SK_U32 NetNumber); | |
98 | SK_U16 Param; | |
99 | } SK_PNMI_TAB_ENTRY; | |
100 | ||
101 | ||
102 | /* | |
103 | * Trap lengths | |
104 | */ | |
105 | #define SK_PNMI_TRAP_SIMPLE_LEN 17 | |
106 | #define SK_PNMI_TRAP_SENSOR_LEN_BASE 46 | |
107 | #define SK_PNMI_TRAP_RLMT_CHANGE_LEN 23 | |
108 | #define SK_PNMI_TRAP_RLMT_PORT_LEN 23 | |
109 | ||
110 | /* | |
111 | * Number of MAC types supported | |
112 | */ | |
113 | #define SK_PNMI_MAC_TYPES (SK_MAC_GMAC + 1) | |
114 | ||
115 | /* | |
116 | * MAC statistic data list (overall set for MAC types used) | |
117 | */ | |
118 | enum SK_MACSTATS { | |
119 | SK_PNMI_HTX = 0, | |
120 | SK_PNMI_HTX_OCTET, | |
121 | SK_PNMI_HTX_OCTETHIGH = SK_PNMI_HTX_OCTET, | |
122 | SK_PNMI_HTX_OCTETLOW, | |
123 | SK_PNMI_HTX_BROADCAST, | |
124 | SK_PNMI_HTX_MULTICAST, | |
125 | SK_PNMI_HTX_UNICAST, | |
126 | SK_PNMI_HTX_BURST, | |
127 | SK_PNMI_HTX_PMACC, | |
128 | SK_PNMI_HTX_MACC, | |
129 | SK_PNMI_HTX_COL, | |
130 | SK_PNMI_HTX_SINGLE_COL, | |
131 | SK_PNMI_HTX_MULTI_COL, | |
132 | SK_PNMI_HTX_EXCESS_COL, | |
133 | SK_PNMI_HTX_LATE_COL, | |
134 | SK_PNMI_HTX_DEFFERAL, | |
135 | SK_PNMI_HTX_EXCESS_DEF, | |
136 | SK_PNMI_HTX_UNDERRUN, | |
137 | SK_PNMI_HTX_CARRIER, | |
138 | SK_PNMI_HTX_UTILUNDER, | |
139 | SK_PNMI_HTX_UTILOVER, | |
140 | SK_PNMI_HTX_64, | |
141 | SK_PNMI_HTX_127, | |
142 | SK_PNMI_HTX_255, | |
143 | SK_PNMI_HTX_511, | |
144 | SK_PNMI_HTX_1023, | |
145 | SK_PNMI_HTX_MAX, | |
146 | SK_PNMI_HTX_LONGFRAMES, | |
147 | SK_PNMI_HTX_SYNC, | |
148 | SK_PNMI_HTX_SYNC_OCTET, | |
149 | SK_PNMI_HTX_RESERVED, | |
150 | ||
151 | SK_PNMI_HRX, | |
152 | SK_PNMI_HRX_OCTET, | |
153 | SK_PNMI_HRX_OCTETHIGH = SK_PNMI_HRX_OCTET, | |
154 | SK_PNMI_HRX_OCTETLOW, | |
155 | SK_PNMI_HRX_BADOCTET, | |
156 | SK_PNMI_HRX_BADOCTETHIGH = SK_PNMI_HRX_BADOCTET, | |
157 | SK_PNMI_HRX_BADOCTETLOW, | |
158 | SK_PNMI_HRX_BROADCAST, | |
159 | SK_PNMI_HRX_MULTICAST, | |
160 | SK_PNMI_HRX_UNICAST, | |
161 | SK_PNMI_HRX_PMACC, | |
162 | SK_PNMI_HRX_MACC, | |
163 | SK_PNMI_HRX_PMACC_ERR, | |
164 | SK_PNMI_HRX_MACC_UNKWN, | |
165 | SK_PNMI_HRX_BURST, | |
166 | SK_PNMI_HRX_MISSED, | |
167 | SK_PNMI_HRX_FRAMING, | |
168 | SK_PNMI_HRX_UNDERSIZE, | |
169 | SK_PNMI_HRX_OVERFLOW, | |
170 | SK_PNMI_HRX_JABBER, | |
171 | SK_PNMI_HRX_CARRIER, | |
172 | SK_PNMI_HRX_IRLENGTH, | |
173 | SK_PNMI_HRX_SYMBOL, | |
174 | SK_PNMI_HRX_SHORTS, | |
175 | SK_PNMI_HRX_RUNT, | |
176 | SK_PNMI_HRX_TOO_LONG, | |
177 | SK_PNMI_HRX_FCS, | |
178 | SK_PNMI_HRX_CEXT, | |
179 | SK_PNMI_HRX_UTILUNDER, | |
180 | SK_PNMI_HRX_UTILOVER, | |
181 | SK_PNMI_HRX_64, | |
182 | SK_PNMI_HRX_127, | |
183 | SK_PNMI_HRX_255, | |
184 | SK_PNMI_HRX_511, | |
185 | SK_PNMI_HRX_1023, | |
186 | SK_PNMI_HRX_MAX, | |
187 | SK_PNMI_HRX_LONGFRAMES, | |
188 | ||
189 | SK_PNMI_HRX_RESERVED, | |
190 | ||
191 | SK_PNMI_MAX_IDX /* NOTE: Ensure SK_PNMI_CNT_NO is set to this value */ | |
192 | }; | |
193 | ||
194 | /* | |
195 | * MAC specific data | |
196 | */ | |
197 | typedef struct s_PnmiStatAddr { | |
198 | SK_U16 Reg; /* MAC register containing the value */ | |
199 | SK_BOOL GetOffset; /* TRUE: Offset managed by PNMI (call GetStatVal())*/ | |
200 | } SK_PNMI_STATADDR; | |
201 | ||
202 | ||
203 | /* | |
204 | * SK_PNMI_STRUCT_DATA copy offset evaluation macros | |
205 | */ | |
206 | #define SK_PNMI_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_STRUCT_DATA *)0)->e)) | |
207 | #define SK_PNMI_MAI_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_STRUCT_DATA *)0)->e)) | |
208 | #define SK_PNMI_VPD_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_VPD *)0)->e)) | |
209 | #define SK_PNMI_SEN_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_SENSOR *)0)->e)) | |
210 | #define SK_PNMI_CHK_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_CHECKSUM *)0)->e)) | |
211 | #define SK_PNMI_STA_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_STAT *)0)->e)) | |
212 | #define SK_PNMI_CNF_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_CONF *)0)->e)) | |
213 | #define SK_PNMI_RLM_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_RLMT *)0)->e)) | |
214 | #define SK_PNMI_MON_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_RLMT_MONITOR *)0)->e)) | |
215 | #define SK_PNMI_TRP_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_TRAP *)0)->e)) | |
216 | ||
217 | #define SK_PNMI_SET_STAT(b,s,o) {SK_U32 Val32; char *pVal; \ | |
218 | Val32 = (s); \ | |
219 | pVal = (char *)(b) + ((SK_U32)(SK_UPTR) \ | |
220 | &(((SK_PNMI_STRUCT_DATA *)0)-> \ | |
221 | ReturnStatus.ErrorStatus)); \ | |
222 | SK_PNMI_STORE_U32(pVal, Val32); \ | |
223 | Val32 = (o); \ | |
224 | pVal = (char *)(b) + ((SK_U32)(SK_UPTR) \ | |
225 | &(((SK_PNMI_STRUCT_DATA *)0)-> \ | |
226 | ReturnStatus.ErrorOffset)); \ | |
227 | SK_PNMI_STORE_U32(pVal, Val32);} | |
228 | ||
229 | /* | |
230 | * Time macros | |
231 | */ | |
232 | #ifndef SK_PNMI_HUNDREDS_SEC | |
233 | #if SK_TICKS_PER_SEC == 100 | |
234 | #define SK_PNMI_HUNDREDS_SEC(t) (t) | |
235 | #else | |
236 | #define SK_PNMI_HUNDREDS_SEC(t) (((t) * 100) / (SK_TICKS_PER_SEC)) | |
237 | #endif /* !SK_TICKS_PER_SEC */ | |
238 | #endif /* !SK_PNMI_HUNDREDS_SEC */ | |
239 | ||
240 | /* | |
241 | * Macros to work around alignment problems | |
242 | */ | |
243 | #ifndef SK_PNMI_STORE_U16 | |
244 | #define SK_PNMI_STORE_U16(p,v) {*(char *)(p) = *((char *)&(v)); \ | |
245 | *((char *)(p) + 1) = \ | |
246 | *(((char *)&(v)) + 1);} | |
247 | #endif | |
248 | ||
249 | #ifndef SK_PNMI_STORE_U32 | |
250 | #define SK_PNMI_STORE_U32(p,v) {*(char *)(p) = *((char *)&(v)); \ | |
251 | *((char *)(p) + 1) = \ | |
252 | *(((char *)&(v)) + 1); \ | |
253 | *((char *)(p) + 2) = \ | |
254 | *(((char *)&(v)) + 2); \ | |
255 | *((char *)(p) + 3) = \ | |
256 | *(((char *)&(v)) + 3);} | |
257 | #endif | |
258 | ||
259 | #ifndef SK_PNMI_STORE_U64 | |
260 | #define SK_PNMI_STORE_U64(p,v) {*(char *)(p) = *((char *)&(v)); \ | |
261 | *((char *)(p) + 1) = \ | |
262 | *(((char *)&(v)) + 1); \ | |
263 | *((char *)(p) + 2) = \ | |
264 | *(((char *)&(v)) + 2); \ | |
265 | *((char *)(p) + 3) = \ | |
266 | *(((char *)&(v)) + 3); \ | |
267 | *((char *)(p) + 4) = \ | |
268 | *(((char *)&(v)) + 4); \ | |
269 | *((char *)(p) + 5) = \ | |
270 | *(((char *)&(v)) + 5); \ | |
271 | *((char *)(p) + 6) = \ | |
272 | *(((char *)&(v)) + 6); \ | |
273 | *((char *)(p) + 7) = \ | |
274 | *(((char *)&(v)) + 7);} | |
275 | #endif | |
276 | ||
277 | #ifndef SK_PNMI_READ_U16 | |
278 | #define SK_PNMI_READ_U16(p,v) {*((char *)&(v)) = *(char *)(p); \ | |
279 | *(((char *)&(v)) + 1) = \ | |
280 | *((char *)(p) + 1);} | |
281 | #endif | |
282 | ||
283 | #ifndef SK_PNMI_READ_U32 | |
284 | #define SK_PNMI_READ_U32(p,v) {*((char *)&(v)) = *(char *)(p); \ | |
285 | *(((char *)&(v)) + 1) = \ | |
286 | *((char *)(p) + 1); \ | |
287 | *(((char *)&(v)) + 2) = \ | |
288 | *((char *)(p) + 2); \ | |
289 | *(((char *)&(v)) + 3) = \ | |
290 | *((char *)(p) + 3);} | |
291 | #endif | |
292 | ||
293 | #ifndef SK_PNMI_READ_U64 | |
294 | #define SK_PNMI_READ_U64(p,v) {*((char *)&(v)) = *(char *)(p); \ | |
295 | *(((char *)&(v)) + 1) = \ | |
296 | *((char *)(p) + 1); \ | |
297 | *(((char *)&(v)) + 2) = \ | |
298 | *((char *)(p) + 2); \ | |
299 | *(((char *)&(v)) + 3) = \ | |
300 | *((char *)(p) + 3); \ | |
301 | *(((char *)&(v)) + 4) = \ | |
302 | *((char *)(p) + 4); \ | |
303 | *(((char *)&(v)) + 5) = \ | |
304 | *((char *)(p) + 5); \ | |
305 | *(((char *)&(v)) + 6) = \ | |
306 | *((char *)(p) + 6); \ | |
307 | *(((char *)&(v)) + 7) = \ | |
308 | *((char *)(p) + 7);} | |
309 | #endif | |
310 | ||
311 | /* | |
312 | * Macros for Debug | |
313 | */ | |
314 | #ifdef DEBUG | |
315 | ||
316 | #define SK_PNMI_CHECKFLAGS(vSt) {if (pAC->Pnmi.MacUpdatedFlag > 0 || \ | |
317 | pAC->Pnmi.RlmtUpdatedFlag > 0 || \ | |
318 | pAC->Pnmi.SirqUpdatedFlag > 0) { \ | |
319 | SK_DBG_MSG(pAC, \ | |
320 | SK_DBGMOD_PNMI, \ | |
321 | SK_DBGCAT_CTRL, \ | |
322 | ("PNMI: ERR: %s MacUFlag=%d, RlmtUFlag=%d, SirqUFlag=%d\n", \ | |
323 | vSt, \ | |
324 | pAC->Pnmi.MacUpdatedFlag, \ | |
325 | pAC->Pnmi.RlmtUpdatedFlag, \ | |
326 | pAC->Pnmi.SirqUpdatedFlag))}} | |
327 | ||
328 | #else /* !DEBUG */ | |
329 | ||
330 | #define SK_PNMI_CHECKFLAGS(vSt) /* Nothing */ | |
331 | ||
332 | #endif /* !DEBUG */ | |
333 | ||
334 | #endif /* _SKGEPNM2_H_ */ |