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