642ad2cd8070657863ef92e79604db400e4ef859
[linux-flexiantxendom0-3.2.10.git] / drivers / net / sk98lin / h / skgepnmi.h
1 /*****************************************************************************
2  *
3  * Name:        skgepnmi.h
4  * Project:     GEnesis, PCI Gigabit Ethernet Adapter
5  * Version:     $Revision: 1.48 $
6  * Date:        $Date: 2001/02/23 14:34:24 $
7  * Purpose:     Defines for Private Network Management Interface
8  *
9  ****************************************************************************/
10
11 /******************************************************************************
12  *
13  *      (C)Copyright 1998-2001 SysKonnect GmbH.
14  *
15  *      This program is free software; you can redistribute it and/or modify
16  *      it under the terms of the GNU General Public License as published by
17  *      the Free Software Foundation; either version 2 of the License, or
18  *      (at your option) any later version.
19  *
20  *      The information in this file is provided "AS IS" without warranty.
21  *
22  ******************************************************************************/
23
24 /*****************************************************************************
25  *
26  * History:
27  *
28  *      $Log: skgepnmi.h,v $
29  *      Revision 1.48  2001/02/23 14:34:24  mkunz
30  *      Changed macro PHYS2INST. Added pAC to Interface
31  *      
32  *      Revision 1.47  2001/02/07 08:28:23  mkunz
33  *      - Added Oids:   OID_SKGE_DIAG_ACTION
34  *                                      OID_SKGE_DIAG_RESULT
35  *                                      OID_SKGE_MULTICAST_LIST
36  *                                      OID_SKGE_CURRENT_PACKET_FILTER
37  *                                      OID_SKGE_INTERMEDIATE_SUPPORT
38  *      - Changed value of OID_SKGE_MTU
39  *      
40  *      Revision 1.46  2001/02/06 10:01:41  mkunz
41  *      - Pnmi V4 dual net support added. Interface functions and macros extended
42  *      - Vpd bug fixed
43  *      - OID_SKGE_MTU added
44  *      
45  *      Revision 1.45  2001/01/22 13:41:37  rassmann
46  *      Supporting two nets on dual-port adapters.
47  *      
48  *      Revision 1.44  2000/09/07 07:35:27  rwahl
49  *      - removed NDIS counter specific data type.
50  *      - fixed spelling for OID_SKGE_RLMT_PORT_PREFERRED.
51  *      
52  *      Revision 1.43  2000/08/04 11:41:08  rwahl
53  *      - Fixed compiler warning (port is always >= 0) for macros
54  *        SK_PNMI_CNT_RX_LONGFRAMES & SK_PNMI_CNT_SYNC_OCTETS
55  *      
56  *      Revision 1.42  2000/08/03 15:14:07  rwahl
57  *      - Corrected error in driver macros addressing a physical port.
58  *      
59  *      Revision 1.41  2000/08/01 16:22:29  rwahl
60  *      - Changed MDB version to 3.1.
61  *      - Added definitions for StatRxLongFrames counter.
62  *      - Added macro to be used by driver to count long frames received.
63  *      - Added directive to control width (default = 32bit) of NDIS statistic
64  *        counters (SK_NDIS_64BIT_CTR).
65  *      
66  *      Revision 1.40  2000/03/31 13:51:34  rwahl
67  *      Added SK_UPTR cast to offset calculation for PNMI struct fields;
68  *      missing cast caused compiler warnings by Win64 compiler.
69  *
70  *      Revision 1.39  1999/12/06 10:09:47  rwahl
71  *      Added new error log message.
72  *      
73  *      Revision 1.38  1999/11/22 13:57:55  cgoos
74  *      Changed license header to GPL.
75  *
76  *      Revision 1.37  1999/09/14 14:25:32  rwahl
77  *      Set MDB version for 1000Base-T (sensors, Master/Slave) changes.
78  *      
79  *      Revision 1.36  1999/05/20 09:24:56  cgoos
80  *      Changes for 1000Base-T (sensors, Master/Slave).
81  *      
82  *      Revision 1.35  1999/04/13 15:10:51  mhaveman
83  *      Replaced RLMT macros SK_RLMT_CHECK_xxx again by those of PNMI to
84  *      grant unified interface. But PNMI macros will store the same
85  *      value as RLMT macros.
86  *      
87  *      Revision 1.34  1999/04/13 15:03:49  mhaveman
88  *      -Changed copyright
89  *      -Removed SK_PNMI_RLMT_MODE_CHK_xxx macros. Those of RLMT should be
90  *       used.
91  *      
92  *      Revision 1.33  1999/03/23 10:41:02  mhaveman
93  *      Changed comments.
94  *      
95  *      Revision 1.32  1999/01/25 15:01:33  mhaveman
96  *      Added support for multiple simultaniously active ports.
97  *      
98  *      Revision 1.31  1999/01/19 10:06:26  mhaveman
99  *      Added new error log message.
100  *      
101  *      Revision 1.30  1999/01/05 10:34:49  mhaveman
102  *      Fixed little error in RlmtChangeEstimate calculation.
103  *      
104  *      Revision 1.29  1999/01/05 09:59:41  mhaveman
105  *      Redesigned port switch average calculation to avoid 64bit
106  *      arithmetic.
107  *      
108  *      Revision 1.28  1998/12/08 10:05:48  mhaveman
109  *      Defined macro SK_PNMI_MIN_STRUCT_SIZE.
110  *      
111  *      Revision 1.27  1998/12/03 14:39:35  mhaveman
112  *      Fixed problem that LSTAT was enumerated wrong.
113  *      
114  *      Revision 1.26  1998/12/03 11:19:51  mhaveman
115  *      Changed contents of errlog message SK_PNMI_ERR016MSG
116  *      
117  *      Revision 1.25  1998/12/01 10:40:04  mhaveman
118  *      Changed size of SensorNumber, ChecksumNumber and RlmtPortNumber in
119  *      SK_PNMI_STRUCT_DATA to be conform with OID definition.
120  *      
121  *      Revision 1.24  1998/11/20 08:09:27  mhaveman
122  *      Added macros to convert between logical, physical port indexes and
123  *      instances.
124  *      
125  *      Revision 1.23  1998/11/10 13:41:13  mhaveman
126  *      Needed to change interface, because NT driver needs a return value
127  *      of needed buffer space on TOO_SHORT errors. Therefore all
128  *      SkPnmiGet/Preset/Set functions now have a pointer to the length
129  *      parameter, where the needed space on error is returned.
130  *      
131  *      Revision 1.22  1998/11/03 12:05:51  mhaveman
132  *      Added pAC parameter to counter macors.
133  *
134  *      Revision 1.21  1998/11/02 10:47:36  mhaveman
135  *      Added syslog messages for internal errors.
136  *      
137  *      Revision 1.20  1998/10/30 15:49:36  mhaveman
138  *      -Removed unused SK_PNMI_UTILIZATION_BASE and EstOldCnt.
139  *      -Redefined SK_PNMI_CHG_EST_BASE to hundreds of seconds.
140  *      
141  *      Revision 1.19  1998/10/29 15:38:44  mhaveman
142  *      Changed string lengths of PNMI_STRUCT_DATA structure because
143  *      string OIDs are now encoded with leading length ocetet.
144  *      
145  *      Revision 1.18  1998/10/29 08:52:27  mhaveman
146  *      -Added byte to strings in PNMI_STRUCT_DATA structure.
147  *      -Shortened SK_PNMI_RLMT structure to SK_MAX_MACS elements.
148  *      
149  *      Revision 1.17  1998/10/28 08:49:50  mhaveman
150  *      -Changed type of Instance back to SK_U32 because of VPD
151  *      -Changed type from SK_U8 to char of PciBusSpeed, PciBusWidth, PMD,
152  *       and Connector.
153  *      
154  *      Revision 1.16  1998/10/22 10:42:31  mhaveman
155  *      -Removed (SK_U32) casts for OIDs
156  *      -excluded NDIS OIDs when they are already defined with ifndef _NDIS_
157  *      
158  *      Revision 1.15  1998/10/20 13:56:28  mhaveman
159  *      Headerfile includes now directly other header files to comile correctly.
160  *      
161  *      Revision 1.14  1998/10/20 07:31:09  mhaveman
162  *      Made type changes to unsigned int where possible.
163  *      
164  *      Revision 1.13  1998/10/19 10:53:13  mhaveman
165  *      -Casted OID definitions to SK_U32
166  *      -Renamed RlmtMAC... to RlmtPort...
167  *      -Changed wrong type of VpdEntriesList from SK_U32 to char *
168  *      
169  *      Revision 1.12  1998/10/13 07:42:27  mhaveman
170  *      -Added OIDs OID_SKGE_TRAP_NUMBER and OID_SKGE_ALL_DATA
171  *      -Removed old cvs history entries
172  *      -Renamed MacNumber to PortNumber
173  *      
174  *      Revision 1.11  1998/10/07 10:55:24  mhaveman
175  *      -Added OID_MDB_VERSION. Therefore was a renumbering of the VPD OIDs
176  *       necessary.
177  *      -Added OID_GEN_ Ids to support the windows driver.
178  *      
179  *      Revision 1.10  1998/09/30 13:41:10  mhaveman
180  *      Renamed some OIDs to reduce usage of 'MAC' which is replaced by 'PORT'.
181  *      
182  *      Revision 1.9  1998/09/04 17:06:17  mhaveman
183  *      -Added SyncCounter as macro.
184  *      -Renamed OID_SKGE_.._NO_DESCR_CTS to OID_SKGE_.._NO_BUF_CTS.
185  *      -Added macros for driver description and version strings.
186  *      
187  *      Revision 1.8  1998/09/04 14:36:52  mhaveman
188  *      Added OIDs and Structure to access value of macro counters which are
189  *      counted by the driver.
190  *      
191  *      Revision 1.7  1998/09/04 11:59:36  mhaveman
192  *      Everything compiles now. Driver Macros for counting still missing.
193  *      
194  ****************************************************************************/
195
196 #ifndef _SKGEPNMI_H_
197 #define _SKGEPNMI_H_
198
199 /*
200  * Include dependencies
201  */
202 #include "h/sktypes.h"
203 #include "h/skerror.h"
204 #include "h/sktimer.h"
205 #include "h/ski2c.h"
206 #include "h/skaddr.h"
207 #include "h/skrlmt.h"
208 #include "h/skvpd.h"
209
210 /*
211  * Management Database Version
212  */
213 #define SK_PNMI_MDB_VERSION             0x00030001      /* 3.1 */
214
215
216 /*
217  * Event definitions
218  */
219 #define SK_PNMI_EVT_SIRQ_OVERFLOW               1       /* Counter overflow */
220 #define SK_PNMI_EVT_SEN_WAR_LOW                 2       /* Lower war thres exceeded */
221 #define SK_PNMI_EVT_SEN_WAR_UPP                 3       /* Upper war thres exceeded */
222 #define SK_PNMI_EVT_SEN_ERR_LOW                 4       /* Lower err thres exceeded */
223 #define SK_PNMI_EVT_SEN_ERR_UPP                 5       /* Upper err thres exceeded */
224 #define SK_PNMI_EVT_CHG_EST_TIMER               6       /* Timer event for RLMT Chg */
225 #define SK_PNMI_EVT_UTILIZATION_TIMER   7       /* Timer event for Utiliza. */
226 #define SK_PNMI_EVT_CLEAR_COUNTER               8       /* Clear statistic counters */
227 #define SK_PNMI_EVT_XMAC_RESET                  9       /* XMAC will be reset */
228
229 #define SK_PNMI_EVT_RLMT_PORT_UP                10      /* Port came logically up */
230 #define SK_PNMI_EVT_RLMT_PORT_DOWN              11      /* Port went logically down */
231 #define SK_PNMI_EVT_RLMT_SEGMENTATION   13      /* Two SP root bridges found */
232 #define SK_PNMI_EVT_RLMT_ACTIVE_DOWN    14      /* Port went logically down */
233 #define SK_PNMI_EVT_RLMT_ACTIVE_UP              15      /* Port came logically up */
234 #define SK_PNMI_EVT_RLMT_SET_NETS               16      /* 1. Parameter is number of nets
235                                                                                                 1 = single net; 2 = dual net */
236
237 /*
238  * Return values
239  */
240 #define SK_PNMI_ERR_OK                  0
241 #define SK_PNMI_ERR_GENERAL             1
242 #define SK_PNMI_ERR_TOO_SHORT           2
243 #define SK_PNMI_ERR_BAD_VALUE           3
244 #define SK_PNMI_ERR_READ_ONLY           4
245 #define SK_PNMI_ERR_UNKNOWN_OID         5
246 #define SK_PNMI_ERR_UNKNOWN_INST        6
247 #define SK_PNMI_ERR_UNKNOWN_NET         7
248
249
250 /*
251  * Return values of driver reset function SK_DRIVER_RESET() and
252  * driver event function SK_DRIVER_EVENT()
253  */
254 #define SK_PNMI_ERR_OK                  0
255 #define SK_PNMI_ERR_FAIL                1
256
257
258 /*
259  * Return values of driver test function SK_DRIVER_SELFTEST()
260  */
261 #define SK_PNMI_TST_UNKNOWN             (1 << 0)
262 #define SK_PNMI_TST_TRANCEIVER          (1 << 1)
263 #define SK_PNMI_TST_ASIC                (1 << 2)
264 #define SK_PNMI_TST_SENSOR              (1 << 3)
265 #define SK_PNMI_TST_POWERMGMT           (1 << 4)
266 #define SK_PNMI_TST_PCI                 (1 << 5)
267 #define SK_PNMI_TST_MAC                 (1 << 6)
268
269
270 /*
271  * RLMT specific definitions
272  */
273 #define SK_PNMI_RLMT_STATUS_STANDBY     1
274 #define SK_PNMI_RLMT_STATUS_ACTIVE      2
275 #define SK_PNMI_RLMT_STATUS_ERROR       3
276
277 #define SK_PNMI_RLMT_LSTAT_PHY_DOWN     1
278 #define SK_PNMI_RLMT_LSTAT_AUTONEG      2
279 #define SK_PNMI_RLMT_LSTAT_LOG_DOWN     3
280 #define SK_PNMI_RLMT_LSTAT_LOG_UP       4
281 #define SK_PNMI_RLMT_LSTAT_INDETERMINATED 5
282
283 #define SK_PNMI_RLMT_MODE_CHK_LINK      (SK_RLMT_CHECK_LINK)
284 #define SK_PNMI_RLMT_MODE_CHK_RX        (SK_RLMT_CHECK_LOC_LINK)
285 #define SK_PNMI_RLMT_MODE_CHK_SPT       (SK_RLMT_CHECK_SEG)
286 /* #define SK_PNMI_RLMT_MODE_CHK_EX */
287
288 /*
289  * OID definition
290  */
291 #ifndef _NDIS_  /* Check, whether NDIS already included OIDs */
292
293 #define OID_GEN_XMIT_OK                 0x00020101
294 #define OID_GEN_RCV_OK                  0x00020102
295 #define OID_GEN_XMIT_ERROR              0x00020103
296 #define OID_GEN_RCV_ERROR               0x00020104
297 #define OID_GEN_RCV_NO_BUFFER           0x00020105
298
299 /* #define OID_GEN_DIRECTED_BYTES_XMIT  0x00020201 */
300 #define OID_GEN_DIRECTED_FRAMES_XMIT    0x00020202
301 /* #define OID_GEN_MULTICAST_BYTES_XMIT 0x00020203 */
302 #define OID_GEN_MULTICAST_FRAMES_XMIT   0x00020204
303 /* #define OID_GEN_BROADCAST_BYTES_XMIT 0x00020205 */
304 #define OID_GEN_BROADCAST_FRAMES_XMIT   0x00020206
305 /* #define OID_GEN_DIRECTED_BYTES_RCV   0x00020207 */
306 #define OID_GEN_DIRECTED_FRAMES_RCV     0x00020208
307 /* #define OID_GEN_MULTICAST_BYTES_RCV  0x00020209 */
308 #define OID_GEN_MULTICAST_FRAMES_RCV    0x0002020A
309 /* #define OID_GEN_BROADCAST_BYTES_RCV  0x0002020B */
310 #define OID_GEN_BROADCAST_FRAMES_RCV    0x0002020C
311 #define OID_GEN_RCV_CRC_ERROR           0x0002020D
312 #define OID_GEN_TRANSMIT_QUEUE_LENGTH   0x0002020E
313
314 #define OID_802_3_PERMANENT_ADDRESS     0x01010101
315 #define OID_802_3_CURRENT_ADDRESS       0x01010102
316 /* #define OID_802_3_MULTICAST_LIST     0x01010103 */
317 /* #define OID_802_3_MAXIMUM_LIST_SIZE  0x01010104 */
318 /* #define OID_802_3_MAC_OPTIONS        0x01010105 */
319                         
320 #define OID_802_3_RCV_ERROR_ALIGNMENT   0x01020101
321 #define OID_802_3_XMIT_ONE_COLLISION    0x01020102
322 #define OID_802_3_XMIT_MORE_COLLISIONS  0x01020103
323 #define OID_802_3_XMIT_DEFERRED         0x01020201
324 #define OID_802_3_XMIT_MAX_COLLISIONS   0x01020202
325 #define OID_802_3_RCV_OVERRUN           0x01020203
326 #define OID_802_3_XMIT_UNDERRUN         0x01020204
327 #define OID_802_3_XMIT_TIMES_CRS_LOST   0x01020206
328 #define OID_802_3_XMIT_LATE_COLLISIONS  0x01020207
329
330 #endif /* _NDIS_ */
331
332 #define OID_SKGE_MDB_VERSION            0xFF010100
333 #define OID_SKGE_SUPPORTED_LIST         0xFF010101
334 #define OID_SKGE_VPD_FREE_BYTES         0xFF010102
335 #define OID_SKGE_VPD_ENTRIES_LIST       0xFF010103
336 #define OID_SKGE_VPD_ENTRIES_NUMBER     0xFF010104
337 #define OID_SKGE_VPD_KEY                0xFF010105
338 #define OID_SKGE_VPD_VALUE              0xFF010106
339 #define OID_SKGE_VPD_ACCESS             0xFF010107
340 #define OID_SKGE_VPD_ACTION             0xFF010108
341                         
342 #define OID_SKGE_PORT_NUMBER            0xFF010110
343 #define OID_SKGE_DEVICE_TYPE            0xFF010111
344 #define OID_SKGE_DRIVER_DESCR           0xFF010112
345 #define OID_SKGE_DRIVER_VERSION         0xFF010113
346 #define OID_SKGE_HW_DESCR               0xFF010114
347 #define OID_SKGE_HW_VERSION             0xFF010115
348 #define OID_SKGE_CHIPSET                0xFF010116
349 #define OID_SKGE_ACTION                 0xFF010117
350 #define OID_SKGE_RESULT                 0xFF010118
351 #define OID_SKGE_BUS_TYPE               0xFF010119
352 #define OID_SKGE_BUS_SPEED              0xFF01011A
353 #define OID_SKGE_BUS_WIDTH              0xFF01011B
354
355 /*#define OID_SKGE_MULTICAST_LIST               0xFF01011C*/
356
357 #define OID_SKGE_SENSOR_NUMBER          0xFF020100                      
358 #define OID_SKGE_SENSOR_INDEX           0xFF020101
359 #define OID_SKGE_SENSOR_DESCR           0xFF020102
360 #define OID_SKGE_SENSOR_TYPE            0xFF020103
361 #define OID_SKGE_SENSOR_VALUE           0xFF020104
362 #define OID_SKGE_SENSOR_WAR_THRES_LOW   0xFF020105
363 #define OID_SKGE_SENSOR_WAR_THRES_UPP   0xFF020106
364 #define OID_SKGE_SENSOR_ERR_THRES_LOW   0xFF020107
365 #define OID_SKGE_SENSOR_ERR_THRES_UPP   0xFF020108
366 #define OID_SKGE_SENSOR_STATUS          0xFF020109
367 #define OID_SKGE_SENSOR_WAR_CTS         0xFF02010A
368 #define OID_SKGE_SENSOR_ERR_CTS         0xFF02010B
369 #define OID_SKGE_SENSOR_WAR_TIME        0xFF02010C
370 #define OID_SKGE_SENSOR_ERR_TIME        0xFF02010D
371
372 #define OID_SKGE_CHKSM_NUMBER           0xFF020110
373 #define OID_SKGE_CHKSM_RX_OK_CTS        0xFF020111
374 #define OID_SKGE_CHKSM_RX_UNABLE_CTS    0xFF020112
375 #define OID_SKGE_CHKSM_RX_ERR_CTS       0xFF020113
376 #define OID_SKGE_CHKSM_TX_OK_CTS        0xFF020114
377 #define OID_SKGE_CHKSM_TX_UNABLE_CTS    0xFF020115
378
379 #define OID_SKGE_STAT_TX                0xFF020120
380 #define OID_SKGE_STAT_TX_OCTETS         0xFF020121
381 #define OID_SKGE_STAT_TX_BROADCAST      0xFF020122
382 #define OID_SKGE_STAT_TX_MULTICAST      0xFF020123
383 #define OID_SKGE_STAT_TX_UNICAST        0xFF020124
384 #define OID_SKGE_STAT_TX_LONGFRAMES     0xFF020125
385 #define OID_SKGE_STAT_TX_BURST          0xFF020126
386 #define OID_SKGE_STAT_TX_PFLOWC         0xFF020127
387 #define OID_SKGE_STAT_TX_FLOWC          0xFF020128
388 #define OID_SKGE_STAT_TX_SINGLE_COL     0xFF020129
389 #define OID_SKGE_STAT_TX_MULTI_COL      0xFF02012A
390 #define OID_SKGE_STAT_TX_EXCESS_COL     0xFF02012B
391 #define OID_SKGE_STAT_TX_LATE_COL       0xFF02012C
392 #define OID_SKGE_STAT_TX_DEFFERAL       0xFF02012D
393 #define OID_SKGE_STAT_TX_EXCESS_DEF     0xFF02012E
394 #define OID_SKGE_STAT_TX_UNDERRUN       0xFF02012F
395 #define OID_SKGE_STAT_TX_CARRIER        0xFF020130
396 /* #define OID_SKGE_STAT_TX_UTIL                0xFF020131 */
397 #define OID_SKGE_STAT_TX_64             0xFF020132
398 #define OID_SKGE_STAT_TX_127            0xFF020133
399 #define OID_SKGE_STAT_TX_255            0xFF020134
400 #define OID_SKGE_STAT_TX_511            0xFF020135
401 #define OID_SKGE_STAT_TX_1023           0xFF020136
402 #define OID_SKGE_STAT_TX_MAX            0xFF020137
403 #define OID_SKGE_STAT_TX_SYNC           0xFF020138
404 #define OID_SKGE_STAT_TX_SYNC_OCTETS    0xFF020139
405 #define OID_SKGE_STAT_RX                0xFF02013A
406 #define OID_SKGE_STAT_RX_OCTETS         0xFF02013B
407 #define OID_SKGE_STAT_RX_BROADCAST      0xFF02013C
408 #define OID_SKGE_STAT_RX_MULTICAST      0xFF02013D
409 #define OID_SKGE_STAT_RX_UNICAST        0xFF02013E
410 #define OID_SKGE_STAT_RX_PFLOWC         0xFF02013F
411 #define OID_SKGE_STAT_RX_FLOWC          0xFF020140
412 #define OID_SKGE_STAT_RX_PFLOWC_ERR     0xFF020141
413 #define OID_SKGE_STAT_RX_FLOWC_UNKWN    0xFF020142
414 #define OID_SKGE_STAT_RX_BURST          0xFF020143
415 #define OID_SKGE_STAT_RX_MISSED         0xFF020144
416 #define OID_SKGE_STAT_RX_FRAMING        0xFF020145
417 #define OID_SKGE_STAT_RX_OVERFLOW       0xFF020146
418 #define OID_SKGE_STAT_RX_JABBER         0xFF020147
419 #define OID_SKGE_STAT_RX_CARRIER        0xFF020148
420 #define OID_SKGE_STAT_RX_IR_LENGTH      0xFF020149
421 #define OID_SKGE_STAT_RX_SYMBOL         0xFF02014A
422 #define OID_SKGE_STAT_RX_SHORTS         0xFF02014B
423 #define OID_SKGE_STAT_RX_RUNT           0xFF02014C
424 #define OID_SKGE_STAT_RX_CEXT           0xFF02014D
425 #define OID_SKGE_STAT_RX_TOO_LONG       0xFF02014E
426 #define OID_SKGE_STAT_RX_FCS            0xFF02014F
427 /* #define OID_SKGE_STAT_RX_UTIL                0xFF020150 */
428 #define OID_SKGE_STAT_RX_64             0xFF020151
429 #define OID_SKGE_STAT_RX_127            0xFF020152
430 #define OID_SKGE_STAT_RX_255            0xFF020153
431 #define OID_SKGE_STAT_RX_511            0xFF020154
432 #define OID_SKGE_STAT_RX_1023           0xFF020155
433 #define OID_SKGE_STAT_RX_MAX            0xFF020156
434 #define OID_SKGE_STAT_RX_LONGFRAMES     0xFF020157
435
436 #define OID_SKGE_DIAG_ACTION            0xFF01011D
437 #define OID_SKGE_DIAG_RESULT            0xFF01011E
438 #define OID_SKGE_MTU            0xFF01011F
439 #define OID_SKGE_PHYS_CUR_ADDR          0xFF010120
440 #define OID_SKGE_PHYS_FAC_ADDR          0xFF010121
441 #define OID_SKGE_PMD                    0xFF010122
442 #define OID_SKGE_CONNECTOR              0xFF010123
443 #define OID_SKGE_LINK_CAP               0xFF010124
444 #define OID_SKGE_LINK_MODE              0xFF010125
445 #define OID_SKGE_LINK_MODE_STATUS       0xFF010126
446 #define OID_SKGE_LINK_STATUS            0xFF010127
447 #define OID_SKGE_FLOWCTRL_CAP           0xFF010128
448 #define OID_SKGE_FLOWCTRL_MODE          0xFF010129
449 #define OID_SKGE_FLOWCTRL_STATUS        0xFF01012A
450 #define OID_SKGE_PHY_OPERATION_CAP      0xFF01012B
451 #define OID_SKGE_PHY_OPERATION_MODE     0xFF01012C
452 #define OID_SKGE_PHY_OPERATION_STATUS   0xFF01012D
453 #define OID_SKGE_MULTICAST_LIST         0xFF01012E
454 #define OID_SKGE_CURRENT_PACKET_FILTER          0xFF01012F
455
456 #define OID_SKGE_TRAP                   0xFF010130
457 #define OID_SKGE_TRAP_NUMBER            0xFF010131
458
459 #define OID_SKGE_RLMT_MODE              0xFF010140
460 #define OID_SKGE_RLMT_PORT_NUMBER       0xFF010141
461 #define OID_SKGE_RLMT_PORT_ACTIVE       0xFF010142
462 #define OID_SKGE_RLMT_PORT_PREFERRED    0xFF010143
463 #define OID_SKGE_INTERMEDIATE_SUPPORT           0xFF010160
464 #define OID_SKGE_RLMT_CHANGE_CTS        0xFF020160
465 #define OID_SKGE_RLMT_CHANGE_TIME       0xFF020161
466 #define OID_SKGE_RLMT_CHANGE_ESTIM      0xFF020162
467 #define OID_SKGE_RLMT_CHANGE_THRES      0xFF020163
468
469 #define OID_SKGE_RLMT_PORT_INDEX        0xFF020164
470 #define OID_SKGE_RLMT_STATUS            0xFF020165
471 #define OID_SKGE_RLMT_TX_HELLO_CTS      0xFF020166
472 #define OID_SKGE_RLMT_RX_HELLO_CTS      0xFF020167
473 #define OID_SKGE_RLMT_TX_SP_REQ_CTS     0xFF020168
474 #define OID_SKGE_RLMT_RX_SP_CTS         0xFF020169
475
476 #define OID_SKGE_RLMT_MONITOR_NUMBER    0xFF010150
477 #define OID_SKGE_RLMT_MONITOR_INDEX     0xFF010151
478 #define OID_SKGE_RLMT_MONITOR_ADDR      0xFF010152
479 #define OID_SKGE_RLMT_MONITOR_ERRS      0xFF010153
480 #define OID_SKGE_RLMT_MONITOR_TIMESTAMP 0xFF010154
481 #define OID_SKGE_RLMT_MONITOR_ADMIN     0xFF010155
482
483 #define OID_SKGE_TX_SW_QUEUE_LEN        0xFF020170
484 #define OID_SKGE_TX_SW_QUEUE_MAX        0xFF020171
485 #define OID_SKGE_TX_RETRY               0xFF020172
486 #define OID_SKGE_RX_INTR_CTS            0xFF020173
487 #define OID_SKGE_TX_INTR_CTS            0xFF020174
488 #define OID_SKGE_RX_NO_BUF_CTS          0xFF020175
489 #define OID_SKGE_TX_NO_BUF_CTS          0xFF020176
490 #define OID_SKGE_TX_USED_DESCR_NO       0xFF020177
491 #define OID_SKGE_RX_DELIVERED_CTS       0xFF020178
492 #define OID_SKGE_RX_OCTETS_DELIV_CTS    0xFF020179
493 #define OID_SKGE_RX_HW_ERROR_CTS        0xFF02017A
494 #define OID_SKGE_TX_HW_ERROR_CTS        0xFF02017B
495 #define OID_SKGE_IN_ERRORS_CTS          0xFF02017C
496 #define OID_SKGE_OUT_ERROR_CTS          0xFF02017D
497 #define OID_SKGE_ERR_RECOVERY_CTS       0xFF02017E
498 #define OID_SKGE_SYSUPTIME              0xFF02017F
499
500 #define OID_SKGE_ALL_DATA               0xFF020190
501
502
503 #define OID_SKGE_TRAP_SEN_WAR_LOW       500
504 #define OID_SKGE_TRAP_SEN_WAR_UPP       501
505 #define OID_SKGE_TRAP_SEN_ERR_LOW       502
506 #define OID_SKGE_TRAP_SEN_ERR_UPP       503
507 #define OID_SKGE_TRAP_RLMT_CHANGE_THRES 520
508 #define OID_SKGE_TRAP_RLMT_CHANGE_PORT  521
509 #define OID_SKGE_TRAP_RLMT_PORT_DOWN    522
510 #define OID_SKGE_TRAP_RLMT_PORT_UP      523
511 #define OID_SKGE_TRAP_RLMT_SEGMENTATION 524
512
513
514 /*
515  * Define error numbers and messages for syslog
516  */
517 #define SK_PNMI_ERR001          (SK_ERRBASE_PNMI + 1)
518 #define SK_PNMI_ERR001MSG       "SkPnmiGetStruct: Unknown OID"
519 #define SK_PNMI_ERR002          (SK_ERRBASE_PNMI + 2)
520 #define SK_PNMI_ERR002MSG       "SkPnmiGetStruct: Cannot read VPD keys"
521 #define SK_PNMI_ERR003          (SK_ERRBASE_PNMI + 3)
522 #define SK_PNMI_ERR003MSG       "OidStruct: Called with wrong OID"
523 #define SK_PNMI_ERR004          (SK_ERRBASE_PNMI + 4)
524 #define SK_PNMI_ERR004MSG       "OidStruct: Called with wrong action"
525 #define SK_PNMI_ERR005          (SK_ERRBASE_PNMI + 5)
526 #define SK_PNMI_ERR005MSG       "Perform: Cannot reset driver"
527 #define SK_PNMI_ERR006          (SK_ERRBASE_PNMI + 6)
528 #define SK_PNMI_ERR006MSG       "Perform: Unknown OID action command"
529 #define SK_PNMI_ERR007          (SK_ERRBASE_PNMI + 7)
530 #define SK_PNMI_ERR007MSG       "General: Driver description not initialized"
531 #define SK_PNMI_ERR008          (SK_ERRBASE_PNMI + 8)
532 #define SK_PNMI_ERR008MSG       "Addr: Tried to get unknown OID"
533 #define SK_PNMI_ERR009          (SK_ERRBASE_PNMI + 9)
534 #define SK_PNMI_ERR009MSG       "Addr: Unknown OID"
535 #define SK_PNMI_ERR010          (SK_ERRBASE_PNMI + 10)
536 #define SK_PNMI_ERR010MSG       "CsumStat: Unknown OID"
537 #define SK_PNMI_ERR011          (SK_ERRBASE_PNMI + 11)
538 #define SK_PNMI_ERR011MSG       "SensorStat: Sensor descr string too long"
539 #define SK_PNMI_ERR012          (SK_ERRBASE_PNMI + 12)
540 #define SK_PNMI_ERR012MSG       "SensorStat: Unknown OID"
541 #define SK_PNMI_ERR013          (SK_ERRBASE_PNMI + 13)
542 #define SK_PNMI_ERR013MSG       "SensorStat: Unknown OID should be errored before"
543 #define SK_PNMI_ERR014          (SK_ERRBASE_PNMI + 14)
544 #define SK_PNMI_ERR014MSG       "Vpd: Cannot read VPD keys"
545 #define SK_PNMI_ERR015          (SK_ERRBASE_PNMI + 15)
546 #define SK_PNMI_ERR015MSG       "Vpd: Internal array for VPD keys to small"
547 #define SK_PNMI_ERR016          (SK_ERRBASE_PNMI + 16)
548 #define SK_PNMI_ERR016MSG       "Vpd: Key string too long"
549 #define SK_PNMI_ERR017          (SK_ERRBASE_PNMI + 17)
550 #define SK_PNMI_ERR017MSG       "Vpd: Invalid VPD status pointer"
551 #define SK_PNMI_ERR018          (SK_ERRBASE_PNMI + 18)
552 #define SK_PNMI_ERR018MSG       "Vpd: VPD data not valid"
553 #define SK_PNMI_ERR019          (SK_ERRBASE_PNMI + 19)
554 #define SK_PNMI_ERR019MSG       "Vpd: VPD entries list string too long"
555 #define SK_PNMI_ERR021          (SK_ERRBASE_PNMI + 21)
556 #define SK_PNMI_ERR021MSG       "Vpd: VPD data string too long"
557 #define SK_PNMI_ERR022          (SK_ERRBASE_PNMI + 22)
558 #define SK_PNMI_ERR022MSG       "Vpd: VPD data string too long should be errored before"
559 #define SK_PNMI_ERR023          (SK_ERRBASE_PNMI + 23)
560 #define SK_PNMI_ERR023MSG       "Vpd: Unknown OID in get action"
561 #define SK_PNMI_ERR024          (SK_ERRBASE_PNMI + 24)
562 #define SK_PNMI_ERR024MSG       "Vpd: Unknown OID in preset/set action"
563 #define SK_PNMI_ERR025          (SK_ERRBASE_PNMI + 25)
564 #define SK_PNMI_ERR025MSG       "Vpd: Cannot write VPD after modify entry"
565 #define SK_PNMI_ERR026          (SK_ERRBASE_PNMI + 26)
566 #define SK_PNMI_ERR026MSG       "Vpd: Cannot update VPD"
567 #define SK_PNMI_ERR027          (SK_ERRBASE_PNMI + 27)
568 #define SK_PNMI_ERR027MSG       "Vpd: Cannot delete VPD entry"
569 #define SK_PNMI_ERR028          (SK_ERRBASE_PNMI + 28)
570 #define SK_PNMI_ERR028MSG       "Vpd: Cannot update VPD after delete entry"
571 #define SK_PNMI_ERR029          (SK_ERRBASE_PNMI + 29)
572 #define SK_PNMI_ERR029MSG       "General: Driver description string too long"
573 #define SK_PNMI_ERR030          (SK_ERRBASE_PNMI + 30)
574 #define SK_PNMI_ERR030MSG       "General: Driver version not initialized"
575 #define SK_PNMI_ERR031          (SK_ERRBASE_PNMI + 31)
576 #define SK_PNMI_ERR031MSG       "General: Driver version string too long"
577 #define SK_PNMI_ERR032          (SK_ERRBASE_PNMI + 32)
578 #define SK_PNMI_ERR032MSG       "General: Cannot read VPD Name for HW descr"
579 #define SK_PNMI_ERR033          (SK_ERRBASE_PNMI + 33)
580 #define SK_PNMI_ERR033MSG       "General: HW description string too long"
581 #define SK_PNMI_ERR034          (SK_ERRBASE_PNMI + 34)
582 #define SK_PNMI_ERR034MSG       "General: Unknown OID"
583 #define SK_PNMI_ERR035          (SK_ERRBASE_PNMI + 35)
584 #define SK_PNMI_ERR035MSG       "Rlmt: Unknown OID"
585 #define SK_PNMI_ERR036          (SK_ERRBASE_PNMI + 36)
586 #define SK_PNMI_ERR036MSG       "Rlmt: Unknown OID should be errored before"
587 #define SK_PNMI_ERR037          (SK_ERRBASE_PNMI + 37)
588 #define SK_PNMI_ERR037MSG       "Rlmt: SK_RLMT_MODE_CHANGE event return not 0"
589 #define SK_PNMI_ERR038          (SK_ERRBASE_PNMI + 38)
590 #define SK_PNMI_ERR038MSG       "Rlmt: SK_RLMT_PREFPORT_CHANGE event return not 0"
591 #define SK_PNMI_ERR039          (SK_ERRBASE_PNMI + 39)
592 #define SK_PNMI_ERR039MSG       "RlmtStat: Unknown OID"
593 #define SK_PNMI_ERR040          (SK_ERRBASE_PNMI + 40)
594 #define SK_PNMI_ERR040MSG       "RlmtStat: Unknown OID should be errored before"
595 #define SK_PNMI_ERR041          (SK_ERRBASE_PNMI + 41)
596 #define SK_PNMI_ERR041MSG       "MacPrivateConf: Unknown OID"
597 #define SK_PNMI_ERR042          (SK_ERRBASE_PNMI + 42)
598 #define SK_PNMI_ERR042MSG       "MacPrivateConf: Unknown OID should be errored before"
599 #define SK_PNMI_ERR043          (SK_ERRBASE_PNMI + 43)
600 #define SK_PNMI_ERR043MSG       "MacPrivateConf: SK_HWEV_SET_LMODE returned not 0"
601 #define SK_PNMI_ERR044          (SK_ERRBASE_PNMI + 44)
602 #define SK_PNMI_ERR044MSG       "MacPrivateConf: SK_HWEV_SET_FLOWMODE returned not 0"
603 #define SK_PNMI_ERR045          (SK_ERRBASE_PNMI + 45)
604 #define SK_PNMI_ERR045MSG       "MacPrivateConf: Unknown OID in set action"
605 #define SK_PNMI_ERR046          (SK_ERRBASE_PNMI + 46)
606 #define SK_PNMI_ERR046MSG       "Monitor: Unknown OID"
607 #define SK_PNMI_ERR047          (SK_ERRBASE_PNMI + 47)
608 #define SK_PNMI_ERR047MSG       "SirqUpdate: Event function returns not 0"
609 #define SK_PNMI_ERR048          (SK_ERRBASE_PNMI + 48)
610 #define SK_PNMI_ERR048MSG       "RlmtUpdate: Event function returns not 0"
611 #define SK_PNMI_ERR049          (SK_ERRBASE_PNMI + 49)
612 #define SK_PNMI_ERR049MSG       ""
613 #define SK_PNMI_ERR050          (SK_ERRBASE_PNMI + 50)
614 #define SK_PNMI_ERR050MSG       "MacUpdate: Cannot update statistic counter"
615 #define SK_PNMI_ERR051          (SK_ERRBASE_PNMI + 51)
616 #define SK_PNMI_ERR051MSG       "SkPnmiEvent: Port switch suspicious"
617 #define SK_PNMI_ERR052          (SK_ERRBASE_PNMI + 52)
618 #define SK_PNMI_ERR052MSG       "MacPrivateConf: SK_HWEV_SET_ROLE returned not 0"
619
620 /*
621  * Management counter macros called by the driver
622  */
623 #define SK_PNMI_SET_DRIVER_DESCR(pAC,v) ((pAC)->Pnmi.pDriverDescription = \
624         (char *)(v))
625
626 #define SK_PNMI_SET_DRIVER_VER(pAC,v)   ((pAC)->Pnmi.pDriverVersion = \
627         (char *)(v))
628
629
630 #define SK_PNMI_CNT_TX_QUEUE_LEN(pAC,v,p) \
631         { \
632                 (pAC)->Pnmi.Port[p].TxSwQueueLen = (SK_U64)(v); \
633                 if ((pAC)->Pnmi.Port[p].TxSwQueueLen > (pAC)->Pnmi.Port[p].TxSwQueueMax) { \
634                         (pAC)->Pnmi.Port[p].TxSwQueueMax = (pAC)->Pnmi.Port[p].TxSwQueueLen; \
635                 } \
636         }
637 #define SK_PNMI_CNT_TX_RETRY(pAC,p)     (((pAC)->Pnmi.Port[p].TxRetryCts)++)
638 #define SK_PNMI_CNT_RX_INTR(pAC,p)      (((pAC)->Pnmi.Port[p].RxIntrCts)++)
639 #define SK_PNMI_CNT_TX_INTR(pAC,p)      (((pAC)->Pnmi.Port[p].TxIntrCts)++)
640 #define SK_PNMI_CNT_NO_RX_BUF(pAC,p)    (((pAC)->Pnmi.Port[p].RxNoBufCts)++)
641 #define SK_PNMI_CNT_NO_TX_BUF(pAC,p)    (((pAC)->Pnmi.Port[p].TxNoBufCts)++)
642 #define SK_PNMI_CNT_USED_TX_DESCR(pAC,v,p) \
643         ((pAC)->Pnmi.Port[p].TxUsedDescrNo=(SK_U64)(v));
644 #define SK_PNMI_CNT_RX_OCTETS_DELIVERED(pAC,v,p) \
645         { \
646                 ((pAC)->Pnmi.Port[p].RxDeliveredCts)++; \
647                 (pAC)->Pnmi.Port[p].RxOctetsDeliveredCts += (SK_U64)(v); \
648         }
649 #define SK_PNMI_CNT_ERR_RECOVERY(pAC,p) (((pAC)->Pnmi.Port[p].ErrRecoveryCts)++);
650
651 #define SK_PNMI_CNT_SYNC_OCTETS(pAC,p,v) \
652         { \
653                 if ((p) < SK_MAX_MACS) { \
654                         ((pAC)->Pnmi.Port[p].StatSyncCts)++; \
655                         (pAC)->Pnmi.Port[p].StatSyncOctetsCts += (SK_U64)(v); \
656                 } \
657         }
658
659 #define SK_PNMI_CNT_RX_LONGFRAMES(pAC,p) \
660         { \
661                 if ((p) < SK_MAX_MACS) { \
662                         ((pAC)->Pnmi.Port[p].StatRxLongFrameCts)++; \
663                 } \
664         }
665
666 /*
667  * Conversion Macros
668  */
669 #define SK_PNMI_PORT_INST2LOG(i)        ((unsigned int)(i) - 1)
670 #define SK_PNMI_PORT_LOG2INST(l)        ((unsigned int)(l) + 1)
671 #define SK_PNMI_PORT_PHYS2LOG(p)        ((unsigned int)(p) + 1)
672 #define SK_PNMI_PORT_LOG2PHYS(pAC,l)    ((unsigned int)(l) - 1)
673 #define SK_PNMI_PORT_PHYS2INST(pAC,p)   \
674         (pAC->Pnmi.DualNetActiveFlag ? 2 : ((unsigned int)(p) + 2))
675 #define SK_PNMI_PORT_INST2PHYS(pAC,i)   ((unsigned int)(i) - 2)
676
677 /*
678  * Structure definition for SkPnmiGetStruct and SkPnmiSetStruct
679  */
680 #define SK_PNMI_VPD_KEY_SIZE    5
681 #define SK_PNMI_VPD_BUFSIZE             (VPD_SIZE)
682 #define SK_PNMI_VPD_ENTRIES             (VPD_SIZE / 4)
683 #define SK_PNMI_VPD_DATALEN             128 /*  Number of data bytes */
684
685 #define SK_PNMI_MULTICAST_LISTLEN       64
686 #define SK_PNMI_SENSOR_ENTRIES          (SK_MAX_SENSORS)
687 #define SK_PNMI_CHECKSUM_ENTRIES        3
688 #define SK_PNMI_MAC_ENTRIES             (SK_MAX_MACS + 1)
689 #define SK_PNMI_MONITOR_ENTRIES         20
690 #define SK_PNMI_TRAP_ENTRIES            10
691 #define SK_PNMI_TRAPLEN                 128
692 #define SK_PNMI_STRINGLEN1              80
693 #define SK_PNMI_STRINGLEN2              25
694 #define SK_PNMI_TRAP_QUEUE_LEN          512
695
696 typedef struct s_PnmiVpd {
697         char                    VpdKey[SK_PNMI_VPD_KEY_SIZE];
698         char                    VpdValue[SK_PNMI_VPD_DATALEN];
699         SK_U8                   VpdAccess;
700         SK_U8                   VpdAction;
701 } SK_PNMI_VPD;
702
703 typedef struct s_PnmiSensor {
704         SK_U8                   SensorIndex;
705         char                    SensorDescr[SK_PNMI_STRINGLEN2];
706         SK_U8                   SensorType;
707         SK_U32                  SensorValue;
708         SK_U32                  SensorWarningThresholdLow;
709         SK_U32                  SensorWarningThresholdHigh;
710         SK_U32                  SensorErrorThresholdLow;
711         SK_U32                  SensorErrorThresholdHigh;
712         SK_U8                   SensorStatus;
713         SK_U64                  SensorWarningCts;
714         SK_U64                  SensorErrorCts;
715         SK_U64                  SensorWarningTimestamp;
716         SK_U64                  SensorErrorTimestamp;
717 } SK_PNMI_SENSOR;
718
719 typedef struct s_PnmiChecksum {
720         SK_U64                  ChecksumRxOkCts;
721         SK_U64                  ChecksumRxUnableCts;
722         SK_U64                  ChecksumRxErrCts;
723         SK_U64                  ChecksumTxOkCts;
724         SK_U64                  ChecksumTxUnableCts;
725 } SK_PNMI_CHECKSUM;
726
727 typedef struct s_PnmiStat {
728         SK_U64                  StatTxOkCts;
729         SK_U64                  StatTxOctetsOkCts;
730         SK_U64                  StatTxBroadcastOkCts;
731         SK_U64                  StatTxMulticastOkCts;
732         SK_U64                  StatTxUnicastOkCts;
733         SK_U64                  StatTxLongFramesCts;
734         SK_U64                  StatTxBurstCts;
735         SK_U64                  StatTxPauseMacCtrlCts;
736         SK_U64                  StatTxMacCtrlCts;
737         SK_U64                  StatTxSingleCollisionCts;
738         SK_U64                  StatTxMultipleCollisionCts;
739         SK_U64                  StatTxExcessiveCollisionCts;
740         SK_U64                  StatTxLateCollisionCts;
741         SK_U64                  StatTxDeferralCts;
742         SK_U64                  StatTxExcessiveDeferralCts;
743         SK_U64                  StatTxFifoUnderrunCts;
744         SK_U64                  StatTxCarrierCts;
745         SK_U64                  Dummy1; /* StatTxUtilization */
746         SK_U64                  StatTx64Cts;
747         SK_U64                  StatTx127Cts;
748         SK_U64                  StatTx255Cts;
749         SK_U64                  StatTx511Cts;
750         SK_U64                  StatTx1023Cts;
751         SK_U64                  StatTxMaxCts;
752         SK_U64                  StatTxSyncCts;
753         SK_U64                  StatTxSyncOctetsCts;
754         SK_U64                  StatRxOkCts;
755         SK_U64                  StatRxOctetsOkCts;
756         SK_U64                  StatRxBroadcastOkCts;
757         SK_U64                  StatRxMulticastOkCts;
758         SK_U64                  StatRxUnicastOkCts;
759         SK_U64                  StatRxLongFramesCts;
760         SK_U64                  StatRxPauseMacCtrlCts;
761         SK_U64                  StatRxMacCtrlCts;
762         SK_U64                  StatRxPauseMacCtrlErrorCts;
763         SK_U64                  StatRxMacCtrlUnknownCts;
764         SK_U64                  StatRxBurstCts;
765         SK_U64                  StatRxMissedCts;
766         SK_U64                  StatRxFramingCts;
767         SK_U64                  StatRxFifoOverflowCts;
768         SK_U64                  StatRxJabberCts;
769         SK_U64                  StatRxCarrierCts;
770         SK_U64                  StatRxIRLengthCts;
771         SK_U64                  StatRxSymbolCts;
772         SK_U64                  StatRxShortsCts;
773         SK_U64                  StatRxRuntCts;
774         SK_U64                  StatRxCextCts;
775         SK_U64                  StatRxTooLongCts;
776         SK_U64                  StatRxFcsCts;
777         SK_U64                  Dummy2; /* StatRxUtilization */
778         SK_U64                  StatRx64Cts;
779         SK_U64                  StatRx127Cts;
780         SK_U64                  StatRx255Cts;
781         SK_U64                  StatRx511Cts;
782         SK_U64                  StatRx1023Cts;
783         SK_U64                  StatRxMaxCts;
784 } SK_PNMI_STAT;
785
786 typedef struct s_PnmiConf {
787         char                    ConfMacCurrentAddr[6];
788         char                    ConfMacFactoryAddr[6];
789         SK_U8                   ConfPMD;
790         SK_U8                   ConfConnector;
791         SK_U8                   ConfLinkCapability;
792         SK_U8                   ConfLinkMode;
793         SK_U8                   ConfLinkModeStatus;
794         SK_U8                   ConfLinkStatus;
795         SK_U8                   ConfFlowCtrlCapability;
796         SK_U8                   ConfFlowCtrlMode;
797         SK_U8                   ConfFlowCtrlStatus;
798         SK_U8                   ConfPhyOperationCapability;
799         SK_U8                   ConfPhyOperationMode;
800         SK_U8                   ConfPhyOperationStatus;
801 } SK_PNMI_CONF;
802
803 typedef struct s_PnmiRlmt {
804         SK_U32                  RlmtIndex;
805         SK_U32                  RlmtStatus;
806         SK_U64                  RlmtTxHelloCts;
807         SK_U64                  RlmtRxHelloCts;
808         SK_U64                  RlmtTxSpHelloReqCts;
809         SK_U64                  RlmtRxSpHelloCts;
810 } SK_PNMI_RLMT;
811
812 typedef struct s_PnmiRlmtMonitor {
813         SK_U32                  RlmtMonitorIndex;
814         char                    RlmtMonitorAddr[6];
815         SK_U64                  RlmtMonitorErrorCts;
816         SK_U64                  RlmtMonitorTimestamp;
817         SK_U8                   RlmtMonitorAdmin;
818 } SK_PNMI_RLMT_MONITOR;
819
820 typedef struct s_PnmiRequestStatus {
821         SK_U32                  ErrorStatus;
822         SK_U32                  ErrorOffset;
823 } SK_PNMI_REQUEST_STATUS;
824
825 typedef struct s_PnmiStrucData {
826         SK_U32                  MgmtDBVersion;
827         SK_PNMI_REQUEST_STATUS  ReturnStatus;
828         SK_U32                  VpdFreeBytes;
829         char                    VpdEntriesList[SK_PNMI_VPD_ENTRIES * SK_PNMI_VPD_KEY_SIZE];
830         SK_U32                  VpdEntriesNumber;
831         SK_PNMI_VPD             Vpd[SK_PNMI_VPD_ENTRIES];
832         SK_U32                  PortNumber;
833         SK_U32                  DeviceType;
834         char                    DriverDescr[SK_PNMI_STRINGLEN1];
835         char                    DriverVersion[SK_PNMI_STRINGLEN2];
836         char                    HwDescr[SK_PNMI_STRINGLEN1];
837         char                    HwVersion[SK_PNMI_STRINGLEN2];
838         SK_U16                  Chipset;
839         SK_U32                  MtuSize;
840         SK_U32                  Action;
841         SK_U32                  TestResult;
842         SK_U8                   BusType;
843         SK_U8                   BusSpeed;
844         SK_U8                   BusWidth;
845         SK_U8                   SensorNumber;
846         SK_PNMI_SENSOR          Sensor[SK_PNMI_SENSOR_ENTRIES];
847         SK_U8                   ChecksumNumber;
848         SK_PNMI_CHECKSUM        Checksum[SK_PNMI_CHECKSUM_ENTRIES];
849         SK_PNMI_STAT            Stat[SK_PNMI_MAC_ENTRIES];
850         SK_PNMI_CONF            Conf[SK_PNMI_MAC_ENTRIES];
851         SK_U8                   RlmtMode;
852         SK_U32                  RlmtPortNumber;
853         SK_U8                   RlmtPortActive;
854         SK_U8                   RlmtPortPreferred;
855         SK_U64                  RlmtChangeCts;
856         SK_U64                  RlmtChangeTime;
857         SK_U64                  RlmtChangeEstimate;
858         SK_U64                  RlmtChangeThreshold;
859         SK_PNMI_RLMT            Rlmt[SK_MAX_MACS];
860         SK_U32                  RlmtMonitorNumber;
861         SK_PNMI_RLMT_MONITOR    RlmtMonitor[SK_PNMI_MONITOR_ENTRIES];
862         SK_U32                  TrapNumber;
863         SK_U8                   Trap[SK_PNMI_TRAP_QUEUE_LEN];
864         SK_U64                  TxSwQueueLen;
865         SK_U64                  TxSwQueueMax;
866         SK_U64                  TxRetryCts;
867         SK_U64                  RxIntrCts;
868         SK_U64                  TxIntrCts;
869         SK_U64                  RxNoBufCts;
870         SK_U64                  TxNoBufCts;
871         SK_U64                  TxUsedDescrNo;
872         SK_U64                  RxDeliveredCts;
873         SK_U64                  RxOctetsDeliveredCts;
874         SK_U64                  RxHwErrorsCts;
875         SK_U64                  TxHwErrorsCts;
876         SK_U64                  InErrorsCts;
877         SK_U64                  OutErrorsCts;
878         SK_U64                  ErrRecoveryCts;
879         SK_U64                  SysUpTime;
880 } SK_PNMI_STRUCT_DATA;
881
882 #define SK_PNMI_STRUCT_SIZE     (sizeof(SK_PNMI_STRUCT_DATA))
883 #define SK_PNMI_MIN_STRUCT_SIZE ((unsigned int)(SK_UPTR)\
884                                  &(((SK_PNMI_STRUCT_DATA *)0)->VpdFreeBytes))
885                                                         /*
886                                                          * ReturnStatus field
887                                                          * must be located
888                                                          * before VpdFreeBytes
889                                                          */
890
891 /*
892  * Various definitions
893  */
894 #define SK_PNMI_MAX_PROTOS              3
895
896 #define SK_PNMI_SCNT_NOT                64
897 #define SK_PNMI_CNT_NO                  67
898
899 /*
900  * Estimate data structure
901  */
902 typedef struct s_PnmiEstimate {
903         unsigned int            EstValueIndex;
904         SK_U64                  EstValue[7];
905         SK_U64                  Estimate;
906         SK_TIMER                EstTimer;
907 } SK_PNMI_ESTIMATE;
908
909
910 /*
911  * PNMI specific adatper context structure
912  */
913 typedef struct s_PnmiPort {
914         SK_U32                  CounterHigh[SK_PNMI_SCNT_NOT];
915         SK_U64                  CounterOffset[SK_PNMI_CNT_NO];
916         SK_U64                  StatSyncCts;
917         SK_U64                  StatSyncOctetsCts;
918         SK_U64                  StatRxLongFrameCts;
919         SK_BOOL                 ActiveFlag;
920         SK_U64                  TxSwQueueLen;
921         SK_U64                  TxSwQueueMax;
922         SK_U64                  TxRetryCts;
923         SK_U64                  RxIntrCts;
924         SK_U64                  TxIntrCts;
925         SK_U64                  RxNoBufCts;
926         SK_U64                  TxNoBufCts;
927         SK_U64                  TxUsedDescrNo;
928         SK_U64                  RxDeliveredCts;
929         SK_U64                  RxOctetsDeliveredCts;
930         SK_U64                  RxHwErrorsCts;
931         SK_U64                  TxHwErrorsCts;
932         SK_U64                  InErrorsCts;
933         SK_U64                  OutErrorsCts;
934         SK_U64                  ErrRecoveryCts;
935 } SK_PNMI_PORT;
936
937
938 typedef struct s_PnmiData {
939         SK_PNMI_PORT            Port[SK_MAX_MACS];
940         SK_U64                  VirtualCounterOffset[SK_PNMI_CNT_NO];
941         SK_U32                  TestResult;
942         char                    HwVersion[10];
943
944         char                    *pDriverDescription;
945         char                    *pDriverVersion;
946
947         char                    TrapBuf[SK_PNMI_TRAP_QUEUE_LEN];
948         unsigned int            TrapBufFree;
949         unsigned int            TrapQueueBeg;
950         unsigned int            TrapQueueEnd;
951         unsigned int            TrapBufPad;
952         unsigned int            TrapUnique;
953
954         int                     MacUpdatedFlag;
955         int                     RlmtUpdatedFlag;
956         int                     SirqUpdatedFlag;
957
958         SK_U64                  RlmtChangeCts;
959         SK_U64                  RlmtChangeTime;
960         SK_PNMI_ESTIMATE        RlmtChangeEstimate;
961         SK_U64                  RlmtChangeThreshold;
962
963         SK_U32                  DeviceType;
964         char                    PciBusSpeed;
965         char                    PciBusWidth;
966         char                    PMD;
967         char                    Connector;
968         SK_U64                  StartUpTime;
969         SK_BOOL                 DualNetActiveFlag;
970 } SK_PNMI;
971
972
973 /*
974  * Function prototypes
975  */
976 extern int SkPnmiInit(SK_AC *pAc, SK_IOC IoC, int level);
977 extern int SkPnmiGetVar(SK_AC *pAc, SK_IOC IoC, SK_U32 Id, void* pBuf,
978         unsigned int* pLen, SK_U32 Instance, SK_U32 NetIndex);
979 extern int SkPnmiPreSetVar(SK_AC *pAc, SK_IOC IoC, SK_U32 Id,
980         void* pBuf, unsigned int *pLen, SK_U32 Instance, SK_U32 NetIndex);
981 extern int SkPnmiSetVar(SK_AC *pAc, SK_IOC IoC, SK_U32 Id, void* pBuf,
982         unsigned int *pLen, SK_U32 Instance, SK_U32 NetIndex);
983 extern int SkPnmiGetStruct(SK_AC *pAc, SK_IOC IoC, void* pBuf,
984         unsigned int *pLen, SK_U32 NetIndex);
985 extern int SkPnmiPreSetStruct(SK_AC *pAc, SK_IOC IoC, void* pBuf,
986         unsigned int *pLen, SK_U32 NetIndex);
987 extern int SkPnmiSetStruct(SK_AC *pAc, SK_IOC IoC, void* pBuf,
988         unsigned int *pLen, SK_U32 NetIndex);
989 extern int SkPnmiEvent(SK_AC *pAc, SK_IOC IoC, SK_U32 Event,
990         SK_EVPARA Param);
991
992 #endif