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