Home | History | Annotate | Download | only in TWDriver
      1 /*
      2  * TWDriver.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 /** \file  TWDriver.h
     36  *  \brief TWDriver APIs
     37  *
     38  *  \see
     39  */
     40 
     41 /** @defgroup Control Control group
     42  * \brief The Control group includes the list of functions which perform TWD Control
     43  */
     44 /** @defgroup Measurement Measurement group
     45  * \brief The Measurement group includes the list of functions which gets measurements from FW / TWD
     46  */
     47 /** @defgroup Data_Path Data Path group
     48  * \brief The Data Path group includes the list of functions which perform the TWD Data Path
     49  */
     50 /**	@defgroup Power_Management Power Management group
     51  * \brief The Power Management group includes the list of functions which set the power management mode
     52  */
     53 /** @defgroup QoS Quality  Of Service group
     54  * \brief The Quality of Service group includes the list of functions which perform the TWD QoS
     55  */
     56 /** @defgroup Radio Radio (PHY) group
     57  * \brief The Radio group includes the list of functions which handle the Radio
     58  */
     59 /** @defgroup BSS BSS group
     60  * \brief The BSS group includes the list of functions which handle the Basic Service Set
     61  */
     62 /** @defgroup Misc Miscellaneous group
     63  * \brief The Miscellaneous group includes the list of functions which handle miscellaneous issues
     64  */
     65 #ifdef TI_DBG
     66 /**	@defgroup Test Debug Test group
     67  * \brief The Debug Test group includes the list of functions which Test the TWD and FW
     68  */
     69 #endif
     70 
     71 #ifndef TWDRIVER_H
     72 #define TWDRIVER_H
     73 
     74 
     75 #include "802_11Defs.h"
     76 #include "TWDriverMsr.h"
     77 #include "TWDriverScan.h"
     78 #include "TWDriverRate.h"
     79 #include "fwDebug_api.h"
     80 #include "TwIf.h"
     81 /*
     82  * original firmware h-files
     83  */
     84 #include "public_commands.h"
     85 #include "public_event_mbox.h"
     86 #include "public_infoele.h"
     87 #include "public_host_int.h"
     88 #include "public_descriptors.h"
     89 #include "public_radio.h"
     90 
     91 /*
     92  * Firmware types defintions
     93  */
     94 #ifndef uint8
     95 #define uint8   TI_UINT8
     96 #endif
     97 #ifndef uint16
     98 #define uint16  TI_UINT16
     99 #endif
    100 #ifndef uint32
    101 #define uint32  TI_UINT32
    102 #endif
    103 #ifndef int8
    104 #define int8    TI_INT8
    105 #endif
    106 #ifndef int16
    107 #define int16   TI_INT16
    108 #endif
    109 #ifndef int32
    110 #define int32   TI_INT32
    111 #endif
    112 
    113 
    114 
    115 /*
    116  * --------------------------------------------------------------
    117  *	Definitions
    118  * --------------------------------------------------------------
    119  */
    120 
    121 /* PALAU Group Address Default Values */
    122 #define NUM_GROUP_ADDRESS_VALUE_DEF     4
    123 #define NUM_GROUP_ADDRESS_VALUE_MIN     0
    124 #define NUM_GROUP_ADDRESS_VALUE_MAX     8
    125 
    126 /* Early Wakeup Default Values */
    127 #define EARLY_WAKEUP_ENABLE_MIN         (TI_FALSE)
    128 #define EARLY_WAKEUP_ENABLE_MAX         (TI_TRUE)
    129 #define EARLY_WAKEUP_ENABLE_DEF         (TI_TRUE)
    130 
    131 /* ARP IP Filter Default Values */
    132 #define MIN_FILTER_ENABLE_VALUE         0
    133 #define MAX_FILTER_ENABLE_VALUE         3
    134 #define DEF_FILTER_ENABLE_VALUE         0
    135 #define FILTER_ENABLE_FLAG_LEN          1
    136 
    137 /* Beacon filter Deafult Values */
    138 #define DEF_BEACON_FILTER_ENABLE_VALUE  1
    139 #define DEF_BEACON_FILTER_IE_TABLE_NUM  16
    140 #define MIN_BEACON_FILTER_ENABLE_VALUE  0
    141 #define MAX_BEACON_FILTER_ENABLE_VALUE  1
    142 #define BEACON_FILTER_IE_TABLE_DEF_SIZE 37
    143 #define BEACON_FILTER_IE_TABLE_MAX_SIZE 100
    144 #define BEACON_FILTER_IE_TABLE_MIN_SIZE 0
    145 #define BEACON_FILTER_IE_TABLE_MAX_NUM  (6+32)
    146 #define BEACON_FILTER_IE_TABLE_MIN_NUM  0
    147 
    148 /* CoexActivity Table Deafult Values */
    149 #define COEX_ACTIVITY_TABLE_DEF_NUM     0
    150 #define COEX_ACTIVITY_TABLE_MIN_NUM     0
    151 #define COEX_ACTIVITY_TABLE_MAX_NUM     24*2
    152 #define COEX_ACTIVITY_TABLE_SIZE        ((2+1)+(2+1)+(2+1)+(2+1)+(4+1)+(4+1)) /* includes spaces between bytes */
    153 
    154 #define DEF_NUM_STORED_FILTERS          1
    155 #define MIN_NUM_STORED_FILTERS          1
    156 #define MAX_NUM_STORED_FILTERS          8
    157 
    158 #define TWD_HW_ACCESS_METHOD_MIN   0
    159 #define TWD_HW_ACCESS_METHOD_MAX   2
    160 #define TWD_HW_ACCESS_METHOD_DEF   1
    161 
    162 #define TWD_SITE_FRAG_COLLECT_MIN  2
    163 #define TWD_SITE_FRAG_COLLECT_MAX  10
    164 #define TWD_SITE_FRAG_COLLECT_DEF  3
    165 
    166 #define TWD_TX_MIN_MEM_BLKS_NUM    40   /* The MINIMUM number of Tx memory blocks configured to FW */
    167 
    168 #define TWD_RX_BLOCKS_RATIO_MIN    0
    169 #define TWD_RX_BLOCKS_RATIO_MAX    100
    170 #define TWD_RX_BLOCKS_RATIO_DEF    50
    171 
    172 #define TWD_TX_FLASH_ENABLE_MIN         TI_FALSE
    173 #define TWD_TX_FLASH_ENABLE_MAX         TI_TRUE
    174 #define TWD_TX_FLASH_ENABLE_DEF         TI_TRUE
    175 
    176 #define TWD_USE_INTR_TRHESHOLD_MIN 0
    177 #define TWD_USE_INTR_TRHESHOLD_MAX 1
    178 #define TWD_USE_INTR_TRHESHOLD_DEF 0
    179 
    180 #define TWD_USE_TX_DATA_INTR_MIN   0
    181 #define TWD_USE_TX_DATA_INTR_MAX   1
    182 
    183 #define NUM_OF_CHANNELS_24              14
    184 #define NUM_OF_CHANNELS_5               180
    185 
    186 #define TWD_CALIBRATION_CHANNEL_2_4_MIN 1
    187 #define TWD_CALIBRATION_CHANNEL_2_4_MAX NUM_OF_CHANNELS_24
    188 #define TWD_CALIBRATION_CHANNEL_2_4_DEF 1
    189 
    190 #define A_5G_BAND_MIN_CHANNEL       36
    191 #define A_5G_BAND_MAX_CHANNEL       180
    192 #define A_5G_BAND_NUM_CHANNELS  	(A_5G_BAND_MAX_CHANNEL-A_5G_BAND_MIN_CHANNEL+1)
    193 
    194 #define TWD_CALIBRATION_CHANNEL_5_0_MIN 34
    195 #define TWD_CALIBRATION_CHANNEL_5_0_MAX  A_5G_BAND_MAX_CHANNEL
    196 #define TWD_CALIBRATION_CHANNEL_5_0_DEF 36
    197 
    198 #define TWD_CALIBRATION_CHANNEL_4_9_MIN 8
    199 #define TWD_CALIBRATION_CHANNEL_4_9_MAX 16
    200 #define TWD_CALIBRATION_CHANNEL_4_9_DEF 12
    201 
    202 #define TWD_RTS_THRESHOLD_MIN           0
    203 #define TWD_RTS_THRESHOLD_MAX           4096
    204 #define TWD_RTS_THRESHOLD_DEF           4096
    205 
    206 #define TWD_BCN_RX_TIME_OUT_MIN         10      /* ms */
    207 #define TWD_BCN_RX_TIME_OUT_MAX         1000    /* ms */
    208 #define TWD_BCN_RX_TIME_OUT_DEF         10      /* ms */
    209 
    210 #define TWD_RX_DISABLE_BROADCAST_MIN    TI_FALSE
    211 #define TWD_RX_DISABLE_BROADCAST_MAX    TI_TRUE
    212 #define TWD_RX_DISABLE_BROADCAST_DEF    TI_FALSE
    213 
    214 /* Indicate if the recovery process is active or not */
    215 #define TWD_RECOVERY_ENABLE_MIN         TI_FALSE
    216 #define TWD_RECOVERY_ENABLE_MAX         TI_TRUE
    217 #define TWD_RECOVERY_ENABLE_DEF         TI_TRUE
    218 
    219 /* Indicate if working with Burst Mode or not */
    220 #define BURST_MODE_ENABLE_MIN         TI_FALSE
    221 #define BURST_MODE_ENABLE_MAX         TI_TRUE
    222 #define BURST_MODE_ENABLE_DEF         TI_FALSE
    223 
    224 #define SMART_REFLEX_STATE_MIN        TI_FALSE
    225 #define SMART_REFLEX_STATE_MAX        TI_TRUE
    226 #define SMART_REFLEX_STATE_DEF        TI_TRUE
    227 
    228 #define SMART_REFLEX_CONFIG_PARAMS_DEF_TABLE  "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0"
    229 #define SMART_REFLEX_CONFIG_PARAMS_DEF_TABLE_SRF1  "07,03,18,10,05,fb,f0,e8, 0,0,0,0,0,0,0f,3f"
    230 #define SMART_REFLEX_CONFIG_PARAMS_DEF_TABLE_SRF2  "07,03,18,10,05,f6,f0,e8"
    231 #define SMART_REFLEX_CONFIG_PARAMS_DEF_TABLE_SRF3  "07,03,18,10,05,fb,f0,e8"
    232 
    233 #define TWD_FRAG_THRESHOLD_MIN          256
    234 #define TWD_FRAG_THRESHOLD_MAX          4096
    235 #define TWD_FRAG_THRESHOLD_DEF          4096
    236 
    237 #define TWD_MAX_TX_MSDU_LIFETIME_MIN    0
    238 #define TWD_MAX_TX_MSDU_LIFETIME_MAX    3000
    239 #define TWD_MAX_TX_MSDU_LIFETIME_DEF    512
    240 
    241 #define TWD_MAX_RX_MSDU_LIFETIME_MIN    0
    242 #define TWD_MAX_RX_MSDU_LIFETIME_MAX    0xFFFFFFFF
    243 #define TWD_MAX_RX_MSDU_LIFETIME_DEF    512000
    244 
    245 
    246 #define TWD_LISTEN_INTERVAL_MIN         1
    247 #define TWD_LISTEN_INTERVAL_MAX         10
    248 #define TWD_LISTEN_INTERVAL_DEF         3
    249 
    250 /* This field indicates the number of transmit retries to attempt at
    251     the rate specified in the TNETW Tx descriptor before
    252     falling back to the next lowest rate.
    253     If this field is set to 0xff, then rate fallback is disabled.
    254     If this field is 0, then there will be 0 retries before starting fallback.*/
    255 #define TWD_RATE_FB_RETRY_LIMIT_MIN     0   /* => No retries before starting RateFallBack */
    256 #define TWD_RATE_FB_RETRY_LIMIT_MAX     255 /* =>0xff for disabling Rate fallback */
    257 #define TWD_RATE_FB_RETRY_LIMIT_DEF     0
    258 
    259 #define TWD_TX_ANTENNA_MIN              TX_ANTENNA_2
    260 #define TWD_TX_ANTENNA_MAX              TX_ANTENNA_1
    261 #define TWD_TX_ANTENNA_DEF              TX_ANTENNA_1
    262 
    263 #define TWD_RX_ANTENNA_MIN              RX_ANTENNA_1
    264 #define TWD_RX_ANTENNA_MAX              RX_ANTENNA_PARTIAL
    265 #define TWD_RX_ANTENNA_DEF              RX_ANTENNA_FULL
    266 
    267 /*
    268  * Tx and Rx interrupts pacing (threshold in packets, timeouts in milliseconds)
    269  */
    270 #define TWD_TX_CMPLT_THRESHOLD_DEF      4   /* 0 means no pacing so send interrupt on every event */
    271 #define TWD_TX_CMPLT_THRESHOLD_MIN      0
    272 #define TWD_TX_CMPLT_THRESHOLD_MAX      30
    273 
    274 #define TWD_TX_CMPLT_TIMEOUT_DEF        700 /* The Tx Complete interrupt pacing timeout in microseconds! */
    275 #define TWD_TX_CMPLT_TIMEOUT_MIN        1
    276 #define TWD_TX_CMPLT_TIMEOUT_MAX        50000
    277 
    278 #define TWD_RX_INTR_THRESHOLD_DEF       0   /* 0 means no pacing so send interrupt on every event */
    279 #define TWD_RX_INTR_THRESHOLD_MIN       0
    280 #define TWD_RX_INTR_THRESHOLD_MAX       30
    281 #define TWD_RX_INTR_THRESHOLD_DEF_WIFI_MODE  0 /* No Rx interrupt pacing so send interrupt on every event */
    282 
    283 #define TWD_RX_INTR_TIMEOUT_DEF         600  /* The Rx interrupt pacing timeout in microseconds! */
    284 #define TWD_RX_INTR_TIMEOUT_MIN         1
    285 #define TWD_RX_INTR_TIMEOUT_MAX         50000
    286 
    287 /* Rx aggregation packets number limit (max packets in one aggregation) */
    288 #define TWD_RX_AGGREG_PKTS_LIMIT_DEF    4
    289 #define TWD_RX_AGGREG_PKTS_LIMIT_MIN    0
    290 #define TWD_RX_AGGREG_PKTS_LIMIT_MAX    4
    291 
    292 /* Tx aggregation packets number limit (max packets in one aggregation) */
    293 #define TWD_TX_AGGREG_PKTS_LIMIT_DEF    0
    294 #define TWD_TX_AGGREG_PKTS_LIMIT_MIN    0
    295 #define TWD_TX_AGGREG_PKTS_LIMIT_MAX    32
    296 
    297 /*
    298  * Tx power level
    299  */
    300 #define DBM_TO_TX_POWER_FACTOR			10
    301 
    302 /* TX_POWER is in Dbm/10 units */
    303 #define MAX_TX_POWER					250
    304 #define MIN_TX_POWER					0
    305 #define DEF_TX_POWER					205
    306 
    307 
    308 #define MIN_DEFAULT_KEY_ID              0
    309 #define MAX_DEFAULT_KEY_ID              3
    310 
    311 #define KEY_RSC_LEN                     8
    312 #define MIN_KEY_LEN                     5
    313 #define MAX_KEY_LEN                     32
    314 
    315 #define TWD_RSSI_BEACON_WEIGHT_MIN       0
    316 #define TWD_RSSI_BEACON_WEIGHT_MAX     100
    317 #define TWD_RSSI_BEACON_WEIGHT_DEF      20
    318 
    319 #define TWD_RSSI_PACKET_WEIGHT_MIN       0
    320 #define TWD_RSSI_PACKET_WEIGHT_MAX     100
    321 #define TWD_RSSI_PACKET_WEIGHT_DEF      10
    322 
    323 #define TWD_SNR_BEACON_WEIGHT_MIN        0
    324 #define TWD_SNR_BEACON_WEIGHT_MAX      100
    325 #define TWD_SNR_BEACON_WEIGHT_DEF       20
    326 
    327 #define TWD_SNR_PACKET_WEIGHT_MIN        0
    328 #define TWD_SNR_PACKET_WEIGHT_MAX      100
    329 #define TWD_SNR_PACKET_WEIGHT_DEF       10
    330 
    331 #define TWD_DCO_ITRIM_ENABLE_MIN  TI_FALSE
    332 #define TWD_DCO_ITRIM_ENABLE_MAX  TI_TRUE
    333 #define TWD_DCO_ITRIM_ENABLE_DEF  TI_FALSE
    334 
    335 #define TWD_DCO_ITRIM_MODERATION_TIMEOUT_MIN    10000
    336 #define TWD_DCO_ITRIM_MODERATION_TIMEOUT_MAX  1000000
    337 #define TWD_DCO_ITRIM_MODERATION_TIMEOUT_DEF    50000
    338 
    339 
    340 #define MAX_NUM_OF_AC                   4
    341 
    342 /************************************/
    343 /*      Rates values                */
    344 /************************************/
    345 /* The next definitions are used to decide which encryption is used by the Rx flags */
    346 #define RX_FLAGS_NO_SECURITY                0
    347 #define RX_FLAGS_WEP                        1
    348 #define RX_FLAGS_TKIP                       2
    349 #define RX_FLAGS_AES                        3
    350 
    351 
    352 #define RX_DESC_FLAGS_ENCRYPTION            8
    353 #define RX_PACKET_FLAGS_ENCRYPTION_SHIFT    16
    354 #define RX_PACKET_FLAGS_ENCRYPTION_SHIFT_FROM_DESC      (RX_PACKET_FLAGS_ENCRYPTION_SHIFT - RX_DESC_FLAGS_ENCRYPTION)
    355 
    356 /* Tx packet Control-Block flags bit-mask. */
    357 #define TX_CTRL_FLAG_XFER_DONE_ISSUED      0x0001  /* Xfer-Done already issued to upper driver   - for WHA. */
    358 #define TX_CTRL_FLAG_TX_COMPLETE_ISSUED    0x0002  /* Tx-Complete already issued to upper driver - for WHA. */
    359 #define TX_CTRL_FLAG_LINK_TEST             0x0004  /* XCC link test packet */
    360 #define TX_CTRL_FLAG_SENT_TO_FW            0x0008  /* Set after the packet is allowed to be sent to FW (by TxHwQueue) */
    361 #define TX_CTRL_FLAG_PKT_IN_RAW_BUF        0x0010  /* The input packet is in a raw buffer (as opposed to OS packet) */
    362 #define TX_CTRL_FLAG_MULTICAST             0x0020  /* A multicast ethernet packet */
    363 #define TX_CTRL_FLAG_BROADCAST             0x0040  /* A broadcast ethernet packet */
    364 
    365 #define TX_PKT_TYPE_MGMT                   1   /* Management Packet						  */
    366 #define TX_PKT_TYPE_EAPOL                  2   /* EAPOL packet (Ethernet)				  */
    367 #define TX_PKT_TYPE_ETHER                  3   /* Data packet from the Network interface  */
    368 #define TX_PKT_TYPE_WLAN_DATA	           4   /* Driver generated WLAN Data Packet (currently used for IAPP packet) */
    369 
    370 
    371 #define ALIGN_4BYTE_MASK                   0x3 /* Masked LS bits for 4-bytes aligned addresses or lengths. */
    372 #define SHIFT_BETWEEN_TU_AND_USEC          10  /* Shift factor to convert between TU (1024 uSec) and uSec. */
    373 
    374 /* Packet header + extensions structure ranges between 24 and 48 bytes as follows:
    375  * ------------------------------------------------------------------------------
    376  * Alignment Padding:   0/2 bytes,      added for 4 bytes alignment of this structure.
    377  * Mac-Header:          24 bytes,       802.11 basic header.
    378  * Qos header:          0/2 bytes,      for QoS-data or QoS-Null the two QoS bytes are added.
    379  * Security Pad:        0/0/4/8/18 bytes,  for None/WEP/TKIP/AES/GEM.
    380  * LLC/SNAP:            0/8 bytes,      added only for data packets.
    381  * HT control:          0/4             added only for packte support QoS and HT
    382  */
    383 #define MAX_HEADER_SIZE                 48
    384 
    385 /* Data body max length */
    386 #define MAX_DATA_BODY_LENGTH            4096
    387 
    388 
    389 
    390 /* The weight in % of the new packet relative to the previous average value of RSSI */
    391 #define RSSI_DEFAULT_WEIGHT             20
    392 
    393 #define RSSI_DEFAULT_THRESHOLD          -80
    394 #define SNR_DEFAULT_THRESHOLD           0
    395 
    396 /*
    397  * 'No beacon' roaming trigger configuration
    398  * Number of consecutive beacons (or DTIM periods) missed before
    399  * 'Out of Sync' event is raised
    400  */
    401 #define OUT_OF_SYNC_DEFAULT_THRESHOLD   10
    402 /*
    403  * IBSS - Number of consecutive beacons (or DTIM periods) missed before
    404  * 'Out of Sync' event is raised
    405  */
    406 #define OUT_OF_SYNC_IBSS_THRESHOLD      200
    407 /* Period of time between 'Out of sync' and 'No beacon' events */
    408 #define NO_BEACON_DEFAULT_TIMEOUT       100 /* in tu-s*/
    409 
    410 /* Consecutive NACK roaming trigger configuration */
    411 #define NO_ACK_DEFAULT_THRESHOLD        20
    412 
    413 /* Low Rx rate roaming trigger configuration */
    414 #define LOW_RATE_DEFAULT_THRESHOLD      2
    415 
    416 #define MEASUREMENT_NOISE_HISTOGRAM_NUM_OF_RANGES       8
    417 #define MAX_CHANNELS_IN_REG_DOMAIN      40
    418 
    419 #define CTS_TO_SELF_DISABLE             0
    420 #define CTS_TO_SELF_ENABLE              1
    421 
    422 #define MAX_TEMPLATE_SIZE               256
    423 
    424 /* Scan constants */
    425 #define MAX_NUMBER_OF_CHANNELS_PER_SCAN                     16
    426 #define SCAN_MAX_NUM_OF_NORMAL_CHANNELS_PER_COMMAND         MAX_NUMBER_OF_CHANNELS_PER_SCAN
    427 #define SCAN_MAX_NUM_OF_SPS_CHANNELS_PER_COMMAND            16
    428 #define SCAN_DEFAULT_MIN_CHANNEL_DWELL_TIME                 30000
    429 #define SCAN_DEFAULT_MAX_CHANNEL_DWELL_TIME                 60000
    430 #define SCAN_DEFAULT_EARLY_TERMINATION_EVENT                SCAN_ET_COND_DISABLE
    431 #define SCAN_DEFAULT_EARLY_TERMINATION_NUM_OF_FRAMES        0
    432 
    433 #define NUM_OF_NOISE_HISTOGRAM_COUNTERS 8
    434 
    435 #define TX_DESCRIPTOR_SIZE             sizeof(TxIfDescriptor_t)
    436 
    437 #define CTRL_BLK_ENTRIES_NUM            160
    438 
    439 #define HT_CAP_AMPDU_PARAMETERS_FIELD_OFFSET   2
    440 #define HT_CAP_HT_EXTENDED_FIELD_OFFSET        19
    441 #define HT_CAP_AMPDU_MAX_RX_FACTOR_BITMASK     0x3
    442 #define HT_CAP_AMPDU_MIN_START_SPACING_BITMASK 0x7
    443 #define HT_CAP_GREENFIELD_FRAME_FORMAT_BITMASK 0x0010
    444 #define HT_CAP_SHORT_GI_FOR_20MHZ_BITMASK      0x0020
    445 #define HT_CAP_LSIG_TXOP_PROTECTION_BITMASK    0x8000
    446 #define HT_EXT_HT_CONTROL_FIELDS_BITMASK       0x0400
    447 #define HT_EXT_RD_INITIATION_BITMASK           0x0800
    448 #define HT_INF_RIFS_MOD_BITMASK                0x08
    449 #define HT_INF_OPERATION_MOD_BITMASK           0x03
    450 #define HT_INF_NON_GF_PRES_BITMASK             0x04
    451 #define HT_INF_TX_BURST_LIMIT_BITMASK          0x08
    452 #define HT_INF_DUAL_BEACON_BITMASK             0x40
    453 #define HT_INF_DUAL_CTS_PROTECTION_BITMASK     0x80
    454 
    455 /*
    456  * TWD HT capabilities, physical capabilities of the STA.
    457  * The structure is defined like that in order to simplify the interface with WHA layer.
    458  */
    459 #define RX_TX_MCS_BITMASK_SIZE      10
    460 
    461 #define  DSSS_CCK_MODE         					1
    462 
    463 #define MCS_HIGHEST_SUPPORTED_RECEPTION_DATA_RATE_IN_MBIT_S 0x48
    464 
    465 #define IMPLICIT_TXBF_REC_CAPABLE             	1
    466 #define TRANSMIT_STAGGERED_SOUNDING_CAPABLE   	1
    467 
    468 /* Firmware version name length */
    469 #define FW_VERSION_LEN                  		20
    470 
    471 /*the max table sized is : ( number of 221 * 8 bytes ) + ( non-221 * 2 bytes )
    472   Must be synchronized with the size of ACX defined in public_infoele.h interface
    473   with the FW
    474 */
    475 #define MIB_MAX_SIZE_OF_IE_TABLE 				112
    476 #define MIB_TEMPLATE_DATA_MAX_LEN   			256
    477 #define MIB_MAX_MULTICAST_GROUP_ADDRS			8
    478 
    479 #define MAX_MULTICAST_GROUP_ADDRS				8
    480 
    481 /* Max numver of policies */
    482 #define MAX_NUM_OF_TX_RATE_CLASS_POLICIES   	8
    483 
    484 #define NUM_POWER_LEVELS                		4
    485 #define MAX_POWER_LEVEL                 		1
    486 #define MIN_POWER_LEVEL                 		NUM_POWER_LEVELS
    487 
    488 /*
    489  * --------------------------------------------------------------
    490  *	Enumerations
    491  * --------------------------------------------------------------
    492  */
    493 /** \enum EFileType
    494  * \brief TWD input/output files
    495  *
    496  * \par Description
    497  * Indicates which File (or part of file) to read or write
    498  *
    499  * \sa TFileInfo
    500  */
    501 typedef enum
    502 {
    503     FILE_TYPE_INI = 0, 	/**< */
    504     FILE_TYPE_NVS, 		/**< */
    505     FILE_TYPE_FW, 		/**< */
    506     FILE_TYPE_FW_NEXT 	/**< */
    507 } EFileType;
    508 
    509 /** \enum EKeepAliveTriggerType
    510  * \brief Keep Alive Trigger Types
    511  *
    512  * \par Description
    513  * Indicates when to trigger Keep Alive
    514  *
    515  * \sa TKeepAliveParams
    516  *
    517  */
    518 typedef enum
    519 {
    520     KEEP_ALIVE_TRIG_TYPE_NO_TX = 0,		/**< */
    521     KEEP_ALIVE_TRIG_TYPE_PERIOD_ONLY	/**< */
    522 
    523 } EKeepAliveTriggerType;
    524 
    525 /** \enum ESlotTime
    526  * \brief Radio (PHY) Slot Time Type
    527  *
    528  * \par Description
    529  * Used for configuring PHY Slot Time for FW
    530  *
    531  * \sa TWD_CfgPreamble
    532  */
    533 typedef enum
    534 {
    535 	PHY_SLOT_TIME_LONG		= 0,	/**< 	Long PHY Slot Time  */
    536     PHY_SLOT_TIME_SHORT     = 1		/**< 	Short PHY Slot Time  */
    537 
    538 } ESlotTime;
    539 
    540 /** \enum EMib
    541  * \brief MIB Element Type
    542  *
    543  * \par Description
    544  * Used for R/W MIB to FW
    545  *
    546  * \sa TMib
    547  */
    548 typedef enum
    549 {
    550 /*	0x00	*/	MIB_dot11MaxReceiveLifetime = 0,	/**< */
    551 /*	0x01	*/  MIB_dot11SlotTime,					/**< */
    552 /*	0x02	*/  MIB_dot11GroupAddressesTable,		/**< */
    553 /*	0x03	*/  MIB_dot11WepDefaultKeyId,			/**< */
    554 /*	0x04	*/  MIB_dot11CurrentTxPowerLevel,		/**< */
    555 /*	0x05	*/  MIB_dot11RTSThreshold,				/**< */
    556 /*	0x06	*/  MIB_ctsToSelf,						/**< */
    557 /*	0x07	*/  MIB_arpIpAddressesTable,			/**< */
    558 /*	0x08	*/  MIB_templateFrame,					/**< */
    559 /*	0x09	*/  MIB_rxFilter,						/**< */
    560 /*	0x0A	*/  MIB_beaconFilterIETable,			/**< */
    561 /*	0x0B	*/  MIB_beaconFilterEnable,				/**< */
    562 /*	0x0C	*/  MIB_sleepMode,						/**< */
    563 /*	0x0D	*/  MIB_wlanWakeUpInterval,				/**< */
    564 /*	0x0E	*/  MIB_beaconLostCount,				/**< */
    565 /*	0x0F	*/  MIB_rcpiThreshold,					/**< */
    566 /*	0x10	*/  MIB_statisticsTable,				/**< */
    567 /*	0x11	*/  MIB_ibssPsConfig,					/**< */
    568 /*	0x12	*/  MIB_txRatePolicy,					/**< */
    569 /*	0x13	*/  MIB_countersTable,					/**< */
    570 /*	0x14	*/  MIB_btCoexsitenceMode,				/**< */
    571 /*	0x15	*/  MIB_btCoexistenceParameters,		/**< */
    572 
    573 				/* must be last!!! */
    574 				MIB_lastElem	= 0xFFFF			/**< */
    575 
    576 } EMib;
    577 
    578 /** \enum ETwdParam
    579  * \brief TWD Control parameter ID
    580  *
    581  * \par Description
    582  * FW Parmaeter Information Identifier
    583  *
    584  * \sa TWD_SetParam, TWD_GetParam
    585  */
    586 typedef enum
    587 {
    588 /*	0x01	*/	TWD_RTS_THRESHOLD_PARAM_ID          = 0x01,		/**< */
    589 /*	0x02	*/  TWD_FRAG_THRESHOLD_PARAM_ID,					/**< */
    590 /*	0x03	*/  TWD_COUNTERS_PARAM_ID,							/**< */
    591 /*	0x04	*/  TWD_LISTEN_INTERVAL_PARAM_ID,					/**< */
    592 /*	0x05	*/  TWD_BEACON_INTERVAL_PARAM_ID,					/**< */
    593 /*	0x06	*/  TWD_TX_POWER_PARAM_ID,    						/**< */
    594 /*	0x07	*/  TWD_CLK_RUN_ENABLE_PARAM_ID,					/**< */
    595 /*	0x08	*/  TWD_QUEUES_PARAM_ID, 							/**< */
    596 /*	0x09	*/  TWD_TX_RATE_CLASS_PARAM_ID,						/**< */
    597 /*	0x0A	*/  TWD_MAX_TX_MSDU_LIFE_TIME_PARAM_ID,				/**< */
    598 /*	0x0B	*/  TWD_MAX_RX_MSDU_LIFE_TIME_PARAM_ID,				/**< */
    599 /*	0x0C	*/  TWD_CTS_TO_SELF_PARAM_ID,						/**< */
    600 /*	0x0D	*/  TWD_RX_TIME_OUT_PARAM_ID,						/**< */
    601 /*	0x0E	*/  TWD_BCN_BRC_OPTIONS_PARAM_ID,					/**< */
    602 /*	0x0F	*/	TWD_AID_PARAM_ID,								/**< */
    603 /*	0x10	*/  TWD_RSN_HW_ENC_DEC_ENABLE_PARAM_ID,  			/**< */
    604 /*	0x11	*/  TWD_RSN_KEY_ADD_PARAM_ID,						/**< */
    605 /*	0x12	*/  TWD_RSN_KEY_REMOVE_PARAM_ID,					/**< */
    606 /*	0x13	*/  TWD_RSN_DEFAULT_KEY_ID_PARAM_ID,				/**< */
    607 /*	0x14	*/  TWD_RSN_SECURITY_MODE_PARAM_ID,					/**< */
    608 /*	0x15	*/  TWD_RSN_SECURITY_ALARM_CB_SET_PARAM_ID,			/**< */
    609 /*	0x16	*/  TWD_ACX_STATISTICS_PARAM_ID,					/**< */
    610 /*	0x17	*/  TWD_MEDIUM_OCCUPANCY_PARAM_ID,					/**< */
    611 /*	0x18	*/  TWD_DISABLE_POWER_MANAGEMENT_AUTO_CONFIG_PARAM_ID,	/**< */
    612 /*	0x19	*/  TWD_ENABLE_POWER_MANAGEMENT_AUTO_CONFIG_PARAM_ID,	/**< */
    613 /*	0x1A	*/  TWD_SG_ENABLE_PARAM_ID,							/**< */
    614 /*	0x1B	*/  TWD_SG_CONFIG_PARAM_ID,							/**< */
    615 #ifdef XCC_MODULE_INCLUDED
    616 /*	0x1C	*/  TWD_RSN_XCC_SW_ENC_ENABLE_PARAM_ID,				/**< */
    617 /*	0x1D	*/  TWD_RSN_XCC_MIC_FIELD_ENABLE_PARAM_ID,			/**< */
    618 #endif /* XCC_MODULE_INCLUDED*/
    619 /*	0x1E	*/  TWD_TX_OP_LIMIT_PARAM_ID,						/**< */
    620 /*	0x1F	*/  TWD_NOISE_HISTOGRAM_PARAM_ID,					/**< */
    621 /*	0x20	*/  TWD_TSF_DTIM_MIB_PARAM_ID,						/**< */
    622 /*	0x21	*/  TWD_REVISION_PARAM_ID,							/**< */
    623 /*	0x22	*/  TWD_CURRENT_CHANNEL_PARAM_ID,					/**< */
    624 /*	0x23	*/	TWD_RADIO_TEST_PARAM_ID,						/**< */
    625 /*	0x24	*/	TWD_RSSI_LEVEL_PARAM_ID,						/**< */
    626 /*	0x25	*/	TWD_SNR_RATIO_PARAM_ID,							/**< */
    627 /*	0x26	*/	TWD_COEX_ACTIVITY_PARAM_ID,	    				/**< */
    628 /*	0x27	*/	TWD_FM_COEX_PARAM_ID,	    				    /**< */
    629 /*	0x28	*/	TWD_DCO_ITRIM_PARAMS_ID,    				    /**< */
    630 
    631 				/* must be last!!! */
    632 /*	0x29    */	TWD_LAST_PARAM_ID								/**< */
    633 } ETwdParam;
    634 
    635 /** \enum ETwdCallbackOwner
    636  * \brief TWD Callback Module owner ID
    637  *
    638  * \par Description
    639  * The Owner ID defines a specific TWD Module
    640  *
    641  * \sa ETwdEventId, TWD_RegisterCb
    642  */
    643 typedef enum
    644 {
    645     TWD_OWNER_DRIVER_TX_XFER            = 0x0100,	/**< 	TX Xfer Owner ID  		*/
    646     TWD_OWNER_RX_XFER                   = 0x0200,	/**< 	RX Xfer Owner ID  		*/
    647     TWD_OWNER_SELF                      = 0x0300,	/**< 	Self Owner ID  			*/
    648     TWD_OWNER_MAC_SERVICES              = 0x0400,	/**< 	MAC Services Owner ID  	*/
    649     TWD_OWNER_TX_RESULT                 = 0x0500,	/**< 	TX Result Owner ID  	*/
    650     TWD_OWNER_SELF_CONFIG               = 0x0600,	/**< 	Self configuration of Owner ID  	*/
    651     TWD_OWNER_RX_QUEUE                  = 0x0700,	/**< 	RX Queue Owner ID  		*/
    652     TWD_OWNER_TX_HW_QUEUE               = 0x0800	/**< 	TX HW Queue Owner ID  	*/
    653 
    654 } ETwdCallbackOwner;
    655 
    656 /** \enum ETwdIntCallbackId
    657  * \brief TWD Internal Callbacks ID
    658  *
    659  * \par Description
    660  * The Owner ID defines a specific TWD Internal CB
    661  *
    662  * \sa ETwdEventId
    663  */
    664 typedef enum
    665 {
    666     TWD_INT_SEND_PACKET_TRANSFER        =  0x00 ,	/**< 	Tx Data Path Send Callback  	*/
    667     TWD_INT_SEND_PACKET_COMPLETE                , 	/**< 	Tx Data Path Complete Callback 	*/
    668     TWD_INT_UPDATE_BUSY_MAP                     , 	/**< 	Tx Data Path Update-Busy-Map Callback 	*/
    669 
    670     /* Rx Data Path Callbacks */
    671     TWD_INT_RECEIVE_PACKET              =  0x10 ,	/**< 	Rx Data Path Receive Packet Callback 	   	*/
    672     TWD_INT_REQUEST_FOR_BUFFER                  , 	/**< 	Rx Data Path Request for buffer Callback  	*/
    673 
    674     /* TWD Callbacks */
    675     TWD_INT_COMMAND_COMPLETE            =  0x20 , 	/**< 	TWD internal Command Complete Callback  	*/
    676     TWD_INT_EVENT_FAILURE  							/**< 	TWD internal Event Failure handle Callback 	*/
    677 
    678 } ETwdIntCallbackId;
    679 
    680 /** \enum ETwdOwnEventId
    681  * \brief Event Mail Box ID
    682  *
    683  * \par Description
    684  * Clients That expects an event should register for it,
    685  * and Mask/UnMask Events with this ID
    686  *
    687  * \sa
    688  */
    689 /* Note: changes here should be reflected also in eventTable in eventMbox.c !!! */
    690 typedef enum
    691 {
    692 			/*Regular events*/
    693 /*	0	*/  TWD_OWN_EVENT_RSSI_SNR_TRIGGER_0 = 0,       /**< */
    694 /*	1	*/  TWD_OWN_EVENT_RSSI_SNR_TRIGGER_1,           /**< */
    695 /*	2	*/  TWD_OWN_EVENT_RSSI_SNR_TRIGGER_2,           /**< */
    696 /*	3	*/  TWD_OWN_EVENT_RSSI_SNR_TRIGGER_3,           /**< */
    697 /*	4	*/  TWD_OWN_EVENT_RSSI_SNR_TRIGGER_4,          	/**< */
    698 /*	5	*/  TWD_OWN_EVENT_RSSI_SNR_TRIGGER_5,           /**< */
    699 /*	6	*/  TWD_OWN_EVENT_RSSI_SNR_TRIGGER_6,           /**< */
    700 /*	7	*/  TWD_OWN_EVENT_RSSI_SNR_TRIGGER_7,           /**< */
    701 /*	8	*/	TWD_OWN_EVENT_MEASUREMENT_START,            /**< */
    702 /*	9	*/  TWD_OWN_EVENT_MEASUREMENT_COMPLETE,         /**< */
    703 /*	10	*/	TWD_OWN_EVENT_SCAN_CMPLT,                   /**< */
    704 /*	11	*/  TWD_OWN_EVENT_SPS_SCAN_CMPLT,               /**< */
    705 /*	12	*/  TWD_OWN_EVENT_AP_DISCOVERY_COMPLETE,        /**< */
    706 /*	13	*/  TWD_OWN_EVENT_PS_REPORT,                    /**< */
    707 /*	14	*/	TWD_OWN_EVENT_PSPOLL_DELIVERY_FAILURE, 		/**< */
    708 /*	15	*/  TWD_OWN_EVENT_DISCONNECT_COMPLETE,          /**< */
    709 /*	16	*/  TWD_OWN_EVENT_JOIN_CMPLT,                   /**< */
    710 /*	17	*/  TWD_OWN_EVENT_SWITCH_CHANNEL_CMPLT,         /**< */
    711 /*	18	*/  TWD_OWN_EVENT_BSS_LOSE,                     /**< */
    712 /*	19	*/  TWD_OWN_EVENT_BSS_REGAIN,                   /**< */
    713 /*	20	*/  TWD_OWN_EVENT_MAX_TX_RETRY,                 /**< */
    714 /*  21  */  RESERVED21,									/**< */
    715 /*	22	*/  TWD_OWN_EVENT_SOFT_GEMINI_SENSE,            /**< */
    716 /*	23	*/  TWD_OWN_EVENT_SOFT_GEMINI_PREDIC,           /**< */
    717 /*	24	*/  TWD_OWN_EVENT_SOFT_GEMINI_AVALANCHE,        /**< */
    718 /*	25	*/  TWD_OWN_EVENT_PLT_RX_CALIBRATION_COMPLETE,  /**< */
    719 /*  26  */  TWD_DBG_EVENT,								/**< */
    720 /*  27  */  TWD_HEALTH_CHECK_REPLY_EVENT,				/**< */
    721 /*	28	*/  TWD_OWN_EVENT_PERIODIC_SCAN_COMPLETE,       /**< */
    722 /*	29	*/  TWD_OWN_EVENT_PERIODIC_SCAN_REPORT,         /**< */
    723 /*  30  */  TWD_BA_SESSION_TEAR_DOWN_EVENT,				/**< */
    724 /*	31	*/  TWD_OWN_EVENT_ALL,                          /**< */
    725 /*	32	*/  TWD_OWN_EVENT_MAX                          	/**< */
    726 
    727 } ETwdOwnEventId;
    728 
    729 /** \enum ETwdEventId
    730  * \brief TNETW Driver Event ID
    731  *
    732  * \par Description
    733  * The TWD Event ID is used by user for registering a TWD Internal CB
    734  * which will handle a TWD Event.
    735  * Each field in this enum is an ID of TWD Event, and is combined of two IDs:
    736  * TWD CB Owner (Module) ID and TWD Internal CB ID. Therefore, the CB is registered accordeing to
    737  * Module (Owner) and Internal CB Id.
    738  *
    739  * \sa TWD_RegisterCb, ETwdCallbackOwner, ETwdIntCallbackId
    740  */
    741 typedef enum
    742 {
    743     /* Internal Failure Event Callbacks */
    744     TWD_EVENT_FAILURE                   	=  TWD_OWNER_SELF | TWD_INT_EVENT_FAILURE, 					/**< 	Failure Internal Event ID 			*/
    745     TWD_EVENT_COMMAND_COMPLETE          	=  TWD_OWNER_SELF | TWD_INT_COMMAND_COMPLETE,  				/**< 	Command Complete Internal Event ID */
    746 
    747     /* Tx Data Path Callbacks */
    748     TWD_EVENT_TX_XFER_SEND_PKT_TRANSFER 	=  TWD_OWNER_DRIVER_TX_XFER | TWD_INT_SEND_PACKET_TRANSFER,	/**< 	TX Data Path Send Packet Event ID 			*/
    749     TWD_EVENT_TX_RESULT_SEND_PKT_COMPLETE	=  TWD_OWNER_TX_RESULT | TWD_INT_SEND_PACKET_COMPLETE,      /**< 	TX Data Path Send Packet Complete Event ID 	*/
    750     TWD_EVENT_TX_HW_QUEUE_UPDATE_BUSY_MAP   =  TWD_OWNER_TX_HW_QUEUE | TWD_INT_UPDATE_BUSY_MAP,         /**< 	TX Data Path Update-Busy-Map Event ID 	*/
    751 
    752     /* Rx Data Path Callbacks */
    753     TWD_EVENT_RX_REQUEST_FOR_BUFFER     	=  TWD_OWNER_RX_XFER | TWD_INT_REQUEST_FOR_BUFFER,         	/**< 	RX Data Path Request for Buffer Internal Event ID 	*/
    754     TWD_EVENT_RX_RECEIVE_PACKET         	=  TWD_OWNER_RX_QUEUE | TWD_INT_RECEIVE_PACKET             	/**< 	RX Data Path Receive Packet Internal Event ID  	*/
    755 
    756 } ETwdEventId;
    757 
    758 #ifdef TI_DBG
    759 /** \enum ETwdPrintInfoType
    760  * \brief TWD print functions codes
    761  *
    762  * \par Description
    763  * Used for Debug - determines which Tx Info to print
    764  *
    765  * \sa TWD_PrintTxInfo
    766  */
    767 typedef enum
    768 {
    769 /*	0	*/	TWD_PRINT_TX_CTRL_BLK_TBL = 0,	/**< 	Print TX Control Block Information	*/
    770 /*	1	*/  TWD_PRINT_TX_HW_QUEUE_INFO,		/**< 	Print TX HW Queue Information 		*/
    771 /*	2	*/  TWD_PRINT_TX_XFER_INFO,			/**< 	Print TX XFER Information 			*/
    772 /*	3	*/  TWD_PRINT_TX_RESULT_INFO,		/**< 	Print TX Result Information 		*/
    773 /*	4	*/  TWD_CLEAR_TX_RESULT_INFO,		/**< 	Clear TX Result Information			*/
    774 /*	5	*/  TWD_CLEAR_TX_XFER_INFO          /**< 	Clear TX Xfer Information           */
    775 
    776 } ETwdPrintInfoType;
    777 #endif
    778 
    779 /** \enum EIpVer
    780  * \brief IP Version
    781  *
    782  * \par Description
    783  *
    784  * \sa TWD_PrintTxInfo
    785  */
    786 typedef enum
    787 {
    788 /*	0	*/	IP_VER_4 = 0, 	/**< */
    789 /*	1	*/  IP_VER_6	 	/**< */
    790 
    791 } EIpVer;
    792 
    793 /** \enum EKeyType
    794  * \brief Key Type
    795  *
    796  * \par Description
    797  * Security Key Type
    798  *
    799  * \sa TSecurityKeys
    800  */
    801 typedef enum
    802 {
    803 /*	0	*/  KEY_NULL = 0,	/**< */
    804 /*	1	*/  KEY_WEP,		/**< */
    805 /*	2	*/  KEY_TKIP,		/**< */
    806 /*	3	*/  KEY_AES,		/**< */
    807 /*	4	*/  KEY_XCC,    	/**< */
    808 #ifdef GEM_SUPPORTED
    809     /*  5   */  KEY_GEM
    810 #endif
    811 
    812 } EKeyType;
    813 
    814 /** \enum ERegistryTxRate
    815  * \brief TX Rate Type
    816  *
    817  * \par Description
    818  *
    819  * \sa
    820  */
    821 /* Make it same as "rate_e" */
    822 typedef enum
    823 {
    824 /* This value is reserved if this enum is used for MgmtCtrlTxRate - the auto mode is only valid for data packets */
    825 /*	0	*/	REG_RATE_AUTO_BIT = 0, 		/**< */
    826 /*	1	*/	REG_RATE_1M_BIT,			/**< */
    827 /*	2	*/	REG_RATE_2M_BIT,			/**< */
    828 /*	3	*/	REG_RATE_5_5M_CCK_BIT,		/**< */
    829 /*	4	*/	REG_RATE_11M_CCK_BIT,		/**< */
    830 /*	5	*/	REG_RATE_22M_PBCC_BIT,		/**< */
    831 /*	6	*/	REG_RATE_6M_OFDM_BIT,		/**< */
    832 /*	7	*/	REG_RATE_9M_OFDM_BIT,		/**< */
    833 /*	8	*/	REG_RATE_12M_OFDM_BIT,		/**< */
    834 /*	9	*/	REG_RATE_18M_OFDM_BIT,		/**< */
    835 /*	10	*/	REG_RATE_24M_OFDM_BIT,		/**< */
    836 /*	11	*/	REG_RATE_36M_OFDM_BIT,		/**< */
    837 /*	12	*/	REG_RATE_48M_OFDM_BIT,		/**< */
    838 /*	13	*/	REG_RATE_54M_OFDM_BIT,		/**< */
    839 /*	14	*/	REG_RATE_MCS0_OFDM_BIT,		/**< */
    840 /*	15	*/	REG_RATE_MCS1_OFDM_BIT,		/**< */
    841 /*	16	*/	REG_RATE_MCS2_OFDM_BIT,		/**< */
    842 /*	17	*/	REG_RATE_MCS3_OFDM_BIT,		/**< */
    843 /*	18	*/	REG_RATE_MCS4_OFDM_BIT,		/**< */
    844 /*	19	*/	REG_RATE_MCS5_OFDM_BIT,		/**< */
    845 /*	20	*/	REG_RATE_MCS6_OFDM_BIT,		/**< */
    846 /*	21	*/	REG_RATE_MCS7_OFDM_BIT		/**< */
    847 
    848 } ERegistryTxRate;
    849 
    850 /** \enum EFailureEvent
    851  * \brief Failure Event
    852  *
    853  * \par Description
    854  * Used as a parameter for Failure Event CB -
    855  * Inicates Failure Event ID, according which the Failure
    856  * Event's data is driven
    857  *
    858  * \sa TWD_RegisterOwnCb, TFailureEventCb
    859  */
    860 typedef enum
    861 {
    862 /*	-1	*/	NO_FAILURE = -1,				/**< 	No Failure Event					*/
    863 /*	0	*/	NO_SCAN_COMPLETE_FAILURE = 0,	/**< 	No Scan Complete Failure Event		*/
    864 /*	1	*/	MBOX_FAILURE,					/**< 	Mail Box Failure Event				*/
    865 /*	2	*/	HW_AWAKE_FAILURE,				/**< 	HW Awake Failure Event				*/
    866 /*	3	*/	TX_STUCK,						/**< 	TX STUCK Failure Event				*/
    867 /*	4	*/	DISCONNECT_TIMEOUT,				/**< 	Disconnect Timeout Failure Event	*/
    868 /*	5	*/	POWER_SAVE_FAILURE,				/**< 	Power Save Failure Event			*/
    869 /*	6	*/	MEASUREMENT_FAILURE,			/**< 	Measurement Failure Event			*/
    870 /*	7	*/	BUS_FAILURE,					/**< 	Bus Failure Event					*/
    871 /*	8	*/	HW_WD_EXPIRE,					/**< 	HW Watchdog Expire Event			*/
    872 /*	9	*/	RX_XFER_FAILURE,			    /**< 	Rx pkt xfer failure                 */
    873 
    874 /* must be last!!! */
    875 /* 10	*/	MAX_FAILURE_EVENTS				/**< 	Maximum number of Failure Events	*/
    876 
    877 } EFailureEvent;
    878 
    879 /** \enum ETemplateType
    880  * \brief Template Type
    881  *
    882  * \par Description
    883  * Used for setting/Getting a Template to/from FW
    884  *
    885  * \sa TWD_CmdTemplate, TWD_WriteMibTemplateFrame, TSetTemplate TWD_GetTemplate
    886  */
    887 typedef enum
    888 {
    889 /*	0	*/	NULL_DATA_TEMPLATE = 0,		/**< NULL Data Template						*/
    890 /*	1	*/	BEACON_TEMPLATE,        	/**< Beacon Template						*/
    891 /*	2	*/	PROBE_REQUEST_TEMPLATE,     /**< PROBE Request Template					*/
    892 /*	3	*/	PROBE_RESPONSE_TEMPLATE,	/**< PROBE Response Template				*/
    893 /*	4	*/	QOS_NULL_DATA_TEMPLATE,		/**< Quality Of Service NULL Data Template	*/
    894 /*	5	*/	PS_POLL_TEMPLATE,			/**< Power Save Poll Template				*/
    895 /*	6	*/	KEEP_ALIVE_TEMPLATE,		/**< Keep Alive Template 					*/
    896 /*	7	*/	DISCONN_TEMPLATE,			/**< Disconn (Deauth/Disassoc) Template		*/
    897 /*	8	*/	ARP_RSP_TEMPLATE			/**< ARP Ressponse Template		            */
    898 } ETemplateType;
    899 
    900 
    901 
    902 
    903 typedef enum
    904 {
    905     KEY_WEP_DEFAULT       = 0,
    906     KEY_WEP_ADDR          = 1,
    907     KEY_AES_GROUP         = 4,
    908     KEY_AES_PAIRWISE      = 5,
    909     KEY_WEP_GROUP         = 6,
    910     KEY_TKIP_MIC_GROUP    = 10,
    911     KEY_TKIP_MIC_PAIRWISE = 11
    912 } KeyType_enum;
    913 
    914 
    915 /** \enum ECipherSuite
    916  * \brief CHIPHER Suite
    917  *
    918  * \par Description
    919  * Available cipher suites for admission control
    920  *
    921  * \sa
    922  */
    923 typedef enum
    924 {
    925 /*	0	*/	TWD_CIPHER_NONE = 0,			/**< no cipher suite 		*/
    926 /*	1	*/	TWD_CIPHER_WEP,        			/**< WEP-40 cipher suite 	*/
    927 /*	2	*/	TWD_CIPHER_TKIP,        		/**< TKIP cipher suite      */
    928 /*	3	*/	TWD_CIPHER_AES_WRAP,    		/**< AES WRAP cipher suite  */
    929 /*	4	*/	TWD_CIPHER_AES_CCMP,    		/**< AES CCMP cipher suite  */
    930 /*	5	*/	TWD_CIPHER_WEP104,      		/**< WEP-104 cipher suite 	*/
    931 /*	6	*/	TWD_CIPHER_CKIP,        		/**< CKIP cipher suite      */
    932 #ifdef GEM_SUPPORTED
    933     /*	7	*/	TWD_CIPHER_GEM,         		/**< GEM cipher suite       */
    934 #endif
    935             TWD_CIPHER_MAX,
    936 
    937 			TWD_CIPHER_UNKNOWN	= 255       /**< UNKNOWN chpiher suite 	*/
    938 
    939 } ECipherSuite;
    940 
    941 /** \enum E80211PsMode
    942  * \brief 802.11 Power Save Mode
    943  *
    944  * \par Description
    945  *
    946  * \sa TWD_Scan, TWD_SetPsMode
    947  */
    948 typedef enum
    949 {
    950 /*	0	*/	POWER_SAVE_OFF = 0,		/**< 	power save 802.11 OFF   		*/
    951 /*	1	*/	POWER_SAVE_ON,			/**< 	power save 802.11 ON  			*/
    952 /*	2	*/	POWER_SAVE_KEEP_CURRENT	/**< 	power save 802.11 don't change 	*/
    953 
    954 } E80211PsMode;
    955 
    956 /** \enum E80211PsStatus
    957  * \brief Set Power Save mode status
    958  *
    959  * \par Description
    960  *
    961  * \sa
    962  */
    963 typedef enum
    964 {
    965 /*	1	*/	POWER_SAVE_802_11_SUCCESS = 1,	/**< 	power save mode Success   	*/
    966 /*	2	*/	POWER_SAVE_802_11_FAIL,			/**< 	power save mode Fail    	*/
    967 /*	3	*/	POWER_SAVE_802_11_NOT_ALLOWED,	/**< 	power save mode Not Allowed	*/
    968 /*	4	*/	POWER_SAVE_802_11_PENDING,		/**< 	power save mode Pending    	*/
    969 /*	5	*/	POWER_SAVE_802_11_IS_CURRENT	/**< 	power save mode Is Current 	*/
    970 
    971 } E80211PsStatus;
    972 
    973 /** \enum EElpCtrlMode
    974  * \brief ELP Control Mode
    975  *
    976  * \par Description
    977  *
    978  * \sa
    979  */
    980 typedef enum
    981 {
    982 /*	0	*/	ELPCTRL_MODE_NORMAL = 0,	/**< ALP Control mode Normal   		*/
    983 /*	1	*/	ELPCTRL_MODE_KEEP_AWAKE		/**< ALP Control mode Keep Awake   	*/
    984 
    985 } EElpCtrlMode;
    986 
    987 /** \enum EPreamble
    988  * \brief Preamble Type
    989  *
    990  * \par Description
    991  *
    992  * \sa TWD_CfgPreamble
    993  */
    994 typedef enum
    995 {
    996     PREAMBLE_LONG       	= 0,	/**< Preamble type Long   			*/
    997     PREAMBLE_SHORT          = 1,	/**< Preamble type Short   			*/
    998 
    999     PREAMBLE_UNSPECIFIED    = 0xFF	/**< Preamble type Not Specified   	*/
   1000 
   1001 } EPreamble;
   1002 
   1003 /** \enum ENoiseHistogramCmd
   1004  * \brief Noise Histogram Type
   1005  *
   1006  * \par Description
   1007  *
   1008  * \sa TNoiseHistogram, TWD_CmdNoiseHistogram
   1009  */
   1010 typedef enum
   1011 {
   1012      STOP_NOISE_HIST                    = 0,	/**< Stop Noise Histogram	*/
   1013      START_NOISE_HIST                   = 1		/**< Start Noise Histogram	*/
   1014 
   1015 } ENoiseHistogramCmd;
   1016 
   1017 /** \enum ETnetWakeOn
   1018  * \brief ACX Wake Up Condition
   1019  *
   1020  * \par Description
   1021  *
   1022  * \sa TPowerMgmtConfig, TWD_CfgWakeUpCondition
   1023  */
   1024 typedef enum
   1025 {
   1026 
   1027 /*	0	*/	TNET_WAKE_ON_BEACON = 0,       	/**< Indicate the wake on event of the HW - beacon.
   1028 											* In this event the HW configure to be awake on every beacon.
   1029 											*/
   1030 
   1031 /*	1	*/	TNET_WAKE_ON_DTIM,             /**< Indicate the wake on event of the HW - DTIM. In this event
   1032 											* the HW configure to be awake on every DITM (configure by the AP).
   1033 											*/
   1034 
   1035 /*	2	*/	TNET_WAKE_ON_N_BEACON,          /**< Indicate the wake on event of the HW - listen interval.
   1036 											* In this event the HW configure to be awake on every
   1037 											* configured number of beacons.
   1038 											*/
   1039 
   1040 /*	3	*/	TNET_WAKE_ON_N_DTIM,            /**< Indicate the wake on event of the HW - listen interval.
   1041 											* In this event the HW configure to be awake on every
   1042 											* configured number of beacons.
   1043 											*/
   1044 
   1045 /*	4	*/	TNET_WAKE_ON_HOST              /**< Indicate the wake on event of the HW - Host access only
   1046 											*/
   1047 
   1048 } ETnetWakeOn;
   1049 
   1050 /** \enum ETxAntenna
   1051  * \brief TX Antenna Types
   1052  *
   1053  * \par Description
   1054  *
   1055  * \sa TGeneralInitParams, TTwdParamContents
   1056  */
   1057 typedef enum
   1058 {
   1059     TX_ANTENNA_2	= 0, 	/**< */
   1060     TX_ANTENNA_1    = 1		/**< */
   1061 
   1062 } ETxAntenna;
   1063 
   1064 /** \enum ERxAntenna
   1065  * \brief RX Antenna Types
   1066  *
   1067  * \par Description
   1068  *
   1069  * \sa TGeneralInitParams, TTwdParamContents
   1070  */
   1071 typedef enum
   1072 {
   1073 /*	0	*/	RX_ANTENNA_1 = 0,	/**< */
   1074 /*	1	*/	RX_ANTENNA_2,		/**< */
   1075 /*	2	*/	RX_ANTENNA_FULL,	/**< */
   1076 /*	3	*/	RX_ANTENNA_PARTIAL	/**< */
   1077 
   1078 } ERxAntenna;
   1079 
   1080 /** \enum EPowerPolicy
   1081  * \brief Save Power Level Policy
   1082  *
   1083  * \par Description
   1084  *
   1085  * \sa TWD_CfgSleepAuth
   1086  */
   1087 typedef enum
   1088 {
   1089 /*	0	*/	POWERAUTHO_POLICY_ELP = 0,	/**< */
   1090 /*	1	*/	POWERAUTHO_POLICY_PD,		/**< */
   1091 /*	2	*/	POWERAUTHO_POLICY_AWAKE,	/**< */
   1092 /*	3	*/	POWERAUTHO_POLICY_NUM		/**< */
   1093 
   1094 } EPowerPolicy;
   1095 
   1096 /** \enum ESoftGeminiEnableModes
   1097  * \brief Soft-Gemini Enable Modes
   1098  *
   1099  * \par Description
   1100  *
   1101  * \sa
   1102  */
   1103 typedef enum
   1104 {
   1105 /*	0	*/	SG_DISABLE = 0,			/**< */
   1106 /*	1	*/	SG_PROTECTIVE,			    /**< */
   1107 /*	2	*/	SG_OPPORTUNISTIC,	/**< */
   1108 
   1109 
   1110 } ESoftGeminiEnableModes;
   1111 /** \enum ESoftGeminiEnableProfile
   1112  * \brief Soft-Gemini Profile Modes for S60 configuration
   1113  *
   1114  * \par Description
   1115  *
   1116  * \sa
   1117  */
   1118 typedef enum
   1119 {
   1120     BtCoexProfData = 0,
   1121     BtCoexProfDataLowLatency,
   1122     BtCoexProfA2DP
   1123 }ESoftGeminiEnableProfile;
   1124 
   1125 
   1126 /** \enum EMibTemplateType
   1127  * \brief MIB Template type
   1128  *
   1129  * \par Description
   1130  *
   1131  * \sa
   1132  */
   1133 typedef enum
   1134 {
   1135 /*	0	*/ 	TEMPLATE_TYPE_BEACON = 0,           /**< 	BEACON template 			*/
   1136 /*	1	*/  TEMPLATE_TYPE_PROBE_REQUEST,        /**< 	PROB template 				*/
   1137 /*	2	*/  TEMPLATE_TYPE_NULL_FRAME,           /**< 	NULL FRAM template 			*/
   1138 /*	3	*/  TEMPLATE_TYPE_PROBE_RESPONSE,       /**< 	PROB Response template 		*/
   1139 /*	4	*/  TEMPLATE_TYPE_QOS_NULL_FRAME,       /**< 	QOS Null Frame template 	*/
   1140 /*	5	*/  TEMPLATE_TYPE_PS_POLL               /**< 	Power Save Poll template	*/
   1141 
   1142 } EMibTemplateType;
   1143 
   1144 
   1145 /** \enum ERxFailure
   1146  * \brief RX Failure/Error
   1147  *
   1148  * \par Description
   1149  *
   1150  * \sa
   1151  */
   1152 typedef enum
   1153 {
   1154 /*	0	*/	RX_FAILURE_NONE = 0,		/**< No Failure		*/
   1155 /*	1	*/	RX_FAILURE_DECRYPT,         /**< DeCrypt Failure	*/
   1156 /*	2	*/	RX_FAILURE_MIC_ERROR,		/**< MIC Error		*/
   1157 } ERxFailure;
   1158 
   1159 /** \enum ETwdChannelWidth
   1160  * \brief TWD Channel Width
   1161  *
   1162  * \par Description
   1163  * Used for Configure HT Capabilities Settings
   1164  *
   1165  * \sa TWD_SetDefaults, TTwdHtCapabilities
   1166  */
   1167 typedef enum
   1168 {
   1169 /*	0	*/	CHANNEL_WIDTH_20MHZ = 0,		/**< 20MHZ Channel Width	*/
   1170 /*	1	*/  CHANNEL_WIDTH_40MHZ_20MHZ		/**< 40-20MHZ Channel Width	*/
   1171 } ETwdChannelWidth;
   1172 
   1173 /** \enum ETwdRxSTBC
   1174  * \brief RX STBC Spatial Stream Supported
   1175  *
   1176  * \par Description
   1177  * Indicates how many RX STBC Spatial Stream are Supported
   1178  * Used for Configure HT Capabilities Settings
   1179  *
   1180  * \sa TWD_SetDefaults, TTwdHtCapabilities
   1181  */
   1182 typedef enum
   1183 {
   1184 /*	0	*/	RXSTBC_NOT_SUPPORTED  =   0,							/**< No Spatial Stream Supported					*/
   1185 /*	1	*/  RXSTBC_SUPPORTED_ONE_SPATIAL_STREAM, 					/**< One Spatial Stream Supported					*/
   1186 /*	2	*/  RXSTBC_SUPPORTED_ONE_AND_TWO_SPATIAL_STREAMS,			/**< One and Two Spatial Stream Supported			*/
   1187 /*	3	*/  RXSTBC_SUPPORTED_ONE_TWO_AND_THREE_SPATIAL_STREAMS	/**< One, Two and Three Spatial Stream Supported	*/
   1188 
   1189 } ETwdRxSTBC;
   1190 
   1191 /** \enum ETwdMaxAMSDU
   1192  * \brief Maximum MSDU Octets
   1193  *
   1194  * \par Description
   1195  * Used for Configure HT Capabilities Settings
   1196  *
   1197  * \sa TWD_SetDefaults, TTwdHtCapabilities
   1198  */
   1199 typedef enum
   1200 {
   1201 /*	0	*/	MAX_MSDU_3839_OCTETS = 0,	/**< Maximum MSDU Octets Number: 3839	*/
   1202 /*	1	*/  MAX_MSDU_7935_OCTETS		/**< Maximum MSDU Octets Number: 7935	*/
   1203 
   1204 } ETwdMaxAMSDU;
   1205 
   1206 /** \enum ETwdMaxAMPDU
   1207  * \brief Maximum MPDU Octets
   1208  *
   1209  * \par Description
   1210  * Indicates What is the Maximum MPDU Octets Number
   1211  * Used for Configure HT Capabilities Settings
   1212  *
   1213  * \sa TWD_SetDefaults, TTwdHtCapabilities
   1214  */
   1215 
   1216 /*
   1217  ==============
   1218 
   1219  IMPORTANT NOTE - Changes to this enumeration must check weather MIN and MAX values
   1220                   should be updated
   1221  ==============
   1222 */
   1223 typedef enum
   1224 {
   1225             MAX_MPDU_MIN_VALUE = 0,
   1226 
   1227 /*	0	*/	MAX_MPDU_8191_OCTETS = MAX_MPDU_MIN_VALUE,	/**< Maximum MPDU Octets Number: 8191	*/
   1228 /*	1	*/  MAX_MPDU_16383_OCTETS,		                /**< Maximum MPDU Octets Number: 16383	*/
   1229 /*	2	*/  MAX_MPDU_32767_OCTETS,		                /**< Maximum MPDU Octets Number: 32767	*/
   1230 /*	3	*/  MAX_MPDU_65535_OCTETS,		                /**< Maximum MPDU Octets Number: 65535	*/
   1231 
   1232             MAX_MPDU_MAX_VALUE = MAX_MPDU_65535_OCTETS
   1233 
   1234 } ETwdMaxAMPDU;
   1235 
   1236 
   1237 /** \enum ETwdAMPDUSpacing
   1238  * \brief TWD AMPDU Spacing
   1239  *
   1240  * \par Description
   1241  * Indicates What is the Time Spacing of AMPDU
   1242  * Used for Configure HT Capabilities Settings
   1243  *
   1244  * \sa TWD_SetDefaults, TTwdHtCapabilities
   1245  */
   1246 typedef enum
   1247 {
   1248 /*	0	*/	AMPDU_SPC_NO_RESTRCITION =  0,	/**< No Restriction on AMPDU Time Spacing	*/
   1249 /*	1	*/	AMPDU_SPC_1_4_MICROSECONDS, 	/**< 1/4 Microsecond AMPDU Time Spacing   	*/
   1250 /*	2	*/	AMPDU_SPC_1_2_MICROSECONDS, 	/**< 1/2 Microsecond AMPDU Time Spacing   	*/
   1251 /*	3	*/	AMPDU_SPC_1_MICROSECOND,  		/**< 1 Microsecond AMPDU Time Spacing   	*/
   1252 /*	4	*/	AMPDU_SPC_2_MICROSECONDS,		/**< 2 Microsecond AMPDU Time Spacing   	*/
   1253 /*	5	*/	AMPDU_SPC_4_MICROSECONDS,		/**< 4 Microsecond AMPDU Time Spacing   	*/
   1254 /*	6	*/	AMPDU_SPC_8_MICROSECONDS,		/**< 8 Microsecond AMPDU Time Spacing   	*/
   1255 /*	7	*/	AMPDU_SPC_16_MICROSECONDS 		/**< 16 Microsecond AMPDU Time Spacing   	*/
   1256 
   1257 } ETwdAMPDUSpacing;
   1258 
   1259 /** \enum ETwdMcsSupport
   1260  * \brief TWD MCS Support
   1261  *
   1262  * \par Description
   1263  * BIT Mapp which Indicates What is the Tx/rx MCS Support Enabled
   1264  * Used for Configure HT Capabilities Settings
   1265  *
   1266  * \sa TWD_SetDefaults, TTwdHtCapabilities
   1267  */
   1268 typedef enum
   1269 {
   1270 /*	1	*/	MCS_SUPPORT_MCS_0   =  BIT_0,	/**< BIT 0	*/
   1271 /*	2	*/	MCS_SUPPORT_MCS_1   =  BIT_1,	/**< BIT 1	*/
   1272 /*	3	*/	MCS_SUPPORT_MCS_2   =  BIT_2,	/**< BIT 2	*/
   1273 /*	4	*/	MCS_SUPPORT_MCS_3   =  BIT_3,	/**< BIT 3	*/
   1274 /*	5	*/	MCS_SUPPORT_MCS_4   =  BIT_4,	/**< BIT 4	*/
   1275 /*	6	*/	MCS_SUPPORT_MCS_5   =  BIT_5,	/**< BIT 5	*/
   1276 /*	7	*/	MCS_SUPPORT_MCS_6   =  BIT_6,	/**< BIT 6	*/
   1277 /*	8	*/	MCS_SUPPORT_MCS_7   =  BIT_7	/**< BIT 7	*/
   1278 
   1279 } ETwdMcsSupport;
   1280 
   1281 /** \enum ETwdPCOTransTime
   1282  * \brief TWD PCO Transition Time
   1283  *
   1284  * \par Description
   1285  * Indicates What is the PCO Transition Time
   1286  * Used for Configure HT Capabilities Settings
   1287  *
   1288  * \sa TWD_SetDefaults, TTwdHtCapabilities
   1289  */
   1290 typedef enum
   1291 {
   1292 /*	0	*/	PCO_TRANS_TIME_NO_TRANSITION = 0, 	/**< No PCO Transition Time					*/
   1293 /*	1	*/	PCO_TRANS_TIME_400_MICROSECONDS, 	/**< PCO Transition Time: 400 Microsecond	*/
   1294 /*	2	*/	PCO_TRANS_TIME_1_5_MILLISECONDS, 	/**< PCO Transition Time: 1.5 Millisecond	*/
   1295 /*	3	*/	PCO_TRANS_TIME_5_MILLISECONDS		/**< PCO Transition Time: 5 Millisecond		*/
   1296 
   1297 } ETwdPCOTransTime;
   1298 
   1299 /** \enum ETwdHTCapabilitiesBitMask
   1300  * \brief TWD HT Capabilities Bit Mask Mapping
   1301  *
   1302  * \par Description
   1303  * Mapps the Bit Mask which are used for Making (Enabling/Disabling)
   1304  * HT Capabilities
   1305  *
   1306  * \sa TWD_SetDefaults, TTwdHtCapabilities
   1307  */
   1308 typedef enum
   1309 {
   1310 /*	1	*/	CAP_BIT_MASK_GREENFIELD_FRAME_FORMAT           =  BIT_0,	/**< BIT 0	*/
   1311 /*	2	*/	CAP_BIT_MASK_SHORT_GI_FOR_20MHZ_PACKETS        =  BIT_1,	/**< BIT 1	*/
   1312 /*	3	*/	CAP_BIT_MASK_SHORT_GI_FOR_40MHZ_PACKETS        =  BIT_2,	/**< BIT 2	*/
   1313 /*	4	*/	CAP_BIT_MASK_SUPPORT_FOR_STBC_IN_TRANSMISSION  =  BIT_3,	/**< BIT 3	*/
   1314 /*	5	*/	CAP_BIT_MASK_DELAYED_BLOCK_ACK                 =  BIT_4,	/**< BIT 4	*/
   1315 /*	6	*/	CAP_BIT_MASK_DSSS_CCK_IN_40_MHZ                =  BIT_5,	/**< BIT 5	*/
   1316 /*	7	*/	CAP_BIT_MASK_LSIG_TXOP_PROTECTION              =  BIT_6,	/**< BIT 6	*/
   1317 /*	8	*/	CAP_BIT_MASK_PCO                               =  BIT_7,	/**< BIT 7	*/
   1318 /*	9	*/	CAP_BIT_MASK_LDPC_CODING                       =  BIT_8		/**< BIT 8	*/
   1319 
   1320 } ETwdHTCapabilitiesBitMask;
   1321 
   1322 /** \enum ETwdMCSFeedback
   1323  * \brief TWD MCS FeedBack
   1324  *
   1325  * \par Description
   1326  * Indicates what is the MCS FeedBack Policy
   1327  * Used for Configure HT Capabilities Settings
   1328  *
   1329  * \sa TWD_SetDefaults, TTwdHtCapabilities
   1330  */
   1331 typedef enum
   1332 {
   1333 /*	0	*/	MCS_FEEDBACK_NO = 0,						/**< */
   1334 /*	1	*/	MCS_FEEDBACK_RESERVED,						/**< */
   1335 /*	2	*/	MCS_FEEDBACK_UNSOLICTED_ONLY,				/**< */
   1336 /*	3	*/	MCS_FEEDBACK_BOTH_SOLICTED_AND_UNSOLICTED	/**< */
   1337 } ETwdMCSFeedback;
   1338 
   1339 /** \enum ETwdTxMcsSet
   1340  * \brief TWD TX MCS Set
   1341  *
   1342  * \par Description
   1343  * Indicates Whether to set Tx MCS
   1344  *
   1345  * \sa
   1346  */
   1347 typedef enum
   1348 {
   1349     TX_MCS_SET_NO   =   0, 	/**< Don't Set Tx MCS	*/
   1350     TX_MCS_SET_YES  =   1	/**< Set Tx MCS			*/
   1351 } ETwdTxMcsSet;
   1352 
   1353 /** \enum ETwdTxRxNotEqual
   1354  * \brief TWD TX RX Not Equal
   1355  *
   1356  * \par Description
   1357  * Indicates Whether the TX and RX channels are equal
   1358  *
   1359  * \sa
   1360  */
   1361 typedef enum
   1362 {
   1363     TX_RX_NOT_EQUAL_NO   =   0,	/**< TX and RX Channels are not equal	*/
   1364     TX_RX_NOT_EQUAL_YES  =   1	/**< TX and RX Channels are equal		*/
   1365 } ETwdTxRxNotEqual;
   1366 
   1367 /** \enum ETwdHtcSupport
   1368  * \brief TWD HTc Support
   1369  *
   1370  * \par Description
   1371  * Indicates Whether the HT Capability is Supported
   1372  *
   1373  * \sa
   1374  */
   1375 typedef enum
   1376 {
   1377     HTC_SUPPORT_NO   =   0,	/**< HT Capability is not Supported		*/
   1378     HTC_SUPPORT_YES  =   1	/**< HT Capability is Supported			*/
   1379 } ETwdHtcSupport;
   1380 
   1381 /** \enum ESendCompleteStatus
   1382  * \brief Send complete status
   1383  *
   1384  * \par Description
   1385  * Indicates the current Success/Failure Status of Completion of Send Operation
   1386  *
   1387  * \sa
   1388  */
   1389 typedef enum
   1390 {
   1391 /*	0	*/	SEND_COMPLETE_SUCCESS = 0,			/**< Send Complete Success: Completion of Send Operation is OK
   1392 												*/
   1393 /*	1	*/	SEND_COMPLETE_RETRY_EXCEEDED,		/**< Send Complete Retry Exceeded:
   1394 												* Completion of Send Operation filed because it Exceeded Allowed retries Number
   1395 												*/
   1396 /*	2	*/	SEND_COMPLETE_LIFETIME_EXCEEDED,	/**< Send Complete Lifetiem Exceeded:
   1397 												* Completion of Send Operation failed because it Exceeded Allowed Lifetime
   1398 												*/
   1399 /*	3	*/	SEND_COMPLETE_NO_LINK,				/**< Send Complete No Link:
   1400 												* Completion of Send Operation failed because No Link was found
   1401 												*/
   1402 /*	4	*/	SEND_COMPLETE_MAC_CRASHED			/**< Send Complete MAC Crashed:
   1403 												* Completion of Send Operation failed because MAC Crashed
   1404 												*/
   1405 } ESendCompleteStatus;
   1406 
   1407 /** \enum EPacketType
   1408  * \brief Packet type
   1409  *
   1410  * \par Description
   1411  *
   1412  * \sa
   1413  */
   1414 typedef enum
   1415 {
   1416 /*	0	*/	PACKET_DATA = 0, 	/**< */
   1417 /*	1	*/	PACKET_CTRL, 		/**< */
   1418 /*	2	*/	PACKET_MGMT 		/**< */
   1419 
   1420 } EPacketType;
   1421 
   1422 /** \enum ETxHwQueStatus
   1423  * \brief Status returned by txHwQueue_AllocResources
   1424  *
   1425  * \par Description
   1426  *
   1427  * \sa
   1428  */
   1429 typedef enum
   1430 {
   1431     TX_HW_QUE_STATUS_SUCCESS,       /* Resources available on current queue */
   1432     TX_HW_QUE_STATUS_STOP_CURRENT,  /* No resources, stop current queue and requeue the packet */
   1433     TX_HW_QUE_STATUS_STOP_NEXT      /* Resources available for this packet but not for another one,
   1434                                           so just stop the current queue */
   1435 } ETxHwQueStatus;
   1436 
   1437 /** \enum ERxBufferStatus
   1438  * \brief Status returned by TRequestForBufferCb
   1439  *
   1440  * \par Description
   1441  *
   1442  * \sa
   1443  */
   1444 typedef enum
   1445 {
   1446     RX_BUF_ALLOC_PENDING,
   1447     RX_BUF_ALLOC_COMPLETE,
   1448     RX_BUF_ALLOC_OUT_OF_MEM
   1449 
   1450 }ERxBufferStatus;
   1451 
   1452 
   1453 typedef enum
   1454 {
   1455     ArpFilterDisabled,
   1456     ArpFilterEnabled,
   1457     ArpFilterEnabledAutoMode = 3
   1458 } EArpFilterType;
   1459 
   1460 /*
   1461  * --------------------------------------------------------------
   1462  *	Structures
   1463  * --------------------------------------------------------------
   1464  */
   1465 /**
   1466  * \brief Get File Callback
   1467  *
   1468  * \param  hCbHndl	- Handle to CB Object
   1469  * \return void
   1470  *
   1471  * \par Description
   1472  * The callback function type for GetFile users
   1473  *
   1474  * \sa 	TFileInfo
   1475  */
   1476 typedef void (*TGetFileCbFunc)(TI_HANDLE hCbHndl);
   1477 
   1478 /** \struct TFileInfo
   1479  * \brief File Information
   1480  *
   1481  * \par Description
   1482  * Contains all needed information and structures for Getting file
   1483  *
   1484  * \sa	TWD_InitFw
   1485  */
   1486 typedef struct
   1487 {
   1488     EFileType   	eFileType;  		/**< Requested file type */
   1489     TI_UINT8   		*pBuffer;    		/**< Pointer to Buffer into the file (or file portion) is copied from user space */
   1490     TI_UINT32   	uLength;    		/**< Length of data currently held in pBuffer */
   1491     TI_UINT32   	uOffset;    		/**< Offset in File of data currently held in pBuffer */
   1492     TI_UINT32   	uAddress;    		/**< Offset in File of data currently held in pBuffer */
   1493     TI_BOOL     	bLast;      		/**< TRUE indicates that we reached end of file */
   1494     void       		*hOsFileDesc;		/**< OAL file-descriptor handle for repeated access to same file (FW) */
   1495     TGetFileCbFunc  fCbFunc;			/**< CB function to call if file read is finished in a later context (future option) */
   1496     TI_HANDLE       hCbHndl;			/**< Handle to provide when calling fCbFunc */
   1497     TI_UINT32		uChunksLeft;		/**< Chunks Left to read from File (used if file is read in chunks) */
   1498     TI_UINT32		uChunkBytesLeft;	/**< Number of bytes of Last read chunk, which were not yet handled  */
   1499     TI_UINT32		uCrcCalc;			/**< Current Calculated CRC  */
   1500 } TFileInfo;
   1501 
   1502 /** \struct T80211Header
   1503  * \brief 802.11 MAC header
   1504  *
   1505  * \par Description
   1506  *
   1507  * \sa
   1508  */
   1509 typedef struct
   1510 {
   1511     TI_UINT16                           fc;			/**< */
   1512     TI_UINT16                           dur;		/**< */
   1513     TMacAddr                            address1;	/**< */
   1514     TMacAddr                            address2;	/**< */
   1515     TMacAddr                            address3;	/**< */
   1516     TI_UINT16                           seq;		/**< */
   1517     TI_UINT16                           qos;		/**< */
   1518 
   1519 }  T80211Header;
   1520 
   1521 /** \struct TKeepAliveParams
   1522  * \brief Keep Alive Parameters
   1523  *
   1524  * \par Description
   1525  *
   1526  * \sa	TWD_CfgKeepAlive
   1527  */
   1528 typedef struct
   1529 {
   1530     TI_UINT8                index;		/**< */
   1531     TI_UINT8                enaDisFlag;	/**< */
   1532     TI_UINT32               interval;	/**< */
   1533     EKeepAliveTriggerType   trigType;	/**< */
   1534 
   1535 } TKeepAliveParams;
   1536 
   1537 /** \struct TPsRxStreaming
   1538  * \brief Power Save RX Streaming
   1539  *
   1540  * \par Description
   1541  * The configuration of Rx streaming delivery in PS mode per TID
   1542  *
   1543  * \sa	TWD_CfgKeepAlive
   1544  */
   1545 typedef struct
   1546 {
   1547     TI_UINT32               uTid;           /**< The configured TID (0-7) */
   1548     TI_UINT32               uStreamPeriod;  /**< The expected period between two packets of the delivered stream */
   1549     TI_UINT32               uTxTimeout;     /**< Start sending triggers if no Tx traffic triggers arrive for this priod */
   1550     TI_BOOL                 bEnabled;       /**< If TRUE enable this TID streaming, if FALSE disable it. */
   1551 
   1552 } TPsRxStreaming;
   1553 
   1554 /** \struct TDmaParams
   1555  * \brief DMA Parameters
   1556  *
   1557  * \par Description
   1558  * Struct which holds DMA Rx/Tx Queues and Bufffers params
   1559  *
   1560  * \sa
   1561  */
   1562 typedef struct
   1563 {
   1564     TI_UINT32                           NumRxBlocks;				/**< Allocated RX memory blocks number 	    */
   1565     TI_UINT32                           NumTxBlocks;				/**< Allocated TX memory blocks number      */
   1566     TI_UINT8                            NumStations;				/**< Number of Stations						*/
   1567     void                                *fwTxResultInterface;		/**< RX minimum Memory block number 		*/
   1568     TI_UINT8                            *fwRxCBufPtr;				/**< Pointer to FW RX Control Buffer		*/
   1569     TI_UINT8                            *fwTxCBufPtr;				/**< Pointer to FW TX Control Buffer		*/
   1570 	void                                *fwRxControlPtr;			/**< Pointer to FW TX Control 				*/
   1571 	void                                *fwTxControlPtr;			/**< Pointer to FW RX Control 				*/
   1572     TI_UINT32                           PacketMemoryPoolStart;      /**< RX Memory block offset 				*/
   1573 } TDmaParams;
   1574 
   1575 /** \struct TSecurityKeys
   1576  * \brief Security Key
   1577  *
   1578  * \par Description
   1579  * Struct which holds Security Key Parameters
   1580  * Used for handling DMA
   1581  *
   1582  * \sa
   1583  */
   1584 typedef struct
   1585 {
   1586     EKeyType                            keyType; 				/**< Security Key Type (WEP, TKIP etc.)			*/
   1587     TI_UINT32                           encLen;					/**< Security Key length in bytes				*/
   1588     TI_UINT8                            encKey[MAX_KEY_LEN];	/**< Security Key Encoding						*/
   1589     TI_UINT8                            micRxKey[MAX_KEY_LEN];	/**< MIC RX Security Key 						*/
   1590     TI_UINT8                            micTxKey[MAX_KEY_LEN];	/**< MIC TX Security Key						*/
   1591     TI_UINT32                           keyIndex;     			/**< Security Key Index (id=0 is broadcast key)	*/
   1592     TMacAddr                            macAddress;				/**< Security Key MAC Address					*/
   1593     TI_UINT8                            keyRsc[KEY_RSC_LEN];	/**< Security Key RSC							*/
   1594 
   1595 } TSecurityKeys;
   1596 
   1597 /** \struct TxPktParams_t
   1598  * \brief TX Packet Parameters
   1599  *
   1600  * \par Description
   1601  * Tx Control-Block Packet parameters that are not included in the Tx-descriptor
   1602  *
   1603  * \sa
   1604  */
   1605 typedef struct
   1606 {
   1607     void *         pInputPkt;       /**< The input packet to the Tx path, either OS packet or raw buffer (see RAW_BUF_PKT flag) */
   1608     TI_UINT32      uInputPktLen;    /**< The input packet length in bytes (for freeing it in case of raw buffer)  */
   1609     TI_UINT32      uDriverDelay;    /**< The time in uSec the pkt was delayed in the driver until Xfer 			  */
   1610     TI_UINT8       uPktType;        /**< See TX_PKT_TYPE_xxxx above                                               */
   1611     TI_UINT8       uHeadroomSize;   /**< Only for WHA - headroom in bytes before the payload in the packet buffer */
   1612     TI_UINT16      uFlags;          /**< See TX_CTRL_FLAG__xxxx above 										      */
   1613 
   1614 } TTxPktParams;
   1615 
   1616 
   1617 /** \struct TTxCtrlBlk
   1618  * \brief TX Control Block Entry
   1619  *
   1620  * \par Description
   1621  * Contains the Tx packet parameters required for the Tx process, including
   1622  * the Tx descriptor and the attributes required for HW-queue calculations.
   1623  * TX Control Block Entry is allocated for each packet sent from the upper
   1624  * driver and freed upon Tx-complete.
   1625  * The entry index is the descriptor-ID. It is written in the descriptor and
   1626  * copied back into the tx-complete results
   1627  *
   1628  * \sa	SendPacketTranferCB_t, SendPacketDebugCB_t, TWD_txCtrlBlk_alloc, TWD_txCtrlBlk_free, TWD_txCtrlBlk_GetPointer, TWD_txXfer_sendPacket
   1629  */
   1630 typedef struct _TTxCtrlBlk
   1631 {
   1632     TTxnStruct          tTxnStruct;               /**< The transaction structure for packet queueing and transaction via the bus driver */
   1633     TxIfDescriptor_t    tTxDescriptor;            /**< The packet descriptor copied to the FW  */
   1634     TI_UINT8            aPktHdr[MAX_HEADER_SIZE]; /**< The packet header + extensions (see description of MAX_HEADER_SIZE above) */
   1635     TTxPktParams        tTxPktParams;             /**< Per packet parameters not included in the descriptor */
   1636     struct _TTxCtrlBlk  *pNextFreeEntry;          /**< Pointer to the next free entry */
   1637     struct _TTxCtrlBlk  *pNextAggregEntry;        /**< Pointer to the next aggregated packet entry */
   1638 
   1639 } TTxCtrlBlk;
   1640 
   1641 
   1642 /** \struct TTemplateParams
   1643  * \brief Template Parameters
   1644  *
   1645  * \par Description
   1646  *
   1647  * \sa	TWD_GetTemplate
   1648  */
   1649 typedef struct
   1650 {
   1651     TI_UINT32            Size;		   				/**< Template size					*/
   1652     TI_UINT32            uRateMask;                 /**< The rates bitmap for the frame */
   1653     TI_UINT8             Buffer[MAX_TEMPLATE_SIZE];	/**< Buffer which holds Template	*/
   1654 
   1655 } TTemplateParams;
   1656 
   1657 /** \struct TFwInfo
   1658  * \brief FW Information
   1659  *
   1660  * \par Description
   1661  *
   1662  * \sa	TWD_GetFWInfo
   1663  */
   1664 typedef struct
   1665 {
   1666     TI_UINT8                            fwVer[FW_VERSION_LEN];  /**< Firmware version - null terminated string 	*/
   1667     TMacAddr                            macAddress;				/**< MAC Address								*/
   1668     TI_UINT8                            txPowerTable[NUMBER_OF_SUB_BANDS_E][NUM_OF_POWER_LEVEL]; /**< Maximun Dbm in Dbm/10 units */
   1669     TI_UINT32                           uHardWareVersion;		/**< HW Version									*/
   1670 
   1671 } TFwInfo;
   1672 
   1673 /** \struct TJoinBss
   1674  * \brief Join BSS Parameters
   1675  *
   1676  * \par Description
   1677  *
   1678  * \sa	TWD_CmdJoinBss
   1679  */
   1680 typedef struct
   1681 {
   1682     ScanBssType_e                       bssType;			/**< */
   1683     TI_UINT16                           beaconInterval;		/**< */
   1684     TI_UINT16                           dtimInterval;		/**< */
   1685     TI_UINT8                            channel;			/**< */
   1686     TI_UINT8*                           pBSSID;				/**< */
   1687     TI_UINT8*                           pSSID;				/**< */
   1688     TI_UINT8                            ssidLength;			/**< */
   1689     TI_UINT32                           basicRateSet;      	/**< */
   1690     ERadioBand                          radioBand;			/**< */
   1691     /* Current Tx-Session index as configured to FW in last Join command */
   1692     TI_UINT16                           txSessionCount;    	/**< */
   1693 
   1694 } TJoinBss;
   1695 
   1696 /** \struct TSetTemplate
   1697  * \brief Set Template Parameters
   1698  *
   1699  * \par Description
   1700  *
   1701  * \sa	TWD_CmdTemplate, TWD_WriteMibTemplateFrame
   1702  */
   1703 typedef struct
   1704 {
   1705     ETemplateType                       type;	/**< Template Type							*/
   1706     TI_UINT8                            index;  /**< only valid for keep-alive templates	*/
   1707     TI_UINT8*                           ptr;	/**< Pointer to Template Data		  		*/
   1708     TI_UINT32                           len;	/**< Template Length            	  		*/
   1709     ERadioBand                          eBand; 	/**< only valid for probe request templates	*/
   1710     TI_UINT32                           uRateMask;/**< The rate mask to use for this frame  */
   1711 
   1712 } TSetTemplate;
   1713 
   1714 /** \struct TNoiseHistogram
   1715  * \brief Noise Histogram Parameters
   1716  *
   1717  * \par Description
   1718  *
   1719  * \sa	TWD_CmdNoiseHistogram
   1720  */
   1721 typedef struct
   1722 {
   1723     ENoiseHistogramCmd                  cmd;												/**< Noise Histogram Command (Start/Atop)	*/
   1724     TI_UINT16                           sampleInterval;										/**< Sample Interval (in microsec)			*/
   1725     TI_UINT8                            ranges [MEASUREMENT_NOISE_HISTOGRAM_NUM_OF_RANGES];	/**< Noise Histogram Ranges					*/
   1726 
   1727 } TNoiseHistogram;
   1728 
   1729 /** \struct TInterogateCmdHdr
   1730  * \brief Interrogate Command Header
   1731  *
   1732  * \par Description
   1733  *
   1734  * \sa	TNoiseHistogramResults, TMediumOccupancy, TTsfDtim
   1735  */
   1736 typedef struct
   1737 {
   1738     TI_UINT16                           id;		/**< */
   1739     TI_UINT16                           len;	/**< */
   1740 
   1741 } TInterogateCmdHdr;
   1742 
   1743 /** \struct TNoiseHistogramResults
   1744  * \brief Noise Histogram Results
   1745  *
   1746  * \par Description
   1747  * Used for Getting Noise Histogram Parameters from FW
   1748  *
   1749  * \sa
   1750  */
   1751 typedef struct
   1752 {
   1753     TInterogateCmdHdr                   noiseHistResCmdHdr;							/**< Results Header						*/
   1754     TI_UINT32                           counters[NUM_OF_NOISE_HISTOGRAM_COUNTERS];	/**< Counters							*/
   1755     TI_UINT32                           numOfLostCycles;							/**< Number of Lost Cycles				*/
   1756     TI_UINT32                           numOfTxHwGenLostCycles;						/**< Number of Tx Hw Gen Lost Cycles	*/
   1757     TI_UINT32                           numOfRxLostCycles;							/**< Number of RX Hw Gen Lost Cycles	*/
   1758 
   1759 } TNoiseHistogramResults;
   1760 
   1761 /** \struct TMediumOccupancy
   1762  * \brief Medium Occupancy Parameters
   1763  *
   1764  * \par Description
   1765  * Used for Getting Medium Occupancy (Channal Load) from FW
   1766  * or print Medium Occupancy (Channal Load) Debug Information
   1767  *
   1768  * \sa
   1769  */
   1770 typedef struct
   1771 {
   1772     TInterogateCmdHdr                   mediumOccupCmdHdr;	/**< Command Header						*/
   1773     TI_UINT32                           MediumUsage;		/**< Medium Occupancy Usage Time		*/
   1774     TI_UINT32                           Period;				/**< Medium Occupancy Period Time		*/
   1775 
   1776 } TMediumOccupancy;
   1777 
   1778 /** \struct TTsfDtim
   1779  * \brief Beacon TSF and DTIM count
   1780  *
   1781  * \par Description
   1782  * Used for Getting updated current TSF and last Beacon TSF and DTIM Count from FW
   1783  * for Scan Purposes
   1784  *
   1785  * \sa
   1786  */
   1787 typedef struct
   1788 {
   1789     TInterogateCmdHdr                   tsf_dtim_mibCmdHdr;	/**< Command Header						*/
   1790     TI_UINT32                           CurrentTSFHigh;		/**< Current TSF High (of INT64) Value	*/
   1791     TI_UINT32                           CurrentTSFLow;		/**< Current TSF Low (of INT64) Value	*/
   1792     TI_UINT32                           lastTBTTHigh;		/**< Last TBTT High (of INT64) Value	*/
   1793     TI_UINT32                           lastTBTTLow;		/**< Last TBTT Low (of INT64) Value		*/
   1794     TI_UINT8                            LastDTIMCount;		/**< Last DTIM Count			      	*/
   1795     TI_UINT8                            Reserved[3];		/**< Reserved							*/
   1796 
   1797 } TTsfDtim;
   1798 
   1799 /** \struct TBcnBrcOptions
   1800  * \brief Beacon broadcast options
   1801  *
   1802  * \par Description
   1803  * Used for Getting/Configuring updated Beacon broadcast options from/to FW
   1804  *
   1805  * \sa	TWD_SetDefaults
   1806  */
   1807 typedef struct
   1808 {
   1809     TI_UINT16                           BeaconRxTimeout;		/**< Beacon RX Timeout			*/
   1810     TI_UINT16                           BroadcastRxTimeout;		/**< Broadcast RX Timeout		*/
   1811     TI_UINT8                            RxBroadcastInPs;		/**< RX Broadcast In Power Save	*/
   1812 
   1813 } TBcnBrcOptions;
   1814 
   1815 /** \struct TBeaconFilterIeTable
   1816  * \brief Beacon Filter Information Elements Table
   1817  *
   1818  * \par Description
   1819  * Used for Getting/Configuring Beacon Filter IE Table From/To FW
   1820  *
   1821  * \sa	TWD_SetDefaults
   1822  */
   1823 typedef struct
   1824 {
   1825     TI_UINT8                            numberOfIEs;							/**< Number of IE Tables 			*/
   1826     TI_UINT8                            IETable[BEACON_FILTER_TABLE_MAX_SIZE];	/**< The IE table					*/
   1827     TI_UINT8                            IETableSize;							/**< number of elements in IE table	*/
   1828 
   1829 } TBeaconFilterIeTable;
   1830 
   1831 /** \struct TBeaconFilterInitParams
   1832  * \brief Beacon Filter Init Parameters
   1833  *
   1834  * \par Description
   1835  * Used for Init Beacon Filter IE Table in FW
   1836  *
   1837  * \sa
   1838  */
   1839 typedef struct
   1840 {
   1841     TI_UINT8                            desiredState;								/**< Desigred state (required/not required)			*/
   1842     TI_UINT8                            numOfStored;								/**< Number of desigred Beacon Filters stored in FW	*/
   1843     TI_UINT8                            numOfElements;								/**< Number of Beacon Filter Elements stored in FW	*/
   1844     TI_UINT8                            IETableSize;								/**< The IE Table size								*/
   1845     TI_UINT8                            reserve[3];									/**< Reserved										*/
   1846     TI_UINT8                            IETable[BEACON_FILTER_IE_TABLE_MAX_SIZE]; 	/**< The IE table							   		*/
   1847 
   1848 } TBeaconFilterInitParams;
   1849 
   1850 /** \struct TPowerMgmtConfig
   1851  * \brief Power Management Configuration Parameters
   1852  *
   1853  * \par Description
   1854  * Used for Configuring Wake-Up Conditions or Beacon Broadcast Options to FW
   1855  *
   1856  * \sa	TWD_CfgWakeUpCondition, TWD_CfgBcnBrcOptions
   1857  */
   1858 typedef struct
   1859 {
   1860 	/* power management options */
   1861     TI_UINT8                            beaconListenInterval;		/**< Beacon Listen Interavl:
   1862 																	* specify how often the TNET wakes up to listen to beacon frames.
   1863 																	* the value is expressed in units of "beacon interval"
   1864 																	*/
   1865     TI_UINT8                            beaconFiltering;			/**< Beacon Filtering Desigred state (required/not required)			*/
   1866     TI_UINT8                            DTIMListenInterval;			/**< DTIM Listen Interavl:
   1867 																	* specify how often the TNET wakes up to listen to DTIM frames. the value
   1868 																	* is expressed in units of "dtim interval"
   1869 																	*/
   1870     TI_UINT8                            NConsecutiveBeaconMiss;		/**< Consecutive Beacon Miss											*/
   1871     TI_UINT8                            hangoverPeriod;				/**< Hang Over Period													*/
   1872     TI_UINT8                            HwPsPollResponseTimeout;	/**< Power-Save Polling Response Time Out								*/
   1873     TI_UINT32                           BaseBandWakeUpTime;			/**< Base Band Wakeup Time												*/
   1874     TI_UINT32                           beaconReceiveTime;			/**< Beacon Receive Time												*/
   1875     TI_BOOL                             beaconMissInterruptEnable;	/**< Enable/Disable Beacon Miss Interrupt   							*/
   1876     TI_BOOL                             rxBroadcast;				/**< Enable/Disable receive of broadcast packets in Power-Save mode   	*/
   1877     TI_BOOL                             hwPsPoll;					/**< Enable/Disable Power-Save Polling								   	*/
   1878     /* Power Management Configuration IE */
   1879     TI_BOOL                             ps802_11Enable;				/**< Enable/Disable 802.11 Power-Save 									*/
   1880     TI_UINT8                            needToSendNullData;  		/**< Indicates if need to send NULL data								*/
   1881     TI_UINT8                            numNullPktRetries; 			/**< Number of NULL Packets allowed retries 							*/
   1882     TI_UINT8                            hangOverPeriod;				/**< HangOver period:
   1883 																	* Indicates what is the time in TUs during which the WiLink remains awake
   1884 																	* after sending an MPDU with the Power Save bit set (indicating that the
   1885 																	* station is to go into Power Save mode). Setting bit 0 does not affect
   1886 																	* the hangover period
   1887 																	*/
   1888     TI_UINT16                           NullPktRateModulation; 		/**< Null Packet Rate Modulation										*/
   1889     /* PMConfigStruct */
   1890     TI_BOOL                             ELPEnable;					/**< Enable/Disable ELP				 									*/
   1891     TI_UINT32                           BBWakeUpTime;				/**< Base Band Wakeup Time				 								*/
   1892     TI_UINT32                           PLLlockTime;				/**< PLL Lock Time						 								*/
   1893     /* AcxBcnBrcOptions */
   1894     TBcnBrcOptions                      BcnBrcOptions;				/**< Beacon broadcast options	 		 								*/
   1895     /* ACXWakeUpCondition */
   1896     ETnetWakeOn                         tnetWakeupOn;  				/**< ACX Wake Up Condition		 		 								*/
   1897     TI_UINT8                            listenInterval;				/**< ACX Listen Interval		 		 								*/
   1898 	/* No answer after Ps-Poll work-around */
   1899     TI_UINT8  							ConsecutivePsPollDeliveryFailureThreshold;	/**< Power-Save Polling Delivery Failure Threshold		*/
   1900 
   1901 } TPowerMgmtConfig;
   1902 
   1903 /** \struct TPowerSaveParams
   1904  * \brief Power Save Parameters
   1905  *
   1906  * \par Description
   1907  *
   1908  * \sa
   1909  */
   1910 typedef struct
   1911 {
   1912     /* powerMgmtConfig IE */
   1913     TI_BOOL                             ps802_11Enable;			/**< Enable/Disable 802.11 Power-Save 									*/
   1914     TI_UINT8                            needToSendNullData;  	/**< Indicates if need to send NULL data								*/
   1915     TI_UINT8                            numNullPktRetries; 		/**< Number of NULL Packets allowed retries 							*/
   1916     TI_UINT8                            hangOverPeriod;			/**< HangOver period:
   1917 																* Indicates what is the time in TUs during which the WiLink remains awake
   1918 																* after sending an MPDU with the Power Save bit set (indicating that the
   1919 																* station is to go into Power Save mode). Setting bit 0 does not affect
   1920 																* the hangover period
   1921 																*/
   1922     EHwRateBitFiled                     NullPktRateModulation;	/**< Null Packet Rate Modulation										*/
   1923 
   1924 } TPowerSaveParams;
   1925 
   1926 /** \struct TAcQosParams
   1927  * \brief AC QoS Parameters
   1928  *
   1929  * \par Description
   1930  * Used for Configuring AC Parameters (For Quality Of Service) to FW
   1931  *
   1932  * \sa	TWD_CfgAcParams
   1933  */
   1934 typedef struct
   1935 {
   1936     TI_UINT8                            ac;			/**< Access Category - The TX queue's access category	*/
   1937     TI_UINT8                            cwMin;		/**< The contention window minimum size (in slots) 		*/
   1938     TI_UINT16                           cwMax;		/**< The contention window maximum size (in slots)		*/
   1939     TI_UINT8                            aifsn;		/**< The AIF value (in slots)							*/
   1940     TI_UINT16                           txopLimit;	/**< The TX Op Limit (in microseconds)					*/
   1941 
   1942 } TAcQosParams;
   1943 
   1944 /** \struct TMeasurementParams
   1945  * \brief AC Queues Parameters
   1946  *
   1947  * \par Description
   1948  * Used When Send Start Measurment Command to FW
   1949  *
   1950  * \sa	TWD_CmdMeasurement
   1951  */
   1952 typedef struct
   1953 {
   1954     TI_UINT32                           ConfigOptions;	/**< RX Filter Configuration Options													*/
   1955     TI_UINT32                           FilterOptions;	/**< RX Filter Options																	*/
   1956     TI_UINT32                           duration;		/**< Specifies the measurement process duration in microseconds. The value of 0 means
   1957 														* infinite duration in which only a STOP_MEASUREMENT command can stop the measurement
   1958 														* process
   1959 														*/
   1960     Channel_e                           channel;		/**< Channel number on which the measurement is performed								*/
   1961     RadioBand_e                         band;			/**< Specifies the band to which the channel belongs									*/
   1962     EScanResultTag                      eTag;			/**< Scan Result Tag																	*/
   1963 
   1964 } TMeasurementParams;
   1965 
   1966 /** \struct TApDiscoveryParams
   1967  * \brief AP Discovery Parameters
   1968  *
   1969  * \par Description
   1970  * Used When Performing AP Discovery
   1971  *
   1972  * \sa	TWD_CmdApDiscovery
   1973  */
   1974 typedef struct
   1975 {
   1976     TI_UINT32                           ConfigOptions;	/**< RX Configuration Options for measurement														*/
   1977     TI_UINT32                           FilterOptions;	/**< RX Filter Configuration Options for measurement												*/
   1978     TI_UINT32                           scanDuration;	/**< This field specifies the amount of time, in time units (TUs), to perform the AP discovery		*/
   1979     TI_UINT16                           scanOptions;	/**< This field specifies whether the AP discovery is performed by an active scan or a passive scan
   1980 														* 0 - ACTIVE, 1 - PASSIVE
   1981 														*/
   1982     TI_UINT8                            numOfProbRqst;	/**< This field indicates the number of probe requests to send per channel, when active scan is specified
   1983 														* Note: for XCC measurement this value should be set to 1
   1984 														*/
   1985     TI_UINT8                            txPowerDbm;    	/**< TX power level to be used for sending probe requests when active scan is specified.
   1986 														* If 0, leave normal TX power level for this channel
   1987 														*/
   1988     EHwRateBitFiled                     txdRateSet;		/**< This EHwBitRate format field specifies the rate and modulation to transmit the probe request when
   1989 														* an active scan is specifie
   1990 														*/
   1991     ERadioBand                          eBand;			/**< Specifies the band to which the channel belongs												*/
   1992 } TApDiscoveryParams;
   1993 
   1994 /** \struct TRroamingTriggerParams
   1995  * \brief Roaming Trigger Parameters
   1996  *
   1997  * \par Description
   1998  *
   1999  * \sa	TWD_CfgMaxTxRetry, TWD_CfgConnMonitParams
   2000  */
   2001 typedef struct
   2002 {
   2003     /* ACXConsNackTriggerParameters */
   2004     TI_UINT8                            maxTxRetry;			/**< The number of frames transmission failures before issuing the "Max Tx Retry" event			*/
   2005 
   2006     /* ACXBssLossTsfSynchronize */
   2007     TI_UINT16                           TsfMissThreshold;	/**< The number of consecutive beacons that can be lost before the WiLink raises the
   2008 															* SYNCHRONIZATION_TIMEOUT event
   2009 															*/
   2010     TI_UINT16                           BssLossTimeout;		/**< The delay (in time units) between the time at which the device issues the SYNCHRONIZATION_TIMEOUT
   2011 															* event until, if no probe response or beacon is received a BSS_LOSS event is issued
   2012 															*/
   2013 } TRroamingTriggerParams;
   2014 
   2015 /** \struct TSwitchChannelParams
   2016  * \brief Switch Channel Parameters
   2017  *
   2018  * \par Description
   2019  * Used for Switch channel Command
   2020  *
   2021  * \sa	TWD_CmdSwitchChannel
   2022  */
   2023 typedef struct
   2024 {
   2025     TI_UINT8                            channelNumber;		/**< The new serving channel										*/
   2026     TI_UINT8                            switchTime;			/**< Relative time of the serving channel switch in TBTT units   	*/
   2027     TI_UINT8                            txFlag;				/**< 1: Suspend TX till switch time; 0: Do not suspend TX			*/
   2028     TI_UINT8                            flush;				/**< 1: Flush TX at switch time; 0: Do not flush  					*/
   2029 
   2030 } TSwitchChannelParams;
   2031 
   2032 /** \struct TRxCounters
   2033  * \brief RX Counters
   2034  *
   2035  * \par Description
   2036  * Used for Getting RX Counters from FW
   2037  *
   2038  * \sa
   2039  */
   2040 typedef struct
   2041 {
   2042     TI_UINT32                           RecvError; 			/**< Number of frames that a NIC receives but does not indicate to the protocols due to errors 	*/
   2043     TI_UINT32                           RecvNoBuffer;   	/**< Number of frames that the NIC cannot receive due to lack of NIC receive buffer space 		*/
   2044     TI_UINT32                           FragmentsRecv;    	/**< Number of Fragments Received 																*/
   2045     TI_UINT32                           FrameDuplicates;	/**< Number of Farme Duplicates																	*/
   2046     TI_UINT32                           FcsErrors;			/**< Number of frames that a NIC receives but does not indicate to the protocols due to errors	*/
   2047 
   2048 } TRxCounters;
   2049 
   2050 /** \struct TApPowerConstraint
   2051  * \brief AP Power Constraint
   2052  *
   2053  * \par Description
   2054  *
   2055  * \sa
   2056  */
   2057 typedef struct
   2058 {
   2059     INFO_ELE_HDR												/**< Information Element Header		*/
   2060     int8                      			powerConstraintOnBss;	/**< The attenuation from the regulatory power constraint as declared by the AP
   2061 																* Units: dBm	;	Range: -20 - 30
   2062 																*/
   2063 } TApPowerConstraint;
   2064 
   2065 /*
   2066  * TConfigCmdCbParams, TInterrogateCmdCbParams:
   2067  * Note that this structure is used by the GWSI
   2068  * both for setting (writing to the device) and
   2069  * for retreiving (Reading from the device),
   2070  * while being called with a completion CB
   2071  */
   2072 /** \struct TConfigCmdCbParams
   2073  * \brief Config Command CB Parameters
   2074  *
   2075  * \par Description
   2076  * The CB Parameters (Completino CB, Handle to CB Parameters and buffer of Input/Output Parameters)
   2077  * are used for Setting Parameters
   2078  *
   2079  * \sa	TWD_SetParam
   2080  */
   2081 typedef struct
   2082 {
   2083     void*                               fCb;	/**< Completion CB function													*/
   2084     TI_HANDLE                           hCb;	/**< CB handle																*/
   2085     void*                               pCb;	/**< CBuffer contains the content to be written or the retrieved content	*/
   2086 
   2087 } TConfigCmdCbParams;
   2088 
   2089 /** \struct TInterrogateCmdCbParams
   2090  * \brief Interrogate Command Parameters
   2091  *
   2092  * \par Description
   2093  * Interrogate Command Parameters are the same as configuration Command CB Parameters
   2094  *
   2095  * \sa	TWD_SetParam
   2096  */
   2097 typedef TConfigCmdCbParams TInterrogateCmdCbParams;
   2098 
   2099 /** \struct TRxTimeOut
   2100  * \brief RX Time Out
   2101  *
   2102  * \par Description
   2103  *
   2104  * \sa
   2105  */
   2106 typedef struct
   2107 {
   2108     TI_UINT16                           psPoll;		/**< The maximum time that the device will wait to receive traffic from the AP after transmission of PS-poll	*/
   2109     TI_UINT16                           UPSD;		/**< The maximum time that the device will wait to receive traffic from the AP after transmission from UPSD
   2110 													* enabled queue
   2111 													*/
   2112 } TRxTimeOut;
   2113 
   2114 /** \struct TQueueTrafficParams
   2115  * \brief RX Time Out
   2116  *
   2117  * \par Description
   2118  *
   2119  * \sa
   2120  */
   2121 typedef struct
   2122 {
   2123     TI_UINT8                            queueID;					/**< The TX queue ID number (0-7)											*/
   2124     TI_UINT8                            channelType;				/**< Channel access type for the queue Refer to ChannelType_enum			*/
   2125     TI_UINT8                            tsid;						/**< for EDCA - the AC Index (0-3, refer to AccessCategory_enum).
   2126 																	* For HCCA - HCCA Traffic Stream ID (TSID) of the queue (8-15)
   2127 																	*/
   2128     TI_UINT32                           dot11EDCATableMSDULifeTime;	/**< 802.11 EDCA Table MSDU Life Time 										*/
   2129     TI_UINT8                            psScheme;					/**< The power save scheme of the specified queue. Refer to PSScheme_enum	*/
   2130     TI_UINT8                            ackPolicy;					/**< ACK policy per AC 														*/
   2131     TI_UINT32                           APSDConf[2];				/**< APSD Configuration 													*/
   2132 
   2133 } TQueueTrafficParams;
   2134 
   2135 
   2136 
   2137 /** \struct TFmCoexParams
   2138  * \brief FM Coexistence Parameters
   2139  *
   2140  * \par Description
   2141  * Used for Setting/Printing FM Coexistence Parameters
   2142  *
   2143  * \sa
   2144  */
   2145 typedef struct
   2146 {
   2147     TI_UINT8   uEnable;                 /* enable(1) / disable(0) the FM Coex feature */
   2148 
   2149     TI_UINT8   uSwallowPeriod;          /* Swallow period used in COEX PLL swallowing mechanism,
   2150                                            Range: 0-0xFF,  0xFF = use FW default
   2151                                         */
   2152 
   2153     TI_UINT8   uNDividerFrefSet1;       /* The N divider used in COEX PLL swallowing mechanism for Fref of 38.4/19.2 Mhz.
   2154                                            Range: 0-0xFF,  0xFF = use FW default
   2155                                         */
   2156 
   2157     TI_UINT8   uNDividerFrefSet2;       /* The N divider used in COEX PLL swallowing mechanism for Fref of 26/52 Mhz.
   2158                                            Range: 0-0xFF,  0xFF = use FW default
   2159                                         */
   2160 
   2161     TI_UINT16  uMDividerFrefSet1;       /* The M divider used in COEX PLL swallowing mechanism for Fref of 38.4/19.2 Mhz.
   2162                                            Range: 0-0x1FF,  0xFFFF = use FW default
   2163                                         */
   2164 
   2165     TI_UINT16  uMDividerFrefSet2;       /* The M divider used in COEX PLL swallowing mechanism for Fref of 26/52 Mhz.
   2166                                            Range: 0-0x1FF,  0xFFFF = use FW default
   2167                                         */
   2168 
   2169     TI_UINT32  uCoexPllStabilizationTime;/* The time duration in uSec required for COEX PLL to stabilize.
   2170                                            0xFFFFFFFF = use FW default
   2171                                         */
   2172 
   2173     TI_UINT16  uLdoStabilizationTime;   /* The time duration in uSec required for LDO to stabilize.
   2174                                            0xFFFFFFFF = use FW default
   2175                                         */
   2176 
   2177     TI_UINT8   uFmDisturbedBandMargin;  /* The disturbed frequency band margin around the disturbed
   2178                                              frequency center (single sided).
   2179                                            For example, if 2 is configured, the following channels
   2180                                              will be considered disturbed channel:
   2181                                              80 +- 0.1 MHz, 91 +- 0.1 MHz, 98 +- 0.1 MHz, 102 +- 0.1 MHz
   2182                                            0xFF = use FW default
   2183                                         */
   2184 
   2185 	TI_UINT8   uSwallowClkDif;          /* The swallow clock difference of the swallowing mechanism.
   2186                                            0xFF = use FW default
   2187                                         */
   2188 
   2189 } TFmCoexParams;
   2190 
   2191 
   2192 /** \struct TMibBeaconFilterIeTable
   2193  * \brief MIB Beacon Filter IE table
   2194  *
   2195  * \par Description
   2196  * Used for Read/Write the MIB/IE Beacon Filter
   2197  * NOTE: This struct is only meant to be used as a pointer reference to an actual buffer.
   2198  * Table size is not a constant and is derived from the buffer size given with the
   2199  * user command
   2200  *
   2201  * \sa	TWD_WriteMibBeaconFilterIETable
   2202  */
   2203 typedef struct
   2204 {
   2205     /* Number of information elements in table  */
   2206     TI_UINT8                            iNumberOfIEs;   					/**< Input Number of IE Tables	*/
   2207     TI_UINT8                            iIETable[MIB_MAX_SIZE_OF_IE_TABLE]; /**< Input IE Table				*/
   2208 
   2209 } TMibBeaconFilterIeTable;
   2210 
   2211 /** \struct TMibCounterTable
   2212  * \brief MIB Counter Table
   2213  *
   2214  * \par Description
   2215  * Used for Getting Counters of MIB Table
   2216  *
   2217  * \sa
   2218  */
   2219 typedef struct
   2220 {
   2221     TI_UINT32                           PLCPErrorCount;	  	/**< The number of PLCP errors since the last time this information element was interrogated.
   2222 															* This field is automatically cleared when it is interrogated
   2223 															*/
   2224     TI_UINT32                           FCSErrorCount;		/**< The number of FCS errors since the last time this information element was interrogated.
   2225 															* This field is automatically cleared when it is interrogated
   2226 															*/
   2227     TI_UINT32                           SeqNumMissCount;	/**< The number of missed sequence numbers in the squentially values of frames seq numbers	*/
   2228 } TMibCounterTable;
   2229 
   2230 /** \struct TMibWlanWakeUpInterval
   2231  * \brief MIB WLAN Wake-Up Interval
   2232  *
   2233  * \par Description
   2234  *
   2235  * \sa
   2236  */
   2237 typedef struct
   2238 {
   2239     TI_UINT32                           WakeUpInterval;		/**< Wake Up Interval 								*/
   2240     TI_UINT8                            ListenInterval; 	/**< Listen interval in unit of the beacon/DTIM 	*/
   2241 
   2242 } TMibWlanWakeUpInterval;
   2243 
   2244 /** \struct TMibTemplateFrame
   2245  * \brief MIB Template Frame
   2246  *
   2247  * \par Description
   2248  * Used for Writing MIB Frame Template to FW
   2249  *
   2250  * \sa	TWD_WriteMibTemplateFrame
   2251  */
   2252 typedef struct
   2253 {
   2254     EMibTemplateType                 	FrameType;							/**< MIB Farme Template type	*/
   2255     TI_UINT32                           Rate;								/**< Frame Rate					*/
   2256     TI_UINT16                           Length;								/**< Frame Length				*/
   2257     TI_UINT8                            Data [MIB_TEMPLATE_DATA_MAX_LEN];	/**< Frame Template Data		*/
   2258 
   2259 } TMibTemplateFrame;
   2260 
   2261 /** \struct TMibArpIpAddressesTable
   2262  * \brief MIB ARP Address Table
   2263  *
   2264  * \par Description
   2265  * Used for Writing MIB ARP Table Template to FW
   2266  *
   2267  * \sa	TWD_WriteMib
   2268  */
   2269 typedef struct
   2270 {
   2271     TI_UINT32                           FilteringEnable;	/**< Enable/Disable Filtering	*/
   2272     TIpAddr                             addr;				/**< IP Address Table			*/
   2273 
   2274 } TMibArpIpAddressesTable;
   2275 
   2276 /** \struct TMibGroupAdressTable
   2277  * \brief MIB Group Address Table
   2278  *
   2279  * \par Description
   2280  * Used for Writing MIB Group Table Template to FW
   2281  *
   2282  * \sa	TWD_WriteMib
   2283  */
   2284 typedef struct
   2285 {
   2286     TMacAddr                            aGroupTable[MIB_MAX_MULTICAST_GROUP_ADDRS]; 	/**< Table of Multicast Group Addresses */
   2287     TI_UINT8                            bFilteringEnable;								/**< Enable/Disable Filtering			*/
   2288     TI_UINT8                            nNumberOfAddresses;								/**< Number of Multicast Addresses		*/
   2289 
   2290 } TMibGroupAdressTable;
   2291 
   2292 /** \struct TTxRateClass
   2293  * \brief TX Rate Class
   2294  *
   2295  * \par Description
   2296  * Used for Set/Get TX Rate Policy Class to/from FW
   2297  *
   2298  * \sa
   2299  */
   2300 typedef struct
   2301 {
   2302     TI_UINT32                           txEnabledRates;			/**< A Bit Mask which indicates which Rates are enabled */
   2303     TI_UINT8                            shortRetryLimit;		/**< */
   2304     TI_UINT8                            longRetryLimit;			/**< */
   2305     TI_UINT8                            flags;					/**< */
   2306     TI_UINT8                            reserved;				/**< for alignment with the FW API */
   2307 
   2308 } TTxRateClass;
   2309 
   2310 /** \struct TTxRatePolicy
   2311  * \brief TX Rate Policy
   2312  *
   2313  * \par Description
   2314  * Used for Set/Get TX Rate Policy to/from FW
   2315  *
   2316  * \sa
   2317  */
   2318 typedef struct
   2319 {
   2320     TI_UINT32                           numOfRateClasses;								/**< */
   2321     TTxRateClass                        rateClass[MAX_NUM_OF_TX_RATE_CLASS_POLICIES];	/**< */
   2322 
   2323 } TTxRatePolicy;
   2324 
   2325 /** \struct TCoexActivity
   2326  * \brief CoexActivity Parameters
   2327  *
   2328  * \par Description
   2329  *
   2330  * \sa
   2331  */
   2332 typedef struct {
   2333     uint8  coexIp;           /* 0-BT, 1-WLAN (according to CoexIp_e in FW) */
   2334     uint8  activityId;       /* According to BT/WLAN activity numbering in FW */
   2335     uint8  defaultPriority;  /* 0-255, activity default priority */
   2336     uint8  raisedPriority;   /* 0-255, activity raised priority */
   2337     uint16 minService;       /* 0-65535, The minimum service requested either in
   2338                                 requests or in milliseconds depending on activity ID */
   2339     uint16 maxService;       /* 0-65535, The maximum service allowed either in
   2340                             requests or in milliseconds depending on activity ID */
   2341 } TCoexActivity;
   2342 
   2343 /** \struct THalCoexActivityTable
   2344  * \brief CoexActivity Table Initialization Parameters
   2345  *
   2346  * \par Description
   2347  *
   2348  * \sa
   2349  */
   2350 typedef struct
   2351 {
   2352     uint32 numOfElements;
   2353     TCoexActivity entry[COEX_ACTIVITY_TABLE_MAX_NUM];
   2354 
   2355 } THalCoexActivityTable;
   2356 
   2357 /** \struct DcoItrimParams_t
   2358  * \brief DCO Itrim params structure
   2359  *
   2360  * \par Description
   2361  *
   2362  * \sa
   2363  */
   2364 typedef struct
   2365 {
   2366     Bool_e enable;
   2367     uint32 moderationTimeoutUsec;
   2368 }DcoItrimParams_t;
   2369 
   2370 /** \union TMibData
   2371  * \brief MIB Data
   2372  *
   2373  * \par Description
   2374  * Union which defines all MIB Data types
   2375  * Used for write MIB Configuration to FW
   2376  *
   2377  * \sa	TWD_WriteMib
   2378  */
   2379 typedef union
   2380 {
   2381     TMacAddr                            StationId;				/**< Station ID MAC Address								*/
   2382     TI_UINT32                           MaxReceiveLifeTime;		/**< HAl Control Max Rx MSDU Life Time, in TUs Units	*/
   2383     TI_UINT32                           SlotTime;				/**< Radio (PHY) Slot Time Type							*/
   2384     TMibGroupAdressTable             	GroupAddressTable;		/**< MIB Group Address Table							*/
   2385     TI_UINT8                            WepDefaultKeyId;		/**< WEP Defualt Security Key ID						*/
   2386     TI_UINT8                            PowerLevel;				/**< */
   2387     TI_UINT16                           RTSThreshold;			/**< */
   2388     TI_UINT32                           CTSToSelfEnable;		/**< Enable/Disable CTS to Self							*/
   2389     TMibArpIpAddressesTable          	ArpIpAddressesTable;	/**< MIB ARP Address Table								*/
   2390     TMibTemplateFrame                	TemplateFrame;			/**< MIB Template Frame		 							*/
   2391     TI_UINT8                            RxFilter;				/**< */
   2392     TMibWlanWakeUpInterval           	WlanWakeUpInterval;		/**< MIB WLAN Wake-Up Interval							*/
   2393     TMibCounterTable                 	CounterTable;			/**< MIB Counter Table									*/
   2394     TMibBeaconFilterIeTable          	BeaconFilter;			/**< MIB Beacon Filter IE table				   			*/
   2395     TTxRatePolicy                       txRatePolicy;			/**< TX Rate Policy			   		 					*/
   2396 
   2397 } TMibData;
   2398 
   2399 /** \struct TMib
   2400  * \brief MIB Structure
   2401  *
   2402  * \par Description
   2403  * Used for writing MIB Configuration to FW
   2404  *
   2405  * \sa	TWD_WriteMib, TWD_WriteMibTemplateFrame, TWD_WriteMibBeaconFilterIETable, TWD_WriteMibTxRatePolicy
   2406  */
   2407 typedef struct
   2408 {
   2409     EMib			aMib;  		/**< MIB Element Type	*/
   2410     TI_UINT16       Length;		/**< MIB Data Length	*/
   2411     TMibData     	aData; 		/**< MIB Data			*/
   2412 
   2413 } TMib;
   2414 
   2415 /** \union TTwdParamContents
   2416  * \brief TWD Parameters Content
   2417  *
   2418  * \par Description
   2419  * All FW Parameters contents
   2420  *
   2421  * \sa	TWD_SetParam
   2422  */
   2423 typedef union
   2424 {
   2425     TI_UINT16                           halCtrlRtsThreshold;			/**< */
   2426     TI_UINT8                            halCtrlCtsToSelf;				/**< */
   2427     TRxTimeOut                          halCtrlRxTimeOut;				/**< */
   2428     TI_UINT16                           halCtrlFragThreshold;			/**< */
   2429     TI_UINT16                           halCtrlListenInterval;			/**< */
   2430     TI_UINT16                           halCtrlCurrentBeaconInterval;	/**< */
   2431     TI_UINT8                            halCtrlTxPowerDbm;				/**< */
   2432     ETxAntenna                          halCtrlTxAntenna;				/**< */
   2433     ERxAntenna                          halCtrlRxAntenna;				/**< */
   2434     TI_UINT8                            halCtrlAifs;					/**< */
   2435     TI_BOOL                             halCtrlTxMemPoolQosAlgo;		/**< */
   2436     TI_BOOL                             halCtrlClkRunEnable;			/**< */
   2437     TRxCounters                         halCtrlCounters;				/**< */
   2438 
   2439     TMib*          		                pMib;							/**< */
   2440     TI_UINT8                            halCtrlCurrentChannel;			/**< */
   2441 
   2442     /* AC Qos parameters */
   2443     TQueueTrafficParams                 *pQueueTrafficParams;			/**< */
   2444 
   2445     /* Security related parameters */
   2446 #ifdef XCC_MODULE_INCLUDED
   2447     TI_BOOL                             rsnXCCSwEncFlag;				/**< */
   2448     TI_BOOL                             rsnXCCMicFieldFlag;				/**< */
   2449 #endif
   2450     ECipherSuite                        rsnEncryptionStatus;			/**< */
   2451     TI_UINT8                            rsnHwEncDecrEnable; 			/**< 0- disable, 1- enable */
   2452     TSecurityKeys                       *pRsnKey;						/**< */
   2453     TI_UINT8                            rsnDefaultKeyID;				/**< */
   2454 
   2455     /* Measurements section */
   2456     TMediumOccupancy                    mediumOccupancy;				/**< */
   2457     TI_BOOL                             halTxOpContinuation;			/**< */
   2458 
   2459     TTsfDtim                            fwTsfDtimInfo;					/**< */
   2460 
   2461     TInterrogateCmdCbParams             interogateCmdCBParams;			/**< */
   2462     TConfigCmdCbParams                  configureCmdCBParams;			/**< */
   2463 
   2464     TTxRatePolicy                       *pTxRatePlicy;					/**< */
   2465 
   2466     /* WARNING!!! This section is used to set/get internal params only. */
   2467     TI_UINT16                           halCtrlAid;						/**< */
   2468 
   2469     ESoftGeminiEnableModes              SoftGeminiEnable;				/**< */
   2470     TSoftGeminiParams                   SoftGeminiParam;				/**< */
   2471 
   2472     TFmCoexParams                       tFmCoexParams;                  /**< */
   2473 
   2474     TI_UINT32                           halCtrlMaxRxMsduLifetime;		/**< */
   2475 
   2476     /* Beacon Broadcast options */
   2477     TBcnBrcOptions                      BcnBrcOptions;					/**< */
   2478 
   2479 	/* PLT tests */
   2480 	TI_STATUS             				PltRxCalibrationStatus;			/**< */
   2481 
   2482 	/* CoexActivity */
   2483 	TCoexActivity                       tTwdParamsCoexActivity;         /**< */
   2484 
   2485     /* DCO Itrim */
   2486     DcoItrimParams_t                    tDcoItrimParams;                /**< */
   2487 
   2488 } TTwdParamContents;
   2489 
   2490 /** \struct TTwdParamInfo
   2491  * \brief TWD Parameters Information
   2492  *
   2493  * \par Description
   2494  *
   2495  * \sa	TWD_SetParam
   2496  */
   2497 typedef struct
   2498 {
   2499     TI_UINT32                           paramType;					/**< FW Parameter Information Identifier	*/
   2500     TI_UINT32                           paramLength;				/**< FW Parameter Length					*/
   2501     TTwdParamContents                   content;					/**< FW Parameter content					*/
   2502 
   2503 } TTwdParamInfo;
   2504 
   2505 /** \struct TRxXferReserved
   2506  * \brief RX Xfer Reserved
   2507  *
   2508  * \par Description
   2509  *
   2510  * \sa
   2511  */
   2512 typedef struct
   2513 {
   2514     ProcessIDTag_e                      packetType;		/**< */
   2515     TI_UINT8                            rxLevel;		/**< */
   2516     TI_INT8                             rssi;			/**< */
   2517     TI_UINT8                            SNR;			/**< */
   2518     TI_UINT8                            band;			/**< */
   2519     TI_UINT32                           TimeStamp;		/**< */
   2520     EScanResultTag                      eScanTag;		/**< */
   2521 
   2522 } TRxXferReserved;
   2523 
   2524 /** \struct TRxAttr
   2525  * \brief RX Attributes
   2526  *
   2527  * \par Description
   2528  *
   2529  * \sa
   2530  */
   2531 typedef struct
   2532 {
   2533     PacketClassTag_e                    ePacketType;    /**< */
   2534     TI_STATUS                           status;			/**< */
   2535     ERate                               Rate;   		/**< */
   2536     TI_UINT8                            SNR;			/**< */
   2537     TI_INT8                             Rssi;   		/**< */
   2538     TI_UINT8                            channel;		/**< */
   2539     TI_UINT32                           packetInfo;		/**< */
   2540     ERadioBand                          band;			/**< */
   2541     TI_UINT32                           TimeStamp;		/**< */
   2542     EScanResultTag                      eScanTag;		/**< */
   2543 
   2544 } TRxAttr;
   2545 
   2546 
   2547 /** \struct TGeneralInitParams
   2548  * \brief General Initialization Parameters
   2549  *
   2550  * \par Description
   2551  *
   2552  * \sa
   2553  */
   2554 typedef struct
   2555 {
   2556     TI_UINT16                           halCtrlListenInterval;				/**< */
   2557     TI_UINT8                            halCtrlCalibrationChannel2_4;		/**< */
   2558     TI_UINT8                            halCtrlCalibrationChannel5_0;	  	/**< */
   2559     TI_UINT16                           halCtrlRtsThreshold;				/**< */
   2560     TI_UINT16                           halCtrlFragThreshold;				/**< */
   2561     TI_UINT32                           halCtrlMaxTxMsduLifetime;			/**< */
   2562     TI_UINT32                           halCtrlMaxRxMsduLifetime;			/**< */
   2563     ETxAntenna                          halCtrlTxAntenna;					/**< */
   2564     ERxAntenna                          halCtrlRxAntenna;					/**< */
   2565     TI_UINT8                            halCtrlMacClock;					/**< */
   2566     TI_UINT8                            halCtrlArmClock;					/**< */
   2567     TI_UINT16                           halCtrlBcnRxTime;					/**< */
   2568     TI_BOOL                             halCtrlRxEnergyDetection;    		/**< */
   2569     TI_BOOL                             halCtrlCh14TelecCca;				/**< */
   2570     TI_BOOL                             halCtrlEepromLessEnable;			/**< */
   2571     TI_BOOL                             halCtrlRxDisableBroadcast;			/**< */
   2572     TI_BOOL                             halCtrlRecoveryEnable;				/**< */
   2573     TI_BOOL                             halCtrlFirmwareDebug;				/**< */
   2574     TI_BOOL                             WiFiWmmPS;							/**< */
   2575     TRxTimeOut                          rxTimeOut;							/**< */
   2576     TI_UINT8                            halCtrlRateFallbackRetry;			/**< */
   2577     TI_BOOL                             b11nEnable;							/**< */
   2578 
   2579     TI_UINT16                           TxCompletePacingThreshold;			/**< */
   2580     TI_UINT16                           TxCompletePacingTimeout;			/**< */
   2581     TI_UINT16                           RxIntrPacingThreshold;			    /**< */
   2582     TI_UINT16                           RxIntrPacingTimeout;			    /**< */
   2583 
   2584     TI_UINT32                           uRxAggregPktsLimit;					/**< */
   2585     TI_UINT32                           uTxAggregPktsLimit;					/**< */
   2586     TI_UINT8                            hwAccessMethod;						/**< */
   2587     TI_UINT8                            maxSitesFragCollect;				/**< */
   2588     TI_UINT8                            packetDetectionThreshold;			/**< */
   2589     TI_UINT32                           nullTemplateSize;					/**< */
   2590     TI_UINT32                           disconnTemplateSize;				/**< */
   2591     TI_UINT32                           beaconTemplateSize;					/**< */
   2592     TI_UINT32                           probeRequestTemplateSize;			/**< */
   2593     TI_UINT32                           probeResponseTemplateSize;			/**< */
   2594     TI_UINT32                           PsPollTemplateSize;				   	/**< */
   2595     TI_UINT32                           qosNullDataTemplateSize;			/**< */
   2596     TI_UINT32                           ArpRspTemplateSize;                 /**< */
   2597     TI_UINT32                           tddRadioCalTimout;					/**< */
   2598     TI_UINT32                           CrtRadioCalTimout;					/**< */
   2599     TI_UINT32                           UseMboxInterrupt;					/**< */
   2600     TI_UINT32                           TraceBufferSize;					/**< */
   2601     TI_BOOL                             bDoPrint;							/**< */
   2602     TI_UINT8                            StaMacAddress[MAC_ADDR_LEN];		/**< */
   2603     TI_BOOL                             TxFlashEnable;						/**< */
   2604     TI_UINT8                            RxBroadcastInPs;					/**< */
   2605 	TI_UINT8       						ConsecutivePsPollDeliveryFailureThreshold;	/**< */
   2606     TI_UINT8                            TxBlocksThresholdPerAc[MAX_NUM_OF_AC];/**< */
   2607     TI_UINT8                            uRxMemBlksNum;                      /**< */
   2608     TI_UINT16                           BeaconRxTimeout;					/**< */
   2609     TI_UINT16                           BroadcastRxTimeout;					/**< */
   2610 
   2611     TI_UINT8                            uRssiBeaconAverageWeight;			/**< */
   2612     TI_UINT8                            uRssiPacketAverageWeight;			/**< */
   2613     TI_UINT8                            uSnrBeaconAverageWeight;			/**< */
   2614     TI_UINT8                            uSnrPacketAverageWeight;			/**< */
   2615 
   2616     TI_UINT32                           uHostClkSettlingTime;				/**< */
   2617     TI_UINT8                            uHostFastWakeupSupport;             /**< */
   2618     THalCoexActivityTable               halCoexActivityTable;               /**< */
   2619     TFmCoexParams                       tFmCoexParams;                      /**< */
   2620     TI_UINT8                            uMaxAMPDU;                          /**< */
   2621 
   2622 } TGeneralInitParams;
   2623 
   2624 /** \struct TPowerSrvInitParams
   2625  * \brief Power Service Init Parameters
   2626  *
   2627  * \par Description
   2628  *
   2629  * \sa
   2630  */
   2631 typedef struct
   2632 {
   2633     TI_UINT8                            numNullPktRetries; 			/**< */
   2634     TI_UINT8                            hangOverPeriod;				/**< */
   2635     TI_UINT16                           reserve;					/**< */
   2636 
   2637 } TPowerSrvInitParams;
   2638 
   2639 /** \struct TScanSrvInitParams
   2640  * \brief Scan Service Init Parameters
   2641  *
   2642  * \par Description
   2643  *
   2644  * \sa
   2645  */
   2646 typedef struct
   2647 {
   2648     TI_UINT32                           numberOfNoScanCompleteToRecovery;	/**< The number of consecutive no scan complete that will trigger a recovery notification 	*/
   2649     TI_UINT32                      		uTriggeredScanTimeOut; 				/**< i.e. split scan. Time out for starting triggered scan between 2 channels 				*/
   2650 
   2651 } TScanSrvInitParams;
   2652 
   2653 /** \struct TArpIpFilterInitParams
   2654  * \brief ARP IP Filter Init Parameters
   2655  *
   2656  * \par Description
   2657  *
   2658  * \sa
   2659  */
   2660 typedef struct
   2661 {
   2662     EArpFilterType     filterType;	/**< */
   2663     TIpAddr            addr;    			/**< */
   2664 
   2665 } TArpIpFilterInitParams;
   2666 
   2667 /** \struct TMacAddrFilterInitParams
   2668  * \brief AMC Address Filter Init Parameters
   2669  *
   2670  * \par Description
   2671  *
   2672  * \sa
   2673  */
   2674 typedef struct
   2675 {
   2676     TI_UINT8                            isFilterEnabled;							/**< */
   2677     TI_UINT8                            numOfMacAddresses;							/**< */
   2678     TI_UINT16                           reserve;									/**< */
   2679     TMacAddr                            macAddrTable[MAX_MULTICAST_GROUP_ADDRS];	/**< */
   2680 
   2681 } TMacAddrFilterInitParams;
   2682 
   2683 /** \struct RateMangeParams_t
   2684  * \brief Rate Maangement params structure
   2685  *
   2686  * \par Description
   2687  *
   2688  * \sa
   2689  */
   2690 typedef struct
   2691 {
   2692 	rateAdaptParam_e paramIndex;
   2693 	uint16 RateRetryScore;
   2694 	uint16 PerAdd;
   2695 	uint16 PerTh1;
   2696 	uint16 PerTh2;
   2697 	uint16 MaxPer;
   2698 	uint8 InverseCuriosityFactor;
   2699 	uint8 TxFailLowTh;
   2700 	uint8 TxFailHighTh;
   2701 	uint8 PerAlphaShift;
   2702 	uint8 PerAddShift;
   2703 	uint8 PerBeta1Shift;
   2704 	uint8 PerBeta2Shift;
   2705 	uint8 RateCheckUp;
   2706 	uint8 RateCheckDown;
   2707 	uint8 RateRetryPolicy[13];
   2708 }RateMangeParams_t;
   2709 
   2710 /*
   2711  * IMPORTANT NOTE:
   2712  * ===============
   2713  * This structure encapsulates the initialization data required by the TnetwDrv layer.
   2714  * All structures in it are arranged so no padding will be added by the compiler!!
   2715  * This is required to avoid missalignment when compiled by customers using GWSI API!!
   2716  */
   2717 /** \struct TTwdInitParams
   2718  * \brief TWD Init Parameters
   2719  *
   2720  * \par Description
   2721  * All TWD Initialization Parameters
   2722  *
   2723  * \sa	TWD_SetDefaults
   2724  */
   2725 typedef struct
   2726 {
   2727     TGeneralInitParams                  tGeneral;			 /**< General Initialization Parameters			*/
   2728     TPowerSrvInitParams                 tPowerSrv;			 /**< Power Service Initialization Parameters	*/
   2729     TScanSrvInitParams                  tScanSrv;			 /**< Scan Service Initialization Parameters    */
   2730     TArpIpFilterInitParams              tArpIpFilter;		 /**< ARP IP filter Initialization Parameters	*/
   2731     TMacAddrFilterInitParams            tMacAddrFilter;		 /**< MAC Address Initialization Parameters		*/
   2732     IniFileRadioParam                   tIniFileRadioParams; /**< Radio Initialization Parameters   		*/
   2733 	IniFileExtendedRadioParam			tIniFileExtRadioParams; /**< Radio Initialization Parameters   		*/
   2734     IniFileGeneralParam                 tPlatformGenParams;  /**< Radio Initialization Parameters           */
   2735 	RateMangeParams_t					tRateMngParams;
   2736     DcoItrimParams_t                    tDcoItrimParams;     /**< Dco Itrim Parameters                      */
   2737 
   2738 } TTwdInitParams;
   2739 
   2740 /** \struct TTwdHtCapabilities
   2741  * \brief TWD HT Capabilities
   2742  *
   2743  * \par Description
   2744  *
   2745  * \sa	TWD_SetDefaults, TWD_GetTwdHtCapabilities
   2746  */
   2747 typedef struct
   2748 {
   2749     TI_BOOL     b11nEnable;       					/**< Enable/Disable 802.11n flag	*/
   2750     TI_UINT8    uChannelWidth;						/**< */
   2751     TI_UINT8    uRxSTBC;							/**< */
   2752     TI_UINT8    uMaxAMSDU;						  	/**< */
   2753     TI_UINT8    uMaxAMPDU;							/**< */
   2754 	TI_UINT8    uAMPDUSpacing;					   	/**< */
   2755 	TI_UINT8    aRxMCS[RX_TX_MCS_BITMASK_SIZE];		/**< */
   2756 	TI_UINT8    aTxMCS[RX_TX_MCS_BITMASK_SIZE];		/**< */
   2757 	TI_UINT16   uRxMaxDataRate;						/**< */
   2758 	TI_UINT8    uPCOTransTime;						/**< */
   2759 	TI_UINT32   uHTCapabilitiesBitMask;				/**< */
   2760 	TI_UINT8    uMCSFeedback;						/**< */
   2761 } TTwdHtCapabilities;
   2762 
   2763 typedef struct
   2764 {
   2765     int32  SNRCorrectionHighLimit;
   2766     int32  SNRCorrectionLowLimit;
   2767     int32  PERErrorTH;
   2768     int32  attemptEvaluateTH;
   2769     int32  goodAttemptTH;
   2770     int32  curveCorrectionStep;
   2771 
   2772  }RateMangeReadParams_t;
   2773 
   2774 
   2775 /*
   2776  * --------------------------------------------------------------
   2777  *	APIs
   2778  * --------------------------------------------------------------
   2779  */
   2780 /** @ingroup Control
   2781  * \brief Send Packet Transfer CB
   2782  *
   2783  * \param  CBObj        - object handle
   2784  * \param  pPktCtrlBlk  - Pointer to Input Packet Control Block
   2785  * \return void
   2786  *
   2787  * \par Description
   2788  * The Transfer-Done callback
   2789  * User registers the CB for Send Packet Transfer done
   2790  *
   2791  * \sa	TWD_RegisterCb
   2792  */
   2793 typedef void (* TSendPacketTranferCb)(TI_HANDLE CBObj, TTxCtrlBlk *pPktCtrlBlk);
   2794 /** @ingroup Control
   2795  * \brief Send Packet Debug CB
   2796  *
   2797  * \param  CBObj        - object handle
   2798  * \param  pPktCtrlBlk  - Pointer to Input Packet Control Block
   2799  * uDebugInfo			- Debug Information
   2800  * \return void
   2801  *
   2802  * \par Description
   2803  * The Transfer-Done Debug callback
   2804  *
   2805  * \sa
   2806  */
   2807 typedef void (* TSendPacketDebugCb)  (TI_HANDLE CBObj, TTxCtrlBlk *pPktCtrlBlk, TI_UINT32 uDebugInfo);
   2808 /** @ingroup Control
   2809  * \brief Send Packet Debug CB
   2810  *
   2811  * \param  CBObj        - object handle
   2812  * \param  pPktCtrlBlk  - Pointer to Input Packet Control Block
   2813  * uDebugInfo			- Debug Information
   2814  * \return void
   2815  *
   2816  * \par Description
   2817  *
   2818  * \sa	TWD_RegisterCb
   2819  */
   2820 typedef ERxBufferStatus (*TRequestForBufferCb) (TI_HANDLE hObj, void **pRxBuffer, TI_UINT16 aLength, TI_UINT32 uEncryptionFlag, PacketClassTag_e ePacketClassTag);
   2821 /** @ingroup Control
   2822  * \brief Send Packet Debug CB
   2823  *
   2824  * \param  hObj        	- object handle
   2825  * \param  pBuffer	    - Pointer to Received buffer frame
   2826  * \return void
   2827  *
   2828  * \par Description
   2829  * This function CB will be called when Received packet from RX Queue
   2830  * User registers the CB for RX Buffer Request
   2831  *
   2832  * \sa	TWD_RegisterCb
   2833  */
   2834 typedef void (*TPacketReceiveCb) (TI_HANDLE 	hObj,
   2835                                   const void 	*pBuffer);
   2836 /** @ingroup Control
   2837  * \brief Failure Event CB
   2838  *
   2839  * \param  handle        	- object handle
   2840  * \param  eFailureEvent  	- Failure Event Type
   2841  * \return void
   2842  *
   2843  * \par Description
   2844  * Callback clled for Failure event
   2845  * User registers the CB for Health-Moitoring
   2846  *
   2847  * \sa	TWD_RegisterCb
   2848  */
   2849 typedef void (*TFailureEventCb)  (TI_HANDLE handle, EFailureEvent eFailureEvent);
   2850 
   2851 /** \union TTwdCB
   2852  * \brief TWD Callback
   2853  *
   2854  * \par Description
   2855  * Union which holds all TWD Internal Callbacks which are registered by user
   2856  * per Module and Event IDs
   2857  *
   2858  * \sa	TWD_RegisterCb
   2859  */
   2860 typedef union
   2861 {
   2862 	TSendPacketTranferCb	sendPacketCB;		/**< Transfer-Done callback			*/
   2863 	TSendPacketDebugCb		sendPacketDbgCB;	/**< Transfer-Done Debug callback	*/
   2864 	TRequestForBufferCb		requestBufferCB;	/**< Transfer-Done Debug callback	*/
   2865 	TPacketReceiveCb		recvPacketCB;		/**< RX Buffer Request callback		*/
   2866 	TFailureEventCb			failureEventCB;		/**< Failure Event callback			*/
   2867 }TTwdCB;
   2868 
   2869 
   2870 /** @ingroup Control
   2871  * \brief Scan Service complete CB
   2872  *
   2873  * \param  hCb        	- handle to the scan object
   2874  * \param  eTag  		- the scan results type tag
   2875  * \param  uResultCount - number of results received during this scan
   2876  * \param  SPSStatus  	- bitmap indicating which channels were attempted (if this is an SPS scan)
   2877  * \param  TSFError  	- whether a TSF error occurred (if this is an SPS scan)
   2878  * \param  ScanStatus  	- scan SRV status (OK / NOK)
   2879  * \param  PSMode		- Power Save Mode
   2880  * \return void
   2881  *
   2882  * \par Description
   2883  * This function CB will be called when Scan Service is complete
   2884  * User registers the Scan Service Complete CB
   2885  *
   2886  * \sa	TWD_RegisterScanCompleteCb
   2887  */
   2888 typedef void (*TScanSrvCompleteCb) (TI_HANDLE 		hCb,
   2889 									EScanResultTag 	eTag,
   2890 									TI_UINT32 		uResultCount,
   2891                                     TI_UINT16 		SPSStatus,
   2892 									TI_BOOL 		TSFError,
   2893 									TI_STATUS 		ScanStatus,
   2894                                     TI_STATUS 		PSMode);
   2895 /** @ingroup Control
   2896  * \brief TWD Callback
   2897  *
   2898  * \param  hCb        	- handle to object
   2899  * \param  status  		- completion status
   2900  * \return void
   2901  *
   2902  * \par Description
   2903  * Initialising Complete Callaback (exapmle: Init HW/FW CB etc.)
   2904  * User can use its own Complete CB which will be called when
   2905  * the suitable module id & event number will arrive
   2906  *
   2907  * \sa	TWD_Init
   2908  */
   2909 typedef void (*TTwdCallback) (TI_HANDLE hCb, TI_STATUS status);
   2910 /** @ingroup Control
   2911  * \brief TWD Callback
   2912  *
   2913  * \param  hCb        	- handle to object
   2914  * \param  msrReply  	- Pointer to input measurement (which ended) Reply
   2915  * \return void
   2916  *
   2917  * \par Description
   2918  * The function prototype for the measurement complete callback
   2919  * User can use its own measurement complete CB
   2920  * which will be called when measurement end
   2921  *
   2922  * \sa	TWD_StartMeasurement
   2923  */
   2924 typedef void (*TMeasurementSrvCompleteCb) (TI_HANDLE hCb, TMeasurementReply* msrReply);
   2925 /** @ingroup Control
   2926  * \brief Command Response Callback
   2927  *
   2928  * \param  hCb        	- handle to object
   2929  * \param  status  		- status of Command ended
   2930  * \return void
   2931  *
   2932  * \par Description
   2933  * The function prototype for the Command Response CB
   2934  * Enables user to implement and use its own Response CB
   2935  * which will be called when TWD Command end
   2936  *
   2937  * \sa	TWD_StartMeasurement, TWD_StopMeasurement, TWD_Scan, TWD_StopScan, TWD_StartPeriodicScan, TWD_StopPeriodicScan
   2938  */
   2939 typedef void (*TCmdResponseCb) (TI_HANDLE hCb, TI_UINT16 status);
   2940 /** @ingroup Control
   2941  * \brief Command Response Callback
   2942  *
   2943  * \param  hCb        	- handle to object
   2944  * \param  status  		- status of Command ended
   2945  * \return void
   2946  *
   2947  * \par Description
   2948  * The function prototype for the Power Save Set Response CB
   2949  * Enables user to implement and use its own Response CB which
   2950  * will be called when Power Save Set Command end
   2951  *
   2952  * \sa	TWD_SetPsMode
   2953  */
   2954 typedef void (*TPowerSaveResponseCb)(TI_HANDLE hCb, TI_UINT8 status);
   2955 /** @ingroup Control
   2956  * \brief Command Complete Callback
   2957  *
   2958  * \param  hCb        	- handle to object
   2959  * \param  PsMode		- Power Save Mode
   2960  * \param  status  		- status of Command ended
   2961  * \return void
   2962  *
   2963  * \par Description
   2964  * The function prototype for the Power Save Set Complete CB
   2965  * Enables user to implement and use its own Complete CB which
   2966  * will be called when Power Save Set Command end (for success/faild notification)
   2967  *
   2968  * \sa	TWD_SetPsMode
   2969  */
   2970 typedef void (*TPowerSaveCompleteCb )(TI_HANDLE hCb, TI_UINT8 PsMode, TI_UINT8 status);
   2971 /** @ingroup Control
   2972  * \brief  Create TWD Module
   2973  *
   2974  * \param  hOs   	- OS module object handle
   2975  * \return TWD Module object handle on success or NULL on failure
   2976  *
   2977  * \par Description
   2978  * Calling this function Creates a TWD object and all its sub-modules.
   2979  *
   2980  * \sa     TWD_Destroy, TWD_Init
   2981  */
   2982 TI_HANDLE TWD_Create (TI_HANDLE hOs);
   2983 /** @ingroup Control
   2984  * \brief  Destroy TWD Module
   2985  *
   2986  * \param  hTWD   	- hTWD module object handle
   2987  * \return TI_OK on success or TI_NOK on failure
   2988  *
   2989  * \par Description
   2990  * Calling this function Destroys TWD object and all its sub-modules.
   2991  *
   2992  * \sa     TWD_Create
   2993  */
   2994 TI_STATUS TWD_Destroy (TI_HANDLE hTWD);
   2995 /** Control
   2996  * \brief  Init TWD module
   2997  *
   2998  * \param  hTWD         - TWD module object handle
   2999  * \param  hReport      - Report module object handle
   3000  * \param  hUser        - Master (User) module object handle
   3001  * \param  hTimer       - Timer module object handle
   3002  * \param  hContext     - context-engine module object handle
   3003  * \param  hTxnQ        - TxnQueue module object handle
   3004  * \param  fInitHwCb    - Init HW callback called when init HW phase is done
   3005  * \param  fInitFwCb    - Init FW callback called when init FW phase is done
   3006  * \param  fConfigFwCb  - Configuration FW callback called when configuring FW phase is done
   3007  * \param  fStopCb      - Stop callback called when TWD is stopped
   3008  * \param  fInitFailCb  - Fail callback called when TWD is Failed
   3009  * \return void
   3010  *
   3011  * \par Description
   3012  * Start hardware Init and Config process.
   3013  * This is the first function that must be called after TWD_Create.
   3014  *
   3015  * \sa     TWD_Create, TWD_Stop
   3016  */
   3017 void TWD_Init (TI_HANDLE    hTWD,
   3018 			   TI_HANDLE 	hReport,
   3019                TI_HANDLE 	hUser,
   3020 			   TI_HANDLE 	hTimer,
   3021 			   TI_HANDLE 	hContext,
   3022 			   TI_HANDLE 	hTxnQ,
   3023                TTwdCallback fInitHwCb,
   3024                TTwdCallback fInitFwCb,
   3025                TTwdCallback fConfigFwCb,
   3026 			   TTwdCallback	fStopCb,
   3027 			   TTwdCallback fInitFailCb);
   3028 /** @ingroup Control
   3029  * \brief  Init HW module
   3030  *
   3031  * \param  hTWD         - TWD module object handle
   3032  * \param  pbuf         - Pointer to Input NVS Buffer
   3033  * \param  length       - Length of NVS Buffer
   3034  * \param  uRxDmaBufLen - The Rx DMA buffer length in bytes (needed as a limit for Rx aggregation length)
   3035  * \param  uTxDmaBufLen - The Tx DMA buffer length in bytes (needed as a limit for Tx aggregation length)
   3036  * \return TI_OK on success or TI_NOK on failure
   3037  *
   3038  * \par Description
   3039  * Performs the HW init process.
   3040  *
   3041  * \sa
   3042  */
   3043 TI_STATUS TWD_InitHw (TI_HANDLE hTWD,
   3044                       TI_UINT8 *pbuf,
   3045                       TI_UINT32 length,
   3046                       TI_UINT32 uRxDmaBufLen,
   3047                       TI_UINT32 uTxDmaBufLen);
   3048 /** @ingroup Control
   3049  * \brief Set Defults to TWD Init Params
   3050  *
   3051  * \param  hTWD         - TWD module object handle
   3052  * \param  pInitParams  - Pointer to Input init default parameters
   3053  * \return TI_OK on success or TI_NOK on failure
   3054  *
   3055  * \par Description
   3056  *
   3057  * \sa
   3058  */
   3059 TI_STATUS TWD_SetDefaults (TI_HANDLE hTWD, TTwdInitParams *pInitParams);
   3060 /** @ingroup Control
   3061  * \brief  Init FW
   3062  *
   3063  * \param  hTWD         - TWD module object handle
   3064  * \param  pFileInfo    - Pointer to Input Buffer contains part of FW Image to Download
   3065  * 							The Following Field should be filled:
   3066  * 							pFileInfo->pBuffer
   3067  * 							pFileInfo->uLength
   3068  * 							pFileInfo->uAddress
   3069  * 							pFileInfo->bLast
   3070  * \return TI_OK on success or TI_NOK on failure
   3071  *
   3072  * \par Description
   3073  * Performs FW Download, and Run FW
   3074  *
   3075  * \sa
   3076  */
   3077 TI_STATUS TWD_InitFw (TI_HANDLE hTWD, TFileInfo *pFileInfo);
   3078 /** @ingroup Control
   3079  * \brief  Open UART Bus Txn
   3080  *
   3081  * \param  hTWD         - TWD module object handle
   3082  * \param  pParams      - Pointer to Input parameters
   3083  * \return TI_OK on success or TI_NOK on failure
   3084  *
   3085  * \par Description
   3086  *
   3087  * \sa
   3088  */
   3089 TI_STATUS TWD_BusOpen (TI_HANDLE hTWD, void* pParams);
   3090 /** @ingroup Control
   3091  * \brief  Close UART Bus Txn
   3092  *
   3093  * \param  hTWD         - TWD module object handle
   3094  * \return TI_OK on success or TI_NOK on failure
   3095  *
   3096  * \par Description
   3097  *
   3098  * \sa
   3099  */
   3100 TI_STATUS TWD_BusClose (TI_HANDLE hTWD);
   3101 /** @ingroup Control
   3102  * \brief Halt firmware
   3103  *
   3104  * \param  hTWD         - TWD module object handle
   3105  * \return TI_OK on success or TI_NOK on failure
   3106  *
   3107  * \par Description
   3108  *
   3109  * \sa
   3110  */
   3111 TI_STATUS TWD_Stop (TI_HANDLE hTWD);
   3112 /** @ingroup Control
   3113  * \brief Enable external events from FW
   3114  *
   3115  * \param  hTWD         - TWD module object handle
   3116  * \return void
   3117  *
   3118  * \par Description
   3119  * Enable external events from FW upon driver start or recovery completion
   3120  *
   3121  * \sa
   3122  */
   3123 void TWD_EnableExternalEvents (TI_HANDLE hTWD);
   3124 /** @ingroup Control
   3125  * \brief Registers TWD internal callback function
   3126  *
   3127  * \param  hTWD         - TWD module object handle
   3128  * \param  event        - event on which the registrated CB will be called
   3129  * \param  fCb 	        - Pointer to Registered CB function
   3130  * \param  pData 	    - Pointer to Registered CB data
   3131  * \return TI_OK on success or TI_NOK on failure
   3132  *
   3133  * \par Description
   3134  * This CB enables user to register TWD Internal CB functions of different Modules,
   3135  * with their data.
   3136  * The function identifies which TWD Module owns the Registered CB, and what the specific Registered CB
   3137  * according to event input parameter.
   3138  * Once the Module and specific CB function are identified, the CB is registerd in the TWD Module
   3139  * by calling suitable registration CB function
   3140  *
   3141  * \sa
   3142  */
   3143 TI_STATUS TWD_RegisterCb (TI_HANDLE hTWD, TI_UINT32 event, TTwdCB *fCb, void *pData);
   3144 /** @ingroup Control
   3145  * \brief Exit from init mode
   3146  *
   3147  * \param  hTWD         - TWD module object handle
   3148  * \return TI_OK on success or TI_NOK on failure
   3149  *
   3150  * \par Description
   3151  * Exit From Init Mode enable sending command to the MboxQueue (which store a command),
   3152  * while the interrupts are masked.
   3153  * The interrupt would be enable at the end of the init process
   3154  *
   3155  * \sa
   3156  */
   3157 TI_STATUS TWD_ExitFromInitMode (TI_HANDLE hTWD);
   3158 /** @ingroup Control
   3159  * \brief Finalize FW init and download
   3160  *
   3161  * \param  hTWD         - TWD module object handle
   3162  * \return void
   3163  *
   3164  * \par Description
   3165  * Init all the remaining initialization after the FW download has finished
   3166  *
   3167  * \sa
   3168  */
   3169 void TWD_FinalizeDownload (TI_HANDLE hTWD);
   3170 /** @ingroup Control
   3171  * \brief Finalize of faulty FW init and download
   3172  *
   3173  * \param  hTWD         - TWD module object handle
   3174  * \return void
   3175  *
   3176  * \par Description
   3177  * Call the upper layer failure callback after Init or FW download has finished with failure.
   3178  *
   3179  * \sa
   3180  */
   3181 void TWD_FinalizeOnFailure (TI_HANDLE hTWD);
   3182 /** @ingroup Control
   3183  * \brief Perform FW Configuration
   3184  *
   3185  * \param  hTWD         - TWD module object handle
   3186  * \return TI_OK on success or TI_NOK on failure
   3187  *
   3188  * \par Description
   3189  * Configure the FW from the TWD DB - after configuring all HW objects
   3190  *
   3191  * \sa
   3192  */
   3193 TI_STATUS TWD_ConfigFw (TI_HANDLE hTWD);
   3194 /** @ingroup Control
   3195  * \brief Handle FW interrupt from ISR context
   3196  *
   3197  * \param  hTWD         - TWD module object handle
   3198  * \return TI_OK on success or TI_NOK on failure
   3199  *
   3200  * \par Description
   3201  * This is the FW-interrupt ISR context. The driver task is scheduled to hadnle FW-Events
   3202  *
   3203  * \sa
   3204  */
   3205 TI_STATUS TWD_InterruptRequest (TI_HANDLE hTWD);
   3206 /** @ingroup Control
   3207  * \brief Enable Recovery
   3208  *
   3209  * \param  hTWD         - TWD module object handle
   3210  * \return TRUE if recovery Enables, FALSE otherwise
   3211  *
   3212  * \par Description
   3213  * Return Recovery E/D status
   3214  *
   3215  * \sa
   3216  */
   3217 TI_BOOL TWD_RecoveryEnabled (TI_HANDLE hTWD);
   3218 /** @ingroup Measurement
   3219  * \brief Starts a measurement
   3220  *
   3221  * \param  hTWD         			- TWD module object handle
   3222  * \param  pMsrRequest         		- Pointer to Input structure which contains the measurement parameters
   3223  * \param  uTimeToRequestExpiryMs   - The time (in milliseconds) the measurement SRV has to start the request
   3224  * \param  fResponseCb         		- The Command response CB Function
   3225  * \param  hResponseCb         		- Handle to Command response CB Function Obj
   3226  * \param  fCompleteCb         		- The Command Complete CB Function
   3227  * \param  hCompleteCb         		- Handle to Command Complete CB Function Obj
   3228  * \return TI_OK on success or TI_NOK on failure
   3229  *
   3230  * \par Description
   3231  * Starts a measurement operation
   3232  *
   3233  * \sa
   3234  */
   3235 TI_STATUS TWD_StartMeasurement (TI_HANDLE hTWD,
   3236 								TMeasurementRequest *pMsrRequest,
   3237 								TI_UINT32 uTimeToRequestExpiryMs,
   3238 								TCmdResponseCb fResponseCb,
   3239 								TI_HANDLE hResponseCb,
   3240 								TMeasurementSrvCompleteCb fCompleteCb,
   3241 								TI_HANDLE hCompleteCb);
   3242 /** @ingroup Measurement
   3243  * \brief Stops a measurement
   3244  *
   3245  * \param  hTWD         			- TWD module object handle
   3246  * \param  bSendNullData         	- Indicates whether to send NULL data when exiting driver mode
   3247  * \param  fResponseCb         		- Pointer to Command response CB function
   3248  * \param  hResponseCb         		- Handle to Command response CB parameters
   3249  * \return TI_OK on success or TI_NOK on failure
   3250  *
   3251  * \par Description
   3252  * Stops a measurement operation in progress
   3253  *
   3254  * \sa
   3255  */
   3256 TI_STATUS TWD_StopMeasurement (TI_HANDLE hTWD,
   3257 							   TI_BOOL bSendNullData,
   3258 							   TCmdResponseCb fResponseCb,
   3259 							   TI_HANDLE hResponseCb);
   3260 /** @ingroup Measurement
   3261  * \brief Start scan
   3262  *
   3263  * \param hTWD                		- TWD module object handle
   3264  * \param pScanParams            	- Pointer to Input Scan specific parameters
   3265  * \param eScanTag               	- Scan tag, used for result and scan complete tracking
   3266  * \param bHighPriority          	- Indicates whether to perform a high priority (overlaps DTIM) scan
   3267  * \param bDriverMode            	- Indicates whether to try to enter driver mode (with PS on) before issuing the scan command
   3268  * \param bScanOnDriverModeError 	- Indicates whether to proceed with the scan if requested to enter driver mode and failed
   3269  * \param ePsRequest             	- Parameter sent to PowerSaveServer.
   3270  * 										Should indicates PS ON or "keep current" only when driver mode is requested,
   3271  * 										Otherwise should indicate OFF
   3272  * \param bSendNullData          	- Indicates whether to send Null data when exiting driver mode on scan complete
   3273  * \param fResponseCb            	- The Response CB Function which called after downloading the command
   3274  * \param hResponseCb            	- Handle to the Response CB Function Obj (Notice : last 2 params are NULL in Legacy run)
   3275  * \return TI_OK on success or TI_NOK on failure
   3276  *
   3277  * \par Description
   3278  * Start scan. enter driver mode (PS) only if station is connected
   3279  *
   3280  * \sa
   3281  */
   3282 TI_STATUS TWD_Scan (TI_HANDLE hTWD,
   3283 					TScanParams *pScanParams,
   3284 					EScanResultTag eScanTag,
   3285 					TI_BOOL bHighPriority,
   3286 					TI_BOOL bDriverMode,
   3287 					TI_BOOL bScanOnDriverModeError,
   3288 					E80211PsMode ePsRequest,
   3289 					TI_BOOL bSendNullData,
   3290 					TCmdResponseCb fResponseCb,
   3291 					TI_HANDLE hResponseCb);
   3292 /** @ingroup Measurement
   3293  * \brief Stop scan
   3294  *
   3295  * \param hTWD                		- TWD module object handle
   3296  * \param eScanTag               	- Scan tag, used to track scan complete and result
   3297  * \param bSendNullData          	- Indicates whether to send Null data when exiting driver mode
   3298  * \param fScanCommandResponseCb 	- The Response CB Function which called after downloading the command
   3299  * \param hCb                    	- Handle to the Response CB Function Obj (Notice : last 2 params are NULL in Legacy run)
   3300  * \return TI_OK on success or TI_NOK on failure
   3301  *
   3302  * \par Description
   3303  * Sends a Stop Scan command to FW, no matter if we are in scan progress or not
   3304  *
   3305  * \sa
   3306  */
   3307 TI_STATUS TWD_StopScan (TI_HANDLE hTWD,
   3308 						EScanResultTag eScanTag,
   3309 						TI_BOOL bSendNullData,
   3310 						TCmdResponseCb fScanCommandResponseCb,
   3311 						TI_HANDLE hCb);
   3312 /** @ingroup Measurement
   3313  * \brief Stop Scan on FW Reset
   3314  *
   3315  * \param hTWD		- TWD module object handle
   3316  * \return TI_OK on success or TI_NOK on failure
   3317  *
   3318  * \par Description
   3319  * Stop scan operation when a FW reset (recovery) situation is detected (by all processes
   3320  * other than scan)
   3321  *
   3322  * \sa
   3323  */
   3324 TI_STATUS TWD_StopScanOnFWReset (TI_HANDLE hTWD);
   3325 /** @ingroup Measurement
   3326  * \brief Start Connection Periodic Scan operation
   3327  *
   3328  * \param hTWD                			- TWD module object handle
   3329  * \param  pPeriodicScanParams    		- Pointer to Input Parameters Structures for the Periodic Scan operation
   3330  * \param  eScanTag               		- Scan tag, used for scan complete and result tracking
   3331  * \param  uPassiveScanDfsDwellTimeMs 	- Passive dwell time for DFS channels (in milli-secs)
   3332  * \param  fResponseCb            		- Response CB Function which is called after downloading the command
   3333  * \param  hResponseCb            		- Handle to Response CB Function Obj (Notice : last 2 params are NULL in Legacy run)
   3334  * \return TI_OK on success or TI_NOK on failure
   3335  *
   3336  * \par Description
   3337  * Perform Connection Scan periodically
   3338  *
   3339  * \sa
   3340  */
   3341 TI_STATUS TWD_StartConnectionScan (TI_HANDLE hTWD,
   3342 								 TPeriodicScanParams *pPeriodicScanParams,
   3343 								 EScanResultTag eScanTag,
   3344 								 TI_UINT32 uPassiveScanDfsDwellTimeMs,
   3345 								 TCmdResponseCb fResponseCb,
   3346 								 TI_HANDLE hResponseCb);
   3347 /** @ingroup Measurement
   3348  * \brief Stop Periodic Scan operation
   3349  *
   3350  * \param hTWD 					- TWD module object handle
   3351  * \param eScanTag              - scan tag, used for scan complete and result tracking
   3352  * \param  fResponseCb          - Response CB Function which is called after downloading the command
   3353  * \param  hResponseCb          - Handle to Response CB Function Obj (Notice : last 2 params are NULL in Legacy run)
   3354  * \return TI_OK on success or TI_NOK on failure
   3355  *
   3356  * \par Description
   3357  * Stop Periodic Connection Scan
   3358  *
   3359  * \sa
   3360  */
   3361 TI_STATUS TWD_StopPeriodicScan (TI_HANDLE hTWD,
   3362 								EScanResultTag eScanTag,
   3363 								TCmdResponseCb fResponseCb,
   3364 								TI_HANDLE hResponseCb);
   3365 /** @ingroup Measurement
   3366  * \brief Register CB for Scan Complete
   3367  *
   3368  * \param  hTWD         		- TWD module object handle
   3369  * \param  fScanCompleteCb     	- The Complete CB Function
   3370  * \param  hScanCompleteCb   	- Handle to the Complete CB Function Obj
   3371  * \return TI_OK on success or TI_NOK on failure
   3372  *
   3373  * \par Description
   3374  * Registers a Complete CB Function for Scan Complete notifications
   3375  *
   3376  * \sa
   3377  */
   3378 TI_STATUS TWD_RegisterScanCompleteCb (TI_HANDLE hTWD,
   3379 									  TScanSrvCompleteCb fScanCompleteCb,
   3380 									  TI_HANDLE hScanCompleteCb);
   3381 /** @ingroup Misc
   3382  * \brief  Set Parameters in FW
   3383  *
   3384  * \param hTWD 			- TWD module object handle
   3385  * \param  pParamInfo   - Pointer to Input TWD Parameters Information Structure
   3386  * \return TI_OK on success or TI_NOK on failure
   3387  *
   3388  * \par Description
   3389  *  Set/Configure Parameters Information in FW via Mail BOX
   3390  *
   3391  * \sa	TTwdParamInfo
   3392  */
   3393 TI_STATUS TWD_SetParam (TI_HANDLE hTWD, TTwdParamInfo *pParamInfo);
   3394 /** @ingroup Misc
   3395  * \brief  Get Parameters from FW
   3396  *
   3397  * \param hTWD 			- TWD module object handle
   3398  * \param  pParamInfo   - Pointer to Input TWD Parameters Information Structure
   3399  * \return TI_OK on success or TI_NOK on failure
   3400  *
   3401  * \par Description
   3402  *  Get Parameters Information from FW  via Mail BOX
   3403  *
   3404  * \sa
   3405  */
   3406 TI_STATUS TWD_GetParam (TI_HANDLE hTWD, TTwdParamInfo *pParamInfo);
   3407 /** @ingroup Control
   3408  * \brief Callback which Checks MBOX
   3409  *
   3410  * \param  hTWD         - TWD module object handle
   3411  * \param  uMboxStatus  - Mailbox status
   3412  * \param  pItrParamBuf - Pointer to Interrogate parameters buffer
   3413  * \return TI_OK on success or TI_NOK on failure
   3414  *
   3415  * \par Description
   3416  * Perform FW validation by calling CB function which is used for handling MBOX error.
   3417  * If command MBOX queue identify MBOX error or timeout, it will call
   3418  * a failure-callback with MBOX_FAILURE type (FW failed)
   3419  *
   3420  * \sa
   3421  */
   3422 TI_STATUS TWD_CheckMailboxCb (TI_HANDLE hTWD, TI_UINT16 uMboxStatus, void *pItrParamBuf);
   3423 /** @ingroup Control
   3424  * \brief Write MIB
   3425  *
   3426  * \param hTWD 		- TWD module object handle
   3427  * \param pMib      - Pointer to Input MIB Structure
   3428  * \return TI_OK on success or TI_NOK on failure
   3429  *
   3430  * \par Description
   3431  * Write configuration information to FW
   3432  *
   3433  * \sa TWD_ReadMib
   3434  */
   3435 TI_STATUS   TWD_WriteMib (TI_HANDLE hTWD, TMib* pMib);
   3436 /** @ingroup Control
   3437  * \brief Read MIB
   3438  *
   3439  * \param hTWD 			- TWD module object handle
   3440  * \param  hCb          - Handle to Request MIB CB Function Obj
   3441  * \param  fCb          - Pinter to Request MIB CB Function
   3442  * \param  pCb          - Pointer to read parameters
   3443  * \return TI_OK on success or TI_NOK on failure
   3444  *
   3445  * \par Description
   3446  * Read configuration information from FW
   3447  *
   3448  * \sa TWD_WriteMib
   3449  */
   3450 TI_STATUS   TWD_ReadMib                 (TI_HANDLE hTWD, TI_HANDLE hCb, void* fCb, void* pCb);
   3451 /** @ingroup Control
   3452  * \brief TWD Debug
   3453  *
   3454  * \param hTWD 			- TWD module object handle
   3455  * \param  funcType    	- TWD Function Debuged
   3456  * \param  pParam     	- Pointer to Input parameters of Debug function
   3457  * \return TI_OK on success or TI_NOK on failure
   3458  *
   3459  * \par Description
   3460  * Use for Debug TWD
   3461  *
   3462  * \sa
   3463  */
   3464 TI_STATUS TWD_Debug (TI_HANDLE hTWD, TI_UINT32 funcType, void *pParam);
   3465 /** @ingroup Control
   3466  * \brief Register event
   3467  *
   3468  * \param  hTWD         - TWD module object handle
   3469  * \param  event        - Event ID
   3470  * \param  fCb          - Event Callback function pointer
   3471  * \param  hCb          - Event Callback object handle
   3472  * \return TI_OK on success or TI_NOK on failure
   3473  *
   3474  * \par Description
   3475  * Register FW event callback function
   3476  *
   3477  * \sa
   3478  */
   3479 TI_STATUS TWD_RegisterEvent (TI_HANDLE hTWD, TI_UINT32 event, void *fCb, TI_HANDLE hCb);
   3480 /** @ingroup Control
   3481  * \brief Disable event
   3482  *
   3483  * \param  hTWD         - TWD module object handle
   3484  * \param  event        - Event ID
   3485  * \return TI_OK on success or TI_NOK on failure
   3486  *
   3487  * \par Description
   3488  * Disable specific FW event
   3489  * Note: Currently not in use
   3490  *
   3491  * \sa
   3492  */
   3493 TI_STATUS TWD_DisableEvent (TI_HANDLE hTWD, TI_UINT32 event);
   3494 /** @ingroup Control
   3495  * \brief Enable event
   3496  *
   3497  * \param  hTWD         - TWD module object handle
   3498  * \param  event        - Event ID
   3499  * \return TI_OK on success or TI_NOK on failure
   3500  *
   3501  * \par Description
   3502  * Enable specific FW event
   3503  *
   3504  * \sa
   3505  */
   3506 TI_STATUS TWD_EnableEvent (TI_HANDLE hTWD, TI_UINT32 event);
   3507 /** @ingroup Control
   3508  * \brief Convert RSSI to RX Level
   3509  *
   3510  * \param hTWD 			- TWD module object handle
   3511  * \param  iRssiVal     - RSSI Input Value
   3512  * \return TI_OK on success or TI_NOK on failure
   3513  *
   3514  * \par Description
   3515  * Note: Currently not in use!
   3516  *
   3517  * \sa
   3518  */
   3519 TI_INT8 TWD_ConvertRSSIToRxLevel (TI_HANDLE hTWD, TI_INT32 iRssiVal);
   3520 /** @ingroup Control
   3521  * \brief Complete TWD Stop
   3522  *
   3523  * \param  hTWD	- TWD module object handle
   3524  * \return void
   3525  *
   3526  * \par Description
   3527  *
   3528  * \sa TWD_Stop, TWD_Init
   3529  */
   3530 void TWD_StopComplete (TI_HANDLE hTWD);
   3531 /** @ingroup Control
   3532  * \brief Disable Interrupts
   3533  *
   3534  * \param hTWD	- TWD module object handle
   3535  * \return void
   3536  *
   3537  * \par Description
   3538  * Disable the FW Event client of the context thread handler
   3539  *
   3540  * \sa
   3541  */
   3542 void TWD_DisableInterrupts (TI_HANDLE hTWD);
   3543 /** @ingroup Control
   3544  * \brief Enable Interrupts
   3545  *
   3546  * \param hTWD 		- TWD module object handle
   3547  * \return void
   3548  *
   3549  * \par Description
   3550  * Enable the FW Event client of the context thread handler
   3551  *
   3552  * \sa
   3553  */
   3554 void TWD_EnableInterrupts (TI_HANDLE hTWD);
   3555 /** @ingroup Control
   3556  * \brief	Translate host to FW time (Usec)
   3557  *
   3558  * \param  hTWD 	 - TWD module object handle
   3559  * \param  uHostTime - The host time in MS to translate
   3560  *
   3561  * \return FW Time in Usec
   3562  *
   3563  * \par Description
   3564  *
   3565  * \sa
   3566  */
   3567 TI_UINT32 TWD_TranslateToFwTime (TI_HANDLE hTWD, TI_UINT32 uHostTime);
   3568 /** @ingroup BSS
   3569  * \brief Get TWD HT Capabilities
   3570  *
   3571  * \param hTWD 					- TWD module object handle
   3572  * \param  pTwdHtCapabilities  	- Pointer read structure Output
   3573  * \return TI_OK
   3574  *
   3575  * \par Description
   3576  *
   3577  *
   3578  * \sa
   3579  */
   3580 void TWD_GetTwdHtCapabilities (TI_HANDLE hTWD, TTwdHtCapabilities **pTwdHtCapabilities);
   3581 #ifdef TI_DBG
   3582 /** @ingroup Measurement
   3583  * \brief Prints Scan Server Debug status
   3584  *
   3585  * \param  hTWD         - TWD module object handle
   3586  * \return TI_OK on success or TI_NOK on failure
   3587  *
   3588  * \par Description
   3589  *
   3590  * \sa
   3591  */
   3592 TI_STATUS TWD_PrintMacServDebugStatus (TI_HANDLE hTWD);
   3593 
   3594 /** @ingroup Test
   3595  * \brief Prints Tx Info
   3596  *
   3597  * \param  hTWD         - TWD module object handle
   3598  * \param  ePrintInfo   - Information type
   3599  * \return TI_OK on success or TI_NOK on failure
   3600  *
   3601  * \par Description
   3602  * Call the requested print function - used for Debug Test
   3603  *
   3604  * \sa
   3605  */
   3606 TI_STATUS TWD_PrintTxInfo (TI_HANDLE hTWD, ETwdPrintInfoType ePrintInfo);
   3607 #endif
   3608 
   3609 /*-----*/
   3610 /* Get */
   3611 /*-----*/
   3612 
   3613 /** @ingroup Control
   3614  * \brief Get number of Commands in CMD Queue
   3615  *
   3616  * \param  hTWD         - TWD module object handle
   3617  * \return Maximum Number of Commands currently in CMD Queue
   3618  *
   3619  * \par Description
   3620  *
   3621  * \sa
   3622  */
   3623 TI_UINT32 TWD_GetMaxNumberOfCommandsInQueue (TI_HANDLE hTWD);
   3624 /** @ingroup Power_Management
   3625  * \brief Get Power Save Status
   3626  *
   3627  * \param  hTWD         		- TWD module object handle
   3628  * \return TI_OK on success or TI_NOK on failure
   3629  *
   3630  * \par Description
   3631  *
   3632  * \sa
   3633  */
   3634 TI_BOOL TWD_GetPsStatus (TI_HANDLE hTWD);
   3635 
   3636 
   3637 /** @ingroup Control
   3638  * \brief  Get FW Information
   3639  *
   3640  * \param  hTWD    	- TWD module object handle
   3641  * \return TFwInfo 	- Pointer to Output FW Information Structure
   3642  *
   3643  * \par Description
   3644  * Gets the TFwInfo pointer
   3645  *
   3646  * \sa TFwInfo
   3647  */
   3648 TFwInfo* TWD_GetFWInfo (TI_HANDLE hTWD);
   3649 /** @ingroup BSS
   3650  * \brief	Get Group Address Table
   3651  *
   3652  * \param  hTWD    			- TWD module object handle
   3653  * \param  pEnabled  		- Pointer to Output Indicatore if MAC Address Filter is Enabled
   3654  * \param  pNumGroupAddrs   - Pointer to Output Number of Group Address
   3655  * \param  pGroupAddr   	- Pointer to Output Group Address Table
   3656  * \return TI_OK on success or TI_NOK on failure
   3657  *
   3658  * \par Description
   3659  *
   3660  * \sa TWD_WriteMib, TMacAddr
   3661  */
   3662 TI_STATUS TWD_GetGroupAddressTable (TI_HANDLE hTWD, TI_UINT8* pEnabled, TI_UINT8* pNumGroupAddrs, TMacAddr *pGroupAddr);
   3663 /** @ingroup Control
   3664  * \brief Read Memory
   3665  *
   3666  * \param hTWD 			- TWD module object handle
   3667  * \param pMemDebug     - Pointer to read Output
   3668  * \param fCb			- Pointer to function Callback
   3669  * \param hCb			- Handle to function Callback Parameters
   3670  * \return TI_OK on success or TI_NOK on failure
   3671  *
   3672  * \par Description
   3673  *
   3674  * \sa
   3675  */
   3676 TI_STATUS TWD_readMem (TI_HANDLE hTWD, TFwDebugParams* pMemDebug, void* fCb, TI_HANDLE hCb);
   3677 /** @ingroup Control
   3678  * \brief Write Memory
   3679  *
   3680  * \param hTWD 			- TWD module object handle
   3681  * \param pMemDebug     - Pointer to write Input
   3682  * \param fCb			- Pointer to function Callback
   3683  * \param hCb			- Handle to function Callback Parameters
   3684  * \return TI_OK on success or TI_NOK on failure
   3685  *
   3686  * \par Description
   3687  *
   3688  * \sa
   3689  */
   3690 TI_STATUS TWD_writeMem (TI_HANDLE hTWD, TFwDebugParams* pMemDebug, void* fCb, TI_HANDLE hCb);
   3691 
   3692 /** @ingroup Control
   3693  * \brief Check if addr is a valid memory address
   3694  *
   3695  * \param hTWD 			- TWD module object handle
   3696  * \param pMemDebug     - Pointer to addr & length
   3697  * \return TI_TRUE on success or TI_FALSE on failure
   3698  *
   3699  * \par Description
   3700  *
   3701  * \sa
   3702  */
   3703 TI_BOOL TWD_isValidMemoryAddr (TI_HANDLE hTWD, TFwDebugParams* pMemDebug);
   3704 
   3705 /** @ingroup Control
   3706  * \brief Check if addr is a valid register address
   3707  *
   3708  * \param hTWD 			- TWD module object handle
   3709  * \param pMemDebug     - Pointer to addr & length
   3710  * \return TI_TRUE on success or TI_FALSE on failure
   3711  *
   3712  * \par Description
   3713  *
   3714  * \sa
   3715  */
   3716 TI_BOOL TWD_isValidRegAddr (TI_HANDLE hTWD, TFwDebugParams* pMemDebug);
   3717 
   3718 /*-----*/
   3719 /* Set */
   3720 /*-----*/
   3721 
   3722 /** @ingroup Power_Management
   3723  * \brief Set Power Save Mode
   3724  *
   3725  * \param  hTWD         		- TWD module object handle
   3726  * \param  ePsMode       		- Power Save Mode
   3727  * \param  bSendNullDataOnExit  - Indicates whether to send NULL data when exiting driver mode
   3728  * \param  hPowerSaveCompleteCb - Handle to PS Complete CB Parameters Obj
   3729  * \param  fPowerSaveCompleteCb - The PS Complete CB function
   3730  * \param  fPowerSaveResponseCb - The PS Response CB function
   3731  * \return TI_OK on success or TI_NOK on failure
   3732  *
   3733  * \par Description
   3734  *
   3735  * \sa
   3736  */
   3737 TI_STATUS TWD_SetPsMode (TI_HANDLE hTWD,
   3738 						 E80211PsMode ePsMode,
   3739 						 TI_BOOL bSendNullDataOnExit,
   3740 						 TI_HANDLE hPowerSaveCompleteCb,
   3741 						 TPowerSaveCompleteCb fPowerSaveCompleteCb,
   3742 						 TPowerSaveResponseCb fPowerSaveResponseCb);
   3743 /** @ingroup Radio
   3744  * \brief Set Rate Modulation
   3745  *
   3746  * \param  hTWD         - TWD module object handle
   3747  * \param  rate         - Rate Modulation Value
   3748  * \return TRUE if Power Service State is Pwer Save, FALSE otherwise
   3749  *
   3750  * \par Description
   3751  *
   3752  * \sa
   3753  */
   3754 TI_STATUS TWD_SetNullRateModulation (TI_HANDLE hTWD, TI_UINT16 rate);
   3755 /** @ingroup Radio
   3756  * \brief	Set Radio Band
   3757  *
   3758  * \param  hTWD    			- TWD module object handle
   3759  * \param  eRadioBand  		- Radio Band Type
   3760  * \return TI_OK on success or TI_NOK on failure
   3761  *
   3762  * \par Description
   3763  *
   3764  * \sa
   3765  */
   3766 TI_STATUS TWD_SetRadioBand (TI_HANDLE hTWD, ERadioBand eRadioBand);
   3767 /** @ingroup Data_Path
   3768  * \brief	Set Security Sequance Number
   3769  *
   3770  * \param  hTWD    				- TWD module object handle
   3771  * \param  securitySeqNumLsByte - LS Byte of Security Sequance Number
   3772  * \return TI_OK on success or TI_NOK on failure
   3773  *
   3774  * \par Description
   3775  * Update the TKIP/AES sequence-number according to the Tx data packet security-sequance-number
   3776  * Note: The FW always provides the last used sequance-number so no need to check if the current
   3777  * packet is data and WEP is on
   3778  *
   3779  * \sa
   3780  */
   3781 TI_STATUS TWD_SetSecuritySeqNum (TI_HANDLE hTWD, TI_UINT8 securitySeqNumLsByte);
   3782 /** @ingroup BSS
   3783  * \brief Update DTIM & TBTT
   3784  *
   3785  * \param  hTWD         	- TWD module object handle
   3786  * \param  uDtimPeriod     	- DTIM period in number of beacons
   3787  * \param  uBeaconInterval 	- Beacon perios in TUs (1024 msec)
   3788  * \return void
   3789  *
   3790  * \par Description
   3791  * Update DTIM and Beacon periods for scan timeout calculations
   3792  *
   3793  * \sa
   3794  */
   3795 void TWD_UpdateDtimTbtt (TI_HANDLE hTWD, TI_UINT8 uDtimPeriod, TI_UINT16 uBeaconInterval);
   3796 
   3797 /*---------*/
   3798 /* Command */
   3799 /*---------*/
   3800 
   3801 
   3802 /** @ingroup Measurement
   3803  * \brief  Set Split scan time out
   3804  *
   3805  * \param hTWD 			- TWD module object handle
   3806  * \param  uTimeOut   	- Scan Time Out
   3807  * \return TI_OK on success or TI_NOK on failure
   3808  *
   3809  * \par Description
   3810  * Set Triggered scan time out per channel
   3811  *
   3812  * \sa
   3813  */
   3814 TI_STATUS TWD_CmdSetSplitScanTimeOut (TI_HANDLE hTWD, TI_UINT32 uTimeOut);
   3815 /** @ingroup BSS
   3816  * \brief  Join BSS
   3817  *
   3818  * \param hTWD 				- TWD module object handle
   3819  * \param  pJoinBssParams   - Pointer to Join BSS Input parameters structure
   3820  * \return TI_OK on success or TI_NOK on failure
   3821  *
   3822  * \par Description
   3823  *
   3824  * \sa
   3825  */
   3826 TI_STATUS TWD_CmdJoinBss (TI_HANDLE hTWD, TJoinBss *pJoinBssParams);
   3827 /** @ingroup Control
   3828  * \brief  Command Template
   3829  *
   3830  * \param hTWD 				- TWD module object handle
   3831  * \param  pTemplateParams  - Pointer to Input Template Parameters Structure
   3832  * \param  fCb  			- Pointer to Command Callback Function
   3833  * \param  hCb  			- Handle to Command Callback Function Obj. Parameters
   3834  * \return TI_OK on success or TI_NOK on failure
   3835  *
   3836  * \par Description
   3837  * Sets a template to the FW
   3838  *
   3839  * \sa
   3840  */
   3841 /* 6.1.08 - for future WHA measurement command */
   3842 TI_STATUS TWD_CmdTemplate (TI_HANDLE hTWD, TSetTemplate *pTemplateParams, void *fCb, TI_HANDLE hCb);
   3843 /** @ingroup Data_Path
   3844  * \brief  Enable Tx path
   3845  *
   3846  * \param  hTWD     	- TWD module object handle
   3847  * \param  channel     	- Channel Number
   3848  * \return TI_OK on success or TI_NOK on failure
   3849  *
   3850  * \par Description
   3851  * Enable tx path on the hardware
   3852  *
   3853  * \sa
   3854  */
   3855 TI_STATUS TWD_CmdEnableTx (TI_HANDLE hTWD, TI_UINT8 channel);
   3856 /** @ingroup Data_Path
   3857  * \brief  Disable Tx path
   3858  *
   3859  * \param  hTWD     	- TWD module object handle
   3860  * \return TI_OK on success or TI_NOK on failure
   3861  *
   3862  * \par Description
   3863  *
   3864  * \sa
   3865  */
   3866 TI_STATUS TWD_CmdDisableTx (TI_HANDLE hTWD);
   3867 /** @ingroup Measurement
   3868  * \brief  Command Noise Histogram
   3869  *
   3870  * \param  hTWD     		- TWD module object handle
   3871  * \param  pNoiseHistParams - Pointer Input Noise Histogram Parameters:
   3872  * 							  holds Start/Stop Noise Histogram Measure Indication,
   3873  * 							  Sample Interval & Sample Ranges
   3874  * \return TI_OK on success or TI_NOK on failure
   3875  *
   3876  * \par Description
   3877  * Send a Start/Stop Noise Histogram Measure Command to the FW with measure parameters
   3878  *
   3879  * \sa	TNoiseHistogram
   3880  */
   3881 TI_STATUS TWD_CmdNoiseHistogram (TI_HANDLE hTWD, TNoiseHistogram *pNoiseHistParams);
   3882 
   3883 /** @ingroup Radio
   3884  * \brief  Command Switch Channel
   3885  *
   3886  * \param  hTWD    				- TWD module object handle
   3887  * \param  pSwitchChannelCmd    - Pointer to Switch Channel Parameters Structure
   3888  * \return TI_OK on success or TI_NOK on failure
   3889  *
   3890  * \par Description
   3891  *
   3892  * \sa TSwitchChannelParams
   3893  */
   3894 TI_STATUS TWD_CmdSwitchChannel (TI_HANDLE hTWD, TSwitchChannelParams *pSwitchChannelCmd);
   3895 /** @ingroup Radio
   3896  * \brief  Command Switch Channel Cancel
   3897  *
   3898  * \param  hTWD    		- TWD module object handle
   3899  * \param  channel    	- Channek Number
   3900  * \return TI_OK on success or TI_NOK on failure
   3901  *
   3902  * \par Description
   3903  *
   3904  * \sa
   3905  */
   3906 TI_STATUS TWD_CmdSwitchChannelCancel (TI_HANDLE hTWD, TI_UINT8 channel);
   3907 /** @ingroup Control
   3908  * \brief  FW Disconnect
   3909  *
   3910  * \param  hTWD    	- TWD module object handle
   3911  * \return TI_OK on success or TI_NOK on failure
   3912  *
   3913  * \par Description
   3914  *
   3915  * \sa
   3916  */
   3917 TI_STATUS TWD_CmdFwDisconnect (TI_HANDLE hTWD, DisconnectType_e uDisconType, TI_UINT16 uDisconReason);
   3918 /** @ingroup Measurement
   3919  * \brief  Start Measurement Command
   3920  *
   3921  * \param  hTWD    				- TWD module object handle
   3922  * \param  uDisconReason		- 2 bytes of disconnect reason to be use in deauth/disassoc frmaes
   3923  * \param  uDisconType    		- Immediate (dont send frames) or send Deauth or send Disassoc frmae
   3924  * \return TI_OK on success or TI_NOK on failure
   3925  *
   3926  * \par Description
   3927  * send Command for start measurement to FW
   3928  *
   3929  * \sa TMeasurementParams
   3930  */
   3931 TI_STATUS TWD_CmdMeasurement (TI_HANDLE hTWD,
   3932 							  TMeasurementParams *pMeasurementParams,
   3933 							  void *fCommandResponseCb,
   3934 							  TI_HANDLE hCb);
   3935 /** @ingroup Measurement
   3936  * \brief  Stop Measurement Command
   3937  *
   3938  * \param  hTWD    	- TWD module object handle
   3939  * \param  fCb  	- Pointer to Callback Function
   3940  * \param  hCb    	- Handle to Callback Function Object Parameters
   3941  * \return TI_OK on success or TI_NOK on failure
   3942  *
   3943  * \par Description
   3944  * send Command for stop measurement to FW
   3945  *
   3946  * \sa
   3947  */
   3948 TI_STATUS TWD_CmdMeasurementStop (TI_HANDLE hTWD, void* fCb, TI_HANDLE hCb);
   3949 /** @ingroup UnKnown
   3950  * \brief  AP Discovery
   3951  *
   3952  * \param  hTWD    				- TWD module object handle
   3953  * \param  pApDiscoveryParams  	- Pointer to Input AP Discovery Parameters Structure
   3954  * \return TI_OK on success or TI_NOK on failure
   3955  *
   3956  * \par Description
   3957  *
   3958  * \sa
   3959  */
   3960 TI_STATUS TWD_CmdApDiscovery (TI_HANDLE hTWD, TApDiscoveryParams *pApDiscoveryParams);
   3961 /** @ingroup UnKnown
   3962  * \brief	AP Discovery Stop
   3963  *
   3964  * \param  hTWD    				- TWD module object handle
   3965  * \return TI_OK on success or TI_NOK on failure
   3966  *
   3967  * \par Description
   3968  *
   3969  * \sa
   3970  */
   3971 TI_STATUS TWD_CmdApDiscoveryStop (TI_HANDLE hTWD);
   3972 
   3973 /** @ingroup Control
   3974  * \brief	Helth Check
   3975  *
   3976  * \param  hTWD    			- TWD module object handle
   3977  * \return TI_OK on success or TI_NOK on failure
   3978  *
   3979  * \par Description
   3980  * Trigger the FW health test command and wait for results
   3981  *
   3982  * \sa
   3983  */
   3984 TI_STATUS TWD_CmdHealthCheck (TI_HANDLE hTWD);
   3985 /** @ingroup UnKnown
   3986  * \brief  AP Discovery
   3987  *
   3988  * \param  hTWD    		- TWD module object handle
   3989  * \param  staState  	- stat of the station (CONNECTED)
   3990  * \return TI_OK on success or TI_NOK on failure
   3991  *
   3992  * \par Description
   3993  *
   3994  * \sa
   3995  */
   3996 TI_STATUS TWD_CmdSetStaState (TI_HANDLE hTWD, TI_UINT8 staState, void *fCb, TI_HANDLE hCb);
   3997 
   3998 /*-----------*/
   3999 /* Configure */
   4000 /*-----------*/
   4001 
   4002 /** @ingroup UnKnown
   4003  * \brief  Configure ARP table
   4004  *
   4005  * \param hTWD 			- TWD module object handle
   4006  * \param  tIpAddr   	- IP Address Input Buffer
   4007  * \param  bEnabled   	- Indicates if ARP filtering is Enabled (1) or Disabled (0)
   4008  * \param  eIpVer   	- IP Version
   4009  * \return TI_OK on success or TI_NOK on failure
   4010  *
   4011  * \par Description
   4012  * Configure ARP IP Address table
   4013  *
   4014  * \sa
   4015  */
   4016 TI_STATUS TWD_CfgArpIpAddrTable (TI_HANDLE hTWD,
   4017 								 TIpAddr tIpAddr,
   4018 								 EArpFilterType filterType,
   4019 								 EIpVer eIpVer);
   4020 
   4021 TI_STATUS TWD_CfgArpIpFilter    (TI_HANDLE hTWD,
   4022                                  TIpAddr tIpAddr);
   4023 
   4024 /** @ingroup BSS
   4025  * \brief	Configure Group Address Table
   4026  *
   4027  * \param  hTWD    			- TWD module object handle
   4028  * \param  uNumGroupAddrs  	- Number of Group Address
   4029  * \param  pGroupAddr   	- Pointer to Input Group Address Table
   4030  * \param  bEnabled    		- Indicates if MAC Address Filter is Enabled
   4031  * \return TI_OK on success or TI_NOK on failure
   4032  *
   4033  * \par Description
   4034  *
   4035  * \sa TWD_WriteMib
   4036  */
   4037 TI_STATUS TWD_CfgGroupAddressTable (TI_HANDLE hTWD,
   4038 									TI_UINT8 uNumGroupAddrs,
   4039 									TMacAddr *pGroupAddr,
   4040 									TI_BOOL bEnabled);
   4041 /** @ingroup Data_Path
   4042  * \brief  Configure RX Filters
   4043  *
   4044  * \param hTWD 				- TWD module object handle
   4045  * \param  uRxConfigOption  - RX Configuration Option
   4046  * \param  uRxFilterOption 	- RX Filter Option
   4047  * \return TI_OK on success or TI_NOK on failure
   4048  *
   4049  * \par Description
   4050  *
   4051  * \sa	TWD_WriteMib
   4052  */
   4053 TI_STATUS TWD_CfgRx (TI_HANDLE hTWD, TI_UINT32 uRxConfigOption, TI_UINT32 uRxFilterOption);
   4054 /** @ingroup UnKnown
   4055  * \brief  Configure Packet Detection Threshold
   4056  *
   4057  * \param hTWD 			- TWD module object handle
   4058  * \param  threshold 	- Threshold Value
   4059  * \return TI_OK on success or TI_NOK on failure
   4060  *
   4061  * \par Description
   4062  *
   4063  * \sa ERate
   4064  */
   4065 TI_STATUS TWD_CfgPacketDetectionThreshold (TI_HANDLE hTWD, TI_UINT32 threshold);
   4066 /** @ingroup Radio
   4067  * \brief  Configure Slot Time
   4068  *
   4069  * \param hTWD 				- TWD module object handle
   4070  * \param  eSlotTimeVal 	- Slot Time Value
   4071  * \return TI_OK on success or TI_NOK on failure
   4072  *
   4073  * \par Description
   4074  *
   4075  * \sa
   4076  */
   4077 TI_STATUS TWD_CfgSlotTime (TI_HANDLE hTWD, ESlotTime eSlotTimeVal);
   4078 /** @ingroup Radio
   4079  * \brief  Configure Preamble
   4080  *
   4081  * \param hTWD 			- TWD module object handle
   4082  * \param  ePreamble 	- Preamble Value
   4083  * \return TI_OK on success or TI_NOK on failure
   4084  *
   4085  * \par Description
   4086  *
   4087  * \sa
   4088  */
   4089 TI_STATUS TWD_CfgPreamble (TI_HANDLE hTWD, EPreamble ePreamble);
   4090 /** @ingroup Power_Management
   4091  * \brief  Configure Beacon Filter State
   4092  *
   4093  * \param  hTWD     				- TWD module object handle
   4094  * \param  uBeaconFilteringStatus   - Beacon Filtering Status. Indicates whether the filter is enabled:
   4095  * 									  1 - enabled, 0 - disabled
   4096  * \param  uNumOfBeaconsToBuffer 	- Determines the number of beacons without the unicast TIM bit set,
   4097  * 									  that the firmware buffers before signaling the host about ready frames.
   4098  *									  When thi snumber is set to 0 and the filter is enabled, beacons without
   4099  *									  the unicast TIM bit set are dropped.
   4100  * \return TI_OK on success or TI_NOK on failure
   4101  *
   4102  * \par Description
   4103  * Configure Beacon Filter State to the FW
   4104  *
   4105  * \sa
   4106  */
   4107 TI_STATUS TWD_CfgBeaconFilterOpt (TI_HANDLE hTWD, TI_UINT8 uBeaconFilteringStatus, TI_UINT8 uNumOfBeaconsToBuffer);
   4108 /** @ingroup Power_Management
   4109  * \brief  Configure Beacon Filter Table
   4110  *
   4111  * \param  hTWD     	- TWD module object handle
   4112  * \param  uNumOfIe   	- The number of IE's in the table
   4113  * \param  pIeTable 	- Pointer to Input IE Table
   4114  * \param  uIeTableSize - Size of Input IE Table
   4115  * \return TI_OK on success or TI_NOK on failure
   4116  *
   4117  * \par Description
   4118  * Configure Beacon Filter Table to the FW
   4119  *
   4120  * \sa
   4121  */
   4122 TI_STATUS TWD_CfgBeaconFilterTable (TI_HANDLE hTWD, TI_UINT8 uNumOfIe, TI_UINT8 *pIeTable, TI_UINT8 uIeTableSize);
   4123 /** @ingroup Power_Management
   4124  * \brief  Configure Wake Up Condition
   4125  *
   4126  * \param  hTWD     		- TWD module object handle
   4127  * \param  pPowerMgmtConfig	- Pointer to Input Power Management Configuration Parameters
   4128  * \return TI_OK on success or TI_NOK on failure
   4129  *
   4130  * \par Description
   4131  * Configure Power Manager's Wake Up Condition
   4132  *
   4133  * \sa
   4134  */
   4135 TI_STATUS TWD_CfgWakeUpCondition (TI_HANDLE hTWD, TPowerMgmtConfig *pPowerMgmtConfig);
   4136 /** @ingroup UnKnown
   4137  * \brief  Configure Beacon Broadcast Options
   4138  *
   4139  * \param  hTWD     		- TWD module object handle
   4140  * \param  pPowerMgmtConfig	- Pointer to Input Power Management Configuration Parameters Structure
   4141  * 							  The Following Field should be filled:
   4142  * 							  pPowerMgmtConfig->BcnBrcOptions.BeaconRxTimeout
   4143  * 							  pPowerMgmtConfig->BcnBrcOptions.BroadcastRxTimeout
   4144  * 							  pPowerMgmtConfig->BcnBrcOptions.RxBroadcastInPs - if set, enables receive of broadcast packets in Power-Save mode
   4145  * 							  pPowerMgmtConfig->ConsecutivePsPollDeliveryFailureThreshold - No answer after Ps-Poll work-around
   4146  * \return TI_OK on success or TI_NOK on failure
   4147  *
   4148  * \par Description
   4149  * Configure Power Manager's Beacon Broadcast Options:
   4150  * Beacon RX time Out, Broadcast RX Timeout, RX Broadcast In Power Save,
   4151  * Consecutive Power Save Poll Delivery Failure Threshold
   4152  *
   4153  *
   4154  * \sa TPowerMgmtConfig, TBcnBrcOptions
   4155  */
   4156 TI_STATUS TWD_CfgBcnBrcOptions (TI_HANDLE hTWD, TPowerMgmtConfig *pPowerMgmtConfig);
   4157 
   4158 /** @ingroup BSS
   4159  * \brief  Configure Max TX Retry
   4160  *
   4161  * \param  hTWD    				- TWD module object handle
   4162  * \param  pRoamingTriggerCmd   - Pointer to Input Configuration Parameters Structure
   4163  * 							  	  The Following Field should be filled:
   4164  * 								  pRoamingTriggerCmd->maxTxRetry
   4165  * \return TI_OK on success or TI_NOK on failure
   4166  *
   4167  * \par Description
   4168  * Configure the Max Tx Retry parameters
   4169  *
   4170  * \sa
   4171  */
   4172 TI_STATUS TWD_CfgMaxTxRetry (TI_HANDLE hTWD, TRroamingTriggerParams *pRoamingTriggerCmd);
   4173 /** @ingroup BSS
   4174  * \brief  Configure Connection Monitoring
   4175  *
   4176  * \param  hTWD    				- TWD module object handle
   4177  * \param  pRoamingTriggerCmd   - Pointer to Input Configuration Parameters Structure
   4178  * 							  	  The Following Field should be filled:
   4179  * 								  pRoamingTriggerCmd->BssLossTimeout
   4180  * 								  pRoamingTriggerCmd->TsfMissThreshold
   4181  * \return TI_OK on success or TI_NOK on failure
   4182  *
   4183  * \par Description
   4184  * Configure the Bss Lost Timeout & TSF miss threshold Parameters
   4185  *
   4186  * \sa
   4187  */
   4188 TI_STATUS TWD_CfgConnMonitParams (TI_HANDLE hTWD, TRroamingTriggerParams *pRoamingTriggerCmd);
   4189 /** @ingroup Power_Management
   4190  * \brief	Configure Sleep Auth
   4191  *
   4192  * \param  hTWD    			- TWD module object handle
   4193  * \param  eMinPowerPolicy  - Minimum Power Policy Type
   4194  * \return TI_OK on success or TI_NOK on failure
   4195  *
   4196  * \par Description
   4197  * Configure the minimum power policy to the FW
   4198  *
   4199  * \sa EPowerPolicy
   4200  */
   4201 TI_STATUS TWD_CfgSleepAuth (TI_HANDLE hTWD, EPowerPolicy eMinPowerPolicy);
   4202 /** @ingroup Control
   4203  * \brief	Configure MAC Clock
   4204  *
   4205  * \param  hTWD    		- TWD module object handle
   4206  * \param  uMacClock    - MAC Clock value
   4207  * \return TI_OK on success or TI_NOK on failure
   4208  *
   4209  * \par Description
   4210  *
   4211  * \sa
   4212  */
   4213 TI_STATUS TWD_CfgMacClock (TI_HANDLE hTWD, TI_UINT32 uMacClock);
   4214 /** @ingroup Control
   4215  * \brief	Configure ARM Clock
   4216  *
   4217  * \param  hTWD    		- TWD module object handle
   4218  * \param  uArmClock    - ARM Clock value
   4219  * \return TI_OK on success or TI_NOK on failure
   4220  *
   4221  * \par Description
   4222  *
   4223  * \sa
   4224  */
   4225 TI_STATUS TWD_CfgArmClock (TI_HANDLE hTWD, TI_UINT32 uArmClock);
   4226 /** @ingroup Data_Path
   4227  * \brief	Configure RX Data Filter
   4228  *
   4229  * \param  hTWD    				- TWD module object handle
   4230  * \param  index    			- Index of the Rx Data filter
   4231  * \param  command    			- Command: Add/remove the filter
   4232  * \param  eAction    			- Action to take when packets match the pattern
   4233  * \param  uNumFieldPatterns   	- Number of field patterns in the filter
   4234  * \param  uLenFieldPatterns    - Length of the field pattern series
   4235  * \param  pFieldPatterns    	- Series of field patterns
   4236  * \return TI_OK on success or TI_NOK on failure
   4237  *
   4238  * \par Description
   4239  * Add/remove Rx Data filter information element
   4240  *
   4241  * \sa
   4242  */
   4243 TI_STATUS TWD_CfgRxDataFilter (TI_HANDLE hTWD,
   4244 							   TI_UINT8 index,
   4245 							   TI_UINT8 command,
   4246 							   filter_e eAction,
   4247 							   TI_UINT8 uNumFieldPatterns,
   4248 							   TI_UINT8 uLenFieldPatterns,
   4249 							   TI_UINT8 *pFieldPatterns);
   4250 /** @ingroup Data_Path
   4251  * \brief	Configure Enable RX Data Filter
   4252  *
   4253  * \param  hTWD    			- TWD module object handle
   4254  * \param  bEnabled      	- Indicates if Rx data filtering is enabled or Disabled
   4255  * 							  (0: data filtering disabled, Otherwise: enabled)
   4256  * \param  eDefaultAction   - The default action taken on non-matching packets
   4257  * \return TI_OK on success or TI_NOK on failure
   4258  *
   4259  * \par Description
   4260  * Configure Enable/Disable RX Data Filter, and which default action to perform if it is enabled
   4261  *
   4262  * \sa
   4263  */
   4264 TI_STATUS TWD_CfgEnableRxDataFilter (TI_HANDLE hTWD, TI_BOOL bEnabled, filter_e eDefaultAction);
   4265 /** @ingroup BSS
   4266  * \brief	Configure RRSSI/SNR Trigger parameters
   4267  *
   4268  * \param  hTWD    			- TWD module object handle
   4269  * \param  pRssiSnrTrigger  - Pointer to RRSSI/SNR Input parameter Structure
   4270  * \return TI_OK on success or TI_NOK on failure
   4271  *
   4272  * \par Description
   4273  *
   4274  * \sa
   4275  */
   4276 TI_STATUS TWD_CfgRssiSnrTrigger (TI_HANDLE hTWD, RssiSnrTriggerCfg_t* pRssiSnrTrigger);
   4277 /** @ingroup QoS
   4278  * \brief	Configure AC parameters
   4279  *
   4280  * \param  hTWD    			- TWD module object handle
   4281  * \param  pAcQosParams  	- Pointer to Input AC Quality Of Service Parameters Structure
   4282  * 								Fields that should be filled:
   4283  * 								pAcQosParams->ac
   4284  * 								pAcQosParams->aifsn
   4285  * 								pAcQosParams->cwMax
   4286  * 								pAcQosParams->cwMin
   4287  * 								pAcQosParams->txopLimit
   4288  * \param  fCb      		- Pointer to Command CB Function
   4289  * \param  hCb      		- Handle to Command CB Function Obj Parameters
   4290  * \return TI_OK on success or TI_NOK on failure
   4291  *
   4292  * \par Description
   4293  *
   4294  * \sa
   4295  */
   4296 TI_STATUS TWD_CfgAcParams (TI_HANDLE hTWD, TAcQosParams *pAcQosParams, void *fCb, TI_HANDLE hCb);
   4297 /** @ingroup QoS
   4298  * \brief	Configure Power Save RX Streaming
   4299  *
   4300  * \param  hTWD    			- TWD module object handle
   4301  * \param  pPsRxStreaming  	- Pointer to Input Power Save RX Straeming Parameters Structure
   4302  * 								Fields that should be filled:
   4303  * 								pPsRxStreaming->uTid
   4304  * 								pPsRxStreaming->bEnabled
   4305  * 								pPsRxStreaming->uStreamPeriod
   4306  * 								pPsRxStreaming->uTxTimeout
   4307  * \param  fCb      		- Pointer to Command CB Function
   4308  * \param  hCb      		- Handle to Command CB Function Obj Parameters
   4309  * \return TI_OK on success or TI_NOK on failure
   4310  *
   4311  * \par Description
   4312  *
   4313  * \sa TPsRxStreaming
   4314  */
   4315 TI_STATUS TWD_CfgPsRxStreaming (TI_HANDLE hTWD, TPsRxStreaming *pPsRxStreaming, void *fCb, TI_HANDLE hCb);
   4316 /** @ingroup Power_Management
   4317  * \brief	Configure BET
   4318  *
   4319  * \param  hTWD    				- TWD module object handle
   4320  * \param  Enable    			- 0: disable BET, Otherwirs: Enable BET
   4321  * \param  MaximumConsecutiveET - Max number of consecutive beacons that may be early terminated
   4322  * \return TI_OK on success or TI_NOK on failure
   4323  *
   4324  * \par Description
   4325  *
   4326  * \sa
   4327  */
   4328 TI_STATUS TWD_CfgBet (TI_HANDLE hTWD, TI_UINT8 Enable, TI_UINT8 MaximumConsecutiveET);
   4329 /** @ingroup UnKnown
   4330  * \brief  Configure Keep Alive
   4331  *
   4332  * \param hTWD 				- TWD module object handle
   4333  * \param  pKeepAliveParams - Pointer to Keep Alive parameters structure
   4334  * \return TI_OK on success or TI_NOK on failure
   4335  *
   4336  * \par Description
   4337  * Configures the keep-alive paramters
   4338  *
   4339  * \sa
   4340  */
   4341 TI_STATUS TWD_CfgKeepAlive (TI_HANDLE hTWD, TKeepAliveParams *pKeepAliveParams);
   4342 /** @ingroup Power_Management
   4343  * \brief  Configure Keep Alive Enable/Disable flag
   4344  *
   4345  * \param hTWD 			- TWD module object handle
   4346  * \param  enaDisFlag  	- Indicates whether to Enable (TI_TRUE) or Disable Keep Alive
   4347  * \return TI_OK on success or TI_NOK on failure
   4348  *
   4349  * \par Description
   4350  *
   4351  * \sa
   4352  */
   4353 TI_STATUS TWD_CfgKeepAliveEnaDis (TI_HANDLE hTWD, TI_UINT8 enaDisFlag);
   4354 /** @ingroup Data_Path
   4355  * \brief	Configure Set BA Initiator
   4356  *
   4357  * \param  hTWD    				- TWD module object handle
   4358  * \param  uTid 				- TID number
   4359  * \param  uState 				- Policy : Enable / Disable
   4360  * \param  tRa 					- Mac address of: SA as receiver / RA as initiator
   4361  * \param  uWinSize 			- windows size in number of packet
   4362  * \param  uInactivityTimeout 	- as initiator inactivity timeout in time units(TU) of 1024us / as receiver reserved
   4363  * \return TI_OK on success or TI_NOK on failure
   4364  *
   4365  * \par Description
   4366  * configure BA session initiator parameters setting in the FW
   4367  * called after join in order to init the parameters for negotiating BA sessions as initiator.
   4368  * Parameters initialized: RA, TID, WinSize, Inactivity Timeout and state = Enable/Disable.
   4369  * In case the host sends a broadcast address as RA the FW is allowed to Set or Deleted BA sessions
   4370  * to any receiver for that TID.
   4371  * In case of disassociate the FW allowed to establish BA session just after get that command.
   4372  * That command will not need any respond from the FW. In case DELBA send to STA or from the
   4373  * STA as initiator the FW doesn't send event to the host
   4374  *
   4375  * \sa
   4376  */
   4377 TI_STATUS TWD_CfgSetBaInitiator (TI_HANDLE hTWD,
   4378 								 TI_UINT8 uTid,
   4379 								 TI_UINT8 uState,
   4380 								 TMacAddr tRa,
   4381 								 TI_UINT16 uWinSize,
   4382 								 TI_UINT16 uInactivityTimeout);
   4383 /** @ingroup Data_Path
   4384  * \brief	Configure Set BA Receiver
   4385  *
   4386  * \param  hTWD    				- TWD module object handle
   4387  * \param  uTid 				- TID number
   4388  * \param  uState 				- Policy : Enable / Disable
   4389  * \param  tRa 					- Mac address of: SA as receiver / RA as initiator
   4390  * \param  uWinSize 			- windows size in number of packet
   4391  * \return TI_OK on success or TI_NOK on failure
   4392  *
   4393  * \par Description
   4394  * configure BA session receiver parameters setting in the FW
   4395  * called after join in order to init the parameters for incoming BA session, as a responder.
   4396  * Parameters initialized: SA, TID, winSize and state = Enable/Disable.
   4397  * In case the host sends a broadcast address as SA the FW is allowed to Set/Deleted BA sessions
   4398  * to any sender for that TID.
   4399  * In case of disassociate the FW allowed to establish BA session just after get that command.
   4400  * The events of that command will respond via the RX path from the FW: ADDBA, DELBA, BAR packets.
   4401  *
   4402  * \sa
   4403  */
   4404 TI_STATUS TWD_CfgSetBaReceiver (TI_HANDLE hTWD,
   4405 								TI_UINT8 uTid,
   4406 								TI_UINT8 uState,
   4407 								TMacAddr tRa,
   4408 								TI_UINT16 uWinSize);
   4409 
   4410 /** @ingroup Data_Path
   4411  * \brief	Close all BA receiver sessions
   4412  *
   4413  * \param  hTWD    				- TWD module object handle
   4414  * \return None
   4415  *
   4416  * \par Description
   4417  * Close all BA receiver sessions and pass all packets in the TID queue to upper layer.
   4418  *
   4419  * \sa
   4420  */
   4421 void TWD_CloseAllBaSessions(TI_HANDLE hTWD);
   4422 
   4423 /** @ingroup BSS
   4424  * \brief	Set FW HT Capabilities
   4425  *
   4426  * \param  hTWD    				- TWD module object handle
   4427  * \param  pHtCapabilitiesIe 	- Pointer to string of HT capability IE unparsed
   4428  * \param  bAllowHtOperation 	- TI_TRUE: HT operation allowed, Otherwise: HT operation NOT allowed
   4429  * \return TI_OK on success or TI_NOK on failure
   4430  *
   4431  * \par Description
   4432  * Parse HT capability IE and set the current AP HT Capabilities to the FW
   4433  *
   4434  * \sa
   4435  */
   4436 TI_STATUS TWD_CfgSetFwHtCapabilities (TI_HANDLE hTWD,
   4437 									  Tdot11HtCapabilitiesUnparse *pHtCapabilitiesIe,
   4438 									  TI_BOOL bAllowHtOperation);
   4439 /** @ingroup BSS
   4440  * \brief Set FW HT Information
   4441  *
   4442  * \param  hTWD    				- TWD module object handle
   4443  * \param  pHtInformationIe 	- Pointer to string of HT information IE unparsed
   4444  * \return TI_OK on success or TI_NOK on failure
   4445  *
   4446  * \par Description
   4447  * Parse HT Information IE and set the current AP HT Information to the FW
   4448  *
   4449  * \sa
   4450  */
   4451 TI_STATUS TWD_CfgSetFwHtInformation (TI_HANDLE hTWD, Tdot11HtInformationUnparse *pHtInformationIe);
   4452 
   4453 
   4454 /** @ingroup UnKnown
   4455  * \brief Enable/Disabel burst mode
   4456  *
   4457  * \param  hTWD    				- TWD module object handle
   4458  * \param  bEnabled 	        - burst mode: Enable/Disable
   4459  * \return TI_OK
   4460  *
   4461  * \par Description
   4462  *
   4463  * \sa
   4464  */
   4465 TI_STATUS TWD_CfgBurstMode (TI_HANDLE hTWD, TI_BOOL bEnabled);
   4466 
   4467 /*-------------*/
   4468 /* Interrogate */
   4469 /*-------------*/
   4470 
   4471 /** @ingroup UnKnown
   4472  * \brief  Interrogate Roamming Statistics
   4473  *
   4474  * \param  hTWD     	- TWD module object handle
   4475  * \param  fCb          - Pointer to Command CB Function
   4476  * \param  hCb          - Handle to Command CB Function Obj Parameters
   4477  * \param  pCb          - Pointer to read parameters
   4478  * \return TI_OK on success or TI_NOK on failure
   4479  *
   4480  * \par Description
   4481  * Interrogate ACX Roamming Statistics
   4482  *
   4483  * \sa
   4484  */
   4485 TI_STATUS TWD_ItrRoammingStatisitics (TI_HANDLE hTWD, void *fCb, TI_HANDLE hCb, void *pCb);
   4486 /** @ingroup UnKnown
   4487  * \brief  Configure/Interrogate RSSI
   4488  *
   4489  * \param  hTWD    	- TWD module object handle
   4490  * \param  fCb      - Pointer to Command CB Function
   4491  * \param  hCb      - Handle to Command CB Function Obj Parameters
   4492  * \param  pCb      - Pointer to read parameters
   4493  * \return TI_OK on success or TI_NOK on failure
   4494  *
   4495  * \par Description
   4496  * Configure/Interrogate StationId information element to/from FW
   4497  * This information element specifies the MAC Address assigned to the STATION or AP.
   4498  * The RSSI is Configed to default value which is the permanent MAC address which
   4499  * is stored in the adaptor's non-volatile memory.
   4500  *
   4501  * \sa
   4502  */
   4503 TI_STATUS TWD_ItrRSSI (TI_HANDLE hTWD, void *fCb, TI_HANDLE hCb, void *pCb);
   4504 /** @ingroup UnKnown
   4505  * \brief	Interrogate Memory Map
   4506  *
   4507  * \param  hTWD    	- TWD module object handle
   4508  * \param  pMap    	- Pointer to Output Memory Map
   4509  * \param  fCb    	- Pointer to Callback Function
   4510  * \param  hCb    	- Handle to Callback Function Parameters Object
   4511  * \return TI_OK on success or TI_NOK on failure
   4512  *
   4513  * \par Description
   4514  * Interrogate Memory Map from FW
   4515  *
   4516  * \sa MemoryMap_t
   4517  */TI_STATUS TWD_ItrMemoryMap (TI_HANDLE hTWD, MemoryMap_t *pMap, void *fCb, TI_HANDLE hCb);
   4518 /** @ingroup UnKnown
   4519  * \brief	Interrogate Statistics
   4520  *
   4521  * \param  hTWD    	- TWD module object handle
   4522  * \param  fCb      - Pointer to Command CB Function
   4523  * \param  hCb      - Handle to Command CB Function Obj Parameters
   4524  * \param  pCb      - Pointer to read parameters
   4525  * \return TI_OK on success or TI_NOK on failure
   4526  *
   4527  * \par Description
   4528  *
   4529  * \sa
   4530  */
   4531 TI_STATUS TWD_ItrStatistics (TI_HANDLE hTWD, void *fCb, TI_HANDLE hCb, void *pCb);
   4532 /** @ingroup Data_Path
   4533  * \brief	Interrogate Data Filter Statistics
   4534  *
   4535  * \param  hTWD    	- TWD module object handle
   4536  * \param  fCb      - Pointer to Command CB Function
   4537  * \param  hCb      - Handle to Command CB Function Obj Parameters
   4538  * \param  pCb      - Pointer to read parameters
   4539  * \return TI_OK on success or TI_NOK on failure
   4540  *
   4541  * \par Description
   4542  *
   4543  * \sa
   4544  */TI_STATUS TWD_ItrDataFilterStatistics (TI_HANDLE hTWD, void *fCb, TI_HANDLE hCb, void *pCb);
   4545 
   4546 /*
   4547  * --------------------------------------------------------------
   4548  *	TNETW-Driver  Tx  API  Functions
   4549  * --------------------------------------------------------------
   4550  */
   4551 
   4552 /** @ingroup Data_Path
   4553  * \brief  TWD TX Control Block Allocation
   4554  *
   4555  * \param  hTWD   	- TWD module object handle
   4556  * \return Pointer to Control Block Entry on success or NULL on failure
   4557  *
   4558  * \par Description
   4559  * Use this function for Allocate a Control-Block for the packet Tx parameters and descriptor
   4560  *
   4561  * \sa
   4562  */
   4563 TTxCtrlBlk *TWD_txCtrlBlk_Alloc (TI_HANDLE hTWD);
   4564 /** @ingroup Data_Path
   4565  * \brief  TWD TX Control Block Free
   4566  *
   4567  * \param  hTWD   			- TWD module object handle
   4568  * \param  pCurrentEntry   	- Pointer to TX Control Block Entry to Free
   4569  * \return void
   4570  *
   4571  * \par Description
   4572  * Use this function for Free a Control-Block of packet Tx parameters and descriptor
   4573  *
   4574  * \sa
   4575  */
   4576 void TWD_txCtrlBlk_Free (TI_HANDLE hTWD, TTxCtrlBlk *pCurrentEntry);
   4577 /** @ingroup Data_Path
   4578  * \brief  TWD TX Control Get Pointer
   4579  *
   4580  * \param  hTWD   	- TWD module object handle
   4581  * \param  descId  	- Id of TX Control Block Descriptor
   4582  * \return Pointer to Control Block Entry on success or NULL on failure
   4583  *
   4584  * \par Description
   4585  * Use this function for Get a Pointer to a Control-Block of packet Tx parameters and descriptor
   4586  *
   4587  * \sa
   4588  */
   4589 TTxCtrlBlk *TWD_txCtrlBlk_GetPointer (TI_HANDLE hTWD, TI_UINT8 descId);
   4590 
   4591 /** @ingroup Data_Path
   4592  * \brief  Allocate Resources for TX HW Queue
   4593  *
   4594  * \param  hTWD   			- TWD module object handle
   4595  * \param  pTxCtrlBlk  		- The Tx packet control block
   4596  * \return see - ETxHwQueStatus
   4597  *
   4598  * \par Description
   4599  * Allocates Resources (HW-blocks number required) for TX HW Queue
   4600  *
   4601  * \sa
   4602  */
   4603 ETxHwQueStatus TWD_txHwQueue_AllocResources (TI_HANDLE hTWD, TTxCtrlBlk *pTxCtrlBlk);
   4604 
   4605 /** @ingroup Data_Path
   4606  * \brief  TX Xfer Send Packet
   4607  *
   4608  * \param  hTWD   			- TWD module object handle
   4609  * \param  pPktCtrlBlk   	- Pointer to TX Control Block Entry to Free
   4610  * \return see ETxnStatus
   4611  *
   4612  * \par Description
   4613  * Send Packet via TX Xfer
   4614  *
   4615  * \sa
   4616  */
   4617 ETxnStatus TWD_txXfer_SendPacket (TI_HANDLE hTWD, TTxCtrlBlk *pPktCtrlBlk);
   4618 
   4619 /** @ingroup Data_Path
   4620  * \brief  Indicates that current packets burst stopped
   4621  *
   4622  * \param  hTWD   			- TWD module object handle
   4623  * \return void
   4624  *
   4625  * \par Description
   4626  * Indicates that current packets burst stopped, so the TxXfer will send its aggregated packets to FW.
   4627  *
   4628  * \sa
   4629  */
   4630 void TWD_txXfer_EndOfBurst (TI_HANDLE hTWD);
   4631 
   4632 /** @ingroup Control
   4633  * \brief  Watch Dog Expire Event
   4634  *
   4635  * \param  hTWD   			- TWD module object handle
   4636  * \return TI_OK on success or TI_NOK on failure
   4637  *
   4638  * \par Description
   4639  * This function handles the Event of Watch Dog Expire (FW stopped)
   4640  *
   4641  * \sa
   4642  */
   4643 ETxnStatus TWD_WdExpireEvent (TI_HANDLE hTWD);
   4644 /*
   4645  * --------------------------------------------------------------
   4646  *	BIT API Functions
   4647  * --------------------------------------------------------------
   4648  */
   4649 /** @ingroup Control
   4650  * \brief TWD Test Command Complete CB
   4651  *
   4652  * \param  Handle        	- handle to object
   4653  * \param  eStatus			- Status of Driver Test Performed
   4654  * \param  pTestCmdParams  	- Pointer to Output of Test Command Parameters
   4655  * \return void
   4656  *
   4657  * \par Description
   4658  * The function prototype for the BIT Test Command Complete CB
   4659  * Enables user to implement and use its own BIT Test Command Complete CB
   4660  * which will be called when Driver Test end
   4661  *
   4662  * \sa	TWDriverTest
   4663  */
   4664 typedef void (*TTestCmdCB)(TI_HANDLE Handle,
   4665 						   TI_STATUS eStatus,
   4666 						   TI_HANDLE pTestCmdParams);
   4667 /** @ingroup Control
   4668  * \brief TWD Test Command Complete CB
   4669  *
   4670  * \param  Handle        	- handle to object
   4671  * \param  eStatus			- Status of Driver Test Performed (Complete/Pending/Error)
   4672  * \param  pTestCmdParams  	- Pointer to Output of Test Command Parameters
   4673  * \return void
   4674  *
   4675  * \par Description
   4676  * The function implementation for the BIT Test Command Complete CB
   4677  *
   4678  * \sa
   4679  */
   4680 void TWDriverTestCB(TI_HANDLE Handle,
   4681 					TI_STATUS eStatus,
   4682 					TI_HANDLE pTestCmdParams);
   4683 /** @ingroup Control
   4684  * \brief TWD Driver Test
   4685  *
   4686  * \param  hTWD        		- handle to TWD object
   4687  * \param  eTestCmd			- Identifier of test Command to Perform
   4688  * \param  pTestCmdParams  	- Pointer to Input/Output Test Command Parameters
   4689  * \param  fCb  			- Test Command Complete CB
   4690  * \param  hCb	  			- Handle to Test Command Complete CB Parameters
   4691  * \return TI_OK on success or TI_NOK on failure
   4692  *
   4693  * \par Description
   4694  * The implementation of the BIT Test Command
   4695  *
   4696  * \sa
   4697  */
   4698 TI_STATUS TWDriverTest(TI_HANDLE hTWD,
   4699 					   TestCmdID_enum eTestCmd,
   4700 					   void* pTestCmdParams,
   4701 					   TTestCmdCB fCb,
   4702 					   TI_HANDLE hCb);
   4703 
   4704 
   4705 
   4706 /**
   4707  *  \brief TWD get FEM type
   4708  *  *
   4709  * \param  Handle        	- handle to object
   4710  * \return uint8
   4711  *
   4712  * \par Description
   4713  * The function return the Front end module that was read frm FW register *
   4714  * \sa
   4715  */
   4716 
   4717 TI_UINT8 TWD_GetFEMType (TI_HANDLE hTWD);
   4718 
   4719 
   4720 /**
   4721  *  \brief TWD end function of read radio state machine
   4722  *  *  *
   4723  * \param  Handle        	- handle to object
   4724  * \return void
   4725  *
   4726  * \par Description
   4727  * The function calling to HwInit call back function, after finish reading FEM registers *
   4728  * \sa
   4729  */
   4730 
   4731 void TWD_FinalizeFEMRead(TI_HANDLE hTWD);
   4732 void TWD_FinalizePolarityRead(TI_HANDLE hTWD);
   4733 
   4734 /** @ingroup Data_Path
   4735  * \brief  TWD_CfgBurstMode
   4736  *
   4737  * \param  hTWD   	- TWD module object handle
   4738  * \param  bEnabled  - is Burst mode enabled
   4739  * \return TI_OK
   4740  *
   4741  * \par Description
   4742  * Use this function to enable/disbale the burst mode
   4743  *
   4744  * \sa
   4745  */
   4746 TI_STATUS TWD_CfgBurstMode (TI_HANDLE hTWD, TI_BOOL bEnabled);
   4747 TI_STATUS TWD_SetRateMngDebug(TI_HANDLE hTWD, RateMangeParams_t *pRateMngParams);
   4748 TI_STATUS TWD_GetRateMngDebug(TI_HANDLE hTWD, RateMangeReadParams_t  *pParamInfo);
   4749 
   4750 #endif  /* TWDRIVER_H */
   4751