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