1/***************************************************************************** 2 * 3 * Name: skgepnm2.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: skgepnm2.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.30 2001/02/06 10:03:41 mkunz 48 * - Pnmi V4 dual net support added. Interface functions and macros extended 49 * - Vpd bug fixed 50 * - OID_SKGE_MTU added 51 * 52 * Revision 1.29 2001/01/22 13:41:37 rassmann 53 * Supporting two nets on dual-port adapters. 54 * 55 * Revision 1.28 2000/08/03 15:12:48 rwahl 56 * - Additional comment for MAC statistic data structure. 57 * 58 * Revision 1.27 2000/08/01 16:10:18 rwahl 59 * - Added mac statistic data structure for StatRxLongFrame counter. 60 * 61 * Revision 1.26 2000/03/31 13:51:34 rwahl 62 * Added SK_UPTR cast to offset calculation for PNMI struct fields; 63 * missing cast caused compiler warnings by Win64 compiler. 64 * 65 * Revision 1.25 1999/11/22 13:57:41 cgoos 66 * Changed license header to GPL. 67 * Allowing overwrite for SK_PNMI_STORE/_READ defines. 68 * 69 * Revision 1.24 1999/04/13 15:11:11 mhaveman 70 * Changed copyright. 71 * 72 * Revision 1.23 1999/01/28 15:07:12 mhaveman 73 * Changed default threshold for port switches per hour from 10 74 * to 240 which means 4 switches per minute. This fits better 75 * the granularity of 32 for the port switch estimate 76 * counter. 77 * 78 * Revision 1.22 1999/01/05 12:52:30 mhaveman 79 * Removed macro SK_PNMI_MICRO_SEC. 80 * 81 * Revision 1.21 1999/01/05 12:50:34 mhaveman 82 * Enlarged macro definition SK_PNMI_HUNDREDS_SEC() so that no 64-bit 83 * arithmetic is necessary if SK_TICKS_PER_SEC is 100. 84 * 85 * Revision 1.20 1998/12/09 14:02:53 mhaveman 86 * Defined macro SK_PNMI_DEF_RLMT_CHG_THRES for default port switch 87 * threshold. 88 * 89 * Revision 1.19 1998/12/03 11:28:41 mhaveman 90 * Removed SK_PNMI_CHECKPTR macro. 91 * 92 * Revision 1.18 1998/12/03 11:21:00 mhaveman 93 * -Added pointer check macro SK_PNMI_CHECKPTR 94 * -Added macros SK_PNMI_VPD_ARR_SIZE and SK_PNMI_VPD_STR_SIZE for 95 * VPD key evaluation. 96 * 97 * Revision 1.17 1998/11/20 13:20:33 mhaveman 98 * Fixed bug in SK_PNMI_SET_STAT macro. ErrorStatus was not correctly set. 99 * 100 * Revision 1.16 1998/11/20 08:08:49 mhaveman 101 * Macro SK_PNMI_CHECKFLAGS has got a if clause. 102 * 103 * Revision 1.15 1998/11/03 13:53:40 mhaveman 104 * Fixed alignment problem in macor SK_PNMI_SET_STAT macro. 105 * 106 * Revision 1.14 1998/10/30 15:50:13 mhaveman 107 * Added macro SK_PNMI_MICRO_SEC() 108 * 109 * Revision 1.13 1998/10/30 12:32:20 mhaveman 110 * Added forgotten cast in SK_PNMI_READ_U32 macro. 111 * 112 * Revision 1.12 1998/10/29 15:40:26 mhaveman 113 * -Changed SK_PNMI_TRAP_SENSOR_LEN because SensorDescr has now 114 * variable string length. 115 * -Defined SK_PNMI_CHECKFLAGS macro 116 * 117 * Revision 1.11 1998/10/29 08:53:34 mhaveman 118 * Removed SK_PNMI_RLM_XXX table indexed because these counters need 119 * not been saved over XMAC resets. 120 * 121 * Revision 1.10 1998/10/28 08:48:20 mhaveman 122 * -Added macros for storage according to alignment 123 * -Changed type of Instance to SK_U32 because of VPD 124 * -Removed trap structures. Not needed because of alignment problem 125 * -Changed type of Action form SK_U8 to int 126 * 127 * Revision 1.9 1998/10/21 13:34:45 mhaveman 128 * Shit, mismatched calculation of SK_PNMI_HUNDREDS_SEC. Corrected. 129 * 130 * Revision 1.8 1998/10/21 13:24:58 mhaveman 131 * Changed calculation of hundreds of seconds. 132 * 133 * Revision 1.7 1998/10/20 07:31:41 mhaveman 134 * Made type changes to unsigned int where possible. 135 * 136 * Revision 1.6 1998/09/04 17:04:05 mhaveman 137 * Added Sync counters to offset storage to provided settled values on 138 * port switch. 139 * 140 * Revision 1.5 1998/09/04 12:45:35 mhaveman 141 * Removed dummies for SK_DRIVER_ macros. They should be added by driver 142 * writer in skdrv2nd.h. 143 * 144 * Revision 1.4 1998/09/04 11:59:50 mhaveman 145 * Everything compiles now. Driver Macros for counting still missing. 146 * 147 * Revision 1.3 1998/08/24 12:01:35 mhaveman 148 * Intermediate state. 149 * 150 * Revision 1.2 1998/08/17 07:51:40 mhaveman 151 * Intermediate state. 152 * 153 * Revision 1.1 1998/08/11 09:08:40 mhaveman 154 * Intermediate state. 155 * 156 ****************************************************************************/ 157 158#ifndef _SKGEPNM2_H_ 159#define _SKGEPNM2_H_ 160 161#ifndef FALSE 162#define FALSE 0 163#endif 164 165#ifndef TRUE 166#define TRUE !(FALSE) 167#endif 168 169/* 170 * General definitions 171 */ 172#define SK_PNMI_CHIPSET 1 /* XMAC11800FP */ 173 174#define SK_PNMI_BUS_PCI 1 /* PCI bus*/ 175 176/* 177 * Actions 178 */ 179#define SK_PNMI_ACT_IDLE 1 180#define SK_PNMI_ACT_RESET 2 181#define SK_PNMI_ACT_SELFTEST 3 182#define SK_PNMI_ACT_RESETCNT 4 183 184/* 185 * VPD releated defines 186 */ 187 188#define SK_PNMI_VPD_RW 1 189#define SK_PNMI_VPD_RO 2 190 191#define SK_PNMI_VPD_OK 0 192#define SK_PNMI_VPD_NOTFOUND 1 193#define SK_PNMI_VPD_CUT 2 194#define SK_PNMI_VPD_TIMEOUT 3 195#define SK_PNMI_VPD_FULL 4 196#define SK_PNMI_VPD_NOWRITE 5 197#define SK_PNMI_VPD_FATAL 6 198 199#define SK_PNMI_VPD_IGNORE 0 200#define SK_PNMI_VPD_CREATE 1 201#define SK_PNMI_VPD_DELETE 2 202 203 204/* 205 * RLMT related defines 206 */ 207#define SK_PNMI_DEF_RLMT_CHG_THRES 240 /* 4 changes per minute */ 208 209/* 210 * Internal table definitions 211 */ 212#define SK_PNMI_GET 0 213#define SK_PNMI_PRESET 1 214#define SK_PNMI_SET 2 215 216#define SK_PNMI_RO 0 217#define SK_PNMI_RW 1 218 219typedef struct s_OidTabEntry { 220 SK_U32 Id; 221 SK_U32 InstanceNo; 222 unsigned int StructSize; 223 unsigned int Offset; 224 int Access; 225 int (* Func)(SK_AC *pAc, SK_IOC pIo, int action, 226 SK_U32 Id, char* pBuf, unsigned int* pLen, 227 SK_U32 Instance, unsigned int TableIndex, 228 SK_U32 NetNumber); 229 SK_U16 Param; 230} SK_PNMI_TAB_ENTRY; 231 232 233/* 234 * Trap lengths 235 */ 236#define SK_PNMI_TRAP_SIMPLE_LEN 17 237#define SK_PNMI_TRAP_SENSOR_LEN_BASE 46 238#define SK_PNMI_TRAP_RLMT_CHANGE_LEN 23 239#define SK_PNMI_TRAP_RLMT_PORT_LEN 23 240 241 242/* 243 * MAC statistic data structures 244 * Only for the first 64 counters: the number relates to the bit in the 245 * XMAC overflow status register 246 */ 247#define SK_PNMI_HTX 0 248#define SK_PNMI_HTX_OCTET 1 249#define SK_PNMI_HTX_OCTETHIGH 1 250#define SK_PNMI_HTX_OCTETLOW 2 251#define SK_PNMI_HTX_BROADCAST 3 252#define SK_PNMI_HTX_MULTICAST 4 253#define SK_PNMI_HTX_UNICAST 5 254#define SK_PNMI_HTX_LONGFRAMES 6 255#define SK_PNMI_HTX_BURST 7 256#define SK_PNMI_HTX_PMACC 8 257#define SK_PNMI_HTX_MACC 9 258#define SK_PNMI_HTX_SINGLE_COL 10 259#define SK_PNMI_HTX_MULTI_COL 11 260#define SK_PNMI_HTX_EXCESS_COL 12 261#define SK_PNMI_HTX_LATE_COL 13 262#define SK_PNMI_HTX_DEFFERAL 14 263#define SK_PNMI_HTX_EXCESS_DEF 15 264#define SK_PNMI_HTX_UNDERRUN 16 265#define SK_PNMI_HTX_CARRIER 17 266#define SK_PNMI_HTX_UTILUNDER 18 267#define SK_PNMI_HTX_UTILOVER 19 268#define SK_PNMI_HTX_64 20 269#define SK_PNMI_HTX_127 21 270#define SK_PNMI_HTX_255 22 271#define SK_PNMI_HTX_511 23 272#define SK_PNMI_HTX_1023 24 273#define SK_PNMI_HTX_MAX 25 274#define SK_PNMI_HTX_RESERVED26 26 275#define SK_PNMI_HTX_RESERVED27 27 276#define SK_PNMI_HTX_RESERVED28 28 277#define SK_PNMI_HTX_RESERVED29 29 278#define SK_PNMI_HTX_RESERVED30 30 279#define SK_PNMI_HTX_RESERVED31 31 280#define SK_PNMI_HRX (32 + 0) 281#define SK_PNMI_HRX_OCTET (32 + 1) 282#define SK_PNMI_HRX_OCTETHIGH (32 + 1) 283#define SK_PNMI_HRX_OCTETLOW (32 + 2) 284#define SK_PNMI_HRX_BROADCAST (32 + 3) 285#define SK_PNMI_HRX_MULTICAST (32 + 4) 286#define SK_PNMI_HRX_UNICAST (32 + 5) 287#define SK_PNMI_HRX_PMACC (32 + 6) 288#define SK_PNMI_HRX_MACC (32 + 7) 289#define SK_PNMI_HRX_PMACC_ERR (32 + 8) 290#define SK_PNMI_HRX_MACC_UNKWN (32 + 9) 291#define SK_PNMI_HRX_BURST (32 + 10) 292#define SK_PNMI_HRX_MISSED (32 + 11) 293#define SK_PNMI_HRX_FRAMING (32 + 12) 294#define SK_PNMI_HRX_OVERFLOW (32 + 13) 295#define SK_PNMI_HRX_JABBER (32 + 14) 296#define SK_PNMI_HRX_CARRIER (32 + 15) 297#define SK_PNMI_HRX_IRLENGTH (32 + 16) 298#define SK_PNMI_HRX_SYMBOL (32 + 17) 299#define SK_PNMI_HRX_SHORTS (32 + 18) 300#define SK_PNMI_HRX_RUNT (32 + 19) 301#define SK_PNMI_HRX_TOO_LONG (32 + 20) 302#define SK_PNMI_HRX_FCS (32 + 21) 303#define SK_PNMI_HRX_RESERVED22 (32 + 22) 304#define SK_PNMI_HRX_CEXT (32 + 23) 305#define SK_PNMI_HRX_UTILUNDER (32 + 24) 306#define SK_PNMI_HRX_UTILOVER (32 + 25) 307#define SK_PNMI_HRX_64 (32 + 26) 308#define SK_PNMI_HRX_127 (32 + 27) 309#define SK_PNMI_HRX_255 (32 + 28) 310#define SK_PNMI_HRX_511 (32 + 29) 311#define SK_PNMI_HRX_1023 (32 + 30) 312#define SK_PNMI_HRX_MAX (32 + 31) 313 314#define SK_PNMI_HTX_SYNC 64 315#define SK_PNMI_HTX_SYNC_OCTET 65 316 317#define SK_PNMI_HRX_LONGFRAMES 66 318 319#define SK_PNMI_MAX_IDX (SK_PNMI_CNT_NO) 320 321/* 322 * MAC specific data 323 */ 324typedef struct s_PnmiStatAddr { 325 SK_BOOL GetOffset; /* TRUE: Call GetStatVal function */ 326 SK_U16 Param; /* XMAC register containing value */ 327} SK_PNMI_STATADDR; 328 329 330/* 331 * SK_PNMI_STRUCT_DATA copy offset evaluation macros 332 */ 333#define SK_PNMI_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_STRUCT_DATA *)0)->e)) 334#define SK_PNMI_MAI_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_STRUCT_DATA *)0)->e)) 335#define SK_PNMI_VPD_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_VPD *)0)->e)) 336#define SK_PNMI_SEN_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_SENSOR *)0)->e)) 337#define SK_PNMI_CHK_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_CHECKSUM *)0)->e)) 338#define SK_PNMI_STA_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_STAT *)0)->e)) 339#define SK_PNMI_CNF_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_CONF *)0)->e)) 340#define SK_PNMI_RLM_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_RLMT *)0)->e)) 341#define SK_PNMI_MON_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_RLMT_MONITOR *)0)->e)) 342#define SK_PNMI_TRP_OFF(e) ((SK_U32)(SK_UPTR)&(((SK_PNMI_TRAP *)0)->e)) 343 344#define SK_PNMI_SET_STAT(b,s,o) {SK_U32 Val32; char *pVal; \ 345 Val32 = (s); \ 346 pVal = (char *)(b) + ((SK_U32)(SK_UPTR) \ 347 &(((SK_PNMI_STRUCT_DATA *)0)-> \ 348 ReturnStatus.ErrorStatus)); \ 349 SK_PNMI_STORE_U32(pVal, Val32); \ 350 Val32 = (o); \ 351 pVal = (char *)(b) + ((SK_U32)(SK_UPTR) \ 352 &(((SK_PNMI_STRUCT_DATA *)0)-> \ 353 ReturnStatus.ErrorOffset)); \ 354 SK_PNMI_STORE_U32(pVal, Val32);} 355 356/* 357 * Time macros 358 */ 359#if SK_TICKS_PER_SEC == 100 360#define SK_PNMI_HUNDREDS_SEC(t) (t) 361#else 362#define SK_PNMI_HUNDREDS_SEC(t) (((t) * 100) / (SK_TICKS_PER_SEC)) 363#endif 364 365/* 366 * Macros to work around alignment problems 367 */ 368#ifndef SK_PNMI_STORE_U16 369#define SK_PNMI_STORE_U16(p,v) {*(char *)(p) = *((char *)&(v)); \ 370 *((char *)(p) + 1) = \ 371 *(((char *)&(v)) + 1);} 372#endif 373 374#ifndef SK_PNMI_STORE_U32 375#define SK_PNMI_STORE_U32(p,v) {*(char *)(p) = *((char *)&(v)); \ 376 *((char *)(p) + 1) = \ 377 *(((char *)&(v)) + 1); \ 378 *((char *)(p) + 2) = \ 379 *(((char *)&(v)) + 2); \ 380 *((char *)(p) + 3) = \ 381 *(((char *)&(v)) + 3);} 382#endif 383 384#ifndef SK_PNMI_STORE_U64 385#define SK_PNMI_STORE_U64(p,v) {*(char *)(p) = *((char *)&(v)); \ 386 *((char *)(p) + 1) = \ 387 *(((char *)&(v)) + 1); \ 388 *((char *)(p) + 2) = \ 389 *(((char *)&(v)) + 2); \ 390 *((char *)(p) + 3) = \ 391 *(((char *)&(v)) + 3); \ 392 *((char *)(p) + 4) = \ 393 *(((char *)&(v)) + 4); \ 394 *((char *)(p) + 5) = \ 395 *(((char *)&(v)) + 5); \ 396 *((char *)(p) + 6) = \ 397 *(((char *)&(v)) + 6); \ 398 *((char *)(p) + 7) = \ 399 *(((char *)&(v)) + 7);} 400#endif 401 402#ifndef SK_PNMI_READ_U16 403#define SK_PNMI_READ_U16(p,v) {*((char *)&(v)) = *(char *)(p); \ 404 *(((char *)&(v)) + 1) = \ 405 *((char *)(p) + 1);} 406#endif 407 408#ifndef SK_PNMI_READ_U32 409#define SK_PNMI_READ_U32(p,v) {*((char *)&(v)) = *(char *)(p); \ 410 *(((char *)&(v)) + 1) = \ 411 *((char *)(p) + 1); \ 412 *(((char *)&(v)) + 2) = \ 413 *((char *)(p) + 2); \ 414 *(((char *)&(v)) + 3) = \ 415 *((char *)(p) + 3);} 416#endif 417 418#ifndef SK_PNMI_READ_U64 419#define SK_PNMI_READ_U64(p,v) {*((char *)&(v)) = *(char *)(p); \ 420 *(((char *)&(v)) + 1) = \ 421 *((char *)(p) + 1); \ 422 *(((char *)&(v)) + 2) = \ 423 *((char *)(p) + 2); \ 424 *(((char *)&(v)) + 3) = \ 425 *((char *)(p) + 3); \ 426 *(((char *)&(v)) + 4) = \ 427 *((char *)(p) + 4); \ 428 *(((char *)&(v)) + 5) = \ 429 *((char *)(p) + 5); \ 430 *(((char *)&(v)) + 6) = \ 431 *((char *)(p) + 6); \ 432 *(((char *)&(v)) + 7) = \ 433 *((char *)(p) + 7);} 434#endif 435 436/* 437 * Macros for Debug 438 */ 439#ifdef DEBUG 440 441#define SK_PNMI_CHECKFLAGS(vSt) {if (pAC->Pnmi.MacUpdatedFlag > 0 || \ 442 pAC->Pnmi.RlmtUpdatedFlag > 0 || \ 443 pAC->Pnmi.SirqUpdatedFlag > 0) { \ 444 SK_DBG_MSG(pAC, \ 445 SK_DBGMOD_PNMI, \ 446 SK_DBGCAT_CTRL, \ 447 ("PNMI: ERR: %s MacUFlag=%d, RlmtUFlag=%d, SirqUFlag=%d\n", \ 448 vSt, \ 449 pAC->Pnmi.MacUpdatedFlag, \ 450 pAC->Pnmi.RlmtUpdatedFlag, \ 451 pAC->Pnmi.SirqUpdatedFlag))}} 452 453#else /* !DEBUG */ 454 455#define SK_PNMI_CHECKFLAGS(vSt) /* Nothing */ 456 457#endif /* !DEBUG */ 458 459#endif /* _SKGEPNM2_H_ */ 460