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