• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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