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