1 /**************************************************************************** 2 **+-----------------------------------------------------------------------+** 3 **| |** 4 **| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved. |** 5 **| All rights reserved. |** 6 **| |** 7 **| Redistribution and use in source and binary forms, with or without |** 8 **| modification, are permitted provided that the following conditions |** 9 **| are met: |** 10 **| |** 11 **| * Redistributions of source code must retain the above copyright |** 12 **| notice, this list of conditions and the following disclaimer. |** 13 **| * Redistributions in binary form must reproduce the above copyright |** 14 **| notice, this list of conditions and the following disclaimer in |** 15 **| the documentation and/or other materials provided with the |** 16 **| distribution. |** 17 **| * Neither the name Texas Instruments nor the names of its |** 18 **| contributors may be used to endorse or promote products derived |** 19 **| from this software without specific prior written permission. |** 20 **| |** 21 **| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |** 22 **| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |** 23 **| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |** 24 **| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |** 25 **| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |** 26 **| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |** 27 **| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |** 28 **| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |** 29 **| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |** 30 **| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |** 31 **| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |** 32 **| |** 33 **+-----------------------------------------------------------------------+** 34 ****************************************************************************/ 35 36 /** \file public_infoele.h 37 * \brief Contains information element defines/structures used by the FW and host. 38 * 39 */ 40 41 #ifndef PUBLIC_INFOELE_H 42 #define PUBLIC_INFOELE_H 43 44 45 #include "public_types.h" 46 #include "public_commands.h" 47 #include "public_radio.h" 48 49 50 typedef enum 51 { 52 ACX_WAKE_UP_CONDITIONS = 0x0002, 53 ACX_MEM_CFG = 0x0003, 54 ACX_SLOT = 0x0004, 55 ACX_QUEUE_HEAD = 0x0005, /* for MASTER mode only!!!*/ 56 ACX_AC_CFG = 0x0007, 57 ACX_MEM_MAP = 0x0008, 58 ACX_AID = 0x000A, 59 ACX_RADIO_PARAM = 0x000B, /* Not in use !!! */ 60 ACX_CFG = 0x000C, /* Not in use !!!*/ 61 ACX_FW_REV = 0x000D, 62 ACX_FCS_ERROR_CNT = 0x000E, /* OBSOLETE (replaced by ACX_ERROR_CNT) !!!*/ 63 ACX_MEDIUM_USAGE = 0x000F, 64 ACX_RX_CFG = 0x0010, 65 ACX_TX_QUEUE_CFG = 0x0011, 66 ACX_BSS_IN_PS = 0x0012, /* for AP only (OBSOLETE???) */ 67 ACX_STATISTICS = 0x0013, /* Debug API*/ 68 ACX_PWR_CONSUMPTION_STATISTICS = 0x0014, 69 ACX_FEATURE_CFG = 0x0015, 70 ACX_MISC_CFG = 0x0017, /* Not in use !!!*/ 71 ACX_TID_CFG = 0x001A, 72 ACX_CAL_ASSESSMENT = 0x001E, /* OBSOLETE !!!*/ 73 ACX_BEACON_FILTER_OPT = 0x001F, 74 ACX_LOW_RSSI = 0x0020, 75 ACX_NOISE_HIST = 0x0021, 76 ACX_HDK_VERSION = 0x0022, /* ???*/ 77 ACX_PD_THRESHOLD = 0x0023, 78 ACX_DATA_PATH_PARAMS = 0x0024, /* WO*/ 79 ACX_DATA_PATH_RESP_PARAMS = 0x0024, /* RO*/ 80 ACX_CCA_THRESHOLD = 0x0025, 81 ACX_EVENT_MBOX_MASK = 0x0026, 82 #ifdef FW_RUNNING_AS_AP 83 ACX_DTIM_PERIOD = 0x0027, /* for AP only !!!*/ 84 #else 85 ACX_WR_TBTT_AND_DTIM = 0x0027, /* STA only*/ 86 #endif 87 ACX_ACI_OPTION_CFG = 0x0029, /* OBSOLETE !!! (for 1251)*/ 88 ACX_GPIO_CFG = 0x002A, /* Not in use !!!*/ 89 ACX_GPIO_SET = 0x002B, /* Not in use !!!*/ 90 ACX_PM_CFG = 0x002C, /* ??? (To Be Documented)*/ 91 ACX_CONN_MONIT_PARAMS = 0x002D, 92 ACX_AVERAGE_RSSI = 0x002E, /* Not in use !!!*/ 93 ACX_CONS_TX_FAILURE = 0x002F, 94 ACX_BCN_DTIM_OPTIONS = 0x0031, 95 ACX_SG_ENABLE = 0x0032, 96 ACX_SG_CFG = 0x0033, 97 ACX_ANTENNA_DIVERSITY_CFG = 0x0035, /* ??? (To Be Documented)*/ 98 ACX_LOW_SNR = 0x0037, /* To Be Documented*/ 99 ACX_BEACON_FILTER_TABLE = 0x0038, 100 ACX_ARP_IP_FILTER = 0x0039, 101 ACX_ROAMING_STATISTICS_TBL = 0x003B, 102 ACX_RATE_POLICY = 0x003D, 103 ACX_CTS_PROTECTION = 0x003E, 104 ACX_SLEEP_AUTH = 0x003F, 105 ACX_PREAMBLE_TYPE = 0x0040, 106 ACX_ERROR_CNT = 0x0041, 107 ACX_FW_GEN_FRAME_RATES = 0x0042, 108 ACX_IBSS_FILTER = 0x0044, 109 ACX_SERVICE_PERIOD_TIMEOUT = 0x0045, 110 ACX_TSF_INFO = 0x0046, 111 ACX_CONFIG_PS_WMM = 0x0049, 112 ACX_ENABLE_RX_DATA_FILTER = 0x004A, 113 ACX_SET_RX_DATA_FILTER = 0x004B, 114 ACX_GET_DATA_FILTER_STATISTICS = 0x004C, 115 ACX_POWER_LEVEL_TABLE = 0x004D, 116 ACX_BET_ENABLE = 0x0050, 117 DOT11_STATION_ID = 0x1001, 118 DOT11_RX_MSDU_LIFE_TIME = 0x1004, 119 DOT11_CUR_TX_PWR = 0x100D, 120 DOT11_DEFAULT_KEY = 0x1010, 121 DOT11_RX_DOT11_MODE = 0x1012, 122 DOT11_RTS_THRESHOLD = 0x1013, 123 DOT11_GROUP_ADDRESS_TBL = 0x1014, 124 125 MAX_DOT11_IE = DOT11_GROUP_ADDRESS_TBL, 126 127 MAX_IE = 0xFFFF /*force enumeration to 16bits*/ 128 } InfoElement_enum; 129 130 131 #ifdef HOST_COMPILE 132 typedef uint16 InfoElement_e; 133 #else 134 typedef InfoElement_enum InfoElement_e; 135 #endif 136 137 138 typedef struct 139 { 140 InfoElement_e id; 141 uint16 length; 142 uint32 dataLoc; /*use this to point to for following variable-length data*/ 143 } InfoElement_t; 144 145 146 typedef struct 147 { 148 uint16 id; 149 uint16 len; 150 } EleHdrStruct; 151 152 153 #ifdef HOST_COMPILE 154 #define INFO_ELE_HDR EleHdrStruct EleHdr; 155 #else 156 #define INFO_ELE_HDR 157 #endif 158 159 /****************************************************************************** 160 161 Name: ACX_WAKE_UP_CONDITIONS 162 Type: Configuration 163 Access: Write Only 164 Length: 2 165 166 ******************************************************************************/ 167 typedef enum 168 { 169 WAKE_UP_EVENT_BEACON_BITMAP = 0x01, /* Wake on every Beacon*/ 170 WAKE_UP_EVENT_DTIM_BITMAP = 0x02, /* Wake on every DTIM*/ 171 WAKE_UP_EVENT_N_DTIM_BITMAP = 0x04, /* Wake on every Nth DTIM (Listen interval)*/ 172 WAKE_UP_EVENT_N_BEACONS_BITMAP = 0x08, /* Wake on every Nth Beacon (Nx Beacon)*/ 173 WAKE_UP_EVENT_BITS_MASK = 0x0F 174 } WakeUpEventBitMask_e; 175 176 typedef struct 177 { 178 INFO_ELE_HDR 179 uint8 wakeUpConditionBitmap; /* The host can set one bit only. */ 180 /* WakeUpEventBitMask_e describes the Possible */ 181 /* Wakeup configuration bits*/ 182 183 uint8 listenInterval; /* 0 for Beacon and Dtim, */ 184 /* xDtims (1-10) for Listen Interval and */ 185 /* xBeacons (1-255) for NxBeacon*/ 186 uint8 padding[2]; /* alignment to 32bits boundry */ 187 }WakeUpCondition_t; 188 189 /****************************************************************************** 190 191 Name: ACX_MEM_CFG 192 Type: Configuration 193 Access: Write Only 194 Length: 12 195 196 ******************************************************************************/ 197 198 /* Host Bus/Memory Mode - The following table specifies the possible host bus modes and */ 199 /* memory organizations that the Wilink should use during operation. */ 200 typedef enum{ 201 HOSTIF_PCI_MASTER_HOST_INDIRECT, 202 HOSTIF_PCI_MASTER_HOST_DIRECT, 203 HOSTIF_SLAVE, 204 HOSTIF_PKT_RING, 205 HOSTIF_DONTCARE = 0xFF 206 } HostIFConfig_enum; 207 208 #ifdef HOST_COMPILE 209 typedef uint8 HostIFConfig_e; 210 #else 211 typedef HostIFConfig_enum HostIFConfig_e; 212 #endif 213 214 typedef struct 215 { 216 INFO_ELE_HDR 217 uint16 numStations; /* specifies the number of STAs to be supported. */ 218 /* The FW uses this field to allocate memory */ 219 /* for STA context data such as security keys*/ 220 uint16 reserved1; 221 uint8 rxMemblockNumber; /* specifies the number of memory buffers that */ 222 /* is allocated to the Rx memory pool. The */ 223 /* actual number allocated may be less than*/ 224 /* this number if there are not enough memory */ 225 /* blocks left over for the Minimum Number of */ 226 /* Tx Blocks. Returns the actual number of RX */ 227 /* buffers allocated in the memory map*/ 228 uint8 Reserved2; 229 uint8 numTxQueues; /* specifies the number of descriptor queues */ 230 /* that are to be used for transmit operations. */ 231 /* Valid values are 1 to 16*/ 232 233 HostIFConfig_e hostifOptions; /* specifies the memory configuration options */ 234 /* for the adaptor. The format of this field */ 235 /* is shown in HostIFConfig_enum.*/ 236 237 uint8 txMinimumMemblockNumber; /* specifies the minimum number of blocks that */ 238 /* must be allocated to the TX pool. Follows */ 239 /* this limit even if the Number of Rx Memory */ 240 /* Blocks parameter is ignored.*/ 241 242 uint8 numSsidProfiles; /* specifies the number of SSID profiles used */ 243 /* in the AP. Enables working with different */ 244 /* profiles for different stations.*/ 245 246 uint16 debugBufferSize; /* This field specifies the number of words */ 247 /* allocated for each debug buffer if the */ 248 /* FW trace is enabled.*/ 249 #ifndef HOST_COMPILE 250 uint8 variableData; /* contents vary starting here - should be */ 251 uint8 pedding[3]; /* aligned to 32 bits boundry*/ 252 #endif 253 } ACXConfigMemory_t; 254 255 typedef struct 256 { 257 uint8 numDescs; 258 uint8 Reserved; 259 uint8 Type; 260 uint8 Priority; 261 uint32 dmaAddress; 262 } ACXrxQueueConfig; 263 264 typedef struct 265 { 266 uint8 numDescs; 267 uint8 reserved1[2]; 268 uint8 attributes; /* QPriority_e qPriority;*/ 269 } ACXtxQueueConfig; 270 271 #define QUEUE_CONFIG_MAX_TX_QUEUES 5 272 273 typedef struct 274 { 275 ACXConfigMemory_t memConfig; 276 ACXrxQueueConfig RxQueueConfig; 277 ACXtxQueueConfig TxQueueConfig[QUEUE_CONFIG_MAX_TX_QUEUES]; 278 } ACXConfigMemoryStruct_t; 279 280 281 282 /****************************************************************************** 283 284 Name: ACX_SLOT 285 Type: Configuration 286 Access: Write Only 287 Length: 8 288 289 ******************************************************************************/ 290 291 typedef enum 292 { 293 SLOT_TIME_LONG = 0, /* the WiLink uses long (20 us) slots*/ 294 SLOT_TIME_SHORT = 1, /* the WiLink uses short (9 us) slots*/ 295 DEFAULT_SLOT_TIME = SLOT_TIME_SHORT, 296 MAX_SLOT_TIMES = 0xFF 297 } SlotTime_enum; 298 299 #ifdef HOST_COMPILE 300 typedef uint8 SlotTime_e; 301 #else 302 typedef SlotTime_enum SlotTime_e; 303 #endif 304 305 306 typedef struct 307 { 308 INFO_ELE_HDR 309 uint8 woneIndex; /* reserved*/ 310 311 SlotTime_e slotTime; /* The slot size to be used. refer to SlotTime_enum. */ 312 uint8 reserved[6]; 313 } ACXSlot_t; 314 315 /****************************************************************************** 316 317 Name: ACX_QUEUE_HEAD 318 Type: Configuration 319 Access: Read Only 320 Length: 56 321 Note: for MASTER mode only!!! 322 323 ******************************************************************************/ 324 325 typedef struct 326 { 327 uint32 addr; 328 uint8 priority; 329 uint8 padding[3]; 330 } ACXoneQueueHead; 331 332 #define NUM_ACCESS_CATEGORIES_QUEUES 5 /* This takes into account the */ 333 /* broadcast AC queue*/ 334 typedef struct 335 { 336 INFO_ELE_HDR 337 uint32 *txMemBlkQ; 338 uint32 *rxMemBlkQ; 339 ACXoneQueueHead rxQueueHead; 340 ACXoneQueueHead txQueueHead[NUM_ACCESS_CATEGORIES_QUEUES]; 341 } ACXQosQueueHead_t; 342 343 344 /****************************************************************************** 345 346 Name: ACX_AC_CFG 347 Type: Configuration 348 Access: Write Only 349 Length: 8 350 351 ******************************************************************************/ 352 typedef enum 353 { 354 AC_BE = 0, /* Best Effort/Legacy*/ 355 AC_BK = 1, /* Background*/ 356 AC_VI = 2, /* Video*/ 357 AC_VO = 3, /* Voice*/ 358 AC_BCAST = 4, /* Broadcast dummy access category*/ 359 NUM_ACCESS_CATEGORIES = 4 360 } AccessCategory_enum; 361 362 #define AC_FAST_TEMPLATE 4 /* Access Category for SG2.0 Fast CTS Tx */ 363 #define AC_REQUEST 0xfe /* Special access category type for */ 364 /* requests*/ 365 #define AC_INVALID 0xff /* Empty Access category in scheduler */ 366 /* Access Category DB*/ 367 368 #define AC_ANY_TID 0xFF /* Any TID/AC for the Split Scan */ 369 370 /* following are defult values for the IE fields*/ 371 #define CWMIN_BK 15 372 #define CWMIN_BE 15 373 #define CWMIN_VI 7 374 #define CWMIN_VO 3 375 #define CWMAX_BK 1023 376 #define CWMAX_BE 63 377 #define CWMAX_VI 15 378 #define CWMAX_VO 7 379 #define AIFS_PIFS 1 /* slot number setting to start transmission at PIFS interval */ 380 #define AIFS_DIFS 2 /* slot number setting to start transmission at DIFS interval - */ 381 /* normal DCF access */ 382 #define AIFSN_BK 7 383 #define AIFSN_BE 3 384 #define AIFSN_VI AIFS_PIFS 385 #define AIFSN_VO AIFS_PIFS 386 #define TXOP_BK 0 387 #define TXOP_BE 0 388 #define TXOP_VI 3008 389 #define TXOP_VO 1504 390 #define DEFAULT_AC_SHORT_RETRY_LIMIT 7 391 #define DEFAULT_AC_LONG_RETRY_LIMIT 4 392 393 /* rxTimeout values */ 394 #define NO_RX_TIMEOUT 0 395 396 typedef struct 397 { 398 INFO_ELE_HDR 399 uint8 ac; /* Access Category - The TX queue's access category */ 400 /* (refer to AccessCategory_enum)*/ 401 uint8 cwMin; /* The contention window minimum size (in slots) for */ 402 /* the access class.*/ 403 uint16 cwMax; /* The contention window maximum size (in slots) for */ 404 /* the access class.*/ 405 uint8 aifsn; /* The AIF value (in slots) for the access class.*/ 406 uint8 reserved; 407 uint16 txopLimit; /* The TX Op Limit (in microseconds) for the access class.*/ 408 } ACXAcCfg_t; 409 410 411 /****************************************************************************** 412 413 Name: ACX_MEM_MAP 414 Type: Configuration 415 Access: Read Only 416 Length: 72 417 Note: Except for the numTxMemBlks, numRxMemBlks fields, this is 418 used in MASTER mode only!!! 419 420 ******************************************************************************/ 421 #define MEM_MAP_NUM_FIELDS 18 422 423 typedef struct 424 { 425 INFO_ELE_HDR 426 void *codeStart; 427 void *codeEnd; 428 void *wepDefaultKeyStart; 429 void *wepDefaultKeyEnd; 430 void *staTableStart; 431 void *staTableEnd; 432 void *packetTemplateStart; 433 void *packetTemplateEnd; 434 void *queueMemoryStart; 435 void *queueMemoryEnd; 436 void *packetMemoryPoolStart; 437 void *packetMemoryPoolEnd; 438 void *debugBuffer1Start; 439 void *debugBuffer1End; 440 void *debugBuffer2Start; 441 void *debugBuffer2End; 442 uint32 numTxMemBlks; /* Number of blocks that FW allocated for TX packets.*/ 443 uint32 numRxMemBlks; /* Number of blocks that FW allocated for RX packets. */ 444 } MemoryMap_t; 445 446 447 /****************************************************************************** 448 449 Name: ACX_AID 450 Type: Configuration 451 Access: Write Only 452 Length: 2 453 454 ******************************************************************************/ 455 456 typedef struct 457 { 458 INFO_ELE_HDR 459 uint16 Aid; /* The Association ID to the WiLink. The WiLink uses this */ 460 /* field to determine when the STA's AID bit is set in a */ 461 /* received beacon and when a PS Poll frame should be */ 462 /* transmitted to the AP. The host configures this information */ 463 /* element after it has associated with an AP. This information */ 464 /* element does not need to be set in Ad Hoc mode.*/ 465 uint8 padding[2]; /* alignment to 32bits boundry */ 466 } ACXAid_t; 467 468 /****************************************************************************** 469 470 Name: ACX_CFG 471 Type: Configuration 472 Access: Write Only 473 Length: 25 474 Note: Not in use !!! 475 476 ******************************************************************************/ 477 478 typedef struct ACXConfig_variableEntry_t 479 { 480 uint8 dot11_ID; 481 uint8 num_supported; 482 uint8 dot11_Table; /*cast and deref this as array of Sizeof-dot11_ID-Type.*/ 483 uint8 padding; /* alignment to 32bits boundry */ 484 } ACXConfig_variableEntry_t; 485 486 487 typedef struct ACXConfigOptionsStruct_t 488 { 489 INFO_ELE_HDR 490 char nvsVer[8]; 491 uint32 endMemLoc; 492 uint16 VendorSpecificArea; 493 uint8 dot11CCAModeSupported; 494 uint8 dot11DiversitySupport; 495 uint8 dot11ShortPreambleOptionImplemented; 496 uint8 dot11PBCCOptionImplemented; 497 uint8 dot11ChanneAgilityPresent; 498 uint8 dot11PHYType; 499 uint8 dot11TempType; 500 uint8 numVarEntries; 501 uint8 padding[2]; /* alignment to 32bits boundry */ 502 503 ACXConfig_variableEntry_t vardata; 504 /**/ 505 /*Begin variable portion of Config data...*/ 506 /**/ 507 } ACXConfigOptionsStruct_t; 508 509 /****************************************************************************** 510 511 Name: ACX_FW_REV 512 Type: Configuration 513 Access: Write Only 514 Length: 24 515 516 ******************************************************************************/ 517 518 typedef struct 519 { 520 INFO_ELE_HDR 521 char FWVersion[20]; /* The WiLink firmware version, an ASCII string x.x.x.x.x */ 522 /* that uniquely identifies the current firmware. */ 523 /* The left most digit is incremented each time a */ 524 /* significant change is made to the firmware, such as */ 525 /* WLAN new project.*/ 526 /* The second and third digit is incremented when major enhancements*/ 527 /* are added or major fixes are made.*/ 528 /* The fourth digit is incremented for each SP release */ 529 /* and it indicants the costumer private brench */ 530 /* The fifth digit is incremented for each build.*/ 531 532 uint32 HardWareVersion; /* This 4 byte field specifies the WiLink hardware version. */ 533 /* bits 0 - 15: Reserved.*/ 534 /* bits 16 - 23: Version ID - The WiLink version ID */ 535 /* (1 = first spin, 2 = second spin, and so on).*/ 536 /* bits 24 - 31: Chip ID - The WiLink chip ID. */ 537 } ACXRevision_t; 538 539 /****************************************************************************** 540 541 Name: ACX_FCS_ERROR_CNT 542 Type: Operation 543 Access: Read Only 544 Length: 4 545 Note: OBSOLETE (replaced by ACX_ERROR_CNT) !!! 546 547 ******************************************************************************/ 548 549 typedef struct 550 { 551 INFO_ELE_HDR 552 uint32 FCSErrorCount; 553 } ACXFCSErrorCount_t; 554 555 /****************************************************************************** 556 557 Name: ACX_ERROR_CNT 558 Type: Operation 559 Access: Read Only 560 Length: 12 561 562 ******************************************************************************/ 563 typedef struct 564 { 565 INFO_ELE_HDR 566 uint32 PLCPErrorCount; /* The number of PLCP errors since the last time this */ 567 /* information element was interrogated. This field is */ 568 /* automatically cleared when it is interrogated.*/ 569 570 uint32 FCSErrorCount; /* The number of FCS errors since the last time this */ 571 /* information element was interrogated. This field is */ 572 /* automatically cleared when it is interrogated.*/ 573 574 uint32 validFrameCount; /* The number of MPDUs without PLCP header errors received*/ 575 /* since the last time this information element was interrogated. */ 576 /* This field is automatically cleared when it is interrogated.*/ 577 578 uint32 seqNumMissCount; /* the number of missed sequence numbers in the squentially */ 579 /* values of frames seq numbers */ 580 581 } ACXErrorCounters_t; 582 583 /****************************************************************************** 584 585 Name: ACX_MEDIUM_USAGE 586 Type: Configuration 587 Access: Read Only 588 Length: 8 589 590 ******************************************************************************/ 591 592 typedef struct 593 { 594 INFO_ELE_HDR 595 uint32 mediumUsage; /* report to the host the value of medium usage registers*/ 596 uint32 period; /* report to the host the value of medium period registers*/ 597 } ACXMediumUsage_t; 598 599 /****************************************************************************** 600 601 Name: ACX_RX_CFG 602 Type: Filtering Configuration 603 Access: Write Only 604 Length: 8 605 606 ******************************************************************************/ 607 /* 608 * Rx configuration (filter) information element 609 * --------------------------------------------- 610 */ 611 /* 612 RX ConfigOptions Table 613 Bit Definition 614 === ========== 615 31:14 Reserved 616 13 Copy RX Status - when set, write three receive status words to top of 617 rx'd MPDU. 618 When clear, do not write three status words (added rev 1.5) 619 12 Reserved 620 11 RX Complete upon FCS error - when set, give rx complete interrupt for 621 FCS errors, after the rx filtering, e.g. unicast frames not to us with 622 FCS error will not generate an interrupt 623 10 SSID Filter Enable - When set, the WiLink discards all beacon, 624 probe request, and probe response frames with an SSID that does not 625 match the SSID specified by the host in the START/JOIN command. 626 When clear, the WiLink receives frames with any SSID. 627 9 Broadcast Filter Enable - When set, the WiLink discards all broadcast 628 frames. When clear, the WiLink receives all received broadcast frames. 629 8:6 Reserved 630 5 BSSID Filter Enable - When set, the WiLink discards any frames with a 631 BSSID that does not match the BSSID specified by the host. 632 When clear, the WiLink receives frames from any BSSID. 633 4 MAC Addr Filter - When set, the WiLink discards any frames with a 634 destination address that does not match the MAC address of the adaptor. 635 When clear, the WiLink receives frames destined to any MAC address. 636 3 Promiscuous - When set, the WiLink receives all valid frames 637 (i.e., all frames that pass the FCS check). 638 When clear, only frames that pass the other filters specified are received. 639 2 FCS - When set, the WiLink includes the FCS with the received frame. 640 When clear, the FCS is discarded. 641 1 PLCP header - When set, write all data from baseband to frame buffer 642 including PHY header. 643 0 Reserved - Always equal to 0. 644 645 RX FilterOptions Table 646 Bit Definition 647 === ========== 648 31:12 Reserved - Always equal to 0. 649 11 Association - When set, the WiLink receives all association related frames 650 (association request/response, reassocation request/response, and 651 disassociation). When clear, these frames are discarded. 652 10 Auth/De auth - When set, the WiLink receives all authentication and 653 de-authentication frames. When clear, these frames are discarded. 654 9 Beacon - When set, the WiLink receives all beacon frames. When clear, 655 these frames are discarded. 656 8 Contention Free - When set, the WiLink receives all contention free frames. 657 When clear, these frames are discarded. 658 7 Control - When set, the WiLink receives all control frames. 659 When clear, these frames are discarded. 660 6 Data - When set, the WiLink receives all data frames. 661 When clear, these frames are discarded. 662 5 FCS Error - When set, the WiLink receives frames that have FCS errors. 663 When clear, these frames are discarded. 664 4 Management - When set, the WiLink receives all management frames. 665 When clear, these frames are discarded. 666 3 Probe Request - When set, the WiLink receives all probe request frames. 667 When clear, these frames are discarded. 668 2 Probe Response - When set, the WiLink receives all probe response frames. 669 When clear, these frames are discarded. 670 1 RTS/CTS/ACK - When set, the WiLink receives all RTS, CTS and ACK frames. 671 When clear, these frames are discarded. 672 0 Rsvd Type/Sub Type - When set, the WiLink receives all frames that 673 have reserved frame types and sub types as defined by the 802.11 674 specification. 675 When clear, these frames are discarded. 676 */ 677 typedef struct 678 { 679 INFO_ELE_HDR 680 uint32 ConfigOptions; /* The configuration of the receiver in the WiLink. */ 681 /* "RX ConfigOptions Table" describes the format of */ 682 /* this field.*/ 683 uint32 FilterOptions; /* The types of frames that the WiLink can receive. */ 684 /* "RX FilterOptions Table" describes the format of */ 685 /* this field.*/ 686 } ACXRxConfig_t; 687 688 /****************************************************************************** 689 690 Name: ACX_BEACON_FILTER_OPT 691 Desc: This information element enables the host to activate beacon filtering. 692 The filter can only be activated when the STA is in PS mode. 693 When activated, either the host is not notified about beacons whose 694 unicast TIM bit is not set, or these beacons are buffered first and 695 the host is notified only after the buffer reaches a predetermined size. 696 The host should not activate the filter if it configures the firmware 697 to listen to broadcasts (see the VBM Options field in the 698 ACXPowerMgmtOptions information element). The filter only affects beacons, 699 and not other MSDUs - the firmware notifies the host immediately about 700 their arrival. 701 Type: Filtering Configuration 702 Access: Write Only 703 Length: 2 704 705 ******************************************************************************/ 706 typedef struct 707 { 708 INFO_ELE_HDR 709 uint8 enable; /* Indicates whether the filter is enabled. */ 710 /* 1 - enabled, 0 - disabled. */ 711 uint8 maxNumOfBeaconsStored; /* The number of beacons without the unicast TIM */ 712 /* bit set that the firmware buffers before */ 713 /* signaling the host about ready frames. */ 714 /* When set to 0 and the filter is enabled, beacons */ 715 /* without the unicast TIM bit set are dropped.*/ 716 uint8 padding[2]; /* alignment to 32bits boundry */ 717 } ACXBeaconFilterOptions_t; 718 719 720 /****************************************************************************** 721 722 Name: ACX_BEACON_FILTER_TABLE 723 Desc: This information element configures beacon filtering handling for the 724 set of information elements. An information element in a beacon can be 725 set to be: ignored (never compared, and changes will not cause beacon 726 transfer), checked (compared, and transferred in case of a change), or 727 transferred (transferred to the host for each appearance or disappearance). 728 The table contains all information elements that are subject to monitoring 729 for host transfer. 730 All information elements that are not in the table should be ignored for 731 monitoring. 732 This functionality is only enabled when beacon filtering is enabled by 733 ACX_BEACON_FILTER_OPT. 734 Type: Filtering Configuration 735 Access: Write Only 736 Length: 101 737 Notes: the field measuring the value of received beacons for which the device 738 wakes up the host in ACX_BEACON_FILTER_OPT does not affect 739 this information element. 740 741 ******************************************************************************/ 742 743 /* 744 ACXBeaconFilterEntry (not 221) 745 Byte Offset Size (Bytes) Definition 746 =========== ============ ========== 747 0 1 IE identifier 748 1 1 Treatment bit mask 749 750 ACXBeaconFilterEntry (221) 751 Byte Offset Size (Bytes) Definition 752 =========== ============ ========== 753 0 1 IE identifier 754 1 1 Treatment bit mask 755 2 3 OUI 756 5 1 Type 757 6 2 Version 758 759 760 Treatment bit mask - The information element handling: 761 bit 0 - The information element is compared and transferred 762 in case of change. 763 bit 1 - The information element is transferred to the host 764 with each appearance or disappearance. 765 Note that both bits can be set at the same time. 766 */ 767 #define BEACON_FILTER_TABLE_MAX_IE_NUM (32) 768 #define BEACON_FILTER_TABLE_MAX_VENDOR_SPECIFIC_IE_NUM (6) 769 #define BEACON_FILTER_TABLE_IE_ENTRY_SIZE (2) 770 #define BEACON_FILTER_TABLE_EXTRA_VENDOR_SPECIFIC_IE_SIZE (6) 771 #define BEACON_FILTER_TABLE_MAX_SIZE ((BEACON_FILTER_TABLE_MAX_IE_NUM * BEACON_FILTER_TABLE_IE_ENTRY_SIZE) + \ 772 (BEACON_FILTER_TABLE_MAX_VENDOR_SPECIFIC_IE_NUM * BEACON_FILTER_TABLE_EXTRA_VENDOR_SPECIFIC_IE_SIZE)) 773 774 typedef struct ACXBeaconFilterIETableStruct { 775 INFO_ELE_HDR 776 uint8 NumberOfIEs; /* The number of IE's in the table*/ 777 /* 0 - clears the table.*/ 778 779 uint8 padding[3]; /* alignment to 32bits boundry */ 780 uint8 IETable[BEACON_FILTER_TABLE_MAX_SIZE]; 781 } ACXBeaconFilterIETable_t; 782 783 /****************************************************************************** 784 785 Name: ACX_ARP_IP_FILTER 786 Type: Filtering Configuration 787 Access: Write Only 788 Length: 20 789 790 ******************************************************************************/ 791 792 typedef struct 793 { 794 INFO_ELE_HDR 795 uint8 ipVersion; /* The IP version of the IP address: 4 - IPv4, 6 - IPv6.*/ 796 uint8 arpFilterEnable; /* 1 - ARP filtering is enabled. */ 797 /* 0 - ARP filtering is disabled.*/ 798 uint8 padding[2]; /* alignment to 32bits boundry */ 799 uint8 address[16]; /* The IP address used to filter ARP packets. ARP packets */ 800 /* that do not match this address are dropped. */ 801 /* When the IP Version is 4, the last 12 bytes of */ 802 /* the address are ignored.*/ 803 804 } ACXConfigureIP_t; 805 806 807 /****************************************************************************** 808 809 Name: ACX_IBSS_FILTER 810 Type: Filtering Configuration 811 Access: Write Only 812 Length: 1 813 814 ******************************************************************************/ 815 typedef struct 816 { 817 INFO_ELE_HDR 818 uint8 enable; /* if set (i.e. IBSS mode), forward beacons from the same SSID*/ 819 /* (also from different BSSID), with bigger TSF then the this of */ 820 /* the current BSS.*/ 821 uint8 padding[3]; /* alignment to 32bits boundry */ 822 } ACXIBSSFilterOptions_t; 823 824 825 /****************************************************************************** 826 827 Name: ACX_SERVICE_PERIOD_TIMEOUT 828 Type: Configuration 829 Access: Write Only 830 Length: 1 831 832 ******************************************************************************/ 833 typedef struct 834 { 835 INFO_ELE_HDR 836 uint16 PsPollTimeout; /* the maximum time that the device will wait to receive */ 837 /* traffic from the AP after transmission of PS-poll.*/ 838 839 uint16 UpsdTimeout; /* the maximum time that the device will wait to receive */ 840 /* traffic from the AP after transmission from UPSD enabled*/ 841 /* queue.*/ 842 } ACXRxTimeout_t; 843 844 /****************************************************************************** 845 846 Name: ACX_TX_QUEUE_CFG 847 Type: Configuration 848 Access: Write Only 849 Length: 8 850 851 ******************************************************************************/ 852 typedef struct 853 { 854 INFO_ELE_HDR 855 uint8 qID; /* The TX queue ID number.*/ 856 uint8 padding[3]; /* alignment to 32bits boundry */ 857 uint16 numberOfBlockHighThreshold; /* The maximum memory blocks allowed in the */ 858 /* queue.*/ 859 uint16 numberOfBlockLowThreshold; /* The minimum memory blocks that are */ 860 /* guaranteed for this queue.*/ 861 } ACXTxQueueCfg_t; 862 863 864 /****************************************************************************** 865 866 Name: ACX_BSS_IN_PS 867 Type: Configuration 868 Access: Write Only 869 Length: 1 870 Note: for AP only (OBSOLETE???) 871 872 ******************************************************************************/ 873 874 typedef enum 875 { 876 AP_POWER_ACTIVE_MODE = FALSE, 877 AP_POWER_SAVE_MODE = TRUE 878 } APPowerMgmtMode_enum; 879 880 #ifdef HOST_COMPILE 881 typedef uint8 APPowerMgmtMode_e; 882 #else 883 typedef APPowerMgmtMode_enum APPowerMgmtMode_e; 884 #endif 885 886 887 typedef struct 888 { 889 INFO_ELE_HDR 890 APPowerMgmtMode_e BSSinPowerSave; 891 uint8 padding[3]; /* alignment to 32bits boundry */ 892 } ACXBSSPowerSave_t; 893 894 895 896 /****************************************************************************** 897 898 Name: ACX_STATISTICS 899 Type: Statistics 900 Access: Write Only 901 Length: 902 Note: Debug API 903 904 ******************************************************************************/ 905 906 typedef struct 907 { 908 uint32 TxInternalDescOverflow; 909 } TxStatistics_t; 910 911 912 typedef struct 913 { 914 uint32 RxOutOfMem; 915 uint32 RxHdrOverflow; 916 uint32 RxHWStuck; 917 uint32 RxDroppedFrame; 918 uint32 RxFcsErr; 919 uint32 RxXfrHintTrig; 920 uint32 RxPathReset; 921 uint32 RxResetCounter; 922 } RxStatistics_t; 923 924 925 typedef struct 926 { 927 uint32 RxDMARequested; 928 uint32 RxDMAErrors; 929 uint32 TxDMARequested; 930 uint32 TxDMAErrors; 931 } DMAStatistics_t; 932 933 934 typedef struct 935 { 936 uint32 Cmd_Cmplt; /* Host command complete */ 937 uint32 FIQs; /* fiqisr() */ 938 uint32 RxHeaders; /* (INT_STS_ND & INT_TRIG_RX_HEADER) */ 939 uint32 RxCompletes; /* (INT_STS_ND & INT_TRIG_RX_CMPLT) */ 940 uint32 RxMemOverflow; /* (INT_STS_ND & INT_TRIG_NO_RX_BUF) */ 941 uint32 RxRdys; /* (INT_STS_ND & INT_TRIG_S_RX_RDY) */ 942 uint32 IRQs; /* irqisr() */ 943 uint32 ACXTxProcs; /* (INT_STS_ND & INT_TRIG_TX_PROC) */ 944 uint32 DecryptDone; /* (INT_STS_ND & INT_TRIG_DECRYPT_DONE) */ 945 uint32 DMA0Done; /* (INT_STS_ND & INT_TRIG_DMA0) */ 946 uint32 DMA1Done; /* (INT_STS_ND & INT_TRIG_DMA1) */ 947 uint32 ACXTxExchComplete; /* (INT_STS_ND & INT_TRIG_TX_EXC_CMPLT) */ 948 uint32 ACXCommands; /* (INT_STS_ND & INT_TRIG_COMMAND) */ 949 uint32 ACXRxProcs; /* (INT_STS_ND & INT_TRIG_RX_PROC) */ 950 uint32 HwPMModeChanges; /* (INT_STS_ND & INT_TRIG_PM_802) */ 951 uint32 HostAcknowledges; /* (INT_STS_ND & INT_TRIG_ACKNOWLEDGE) */ 952 uint32 PCI_PM; /* (INT_STS_ND & INT_TRIG_PM_PCI) */ 953 uint32 ACMWakeups; /* (INT_STS_ND & INT_TRIG_ACM_WAKEUP) */ 954 uint32 LowRssi; /* (INT_STS_ND & INT_TRIG_LOW_RSSI) */ 955 } IsrStatistics_t; 956 957 958 typedef struct WepStatistics_t 959 { 960 uint32 WepAddrKeyCount; /* Count of WEP address keys configured*/ 961 uint32 WepDefaultKeyCount; /* Count of default keys configured*/ 962 uint32 reserved; 963 uint32 WepKeyNotFound; /* count of number of times that WEP key not found on lookup*/ 964 uint32 WepDecryptFail; /* count of number of times that WEP key decryption failed*/ 965 uint32 WepPackets; /* WEP Packets Decrypted*/ 966 uint32 WepInterrupt; /* WEP Decrypt Interrupts*/ 967 } WepStatistics_t; 968 969 970 #define PWR_STAT_MAX_CONT_MISSED_BCNS_SPREAD 10 971 typedef struct PwrStatistics_t 972 { 973 uint32 PSEnterCnt; /* Count the amount of enters into power save mode (both PD & ELP)*/ 974 uint32 ELPEnterCnt; /* Count the amount of enters into ELP mode.*/ 975 uint32 MissingBcnsCnt; /* Count the amount of missing beacon interrupts to the host.*/ 976 uint32 WakeOnHostCnt; /* Count the amount of wake on host-access times.*/ 977 uint32 WakeOnTimerExpCnt; /* Count the amount of wake on timer-expire.*/ 978 uint32 TxWithPSCnt; /* Count the number of packets that were transmitted with PS bit set*/ 979 uint32 TxWithoutPSCnt; /* Count the number of packets that were transmitted with PS bit clear*/ 980 uint32 RcvdBeaconsCnt; /* Count the number of received beacons.*/ 981 uint32 PowerSaveOffCnt; /* Count the number of entering into PowerOn (power save off).*/ 982 uint16 EnablePSCnt; /* Count the number of entries into power save mode.*/ 983 uint16 DisablePSCnt; /* Count the number of exits from power save (not including the PS_FAIL route.*/ 984 uint32 FixTsfPSCnt; /* Count the number of times the TSF counter was adjusted because of drift.*/ 985 uint32 ContMissBcnsSpread[PWR_STAT_MAX_CONT_MISSED_BCNS_SPREAD]; /* Gives statistics about the spread continuous missed beacons.*/ 986 /* The 16 LSB are dedicated for the PS mode.*/ 987 /* The 16 MSB are dedicated for the PS mode.*/ 988 /* ContMissBcnsSpread[0] - single missed beacon.*/ 989 /* ContMissBcnsSpread[1] - two continuous missed beacons.*/ 990 /* ContMissBcnsSpread[2] - three continuous missed beacons.*/ 991 /* ...*/ 992 /* ContMissBcnsSpread[9] - ten and more continuous missed beacons.*/ 993 uint32 RcvdAwakeBeaconsCnt; /* Count the number of beacons in awake mode.*/ 994 } PwrStatistics_t; 995 996 997 typedef struct MicStatistics_t 998 { 999 uint32 MicRxPkts; 1000 uint32 MicCalcFailure; 1001 } MicStatistics_t; 1002 1003 1004 typedef struct AesStatisticsStruct 1005 { 1006 uint32 AesEncryptFail; 1007 uint32 AesDecryptFail; 1008 uint32 AesEncryptPackets; 1009 uint32 AesDecryptPackets; 1010 uint32 AesEncryptInterrupt; 1011 uint32 AesDecryptInterrupt; 1012 } AesStatistics_t; 1013 1014 1015 typedef struct EventStatistics_t 1016 { 1017 uint32 heartbeat; 1018 uint32 calibration; 1019 uint32 rxMismatch; 1020 uint32 rxMemEmpty; 1021 uint32 rxPool; 1022 uint32 oomLate; 1023 uint32 phyTransmitError; 1024 uint32 txStuck; 1025 } EventStatistics_t; 1026 1027 1028 typedef struct PsPollUpsdStatistics_t 1029 { 1030 uint32 psPollTimeOuts; 1031 uint32 upsdTimeOuts; 1032 uint32 upsdMaxSPTime; 1033 uint32 upsdMaxAPturn; 1034 uint32 psPollMaxAPturn; 1035 uint32 psPollUtilization; 1036 uint32 upsdUtilization; 1037 } PsPollUpsdStatistics_t; 1038 1039 1040 typedef struct 1041 { 1042 uint32 RxPrepBeaconDrop; 1043 uint32 DescrHostIntTrigRxData; 1044 uint32 BeaconBufferThresHostIntTrigRxData; 1045 uint32 MissedBeaconHostIntTrigRxData; 1046 uint32 TxXfrHostIntTrigRxData; 1047 } RxPipeStatistics_t; 1048 1049 1050 typedef struct ACXStatisticsStruct 1051 { 1052 INFO_ELE_HDR 1053 TxStatistics_t tx; 1054 RxStatistics_t rx; 1055 DMAStatistics_t dma; 1056 IsrStatistics_t isr; 1057 WepStatistics_t wep; 1058 PwrStatistics_t pwr; 1059 AesStatistics_t aes; 1060 MicStatistics_t mic; 1061 EventStatistics_t event; 1062 #ifdef FW_RUNNING_AS_STA 1063 PsPollUpsdStatistics_t ps; 1064 RxPipeStatistics_t rxp; 1065 #endif 1066 } ACXStatistics_t; 1067 1068 /****************************************************************************** 1069 1070 Name: ACX_ROAMING_STATISTICS_TBL 1071 Desc: This information element reads the current roaming triggers 1072 counters/metrics. 1073 Type: Statistics 1074 Access: Read Only 1075 Length: 6 1076 1077 ******************************************************************************/ 1078 typedef struct 1079 { 1080 INFO_ELE_HDR 1081 uint32 MissedBeacons; /* The current number of consecutive lost beacons*/ 1082 uint8 snr; /* The current average SNR in db*/ 1083 int8 rssi; /* The current average RSSI*/ 1084 uint8 padding[2]; /* alignment to 32bits boundry */ 1085 }ACXRoamingStatisticsTable_t; 1086 1087 1088 /****************************************************************************** 1089 1090 Name: ACX_FEATURE_CFG 1091 Desc: Provides expandability for future features 1092 Type: Configuration 1093 Access: Write Only 1094 Length: 8 1095 1096 ******************************************************************************/ 1097 1098 /* bit defines for Option: */ 1099 #define FEAT_PCI_CLK_RUN_ENABLE 0x00000002 /* Enable CLK_RUN on PCI bus */ 1100 1101 /* bit defines for dataflowOptions: */ 1102 #define DF_ENCRYPTION_DISABLE 0x00000001 /* When set, enable encription in FW.*/ 1103 /* when clear, disable encription. */ 1104 #define DF_SNIFF_MODE_ENABLE 0x00000080 /* When set, enable decryption in FW.*/ 1105 /* when clear, disable decription. */ 1106 typedef struct 1107 { 1108 INFO_ELE_HDR 1109 uint32 Options; /* Data flow options - refer to above definitions*/ 1110 uint32 dataflowOptions; /* Data flow options - refer to above definitions*/ 1111 } ACXFeatureConfig_t; 1112 1113 1114 1115 /****************************************************************************** 1116 1117 Name: ACX_TID_CFG 1118 Type: Configuration 1119 Access: Write Only 1120 Length: 16 1121 1122 ******************************************************************************/ 1123 typedef enum 1124 { 1125 CHANNEL_TYPE_DCF = 0, /* DC/LEGACY*/ 1126 CHANNEL_TYPE_EDCF = 1, /* EDCA*/ 1127 CHANNEL_TYPE_HCCA = 2, /* HCCA*/ 1128 MAX_CHANNEL_TYPE = CHANNEL_TYPE_HCCA 1129 } ChannelType_enum; 1130 1131 typedef enum 1132 { 1133 PS_SCHEME_LEGACY = 0, /* Regular PS: simple sending of packets*/ 1134 PS_SCHEME_UPSD_TRIGGER = 1, /* UPSD: sending a packet triggers a UPSD downstream*/ 1135 PS_SCHEME_LEGACY_PSPOLL = 2, /* Legacy PSPOLL: a PSPOLL packet will be sent before */ 1136 /* every data packet transmission in this queue.*/ 1137 PS_SCHEME_SAPSD = 3, /* Scheduled APSD mode.*/ 1138 MAX_PS_SCHEME = PS_SCHEME_SAPSD 1139 } PSScheme_enum; 1140 1141 typedef enum 1142 { 1143 ACK_POLICY_LEGACY = 0, /* ACK immediate policy*/ 1144 ACK_POLICY_NO_ACK = 1, /* no ACK policy*/ 1145 ACK_POLICY_BLOCK = 2, /* block ack policy*/ 1146 MAX_ACK_POLICY = ACK_POLICY_BLOCK 1147 } AckPolicy_enum; 1148 1149 1150 #ifdef HOST_COMPILE 1151 typedef uint8 ChannelType_e; 1152 typedef uint8 PSScheme_e; 1153 typedef uint8 AckPolicy_e; 1154 #else 1155 typedef ChannelType_enum ChannelType_e; 1156 typedef PSScheme_enum PSScheme_e; 1157 typedef AckPolicy_enum AckPolicy_e; 1158 #endif 1159 1160 1161 /* rxTimeout values */ 1162 #define NO_RX_TIMEOUT 0 1163 1164 1165 typedef struct 1166 { 1167 INFO_ELE_HDR 1168 uint8 queueID; /* The TX queue ID number (0-7).*/ 1169 uint8 channelType; /* Channel access type for the queue.*/ 1170 /* Refer to ChannelType_enum.*/ 1171 uint8 tsid; /* for EDCA - the AC Index (0-3, refer to*/ 1172 /* AccessCategory_enum).*/ 1173 /* For HCCA - HCCA Traffic Stream ID (TSID) of */ 1174 /* the queue (8-15).*/ 1175 PSScheme_e psScheme; /* The power save scheme of the specified queue.*/ 1176 /* Refer to PSScheme_enum.*/ 1177 AckPolicy_e ackPolicy; /* The TX queue ACK policy. */ 1178 uint8 padding[3]; /* alignment to 32bits boundry */ 1179 uint32 APSDConf[2]; /* Not supported in this version !!!*/ 1180 }ACXTIDConfig_t; 1181 1182 1183 1184 /****************************************************************************** 1185 1186 Name: ACX_LOW_RSSI 1187 Desc: This information element configures the Low and Regained RSSI interrupt 1188 indicators. Low RSSI calculates the average RSSI by giving higher weight 1189 to the old samples than to the current sample. 1190 The triggering of the Regained RSSI Event cannot be configured and 1191 is always an "Edge" indication. 1192 The RSSI is reset on JoinBSS - the filter history CurrentRSSI is reset. 1193 The average RSSI is calculated as follows: 1194 averageRssi = ((int32)((100-roamingTriggerParameters.lowRssi.rssiFilterWeight) * averageRssi) + 1195 (int32)(roamingTriggerParameters.lowRssi.rssiFilterWeight * (int8)rxInfo->rxLevel)) / 100; 1196 Type: Configuration 1197 Access: Write Only 1198 Length: 4 1199 1200 ******************************************************************************/ 1201 1202 typedef enum 1203 { 1204 LOW_RSSI_EVENT_LEVEL = 0, /* The event is a "Level" indication which keeps */ 1205 /* triggering as long as the average RSSI is below*/ 1206 /* the threshold.*/ 1207 1208 LOW_RSSI_EVENT_EDGE = 1 /* The event is an "Edge" indication which triggers*/ 1209 /* only when the RSSI threshold is crossed from above.*/ 1210 } LowRSSIEventType_enum; 1211 1212 #ifdef HOST_COMPILE 1213 typedef uint8 LowRSSIEventType_e; 1214 #else 1215 typedef LowRSSIEventType_enum LowRSSIEventType_e; 1216 #endif 1217 1218 1219 typedef struct 1220 { 1221 INFO_ELE_HDR 1222 int8 rssiThreshold; /* The threshold (in dBm) below (or above */ 1223 /* after low rssi indication) which the */ 1224 /* firmware generates an interrupt to the host. */ 1225 /* This parameter is signed.*/ 1226 1227 uint8 rssiFilterWeight; /* The weight of the current RSSI sample, */ 1228 /* before adding the new sample, that is used */ 1229 /* to calculate the average RSSI.*/ 1230 1231 uint8 rssiFilterDepth; /* The number of Beacons/Probe response frames */ 1232 /* that will be received before issuing the */ 1233 /* Low or Regained RSSI event*/ 1234 1235 LowRSSIEventType_e LowRSSIEventType; /* This parameter configures how the Low RSSI */ 1236 /* Event is triggered. */ 1237 /* Refer to LowRSSIEventType_enum.*/ 1238 } ACXLowRSSITriggerParameters_t; 1239 1240 /****************************************************************************** 1241 1242 Name: ACX_AVERAGE_RSSI 1243 Type: Configuration 1244 Access: Read Only 1245 Length: 8 1246 Note: Not in use !!! 1247 1248 ******************************************************************************/ 1249 1250 typedef struct 1251 { 1252 INFO_ELE_HDR 1253 int8 avaregeRSSI; /* in DBM*/ 1254 uint8 padding[3]; /* alignment to 32bits boundry */ 1255 } ACXAvaregeRSSI_t; 1256 1257 /****************************************************************************** 1258 1259 Name: ACX_NOISE_HIST 1260 Desc: Noise Histogram activation is done by special command from host which 1261 is responsible to read the results using this IE. 1262 Type: Configuration 1263 Access: Read Only 1264 Length: 48 (NOISE_HIST_LEN=8) 1265 1266 ******************************************************************************/ 1267 1268 typedef struct 1269 { 1270 INFO_ELE_HDR 1271 uint32 counters[NOISE_HIST_LEN]; /* This array of eight 32 bit counters describes */ 1272 /* the histogram created by the FW noise */ 1273 /* histogram engine.*/ 1274 1275 uint32 numOfLostCycles; /* This field indicates the number of measurement */ 1276 /* cycles with failure because Tx was active.*/ 1277 1278 uint32 numOfTxHwGenLostCycles; /* This field indicates the number of measurement */ 1279 /* cycles with failure because Tx (FW Generated)*/ 1280 /* was active.*/ 1281 1282 uint32 numOfRxLostCycles; /* This field indicates the number of measurement */ 1283 /* cycles because the Rx CCA was active. */ 1284 } NoiseHistResult_t; 1285 1286 /****************************************************************************** 1287 1288 Name: ACX_PD_THRESHOLD 1289 Type: Configuration 1290 Access: Write Only 1291 Length: 4 1292 1293 ******************************************************************************/ 1294 1295 typedef struct 1296 { 1297 INFO_ELE_HDR 1298 uint32 pdThreshold; /* The packet detection threshold in the PHY.*/ 1299 } ACXPacketDetection_t; 1300 1301 1302 /****************************************************************************** 1303 1304 Name: ACX_DATA_PATH_PARAMS 1305 Desc: configure Data path and Tx complete parameters 1306 Type: Configuration 1307 Access: Write Only 1308 Length: 12 1309 1310 ******************************************************************************/ 1311 typedef struct 1312 { 1313 INFO_ELE_HDR 1314 uint16 rxPacketRingChunkSize; /* size in bytes of each buffer in a */ 1315 /* multi-buffers transfer mechanism (size of */ 1316 /* largest possible packet).*/ 1317 1318 uint16 txPacketRingChunkSize; /* size in bytes of each buffer in a */ 1319 /* multi-buffers transfer mechanism (size of */ 1320 /* largest possible packet).*/ 1321 1322 uint8 rxPacketRingChunkNum; /* number of buffers in a multi-buffers */ 1323 /* transfer mechanism (2 for double buffer).*/ 1324 1325 uint8 txPacketRingChunkNum; /* number of buffers in a multi-buffers */ 1326 /* transfer mechanism (2 for double buffer).*/ 1327 1328 uint8 txCompleteThreshold; /* maximum number of packets that can be */ 1329 /* gathered in the TX complete ring before */ 1330 /* interrupt is generated.*/ 1331 1332 uint8 txCompleteRingDepth; /* number of pending (waiting to be read by*/ 1333 /* the Host) TX complete entries in cyclic ring.*/ 1334 1335 uint32 txCompleteTimeOut; /* the maximum time in micro-seconds since a */ 1336 /* packet enters the TX complete ring until */ 1337 /* interrupt is generated.*/ 1338 } ACXDataPathParams_t; 1339 1340 /****************************************************************************** 1341 1342 Name: ACX_DATA_PATH_RESP_PARAMS 1343 Desc: Get data path specific parameters. 1344 Type: Configuration 1345 Access: Read Only 1346 Length: 28 1347 Note: The interrogation of this IE can be done only after the configuration 1348 of the corresponding Data Path parameters IE. 1349 1350 ******************************************************************************/ 1351 typedef struct 1352 { 1353 INFO_ELE_HDR 1354 uint16 rxPacketRingChunkSize; /* actual size in bytes of each buffer */ 1355 /* in a multi-buffers transfer mechanism.*/ 1356 1357 uint16 txPacketRingChunkSize; /* actual size in bytes of each buffer */ 1358 /* in a multi-buffers transfer mechanism.*/ 1359 1360 uint8 rxPacketRingChunkNum; /* actual number of buffers in a */ 1361 /* multi-buffers transfer mechanism. */ 1362 1363 uint8 txPacketRingChunkNum; /* actual number of buffers in a */ 1364 /* multi-buffers transfer mechanism.*/ 1365 1366 uint8 padding[2]; /* alignment to 32bits boundry */ 1367 uint32 rxPacketRingAddr; /* base address of the the multi-buffer space.*/ 1368 1369 uint32 txPacketRingAddr; /* base address of the the multi-buffer space.*/ 1370 1371 uint32 rxControlAddr; /* address of Rx Control register.*/ 1372 1373 uint32 txControlAddr; /* address of Rx Control register.*/ 1374 1375 uint32 txCompleteAddr; /* base address of Tx Complete ring.*/ 1376 } ACXDataPathParamsResp_t; 1377 1378 /****************************************************************************** 1379 1380 Name: ACX_RATE_POLICY 1381 Type: Configuration 1382 Access: Write Only 1383 Length: 132 1384 1385 ******************************************************************************/ 1386 typedef enum 1387 { 1388 RATE_CLASS_54M, 1389 RATE_CLASS_48M, 1390 RATE_CLASS_36M, 1391 RATE_CLASS_24M, 1392 RATE_CLASS_22M, 1393 RATE_CLASS_18M, 1394 RATE_CLASS_12M, 1395 RATE_CLASS_11M, 1396 RATE_CLASS_9M, 1397 RATE_CLASS_6M, 1398 RATE_CLASS_5_5M, 1399 RATE_CLASS_2M, 1400 RATE_CLASS_1M, 1401 RATE_CLASSES_SIZE 1402 } RatePolicy_enum; 1403 #define MAX_RATE_POLICIES (8) 1404 1405 /* 1406 aflag definition 1407 bit field description 1408 ========= =========== 1409 7:3 Reserved 1410 2 Preamble Type - The type of the preamble to be used by the policy. 1411 0 - long preamble, 1412 1 - short preamble. 1413 1 Preamble Override - Indicates if the preamble type should be used in TX. 1414 0 Truncate - If set, then attempts to send a frame stop when the total 1415 valid per-rate attempts have been exhausted; 1416 otherwise transmissions will continue at the lowest available rate 1417 until the appropriate one of the Short Retry Limit, Long Retry Limit, 1418 dot11MaxTransmitMsduLifetime, or MAX TX Life Time (in ACXTIDConfig), 1419 if supported and supplied, is exhausted. 1420 */ 1421 1422 1423 /* definition of single rate policy*/ 1424 typedef struct 1425 { 1426 uint8 rateClass[RATE_CLASSES_SIZE]; /* The number of attempts for TX */ 1427 /* for each rate class. */ 1428 /* RatePolicy_enum describes the */ 1429 /* indices for the table.*/ 1430 1431 uint8 shortRetryLimit; /* The dot11ShortRetryLimit used */ 1432 /* for Tx retries.*/ 1433 1434 uint8 longRetryLimit; /* The dot11LongRetryLimit used */ 1435 /* for Tx retries. */ 1436 1437 uint8 aflags; /* Flags controlling attributes */ 1438 /* of the transmission. */ 1439 /* see above description for the */ 1440 /* structure of this field.*/ 1441 }txAttrClass_t; 1442 1443 1444 typedef struct 1445 { 1446 INFO_ELE_HDR 1447 uint32 numOfClasses; /* The number of transmission rate */ 1448 /* fallback policy classes.*/ 1449 1450 txAttrClass_t rateClasses[MAX_RATE_POLICIES]; /* Rate Policies table*/ 1451 }ACXTxAttrClasses_t; 1452 1453 1454 /****************************************************************************** 1455 1456 Name: ACX_FW_GEN_FRAME_RATES 1457 Desc: FW generated (template) frames rates and modulation. 1458 Type: Configuration 1459 Access: Write Only 1460 Length: 4 1461 1462 ******************************************************************************/ 1463 1464 /* 1465 Values for the Frame rate configuration 1466 Value Transmit Rate 1467 ===== ============= 1468 0x0A 1 Mbps 1469 0x14 2 Mbps 1470 0x37 5.5 Mbps 1471 0x6E 11 Mbps (CCK) 1472 0xDC 22 Mbps 1473 0x0B 6 Mbps 1474 0x0F 9 Mbps 1475 0x0A 12 Mbps 1476 0x0E 18 Mbps 1477 0x09 24 Mbps 1478 0x0D 36 Mbps 1479 0x08 48 Mbps 1480 0x0C 54 Mbps 1481 */ 1482 1483 /* 1484 Values for the modulation configuration 1485 Value Modulation 1486 ===== ========== 1487 0 CCK_LONG 1488 1 CCK_SHORT 1489 128 PBCC_LONG 1490 129 PBCC_SHORT 1491 64 OFDM 1492 */ 1493 1494 typedef struct 1495 { 1496 INFO_ELE_HDR 1497 uint8 txCtrlFrmRate; /* This field indicates the rate at which the WiLink */ 1498 /* transmits RTS, CTS, PS Poll and QoS-Null frames. */ 1499 /* Valid values are listed in the above table.*/ 1500 1501 uint8 txCtrlFrmMod; /* Modultion type for the above template frame. */ 1502 /* Valid values are listed in the above table.*/ 1503 1504 uint8 txMgmtFrmRate; /* This field indicates the rate at which the WiLink */ 1505 /* transmits beacon, probe response frames. */ 1506 /* If the host is configuring the WiLink as an AP or Ad Hoc */ 1507 /* STA, you must configure the beacon template before the */ 1508 /* START/JOIN command is issued. */ 1509 /* Valid values are listed in the above table.*/ 1510 1511 uint8 txMgmtFrmMod; /* Modultion type for the above template frame.*/ 1512 /* Valid values are listed in the above table.*/ 1513 }ACXFwGeneratedFrameRates_t; 1514 1515 /****************************************************************************** 1516 1517 Name: ACX_CTS_PROTECTION 1518 Type: Configuration 1519 Access: Write Only 1520 Length: 1 1521 1522 ******************************************************************************/ 1523 1524 typedef struct 1525 { 1526 INFO_ELE_HDR 1527 uint8 ctsProtectMode; /* This field is a flag enabling or disabling the*/ 1528 /* CTS-to-self protection mechanism:*/ 1529 /* 0 - disable, 1 - enable*/ 1530 uint8 padding[3]; /* alignment to 32bits boundry */ 1531 }ACXCtsProtection_t; 1532 1533 /****************************************************************************** 1534 1535 Name: ACX_SLEEP_AUTH 1536 Desc: configuration of sleep authorization level 1537 Type: System Configuration 1538 Access: Write Only 1539 Length: 1 1540 1541 ******************************************************************************/ 1542 1543 typedef struct 1544 { 1545 INFO_ELE_HDR 1546 uint8 sleepAuth; /* The sleep level authorization of the device. */ 1547 /* 0 - Always active*/ 1548 /* 1 - Power down mode: light / fast sleep*/ 1549 /* 2 - ELP mode: Deep / Max sleep*/ 1550 1551 uint8 padding[3]; /* alignment to 32bits boundry */ 1552 }ACXSleepAuth_t; 1553 1554 /****************************************************************************** 1555 1556 Name: ACX_PREAMBLE_TYPE 1557 Type: Configuration 1558 Access: Write Only 1559 Length: 1 1560 1561 ******************************************************************************/ 1562 1563 typedef enum 1564 { 1565 ACX_PREAMBLE_LONG = 0, 1566 ACX_PREAMBLE_SHORT = 1, 1567 ACX_DEFAULT_PREAMBLE = ACX_PREAMBLE_LONG 1568 } Preamble_enum; 1569 1570 #ifdef HOST_COMPILE 1571 typedef uint8 Preamble_e; 1572 #else 1573 typedef Preamble_enum Preamble_e; 1574 #endif 1575 1576 1577 typedef struct 1578 { 1579 INFO_ELE_HDR 1580 Preamble_e preamble; /* When set, the WiLink transmits beacon, probe response, */ 1581 /* RTS and PS Poll frames with a short preamble. */ 1582 /* When clear, the WiLink transmits the frame with a long */ 1583 /* preamble.*/ 1584 uint8 padding[3]; /* alignment to 32bits boundry */ 1585 } ACXPreamble_t; 1586 1587 1588 /****************************************************************************** 1589 1590 Name: ACX_CCA_THRESHOLD 1591 Type: Configuration 1592 Access: Write Only 1593 Length: 2 1594 1595 ******************************************************************************/ 1596 1597 typedef struct 1598 { 1599 INFO_ELE_HDR 1600 uint16 rxCCAThreshold; /* The Rx Clear Channel Assessment threshold in the PHY*/ 1601 /* (the energy threshold).*/ 1602 Bool_e txEnergyDetection; 1603 uint8 padding; 1604 } ACXEnergyDetection_t; 1605 1606 1607 /****************************************************************************** 1608 1609 Name: ACX_EVENT_MBOX_MASK 1610 Type: Operation 1611 Access: Write Only 1612 Length: 8 1613 1614 ******************************************************************************/ 1615 1616 typedef struct 1617 { 1618 INFO_ELE_HDR 1619 uint32 lowEventMask; /* Indicates which events are masked and which are not*/ 1620 /* Refer to EventMBoxId_enum in public_event_mbox.h.*/ 1621 1622 uint32 highEventMask; /* Not in use (should always be set to 0xFFFFFFFF).*/ 1623 } ACXEventMboxMask_t; 1624 1625 1626 /****************************************************************************** 1627 1628 Name: ACX_WR_TBTT_AND_DTIM 1629 Type: Configuration 1630 Access: Write Only 1631 Length: 3 1632 Note: STA Only 1633 1634 ******************************************************************************/ 1635 #ifdef FW_RUNNING_AS_STA 1636 typedef struct 1637 { 1638 INFO_ELE_HDR 1639 uint16 tbtt; /* Time in TUs between two consecutive Beacons*/ 1640 uint8 dtimInterval; /* DTIM interval: */ 1641 /* For BSS: Number of TBTTs in a DTIM period (range: 1-10).*/ 1642 /* For IBSS: value shall be set to 1.*/ 1643 uint8 padding; /* alignment to 32bits boundry */ 1644 } ACXDtimPeriodCfg_t; 1645 #endif 1646 1647 /****************************************************************************** 1648 1649 Name: ACX_DTIM_PERIOD 1650 Type: Configuration 1651 Access: Write Only 1652 Length: 2 1653 Note: for AP only !!! 1654 1655 ******************************************************************************/ 1656 #ifdef FW_RUNNING_AS_AP 1657 typedef struct 1658 { 1659 uint16 dtimPeriod; 1660 uint8 padding[2]; /* alignment to 32bits boundry */ 1661 } ACXDtimPeriodCfg_t; 1662 #endif 1663 1664 1665 /****************************************************************************** 1666 1667 Name: ACX_ACI_OPTION_CFG 1668 Type: Configuration 1669 Access: Write Only 1670 Length: 6 1671 Note: OBSOLETE !!! (for 1251) 1672 1673 ******************************************************************************/ 1674 1675 typedef struct 1676 { 1677 INFO_ELE_HDR 1678 uint8 ACIMode; 1679 uint8 inputCCA; 1680 uint8 txCCA; 1681 uint8 qualifiedCCA; 1682 uint8 stompForRx; 1683 uint8 stompForTx; 1684 uint8 padding[2]; /* alignment to 32bits boundry */ 1685 } ACXConfigACI_t; 1686 1687 1688 /****************************************************************************** 1689 1690 Name: ACX_PM_CFG 1691 Desc: Configure the power managment option. 1692 Type: Configuration 1693 Access: Write Only 1694 Length: 16 1695 Note: ??? (To Be Documented) 1696 1697 ******************************************************************************/ 1698 1699 typedef struct 1700 { 1701 INFO_ELE_HDR 1702 Bool32 ELPEnable; 1703 Bool32 WakeOnGPIOenable; 1704 uint32 BBWakeUpTime; 1705 uint32 PLLlockTime; 1706 } ACXConfigPM_t; 1707 1708 /****************************************************************************** 1709 1710 Name: ACX_CONN_MONIT_PARAMS 1711 Desc: This information element configures the SYNCHRONIZATION_TIMEOUT 1712 interrupt indicator. It configures the number of missed Beacons 1713 before issuing the SYNCHRONIZATION_TIMEOUT event. 1714 Type: Configuration 1715 Access: Write Only 1716 Length: 8 1717 1718 ******************************************************************************/ 1719 1720 typedef struct 1721 { 1722 INFO_ELE_HDR 1723 uint32 TSFMissedThreshold; /* The number of consecutive beacons that can be */ 1724 /* lost before the WiLink raises the */ 1725 /* SYNCHRONIZATION_TIMEOUT event.*/ 1726 1727 uint32 BSSLossTimeout; /* The delay (in time units) between the time at */ 1728 /* which the device issues the SYNCHRONIZATION_TIMEOUT*/ 1729 /* event until, if no probe response or beacon is */ 1730 /* received a BSS_LOSS event is issued.*/ 1731 } AcxConnectionMonitorOptions; 1732 1733 /****************************************************************************** 1734 1735 Name: ACX_CONS_TX_FAILURE 1736 Desc: This information element configures the number of frames transmission 1737 failures before issuing the "Max Tx Retry" event. The counter is 1738 incremented only for unicast frames or frames that require Ack 1739 Type: Configuration 1740 Access: Write Only 1741 Length: 1 1742 1743 ******************************************************************************/ 1744 1745 typedef struct 1746 { 1747 INFO_ELE_HDR 1748 uint8 maxTxRetry; /* the number of frames transmission failures before */ 1749 /* issuing the "Max Tx Retry" event*/ 1750 uint8 padding[3]; /* alignment to 32bits boundry */ 1751 } ACXConsTxFailureTriggerParameters_t; 1752 1753 /****************************************************************************** 1754 1755 Name: ACX_LOW_SNR 1756 Desc: This information element configures the Low/Regained SNR interrupt 1757 indicator. 1758 Type: Configuration 1759 Access: Write Only 1760 Length: 4 1761 Note: To Be Documented 1762 1763 ******************************************************************************/ 1764 1765 typedef enum 1766 { 1767 LOW_SNR_EVENT_LEVEL = 0, 1768 LOW_SNR_EVENT_EDGE = 1 1769 } LowSNREventType_enum; 1770 1771 1772 #ifdef HOST_COMPILE 1773 typedef uint8 LowSNREventType_e; 1774 #else 1775 typedef LowSNREventType_enum LowSNREventType_e; 1776 #endif 1777 1778 1779 typedef struct 1780 { 1781 INFO_ELE_HDR 1782 uint8 SNRThreshold; 1783 uint8 SNRFilterWeight; 1784 uint8 SNRFilterDepth; 1785 LowSNREventType_e LowSNREventType; 1786 } ACXLowSNRTriggerParameters_t; 1787 1788 1789 /****************************************************************************** 1790 1791 Name: ACX_BCN_DTIM_OPTIONS 1792 Type: Configuration 1793 Access: Write Only 1794 Length: 5 1795 1796 ******************************************************************************/ 1797 1798 typedef struct 1799 { 1800 INFO_ELE_HDR 1801 uint16 beaconRxTimeOut; 1802 uint16 broadcastTimeOut; 1803 uint8 rxBroadcastInPS; /* if set, enables receive of broadcast packets */ 1804 /* in Power-Save mode.*/ 1805 uint8 consecutivePsPollDeliveryFailureThr; /* Consecutive PS Poll Fail before updating the Driver */ 1806 uint8 padding[2]; /* alignment to 32bits boundry */ 1807 } ACXBeaconAndBroadcastOptions_t; 1808 1809 1810 /****************************************************************************** 1811 1812 Name: ACX_SG_ENABLE 1813 Desc: This command instructs the WiLink to set the Soft Gemini (BT co-existence) 1814 state to either enable/disable or sense mode. 1815 Type: Configuration 1816 Access: Write Only 1817 Length: 1 1818 1819 ******************************************************************************/ 1820 typedef struct 1821 { 1822 INFO_ELE_HDR 1823 uint8 Enable; /* specifies whether the SG feature will be enabled (0), */ 1824 /* disabled(1), in a "sense not active" (3) mode in which */ 1825 /* upon seeing BT activity a host interrupt will be sent or*/ 1826 /* in a "sense active" (4) mode which specifies the device */ 1827 /* should switch on the SG in response to the driver receiving */ 1828 /* the host interrupt. */ 1829 uint8 padding[3]; /* alignment to 32bits boundry */ 1830 } ACXBluetoothWlanCoEnableStruct; 1831 1832 /****************************************************************************** 1833 1834 Name: ACX_ANTENNA_DIVERSITY_CFG 1835 Desc: Set antenna diversity parameters 1836 Type: Configuration 1837 Access: Write Only 1838 Length: 7 1839 Note: ??? (To Be Documented) 1840 1841 ******************************************************************************/ 1842 1843 /* Antenna Diversity Tx definitions*/ 1844 typedef enum 1845 { 1846 DIVS_TX_START_ANT1 = 0, /* Start TX antenna 1.*/ 1847 DIVS_TX_START_ANT2 = 1, /* Start TX antenna 2.*/ 1848 DIVS_TX_START_SWITCH = 2 /* Switch starting Tx Antenna. */ 1849 } TxAntDivsStartOption_enum; 1850 1851 1852 /* Antenna Diversity Rx definitions*/ 1853 typedef enum 1854 { 1855 DIVS_RX_START_ANT1 = 0, /* Start RX antenna 1.*/ 1856 DIVS_RX_START_ANT2 = 1, /* Start RX antenna 2.*/ 1857 DIVS_RX_START_LAST_RX = 2, /* Start RX Last RX Antenna mode.*/ 1858 DIVS_RX_START_SWITCH = 3 /* Switch starting Rx Antenna. */ 1859 } RxAntDivsStartOption_enum; 1860 1861 #ifdef HOST_COMPILE 1862 typedef uint8 RxAntDivsStartOption_e; 1863 typedef uint8 TxAntDivsStartOption_e; 1864 #else 1865 typedef RxAntDivsStartOption_enum RxAntDivsStartOption_e; 1866 typedef TxAntDivsStartOption_enum TxAntDivsStartOption_e; 1867 #endif 1868 1869 typedef struct 1870 { 1871 INFO_ELE_HDR 1872 uint8 enableRxDiversity; 1873 RxAntDivsStartOption_e rxSelectedAntenna; 1874 uint8 enableTxDiversity; 1875 TxAntDivsStartOption_e txSelectedAntenna; 1876 uint8 rxAntNum; 1877 uint8 txAntNum; 1878 uint8 rxTxSharedAnts; 1879 uint8 padding; /* alignment to 32bits boundry */ 1880 } AcxSetAntennaDiversityOptions_t; 1881 1882 1883 1884 /****************************************************************************** 1885 1886 Name: ACX_SG_CFG 1887 Desc: This command instructs the WiLink to set the Soft Gemini (BT co-existence) 1888 parameters to the desired values. 1889 Type: Configuration 1890 Access: Write Only 1891 Length: 1 1892 1893 ******************************************************************************/ 1894 typedef struct 1895 1896 { 1897 INFO_ELE_HDR 1898 RateIndex_e wlanRxMinConvertedRateToRespectBtHp; /* Range: 802.11 b,g Rates*/ 1899 /* The minimum rate of a received WLAN packet in the STA, */ 1900 /* during protective mode, of which a new BT-HP request */ 1901 /* during this Rx will always be respected and gain the antenna*/ 1902 1903 uint16 btHpMaxTime; /* the maximum length of time the BT HP */ 1904 /* will be respected (Limitation on BT */ 1905 /* HP time, afterwards will switch to LP).*/ 1906 1907 uint16 wlanHpMaxTime; /* the maximum length of time the WLAN HP*/ 1908 /* will be respected (Limitation on WLAN */ 1909 /* HP time, afterwards will switch to LP).*/ 1910 1911 uint16 senseDisableTimer; /* The time after the last BT activity */ 1912 /* when the sense mode will return the */ 1913 /* SG state to "SENSE_INACTIVE"*/ 1914 1915 uint16 protectiveRxTimeBeforeBtHp; /* The time before the next BT HP */ 1916 /* instance in which to send the fast */ 1917 /* CTS.*/ 1918 1919 uint16 protectiveTxTimeBeforeBtHp; /* The time before the next BT HP */ 1920 /* instance in which to suspend the */ 1921 /* WLAN TX*/ 1922 1923 uint16 protectiveRxTimeBeforeBtHpFastAp; /* range: 10-20000 default: 1500*/ 1924 uint16 protectiveTxTimeBeforeBtHpFastAp; /* range: 10-20000 default: 3000*/ 1925 uint16 protectiveWlanCycleTimeForFastAp; /* range: 2000-65535 default: 8700*/ 1926 uint16 btAntiStarvationPeriod; /* range: 0 - 15000 (Msec) default: 1000 */ 1927 uint16 timeoutNextBtLpPacket; /* range 400-10000(Usec) default: 3000 */ 1928 1929 uint16 wakeUpTimeBeforeBeacon; /* The default value is worse case of */ 1930 /* BT DH5 traffic */ 1931 uint16 hpdmMaxGuardTime; /* range: 0-50000(Usec) default: 1050*/ 1932 1933 uint16 timeoutNextWlanPacket; /* Range: 100-50000(Usec) default:2550*/ 1934 /* This timeout purpose is to prevent both BT & WLAN */ 1935 /* antenna starvation. */ 1936 1937 uint8 sgAntennaType; /* "0" - shared antenna ; */ 1938 /* "1" - dual antenna.*/ 1939 1940 uint8 signalingType; /* "0" - TI legacy signaling ; */ 1941 /* "1" - Palau signaling */ 1942 1943 uint8 afhLeverageOn; /* How to receive information regarding */ 1944 /* the AFH status of the BT. */ 1945 /* "0" - no AFH;*/ 1946 /* "1" - from dedicated GPIO.*/ 1947 /* "2" - AFH on (from host).*/ 1948 1949 uint8 numberQuietCycle; /* the number of cycles during which no*/ 1950 /* TX will be sent after 1 cycle of RX */ 1951 /* transaction in protective mode*/ 1952 1953 uint8 maxNumCts; /* The maximum number of CTSs that will*/ 1954 /* be sent for receiving RX packet in */ 1955 /* protective mode*/ 1956 1957 uint8 numberOfWlanPackets; /* The number of WLAN packets */ 1958 /* transferred in common mode before */ 1959 /* switching to the BT.*/ 1960 1961 uint8 numberOfBtPackets; /* The number of BT packets transferred*/ 1962 /* in common mode before switching to */ 1963 /* the WLAN.*/ 1964 1965 uint8 numberOfMissedRxForAvalancheTrigger; /* range: 1-255 default: 5*/ 1966 uint8 wlanElpHpSupport; /* range: 0-1 default: 1*/ 1967 1968 uint8 btAntiStarvationNumberOfCyclesWithinThePeriod; /* range: 0 - 15 default: 4 */ 1969 1970 uint8 ackModeDuringBtLpInDualAnt; /* 0 or 1 */ 1971 1972 1973 Bool_e allowPaSdToggleDuringBtActivityEnable; /* Allow PA_SD assertion/de-assertion */ 1974 /* during enabled BT activity */ 1975 1976 Bool_e sgAutoModeNoCts; /* Enable/Disable SG2.0 in auto mode: */ 1977 /* Support Both Active & P.S modes */ 1978 1979 uint8 numOfBtHpRespectedReq; /*range: 0 - 20 default: 1*/ 1980 1981 } ACXBluetoothWlanCoParamsStruct; 1982 1983 1984 1985 /****************************************************************************** 1986 1987 Name: ACX_TSF_INFO 1988 Type: Operation 1989 Access: Read Only 1990 Length: 20 1991 1992 ******************************************************************************/ 1993 typedef struct ACX_fwTSFInformation 1994 { 1995 INFO_ELE_HDR 1996 uint32 CurrentTSFHigh; 1997 uint32 CurrentTSFLow; 1998 uint32 lastTBTTHigh; 1999 uint32 lastTBTTLow; 2000 uint8 LastDTIMCount; 2001 uint8 padding[3]; /* alignment to 32bits boundry */ 2002 }ACX_fwTSFInformation_t; 2003 2004 2005 2006 2007 /****************************************************************************** 2008 2009 Name: ACX_GPIO_CFG 2010 Type: Board Configuration 2011 Access: Write Only 2012 Length: 2 2013 Note: Not in use !!! 2014 2015 ******************************************************************************/ 2016 2017 #ifndef _WINDOWS 2018 #define GPIO_DIR_OUTPUT 0 2019 #define GPIO_DIR_INPUT 1 2020 #endif /* ifndef _WINDOWS */ 2021 2022 typedef struct 2023 { 2024 INFO_ELE_HDR 2025 uint8 number; 2026 uint8 direction; 2027 uint8 padding[2]; /* alignment to 32bits boundry */ 2028 } ACXConfigGPIO_t; 2029 2030 2031 /****************************************************************************** 2032 2033 Name: ACX_GPIO_SET 2034 Type: Board Configuration 2035 Access: Write Only 2036 Length: 2 2037 Note: Not in use !!! 2038 2039 ******************************************************************************/ 2040 2041 typedef struct 2042 { 2043 INFO_ELE_HDR 2044 uint8 number; 2045 uint8 value; 2046 uint8 padding[2]; /* alignment to 32bits boundry */ 2047 } ACXSetGPIO_t; 2048 2049 /****************************************************************************** 2050 2051 Name: ACX_MISC_CFG 2052 Type: Board Configuration 2053 Access: Read/Write 2054 Length: 8 2055 Note: GPIO_OUT bits to be used for LEDs are defined in the 2056 NVS Miscellaneous table. An API to NVS is used by the 2057 LED-Init routine to fill this table with the LED bit values. 2058 Not in use !!! 2059 2060 ******************************************************************************/ 2061 2062 typedef struct 2063 { 2064 INFO_ELE_HDR 2065 uint16 txActivityLed; /* GPIO_OUT bit for this LED*/ 2066 uint16 fwInitLed; /* GPIO_OUT bit for this LED*/ 2067 uint16 diagnosticLed; /* GPIO_OUT bit for this LED*/ 2068 uint16 faaRadioOffGpio; /* GPIO_OUT bit for the FAA Radio Off feature*/ 2069 } ACXMisc_t; 2070 2071 2072 /****************************************************************************** 2073 2074 Name: ACX_BET_ENABLE 2075 Desc: Enable or Disable the Beacon Early Termination module. In addition initialized the 2076 Max Dropped beacons parameter 2077 Type: Configuration 2078 Access: Write 2079 Length: 6 2080 Note: 2081 ******************************************************************************/ 2082 typedef struct 2083 2084 { 2085 INFO_ELE_HDR 2086 uint8 Enable; /* specifies if beacon early termination procedure is enabled or disabled: 0 disabled, 1 enabled */ 2087 uint8 MaximumConsecutiveET; /* specifies the maximum number of consecutive beacons that may be early terminated. After this number is reached 2088 at least one full beacon must be correctly received in FW before beacon ET resumes. Legal range: 0 255 */ 2089 uint8 padding[2]; 2090 }ACXBet_Enable_t; 2091 2092 2093 /****************************************************************************** 2094 2095 Name: DOT11_STATION_ID 2096 Desc: This information element specifies the MAC Address assigned to the STA. 2097 This default value is the permanent MAC address that is stored in the 2098 adaptor's non volatile memory. The host can change the MAC address; 2099 however, the WiLink always reverts to the default value after power up 2100 or reset. 2101 Type: Configuration 2102 Access: Read / Write 2103 Length: 6 2104 Note: The byte order of the MAC address must be reversed in this field. 2105 For example, if the MAC address is 00 7E 99 11 22 33, this field must 2106 read 33 22 11 99 7E 00. 2107 2108 ******************************************************************************/ 2109 2110 typedef struct 2111 { 2112 INFO_ELE_HDR 2113 uint8 dot11StationID[6]; /* The MAC address for the STA.*/ 2114 uint8 padding[2]; /* alignment to 32bits boundry */ 2115 } dot11StationIDStruct; 2116 2117 2118 /****************************************************************************** 2119 2120 Name: DOT11_RX_MSDU_LIFE_TIME 2121 Type: Operation 2122 Access: Write Only 2123 Length: 4 2124 2125 ******************************************************************************/ 2126 2127 typedef struct 2128 { 2129 INFO_ELE_HDR 2130 uint32 RxMsduLifeTime; /* The maximum amount of time, in TU, that the WiLink */ 2131 /* should attempt to collect fragments of an MSDU before */ 2132 /* discarding them. */ 2133 /* The default value for this field is 512.*/ 2134 } dot11RxMsduLifeTime_t; 2135 2136 2137 /****************************************************************************** 2138 2139 Name: DOT11_CUR_TX_PWR 2140 Desc: This IE indicates the maximum TxPower in Dbm/10 currently being used to transmit data. 2141 Type: Operation 2142 Access: Write Only 2143 Length: 1 2144 2145 ******************************************************************************/ 2146 2147 typedef struct 2148 { 2149 INFO_ELE_HDR 2150 uint8 dot11CurrentTxPower; /* the max Power in Dbm/10 to be used to transmit data.*/ 2151 uint8 padding[3]; /* alignment to 32bits boundry */ 2152 } dot11CurrentTxPowerStruct ; 2153 2154 2155 2156 /****************************************************************************** 2157 2158 Name: DOT11_DEFAULT_KEY 2159 Desc: This information element indicates the default key to use to encrypt 2160 transmit frames. 2161 Type: Configuration 2162 Access: Write Only 2163 Length: 1 2164 2165 ******************************************************************************/ 2166 2167 typedef enum 2168 { 2169 DEFAULT_KEY_0 = 0, 2170 DEFAULT_KEY_1, 2171 DEFAULT_KEY_2, 2172 DEFAULT_KEY_3, 2173 MAX_NUM_WEP_DEFAULT_KEY 2174 } DefaultKey_enum; 2175 2176 #ifdef HOST_COMPILE 2177 typedef uint8 DefaultKey_e; 2178 #else 2179 typedef DefaultKey_enum DefaultKey_e; 2180 #endif 2181 2182 typedef struct 2183 { 2184 INFO_ELE_HDR 2185 DefaultKey_e DefaultKeyId; /* refer to DefaultKey_enum*/ 2186 uint8 padding[3]; /* alignment to 32bits boundry */ 2187 } dot11WEPDefaultKeyId_t; 2188 2189 2190 /****************************************************************************** 2191 2192 Name: DOT11_RX_DOT11_MODE 2193 Desc: This IE indicates the current Rx Mode used by DSSS PHY. 2194 Type: Configuration 2195 Access: Write Only 2196 Length: 4 2197 2198 ******************************************************************************/ 2199 /* 2200 Possible values for Rx DOT11 Mode are the following: 2201 Value Description 2202 ===== =========== 2203 3 11g - processing of both a and b packet formats is enabled 2204 2 11b - processing of b packet format is enabled 2205 1 11a - processing of a packet format is enabled 2206 0 undefined 2207 */ 2208 2209 typedef struct 2210 { 2211 INFO_ELE_HDR 2212 uint32 dot11RxDot11Mode; /* refer to above table*/ 2213 } dot11RxDot11ModeStruct; 2214 2215 2216 /****************************************************************************** 2217 2218 Name: DOT11_RTS_THRESHOLD 2219 Type: Configuration 2220 Access: Write Only 2221 Length: 2 2222 2223 ******************************************************************************/ 2224 2225 typedef struct 2226 { 2227 INFO_ELE_HDR 2228 uint16 RTSThreshold; /* The number of octets in an MPDU, below which an */ 2229 /* RTS/CTS handshake is not performed.*/ 2230 2231 uint8 padding[2]; /* alignment to 32bits boundry */ 2232 }dot11RTSThreshold_t; 2233 2234 2235 /****************************************************************************** 2236 2237 Name: DOT11_GROUP_ADDRESS_TBL 2238 Desc: The variable lengths of MAC addresses that are define as listening for 2239 multicast. The field Number of groups identifies how many MAC Addresses 2240 are relevant in that information element. 2241 Type: Configuration 2242 Access: Write Only 2243 Length: up to 50 bytes 2244 2245 ******************************************************************************/ 2246 #define ADDRESS_GROUP_MAX (8) 2247 #define ADDRESS_GROUP_MAX_LEN (6 * ADDRESS_GROUP_MAX) 2248 typedef struct 2249 { 2250 INFO_ELE_HDR 2251 uint8 fltrState; /* 1 - multicast filtering is enabled. */ 2252 /* 0 - multicast filtering is disabled.*/ 2253 2254 uint8 numOfGroups; /* number of relevant multicast */ 2255 /* addresses.*/ 2256 2257 uint8 padding[2]; /* alignment to 32bits boundary */ 2258 uint8 dataLocation[ADDRESS_GROUP_MAX_LEN]; /* table of MAC addresses.*/ 2259 }dot11MulticastGroupAddrStart_t; 2260 2261 /****************************************************************************** 2262 2263 ACX_CONFIG_PS_WMM (Patch for Wi-Fi Bug) 2264 2265 ******************************************************************************/ 2266 2267 typedef struct 2268 { 2269 INFO_ELE_HDR 2270 Bool32 ConfigPsOnWmmMode; /* TRUE - Configure PS to work on WMM mode - do not send the NULL/PS_POLL 2271 packets even if TIM is set. 2272 FALSE - Configure PS to work on Non-WMM mode - work according to the 2273 standard. */ 2274 } IEConfigPsWmm_t; 2275 2276 /****************************************************************************** 2277 2278 ACX_SET_RX_DATA_FILTER 2279 2280 ******************************************************************************/ 2281 /* data filter action */ 2282 2283 #ifdef HOST_COMPILE 2284 2285 #define FILTER_DROP 0 2286 #define FILTER_SIGNAL 1 2287 #define FILTER_FW_HANDLE 2 2288 2289 #else 2290 2291 typedef enum { 2292 FILTER_DROP = 0, 2293 FILTER_SIGNAL , 2294 FILTER_FW_HANDLE, 2295 FILTER_MAX = 0xFF 2296 }filter_enum; 2297 2298 #endif 2299 2300 #ifdef HOST_COMPILE 2301 typedef uint8 filter_e; 2302 #else 2303 typedef filter_enum filter_e; 2304 #endif 2305 2306 /* data filter command */ 2307 #define REMOVE_FILTER 0 2308 #define ADD_FILTER 1 2309 2310 /* limitation */ 2311 #define MAX_DATA_FILTERS 4 2312 #define MAX_DATA_FILTER_SIZE 90 2313 2314 typedef struct 2315 { 2316 INFO_ELE_HDR 2317 uint8 command; // 0-remove, 1-add 2318 uint8 index; 2319 filter_e action; 2320 uint8 numOfFields; 2321 uint8 FPTable; //filter fields starts here. unknown size. 2322 } DataFilterConfig_t; 2323 2324 /****************************************************************************** 2325 2326 ACX_ENABLE_RX_DATA_FILTER 2327 2328 ******************************************************************************/ 2329 2330 typedef struct 2331 { 2332 INFO_ELE_HDR 2333 uint8 enable; 2334 filter_e action; 2335 } DataFilterDefault_t; 2336 2337 2338 /****************************************************************************** 2339 2340 ACX_GET_DATA_FILTER_STATISTICS 2341 2342 ******************************************************************************/ 2343 2344 typedef struct 2345 { 2346 INFO_ELE_HDR 2347 uint32 unmatchedPacketsCount; 2348 uint32 matchedPacketsCount[MAX_DATA_FILTERS]; 2349 } ACXDataFilteringStatistics_t; 2350 2351 2352 /****************************************************************************** 2353 2354 Name: ACX_POWER_LEVEL_TABLE 2355 Desc: Retrieve Maximum Dbm per power level and sub-band. 2356 Type: Configuration 2357 Access: Read Only 2358 Length: 20 2359 2360 ******************************************************************************/ 2361 2362 typedef struct 2363 { 2364 INFO_ELE_HDR 2365 2366 uint8 txPowerTable[NUM_OF_SUB_BANDS][NUM_OF_POWER_LEVEL]; /* Maximun Dbm in Dbm/10 units */ 2367 } PowerLevelTable_t; 2368 2369 2370 /****************************************************************************** 2371 2372 Name: ACX_PWR_CONSUMPTION_STATISTICS 2373 Desc: Retrieve time statistics of the different power states. 2374 Type: Configuration 2375 Access: Read Only 2376 Length: 20 2377 2378 ******************************************************************************/ 2379 2380 typedef struct 2381 { 2382 INFO_ELE_HDR 2383 uint32 activeTimeCnt_Low; 2384 uint32 activeTimeCnt_Hi; 2385 uint32 powerDownTimeCnt_Low; 2386 uint32 powerDownTimeCnt_Hi; 2387 uint32 elpTimeCnt_Low; 2388 uint32 elpTimeCnt_Hi; 2389 }ACXPowerConsumptionTimeStat_t; 2390 2391 #endif // PUBLIC_INFOELE_H 2392 2393