1/* 2 * public_infoele.h 3 * 4 * Copyright(c) 1998 - 2009 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 FILENAME: public_infoele.h 37 38 DESCRIPTION: Contains information element defines/structures used by the FW and host. 39 40 41 42***********************************************************************************************************************/ 43#ifndef PUBLIC_INFOELE_H 44#define PUBLIC_INFOELE_H 45 46 47#include "public_types.h" 48#include "public_commands.h" 49#include "public_radio.h" 50 51typedef enum 52{ 53 ACX_WAKE_UP_CONDITIONS = 0x0002, 54 ACX_MEM_CFG = 0x0003, 55 ACX_SLOT = 0x0004, 56 57 ACX_AC_CFG = 0x0007, 58 ACX_MEM_MAP = 0x0008, 59 ACX_AID = 0x000A, 60 61 ACX_MEDIUM_USAGE = 0x000F, 62 ACX_RX_CFG = 0x0010, 63 ACX_TX_QUEUE_CFG = 0x0011, 64 ACX_STATISTICS = 0x0013, /* Debug API*/ 65 ACX_PWR_CONSUMPTION_STATISTICS =0x0014, 66 ACX_FEATURE_CFG = 0x0015, 67 ACX_TID_CFG = 0x001A, 68 ACX_PS_RX_STREAMING = 0x001B, 69 ACX_BEACON_FILTER_OPT = 0x001F, 70 ACX_NOISE_HIST = 0x0021, 71 ACX_HDK_VERSION = 0x0022, /* ???*/ 72 ACX_PD_THRESHOLD = 0x0023, 73 ACX_TX_CONFIG_OPT = 0x0024, 74 ACX_CCA_THRESHOLD = 0x0025, 75 ACX_EVENT_MBOX_MASK = 0x0026, 76 ACX_CONN_MONIT_PARAMS = 0x002D, 77 ACX_CONS_TX_FAILURE = 0x002F, 78 ACX_BCN_DTIM_OPTIONS = 0x0031, 79 ACX_SG_ENABLE = 0x0032, 80 ACX_SG_CFG = 0x0033, 81 ACX_FM_COEX_CFG = 0x0034, 82 83 ACX_BEACON_FILTER_TABLE = 0x0038, 84 ACX_ARP_IP_FILTER = 0x0039, 85 ACX_ROAMING_STATISTICS_TBL = 0x003B, 86 ACX_RATE_POLICY = 0x003D, 87 ACX_CTS_PROTECTION = 0x003E, 88 ACX_SLEEP_AUTH = 0x003F, 89 ACX_PREAMBLE_TYPE = 0x0040, 90 ACX_ERROR_CNT = 0x0041, 91 ACX_IBSS_FILTER = 0x0044, 92 ACX_SERVICE_PERIOD_TIMEOUT = 0x0045, 93 ACX_TSF_INFO = 0x0046, 94 ACX_CONFIG_PS_WMM = 0x0049, 95 ACX_ENABLE_RX_DATA_FILTER = 0x004A, 96 ACX_SET_RX_DATA_FILTER = 0x004B, 97 ACX_GET_DATA_FILTER_STATISTICS = 0x004C, 98 ACX_RX_CONFIG_OPT = 0x004E, 99 ACX_FRAG_CFG = 0x004F, 100 ACX_BET_ENABLE = 0x0050, 101 102#ifdef RADIO_SCOPE /* RADIO MODULE SECTION START */ 103 104 ACX_RADIO_MODULE_START = 0x0500, 105 ACX_RS_ENABLE = ACX_RADIO_MODULE_START, 106 ACX_RS_RX = 0x0501, 107 108 /* Add here ... */ 109 110 ACX_RADIO_MODULE_END = 0x0600, 111 112#endif /* RADIO MODULE SECTION END */ 113 114 ACX_RSSI_SNR_TRIGGER = 0x0051, 115 ACX_RSSI_SNR_WEIGHTS = 0x0052, 116 ACX_KEEP_ALIVE_MODE = 0x0053, 117 ACX_SET_KEEP_ALIVE_CONFIG = 0x0054, 118 ACX_BA_SESSION_RESPONDER_POLICY = 0x0055, 119 ACX_BA_SESSION_INITIATOR_POLICY = 0x0056, 120 ACX_PEER_HT_CAP = 0x0057, 121 ACX_HT_BSS_OPERATION = 0x0058, 122 ACX_COEX_ACTIVITY = 0x0059, 123 ACX_SET_SMART_REFLEX_DEBUG = 0x005A, 124 ACX_SET_SMART_REFLEX_STATE = 0x005B, 125 ACX_SET_SMART_REFLEX_PARAMS = 0x005F, 126 ACX_BURST_MODE = 0x005C, 127 128 ACX_SET_RATE_MAMAGEMENT_PARAMS = 0x005D, 129 ACX_GET_RATE_MAMAGEMENT_PARAMS = 0x005E, 130 131 DOT11_RX_MSDU_LIFE_TIME = 0x1004, 132 DOT11_CUR_TX_PWR = 0x100D, 133 DOT11_RX_DOT11_MODE = 0x1012, 134 DOT11_RTS_THRESHOLD = 0x1013, 135 DOT11_GROUP_ADDRESS_TBL = 0x1014, 136 ACX_SET_RADIO_PARAMS = 0x1015, 137 ACX_PM_CONFIG = 0x1016, 138 139 MAX_DOT11_IE = ACX_PM_CONFIG, 140 141 MAX_IE = 0xFFFF /*force enumeration to 16bits*/ 142} InfoElement_enum; 143 144 145#ifdef HOST_COMPILE 146typedef uint16 InfoElement_e; 147#else 148typedef InfoElement_enum InfoElement_e; 149#endif 150 151 152typedef struct 153{ 154 InfoElement_e id; 155 uint16 length; 156 uint32 dataLoc; /*use this to point to for following variable-length data*/ 157} InfoElement_t; 158 159 160typedef struct 161{ 162 uint16 id; 163 uint16 len; 164} EleHdrStruct; 165 166#define MAX_NUM_AID 4 /* max number of STAs in IBSS */ 167 168 169#ifdef HOST_COMPILE 170#define INFO_ELE_HDR EleHdrStruct EleHdr; 171#else 172#define INFO_ELE_HDR 173#endif 174 175/****************************************************************************** 176 177 Name: ACX_WAKE_UP_CONDITIONS 178 Type: Configuration 179 Access: Write Only 180 Length: 2 181 182******************************************************************************/ 183typedef enum 184{ 185 WAKE_UP_EVENT_BEACON_BITMAP = 0x01, /* Wake on every Beacon*/ 186 WAKE_UP_EVENT_DTIM_BITMAP = 0x02, /* Wake on every DTIM*/ 187 WAKE_UP_EVENT_N_DTIM_BITMAP = 0x04, /* Wake on every Nth DTIM (Listen interval)*/ 188 WAKE_UP_EVENT_N_BEACONS_BITMAP = 0x08, /* Wake on every Nth Beacon (Nx Beacon)*/ 189 WAKE_UP_EVENT_BITS_MASK = 0x0F 190} WakeUpEventBitMask_e; 191 192typedef struct 193{ 194 INFO_ELE_HDR 195 uint8 wakeUpConditionBitmap; /* The host can set one bit only. */ 196 /* WakeUpEventBitMask_e describes the Possible */ 197 /* Wakeup configuration bits*/ 198 199 uint8 listenInterval; /* 0 for Beacon and Dtim, */ 200 /* xDtims (1-10) for Listen Interval and */ 201 /* xBeacons (1-255) for NxBeacon*/ 202 uint8 padding[2]; /* alignment to 32bits boundry */ 203}WakeUpCondition_t; 204 205/****************************************************************************** 206 207 Name: ACX_MEM_CFG 208 Type: Configuration 209 Access: Write Only 210 Length: 12 211 212******************************************************************************/ 213 214typedef struct 215{ 216 INFO_ELE_HDR 217 uint8 rxMemblockNumber; /* specifies the number of memory buffers that */ 218 /* is allocated to the Rx memory pool. The */ 219 /* actual number allocated may be less than*/ 220 /* this number if there are not enough memory */ 221 /* blocks left over for the Minimum Number of */ 222 /* Tx Blocks. Returns the actual number of RX */ 223 /* buffers allocated in the memory map*/ 224 225 uint8 txMinimumMemblockNumber; /* specifies the minimum number of blocks that */ 226 /* must be allocated to the TX pool. Follows */ 227 /* this limit even if the Number of Rx Memory */ 228 /* Blocks parameter is ignored.*/ 229 230 uint8 numStations; /* The number of STAs supported in IBSS mode. */ 231 /* The FW uses this field to allocate memory */ 232 /* for STA context data such as security keys*/ 233 234 uint8 numSsidProfiles; /* The number of SSID profiles used in IBSS mode */ 235 /* Enables different profiles for different STAs */ 236 237 uint32 totalTxDescriptors; /* Total TX Descriptors - in the past it was configured per AC */ 238} ACXConfigMemory_t; 239 240 241/****************************************************************************** 242 243 Name: ACX_SLOT 244 Type: Configuration 245 Access: Write Only 246 Length: 8 247 248******************************************************************************/ 249 250typedef enum 251{ 252 SLOT_TIME_LONG = 0, /* the WiLink uses long (20 us) slots*/ 253 SLOT_TIME_SHORT = 1, /* the WiLink uses short (9 us) slots*/ 254 DEFAULT_SLOT_TIME = SLOT_TIME_SHORT, 255 MAX_SLOT_TIMES = 0xFF 256} SlotTime_enum; 257 258#ifdef HOST_COMPILE 259typedef uint8 SlotTime_e; 260#else 261typedef SlotTime_enum SlotTime_e; 262#endif 263 264 265typedef struct 266{ 267 INFO_ELE_HDR 268 uint8 woneIndex; /* reserved*/ 269 270 SlotTime_e slotTime; /* The slot size to be used. refer to SlotTime_enum. */ 271 uint8 reserved[6]; 272} ACXSlot_t; 273 274 275/****************************************************************************** 276 277 Name: ACX_AC_CFG 278 Type: Configuration 279 Access: Write Only 280 Length: 8 281 282******************************************************************************/ 283typedef enum 284{ 285 AC_BE = 0, /* Best Effort/Legacy*/ 286 AC_BK = 1, /* Background*/ 287 AC_VI = 2, /* Video*/ 288 AC_VO = 3, /* Voice*/ 289 /* AC_BCAST = 4, */ /* Broadcast dummy access category */ 290 AC_CTS2SELF = 4, /* CTS2Self fictitious AC, */ 291 /* uses #4 to follow AC_VO, as */ 292 /* AC_BCAST does not seem to be in use. */ 293 AC_ANY_TID = 0x1F, 294 AC_INVALID = 0xFF, /* used for gTxACconstraint */ 295 NUM_ACCESS_CATEGORIES = 4 296} AccessCategory_enum; 297 298typedef enum 299{ 300 TID0 = 0, /* Best Effort/Legacy*/ 301 TID1 = 1, /* Best Effort/Legacy*/ 302 TID2 = 2, /* Background*/ 303 TID3 = 3, /* Video*/ 304 TID4 = 4, /* Voice*/ 305 TID5 = 5, /* Broadcast dummy access category*/ 306 TID6 = 6, 307 TID7 = 7, /* managment */ 308 NUM_TRAFFIC_CATEGORIES = 8 309} TrafficCategory_enum; 310 311 312#define AC_REQUEST 0xfe /* Special access category type for */ 313 /* requests*/ 314 315 316/* following are defult values for the IE fields*/ 317#define CWMIN_BK 15 318#define CWMIN_BE 15 319#define CWMIN_VI 7 320#define CWMIN_VO 3 321#define CWMAX_BK 1023 322#define CWMAX_BE 63 323#define CWMAX_VI 15 324#define CWMAX_VO 7 325#define AIFS_PIFS 1 /* slot number setting to start transmission at PIFS interval */ 326#define AIFS_DIFS 2 /* slot number setting to start transmission at DIFS interval - */ 327 /* normal DCF access */ 328 329#define AIFS_MIN AIFS_PIFS 330 331#define AIFSN_BK 7 332#define AIFSN_BE 3 333#define AIFSN_VI AIFS_PIFS 334#define AIFSN_VO AIFS_PIFS 335#define TXOP_BK 0 336#define TXOP_BE 0 337#define TXOP_VI 3008 338#define TXOP_VO 1504 339#define DEFAULT_AC_SHORT_RETRY_LIMIT 7 340#define DEFAULT_AC_LONG_RETRY_LIMIT 4 341 342/* rxTimeout values */ 343#define NO_RX_TIMEOUT 0 344 345typedef struct 346{ 347 INFO_ELE_HDR 348 uint8 ac; /* Access Category - The TX queue's access category */ 349 /* (refer to AccessCategory_enum)*/ 350 uint8 cwMin; /* The contention window minimum size (in slots) for */ 351 /* the access class.*/ 352 uint16 cwMax; /* The contention window maximum size (in slots) for */ 353 /* the access class.*/ 354 uint8 aifsn; /* The AIF value (in slots) for the access class.*/ 355 uint8 reserved; 356 uint16 txopLimit; /* The TX Op Limit (in microseconds) for the access class.*/ 357} ACXAcCfg_t; 358 359 360/****************************************************************************** 361 362 Name: ACX_MEM_MAP 363 Type: Configuration 364 Access: Read Only 365 Length: 72 366 Note: Except for the numTxMemBlks, numRxMemBlks fields, this is 367 used in MASTER mode only!!! 368 369******************************************************************************/ 370#define MEM_MAP_NUM_FIELDS 24 371 372typedef struct 373{ 374 uint32 *controlBlock; /* array of two 32-bit entries in the following order: 375 1. Tx-Result entries counter written by the FW 376 2. Tx-Result entries counter read by the host */ 377 void *txResultQueueStart; /* points t first descriptor in TRQ */ 378} TxResultPointers_t; 379 380 381typedef struct 382{ 383 INFO_ELE_HDR 384 void *codeStart; 385 void *codeEnd; 386 void *wepDefaultKeyStart; 387 void *wepDefaultKeyEnd; 388 void *staTableStart; 389 void *staTableEnd; 390 void *packetTemplateStart; 391 void *packetTemplateEnd; 392 TxResultPointers_t trqBlock; 393 394 void *queueMemoryStart; 395 void *queueMemoryEnd; 396 void *packetMemoryPoolStart; 397 void *packetMemoryPoolEnd; 398 void *debugBuffer1Start; 399 void *debugBuffer1End; 400 void *debugBuffer2Start; 401 void *debugBuffer2End; 402 403 uint32 numTxMemBlks; /* Number of blocks that FW allocated for TX packets.*/ 404 uint32 numRxMemBlks; /* Number of blocks that FW allocated for RX packets. */ 405 406 /* the following 4 fields are valid in SLAVE mode only */ 407 uint8 *txCBufPtr; 408 uint8 *rxCBufPtr; 409 void *rxControlPtr; 410 void *txControlPtr; 411 412} MemoryMap_t; 413 414 415/****************************************************************************** 416 417 Name: ACX_AID 418 Type: Configuration 419 Access: Write Only 420 Length: 2 421 422******************************************************************************/ 423 424typedef struct 425{ 426 INFO_ELE_HDR 427 uint16 Aid; /* The Association ID to the WiLink. The WiLink uses this */ 428 /* field to determine when the STA's AID bit is set in a */ 429 /* received beacon and when a PS Poll frame should be */ 430 /* transmitted to the AP. The host configures this information */ 431 /* element after it has associated with an AP. This information */ 432 /* element does not need to be set in Ad Hoc mode.*/ 433 uint8 padding[2]; /* alignment to 32bits boundry */ 434} ACXAid_t; 435 436 437/****************************************************************************** 438 439 Name: ACX_ERROR_CNT 440 Type: Operation 441 Access: Read Only 442 Length: 12 443 444******************************************************************************/ 445typedef struct 446{ 447 INFO_ELE_HDR 448 uint32 PLCPErrorCount; /* The number of PLCP errors since the last time this */ 449 /* information element was interrogated. This field is */ 450 /* automatically cleared when it is interrogated.*/ 451 452 uint32 FCSErrorCount; /* The number of FCS errors since the last time this */ 453 /* information element was interrogated. This field is */ 454 /* automatically cleared when it is interrogated.*/ 455 456 uint32 validFrameCount; /* The number of MPDUÂs without PLCP header errors received*/ 457 /* since the last time this information element was interrogated. */ 458 /* This field is automatically cleared when it is interrogated.*/ 459 460 uint32 seqNumMissCount; /* the number of missed sequence numbers in the squentially */ 461 /* values of frames seq numbers */ 462 463} ACXErrorCounters_t; 464 465/****************************************************************************** 466 467 Name: ACX_MEDIUM_USAGE 468 Type: Configuration 469 Access: Read Only 470 Length: 8 471 472******************************************************************************/ 473 474typedef struct 475{ 476 INFO_ELE_HDR 477 uint32 mediumUsage; /* report to the host the value of medium usage registers*/ 478 uint32 period; /* report to the host the value of medium period registers*/ 479} ACXMediumUsage_t; 480 481/****************************************************************************** 482 483 Name: ACX_RX_CFG 484 Type: Filtering Configuration 485 Access: Write Only 486 Length: 8 487 488******************************************************************************/ 489/* 490 * Rx configuration (filter) information element 491 * --------------------------------------------- 492 */ 493/* 494 RX ConfigOptions Table 495 Bit Definition 496 === ========== 497 31:14 Reserved 498 13 Copy RX Status - when set, write three receive status words to top of 499 rx'd MPDU. 500 When clear, do not write three status words (added rev 1.5) 501 12 Reserved 502 11 RX Complete upon FCS error - when set, give rx complete interrupt for 503 FCS errors, after the rx filtering, e.g. unicast frames not to us with 504 FCS error will not generate an interrupt 505 10 SSID Filter Enable - When set, the WiLink discards all beacon, 506 probe request, and probe response frames with an SSID that does not 507 match the SSID specified by the host in the START/JOIN command. 508 When clear, the WiLink receives frames with any SSID. 509 9 Broadcast Filter Enable - When set, the WiLink discards all broadcast 510 frames. When clear, the WiLink receives all received broadcast frames. 511 8:6 Reserved 512 5 BSSID Filter Enable - When set, the WiLink discards any frames with a 513 BSSID that does not match the BSSID specified by the host. 514 When clear, the WiLink receives frames from any BSSID. 515 4 MAC Addr Filter - When set, the WiLink discards any frames with a 516 destination address that does not match the MAC address of the adaptor. 517 When clear, the WiLink receives frames destined to any MAC address. 518 3 Promiscuous - When set, the WiLink receives all valid frames 519 (i.e., all frames that pass the FCS check). 520 When clear, only frames that pass the other filters specified are received. 521 2 FCS - When set, the WiLink includes the FCS with the received frame. 522 When clear, the FCS is discarded. 523 1 PLCP header - When set, write all data from baseband to frame buffer 524 including PHY header. 525 0 Reserved - Always equal to 0. 526 527 RX FilterOptions Table 528 Bit Definition 529 === ========== 530 31:12 Reserved - Always equal to 0. 531 11 Association - When set, the WiLink receives all association related frames 532 (association request/response, reassocation request/response, and 533 disassociation). When clear, these frames are discarded. 534 10 Auth/De auth - When set, the WiLink receives all authentication and 535 de-authentication frames. When clear, these frames are discarded. 536 9 Beacon - When set, the WiLink receives all beacon frames. When clear, 537 these frames are discarded. 538 8 Contention Free - When set, the WiLink receives all contention free frames. 539 When clear, these frames are discarded. 540 7 Control - When set, the WiLink receives all control frames. 541 When clear, these frames are discarded. 542 6 Data - When set, the WiLink receives all data frames. 543 When clear, these frames are discarded. 544 5 FCS Error - When set, the WiLink receives frames that have FCS errors. 545 When clear, these frames are discarded. 546 4 Management - When set, the WiLink receives all management frames. 547 When clear, these frames are discarded. 548 3 Probe Request - When set, the WiLink receives all probe request frames. 549 When clear, these frames are discarded. 550 2 Probe Response - When set, the WiLink receives all probe response frames. 551 When clear, these frames are discarded. 552 1 RTS/CTS/ACK - When set, the WiLink receives all RTS, CTS and ACK frames. 553 When clear, these frames are discarded. 554 0 Rsvd Type/Sub Type - When set, the WiLink receives all frames that 555 have reserved frame types and sub types as defined by the 802.11 556 specification. 557 When clear, these frames are discarded. 558*/ 559typedef struct 560{ 561 INFO_ELE_HDR 562 uint32 ConfigOptions; /* The configuration of the receiver in the WiLink. */ 563 /* "RX ConfigOptions Table" describes the format of */ 564 /* this field.*/ 565 uint32 FilterOptions; /* The types of frames that the WiLink can receive. */ 566 /* "RX FilterOptions Table" describes the format of */ 567 /* this field.*/ 568} ACXRxConfig_t; 569 570/****************************************************************************** 571 572 Name: ACX_BEACON_FILTER_OPT 573 Desc: This information element enables the host to activate beacon filtering. 574 The filter can only be activated when the STA is in PS mode. 575 When activated, either the host is not notified about beacons whose 576 unicast TIM bit is not set, or these beacons are buffered first and 577 the host is notified only after the buffer reaches a predetermined size. 578 The host should not activate the filter if it configures the firmware 579 to listen to broadcasts (see the VBM Options field in the 580 ACXPowerMgmtOptions information element). The filter only affects beacons, 581 and not other MSDUs - the firmware notifies the host immediately about 582 their arrival. 583 Type: Filtering Configuration 584 Access: Write Only 585 Length: 2 586 587******************************************************************************/ 588typedef struct 589{ 590 INFO_ELE_HDR 591 uint8 enable; /* Indicates whether the filter is enabled. */ 592 /* 1 - enabled, 0 - disabled. */ 593 uint8 maxNumOfBeaconsStored; /* The number of beacons without the unicast TIM */ 594 /* bit set that the firmware buffers before */ 595 /* signaling the host about ready frames. */ 596 /* When set to 0 and the filter is enabled, beacons */ 597 /* without the unicast TIM bit set are dropped.*/ 598 uint8 padding[2]; /* alignment to 32bits boundry */ 599} ACXBeaconFilterOptions_t; 600 601 602/****************************************************************************** 603 604 Name: ACX_BEACON_FILTER_TABLE 605 Desc: This information element configures beacon filtering handling for the 606 set of information elements. An information element in a beacon can be 607 set to be: ignored (never compared, and changes will not cause beacon 608 transfer), checked (compared, and transferred in case of a change), or 609 transferred (transferred to the host for each appearance or disappearance). 610 The table contains all information elements that are subject to monitoring 611 for host transfer. 612 All information elements that are not in the table should be ignored for 613 monitoring. 614 This functionality is only enabled when beacon filtering is enabled by 615 ACX_BEACON_FILTER_OPT. 616 Type: Filtering Configuration 617 Access: Write Only 618 Length: 101 619 Notes: the field measuring the value of received beacons for which the device 620 wakes up the host in ACX_BEACON_FILTER_OPT does not affect 621 this information element. 622 623******************************************************************************/ 624 625/* 626 ACXBeaconFilterEntry (not 221) 627 Byte Offset Size (Bytes) Definition 628 =========== ============ ========== 629 0 1 IE identifier 630 1 1 Treatment bit mask 631 632 ACXBeaconFilterEntry (221) 633 Byte Offset Size (Bytes) Definition 634 =========== ============ ========== 635 0 1 IE identifier 636 1 1 Treatment bit mask 637 2 3 OUI 638 5 1 Type 639 6 2 Version 640 641 642 Treatment bit mask - The information element handling: 643 bit 0 - The information element is compared and transferred 644 in case of change. 645 bit 1 - The information element is transferred to the host 646 with each appearance or disappearance. 647 Note that both bits can be set at the same time. 648*/ 649#define BEACON_FILTER_TABLE_MAX_IE_NUM (32) 650#define BEACON_FILTER_TABLE_MAX_VENDOR_SPECIFIC_IE_NUM (6) 651#define BEACON_FILTER_TABLE_IE_ENTRY_SIZE (2) 652#define BEACON_FILTER_TABLE_EXTRA_VENDOR_SPECIFIC_IE_SIZE (6) 653#define BEACON_FILTER_TABLE_MAX_SIZE ((BEACON_FILTER_TABLE_MAX_IE_NUM * BEACON_FILTER_TABLE_IE_ENTRY_SIZE) + \ 654 (BEACON_FILTER_TABLE_MAX_VENDOR_SPECIFIC_IE_NUM * BEACON_FILTER_TABLE_EXTRA_VENDOR_SPECIFIC_IE_SIZE)) 655 656typedef struct ACXBeaconFilterIETableStruct { 657 INFO_ELE_HDR 658 uint8 NumberOfIEs; /* The number of IE's in the table*/ 659 /* 0 - clears the table.*/ 660 661 uint8 padding[3]; /* alignment to 32bits boundry */ 662 uint8 IETable[BEACON_FILTER_TABLE_MAX_SIZE]; 663} ACXBeaconFilterIETable_t; 664 665/****************************************************************************** 666 667 Name: ACX_COEX_ACTIVITY_TABLE 668 669******************************************************************************/ 670 671typedef enum 672{ 673 COEX_IP_BT = 0, 674 COEX_IP_WLAN, 675 COEX_IP_DUAL_MODE, /* That define isn't valid value in DR&FW interface and use just in the FW */ 676 MAX_COEX_IP 677} CoexIp_enum; 678 679#ifdef HOST_COMPILE 680typedef uint8 CoexIp_e; 681#else 682typedef CoexIp_enum CoexIp_e; 683#endif 684 685typedef struct ACXCoexActivityIEStruct { 686 INFO_ELE_HDR 687 CoexIp_e coexIp; /* 0-BT, 1-WLAN (according to CoexIp_e in FW) */ 688 uint8 activityId; /* According to BT/WLAN activity numbering in FW */ 689 uint8 defaultPriority; /* 0-255, activity default priority */ 690 uint8 raisedPriority; /* 0-255, activity raised priority */ 691 uint16 minService; /* 0-65535, The minimum service requested either in 692 requests or in milliseconds depending on activity ID */ 693 uint16 maxService; /* 0-65535, The maximum service allowed either in 694 requests or in milliseconds depending on activity ID */ 695} ACXCoexActivityIE_t; 696 697/****************************************************************************** 698 699 Name: ACX_ARP_IP_FILTER 700 Type: Filtering Configuration 701 Access: Write Only 702 Length: 20 703 704******************************************************************************/ 705 706typedef struct 707{ 708 INFO_ELE_HDR 709 uint8 ipVersion; /* The IP version of the IP address: 4 - IPv4, 6 - IPv6.*/ 710 uint8 arpFilterEnable; /* 1 - ARP filtering is enabled. */ 711 /* 0 - ARP filtering is disabled.*/ 712 uint8 padding[2]; /* alignment to 32bits boundry */ 713 uint8 address[16]; /* The IP address used to filter ARP packets. ARP packets */ 714 /* that do not match this address are dropped. */ 715 /* When the IP Version is 4, the last 12 bytes of */ 716 /* the address are ignored.*/ 717 718} ACXConfigureIP_t; 719 720 721/****************************************************************************** 722 723 Name: ACX_IBSS_FILTER 724 Type: Filtering Configuration 725 Access: Write Only 726 Length: 1 727 728******************************************************************************/ 729typedef struct 730{ 731 INFO_ELE_HDR 732 uint8 enable; /* if set (i.e. IBSS mode), forward beacons from the same SSID*/ 733 /* (also from different BSSID), with bigger TSF then the this of */ 734 /* the current BSS.*/ 735 uint8 padding[3]; /* alignment to 32bits boundry */ 736} ACXIBSSFilterOptions_t; 737 738 739/****************************************************************************** 740 741 Name: ACX_SERVICE_PERIOD_TIMEOUT 742 Type: Configuration 743 Access: Write Only 744 Length: 1 745 746******************************************************************************/ 747typedef struct 748{ 749 INFO_ELE_HDR 750 uint16 PsPollTimeout; /* the maximum time that the device will wait to receive */ 751 /* traffic from the AP after transmission of PS-poll.*/ 752 753 uint16 UpsdTimeout; /* the maximum time that the device will wait to receive */ 754 /* traffic from the AP after transmission from UPSD enabled*/ 755 /* queue.*/ 756} ACXRxTimeout_t; 757 758/****************************************************************************** 759 760 Name: ACX_TX_QUEUE_CFG 761 Type: Configuration 762 Access: Write Only 763 Length: 8 764 765******************************************************************************/ 766typedef struct 767{ 768 INFO_ELE_HDR 769 uint8 qID; /* The TX queue ID number.*/ 770 uint8 padding[3]; /* alignment to 32bits boundry */ 771 uint16 numberOfBlockHighThreshold; /* The maximum memory blocks allowed in the */ 772 /* queue.*/ 773 uint16 numberOfBlockLowThreshold; /* The minimum memory blocks that are */ 774 /* guaranteed for this queue.*/ 775} ACXTxQueueCfg_t; 776 777 778/****************************************************************************** 779 780 Name: ACX_STATISTICS 781 Type: Statistics 782 Access: Write Only 783 Length: 784 Note: Debug API 785 786******************************************************************************/ 787typedef struct 788{ 789 uint32 debug1; 790 uint32 debug2; 791 uint32 debug3; 792 uint32 debug4; 793 uint32 debug5; 794 uint32 debug6; 795}DbgStatistics_t; 796 797typedef struct 798{ 799 uint32 numOfTxProcs; 800 uint32 numOfPreparedDescs; 801 uint32 numOfTxXfr; 802 uint32 numOfTxDma; 803 uint32 numOfTxCmplt; 804 uint32 numOfRxProcs; 805 uint32 numOfRxData; 806}RingStatistics_t; 807 808typedef struct 809{ 810 uint32 numOfTxTemplatePrepared; 811 uint32 numOfTxDataPrepared; 812 uint32 numOfTxTemplateProgrammed; 813 uint32 numOfTxDataProgrammed; 814 uint32 numOfTxBurstProgrammed; 815 uint32 numOfTxStarts; 816 uint32 numOfTxImmResp; 817 uint32 numOfTxStartTempaltes; 818 uint32 numOfTxStartIntTemplate; 819 uint32 numOfTxStartFwGen; 820 uint32 numOfTxStartData; 821 uint32 numOfTxStartNullFrame; 822 uint32 numOfTxExch; 823 uint32 numOfTxRetryTemplate; 824 uint32 numOfTxRetryData; 825 uint32 numOfTxExchPending; 826 uint32 numOfTxExchExpiry; 827 uint32 numOfTxExchMismatch; 828 uint32 numOfTxDoneTemplate; 829 uint32 numOfTxDoneData; 830 uint32 numOfTxDoneIntTemplate; 831 uint32 numOfTxPreXfr; 832 uint32 numOfTxXfr; 833 uint32 numOfTxXfrOutOfMem; 834 uint32 numOfTxDmaProgrammed; 835 uint32 numOfTxDmaDone; 836} TxStatistics_t; 837 838 839typedef struct 840{ 841 uint32 RxOutOfMem; 842 uint32 RxHdrOverflow; 843 uint32 RxHWStuck; 844 uint32 RxDroppedFrame; 845 uint32 RxCompleteDroppedFrame; 846 uint32 RxAllocFrame; 847 uint32 RxDoneQueue; 848 uint32 RxDone; 849 uint32 RxDefrag; 850 uint32 RxDefragEnd; 851 uint32 RxMic; 852 uint32 RxMicEnd; 853 uint32 RxXfr; 854 uint32 RxXfrEnd; 855 uint32 RxCmplt; 856 uint32 RxPreCmplt; 857 uint32 RxCmpltTask; 858 uint32 RxPhyHdr; 859 uint32 RxTimeout; 860} RxStatistics_t; 861 862 863typedef struct 864{ 865 uint32 RxDMAErrors; 866 uint32 TxDMAErrors; 867} DMAStatistics_t; 868 869 870typedef struct 871{ 872 uint32 IRQs; /* irqisr() */ 873} IsrStatistics_t; 874 875 876typedef struct WepStatistics_t 877{ 878 uint32 WepAddrKeyCount; /* Count of WEP address keys configured*/ 879 uint32 WepDefaultKeyCount; /* Count of default keys configured*/ 880 uint32 WepKeyNotFound; /* count of number of times that WEP key not found on lookup*/ 881 uint32 WepDecryptFail; /* count of number of times that WEP key decryption failed*/ 882 uint32 WepEncryptFail; /* count of number of times that WEP key encryption failed*/ 883 uint32 WepDecPackets; /* WEP Packets Decrypted*/ 884 uint32 WepDecInterrupt; /* WEP Decrypt Interrupts*/ 885 uint32 WepEnPackets; /* WEP Packets Encrypted*/ 886 uint32 WepEnInterrupt; /* WEP Encrypt Interrupts*/ 887} WepStatistics_t; 888 889 890#define PWR_STAT_MAX_CONT_MISSED_BCNS_SPREAD 10 891typedef struct PwrStatistics_t 892{ 893 uint32 MissingBcnsCnt; /* Count the amount of missing beacon interrupts to the host.*/ 894 uint32 RcvdBeaconsCnt; /* Count the number of received beacons.*/ 895 uint32 ConnectionOutOfSync; /* Count the number of times TSF Out Of Sync occures, meaning we lost more consecutive beacons that defined by the host's threshold.*/ 896 uint32 ContMissBcnsSpread[PWR_STAT_MAX_CONT_MISSED_BCNS_SPREAD]; /* Gives statistics about the spread continuous missed beacons.*/ 897 /* The 16 LSB are dedicated for the PS mode.*/ 898 /* The 16 MSB are dedicated for the PS mode.*/ 899 /* ContMissBcnsSpread[0] - single missed beacon.*/ 900 /* ContMissBcnsSpread[1] - two continuous missed beacons.*/ 901 /* ContMissBcnsSpread[2] - three continuous missed beacons.*/ 902 /* ...*/ 903 /* ContMissBcnsSpread[9] - ten and more continuous missed beacons.*/ 904 uint32 RcvdAwakeBeaconsCnt; /* Count the number of beacons in awake mode.*/ 905} PwrStatistics_t; 906 907 908typedef struct MicStatistics_t 909{ 910 uint32 MicRxPkts; 911 uint32 MicCalcFailure; 912} MicStatistics_t; 913 914 915typedef struct AesStatisticsStruct 916{ 917 uint32 AesEncryptFail; 918 uint32 AesDecryptFail; 919 uint32 AesEncryptPackets; 920 uint32 AesDecryptPackets; 921 uint32 AesEncryptInterrupt; 922 uint32 AesDecryptInterrupt; 923} AesStatistics_t; 924 925typedef struct GemStatisticsStruct 926{ 927 uint32 GemEncryptFail; 928 uint32 GemDecryptFail; 929 uint32 GemEncryptPackets; 930 uint32 GemDecryptPackets; 931 uint32 GemEncryptInterrupt; 932 uint32 GemDecryptInterrupt; 933} GemStatistics_t; 934 935typedef struct EventStatistics_t 936{ 937 uint32 calibration; 938 uint32 rxMismatch; 939 uint32 rxMemEmpty; 940} EventStatistics_t; 941 942 943typedef struct PsPollUpsdStatistics_t 944{ 945 uint32 psPollTimeOuts; 946 uint32 upsdTimeOuts; 947 uint32 upsdMaxAPturn; 948 uint32 psPollMaxAPturn; 949 uint32 psPollUtilization; 950 uint32 upsdUtilization; 951} PsPollUpsdStatistics_t; 952 953typedef struct RxFilterStatistics_t 954{ 955 uint32 beaconFilter; 956 uint32 arpFilter; 957 uint32 MCFilter; 958 uint32 dupFilter; 959 uint32 dataFilter; 960 uint32 ibssFilter; 961} RxFilterStatistics_t; 962 963typedef struct ClaibrationFailStatistics_t 964{ 965 uint32 initCalTotal; 966 uint32 initRadioBandsFail; 967 uint32 initSetParams; 968 uint32 initTxClpcFail; 969 uint32 initRxIqMmFail; 970 uint32 tuneCalTotal; 971 uint32 tuneDrpwRTrimFail; 972 uint32 tuneDrpwPdBufFail; 973 uint32 tuneDrpwTxMixFreqFail; 974 uint32 tuneDrpwTaCal; 975 uint32 tuneDrpwRxIf2Gain; 976 uint32 tuneDrpwRxDac; 977 uint32 tuneDrpwChanTune; 978 uint32 tuneDrpwRxTxLpf; 979 uint32 tuneDrpwLnaTank; 980 uint32 tuneTxLOLeakFail; 981 uint32 tuneTxIqMmFail; 982 uint32 tuneTxPdetFail; 983 uint32 tuneTxPPAFail; 984 uint32 tuneTxClpcFail; 985 uint32 tuneRxAnaDcFail; 986 uint32 tuneRxIqMmFail; 987 uint32 calStateFail; 988}ClaibrationFailStatistics_t; 989 990typedef struct ACXStatisticsStruct 991{ 992 INFO_ELE_HDR 993 RingStatistics_t ringStat; 994 DbgStatistics_t debug; 995 TxStatistics_t tx; 996 RxStatistics_t rx; 997 DMAStatistics_t dma; 998 IsrStatistics_t isr; 999 WepStatistics_t wep; 1000 PwrStatistics_t pwr; 1001 AesStatistics_t aes; 1002 MicStatistics_t mic; 1003 EventStatistics_t event; 1004 PsPollUpsdStatistics_t ps; 1005 RxFilterStatistics_t rxFilter; 1006 ClaibrationFailStatistics_t radioCal; 1007 GemStatistics_t gem; 1008} ACXStatistics_t; 1009 1010/****************************************************************************** 1011 1012 Name: ACX_ROAMING_STATISTICS_TBL 1013 Desc: This information element reads the current roaming triggers 1014 counters/metrics. 1015 Type: Statistics 1016 Access: Read Only 1017 Length: 6 1018 1019******************************************************************************/ 1020typedef struct 1021{ 1022 INFO_ELE_HDR 1023 uint32 MissedBeacons; /* The current number of consecutive lost beacons*/ 1024 uint8 snrData; /* The current average SNR in db - For Data Packets*/ 1025 uint8 snrBeacon; /* The current average SNR in db - For Beacon Packets*/ 1026 int8 rssiData; /* The current average RSSI - For Data Packets*/ 1027 int8 rssiBeacon; /* The current average RSSI - For Beacon Packets*/ 1028}ACXRoamingStatisticsTable_t; 1029 1030 1031/****************************************************************************** 1032 1033 Name: ACX_FEATURE_CFG 1034 Desc: Provides expandability for future features 1035 Type: Configuration 1036 Access: Write Only 1037 Length: 8 1038 1039******************************************************************************/ 1040 1041/* bit defines for Option: */ 1042#define FEAT_PCI_CLK_RUN_ENABLE 0x00000002 /* Enable CLK_RUN on PCI bus */ 1043 1044/* bit defines for dataflowOptions: */ 1045#define DF_ENCRYPTION_DISABLE 0x00000001 /* When set, enable encription in FW.*/ 1046 /* when clear, disable encription. */ 1047#define DF_SNIFF_MODE_ENABLE 0x00000080 /* When set, enable decryption in FW.*/ 1048 /* when clear, disable decription. */ 1049typedef struct 1050{ 1051 INFO_ELE_HDR 1052 uint32 Options; /* Data flow options - refer to above definitions*/ 1053 uint32 dataflowOptions; /* Data flow options - refer to above definitions*/ 1054} ACXFeatureConfig_t; 1055 1056 1057 1058/****************************************************************************** 1059 1060 Name: ACX_TID_CFG 1061 Type: Configuration 1062 Access: Write Only 1063 Length: 16 1064 1065******************************************************************************/ 1066typedef enum 1067{ 1068 CHANNEL_TYPE_DCF = 0, /* DC/LEGACY*/ 1069 CHANNEL_TYPE_EDCF = 1, /* EDCA*/ 1070 CHANNEL_TYPE_HCCA = 2, /* HCCA*/ 1071 MAX_CHANNEL_TYPE = CHANNEL_TYPE_HCCA 1072} ChannelType_enum; 1073 1074typedef enum 1075{ 1076 PS_SCHEME_LEGACY = 0, /* Regular PS: simple sending of packets*/ 1077 PS_SCHEME_UPSD_TRIGGER = 1, /* UPSD: sending a packet triggers a UPSD downstream*/ 1078 PS_SCHEME_LEGACY_PSPOLL = 2, /* Legacy PSPOLL: a PSPOLL packet will be sent before */ 1079 /* every data packet transmission in this queue.*/ 1080 PS_SCHEME_SAPSD = 3, /* Scheduled APSD mode.*/ 1081 MAX_PS_SCHEME = PS_SCHEME_SAPSD 1082} PSScheme_enum; 1083 1084typedef enum 1085{ 1086 ACK_POLICY_LEGACY = 0, /* ACK immediate policy*/ 1087 ACK_POLICY_NO_ACK = 1, /* no ACK policy*/ 1088 ACK_POLICY_BLOCK = 2, /* block ack policy*/ 1089 MAX_ACK_POLICY = ACK_POLICY_BLOCK 1090} AckPolicy_enum; 1091 1092 1093#ifdef HOST_COMPILE 1094typedef uint8 ChannelType_e; 1095typedef uint8 PSScheme_e; 1096typedef uint8 AckPolicy_e; 1097#else 1098typedef ChannelType_enum ChannelType_e; 1099typedef PSScheme_enum PSScheme_e; 1100typedef AckPolicy_enum AckPolicy_e; 1101#endif 1102 1103 1104 1105/* Michal recommendation: 1106 in the ACXTIDConfig_t structure we need only the fields psScheme, and one other field for AC id (queue? tsid?). 1107 the rest are obsolete. see IEPsDeliveryTriggerType_t in CE2.0. 1108 */ 1109 1110typedef struct 1111{ 1112 INFO_ELE_HDR 1113 uint8 queueID; /* The TX queue ID number (0-7).*/ 1114 uint8 channelType; /* Channel access type for the queue.*/ 1115 /* Refer to ChannelType_enum.*/ 1116 uint8 tsid; /* for EDCA - the AC Index (0-3, refer to*/ 1117 /* AccessCategory_enum).*/ 1118 /* For HCCA - HCCA Traffic Stream ID (TSID) of */ 1119 /* the queue (8-15).*/ 1120 PSScheme_e psScheme; /* The power save scheme of the specified queue.*/ 1121 /* Refer to PSScheme_enum.*/ 1122 AckPolicy_e ackPolicy; /* The TX queue ACK policy. */ 1123 uint8 padding[3]; /* alignment to 32bits boundry */ 1124 uint32 APSDConf[2]; /* Not supported in this version !!!*/ 1125}ACXTIDConfig_t; 1126 1127 1128 1129/****************************************************************************** 1130 1131 Name: ACX_PS_RX_STREAMING 1132 Type: Configuration 1133 Access: Write Only 1134 Length: 32 1135 1136******************************************************************************/ 1137typedef struct 1138{ 1139 INFO_ELE_HDR 1140 uint8 TID; /* The TID index*/ 1141 Bool_e rxPSDEnabled; /* indicates if this traffic stream requires */ 1142 /* employing an RX Streaming delivery mechanism for the TID*/ 1143 1144 uint8 streamPeriod; /* the time period for which a trigger needs to be transmitted*/ 1145 /* in case no data TX triggers are sent by host*/ 1146 uint8 txTimeout; /* the timeout from last TX trigger after which FW*/ 1147 /* starts generating triggers by itself*/ 1148}ACXPsRxStreaming_t; 1149 1150/************************************************************ 1151* MULTIPLE RSSI AND SNR * 1152*************************************************************/ 1153 1154typedef enum 1155{ 1156 RX_QUALITY_EVENT_LEVEL = 0, /* The event is a "Level" indication which keeps */ 1157 /* triggering as long as the average RSSI is below*/ 1158 /* the threshold.*/ 1159 1160 RX_QUALITY_EVENT_EDGE = 1 /* The event is an "Edge" indication which triggers*/ 1161 /* only when the RSSI threshold is crossed from above.*/ 1162}rxQualityEventType_enum; 1163 1164/* The direction in which the trigger is active */ 1165typedef enum 1166{ 1167 RSSI_EVENT_DIR_LOW = 0, 1168 RSSI_EVENT_DIR_HIGH = 1, 1169 RSSI_EVENT_DIR_BIDIR = 2 1170}RssiEventDir_e; 1171 1172/****************************************************************************** 1173 1174 RSSI/SNR trigger configuration: 1175 1176 ACX_RSSI_SNR_TRIGGER 1177 ACX_RSSI_SNR_WIGHTS 1178 1179******************************************************************************/ 1180#define NUM_OF_RSSI_SNR_TRIGGERS 8 1181typedef struct 1182{ 1183 int16 threshold; 1184 uint16 pacing; /* Minimum delay between consecutive triggers in milliseconds (0 - 60000) */ 1185 uint8 metric; /* RSSI Beacon, RSSI Packet, SNR Beacon, SNR Packet */ 1186 uint8 type; /* Level / Edge */ 1187 uint8 direction; /* Low, High, Bidirectional */ 1188 uint8 hystersis; /* Hysteresis range in dB around the threshold value (0 - 255) */ 1189 uint8 index; /* Index of Event. Values 0 - 7 */ 1190 uint8 enable; /* 1 - Configured, 2 - Not Configured; (for recovery using) */ 1191 uint8 padding[2]; 1192}RssiSnrTriggerCfg_t; 1193 1194typedef struct 1195{ 1196 INFO_ELE_HDR 1197 RssiSnrTriggerCfg_t param; 1198}ACXRssiSnrTriggerCfg_t; 1199 1200/* Filter Weight for every one of 4 RSSI /SNR Trigger Metrics */ 1201typedef struct 1202{ 1203 uint8 rssiBeaconAverageWeight; 1204 uint8 rssiPacketAverageWeight; 1205 uint8 snrBeaconAverageWeight; 1206 uint8 snrPacketAverageWeight; 1207}RssiSnrAverageWeights_t; 1208 1209typedef struct 1210{ 1211 INFO_ELE_HDR 1212 RssiSnrAverageWeights_t param; 1213}ACXRssiSnrAverageWeights_t; 1214 1215typedef enum 1216{ 1217 METRIC_EVENT_RSSI_BEACON = 0, 1218 METRIC_EVENT_RSSI_DATA = 1, 1219 METRIC_EVENT_SNR_BEACON = 2, 1220 METRIC_EVENT_SNR_DATA = 3, 1221 METRIC_EVENT_TRIGGER_SIZE = 4 1222}MetricEvent_e; 1223 1224/****************************************************************************** 1225 1226 Name: ACX_NOISE_HIST 1227 Desc: Noise Histogram activation is done by special command from host which 1228 is responsible to read the results using this IE. 1229 Type: Configuration 1230 Access: Read Only 1231 Length: 48 (NOISE_HIST_LEN=8) 1232 1233******************************************************************************/ 1234 1235typedef struct 1236{ 1237 INFO_ELE_HDR 1238 uint32 counters[NOISE_HIST_LEN]; /* This array of eight 32 bit counters describes */ 1239 /* the histogram created by the FW noise */ 1240 /* histogram engine.*/ 1241 1242 uint32 numOfLostCycles; /* This field indicates the number of measurement */ 1243 /* cycles with failure because Tx was active.*/ 1244 1245 uint32 numOfTxHwGenLostCycles; /* This field indicates the number of measurement */ 1246 /* cycles with failure because Tx (FW Generated)*/ 1247 /* was active.*/ 1248 1249 uint32 numOfRxLostCycles; /* This field indicates the number of measurement */ 1250 /* cycles because the Rx CCA was active. */ 1251} NoiseHistResult_t; 1252 1253/****************************************************************************** 1254 1255 Name: ACX_PD_THRESHOLD 1256 Type: Configuration 1257 Access: Write Only 1258 Length: 4 1259 1260******************************************************************************/ 1261 1262typedef struct 1263{ 1264 INFO_ELE_HDR 1265 uint32 pdThreshold; /* The packet detection threshold in the PHY.*/ 1266} ACXPacketDetection_t; 1267 1268 1269/****************************************************************************** 1270 1271 Name: ACX_RATE_POLICY 1272 Type: Configuration 1273 Access: Write Only 1274 Length: 132 1275 1276******************************************************************************/ 1277 1278#define HOST_MAX_RATE_POLICIES (8) 1279 1280 1281typedef struct 1282{ 1283 INFO_ELE_HDR 1284 uint32 numOfClasses; /* The number of transmission rate */ 1285 /* fallback policy classes.*/ 1286 1287 txAttrClass_t rateClasses[HOST_MAX_RATE_POLICIES]; /* Rate Policies table*/ 1288}ACXTxAttrClasses_t; 1289 1290 1291 1292/****************************************************************************** 1293 1294 Name: ACX_CTS_PROTECTION 1295 Type: Configuration 1296 Access: Write Only 1297 Length: 1 1298 1299******************************************************************************/ 1300 1301typedef struct 1302{ 1303 INFO_ELE_HDR 1304 uint8 ctsProtectMode; /* This field is a flag enabling or disabling the*/ 1305 /* CTS-to-self protection mechanism:*/ 1306 /* 0 - disable, 1 - enable*/ 1307 uint8 padding[3]; /* alignment to 32bits boundry */ 1308}ACXCtsProtection_t; 1309 1310/****************************************************************************** 1311 1312 ACX_FRAG_CFG 1313 1314******************************************************************************/ 1315 1316typedef struct 1317{ 1318 INFO_ELE_HDR 1319 uint16 fragThreshold; 1320 uint8 padding[2]; /* alignment toIE_RTS_CTS_CFG 32bits boundry */ 1321 1322} ACXFRAGThreshold_t; 1323 1324 1325/****************************************************************************** 1326 1327 ACX_RX_CONFIG_OPT 1328 1329******************************************************************************/ 1330typedef enum 1331{ 1332 RX_QUEUE_TYPE_RX_LOW_PRIORITY, /* All except the high priority */ 1333 RX_QUEUE_TYPE_RX_HIGH_PRIORITY, /* Management and voice packets */ 1334 RX_QUEUE_TYPE_NUM, 1335 RX_QUEUE_TYPE_MAX = MAX_POSITIVE8 1336} RxQueueType_enum; 1337 1338 1339#ifdef HOST_COMPILE 1340 typedef uint8 RxQueueType_e; 1341#else 1342 typedef RxQueueType_enum RxQueueType_e; 1343#endif 1344 1345 1346typedef struct 1347{ 1348 INFO_ELE_HDR 1349 uint16 rxMblkThreshold; /* Occupied Rx mem-blocks number which requires interrupting the host (0 = no buffering) */ 1350 uint16 rxPktThreshold; /* Rx packets number which requires interrupting the host (0 = no buffering) */ 1351 uint16 rxCompleteTimeout; /* Max time in msec the FW may delay Rx-Complete interrupt */ 1352 RxQueueType_e rxQueueType; /* see above */ 1353 uint8 reserved; 1354} ACXRxBufferingConfig_t; 1355 1356 1357/****************************************************************************** 1358 1359 Name: ACX_SLEEP_AUTH 1360 Desc: configuration of sleep authorization level 1361 Type: System Configuration 1362 Access: Write Only 1363 Length: 1 1364 1365******************************************************************************/ 1366 1367typedef struct 1368{ 1369 INFO_ELE_HDR 1370 uint8 sleepAuth; /* The sleep level authorization of the device. */ 1371 /* 0 - Always active*/ 1372 /* 1 - Power down mode: light / fast sleep*/ 1373 /* 2 - ELP mode: Deep / Max sleep*/ 1374 1375 uint8 padding[3]; /* alignment to 32bits boundry */ 1376}ACXSleepAuth_t; 1377 1378/****************************************************************************** 1379 1380 Name: ACX_PM_CONFIG 1381 Desc: configuration of power management 1382 Type: System Configuration 1383 Access: Write Only 1384 Length: 1 1385 1386******************************************************************************/ 1387 1388typedef struct 1389{ 1390 INFO_ELE_HDR 1391 uint32 hostClkSettlingTime; /* Host CLK settling time (in uSec units) */ 1392 uint8 hostFastWakeupSupport; /* 0 - not supported */ 1393 /* 1 - supported */ 1394 uint8 padding[3]; /* alignment to 32bits boundry */ 1395}ACXPMConfig_t; 1396 1397/****************************************************************************** 1398 1399 Name: ACX_PREAMBLE_TYPE 1400 Type: Configuration 1401 Access: Write Only 1402 Length: 1 1403 1404******************************************************************************/ 1405 1406typedef enum 1407{ 1408 LONG_PREAMBLE = 0, 1409 SHORT_PREAMBLE = 1, 1410 OFDM_PREAMBLE = 4, 1411 N_MIXED_MODE_PREAMBLE = 6, 1412 GREENFIELD_PREAMBLE = 7, 1413 PREAMBLE_INVALID = 0xFF 1414} Preamble_enum; 1415 1416 1417#ifdef HOST_COMPILE 1418typedef uint8 Preamble_e; 1419#else 1420typedef Preamble_enum Preamble_e; 1421#endif 1422 1423 1424typedef struct 1425{ 1426 INFO_ELE_HDR 1427 Preamble_e preamble; /* When set, the WiLink transmits beacon, probe response, */ 1428 /* RTS and PS Poll frames with a short preamble. */ 1429 /* When clear, the WiLink transmits the frame with a long */ 1430 /* preamble.*/ 1431 uint8 padding[3]; /* alignment to 32bits boundry */ 1432} ACXPreamble_t; 1433 1434 1435/****************************************************************************** 1436 1437 Name: ACX_CCA_THRESHOLD 1438 Type: Configuration 1439 Access: Write Only 1440 Length: 2 1441 1442******************************************************************************/ 1443 1444typedef struct 1445{ 1446 INFO_ELE_HDR 1447 uint16 rxCCAThreshold; /* The Rx Clear Channel Assessment threshold in the PHY*/ 1448 /* (the energy threshold).*/ 1449 Bool_e txEnergyDetection; /* The Tx ED value for TELEC Enable/Disable*/ 1450 uint8 padding; 1451} ACXEnergyDetection_t; 1452 1453 1454/****************************************************************************** 1455 1456 Name: ACX_EVENT_MBOX_MASK 1457 Type: Operation 1458 Access: Write Only 1459 Length: 8 1460 1461******************************************************************************/ 1462 1463typedef struct 1464{ 1465 INFO_ELE_HDR 1466 uint32 lowEventMask; /* Indicates which events are masked and which are not*/ 1467 /* Refer to EventMBoxId_enum in public_event_mbox.h.*/ 1468 1469 uint32 highEventMask; /* Not in use (should always be set to 0xFFFFFFFF).*/ 1470} ACXEventMboxMask_t; 1471 1472 1473/****************************************************************************** 1474 1475 Name: ACX_CONN_MONIT_PARAMS 1476 Desc: This information element configures the SYNCHRONIZATION_TIMEOUT 1477 interrupt indicator. It configures the number of missed Beacons 1478 before issuing the SYNCHRONIZATION_TIMEOUT event. 1479 Type: Configuration 1480 Access: Write Only 1481 Length: 8 1482 1483******************************************************************************/ 1484 1485typedef struct 1486{ 1487 INFO_ELE_HDR 1488 uint32 TSFMissedThreshold; /* The number of consecutive beacons that can be */ 1489 /* lost before the WiLink raises the */ 1490 /* SYNCHRONIZATION_TIMEOUT event.*/ 1491 1492 uint32 BSSLossTimeout; /* The delay (in time units) between the time at */ 1493 /* which the device issues the SYNCHRONIZATION_TIMEOUT*/ 1494 /* event until, if no probe response or beacon is */ 1495 /* received a BSS_LOSS event is issued.*/ 1496} AcxConnectionMonitorOptions; 1497 1498/****************************************************************************** 1499 1500 Name: ACX_CONS_TX_FAILURE 1501 Desc: This information element configures the number of frames transmission 1502 failures before issuing the "Max Tx Retry" event. The counter is 1503 incremented only for unicast frames or frames that require Ack 1504 Type: Configuration 1505 Access: Write Only 1506 Length: 1 1507 1508******************************************************************************/ 1509 1510typedef struct 1511{ 1512 INFO_ELE_HDR 1513 uint8 maxTxRetry; /* the number of frames transmission failures before */ 1514 /* issuing the "Max Tx Retry" event*/ 1515 uint8 padding[3]; /* alignment to 32bits boundry */ 1516} ACXConsTxFailureTriggerParameters_t; 1517 1518 1519/****************************************************************************** 1520 1521 Name: ACX_BCN_DTIM_OPTIONS 1522 Type: Configuration 1523 Access: Write Only 1524 Length: 5 1525 1526******************************************************************************/ 1527 1528typedef struct 1529{ 1530 INFO_ELE_HDR 1531 uint16 beaconRxTimeOut; 1532 uint16 broadcastTimeOut; 1533 uint8 rxBroadcastInPS; /* if set, enables receive of broadcast packets */ 1534 /* in Power-Save mode.*/ 1535 uint8 consecutivePsPollDeliveryFailureThr; /* Consecutive PS Poll Fail before updating the Driver */ 1536 uint8 padding[2]; /* alignment to 32bits boundry */ 1537} ACXBeaconAndBroadcastOptions_t; 1538 1539 1540/****************************************************************************** 1541 1542 Name: ACX_SG_ENABLE 1543 Desc: This command instructs the WiLink to set the Soft Gemini (BT co-existence) 1544 state to either enable/disable or sense mode. 1545 Type: Configuration 1546 Access: Write Only 1547 Length: 1 1548 1549******************************************************************************/ 1550typedef struct 1551{ 1552 INFO_ELE_HDR 1553 uint8 coexOperationMode; /* 0- Co-ex operation is Disabled 1554 1- Co-ex operation is configured to Protective mode 1555 2- Co-ex operation is configured to Opportunistic mode 1556 1557 Default Value: 0- Co-ex operation is Disabled 1558 */ 1559 1560 uint8 padding[3]; /* alignment to 32bits boundry */ 1561 1562} ACXBluetoothWlanCoEnableStruct; 1563 1564 1565 1566/** \struct TSoftGeminiParams 1567 * \brief Soft Gemini Parameters 1568 * 1569 * \par Description 1570 * Used for Setting/Printing Soft Gemini Parameters 1571 * 1572 * \sa 1573 */ 1574 1575typedef enum 1576{ 1577 SOFT_GEMINI_BT_PER_THRESHOLD = 0, 1578 SOFT_GEMINI_AUTO_SCAN_COMPENSATION_MAX_TIME, 1579 SOFT_GEMINI_BT_NFS_SAMPLE_INTERVAL, 1580 SOFT_GEMINI_BT_LOAD_RATIO, 1581 SOFT_GEMINI_AUTO_PS_MODE, 1582 SOFT_GEMINI_AUTO_SCAN_PROBE_REQ, 1583 SOFT_GEMINI_AUTO_SCAN_WINDOW, 1584 SOFT_GEMINI_ANTENNA_CONFIGURATION, 1585 SOFT_GEMINI_BEACON_MISS_PERCENT, 1586 SOFT_GEMINI_RATE_ADAPT_THRESH, 1587 SOFT_GEMINI_RATE_ADAPT_SNR, 1588 SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MIN_BR, 1589 SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MAX_BR, 1590 SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_MASTER_BR, 1591 SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MIN_BR, 1592 SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MAX_BR, 1593 SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_SLAVE_BR, 1594 SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MIN_EDR, 1595 SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MAX_EDR, 1596 SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_MASTER_EDR, 1597 SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MIN_EDR, 1598 SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MAX_EDR, 1599 SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_SLAVE_EDR, 1600 SOFT_GEMINI_RXT, 1601 SOFT_GEMINI_TXT, 1602 SOFT_GEMINI_ADAPTIVE_RXT_TXT, 1603 SOFT_GEMINI_PS_POLL_TIMEOUT, 1604 SOFT_GEMINI_UPSD_TIMEOUT, 1605 SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_MASTER_MIN_EDR, 1606 SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_MASTER_MAX_EDR, 1607 SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_MASTER_EDR, 1608 SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MIN_EDR, 1609 SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MAX_EDR, 1610 SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_SLAVE_EDR, 1611 SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MIN_BR, 1612 SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MAX_BR, 1613 SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_SLAVE_BR, 1614 SOFT_GEMINI_TEMP_PARAM_1, 1615 SOFT_GEMINI_TEMP_PARAM_2, 1616 SOFT_GEMINI_TEMP_PARAM_3, 1617 SOFT_GEMINI_TEMP_PARAM_4, 1618 SOFT_GEMINI_TEMP_PARAM_5, 1619 SOFT_GEMINI_PARAMS_MAX 1620} softGeminiParams; 1621 1622typedef struct 1623{ 1624 uint32 coexParams[SOFT_GEMINI_PARAMS_MAX]; 1625 uint8 paramIdx; /* the param index which the FW should update, if it equals to 0xFF - update all */ 1626 uint8 padding[3]; 1627} TSoftGeminiParams; 1628 1629 1630/****************************************************************************** 1631 1632 Name: ACX_SG_CFG 1633 Desc: This command instructs the WiLink to set the Soft Gemini (BT co-existence) 1634 parameters to the desired values. 1635 Type: Configuration 1636 Access: Write (Read For GWSI - disable for now) 1637 Length: 1 1638 1639******************************************************************************/ 1640typedef struct 1641 1642{ 1643 INFO_ELE_HDR 1644 1645 TSoftGeminiParams softGeminiParams; 1646} ACXBluetoothWlanCoParamsStruct; 1647 1648/****************************************************************************** 1649 1650 Name: ACX_FM_COEX_CFG 1651 Desc: This command instructs the WiLink to set the FM co-existence 1652 parameters to the desired values. 1653 Type: Configuration 1654 Access: Write 1655 Length: 1656 1657******************************************************************************/ 1658typedef struct 1659 1660{ 1661 INFO_ELE_HDR 1662 1663 uint8 enable; /* enable(1) / disable(0) the FM Coex feature */ 1664 1665 uint8 swallowPeriod; /* Swallow period used in COEX PLL swallowing mechanism, 1666 Range: 0-0xFF, 0xFF = use FW default 1667 */ 1668 1669 uint8 nDividerFrefSet1; /* The N divider used in COEX PLL swallowing mechanism for Fref of 38.4/19.2 Mhz. 1670 Range: 0-0xFF, 0xFF = use FW default 1671 */ 1672 1673 uint8 nDividerFrefSet2; /* The N divider used in COEX PLL swallowing mechanism for Fref of 26/52 Mhz. 1674 Range: 0-0xFF, 0xFF = use FW default 1675 */ 1676 1677 uint16 mDividerFrefSet1; /* The M divider used in COEX PLL swallowing mechanism for Fref of 38.4/19.2 Mhz. 1678 Range: 0-0x1FF, 0xFFFF = use FW default 1679 */ 1680 1681 uint16 mDividerFrefSet2; /* The M divider used in COEX PLL swallowing mechanism for Fref of 26/52 Mhz. 1682 Range: 0-0x1FF, 0xFFFF = use FW default 1683 */ 1684 1685 uint32 coexPllStabilizationTime; /* The time duration in uSec required for COEX PLL to stabilize. 1686 0xFFFFFFFF = use FW default 1687 */ 1688 1689 uint16 ldoStabilizationTime; /* The time duration in uSec required for LDO to stabilize. 1690 0xFFFFFFFF = use FW default 1691 */ 1692 1693 uint8 fmDisturbedBandMargin; /* The disturbed frequency band margin around the disturbed 1694 frequency center (single sided). 1695 For example, if 2 is configured, the following channels 1696 will be considered disturbed channel: 1697 80 +- 0.1 MHz, 91 +- 0.1 MHz, 98 +- 0.1 MHz, 102 +- 0.1 MHz 1698 0xFF = use FW default 1699 */ 1700 1701 uint8 swallowClkDif; /* The swallow clock difference of the swallowing mechanism. 1702 0xFF = use FW default 1703 */ 1704 1705} ACXWlanFmCoexStruct; 1706 1707 1708 1709/****************************************************************************** 1710 1711 Name: ACX_TSF_INFO 1712 Type: Operation 1713 Access: Read Only 1714 Length: 20 1715 1716******************************************************************************/ 1717typedef struct ACX_fwTSFInformation 1718{ 1719 INFO_ELE_HDR 1720 uint32 CurrentTSFHigh; 1721 uint32 CurrentTSFLow; 1722 uint32 lastTBTTHigh; 1723 uint32 lastTBTTLow; 1724 uint8 LastDTIMCount; 1725 uint8 padding[3]; /* alignment to 32bits boundry */ 1726}ACX_fwTSFInformation_t; 1727 1728 1729/****************************************************************************** 1730 1731Name: ACX_BET_ENABLE 1732Desc: Enable or Disable the Beacon Early Termination module. In addition initialized the 1733 Max Dropped beacons parameter 1734Type: Configuration 1735Access: Write 1736Length: 6 1737Note: 1738******************************************************************************/ 1739typedef struct 1740 1741{ 1742 INFO_ELE_HDR 1743 uint8 Enable; /* specifies if beacon early termination procedure is enabled or disabled: 0 disabled, 1 enabled */ 1744 uint8 MaximumConsecutiveET; /* specifies the maximum number of consecutive beacons that may be early terminated. After this number is reached 1745 at least one full beacon must be correctly received in FW before beacon ET resumes. Legal range: 0 255 */ 1746 uint8 padding[2]; 1747}ACXBet_Enable_t; 1748 1749 1750/****************************************************************************** 1751 1752 Name: DOT11_RX_MSDU_LIFE_TIME 1753 Type: Operation 1754 Access: Write Only 1755 Length: 4 1756 1757******************************************************************************/ 1758 1759typedef struct 1760{ 1761 INFO_ELE_HDR 1762 uint32 RxMsduLifeTime; /* The maximum amount of time, in TU, that the WiLink */ 1763 /* should attempt to collect fragments of an MSDU before */ 1764 /* discarding them. */ 1765 /* The default value for this field is 512.*/ 1766} dot11RxMsduLifeTime_t; 1767 1768 1769/****************************************************************************** 1770 1771 Name: DOT11_CUR_TX_PWR 1772 Desc: This IE indicates the maximum TxPower in Dbm/10 currently being used to transmit data. 1773 Type: Operation 1774 Access: Write Only 1775 Length: 1 1776 1777******************************************************************************/ 1778 1779typedef struct 1780{ 1781 INFO_ELE_HDR 1782 uint8 dot11CurrentTxPower; /* the max Power in Dbm/10 to be used to transmit data.*/ 1783 uint8 padding[3]; /* alignment to 32bits boundry */ 1784} dot11CurrentTxPowerStruct ; 1785 1786 1787/****************************************************************************** 1788 1789 Name: DOT11_RX_DOT11_MODE 1790 Desc: This IE indicates the current Rx Mode used by DSSS PHY. 1791 Type: Configuration 1792 Access: Write Only 1793 Length: 4 1794 1795******************************************************************************/ 1796/* 1797Possible values for Rx DOT11 Mode are the following: 1798Value Description 1799===== =========== 18003 11g - processing of both a and b packet formats is enabled 18012 11b - processing of b packet format is enabled 18021 11a - processing of a packet format is enabled 18030 undefined 1804*/ 1805 1806typedef struct 1807{ 1808 INFO_ELE_HDR 1809 uint32 dot11RxDot11Mode; /* refer to above table*/ 1810} dot11RxDot11ModeStruct; 1811 1812 1813/****************************************************************************** 1814 1815 Name: DOT11_RTS_THRESHOLD 1816 Type: Configuration 1817 Access: Write Only 1818 Length: 2 1819 1820******************************************************************************/ 1821 1822typedef struct 1823{ 1824 INFO_ELE_HDR 1825 uint16 RTSThreshold; /* The number of octets in an MPDU, below which an */ 1826 /* RTS/CTS handshake is not performed.*/ 1827 1828 uint8 padding[2]; /* alignment to 32bits boundry */ 1829}dot11RTSThreshold_t; 1830 1831 1832/****************************************************************************** 1833 1834 Name: DOT11_GROUP_ADDRESS_TBL 1835 Desc: The variable lengths of MAC addresses that are define as listening for 1836 multicast. The field Number of groups identifies how many MAC Addresses 1837 are relevant in that information element. 1838 Type: Configuration 1839 Access: Write Only 1840 Length: up to 50 bytes 1841 1842******************************************************************************/ 1843#define ADDRESS_GROUP_MAX (8) 1844#define ADDRESS_GROUP_MAX_LEN (6 * ADDRESS_GROUP_MAX) 1845typedef struct 1846{ 1847 INFO_ELE_HDR 1848 uint8 fltrState; /* 1 - multicast filtering is enabled. */ 1849 /* 0 - multicast filtering is disabled.*/ 1850 1851 uint8 numOfGroups; /* number of relevant multicast */ 1852 /* addresses.*/ 1853 1854 uint8 padding[2]; /* alignment to 32bits boundary */ 1855 uint8 dataLocation[ADDRESS_GROUP_MAX_LEN]; /* table of MAC addresses.*/ 1856}dot11MulticastGroupAddrStart_t; 1857 1858/****************************************************************************** 1859 1860 ACX_CONFIG_PS_WMM (Patch for Wi-Fi Bug) 1861 1862******************************************************************************/ 1863 1864typedef struct 1865{ 1866 INFO_ELE_HDR 1867 uint32 ConfigPsOnWmmMode; /* TRUE - Configure PS to work on WMM mode - do not send the NULL/PS_POLL 1868 packets even if TIM is set. 1869 FALSE - Configure PS to work on Non-WMM mode - work according to the 1870 standard. */ 1871} ACXConfigPsWmm_t; 1872 1873/****************************************************************************** 1874 1875 1876 Name: ACX_SET_RX_DATA_FILTER 1877 Desc: This IE configure one filter in the data filter module. can be used 1878 for add / remove / modify filter. 1879 Type: Filtering Configuration 1880 Access: Write Only 1881 Length: 4 + size of the fields of the filter (can vary between filters) 1882 1883******************************************************************************/ 1884/* data filter action */ 1885 1886#ifdef HOST_COMPILE 1887 1888#define FILTER_DROP 0 /* Packet will be dropped by the FW and wont be delivered to the driver. */ 1889#define FILTER_SIGNAL 1 /* Packet will be delivered to the driver. */ 1890#define FILTER_FW_HANDLE 2 /* Packet will be handled by the FW and wont be delivered to the driver. */ 1891 1892#else 1893 1894typedef enum { 1895 FILTER_DROP = 0, 1896 FILTER_SIGNAL , 1897 FILTER_FW_HANDLE, 1898 FILTER_MAX = 0xFF 1899}filter_enum; 1900 1901#endif 1902 1903#ifdef HOST_COMPILE 1904typedef uint8 filter_e; 1905#else 1906typedef filter_enum filter_e; 1907#endif 1908 1909/* data filter command */ 1910#define REMOVE_FILTER 0 /* Remove filter */ 1911#define ADD_FILTER 1 /* Add filter */ 1912 1913/* limitation */ 1914#define MAX_DATA_FILTERS 4 1915#define MAX_DATA_FILTER_SIZE 90 1916 1917typedef struct 1918{ 1919 INFO_ELE_HDR 1920 uint8 command; /* 0-remove, 1-add */ 1921 uint8 index; /* range 0-MAX_DATA_FILTERS */ 1922 filter_e action; /* action: FILTER_DROP, FILTER_SIGNAL, FILTER_FW_HANDLE */ 1923 uint8 numOfFields; /* number of field in specific filter */ 1924 uint8 FPTable; /* filter fields starts here. variable size. */ 1925} DataFilterConfig_t; 1926 1927/****************************************************************************** 1928 1929 Name: ACX_ENABLE_RX_DATA_FILTER 1930 Desc: This IE disable / enable the data filtering feature. in case the 1931 featue is enabled - default action should be set as well. 1932 Type: Filtering Configuration 1933 Access: Write Only 1934 Length: 2 1935 1936******************************************************************************/ 1937 1938typedef struct 1939{ 1940 INFO_ELE_HDR 1941 uint8 enable; /* 1 - enable, 0 - disable the data data filtering feature */ 1942 filter_e action; /* default action that should be implemented for packets that wont 1943 match any of the filters, or in case no filter is configured */ 1944} DataFilterDefault_t; 1945 1946 1947/****************************************************************************** 1948 1949 Name: ACX_GET_DATA_FILTER_STATISTICS 1950 Desc: get statistics of the data filtering module. 1951 Type: Statistics 1952 Access: Read Only 1953 Length: 20 1954 1955******************************************************************************/ 1956 1957typedef struct 1958{ 1959 INFO_ELE_HDR 1960 uint32 unmatchedPacketsCount; /* number of packets didn't match any filter (when the feature was enabled). */ 1961 uint32 matchedPacketsCount[MAX_DATA_FILTERS]; /* number of packets matching each of the filters */ 1962} ACXDataFilteringStatistics_t; 1963 1964 1965#ifdef RADIO_SCOPE 1966/****************************************************************************** 1967 1968****************************************************************************** 1969 1970 Name: ACX_RS_ENABLE 1971 Desc: This command instructs the WiLink to set the Radio Scope functionality 1972 state to either enable/disable. 1973 Type: Configuration 1974 Access: Write Only 1975 Length: 1 1976 1977******************************************************************************/ 1978typedef struct 1979{ 1980 INFO_ELE_HDR 1981 uint8 Enable; /* RadioScope feature will be enabled (1) or disabled(0) */ 1982 uint8 padding[3]; /* alignment to 32 bits */ 1983} ACXRadioScopeEnableStruct; 1984 1985/****************************************************************************** 1986 1987 Name: ACX_RS_RX 1988 Desc: This command instructs the WiLink to set the Radio Scope 1989 parameters to the desired values. 1990 Type: Configuration 1991 Access: Read/Write 1992 Length: 1 1993 1994 We have the following available memory area: 1995 1996 Information Element ID - 2 bytes 1997 Information Element Length - 2 bytes 1998 1999 Now the rest is MAX_CMD_PARAMS 2000 but 4 bytes must be subtracted 2001 because of the IE in Buffer. 2002 2003 2004******************************************************************************/ 2005typedef struct 2006{ 2007 uint16 service; 2008 uint16 length; 2009 uint8 channel; 2010 uint8 band; 2011 uint8 status; 2012 uint8 padding[1]; /*32 bit padding */ 2013}RxPacketStruct; 2014 2015typedef struct 2016{ 2017 /* We have the following available memory area: */ 2018 /* */ 2019 /* Information Element ID - 2 bytes */ 2020 /* Information Element Length - 2 bytes */ 2021 /* Number Of Packets in Buffer - 2 bytes */ 2022 /* */ 2023 /* Now the rest is MAX_CMD_PARAMS */ 2024 /* but 2 bytes must be subtracted */ 2025 /* because of the Number Of Packets in Buffer. */ 2026 RxPacketStruct packet[(MAX_CMD_PARAMS-2)/sizeof(RxPacketStruct)]; 2027}RxCyclicBufferStruct; 2028 2029typedef struct 2030 2031{ 2032 INFO_ELE_HDR 2033 /*uint8 padding[MAX_CMD_PARAMS-4]; */ 2034 RxCyclicBufferStruct buf; 2035} ACXRadioScopeRxParamsStruct; 2036 2037#endif /* RADIO_SCOPE */ 2038/****************************************************************************** 2039 Name: ACX_KEEP_ALIVE_MODE 2040 Desc: Set/Get the Keep Alive feature mode. 2041 Type: Configuration 2042 Access: Write 2043 Length: 4 - 1 for the mode + 3 for padding. 2044 2045******************************************************************************/ 2046 2047typedef struct 2048{ 2049INFO_ELE_HDR 2050 Bool_e modeEnabled; 2051 uint8 padding [3]; 2052}AcxKeepAliveMode; 2053 2054 2055/****************************************************************************** 2056 2057 Name: ACX_SET_KEEP_ALIVE_CONFIG 2058 Desc: Configure a KLV template parameters. 2059 Type: Configuration 2060 Access: Write Only 2061 Length: 8 2062 2063******************************************************************************/ 2064 2065typedef enum 2066{ 2067 NO_TX = 0, 2068 PERIOD_ONLY 2069} KeepAliveTrigger_enum; 2070 2071#ifdef HOST_COMPILE 2072typedef uint8 KeepAliveTrigger_e; 2073#else 2074typedef KeepAliveTrigger_enum KeepAliveTrigger_e; 2075#endif 2076 2077typedef enum 2078{ 2079 KLV_TEMPLATE_INVALID = 0, 2080 KLV_TEMPLATE_VALID, 2081 KLV_TEMPLATE_PENDING /* this option is FW internal only. host can only configure VALID or INVALID*/ 2082} KeepAliveTemplateValidation_enum; 2083 2084#ifdef HOST_COMPILE 2085typedef uint8 KeepAliveTemplateValidation_e; 2086#else 2087typedef KeepAliveTemplateValidation_enum KeepAliveTemplateValidation_e; 2088#endif 2089 2090typedef struct 2091{ 2092 INFO_ELE_HDR 2093 uint32 period; /*at range 1000-3600000 (msec). (To allow better range for debugging)*/ 2094 uint8 index; 2095 KeepAliveTemplateValidation_e valid; 2096 KeepAliveTrigger_e trigger; 2097 uint8 padding; 2098} AcxSetKeepAliveConfig_t; 2099 2100/* 2101 * BA sessen interface structure 2102 */ 2103typedef struct 2104{ 2105 INFO_ELE_HDR 2106 uint8 aMacAddress[6]; /* Mac address of: SA as receiver / RA as initiator */ 2107 uint8 uTid; /* TID */ 2108 uint8 uPolicy; /* Enable / Disable */ 2109 uint16 uWinSize; /* windows size in num of packet */ 2110 uint16 uInactivityTimeout; /* as initiator inactivity timeout in time units(TU) of 1024us / 2111 as receiver reserved */ 2112} TAxcBaSessionInitiatorResponderPolicy; 2113 2114/****************************************************************************** 2115 2116 Name: ACX_PEER_HT_CAP 2117 Desc: Configure HT capabilities - declare the capabilities of the peer 2118 we are connected to. 2119 Type: Configuration 2120 Access: Write Only 2121 Length: 2122 2123******************************************************************************/ 2124 2125typedef struct 2126{ 2127 INFO_ELE_HDR 2128 uint32 uHtCapabilites; /* 2129 * bit 0 Allow HT Operation 2130 * bit 1 - Allow Greenfield format in TX 2131 * bit 2 Allow Short GI in TX 2132 * bit 3 Allow L-SIG TXOP Protection in TX 2133 * bit 4 Allow HT Control fields in TX. 2134 * Note, driver will still leave space for HT control in packets regardless 2135 * of the value of this field. FW will be responsible to drop the HT field 2136 * from any frame when this Bit is set to 0. 2137 * bit 5 - Allow RD initiation in TXOP. FW is allowed to initate RD. Exact policy 2138 * setting for this feature is TBD. 2139 * Note, this bit can only be set to 1 if bit 3 is set to 1. 2140 */ 2141 2142 uint8 aMacAddress[6]; /* 2143 * Indicates to which peer these capabilities are relevant. 2144 * Note, currently this value will be set to FFFFFFFFFFFF to indicate it is 2145 * relevant for all peers since we only support HT in infrastructure mode. 2146 * Later on this field will be relevant to IBSS/DLS operation 2147 */ 2148 2149 uint8 uAmpduMaxLength; /* 2150 * This the maximum a-mpdu length supported by the AP. The FW may not 2151 * exceed this length when sending A-MPDUs 2152 */ 2153 2154 uint8 uAmpduMinSpacing; /* This is the minimal spacing required when sending A-MPDUs to the AP. */ 2155 2156} TAxcHtCapabilitiesIeFwInterface; 2157 2158/* EHtCapabilitesFwBitMask mapping */ 2159typedef enum 2160{ 2161 FW_CAP_BIT_MASK_HT_OPERATION = BIT_0, 2162 FW_CAP_BIT_MASK_GREENFIELD_FRAME_FORMAT = BIT_1, 2163 FW_CAP_BIT_MASK_SHORT_GI_FOR_20MHZ_PACKETS = BIT_2, 2164 FW_CAP_BIT_MASK_LSIG_TXOP_PROTECTION = BIT_3, 2165 FW_CAP_BIT_MASK_HT_CONTROL_FIELDS = BIT_4, 2166 FW_CAP_BIT_MASK_RD_INITIATION = BIT_5 2167} EHtCapabilitesFwBitMask; 2168 2169 2170/****************************************************************************** 2171 2172 Name: ACX_HT_BSS_OPERATION 2173 Desc: Configure HT capabilities - AP rules for behavior in the BSS. 2174 Type: Configuration 2175 Access: Write Only 2176 Length: 2177 2178******************************************************************************/ 2179 2180typedef struct 2181{ 2182 INFO_ELE_HDR 2183 uint8 uRifsMode; /* Values: 0 RIFS not allowed, 1 RIFS allowed */ 2184 uint8 uHtProtection; /* Values: 0 3 like in spec */ 2185 uint8 uGfProtection; /* Values: 0 - GF protection not required, 1 GF protection required */ 2186 uint8 uHtTxBurstLimit; /* Values: 0 TX Burst limit not required, 1 TX Burst Limit required */ 2187 uint8 uDualCtsProtection; /* 2188 * Values: 0 Dual CTS protection not required, 1 Dual CTS Protection required 2189 * Note: When this value is set to 1 FW will protect all TXOP with RTS 2190 * frame and will not use CTS-to-self regardless of the value of the 2191 * ACX_CTS_PROTECTION information element 2192 */ 2193 uint8 padding[3]; 2194 2195} TAxcHtInformationIeFwInterface; 2196 2197/****************************************************************************** 2198 FwStaticData_t - information stored in command mailbox area after the Init 2199 process is complete 2200 2201 Note: This structure is passed to the host via the mailbox at Init-Complete 2202 without host request!! 2203 The host reads this structure before sending any configuration to the FW. 2204******************************************************************************/ 2205 2206typedef struct 2207{ 2208 /* dot11StationIDStruct */ 2209 uint8 dot11StationID[6]; /* The MAC address for the STA.*/ 2210 uint8 padding[2]; /* alignment to 32bits boundry */ 2211 /* ACXRevision_t */ 2212 char FWVersion[20]; /* The WiLink firmware version, an ASCII string x.x.x.x.x */ 2213 /* that uniquely identifies the current firmware. */ 2214 /* The left most digit is incremented each time a */ 2215 /* significant change is made to the firmware, such as */ 2216 /* WLAN new project.*/ 2217 /* The second and third digit is incremented when major enhancements*/ 2218 /* are added or major fixes are made.*/ 2219 /* The fourth digit is incremented for each SP release */ 2220 /* and it indicants the costumer private branch */ 2221 /* The fifth digit is incremented for each build.*/ 2222 2223 uint32 HardWareVersion; /* This 4 byte field specifies the WiLink hardware version. */ 2224 /* bits 0 - 15: Reserved.*/ 2225 /* bits 16 - 23: Version ID - The WiLink version ID */ 2226 /* (1 = first spin, 2 = second spin, and so on).*/ 2227 /* bits 24 - 31: Chip ID - The WiLink chip ID. */ 2228 uint8 txPowerTable[NUMBER_OF_SUB_BANDS_E][NUM_OF_POWER_LEVEL]; /* Maximun Dbm in Dbm/10 units */ 2229} FwStaticData_t; 2230 2231/****************************************************************************** 2232 2233 2234 2235 ACX_TX_CONFIG_OPT 2236 2237 2238 2239******************************************************************************/ 2240 2241typedef struct 2242{ 2243 INFO_ELE_HDR 2244 uint16 txCompleteTimeout; /* Max time in msec the FW may delay frame Tx-Complete interrupt */ 2245 uint16 txCompleteThreshold; /* Tx-Complete packets number which requires interrupting the host (0 = no buffering) */ 2246} ACXTxConfigOptions_t; 2247 2248 2249/****************************************************************************** 2250 2251Name: ACX_PWR_CONSUMPTION_STATISTICS 2252Desc: Retrieve time statistics of the different power states. 2253Type: Configuration 2254Access: Read Only 2255Length: 20 2256 2257******************************************************************************/ 2258 2259// Power Statistics 2260typedef struct 2261{ 2262 INFO_ELE_HDR 2263 uint32 awakeTimeCnt_Low; 2264 uint32 awakeTimeCnt_Hi; 2265 uint32 powerDownTimeCnt_Low; 2266 uint32 powerDownTimeCnt_Hi; 2267 uint32 elpTimeCnt_Low; 2268 uint32 elpTimeCnt_Hi; 2269 uint32 ListenMode11BTimeCnt_Low; 2270 uint32 ListenMode11BTimeCnt_Hi; 2271 uint32 ListenModeOFDMTimeCnt_Low; 2272 uint32 ListenModeOFDMTimeCnt_Hi; 2273}ACXPowerConsumptionTimeStat_t; 2274 2275 2276/****************************************************************************** 2277 Name: ACX_BURST_MODE 2278 Desc: enable/disable burst mode in case TxOp limit != 0. 2279 Type: Configuration 2280 Access: Write 2281 Length: 1 - 2 for the mode + 3 for padding. 2282 2283******************************************************************************/ 2284 2285typedef struct 2286{ 2287INFO_ELE_HDR 2288 Bool_e enable; 2289 uint8 padding [3]; 2290}AcxBurstMode; 2291 2292 2293/****************************************************************************** 2294 Name: ACX_SET_RATE_MAMAGEMENT_PARAMS 2295 Desc: configure one of the configurable parameters in rate management module. 2296 Type: Configuration 2297 Access: Write 2298 Length: 8 bytes 2299 2300******************************************************************************/ 2301typedef enum 2302{ 2303 RATE_MGMT_RETRY_SCORE_PARAM, 2304 RATE_MGMT_PER_ADD_PARAM, 2305 RATE_MGMT_PER_TH1_PARAM, 2306 RATE_MGMT_PER_TH2_PARAM, 2307 RATE_MGMT_MAX_PER_PARAM, 2308 RATE_MGMT_INVERSE_CURIOSITY_FACTOR_PARAM, 2309 RATE_MGMT_TX_FAIL_LOW_TH_PARAM, 2310 RATE_MGMT_TX_FAIL_HIGH_TH_PARAM, 2311 RATE_MGMT_PER_ALPHA_SHIFT_PARAM, 2312 RATE_MGMT_PER_ADD_SHIFT_PARAM, 2313 RATE_MGMT_PER_BETA1_SHIFT_PARAM, 2314 RATE_MGMT_PER_BETA2_SHIFT_PARAM, 2315 RATE_MGMT_RATE_CHECK_UP_PARAM, 2316 RATE_MGMT_RATE_CHECK_DOWN_PARAM, 2317 RATE_MGMT_RATE_RETRY_POLICY_PARAM, 2318 RATE_MGMT_ALL_PARAMS = 0xff 2319} rateAdaptParam_enum; 2320 2321#ifdef HOST_COMPILE 2322typedef uint8 rateAdaptParam_e; 2323#else 2324typedef rateAdaptParam_enum rateAdaptParam_e; 2325#endif 2326 2327typedef struct 2328{ 2329 INFO_ELE_HDR 2330 rateAdaptParam_e paramIndex; 2331 uint16 RateRetryScore; 2332 uint16 PerAdd; 2333 uint16 PerTh1; 2334 uint16 PerTh2; 2335 uint16 MaxPer; 2336 uint8 InverseCuriosityFactor; 2337 uint8 TxFailLowTh; 2338 uint8 TxFailHighTh; 2339 uint8 PerAlphaShift; 2340 uint8 PerAddShift; 2341 uint8 PerBeta1Shift; 2342 uint8 PerBeta2Shift; 2343 uint8 RateCheckUp; 2344 uint8 RateCheckDown; 2345 uint8 RateRetryPolicy[13]; 2346}AcxRateMangeParams; 2347 2348/****************************************************************************** 2349 Name: ACX_GET_RATE_MAMAGEMENT_PARAMS 2350 Desc: read the configurable parameters of rate management module. 2351 Type: 2352 Access: read 2353 Length: 8 bytes 2354 2355******************************************************************************/ 2356typedef struct 2357{ 2358 INFO_ELE_HDR 2359 int32 SNRCorrectionHighLimit; 2360 int32 SNRCorrectionLowLimit; 2361 int32 PERErrorTH; 2362 int32 attemptEvaluateTH; 2363 int32 goodAttemptTH; 2364 int32 curveCorrectionStep; 2365}AcxRateMangeReadParams; 2366 2367 2368 2369/****************************************************************************** 2370 2371 Name: ACX_SET_SMART_REFLEX_STATE 2372 Desc: Configure smart reflex state (enable/disable). 2373 Type: Configuration 2374 Access: Write Only 2375 Length: 2376 2377******************************************************************************/ 2378 2379typedef struct 2380{ 2381 INFO_ELE_HDR 2382 Bool_e enable; 2383 uint8 padding [3]; 2384}ACXSmartReflexState_t; 2385 2386 2387/****************************************************************************** 2388 2389 Name: ACX_SET_SMART_REFLEX_DEBUG 2390 Desc: Configure smart reflex mechanism parameters - for debug mode. 2391 Type: Configuration 2392 Access: Write Only 2393 Length: 2394 2395******************************************************************************/ 2396typedef struct 2397{ 2398 uint8 len; //maximum length is 14 2399 int8 upperLimit; 2400 int8 values[14]; //this is the maximum length (in rows) of the error table 2401}SmartReflexErrTable_t; 2402 2403typedef struct 2404{ 2405 INFO_ELE_HDR 2406 SmartReflexErrTable_t errorTable; 2407 uint16 senN_P; 2408 uint16 senNRN; 2409 uint16 senPRN; 2410 uint16 senN_P_Gain; 2411}ACXSmartReflexDebugParams_t; 2412 2413 2414/****************************************************************************** 2415 2416 Name: ACX_SET_SMART_REFLEX_PARAMS 2417 Desc: Configure smart reflex mechanism tables - 1 for each FAB. 2418 The FW will choose the correct FAB, according to what is burned in the Efuse. 2419 Type: Configuration 2420 Access: Write Only 2421 Length: 2422 2423******************************************************************************/ 2424 2425typedef struct 2426{ 2427 INFO_ELE_HDR 2428 SmartReflexErrTable_t errorTable[3]; 2429}ACXSmartReflexConfigParams_t; 2430 2431#endif /* PUBLIC_INFOELE_H */ 2432 2433