Home | History | Annotate | Download | only in FirmwareApi
      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