1 /** @file wl_mib.h 2 * 3 * @brief This file contains the MIB structure definitions based on IEEE 802.11 specification. 4 * 5 * Copyright (C) 2014-2017, Marvell International Ltd. 6 * 7 * This software file (the "File") is distributed by Marvell International 8 * Ltd. under the terms of the GNU General Public License Version 2, June 1991 9 * (the "License"). You may use, redistribute and/or modify this File in 10 * accordance with the terms and conditions of the License, a copy of which 11 * is available by writing to the Free Software Foundation, Inc., 12 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the 13 * worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. 14 * 15 * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE 16 * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE 17 * ARE EXPRESSLY DISCLAIMED. The License provides additional details about 18 * this warranty disclaimer. 19 */ 20 21 /****************************************************** 22 Change log: 23 03/07/2014: Initial version 24 ******************************************************/ 25 #if !defined(WL_MIB_H__) 26 27 #define WL_MIB_H__ 28 #include "wl_mib_rom.h" 29 30 /*============================================================================= */ 31 /* Management Information Base STRUCTURES (IEEE 802.11) */ 32 /*============================================================================= */ 33 34 /*-----------------------------*/ 35 /* Station Configuration Table */ 36 /*-----------------------------*/ 37 38 typedef struct MIB_StaCfg_s 39 { 40 UINT8 CfPeriod; /* 0 to 255 */ 41 UINT16 CfpMax; /* 0 to 65535 */ 42 UINT8 PwrMgtMode; /* PwrMgmtMode_e values */ 43 UINT8 OpRateSet[16]; /* 16 byte array is sufficient for 44 14 rate */ 45 #ifdef DOT11H 46 Boolean dot11SpectrumManagementRequired; 47 #endif 48 Boolean dot11WWSenabled; 49 } MIB_STA_CFG; 50 51 /*------------------------*/ 52 /* WEP Key Mappings Table */ 53 /*------------------------*/ 54 55 /* This struct is used in ROM and it should not be changed at all */ 56 typedef struct MIB_WepKeyMappings_s { 57 UINT32 WepKeyMappingIdx; 58 IEEEtypes_MacAddr_t WepKeyMappingAddr; 59 UINT8 WepKeyMappingWepOn; /* SNMP_Boolean_e values */ 60 UINT8 WepKeyMappingVal[WEP_KEY_USER_INPUT]; /* 5 byte string */ 61 UINT8 WepKeyMappingStatus; /* SNMP_Rowstatus_e values */ 62 } MIB_WEP_KEY_MAPPINGS; 63 64 /*---------------*/ 65 /* Privacy Table */ 66 /*---------------*/ 67 68 typedef struct MIB_PrivacyTable_s { 69 UINT8 PrivInvoked; /* SNMP_Boolean_e values */ 70 UINT8 WepDefaultKeyId; /* 0 to 3 */ 71 UINT32 WepKeyMappingLen; /* 10 to 4294967295 */ 72 UINT8 ExcludeUnencrypt; /* SNMP_Boolean_e values */ 73 UINT32 WepIcvErrCnt; 74 UINT32 WepExcludedCnt; 75 UINT8 RSNEnabled; /* SNMP_Boolean_e values */ 76 } MIB_PRIVACY_TABLE; 77 78 /*============================================================================= */ 79 /* MAC ATTRIBUTES */ 80 /*============================================================================= */ 81 82 /*---------------------*/ 83 /* MAC Operation Table */ 84 /*---------------------*/ 85 86 typedef struct MIB_OpData_s 87 { 88 IEEEtypes_MacAddr_t StaMacAddr; 89 UINT16 RtsThresh; /* 0 to 2347 */ 90 UINT8 ShortRetryLim; /* 1 to 255 */ 91 UINT8 LongRetryLim; /* 1 to 255 */ 92 UINT16 FragThresh; /* 256 to 2346 */ 93 UINT32 MaxTxMsduLife; /* 1 to 4294967295 */ 94 UINT32 MaxRxLife; /* 1 to 4294967295 */ 95 #ifdef IN_USE 96 UINT8 ManufId[128]; /* 128 byte string */ 97 UINT8 ProdId[128]; /* 128 byte string */ 98 #endif 99 } MIB_OP_DATA; 100 101 /*----------------*/ 102 /* Counters Table */ 103 /*----------------*/ 104 105 typedef struct MIB_Counters_s { 106 UINT32 RxFrmCnt; 107 UINT32 MulticastTxFrmCnt; 108 UINT32 FailedCnt; 109 UINT32 RetryCnt; 110 UINT32 MultRetryCnt; 111 UINT32 FrmDupCnt; 112 UINT32 RtsSuccessCnt; 113 UINT32 RtsFailCnt; 114 UINT32 AckFailCnt; 115 UINT32 RxFragCnt; 116 UINT32 MulticastRxFrmCnt; 117 UINT32 FcsErrCnt; 118 UINT32 TxFrmCnt; 119 UINT32 WepUndecryptCnt; 120 } MIB_COUNTERS; 121 122 /*-----------------------*/ 123 /* Group Addresses Table */ 124 /*-----------------------*/ 125 126 typedef struct MIB_GroupAddr_s { 127 UINT32 GroupAddrIdx; 128 IEEEtypes_MacAddr_t Addr; 129 UINT8 GroupAddrStatus; /* SNMP_Rowstatus_e values */ 130 } MIB_GROUP_ADDR; 131 132 /*----------------------------*/ 133 /* Resource Information Table */ 134 /*----------------------------*/ 135 136 typedef struct MIB_RsrcInfo_s { 137 UINT8 ManufOui[3]; /* 3 byte string */ 138 UINT8 ManufName[128]; /* 128 byte string */ 139 UINT8 ManufProdName[128]; /* 128 byte string */ 140 UINT8 ManufProdVer[128]; /* 128 byte string */ 141 } MIB_RESOURCE_INFO; 142 143 /*============================================================================= */ 144 /* PHY ATTRIBUTES */ 145 /*============================================================================= */ 146 147 /*---------------------*/ 148 /* PHY Operation Table */ 149 /*---------------------*/ 150 typedef struct MIB_PhyOpTable_s { 151 UINT8 PhyType; /* SNMP_PhyType_e values */ 152 UINT32 CurrRegDomain; 153 UINT8 TempType; /* SNMP_TempType_e values */ 154 } MIB_PHY_OP_TABLE; 155 156 /*-------------------*/ 157 158 /* PHY Antenna Table */ 159 160 /*-------------------*/ 161 162 typedef struct MIB_PhyAntTable_s { 163 UINT8 CurrTxAnt; /* 1 to 255 */ 164 UINT8 DivSupport; /* SNMP_DivSupp_e values */ 165 UINT8 CurrRxAnt; /* 1 to 255 */ 166 } MIB_PHY_ANT_TABLE; 167 168 typedef struct MIB_PhyAntSelect_s { 169 UINT8 SelectRxAnt; /* 0 to 1 */ 170 UINT8 SelectTxAnt; /* 0 to 1 */ 171 UINT8 DiversityRxAnt; /* Boolean */ 172 UINT8 DiversityTxAnt; /* Boolean */ 173 } MIB_PHY_ANT_SELECT; 174 175 /*--------------------------*/ 176 /* PHY Transmit Power Table */ 177 /*--------------------------*/ 178 179 typedef struct MIB_PhyTxPwrTable_s { 180 UINT8 NumSuppPwrLevels; /* 1 to 8 */ 181 UINT16 TxPwrLevel1; /* 0 to 10000 */ 182 UINT16 TxPwrLevel2; /* 0 to 10000 */ 183 UINT16 TxPwrLevel3; /* 0 to 10000 */ 184 UINT16 TxPwrLevel4; /* 0 to 10000 */ 185 UINT16 TxPwrLevel5; /* 0 to 10000 */ 186 UINT16 TxPwrLevel6; /* 0 to 10000 */ 187 UINT16 TxPwrLevel7; /* 0 to 10000 */ 188 UINT16 TxPwrLevel8; /* 0 to 10000 */ 189 UINT8 CurrTxPwrLevel; /* 1 to 8 */ 190 } MIB_PHY_TX_POWER_TABLE; 191 192 /*---------------------------------------------*/ 193 194 /* PHY Frequency Hopping Spread Spectrum Table */ 195 196 /*---------------------------------------------*/ 197 198 typedef struct MIB_PhyFHSSTable_s { 199 200 UINT8 HopTime; /* 224? */ 201 UINT8 CurrChanNum; /* 0 to 99 */ 202 UINT16 MaxDwellTime; /* 0 to 65535 */ 203 UINT16 CurrDwellTime; /* 0 to 65535 */ 204 UINT16 CurrSet; /* 0 to 255 */ 205 UINT16 CurrPattern; /* 0 to 255 */ 206 UINT16 CurrIdx; /* 0 to 255 */ 207 208 } MIB_PHY_FHSS_TABLE; 209 210 /*-------------------------------------------*/ 211 212 /* PHY Direct Sequence Spread Spectrum Table */ 213 214 /*-------------------------------------------*/ 215 216 typedef enum MIB_CCAMode_s { 217 ENERGY_DETECT_ONLY = 1, 218 CARRIER_SENSE_ONLY = 2, 219 CARRIER_SENSE_AND_ENERGY_DETECT = 4 220 } MIB_CCA_MODE; 221 222 typedef struct MIB_PhyDSSSTable_s { 223 UINT8 CurrChan; /* 0 to 14 */ 224 UINT8 CcaModeSupp; /* 1 to 7 */ 225 UINT16 CurrCcaMode; /* MIB_CCA_MODE values only */ 226 UINT32 EdThresh; 227 } MIB_PHY_DSSS_TABLE; 228 229 /*--------------*/ 230 231 /* PHY IR Table */ 232 233 /*--------------*/ 234 235 typedef struct MIB_PhyIRTable_s { 236 UINT32 CcaWatchDogTmrMax; 237 UINT32 CcaWatchDogCntMax; 238 UINT32 CcaWatchDogTmrMin; 239 UINT32 CcaWatchDogCntMin; 240 } MIB_PHY_IR_TABLE; 241 242 /*----------------------------------------*/ 243 244 /* PHY Regulatory Domains Supported Table */ 245 246 /*----------------------------------------*/ 247 248 typedef struct MIB_PhyRegDomainsSupp_s { 249 UINT32 RegDomainsSuppIdx; 250 UINT8 RegDomainsSuppVal; /*SNMP_RegDomainsSuppVal_e values */ 251 } MIB_PHY_REG_DOMAINS_SUPPPORTED; 252 253 /*-------------------------*/ 254 255 /* PHY Antennas List Table */ 256 257 /*-------------------------*/ 258 259 typedef struct MIB_PhyAntList_s { 260 UINT8 AntListIdx; 261 UINT8 SuppTxAnt; /*SNMP_Boolean_e values */ 262 UINT8 SuppRxAnt; /*SNMP_Boolean_e values */ 263 UINT8 RxDiv; /*SNMP_Boolean_e values */ 264 } MIB_PHY_ANT_LIST; 265 266 /*----------------------------------------*/ 267 268 /* PHY Supported Receive Data Rates Table */ 269 270 /*----------------------------------------*/ 271 272 typedef struct MIB_PhySuppDataRatesRx_s { 273 UINT8 SuppDataRatesRxIdx; /*1 to 8 */ 274 UINT8 SuppDataRatesRxVal; /*2 to 127 */ 275 } MIB_PHY_SUPP_DATA_RATES_RX; 276 277 typedef struct MIB_DHCP_s { 278 UINT32 IPAddr; 279 UINT32 SubnetMask; 280 UINT32 GwyAddr; 281 282 #ifdef GATEWAY 283 UINT32 PrimaryDNS; 284 UINT32 SecondaryDNS; 285 #endif 286 287 } MIB_DHCP; 288 289 #if defined(GATEWAY) 290 291 typedef struct MIB_IP_LAN_s { 292 UINT32 IPAddr; 293 UINT32 SubnetMask; 294 } MIB_IP_LAN; 295 296 #endif 297 298 /* Added for WB31 */ 299 300 typedef struct _MIB_WB { 301 UINT8 devName[16]; // Must be a string: 302 // 15 Max characters 303 UINT8 cloneMacAddr[6]; // cloned MAC Address 304 UINT8 opMode; // 0 for infrastructure, 305 // 1 for ad-hoc 306 UINT8 macCloneEnable; // boolean 307 } MIB_WB; 308 309 /* Added for WB31 end */ 310 311 /*---------------------*/ 312 313 /* RSN Config Table */ 314 315 /*---------------------*/ 316 317 typedef struct MIB_RSNConfig_s { 318 UINT32 Index; 319 UINT32 Version; 320 UINT32 PairwiseKeysSupported; 321 UINT8 MulticastCipher[4]; 322 UINT8 GroupRekeyMethod; 323 UINT32 GroupRekeyTime; 324 UINT32 GroupRekeyPackets; 325 UINT8 GroupRekeyStrict; 326 UINT8 PSKValue[40]; 327 UINT8 PSKPassPhrase[64]; 328 UINT8 TSNEnabled; 329 UINT32 GroupMasterRekeyTime; 330 UINT32 GroupUpdateTimeOut; 331 UINT32 GroupUpdateCount; 332 UINT32 PairwiseUpdateTimeOut; 333 UINT32 PairwiseUpdateCount; 334 } MIB_RSNCONFIG; 335 336 /*---------------------*/ 337 338 /* RSN Unicast Cipher Suites Config Table */ 339 340 /*---------------------*/ 341 342 typedef struct MIB_RSNConfigUnicastCiphers_s { 343 UINT32 Index; 344 UINT8 UnicastCipher[4]; 345 UINT8 Enabled; 346 } MIB_RSNCONFIG_UNICAST_CIPHERS; 347 348 /*---------------------*/ 349 350 /* RSN Authentication Suites Config Table */ 351 352 /*---------------------*/ 353 354 typedef struct MIB_RSNConfigAuthSuites_s { 355 UINT32 Index; 356 UINT8 AuthSuites[4]; 357 UINT8 Enabled; 358 } MIB_RSNCONFIG_AUTH_SUITES; 359 360 typedef struct Mrvl_MIB_RSN_GrpKey_s { 361 UINT8 GrpMasterKey[32]; 362 UINT8 EncryptKey[16]; 363 UINT32 TxMICKey[2]; 364 UINT32 RxMICKey[2]; 365 UINT32 g_IV32; 366 UINT16 g_IV16; 367 UINT16 g_Phase1Key[5]; 368 UINT8 g_KeyIndex; 369 } MRVL_MIB_RSN_GRP_KEY; 370 371 #ifdef MIB_STATS 372 373 typedef struct Mrvl_MIB_StatsDetails { 374 /* WARNING: Do not change the order of variables in this structure */ 375 UINT32 TKIPLocalMICFailures; /* OID: 0x0b -> 0 */ 376 UINT32 CCMPDecryptErrors; /* OID: 0x0c -> 1 */ 377 UINT32 WEPUndecryptableCount; /* OID: 0x0d -> 2 */ 378 UINT32 WEPICVErrorCount; /* OID: 0x0e -> 3 */ 379 UINT32 DecryptFailureCount; /* OID: 0x0f -> 4 */ 380 UINT32 failed; /* OID: 0x12 -> 5 */ 381 UINT32 retry; /* OID: 0x13 -> 6 */ 382 UINT32 multiretry; /* OID: 0x14 -> 7 */ 383 UINT32 framedup; /* OID: 0x15 -> 8 */ 384 UINT32 rtssuccess; /* OID: 0x16 -> 9 */ 385 UINT32 rtsfailure; /* OID: 0x17 -> 10 */ 386 UINT32 ackfailure; /* OID: 0x18 -> 11 */ 387 UINT32 rxfrag; /* OID: 0x19 -> 12 */ 388 UINT32 mcastrxframe; /* OID: 0x1a -> 13 */ 389 UINT32 fcserror; /* OID: 0x1b -> 14 */ 390 UINT32 txframe; /* OID: 0x1c -> 15 */ 391 UINT32 rsntkipcminvoked; /* OID: 0x1d -> 16 */ 392 UINT32 rsn4wayhandshakefailure; /* OID: 0x1e -> 17 */ 393 UINT32 mcasttxframe; /* OID: 0x1f -> 18 */ 394 UINT32 TKIPICVErrors; /* Not in the OID list */ 395 UINT32 TKIPReplays; /* Not in the OID list */ 396 UINT32 CCMPReplays; /* Not in the OID list */ 397 UINT32 CMACICVErrors; /* Not in the OID list */ 398 UINT32 CMACReplays; /* Not in the OID list */ 399 UINT32 WEPFragError; /* Not in the OID list */ 400 UINT32 DecryptSuccessCount; /* Not in the OID list */ 401 UINT32 wepicverrCnt[4]; /* Not in the OID list */ 402 403 /* EAPoL Tx Stats */ 404 UINT16 eapolSentTotalCnt; 405 UINT16 eapolSentFrmFwCnt; 406 UINT16 eapolSentSuccessCnt; 407 UINT16 eapolSentFailCnt; 408 409 /* EAPoL Rx Stats */ 410 UINT16 eapolRxTotalCnt; 411 UINT16 eapolRxForESUPPCnt; 412 413 /* Key Stats */ 414 UINT16 PTKRecvdTotalCnt; 415 UINT16 PTKSentFrmESUPPCnt; 416 417 UINT16 GTKRecvdTotalCnt; 418 UINT16 GTKSentFrmESUPPCnt; 419 } MRVL_MIB_STATSDETAILS; 420 421 #define NUM_OF_STATS_OIDS (19) 422 423 #define INC_MIB_STAT(x, a) if (x && x->pMibStats) { x->pMibStats->data.mib.a++; } 424 #define INC_MIB_STAT2(x, a, b) if (x && x->pMibStats) { x->pMibStats->data.mib.a++; x->pMibStats->data.mib.b++;} 425 #define INC_MIB_STAT3(x, a, b, c) if (x && x->pMibStats) { x->pMibStats->data.mib.a++; x->pMibStats->data.mib.b++; x->pMibStats->data.mib.c++;} 426 #define CLR_MIB_STAT(x, a) if (x && x->pMibStats) { x->pMibStats->data.mib.a = 0; } 427 428 typedef struct Mrvl_MIB_Stats { 429 union { 430 MRVL_MIB_STATSDETAILS mib; 431 UINT32 mib_stats[NUM_OF_STATS_OIDS]; 432 } data; 433 } MRVL_MIB_STATS; 434 #endif 435 436 typedef struct MIB_BURST_MODE { 437 UINT8 mib_burstmode; 438 UINT32 mib_burstrate; 439 } MIB_BURST_MODE; 440 441 #ifdef BRIDGE_STP 442 443 typedef struct mib_dot1dPortEntry_s { 444 UINT8 mib_dot1dStpPortPriority; /* (0..255) */ 445 UINT8 mib_dot1dStpPortEnable; /*1: enable; 2: disable */ 446 UINT16 mib_dot1dStpPortPathCost; /* (1..65535) */ 447 } mib_dot1dPortEntry_t; 448 449 typedef struct mib_dot1dStp_s { 450 UINT8 mib_dot1dStpPortPriority; /* (0..255) */ 451 UINT8 mib_dot1dStpPortEnable; /*1: enable; 2: disable */ 452 UINT16 mib_dot1dStpPortPathCost; /* (1..65535) */ 453 UINT32 mib_dot1dTpAgingTime; /* (10..1000000) */ 454 UINT16 mib_dot1dStpPriority; 455 UINT16 mib_dot1dStpBridgeMaxAge; 456 UINT16 mib_dot1dStpBridgeHelloTime; 457 UINT16 mib_dot1dStpBridgeForwardDelay; 458 } mib_dot1dStp_t; 459 460 typedef struct mib_priv_dot1dStp_s { 461 UINT8 mib_priv_dot1dStpEnable; /* 1 or 0 */ 462 } mib_priv_dot1dStp_t; 463 464 #endif 465 466 typedef struct MIB_802DOT11_s { 467 468 /*-----------------------------------------*/ 469 470 /* Station Management Attributes */ 471 472 /*-----------------------------------------*/ 473 474 MIB_STA_CFG StationConfig; /* station configuration table */ 475 476 MIB_WEP_DEFAULT_KEYS WepDefaultKeys[4]; /* wep default keys table */ 477 478 MIB_WEP_KEY_MAPPINGS WepKeyMappings; /* wep key mappings table */ 479 480 MIB_PRIVACY_TABLE Privacy; /* privacy table */ 481 482 /* SMT Notification Objects */ 483 484 #ifdef AP_SW 485 486 MIB_DISASSOC_NOT NoteDisassoc; /* disassociate notification */ 487 488 MIB_DEAUTH_NOT NoteDeauth; /* deauthentication notification */ 489 490 MIB_AUTH_FAIL_NOT NoteAuthFail; /* authentication fail notification */ 491 492 #endif 493 494 /*-----------------------------------------*/ 495 496 /* MAC Attributes */ 497 498 /*-----------------------------------------*/ 499 500 MIB_OP_DATA OperationTable; 501 502 #ifdef WMM_IMPLEMENTED 503 MIB_EDCA_CONFIG EdcaConfigTable[WMM_MAX_TIDS]; 504 #endif 505 506 #ifdef AP_SW 507 508 MIB_COUNTERS CountersTable; 509 510 MIB_GROUP_ADDR GroupAddrTable; 511 512 /*-----------------------------------------*/ 513 514 /* Resource Type */ 515 516 /*-----------------------------------------*/ 517 518 MIB_RESOURCE_INFO ResourceInfo; 519 520 /*-----------------------------------------*/ 521 522 /* PHY Attributes */ 523 524 /*-----------------------------------------*/ 525 526 MIB_PHY_OP_TABLE PhyOpTable; 527 528 MIB_PHY_TX_POWER_TABLE PhyPowerTable; 529 530 MIB_PHY_FHSS_TABLE PhyFHSSTable; 531 532 MIB_PHY_IR_TABLE PhyIRTable; 533 534 MIB_PHY_REG_DOMAINS_SUPPPORTED PhyRegDomainsSupp; 535 536 MIB_PHY_ANT_LIST AntennasListTable; 537 538 #endif 539 540 MIB_PHY_ANT_TABLE PhyAntTable; 541 542 MIB_PHY_DSSS_TABLE PhyDSSSTable; 543 544 MIB_PHY_SUPP_DATA_RATES_TX SuppDataRatesTx[IEEEtypes_MAX_DATA_RATES_G]; 545 546 MIB_PHY_SUPP_DATA_RATES_RX SuppDataRatesRx; 547 548 #if defined(AP_SW) 549 MIB_RSNCONFIG RSNConfig; 550 #endif 551 552 //MIB_RSNCONFIG_UNICAST_CIPHERS UnicastCiphers; 553 554 //MIB_RSNCONFIG_AUTH_SUITES RSNConfigAuthSuites; 555 556 #ifdef AP_WPA2 557 558 MIB_RSNCONFIGWPA2 RSNConfigWPA2; 559 560 MIB_RSNCONFIGWPA2_UNICAST_CIPHERS WPA2UnicastCiphers; 561 562 MIB_RSNCONFIGWPA2_UNICAST_CIPHERS WPA2UnicastCiphers2; 563 564 MIB_RSNCONFIGWPA2_AUTH_SUITES WPA2AuthSuites; 565 566 #endif 567 568 #ifdef BURST_MODE 569 570 MIB_BURST_MODE BurstMode; 571 572 #endif 573 574 MIB_PHY_ANT_SELECT PhyAntSelect; 575 576 #ifdef WEP_RSN_STATS_MIB 577 MIB_RSNSTATS RSNStats; 578 #endif 579 580 } MIB_802DOT11; 581 582 extern BOOLEAN mib_InitSta(MIB_802DOT11 *mib); 583 584 extern BOOLEAN mib_InitAp(MIB_802DOT11 *mib); 585 586 #endif /* _WL_MIB_H_ */ 587