• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /****************************************************************************
2 **+-----------------------------------------------------------------------+**
3 **|                                                                       |**
4 **| Copyright(c) 1998 - 2008 Texas Instruments. All rights reserved.      |**
5 **| All rights reserved.                                                  |**
6 **|                                                                       |**
7 **| Redistribution and use in source and binary forms, with or without    |**
8 **| modification, are permitted provided that the following conditions    |**
9 **| are met:                                                              |**
10 **|                                                                       |**
11 **|  * Redistributions of source code must retain the above copyright     |**
12 **|    notice, this list of conditions and the following disclaimer.      |**
13 **|  * Redistributions in binary form must reproduce the above copyright  |**
14 **|    notice, this list of conditions and the following disclaimer in    |**
15 **|    the documentation and/or other materials provided with the         |**
16 **|    distribution.                                                      |**
17 **|  * Neither the name Texas Instruments nor the names of its            |**
18 **|    contributors may be used to endorse or promote products derived    |**
19 **|    from this software without specific prior written permission.      |**
20 **|                                                                       |**
21 **| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS   |**
22 **| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     |**
23 **| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |**
24 **| A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT  |**
25 **| OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |**
26 **| SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT      |**
27 **| LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |**
28 **| DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |**
29 **| THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT   |**
30 **| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |**
31 **| OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  |**
32 **|                                                                       |**
33 **+-----------------------------------------------------------------------+**
34 ****************************************************************************/
35 
36 /** \file public_infoele.h
37  *  \brief Contains information element defines/structures used by the FW and host.
38  *
39  */
40 
41 #ifndef PUBLIC_INFOELE_H
42 #define PUBLIC_INFOELE_H
43 
44 
45 #include "public_types.h"
46 #include "public_commands.h"
47 #include "public_radio.h"
48 
49 
50 typedef enum
51 {
52     ACX_WAKE_UP_CONDITIONS      = 0x0002,
53     ACX_MEM_CFG                 = 0x0003,
54     ACX_SLOT                    = 0x0004,
55     ACX_QUEUE_HEAD              = 0x0005, /* for MASTER mode only!!!*/
56     ACX_AC_CFG                  = 0x0007,
57     ACX_MEM_MAP                 = 0x0008,
58     ACX_AID                     = 0x000A,
59     ACX_RADIO_PARAM             = 0x000B, /* Not in use !!! */
60     ACX_CFG                     = 0x000C, /* Not in use !!!*/
61     ACX_FW_REV                  = 0x000D,
62     ACX_FCS_ERROR_CNT           = 0x000E, /* OBSOLETE (replaced by ACX_ERROR_CNT) !!!*/
63     ACX_MEDIUM_USAGE            = 0x000F,
64     ACX_RX_CFG                  = 0x0010,
65     ACX_TX_QUEUE_CFG            = 0x0011,
66     ACX_BSS_IN_PS               = 0x0012, /* for AP only (OBSOLETE???)	*/
67     ACX_STATISTICS              = 0x0013, /* Debug API*/
68     ACX_PWR_CONSUMPTION_STATISTICS  = 0x0014,
69     ACX_FEATURE_CFG             = 0x0015,
70     ACX_MISC_CFG                = 0x0017, /* Not in use !!!*/
71     ACX_TID_CFG                 = 0x001A,
72     ACX_CAL_ASSESSMENT          = 0x001E, /* OBSOLETE !!!*/
73     ACX_BEACON_FILTER_OPT       = 0x001F,
74     ACX_LOW_RSSI                = 0x0020,
75     ACX_NOISE_HIST              = 0x0021,
76     ACX_HDK_VERSION             = 0x0022, /* ???*/
77     ACX_PD_THRESHOLD            = 0x0023,
78     ACX_DATA_PATH_PARAMS        = 0x0024, /* WO*/
79 	ACX_DATA_PATH_RESP_PARAMS   = 0x0024, /* RO*/
80     ACX_CCA_THRESHOLD           = 0x0025,
81     ACX_EVENT_MBOX_MASK         = 0x0026,
82 #ifdef FW_RUNNING_AS_AP
83     ACX_DTIM_PERIOD             = 0x0027, /* for AP only !!!*/
84 #else
85     ACX_WR_TBTT_AND_DTIM        = 0x0027, /* STA only*/
86 #endif
87     ACX_ACI_OPTION_CFG          = 0x0029, /* OBSOLETE !!! (for 1251)*/
88     ACX_GPIO_CFG                = 0x002A, /* Not in use !!!*/
89     ACX_GPIO_SET                = 0x002B, /* Not in use !!!*/
90     ACX_PM_CFG                  = 0x002C, /* ??? (To Be Documented)*/
91     ACX_CONN_MONIT_PARAMS       = 0x002D,
92     ACX_AVERAGE_RSSI            = 0x002E, /* Not in use !!!*/
93     ACX_CONS_TX_FAILURE         = 0x002F,
94     ACX_BCN_DTIM_OPTIONS        = 0x0031,
95     ACX_SG_ENABLE               = 0x0032,
96     ACX_SG_CFG                  = 0x0033,
97     ACX_ANTENNA_DIVERSITY_CFG   = 0x0035, /* ??? (To Be Documented)*/
98 	ACX_LOW_SNR					= 0x0037, /* To Be Documented*/
99     ACX_BEACON_FILTER_TABLE     = 0x0038,
100     ACX_ARP_IP_FILTER           = 0x0039,
101     ACX_ROAMING_STATISTICS_TBL  = 0x003B,
102     ACX_RATE_POLICY             = 0x003D,
103     ACX_CTS_PROTECTION          = 0x003E,
104     ACX_SLEEP_AUTH              = 0x003F,
105 	ACX_PREAMBLE_TYPE			= 0x0040,
106     ACX_ERROR_CNT               = 0x0041,
107 	ACX_FW_GEN_FRAME_RATES      = 0x0042,
108 	ACX_IBSS_FILTER				= 0x0044,
109     ACX_SERVICE_PERIOD_TIMEOUT  = 0x0045,
110 	ACX_TSF_INFO                = 0x0046,
111     ACX_CONFIG_PS_WMM           = 0x0049,
112     ACX_ENABLE_RX_DATA_FILTER   = 0x004A,
113     ACX_SET_RX_DATA_FILTER      = 0x004B,
114     ACX_GET_DATA_FILTER_STATISTICS = 0x004C,
115 	ACX_POWER_LEVEL_TABLE       = 0x004D,
116     ACX_BET_ENABLE              = 0x0050,
117     DOT11_STATION_ID           =  0x1001,
118     DOT11_RX_MSDU_LIFE_TIME     = 0x1004,
119     DOT11_CUR_TX_PWR           =  0x100D,
120     DOT11_DEFAULT_KEY          =  0x1010,
121     DOT11_RX_DOT11_MODE        =  0x1012,
122     DOT11_RTS_THRESHOLD        =  0x1013,
123     DOT11_GROUP_ADDRESS_TBL    =  0x1014,
124 
125     MAX_DOT11_IE = DOT11_GROUP_ADDRESS_TBL,
126 
127     MAX_IE = 0xFFFF   /*force enumeration to 16bits*/
128 } InfoElement_enum;
129 
130 
131 #ifdef HOST_COMPILE
132 typedef uint16 InfoElement_e;
133 #else
134 typedef InfoElement_enum InfoElement_e;
135 #endif
136 
137 
138 typedef struct
139 {
140     InfoElement_e id;
141     uint16 length;
142     uint32 dataLoc; /*use this to point to for following variable-length data*/
143 } InfoElement_t;
144 
145 
146 typedef struct
147 {
148     uint16 id;
149     uint16 len;
150 } EleHdrStruct;
151 
152 
153 #ifdef HOST_COMPILE
154 #define INFO_ELE_HDR    EleHdrStruct    EleHdr;
155 #else
156 #define INFO_ELE_HDR
157 #endif
158 
159 /******************************************************************************
160 
161     Name:	ACX_WAKE_UP_CONDITIONS
162 	Type:	Configuration
163 	Access:	Write Only
164 	Length:	2
165 
166 ******************************************************************************/
167 typedef enum
168 {
169 	WAKE_UP_EVENT_BEACON_BITMAP		= 0x01, /* Wake on every Beacon*/
170 	WAKE_UP_EVENT_DTIM_BITMAP		= 0x02,	/* Wake on every DTIM*/
171 	WAKE_UP_EVENT_N_DTIM_BITMAP		= 0x04, /* Wake on every Nth DTIM (Listen interval)*/
172 	WAKE_UP_EVENT_N_BEACONS_BITMAP	= 0x08, /* Wake on every Nth Beacon (Nx Beacon)*/
173 	WAKE_UP_EVENT_BITS_MASK			= 0x0F
174 } WakeUpEventBitMask_e;
175 
176 typedef struct
177 {
178     INFO_ELE_HDR
179     uint8  wakeUpConditionBitmap;	/* The host can set one bit only. */
180 									/* WakeUpEventBitMask_e describes the Possible */
181 									/* Wakeup configuration bits*/
182 
183     uint8  listenInterval;			/* 0 for Beacon and Dtim, */
184 									/* xDtims (1-10) for Listen Interval and */
185 									/* xBeacons (1-255) for NxBeacon*/
186     uint8  padding[2];              /* alignment to 32bits boundry   */
187 }WakeUpCondition_t;
188 
189 /******************************************************************************
190 
191     Name:	ACX_MEM_CFG
192 	Type:	Configuration
193 	Access:	Write Only
194 	Length:	12
195 
196 ******************************************************************************/
197 
198 /* Host Bus/Memory Mode - The following table specifies the possible host bus modes and */
199 /* memory organizations that the Wilink should use during operation. */
200 typedef enum{
201     HOSTIF_PCI_MASTER_HOST_INDIRECT,
202     HOSTIF_PCI_MASTER_HOST_DIRECT,
203     HOSTIF_SLAVE,
204     HOSTIF_PKT_RING,
205     HOSTIF_DONTCARE = 0xFF
206 } HostIFConfig_enum;
207 
208 #ifdef HOST_COMPILE
209 typedef uint8 HostIFConfig_e;
210 #else
211 typedef HostIFConfig_enum HostIFConfig_e;
212 #endif
213 
214 typedef struct
215 {
216 	INFO_ELE_HDR
217     uint16  numStations;				/* specifies the number of STAs to be supported. */
218 										/* The FW uses this field to allocate memory */
219 										/* for STA context data such as security keys*/
220     uint16  reserved1;
221     uint8   rxMemblockNumber;			/* specifies the number of memory buffers that */
222 										/* is allocated to the Rx memory pool. The */
223 										/* actual number allocated may be less than*/
224 										/* this number if there are not enough memory */
225 										/* blocks left over for the Minimum Number of */
226 										/* Tx Blocks. Returns the actual number of RX */
227 										/* buffers allocated in the memory map*/
228     uint8   Reserved2;
229     uint8   numTxQueues;				/* specifies the number of descriptor queues */
230 										/* that are to be used for transmit operations. */
231 										/* Valid values are 1 to 16*/
232 
233     HostIFConfig_e hostifOptions;		/* specifies the memory configuration options */
234 										/* for the adaptor. The format of this field */
235 										/* is shown in HostIFConfig_enum.*/
236 
237     uint8   txMinimumMemblockNumber;	/* specifies the minimum number of blocks that */
238 										/* must be allocated to the TX pool. Follows */
239 										/* this limit even if the Number of Rx Memory */
240 										/* Blocks parameter is ignored.*/
241 
242     uint8   numSsidProfiles;			/* specifies the number of SSID profiles used */
243 										/* in the AP. Enables working with different */
244 										/* profiles for different stations.*/
245 
246     uint16  debugBufferSize;			/* This field specifies the number of words */
247 										/* allocated for each debug buffer if the */
248 										/* FW trace is enabled.*/
249 #ifndef HOST_COMPILE
250     uint8   variableData;				/* contents vary starting here - should be */
251     uint8   pedding[3];                                 /* aligned to 32 bits boundry*/
252 #endif
253 } ACXConfigMemory_t;
254 
255 typedef struct
256 {
257     uint8 numDescs;
258     uint8  Reserved;
259     uint8  Type;
260     uint8  Priority;
261     uint32 dmaAddress;
262 } ACXrxQueueConfig;
263 
264 typedef struct
265 {
266     uint8  numDescs;
267     uint8  reserved1[2];
268     uint8  attributes;   /* QPriority_e qPriority;*/
269 } ACXtxQueueConfig;
270 
271 #define QUEUE_CONFIG_MAX_TX_QUEUES	5
272 
273 typedef struct
274 {
275    ACXConfigMemory_t   memConfig;
276    ACXrxQueueConfig        RxQueueConfig;
277    ACXtxQueueConfig        TxQueueConfig[QUEUE_CONFIG_MAX_TX_QUEUES];
278 } ACXConfigMemoryStruct_t;
279 
280 
281 
282 /******************************************************************************
283 
284     Name:	ACX_SLOT
285 	Type:	Configuration
286 	Access:	Write Only
287 	Length:	8
288 
289 ******************************************************************************/
290 
291 typedef enum
292 {
293     SLOT_TIME_LONG = 0,		/* the WiLink uses long (20 us) slots*/
294     SLOT_TIME_SHORT = 1,	/* the WiLink uses short (9 us) slots*/
295     DEFAULT_SLOT_TIME = SLOT_TIME_SHORT,
296     MAX_SLOT_TIMES = 0xFF
297 } SlotTime_enum;
298 
299 #ifdef HOST_COMPILE
300 typedef uint8 SlotTime_e;
301 #else
302 typedef SlotTime_enum SlotTime_e;
303 #endif
304 
305 
306 typedef struct
307 {
308     INFO_ELE_HDR
309     uint8      woneIndex;	/* reserved*/
310 
311     SlotTime_e slotTime;	/* The slot size to be used. refer to SlotTime_enum.    */
312     uint8      reserved[6];
313 } ACXSlot_t;
314 
315 /******************************************************************************
316 
317     Name:	ACX_QUEUE_HEAD
318 	Type:	Configuration
319 	Access:	Read Only
320 	Length:	56
321 	Note:	for MASTER mode only!!!
322 
323 ******************************************************************************/
324 
325 typedef struct
326 {
327     uint32 addr;
328     uint8  priority;
329     uint8  padding[3];
330 } ACXoneQueueHead;
331 
332 #define NUM_ACCESS_CATEGORIES_QUEUES	5		/* This takes into account the */
333 												/* broadcast AC queue*/
334 typedef struct
335 {
336    INFO_ELE_HDR
337    uint32  *txMemBlkQ;
338    uint32  *rxMemBlkQ;
339    ACXoneQueueHead rxQueueHead;
340    ACXoneQueueHead txQueueHead[NUM_ACCESS_CATEGORIES_QUEUES];
341 } ACXQosQueueHead_t;
342 
343 
344 /******************************************************************************
345 
346     Name:	ACX_AC_CFG
347 	Type:	Configuration
348 	Access:	Write Only
349 	Length:	8
350 
351 ******************************************************************************/
352 typedef enum
353 {
354 	AC_BE = 0,			/* Best Effort/Legacy*/
355 	AC_BK = 1,			/* Background*/
356 	AC_VI = 2,			/* Video*/
357 	AC_VO = 3,			/* Voice*/
358 	AC_BCAST = 4,		/* Broadcast dummy access category*/
359 	NUM_ACCESS_CATEGORIES = 4
360 } AccessCategory_enum;
361 
362 #define AC_FAST_TEMPLATE				4		/* Access Category for SG2.0 Fast CTS Tx */
363 #define AC_REQUEST						0xfe	/* Special access category type for */
364 												/* requests*/
365 #define AC_INVALID						0xff	/* Empty Access category in scheduler */
366 												/* Access Category DB*/
367 
368 #define AC_ANY_TID						0xFF	/* Any TID/AC for the Split Scan */
369 
370 /* following are defult values for the IE fields*/
371 #define CWMIN_BK  15
372 #define CWMIN_BE  15
373 #define CWMIN_VI  7
374 #define CWMIN_VO  3
375 #define CWMAX_BK  1023
376 #define CWMAX_BE  63
377 #define CWMAX_VI  15
378 #define CWMAX_VO  7
379 #define AIFS_PIFS 1 /* slot number setting to start transmission at PIFS interval */
380 #define AIFS_DIFS 2 /* slot number setting to start transmission at DIFS interval - */
381 					/* normal DCF access */
382 #define AIFSN_BK  7
383 #define AIFSN_BE  3
384 #define AIFSN_VI  AIFS_PIFS
385 #define AIFSN_VO  AIFS_PIFS
386 #define TXOP_BK   0
387 #define TXOP_BE   0
388 #define TXOP_VI   3008
389 #define TXOP_VO   1504
390 #define DEFAULT_AC_SHORT_RETRY_LIMIT 7
391 #define DEFAULT_AC_LONG_RETRY_LIMIT 4
392 
393 /* rxTimeout values */
394 #define NO_RX_TIMEOUT 0
395 
396 typedef struct
397 {
398 	INFO_ELE_HDR
399 	uint8 	ac;			/* Access Category - The TX queue's access category */
400 						/* (refer to AccessCategory_enum)*/
401     uint8   cwMin;		/* The contention window minimum size (in slots) for */
402 						/* the access class.*/
403     uint16  cwMax;		/* The contention window maximum size (in slots) for */
404 						/* the access class.*/
405 	uint8   aifsn;		/* The AIF value (in slots) for the access class.*/
406 	uint8	reserved;
407 	uint16  txopLimit;	/* The TX Op Limit (in microseconds) for the access class.*/
408 } ACXAcCfg_t;
409 
410 
411 /******************************************************************************
412 
413     Name:	ACX_MEM_MAP
414 	Type:	Configuration
415 	Access:	Read Only
416 	Length:	72
417 	Note:	Except for the numTxMemBlks, numRxMemBlks fields, this is
418 			used in MASTER mode only!!!
419 
420 ******************************************************************************/
421 #define MEM_MAP_NUM_FIELDS	18
422 
423 typedef struct
424 {
425     INFO_ELE_HDR
426     void *codeStart;
427     void *codeEnd;
428     void *wepDefaultKeyStart;
429     void *wepDefaultKeyEnd;
430     void *staTableStart;
431     void *staTableEnd;
432     void *packetTemplateStart;
433     void *packetTemplateEnd;
434     void *queueMemoryStart;
435     void *queueMemoryEnd;
436     void *packetMemoryPoolStart;
437     void *packetMemoryPoolEnd;
438     void *debugBuffer1Start;
439     void *debugBuffer1End;
440     void *debugBuffer2Start;
441     void *debugBuffer2End;
442     uint32 numTxMemBlks;	/* Number of blocks that FW allocated for TX packets.*/
443     uint32 numRxMemBlks;	/* Number of blocks that FW allocated for RX packets.	*/
444 } MemoryMap_t;
445 
446 
447 /******************************************************************************
448 
449     Name:	ACX_AID
450 	Type:	Configuration
451 	Access:	Write Only
452 	Length: 2
453 
454 ******************************************************************************/
455 
456 typedef struct
457 {
458     INFO_ELE_HDR
459     uint16  Aid;	/* The Association ID to the WiLink. The WiLink uses this */
460 					/* field to determine when the STA's AID bit is set in a */
461 					/* received beacon and when a PS Poll frame should be */
462 					/* transmitted to the AP. The host configures this information */
463 					/* element after it has associated with an AP. This information */
464 					/* element does not need to be set in Ad Hoc mode.*/
465     uint8  padding[2];  /* alignment to 32bits boundry   */
466 } ACXAid_t;
467 
468 /******************************************************************************
469 
470     Name:	ACX_CFG
471 	Type:	Configuration
472 	Access:	Write Only
473 	Length: 25
474 	Note:   Not in use !!!
475 
476 ******************************************************************************/
477 
478 typedef struct ACXConfig_variableEntry_t
479 {
480     uint8 dot11_ID;
481     uint8 num_supported;
482     uint8 dot11_Table;  /*cast and deref this as array of Sizeof-dot11_ID-Type.*/
483     uint8 padding;              /* alignment to 32bits boundry   */
484 } ACXConfig_variableEntry_t;
485 
486 
487 typedef struct ACXConfigOptionsStruct_t
488 {
489     INFO_ELE_HDR
490     char   nvsVer[8];
491     uint32 endMemLoc;
492     uint16 VendorSpecificArea;
493     uint8  dot11CCAModeSupported;
494     uint8  dot11DiversitySupport;
495     uint8  dot11ShortPreambleOptionImplemented;
496     uint8  dot11PBCCOptionImplemented;
497     uint8  dot11ChanneAgilityPresent;
498     uint8  dot11PHYType;
499     uint8  dot11TempType;
500     uint8  numVarEntries;
501     uint8  padding[2];  /* alignment to 32bits boundry   */
502 
503     ACXConfig_variableEntry_t vardata;
504         /**/
505         /*Begin variable portion of Config data...*/
506         /**/
507 } ACXConfigOptionsStruct_t;
508 
509 /******************************************************************************
510 
511     Name:	ACX_FW_REV
512 	Type:	Configuration
513 	Access:	Write Only
514 	Length:	24
515 
516 ******************************************************************************/
517 
518 typedef struct
519 {
520     INFO_ELE_HDR
521 	char FWVersion[20];		/* The WiLink firmware version, an ASCII string x.x.x.x.x */
522 							/* that uniquely identifies the current firmware. */
523 							/* The left most digit is incremented each time a */
524 							/* significant change is made to the firmware, such as */
525 							/* WLAN new project.*/
526 							/* The second and third digit is incremented when major enhancements*/
527 							/* are added or major fixes are made.*/
528 							/* The fourth digit is incremented for each SP release */
529                             /* and it indicants the costumer private brench */
530 							/* The fifth digit is incremented for each build.*/
531 
532     uint32 HardWareVersion; /* This 4 byte field specifies the WiLink hardware version. */
533 							/* bits 0  - 15: Reserved.*/
534 							/* bits 16 - 23: Version ID - The WiLink version ID  */
535 							/*              (1 = first spin, 2 = second spin, and so on).*/
536 							/* bits 24 - 31: Chip ID - The WiLink chip ID. */
537 } ACXRevision_t;
538 
539 /******************************************************************************
540 
541     Name:	ACX_FCS_ERROR_CNT
542 	Type:	Operation
543 	Access:	Read Only
544 	Length: 4
545 	Note:   OBSOLETE (replaced by ACX_ERROR_CNT) !!!
546 
547 ******************************************************************************/
548 
549 typedef struct
550 {
551     INFO_ELE_HDR
552     uint32 FCSErrorCount;
553 } ACXFCSErrorCount_t;
554 
555 /******************************************************************************
556 
557     Name:	ACX_ERROR_CNT
558 	Type:	Operation
559 	Access:	Read Only
560 	Length: 12
561 
562 ******************************************************************************/
563 typedef struct
564 {
565     INFO_ELE_HDR
566     uint32 PLCPErrorCount;  /* The number of PLCP errors since the last time this */
567 	                        /* information element was interrogated. This field is */
568 	                        /* automatically cleared when it is interrogated.*/
569 
570     uint32 FCSErrorCount;   /* The number of FCS errors since the last time this */
571 	                        /* information element was interrogated. This field is */
572 	                        /* automatically cleared when it is interrogated.*/
573 
574     uint32 validFrameCount; /* The number of MPDU’s without PLCP header errors received*/
575                             /* since the last time this information element was interrogated. */
576                             /* This field is automatically cleared when it is interrogated.*/
577 
578     uint32 seqNumMissCount; /* the number of missed sequence numbers in the squentially */
579                             /* values of frames seq numbers */
580 
581 } ACXErrorCounters_t;
582 
583 /******************************************************************************
584 
585     Name:	ACX_MEDIUM_USAGE
586 	Type:	Configuration
587 	Access:	Read Only
588 	Length: 8
589 
590 ******************************************************************************/
591 
592 typedef struct
593 {
594     INFO_ELE_HDR
595     uint32 mediumUsage; /* report to the host the value of medium usage registers*/
596     uint32 period;		/* report to the host the value of medium period registers*/
597 } ACXMediumUsage_t;
598 
599 /******************************************************************************
600 
601     Name:	ACX_RX_CFG
602 	Type:	Filtering Configuration
603 	Access:	Write Only
604 	Length: 8
605 
606 ******************************************************************************/
607 /*
608  * Rx configuration (filter) information element
609  * ---------------------------------------------
610  */
611 /*
612 	RX ConfigOptions Table
613 	Bit		Definition
614 	===		==========
615 	31:14	Reserved
616 	13		Copy RX Status - when set, write three receive status words to top of
617 			rx'd MPDU.
618 			When clear, do not write three status words (added rev 1.5)
619 	12		Reserved
620 	11		RX Complete upon FCS error - when set, give rx complete interrupt for
621 			FCS errors, after the rx filtering, e.g. unicast frames not to us with
622 			FCS error will not generate an interrupt
623 	10		SSID Filter Enable - When set, the WiLink discards all beacon,
624 			probe request, and probe response frames with an SSID that does not
625 			match the SSID specified by the host in the START/JOIN command.
626 			When clear, the WiLink receives frames with any SSID.
627 	9		Broadcast Filter Enable - When set, the WiLink discards all broadcast
628 			frames. When clear, the WiLink receives all received broadcast frames.
629 	8:6		Reserved
630 	5		BSSID Filter Enable - When set, the WiLink discards any frames with a
631 			BSSID that does not match the BSSID specified by the host.
632 			When clear, the WiLink receives frames from any BSSID.
633 	4		MAC Addr Filter - When set, the WiLink discards any frames with a
634 			destination address that does not match the MAC address of the adaptor.
635 			When clear, the WiLink receives frames destined to any MAC address.
636 	3		Promiscuous - When set, the WiLink receives all valid frames
637 			(i.e., all frames that pass the FCS check).
638 			When clear, only frames that pass the other filters specified are received.
639 	2		FCS - When set, the WiLink includes the FCS with the received frame.
640 			When clear, the FCS is discarded.
641 	1		PLCP header - When set, write all data from baseband to frame buffer
642 			including PHY header.
643 	0		Reserved - Always equal to 0.
644 
645 	RX FilterOptions Table
646 	Bit		Definition
647 	===		==========
648 	31:12	Reserved - Always equal to 0.
649 	11		Association - When set, the WiLink receives all association related frames
650 			(association request/response, reassocation request/response, and
651 			disassociation). When clear, these frames are discarded.
652 	10		Auth/De auth - When set, the WiLink receives all authentication and
653 			de-authentication frames. When clear, these frames are discarded.
654 	9		Beacon - When set, the WiLink receives all beacon frames. When clear,
655 			these frames are discarded.
656 	8		Contention Free - When set, the WiLink receives all contention free frames.
657 			When clear, these frames are discarded.
658 	7		Control - When set, the WiLink receives all control frames.
659 			When clear, these frames are discarded.
660 	6		Data - When set, the WiLink receives all data frames.
661 			When clear, these frames are discarded.
662 	5		FCS Error - When set, the WiLink receives frames that have FCS errors.
663 			When clear, these frames are discarded.
664 	4		Management - When set, the WiLink receives all management frames.
665 			When clear, these frames are discarded.
666 	3		Probe Request - When set, the WiLink receives all probe request frames.
667 			When clear, these frames are discarded.
668 	2		Probe Response - When set, the WiLink receives all probe response frames.
669 			When clear, these frames are discarded.
670 	1		RTS/CTS/ACK - When set, the WiLink receives all RTS, CTS and ACK frames.
671 			When clear, these frames are discarded.
672 	0		Rsvd Type/Sub Type - When set, the WiLink receives all frames that
673 			have reserved frame types and sub types as defined by the 802.11
674 			specification.
675 			When clear, these frames are discarded.
676 */
677 typedef struct
678 {
679     INFO_ELE_HDR
680     uint32          ConfigOptions;	/* The configuration of the receiver in the WiLink. */
681 									/* "RX ConfigOptions Table" describes the format of */
682 									/* this field.*/
683     uint32          FilterOptions;	/* The types of frames that the WiLink can receive. */
684 									/* "RX FilterOptions Table" describes the format of */
685 									/* this field.*/
686 } ACXRxConfig_t;
687 
688 /******************************************************************************
689 
690     Name:	ACX_BEACON_FILTER_OPT
691 	Desc:   This information element enables the host to activate beacon filtering.
692             The filter can only be activated when the STA is in PS mode.
693             When activated, either the host is not notified about beacons whose
694             unicast TIM bit is not set, or these beacons are buffered first and
695             the host is notified only after the buffer reaches a predetermined size.
696             The host should not activate the filter if it configures the firmware
697             to listen to broadcasts (see the VBM Options field in the
698             ACXPowerMgmtOptions information element). The filter only affects beacons,
699             and not other MSDUs - the firmware notifies the host immediately about
700             their arrival.
701 	Type:	Filtering Configuration
702 	Access:	Write Only
703 	Length: 2
704 
705 ******************************************************************************/
706 typedef struct
707 {
708     INFO_ELE_HDR
709     uint8   enable;                /* Indicates whether the filter is enabled. */
710                                    /* 1 - enabled, 0 - disabled. */
711     uint8   maxNumOfBeaconsStored; /* The number of beacons without the unicast TIM */
712                                    /* bit set that the firmware buffers before */
713                                    /* signaling the host about ready frames. */
714 	                               /* When set to 0 and the filter is enabled, beacons */
715 	                               /* without the unicast TIM bit set are dropped.*/
716     uint8  padding[2];             /* alignment to 32bits boundry   */
717 } ACXBeaconFilterOptions_t;
718 
719 
720 /******************************************************************************
721 
722     Name:	ACX_BEACON_FILTER_TABLE
723 	Desc:   This information element configures beacon filtering handling for the
724 	        set of information elements. An information element in a beacon can be
725 			set to be: ignored (never compared, and changes will not cause beacon
726 			transfer), checked (compared, and transferred in case of a change), or
727 			transferred (transferred to the host for each appearance or disappearance).
728 	        The table contains all information elements that are subject to monitoring
729 			for host transfer.
730 			All information elements that are not in the table should be ignored for
731 			monitoring.
732 	        This functionality is only enabled when beacon filtering is enabled by
733 			ACX_BEACON_FILTER_OPT.
734 	Type:	Filtering Configuration
735 	Access:	Write Only
736 	Length: 101
737 	Notes:  the field measuring the value of received beacons for which the device
738 	        wakes up the host in ACX_BEACON_FILTER_OPT does not affect
739 			this information element.
740 
741 ******************************************************************************/
742 
743 /*
744     ACXBeaconFilterEntry (not 221)
745     Byte Offset     Size (Bytes)    Definition
746 	===========     ============    ==========
747 	0				1               IE identifier
748     1               1               Treatment bit mask
749 
750     ACXBeaconFilterEntry (221)
751     Byte Offset     Size (Bytes)    Definition
752     ===========     ============    ==========
753     0               1               IE identifier
754     1               1               Treatment bit mask
755     2               3               OUI
756     5               1               Type
757     6               2               Version
758 
759 
760     Treatment bit mask - The information element handling:
761                          bit 0 - The information element is compared and transferred
762 						         in case of change.
763                          bit 1 - The information element is transferred to the host
764 						         with each appearance or disappearance.
765                          Note that both bits can be set at the same time.
766 */
767 #define	BEACON_FILTER_TABLE_MAX_IE_NUM						(32)
768 #define BEACON_FILTER_TABLE_MAX_VENDOR_SPECIFIC_IE_NUM		(6)
769 #define BEACON_FILTER_TABLE_IE_ENTRY_SIZE					(2)
770 #define BEACON_FILTER_TABLE_EXTRA_VENDOR_SPECIFIC_IE_SIZE	(6)
771 #define BEACON_FILTER_TABLE_MAX_SIZE	((BEACON_FILTER_TABLE_MAX_IE_NUM * BEACON_FILTER_TABLE_IE_ENTRY_SIZE) + \
772                                          (BEACON_FILTER_TABLE_MAX_VENDOR_SPECIFIC_IE_NUM * BEACON_FILTER_TABLE_EXTRA_VENDOR_SPECIFIC_IE_SIZE))
773 
774 typedef struct ACXBeaconFilterIETableStruct {
775 	INFO_ELE_HDR
776 	uint8 NumberOfIEs;							/* The number of IE's in the table*/
777                                                 /* 0 - clears the table.*/
778 
779     uint8 padding[3];  /* alignment to 32bits boundry   */
780 	uint8 IETable[BEACON_FILTER_TABLE_MAX_SIZE];
781 } ACXBeaconFilterIETable_t;
782 
783 /******************************************************************************
784 
785     Name:	ACX_ARP_IP_FILTER
786 	Type:	Filtering Configuration
787 	Access:	Write Only
788 	Length: 20
789 
790 ******************************************************************************/
791 
792 typedef struct
793 {
794     INFO_ELE_HDR
795 	uint8     ipVersion;       /* The IP version of the IP address: 4 - IPv4, 6 - IPv6.*/
796     uint8     arpFilterEnable; /* 1 - ARP filtering is enabled. */
797 	                           /* 0 - ARP filtering is disabled.*/
798     uint8     padding[2];      /* alignment to 32bits boundry   */
799     uint8     address[16];     /* The IP address used to filter ARP packets. ARP packets */
800 	                           /* that do not match this address are dropped. */
801 	                           /* When the IP Version is 4, the last 12 bytes of */
802 	                           /* the address are ignored.*/
803 
804 } ACXConfigureIP_t;
805 
806 
807 /******************************************************************************
808 
809   Name:	    ACX_IBSS_FILTER
810   Type:	    Filtering Configuration
811   Access:	Write Only
812   Length:   1
813 
814 ******************************************************************************/
815 typedef struct
816 {
817     INFO_ELE_HDR
818     uint8   enable; /* if set (i.e. IBSS mode), forward beacons from the same SSID*/
819 	                /* (also from different BSSID), with bigger TSF then the this of */
820 	                /* the current BSS.*/
821     uint8   padding[3]; /* alignment to 32bits boundry   */
822 } ACXIBSSFilterOptions_t;
823 
824 
825 /******************************************************************************
826 
827   Name:	    ACX_SERVICE_PERIOD_TIMEOUT
828   Type:	    Configuration
829   Access:	Write Only
830   Length:   1
831 
832 ******************************************************************************/
833 typedef struct
834 {
835 	INFO_ELE_HDR
836 	uint16 PsPollTimeout; /* the maximum time that the device will wait to receive */
837 	                      /* traffic from the AP after transmission of PS-poll.*/
838 
839     uint16 UpsdTimeout;	  /* the maximum time that the device will wait to receive */
840 	                      /* traffic from the AP after transmission from UPSD enabled*/
841 	                      /* queue.*/
842 } ACXRxTimeout_t;
843 
844 /******************************************************************************
845 
846     Name:	ACX_TX_QUEUE_CFG
847 	Type:	Configuration
848 	Access:	Write Only
849 	Length: 8
850 
851 ******************************************************************************/
852 typedef struct
853 {
854     INFO_ELE_HDR
855 	uint8	qID;						/* The TX queue ID number.*/
856     uint8   padding[3];                 /* alignment to 32bits boundry   */
857     uint16	numberOfBlockHighThreshold; /* The maximum memory blocks allowed in the */
858 										/* queue.*/
859     uint16	numberOfBlockLowThreshold;	/* The minimum memory blocks that are */
860 										/* guaranteed for this queue.*/
861 } ACXTxQueueCfg_t;
862 
863 
864 /******************************************************************************
865 
866     Name:	ACX_BSS_IN_PS
867 	Type:	Configuration
868 	Access:	Write Only
869 	Length:	1
870 	Note:	for AP only (OBSOLETE???)
871 
872 ******************************************************************************/
873 
874 typedef enum
875 {
876     AP_POWER_ACTIVE_MODE = FALSE,
877     AP_POWER_SAVE_MODE = TRUE
878 } APPowerMgmtMode_enum;
879 
880 #ifdef HOST_COMPILE
881 typedef uint8 APPowerMgmtMode_e;
882 #else
883 typedef APPowerMgmtMode_enum APPowerMgmtMode_e;
884 #endif
885 
886 
887 typedef struct
888 {
889     INFO_ELE_HDR
890     APPowerMgmtMode_e BSSinPowerSave;
891     uint8             padding[3];  /* alignment to 32bits boundry   */
892 } ACXBSSPowerSave_t;
893 
894 
895 
896 /******************************************************************************
897 
898     Name:	ACX_STATISTICS
899 	Type:	Statistics
900 	Access:	Write Only
901 	Length:
902 	Note:	Debug API
903 
904 ******************************************************************************/
905 
906 typedef struct
907 {
908     uint32 TxInternalDescOverflow;
909 } TxStatistics_t;
910 
911 
912 typedef struct
913 {
914     uint32 RxOutOfMem;
915     uint32 RxHdrOverflow;
916     uint32 RxHWStuck;
917     uint32 RxDroppedFrame;
918     uint32 RxFcsErr;
919     uint32 RxXfrHintTrig;
920     uint32 RxPathReset;
921     uint32 RxResetCounter;
922 } RxStatistics_t;
923 
924 
925 typedef struct
926 {
927     uint32 RxDMARequested;
928     uint32 RxDMAErrors;
929     uint32 TxDMARequested;
930     uint32 TxDMAErrors;
931 } DMAStatistics_t;
932 
933 
934 typedef struct
935 {
936     uint32 Cmd_Cmplt;         /* Host command complete */
937     uint32 FIQs;              /* fiqisr() */
938     uint32 RxHeaders;         /* (INT_STS_ND & INT_TRIG_RX_HEADER) */
939     uint32 RxCompletes;       /* (INT_STS_ND & INT_TRIG_RX_CMPLT) */
940     uint32 RxMemOverflow;     /* (INT_STS_ND & INT_TRIG_NO_RX_BUF) */
941     uint32 RxRdys;            /* (INT_STS_ND & INT_TRIG_S_RX_RDY) */
942     uint32 IRQs;              /* irqisr() */
943     uint32 ACXTxProcs;        /* (INT_STS_ND & INT_TRIG_TX_PROC) */
944     uint32 DecryptDone;       /* (INT_STS_ND & INT_TRIG_DECRYPT_DONE) */
945     uint32 DMA0Done;          /* (INT_STS_ND & INT_TRIG_DMA0) */
946     uint32 DMA1Done;          /* (INT_STS_ND & INT_TRIG_DMA1) */
947     uint32 ACXTxExchComplete; /* (INT_STS_ND & INT_TRIG_TX_EXC_CMPLT) */
948     uint32 ACXCommands;       /* (INT_STS_ND & INT_TRIG_COMMAND) */
949     uint32 ACXRxProcs;        /* (INT_STS_ND & INT_TRIG_RX_PROC) */
950     uint32 HwPMModeChanges;   /* (INT_STS_ND & INT_TRIG_PM_802) */
951     uint32 HostAcknowledges;  /* (INT_STS_ND & INT_TRIG_ACKNOWLEDGE) */
952     uint32 PCI_PM;            /* (INT_STS_ND & INT_TRIG_PM_PCI) */
953     uint32 ACMWakeups;        /* (INT_STS_ND & INT_TRIG_ACM_WAKEUP) */
954     uint32 LowRssi;           /* (INT_STS_ND & INT_TRIG_LOW_RSSI) */
955 } IsrStatistics_t;
956 
957 
958 typedef struct WepStatistics_t
959 {
960     uint32 WepAddrKeyCount;      /* Count of WEP address keys configured*/
961     uint32 WepDefaultKeyCount;   /* Count of default keys configured*/
962     uint32 reserved;
963     uint32 WepKeyNotFound;       /* count of number of times that WEP key not found on lookup*/
964     uint32 WepDecryptFail;       /* count of number of times that WEP key decryption failed*/
965     uint32 WepPackets;           /* WEP Packets Decrypted*/
966     uint32 WepInterrupt;         /* WEP Decrypt Interrupts*/
967 } WepStatistics_t;
968 
969 
970 #define PWR_STAT_MAX_CONT_MISSED_BCNS_SPREAD 10
971 typedef struct PwrStatistics_t
972 {
973     uint32 PSEnterCnt;          /* Count the amount of enters into power save mode (both PD & ELP)*/
974     uint32 ELPEnterCnt;         /* Count the amount of enters into ELP mode.*/
975     uint32 MissingBcnsCnt;      /* Count the amount of missing beacon interrupts to the host.*/
976     uint32 WakeOnHostCnt;       /* Count the amount of wake on host-access times.*/
977     uint32 WakeOnTimerExpCnt;   /* Count the amount of wake on timer-expire.*/
978     uint32 TxWithPSCnt;         /* Count the number of packets that were transmitted with PS bit set*/
979     uint32 TxWithoutPSCnt;      /* Count the number of packets that were transmitted with PS bit clear*/
980     uint32 RcvdBeaconsCnt;      /* Count the number of received beacons.*/
981     uint32 PowerSaveOffCnt;     /* Count the number of entering into PowerOn (power save off).*/
982     uint16 EnablePSCnt;         /* Count the number of entries into power save mode.*/
983     uint16 DisablePSCnt;        /* Count the number of exits from power save (not including the PS_FAIL route.*/
984     uint32 FixTsfPSCnt;         /* Count the number of times the TSF counter was adjusted because of drift.*/
985     uint32 ContMissBcnsSpread[PWR_STAT_MAX_CONT_MISSED_BCNS_SPREAD];  /* Gives statistics about the spread continuous missed beacons.*/
986                                     /* The 16 LSB are dedicated for the PS mode.*/
987                                     /* The 16 MSB are dedicated for the PS mode.*/
988                                     /* ContMissBcnsSpread[0] - single missed beacon.*/
989                                     /* ContMissBcnsSpread[1] - two continuous missed beacons.*/
990                                     /* ContMissBcnsSpread[2] - three continuous missed beacons.*/
991                                     /* ...*/
992                                     /* ContMissBcnsSpread[9] - ten and more continuous missed beacons.*/
993     uint32 RcvdAwakeBeaconsCnt; /* Count the number of beacons in awake mode.*/
994 } PwrStatistics_t;
995 
996 
997 typedef struct MicStatistics_t
998 {
999     uint32 MicRxPkts;
1000     uint32 MicCalcFailure;
1001 } MicStatistics_t;
1002 
1003 
1004 typedef struct AesStatisticsStruct
1005 {
1006     uint32 AesEncryptFail;
1007     uint32 AesDecryptFail;
1008     uint32 AesEncryptPackets;
1009     uint32 AesDecryptPackets;
1010     uint32 AesEncryptInterrupt;
1011     uint32 AesDecryptInterrupt;
1012 } AesStatistics_t;
1013 
1014 
1015 typedef struct EventStatistics_t
1016 {
1017     uint32 heartbeat;
1018     uint32 calibration;
1019     uint32 rxMismatch;
1020     uint32 rxMemEmpty;
1021     uint32 rxPool;
1022     uint32 oomLate;
1023     uint32 phyTransmitError;
1024     uint32 txStuck;
1025 } EventStatistics_t;
1026 
1027 
1028 typedef struct PsPollUpsdStatistics_t
1029 {
1030     uint32 psPollTimeOuts;
1031     uint32 upsdTimeOuts;
1032     uint32 upsdMaxSPTime;
1033     uint32 upsdMaxAPturn;
1034     uint32 psPollMaxAPturn;
1035     uint32 psPollUtilization;
1036     uint32 upsdUtilization;
1037 } PsPollUpsdStatistics_t;
1038 
1039 
1040 typedef struct
1041 {
1042     uint32 RxPrepBeaconDrop;
1043     uint32 DescrHostIntTrigRxData;
1044     uint32 BeaconBufferThresHostIntTrigRxData;
1045     uint32 MissedBeaconHostIntTrigRxData;
1046     uint32 TxXfrHostIntTrigRxData;
1047 } RxPipeStatistics_t;
1048 
1049 
1050 typedef struct ACXStatisticsStruct
1051 {
1052     INFO_ELE_HDR
1053     TxStatistics_t   tx;
1054     RxStatistics_t   rx;
1055     DMAStatistics_t  dma;
1056     IsrStatistics_t  isr;
1057     WepStatistics_t  wep;
1058     PwrStatistics_t  pwr;
1059     AesStatistics_t  aes;
1060     MicStatistics_t  mic;
1061     EventStatistics_t event;
1062 #ifdef FW_RUNNING_AS_STA
1063     PsPollUpsdStatistics_t ps;
1064     RxPipeStatistics_t rxp;
1065 #endif
1066 } ACXStatistics_t;
1067 
1068 /******************************************************************************
1069 
1070     Name:	ACX_ROAMING_STATISTICS_TBL
1071 	Desc:   This information element reads the current roaming triggers
1072 	        counters/metrics.
1073 	Type:	Statistics
1074 	Access:	Read Only
1075 	Length: 6
1076 
1077 ******************************************************************************/
1078 typedef struct
1079 {
1080 	INFO_ELE_HDR
1081 	uint32 MissedBeacons; /* The current number of consecutive lost beacons*/
1082 	uint8  snr;           /* The current average SNR in db*/
1083     int8   rssi;          /* The current average RSSI*/
1084     uint8  padding[2];    /* alignment to 32bits boundry   */
1085 }ACXRoamingStatisticsTable_t;
1086 
1087 
1088 /******************************************************************************
1089 
1090     Name:	ACX_FEATURE_CFG
1091 	Desc:   Provides expandability for future features
1092 	Type:	Configuration
1093 	Access:	Write Only
1094 	Length: 8
1095 
1096 ******************************************************************************/
1097 
1098 /* bit defines for Option: */
1099 #define FEAT_PCI_CLK_RUN_ENABLE     0x00000002	/* Enable CLK_RUN on PCI bus */
1100 
1101 /* bit defines for dataflowOptions: */
1102 #define DF_ENCRYPTION_DISABLE       0x00000001	/* When set, enable encription in FW.*/
1103 												/* when clear, disable encription. */
1104 #define DF_SNIFF_MODE_ENABLE        0x00000080	/* When set, enable decryption in FW.*/
1105 												/* when clear, disable decription. */
1106 typedef struct
1107 {
1108     INFO_ELE_HDR
1109     uint32 Options;         /* Data flow options - refer to above definitions*/
1110     uint32 dataflowOptions; /* Data flow options - refer to above definitions*/
1111 } ACXFeatureConfig_t;
1112 
1113 
1114 
1115 /******************************************************************************
1116 
1117     Name:	ACX_TID_CFG
1118 	Type:	Configuration
1119 	Access:	Write Only
1120 	Length: 16
1121 
1122 ******************************************************************************/
1123 typedef enum
1124 {
1125 	CHANNEL_TYPE_DCF = 0,   /* DC/LEGACY*/
1126 	CHANNEL_TYPE_EDCF = 1,  /* EDCA*/
1127 	CHANNEL_TYPE_HCCA = 2,  /* HCCA*/
1128 	MAX_CHANNEL_TYPE = CHANNEL_TYPE_HCCA
1129 } ChannelType_enum;
1130 
1131 typedef enum
1132 {
1133     PS_SCHEME_LEGACY         = 0, /* Regular PS: simple sending of packets*/
1134     PS_SCHEME_UPSD_TRIGGER   = 1, /* UPSD: sending a packet triggers a UPSD downstream*/
1135     PS_SCHEME_LEGACY_PSPOLL  = 2, /* Legacy PSPOLL: a PSPOLL packet will be sent before */
1136 								  /* every data packet transmission in this queue.*/
1137     PS_SCHEME_SAPSD          = 3, /* Scheduled APSD mode.*/
1138     MAX_PS_SCHEME = PS_SCHEME_SAPSD
1139 } PSScheme_enum;
1140 
1141 typedef enum
1142 {
1143 	ACK_POLICY_LEGACY = 0,   /* ACK immediate policy*/
1144 	ACK_POLICY_NO_ACK = 1,   /* no ACK policy*/
1145 	ACK_POLICY_BLOCK  = 2,   /* block ack policy*/
1146 	MAX_ACK_POLICY = ACK_POLICY_BLOCK
1147 } AckPolicy_enum;
1148 
1149 
1150 #ifdef HOST_COMPILE
1151 typedef uint8 ChannelType_e;
1152 typedef uint8 PSScheme_e;
1153 typedef uint8 AckPolicy_e;
1154 #else
1155 typedef ChannelType_enum ChannelType_e;
1156 typedef PSScheme_enum PSScheme_e;
1157 typedef AckPolicy_enum AckPolicy_e;
1158 #endif
1159 
1160 
1161 /* rxTimeout values */
1162 #define NO_RX_TIMEOUT 0
1163 
1164 
1165 typedef struct
1166 {
1167     INFO_ELE_HDR
1168     uint8 	queueID;        /* The TX queue ID number (0-7).*/
1169     uint8 	channelType;    /* Channel access type for the queue.*/
1170 						    /* Refer to ChannelType_enum.*/
1171     uint8 	tsid;           /* for EDCA - the AC Index (0-3, refer to*/
1172 	                        /* AccessCategory_enum).*/
1173                             /* For HCCA - HCCA Traffic Stream ID (TSID) of */
1174 	                        /* the queue (8-15).*/
1175     PSScheme_e  psScheme;   /* The power save scheme of the specified queue.*/
1176 	                        /* Refer to PSScheme_enum.*/
1177 	AckPolicy_e ackPolicy;  /* The TX queue ACK policy. */
1178     uint8  padding[3];      /* alignment to 32bits boundry   */
1179     uint32 APSDConf[2];     /* Not supported in this version !!!*/
1180 }ACXTIDConfig_t;
1181 
1182 
1183 
1184 /******************************************************************************
1185 
1186     Name:	ACX_LOW_RSSI
1187 	Desc:   This information element configures the Low and Regained RSSI interrupt
1188             indicators. Low RSSI calculates the average RSSI by giving higher weight
1189             to the old samples than to the current sample.
1190             The triggering of the Regained RSSI Event cannot be configured and
1191             is always an "Edge" indication.
1192             The RSSI is reset on JoinBSS - the filter history CurrentRSSI is reset.
1193             The average RSSI is calculated as follows:
1194             averageRssi = ((int32)((100-roamingTriggerParameters.lowRssi.rssiFilterWeight) * averageRssi) +
1195                           (int32)(roamingTriggerParameters.lowRssi.rssiFilterWeight * (int8)rxInfo->rxLevel)) / 100;
1196 	Type:	Configuration
1197 	Access:	Write Only
1198 	Length: 4
1199 
1200 ******************************************************************************/
1201 
1202 typedef enum
1203 {
1204     LOW_RSSI_EVENT_LEVEL = 0,  /* The event is a "Level" indication which keeps */
1205 		                       /* triggering as long as the average RSSI is below*/
1206 							   /* the threshold.*/
1207 
1208 	LOW_RSSI_EVENT_EDGE = 1    /* The event is an "Edge" indication which triggers*/
1209 	                           /* only when the RSSI threshold is crossed from above.*/
1210 } LowRSSIEventType_enum;
1211 
1212 #ifdef HOST_COMPILE
1213 typedef uint8 LowRSSIEventType_e;
1214 #else
1215 typedef LowRSSIEventType_enum LowRSSIEventType_e;
1216 #endif
1217 
1218 
1219 typedef struct
1220 {
1221     INFO_ELE_HDR
1222 	int8  rssiThreshold;                 /* The threshold (in dBm) below (or above */
1223 	                                     /* after low rssi indication) which the */
1224 	                                     /* firmware generates an interrupt to the host. */
1225 	                                     /* This parameter is signed.*/
1226 
1227     uint8 rssiFilterWeight;              /* The weight of the current RSSI sample, */
1228 	                                     /* before adding the new sample, that is used */
1229 	                                     /* to calculate the average RSSI.*/
1230 
1231 	uint8 rssiFilterDepth;               /* The number of Beacons/Probe response frames */
1232                                          /* that will be received before issuing the */
1233 	                                     /* Low or Regained RSSI event*/
1234 
1235 	LowRSSIEventType_e LowRSSIEventType; /* This parameter configures how the Low RSSI */
1236 	                                     /* Event is triggered. */
1237 	                                     /* Refer to LowRSSIEventType_enum.*/
1238 } ACXLowRSSITriggerParameters_t;
1239 
1240 /******************************************************************************
1241 
1242     Name:	ACX_AVERAGE_RSSI
1243 	Type:	Configuration
1244 	Access:	Read Only
1245 	Length: 8
1246 	Note:   Not in use !!!
1247 
1248 ******************************************************************************/
1249 
1250 typedef struct
1251 {
1252     INFO_ELE_HDR
1253     int8 avaregeRSSI; /* in DBM*/
1254     uint8 padding[3];  /* alignment to 32bits boundry   */
1255 } ACXAvaregeRSSI_t;
1256 
1257 /******************************************************************************
1258 
1259     Name:	ACX_NOISE_HIST
1260 	Desc:   Noise Histogram activation is done by special command from host which
1261             is responsible to read the results using this IE.
1262 	Type:	Configuration
1263 	Access:	Read Only
1264 	Length: 48 (NOISE_HIST_LEN=8)
1265 
1266 ******************************************************************************/
1267 
1268 typedef struct
1269 {
1270     INFO_ELE_HDR
1271     uint32 counters[NOISE_HIST_LEN]; /* This array of eight 32 bit counters describes */
1272 	                                 /* the histogram created by the FW noise */
1273 	                                 /* histogram engine.*/
1274 
1275     uint32 numOfLostCycles;          /* This field indicates the number of measurement */
1276 	                                 /* cycles with failure because Tx was active.*/
1277 
1278     uint32 numOfTxHwGenLostCycles;   /* This field indicates the number of measurement */
1279 	                                 /* cycles with failure because Tx (FW Generated)*/
1280 	                                 /* was active.*/
1281 
1282     uint32 numOfRxLostCycles;        /* This field indicates the number of measurement */
1283 	                                 /* cycles because the Rx CCA was active. */
1284 } NoiseHistResult_t;
1285 
1286 /******************************************************************************
1287 
1288     Name:	ACX_PD_THRESHOLD
1289 	Type:	Configuration
1290 	Access:	Write Only
1291 	Length: 4
1292 
1293 ******************************************************************************/
1294 
1295 typedef struct
1296 {
1297     INFO_ELE_HDR
1298     uint32 pdThreshold; /* The packet detection threshold in the PHY.*/
1299 } ACXPacketDetection_t;
1300 
1301 
1302 /******************************************************************************
1303 
1304     Name:	ACX_DATA_PATH_PARAMS
1305 	Desc:   configure Data path and Tx complete parameters
1306 	Type:	Configuration
1307 	Access:	Write Only
1308 	Length: 12
1309 
1310 ******************************************************************************/
1311 typedef struct
1312 {
1313     INFO_ELE_HDR
1314     uint16     	rxPacketRingChunkSize;	/* size in bytes of each buffer in a */
1315 	                                    /* multi-buffers transfer mechanism (size of */
1316 	                                    /* largest possible packet).*/
1317 
1318     uint16     	txPacketRingChunkSize; 	/* size in bytes of each buffer in a */
1319 	                                    /* multi-buffers transfer mechanism (size of */
1320 	                                    /* largest possible packet).*/
1321 
1322     uint8     	rxPacketRingChunkNum;	/* number of buffers in a multi-buffers */
1323 	                                    /* transfer mechanism (2 for double buffer).*/
1324 
1325     uint8     	txPacketRingChunkNum; 	/* number of buffers in a multi-buffers */
1326 	                                    /* transfer mechanism (2 for double buffer).*/
1327 
1328     uint8       txCompleteThreshold;	/* maximum number of packets that can be */
1329 	                                    /* gathered in the TX complete ring before */
1330 	                                    /* interrupt is generated.*/
1331 
1332     uint8       txCompleteRingDepth;	/* number of pending (waiting to be read by*/
1333 	                                    /* the Host) TX complete entries in cyclic ring.*/
1334 
1335 	uint32		txCompleteTimeOut;		/* the maximum time in micro-seconds since a */
1336 	                                    /* packet enters the TX complete ring until */
1337 	                                    /* interrupt is generated.*/
1338 } ACXDataPathParams_t;
1339 
1340 /******************************************************************************
1341 
1342     Name:	ACX_DATA_PATH_RESP_PARAMS
1343 	Desc:   Get data path specific parameters.
1344 	Type:	Configuration
1345 	Access:	Read Only
1346 	Length: 28
1347     Note:   The interrogation of this IE can be done only after the configuration
1348 			of the corresponding Data Path parameters IE.
1349 
1350 ******************************************************************************/
1351 typedef struct
1352 {
1353     INFO_ELE_HDR
1354     uint16     	rxPacketRingChunkSize; /* actual size in bytes of each buffer */
1355 	                                   /* in a multi-buffers transfer mechanism.*/
1356 
1357     uint16     	txPacketRingChunkSize; /* actual size in bytes of each buffer */
1358 	                                   /* in a multi-buffers transfer mechanism.*/
1359 
1360     uint8     	rxPacketRingChunkNum;  /* actual number of buffers in a */
1361 	                                   /* multi-buffers transfer mechanism.	*/
1362 
1363     uint8     	txPacketRingChunkNum;  /* actual number of buffers in a */
1364 	                                   /* multi-buffers transfer mechanism.*/
1365 
1366     uint8       padding[2];            /* alignment to 32bits boundry   */
1367     uint32		rxPacketRingAddr;      /* base address of the the multi-buffer space.*/
1368 
1369     uint32		txPacketRingAddr;      /* base address of the the multi-buffer space.*/
1370 
1371     uint32		rxControlAddr;         /* address of Rx Control register.*/
1372 
1373     uint32		txControlAddr;         /* address of Rx Control register.*/
1374 
1375     uint32		txCompleteAddr;	       /* base address of Tx Complete ring.*/
1376 } ACXDataPathParamsResp_t;
1377 
1378 /******************************************************************************
1379 
1380     Name:	ACX_RATE_POLICY
1381 	Type:	Configuration
1382 	Access:	Write Only
1383 	Length: 132
1384 
1385 ******************************************************************************/
1386 typedef enum
1387 {
1388 	RATE_CLASS_54M,
1389 	RATE_CLASS_48M,
1390 	RATE_CLASS_36M,
1391 	RATE_CLASS_24M,
1392 	RATE_CLASS_22M,
1393 	RATE_CLASS_18M,
1394 	RATE_CLASS_12M,
1395 	RATE_CLASS_11M,
1396 	RATE_CLASS_9M,
1397 	RATE_CLASS_6M,
1398 	RATE_CLASS_5_5M,
1399 	RATE_CLASS_2M,
1400 	RATE_CLASS_1M,
1401 	RATE_CLASSES_SIZE
1402 } RatePolicy_enum;
1403 #define MAX_RATE_POLICIES       (8)
1404 
1405 /*
1406 aflag definition
1407 bit field		description
1408 =========		===========
1409 7:3				Reserved
1410 2				Preamble Type - The type of the preamble to be used by the policy.
1411                 0 - long preamble,
1412 				1 - short preamble.
1413 1				Preamble Override - Indicates if the preamble type should be used in TX.
1414 0				Truncate - If set, then attempts to send a frame stop when the total
1415                 valid per-rate attempts have been exhausted;
1416 				otherwise transmissions will continue at the lowest available rate
1417 				until the appropriate one of the Short Retry Limit, Long Retry Limit,
1418 				dot11MaxTransmitMsduLifetime, or MAX TX Life Time (in ACXTIDConfig),
1419 				if supported and supplied, is exhausted.
1420 */
1421 
1422 
1423 /* definition of single rate policy*/
1424 typedef struct
1425 {
1426     uint8               rateClass[RATE_CLASSES_SIZE]; /* The number of attempts for TX */
1427 	                                                  /* for each rate class.  */
1428 	                                                  /* RatePolicy_enum describes the */
1429 													  /* indices for the table.*/
1430 
1431     uint8               shortRetryLimit;              /* The dot11ShortRetryLimit used */
1432                                                       /* for Tx retries.*/
1433 
1434     uint8               longRetryLimit;               /* The dot11LongRetryLimit used */
1435 	                                                  /* for Tx retries.  */
1436 
1437     uint8               aflags;                       /* Flags controlling attributes */
1438 	                                                  /* of the transmission. */
1439 	                                                  /* see above description for the */
1440 	                                                  /* structure of this field.*/
1441 }txAttrClass_t;
1442 
1443 
1444 typedef struct
1445 {
1446     INFO_ELE_HDR
1447     uint32        numOfClasses;                    /* The number of transmission rate */
1448 	                                               /* fallback policy classes.*/
1449 
1450     txAttrClass_t rateClasses[MAX_RATE_POLICIES];  /* Rate Policies table*/
1451 }ACXTxAttrClasses_t;
1452 
1453 
1454 /******************************************************************************
1455 
1456     Name:	ACX_FW_GEN_FRAME_RATES
1457 	Desc:   FW generated (template) frames rates and modulation.
1458 	Type:	Configuration
1459 	Access:	Write Only
1460 	Length: 4
1461 
1462 ******************************************************************************/
1463 
1464 /*
1465 Values for the Frame rate configuration
1466 Value	Transmit Rate
1467 =====   =============
1468 0x0A	1 Mbps
1469 0x14	2 Mbps
1470 0x37	5.5 Mbps
1471 0x6E	11 Mbps (CCK)
1472 0xDC	22 Mbps
1473 0x0B	6 Mbps
1474 0x0F	9 Mbps
1475 0x0A	12 Mbps
1476 0x0E	18 Mbps
1477 0x09	24 Mbps
1478 0x0D	36 Mbps
1479 0x08	48 Mbps
1480 0x0C	54 Mbps
1481 */
1482 
1483 /*
1484 Values for the modulation configuration
1485 Value	Modulation
1486 =====   ==========
1487 0	    CCK_LONG
1488 1       CCK_SHORT
1489 128	    PBCC_LONG
1490 129	    PBCC_SHORT
1491 64	    OFDM
1492 */
1493 
1494 typedef struct
1495 {
1496 	INFO_ELE_HDR
1497 	uint8 	txCtrlFrmRate; /* This field indicates the rate at which the WiLink */
1498 	                       /* transmits RTS, CTS, PS Poll and QoS-Null frames. */
1499 	                       /* Valid values are listed in the above table.*/
1500 
1501     uint8  	txCtrlFrmMod;  /* Modultion type for the above template frame. */
1502                            /* Valid values are listed in the above table.*/
1503 
1504     uint8  	txMgmtFrmRate; /* This field indicates the rate at which the WiLink */
1505 	                       /* transmits beacon, probe response  frames. */
1506 	                       /* If the host is configuring the WiLink as an AP or Ad Hoc */
1507 	                       /* STA, you must configure the beacon template before the */
1508 	                       /* START/JOIN command is issued. */
1509 	                       /* Valid values are listed in the above table.*/
1510 
1511     uint8  	txMgmtFrmMod;  /* Modultion type for the above template frame.*/
1512                            /* Valid values are listed in the above table.*/
1513 }ACXFwGeneratedFrameRates_t;
1514 
1515 /******************************************************************************
1516 
1517     Name:	ACX_CTS_PROTECTION
1518 	Type:	Configuration
1519 	Access:	Write Only
1520 	Length: 1
1521 
1522 ******************************************************************************/
1523 
1524 typedef struct
1525 {
1526 	INFO_ELE_HDR
1527 	uint8   ctsProtectMode; /* This field is a flag enabling or disabling the*/
1528 	                            /* CTS-to-self protection mechanism:*/
1529 	                            /* 0 - disable, 1 - enable*/
1530     uint8  padding[3];          /* alignment to 32bits boundry   */
1531 }ACXCtsProtection_t;
1532 
1533 /******************************************************************************
1534 
1535     Name:	ACX_SLEEP_AUTH
1536 	Desc:   configuration of sleep authorization level
1537 	Type:	System Configuration
1538 	Access:	Write Only
1539 	Length: 1
1540 
1541 ******************************************************************************/
1542 
1543 typedef struct
1544 {
1545     INFO_ELE_HDR
1546     uint8   sleepAuth; /* The sleep level authorization of the device. */
1547 	                   /* 0 - Always active*/
1548 	                   /* 1 - Power down mode: light / fast sleep*/
1549                        /* 2 - ELP mode: Deep / Max sleep*/
1550 
1551     uint8  padding[3]; /* alignment to 32bits boundry   */
1552 }ACXSleepAuth_t;
1553 
1554 /******************************************************************************
1555 
1556     Name:	ACX_PREAMBLE_TYPE
1557 	Type:	Configuration
1558 	Access:	Write Only
1559 	Length: 1
1560 
1561 ******************************************************************************/
1562 
1563 typedef enum
1564 {
1565     ACX_PREAMBLE_LONG = 0,
1566     ACX_PREAMBLE_SHORT = 1,
1567     ACX_DEFAULT_PREAMBLE = ACX_PREAMBLE_LONG
1568 } Preamble_enum;
1569 
1570 #ifdef HOST_COMPILE
1571 typedef uint8 Preamble_e;
1572 #else
1573 typedef Preamble_enum Preamble_e;
1574 #endif
1575 
1576 
1577 typedef struct
1578 {
1579     INFO_ELE_HDR
1580     Preamble_e preamble; /* When set, the WiLink transmits beacon, probe response, */
1581 	                     /* RTS and PS Poll frames with a short preamble. */
1582 	                     /* When clear, the WiLink transmits the frame with a long */
1583 	                     /* preamble.*/
1584     uint8  padding[3];  /* alignment to 32bits boundry   */
1585 } ACXPreamble_t;
1586 
1587 
1588 /******************************************************************************
1589 
1590     Name:	ACX_CCA_THRESHOLD
1591 	Type:	Configuration
1592 	Access:	Write Only
1593 	Length: 2
1594 
1595 ******************************************************************************/
1596 
1597 typedef struct
1598 {
1599     INFO_ELE_HDR
1600     uint16 rxCCAThreshold; /* The Rx Clear Channel Assessment threshold in the PHY*/
1601 	                       /* (the energy threshold).*/
1602     Bool_e txEnergyDetection;
1603     uint8  padding;
1604 } ACXEnergyDetection_t;
1605 
1606 
1607 /******************************************************************************
1608 
1609     Name:	ACX_EVENT_MBOX_MASK
1610 	Type:	Operation
1611 	Access:	Write Only
1612 	Length: 8
1613 
1614 ******************************************************************************/
1615 
1616 typedef struct
1617 {
1618     INFO_ELE_HDR
1619     uint32 lowEventMask;   /* Indicates which events are masked and which are not*/
1620 	                       /* Refer to EventMBoxId_enum in public_event_mbox.h.*/
1621 
1622     uint32 highEventMask;  /* Not in use (should always be set to 0xFFFFFFFF).*/
1623 } ACXEventMboxMask_t;
1624 
1625 
1626 /******************************************************************************
1627 
1628     Name:	ACX_WR_TBTT_AND_DTIM
1629 	Type:	Configuration
1630 	Access:	Write Only
1631 	Length: 3
1632 	Note:   STA Only
1633 
1634 ******************************************************************************/
1635 #ifdef FW_RUNNING_AS_STA
1636 typedef struct
1637 {
1638     INFO_ELE_HDR
1639     uint16 tbtt;         /* Time in TUs between two consecutive Beacons*/
1640     uint8  dtimInterval; /* DTIM interval: */
1641 	                     /* For BSS: Number of TBTTs in a DTIM period (range: 1-10).*/
1642 	                     /* For IBSS: value shall be set to 1.*/
1643     uint8  padding;      /* alignment to 32bits boundry   */
1644 } ACXDtimPeriodCfg_t;
1645 #endif
1646 
1647 /******************************************************************************
1648 
1649     Name:	ACX_DTIM_PERIOD
1650 	Type:	Configuration
1651 	Access:	Write Only
1652 	Length: 2
1653 	Note:   for AP only !!!
1654 
1655 ******************************************************************************/
1656 #ifdef FW_RUNNING_AS_AP
1657 typedef struct
1658 {
1659     uint16 dtimPeriod;
1660     uint8  padding[2];  /* alignment to 32bits boundry   */
1661 } ACXDtimPeriodCfg_t;
1662 #endif
1663 
1664 
1665 /******************************************************************************
1666 
1667     Name:	ACX_ACI_OPTION_CFG
1668 	Type:	Configuration
1669 	Access:	Write Only
1670 	Length: 6
1671 	Note:   OBSOLETE !!! (for 1251)
1672 
1673 ******************************************************************************/
1674 
1675 typedef struct
1676 {
1677     INFO_ELE_HDR
1678     uint8 ACIMode;
1679     uint8 inputCCA;
1680     uint8 txCCA;
1681     uint8 qualifiedCCA;
1682     uint8 stompForRx;
1683     uint8 stompForTx;
1684     uint8 padding[2];  /* alignment to 32bits boundry   */
1685 } ACXConfigACI_t;
1686 
1687 
1688 /******************************************************************************
1689 
1690     Name:	ACX_PM_CFG
1691 	Desc:   Configure the power managment option.
1692 	Type:	Configuration
1693 	Access:	Write Only
1694 	Length: 16
1695 	Note:   ??? (To Be Documented)
1696 
1697 ******************************************************************************/
1698 
1699 typedef struct
1700 {
1701     INFO_ELE_HDR
1702     Bool32 ELPEnable;
1703     Bool32 WakeOnGPIOenable;
1704     uint32 BBWakeUpTime;
1705     uint32 PLLlockTime;
1706 } ACXConfigPM_t;
1707 
1708 /******************************************************************************
1709 
1710     Name:	ACX_CONN_MONIT_PARAMS
1711 	Desc:   This information element configures the SYNCHRONIZATION_TIMEOUT
1712 	        interrupt indicator. It configures the number of missed Beacons
1713 			before issuing the SYNCHRONIZATION_TIMEOUT event.
1714 	Type:	Configuration
1715 	Access:	Write Only
1716 	Length: 8
1717 
1718 ******************************************************************************/
1719 
1720 typedef struct
1721 {
1722     INFO_ELE_HDR
1723     uint32 TSFMissedThreshold; /* The number of consecutive beacons that can be */
1724 	                           /* lost before the WiLink raises the */
1725 	                           /* SYNCHRONIZATION_TIMEOUT event.*/
1726 
1727     uint32 BSSLossTimeout;     /* The delay (in time units) between the time at */
1728 	                           /* which the device issues the SYNCHRONIZATION_TIMEOUT*/
1729 	                           /* event until, if no probe response or beacon is */
1730 	                           /* received a BSS_LOSS event is issued.*/
1731 } AcxConnectionMonitorOptions;
1732 
1733 /******************************************************************************
1734 
1735     Name:	ACX_CONS_TX_FAILURE
1736 	Desc:   This information element configures the number of frames transmission
1737 	        failures before issuing the "Max Tx Retry" event. The counter is
1738 			incremented only for unicast frames or frames that require Ack
1739 	Type:	Configuration
1740 	Access:	Write Only
1741     Length: 1
1742 
1743 ******************************************************************************/
1744 
1745 typedef struct
1746 {
1747     INFO_ELE_HDR
1748     uint8 maxTxRetry; /* the number of frames transmission failures before */
1749                       /* issuing the "Max Tx Retry" event*/
1750     uint8  padding[3];  /* alignment to 32bits boundry   */
1751 } ACXConsTxFailureTriggerParameters_t;
1752 
1753 /******************************************************************************
1754 
1755     Name:	ACX_LOW_SNR
1756 	Desc:   This information element configures the Low/Regained SNR interrupt
1757 	        indicator.
1758 	Type:	Configuration
1759 	Access:	Write Only
1760 	Length: 4
1761 	Note:   To Be Documented
1762 
1763 ******************************************************************************/
1764 
1765 typedef enum
1766 {
1767     LOW_SNR_EVENT_LEVEL = 0,
1768     LOW_SNR_EVENT_EDGE = 1
1769 } LowSNREventType_enum;
1770 
1771 
1772 #ifdef HOST_COMPILE
1773 typedef uint8 LowSNREventType_e;
1774 #else
1775 typedef LowSNREventType_enum LowSNREventType_e;
1776 #endif
1777 
1778 
1779 typedef struct
1780 {
1781     INFO_ELE_HDR
1782     uint8        SNRThreshold;
1783     uint8        SNRFilterWeight;
1784     uint8  SNRFilterDepth;
1785     LowSNREventType_e LowSNREventType;
1786 } ACXLowSNRTriggerParameters_t;
1787 
1788 
1789 /******************************************************************************
1790 
1791     Name:	ACX_BCN_DTIM_OPTIONS
1792 	Type:	Configuration
1793 	Access:	Write Only
1794 	Length: 5
1795 
1796 ******************************************************************************/
1797 
1798 typedef struct
1799 {
1800 	INFO_ELE_HDR
1801     uint16 beaconRxTimeOut;
1802     uint16 broadcastTimeOut;
1803     uint8  rxBroadcastInPS;  /* if set, enables receive of broadcast packets */
1804 	                         /* in Power-Save mode.*/
1805 	uint8  consecutivePsPollDeliveryFailureThr;			/* Consecutive PS Poll Fail before updating the Driver */
1806     uint8  padding[2];       /* alignment to 32bits boundry   */
1807 } ACXBeaconAndBroadcastOptions_t;
1808 
1809 
1810 /******************************************************************************
1811 
1812     Name:	ACX_SG_ENABLE
1813 	Desc:   This command instructs the WiLink to set the Soft Gemini (BT co-existence)
1814 	        state to either enable/disable or sense mode.
1815 	Type:	Configuration
1816 	Access:	Write Only
1817 	Length: 1
1818 
1819 ******************************************************************************/
1820 typedef struct
1821 {
1822     INFO_ELE_HDR
1823 	uint8   Enable; /* specifies whether the SG feature will be enabled (0), */
1824 	                /* disabled(1), in a "sense not active" (3) mode in which */
1825 	                /* upon seeing BT activity a host interrupt will be sent or*/
1826 	                /* in a "sense active" (4) mode which specifies the device */
1827 	                /* should switch on the SG in response to the driver receiving */
1828 	                /* the host interrupt. */
1829     uint8  padding[3];  /* alignment to 32bits boundry   */
1830 } ACXBluetoothWlanCoEnableStruct;
1831 
1832 /******************************************************************************
1833 
1834     Name:	ACX_ANTENNA_DIVERSITY_CFG
1835 	Desc:   Set antenna diversity parameters
1836 	Type:	Configuration
1837 	Access:	Write Only
1838 	Length: 7
1839 	Note:   ??? (To Be Documented)
1840 
1841 ******************************************************************************/
1842 
1843 /* Antenna Diversity Tx definitions*/
1844 typedef enum
1845 {
1846     DIVS_TX_START_ANT1       = 0,     /* Start TX antenna 1.*/
1847     DIVS_TX_START_ANT2       = 1,     /* Start TX antenna 2.*/
1848     DIVS_TX_START_SWITCH     = 2     /* Switch starting Tx Antenna.    */
1849 } TxAntDivsStartOption_enum;
1850 
1851 
1852 /* Antenna Diversity Rx definitions*/
1853 typedef enum
1854 {
1855     DIVS_RX_START_ANT1       = 0,     /* Start RX antenna 1.*/
1856     DIVS_RX_START_ANT2       = 1,     /* Start RX antenna 2.*/
1857     DIVS_RX_START_LAST_RX    = 2,     /* Start RX Last RX Antenna mode.*/
1858     DIVS_RX_START_SWITCH     = 3     /* Switch starting Rx Antenna.    */
1859 } RxAntDivsStartOption_enum;
1860 
1861 #ifdef HOST_COMPILE
1862 typedef uint8 RxAntDivsStartOption_e;
1863 typedef uint8 TxAntDivsStartOption_e;
1864 #else
1865 typedef RxAntDivsStartOption_enum RxAntDivsStartOption_e;
1866 typedef TxAntDivsStartOption_enum TxAntDivsStartOption_e;
1867 #endif
1868 
1869 typedef struct
1870 {
1871     INFO_ELE_HDR
1872     uint8                   enableRxDiversity;
1873     RxAntDivsStartOption_e  rxSelectedAntenna;
1874     uint8                   enableTxDiversity;
1875     TxAntDivsStartOption_e  txSelectedAntenna;
1876     uint8                   rxAntNum;
1877     uint8                   txAntNum;
1878     uint8                   rxTxSharedAnts;
1879     uint8                   padding;  /* alignment to 32bits boundry   */
1880 } AcxSetAntennaDiversityOptions_t;
1881 
1882 
1883 
1884 /******************************************************************************
1885 
1886     Name:	ACX_SG_CFG
1887 	Desc:   This command instructs the WiLink to set the Soft Gemini (BT co-existence)
1888 	        parameters to the desired values.
1889 	Type:	Configuration
1890 	Access:	Write Only
1891 	Length: 1
1892 
1893 ******************************************************************************/
1894 typedef struct
1895 
1896 {
1897     INFO_ELE_HDR
1898 	RateIndex_e wlanRxMinConvertedRateToRespectBtHp; /* Range: 802.11 b,g Rates*/
1899 												     /* The minimum rate of a received WLAN packet in the STA, */
1900 												     /* during protective mode, of which a new BT-HP request */
1901 												     /* during this Rx will always be respected and gain the antenna*/
1902 
1903 	uint16 btHpMaxTime;                         /* the maximum length of time the BT HP */
1904 	                                            /* will be respected (Limitation on BT */
1905 	                                            /* HP time, afterwards will switch to LP).*/
1906 
1907     uint16 wlanHpMaxTime;                       /* the maximum length of time the WLAN HP*/
1908 	                                            /* will be respected (Limitation on WLAN */
1909 	                                            /* HP time, afterwards will switch to LP).*/
1910 
1911     uint16 senseDisableTimer;                   /* The time after the last BT activity */
1912 	                                            /* when the sense mode will return the */
1913 	                                            /* SG state to "SENSE_INACTIVE"*/
1914 
1915     uint16 protectiveRxTimeBeforeBtHp;          /* The time before the next BT HP */
1916 	                                            /* instance in which to send the fast */
1917 	                                            /* CTS.*/
1918 
1919     uint16 protectiveTxTimeBeforeBtHp;          /* The time before the next BT HP */
1920 	                                            /* instance in which to suspend the */
1921 	                                            /* WLAN TX*/
1922 
1923     uint16 protectiveRxTimeBeforeBtHpFastAp;    /* range: 10-20000    default: 1500*/
1924     uint16 protectiveTxTimeBeforeBtHpFastAp;    /* range: 10-20000    default: 3000*/
1925     uint16 protectiveWlanCycleTimeForFastAp;    /* range: 2000-65535  default: 8700*/
1926     uint16 btAntiStarvationPeriod;				/* range: 0 - 15000 (Msec) default: 1000 */
1927     uint16 timeoutNextBtLpPacket;				/* range 400-10000(Usec) default: 3000 */
1928 
1929 	uint16 wakeUpTimeBeforeBeacon;              /* The default value is worse case of */
1930 												/* BT DH5 traffic                     */
1931 	uint16 hpdmMaxGuardTime;					/* range: 0-50000(Usec) default: 1050*/
1932 
1933 	uint16 timeoutNextWlanPacket;				/* Range: 100-50000(Usec) default:2550*/
1934 												/* This timeout purpose is to prevent both BT & WLAN */
1935 												/* antenna starvation. */
1936 
1937     uint8  sgAntennaType;                       /* "0" - shared antenna ; */
1938 	                                            /* "1" - dual antenna.*/
1939 
1940     uint8  signalingType;                       /* "0" - TI legacy signaling ; */
1941 	                                            /* "1" - Palau signaling       */
1942 
1943     uint8  afhLeverageOn;                       /* How to receive information regarding */
1944 	                                            /* the AFH status of the BT. */
1945 	                                            /* "0" - no AFH;*/
1946 	                                            /* "1" - from dedicated GPIO.*/
1947 	                                            /* "2" - AFH on (from host).*/
1948 
1949     uint8  numberQuietCycle;                    /* the number of cycles during which no*/
1950 	                                            /* TX will be sent after 1 cycle of RX */
1951 	                                            /* transaction in protective mode*/
1952 
1953     uint8  maxNumCts;                           /* The maximum number of CTSs that will*/
1954 	                                            /* be sent for receiving RX packet in */
1955 	                                            /* protective mode*/
1956 
1957     uint8  numberOfWlanPackets;                 /* The number of WLAN packets */
1958 	                                            /* transferred in common mode before */
1959                                                 /* switching to the BT.*/
1960 
1961     uint8  numberOfBtPackets;                   /* The number of BT packets transferred*/
1962 	                                            /* in common mode before switching to */
1963 	                                            /* the WLAN.*/
1964 
1965     uint8  numberOfMissedRxForAvalancheTrigger; /* range: 1-255  default: 5*/
1966     uint8  wlanElpHpSupport;                    /* range: 0-1    default: 1*/
1967 
1968 	uint8  btAntiStarvationNumberOfCyclesWithinThePeriod; /* range: 0 - 15  default: 4 */
1969 
1970     uint8  ackModeDuringBtLpInDualAnt;                  /* 0 or 1  */
1971 
1972 
1973     Bool_e allowPaSdToggleDuringBtActivityEnable; /* Allow PA_SD assertion/de-assertion */
1974                                                   /* during enabled BT activity         */
1975 
1976 	Bool_e sgAutoModeNoCts;					    /* Enable/Disable SG2.0 in auto mode: */
1977 												/* Support Both Active & P.S modes */
1978 
1979 	uint8  numOfBtHpRespectedReq;				/*range: 0 - 20  default: 1*/
1980 
1981 } ACXBluetoothWlanCoParamsStruct;
1982 
1983 
1984 
1985 /******************************************************************************
1986 
1987     Name:	ACX_TSF_INFO
1988 	Type:	Operation
1989 	Access:	Read Only
1990 	Length: 20
1991 
1992 ******************************************************************************/
1993 typedef struct ACX_fwTSFInformation
1994 {
1995     INFO_ELE_HDR
1996     uint32 CurrentTSFHigh;
1997     uint32 CurrentTSFLow;
1998     uint32 lastTBTTHigh;
1999     uint32 lastTBTTLow;
2000     uint8 LastDTIMCount;
2001     uint8  padding[3];  /* alignment to 32bits boundry   */
2002 }ACX_fwTSFInformation_t;
2003 
2004 
2005 
2006 
2007 /******************************************************************************
2008 
2009     Name:	ACX_GPIO_CFG
2010 	Type:	Board Configuration
2011 	Access:	Write Only
2012 	Length: 2
2013 	Note:   Not in use !!!
2014 
2015 ******************************************************************************/
2016 
2017 #ifndef _WINDOWS
2018 #define GPIO_DIR_OUTPUT    0
2019 #define GPIO_DIR_INPUT     1
2020 #endif /* ifndef _WINDOWS */
2021 
2022 typedef struct
2023 {
2024     INFO_ELE_HDR
2025     uint8   number;
2026     uint8   direction;
2027     uint8   padding[2];  /* alignment to 32bits boundry   */
2028 } ACXConfigGPIO_t;
2029 
2030 
2031 /******************************************************************************
2032 
2033     Name:	ACX_GPIO_SET
2034 	Type:	Board Configuration
2035 	Access:	Write Only
2036 	Length: 2
2037 	Note:   Not in use !!!
2038 
2039 ******************************************************************************/
2040 
2041 typedef struct
2042 {
2043     INFO_ELE_HDR
2044     uint8   number;
2045     uint8   value;
2046     uint8   padding[2];  /* alignment to 32bits boundry   */
2047 } ACXSetGPIO_t;
2048 
2049 /******************************************************************************
2050 
2051     Name:	ACX_MISC_CFG
2052 	Type:	Board Configuration
2053 	Access:	Read/Write
2054 	Length:	8
2055 	Note:	GPIO_OUT bits to be used for LEDs are defined in the
2056 			NVS Miscellaneous table.  An API to NVS is used by the
2057 			LED-Init routine to fill this table with the LED bit values.
2058 			Not in use !!!
2059 
2060 ******************************************************************************/
2061 
2062 typedef struct
2063 {
2064     INFO_ELE_HDR
2065     uint16 txActivityLed;      /* GPIO_OUT bit for this LED*/
2066     uint16 fwInitLed;          /* GPIO_OUT bit for this LED*/
2067     uint16 diagnosticLed;      /* GPIO_OUT bit for this LED*/
2068     uint16 faaRadioOffGpio;    /* GPIO_OUT bit for the FAA Radio Off feature*/
2069 } ACXMisc_t;
2070 
2071 
2072 /******************************************************************************
2073 
2074 Name:	ACX_BET_ENABLE
2075 Desc:   Enable or Disable the Beacon Early Termination module. In addition initialized the
2076         Max Dropped beacons parameter
2077 Type:	Configuration
2078 Access:	Write
2079 Length: 6
2080 Note:
2081 ******************************************************************************/
2082 typedef struct
2083 
2084 {
2085     INFO_ELE_HDR
2086     uint8           Enable;                                     /* specifies if beacon early termination procedure is enabled or disabled: 0 � disabled, 1 � enabled */
2087     uint8           MaximumConsecutiveET;           /* specifies the maximum number of consecutive beacons that may be early terminated. After this number is reached
2088                                                        at least one full beacon must be correctly received in FW before beacon ET resumes.  Legal range: 0 � 255 */
2089     uint8           padding[2];
2090 }ACXBet_Enable_t;
2091 
2092 
2093 /******************************************************************************
2094 
2095     Name:	DOT11_STATION_ID
2096 	Desc:   This information element specifies the MAC Address assigned to the STA.
2097 	        This default value is the permanent MAC address that is stored in the
2098 			adaptor's non volatile memory. The host can change the MAC address;
2099 			however, the WiLink always reverts to the default value after power up
2100 			or reset.
2101 	Type:	Configuration
2102 	Access:	Read / Write
2103 	Length: 6
2104 	Note:   The byte order of the MAC address must be reversed in this field.
2105 	        For example, if the MAC address is 00 7E 99 11 22 33, this field must
2106 			read 33 22 11 99 7E 00.
2107 
2108 ******************************************************************************/
2109 
2110 typedef struct
2111 {
2112     INFO_ELE_HDR
2113     uint8 dot11StationID[6]; /* The MAC address for the STA.*/
2114     uint8 padding[2];  /* alignment to 32bits boundry   */
2115 } dot11StationIDStruct;
2116 
2117 
2118 /******************************************************************************
2119 
2120     Name:	DOT11_RX_MSDU_LIFE_TIME
2121 	Type:	Operation
2122 	Access:	Write Only
2123 	Length: 4
2124 
2125 ******************************************************************************/
2126 
2127 typedef struct
2128 {
2129     INFO_ELE_HDR
2130     uint32 RxMsduLifeTime; /* The maximum amount of time, in TU, that the WiLink */
2131 	                       /* should attempt to collect fragments of an MSDU before */
2132 	                       /* discarding them. */
2133                            /* The default value for this field is 512.*/
2134 } dot11RxMsduLifeTime_t;
2135 
2136 
2137 /******************************************************************************
2138 
2139     Name:	DOT11_CUR_TX_PWR
2140 	Desc:   This IE indicates the maximum TxPower in Dbm/10 currently being used to transmit data.
2141 	Type:	Operation
2142 	Access:	Write Only
2143 	Length: 1
2144 
2145 ******************************************************************************/
2146 
2147 typedef struct
2148 {
2149     INFO_ELE_HDR
2150     uint8 dot11CurrentTxPower; /* the max Power in Dbm/10 to be used to transmit data.*/
2151     uint8  padding[3];  /* alignment to 32bits boundry   */
2152 } dot11CurrentTxPowerStruct ;
2153 
2154 
2155 
2156 /******************************************************************************
2157 
2158     Name:	DOT11_DEFAULT_KEY
2159 	Desc:   This information element indicates the default key to use to encrypt
2160 	        transmit frames.
2161 	Type:	Configuration
2162 	Access:	Write Only
2163 	Length: 1
2164 
2165 ******************************************************************************/
2166 
2167 typedef enum
2168 {
2169     DEFAULT_KEY_0 = 0,
2170     DEFAULT_KEY_1,
2171     DEFAULT_KEY_2,
2172     DEFAULT_KEY_3,
2173     MAX_NUM_WEP_DEFAULT_KEY
2174 } DefaultKey_enum;
2175 
2176 #ifdef HOST_COMPILE
2177 typedef uint8 DefaultKey_e;
2178 #else
2179 typedef DefaultKey_enum DefaultKey_e;
2180 #endif
2181 
2182 typedef struct
2183 {
2184     INFO_ELE_HDR
2185     DefaultKey_e DefaultKeyId; /*  refer to DefaultKey_enum*/
2186     uint8  padding[3];  /* alignment to 32bits boundry   */
2187 } dot11WEPDefaultKeyId_t;
2188 
2189 
2190 /******************************************************************************
2191 
2192     Name:	DOT11_RX_DOT11_MODE
2193 	Desc:   This IE indicates the current Rx Mode used by DSSS PHY.
2194 	Type:	Configuration
2195 	Access:	Write Only
2196     Length: 4
2197 
2198 ******************************************************************************/
2199 /*
2200 Possible values for Rx DOT11 Mode are the following:
2201 Value	Description
2202 =====   ===========
2203 3	    11g - processing of both a and b packet formats is enabled
2204 2	    11b - processing of b packet format is enabled
2205 1	    11a - processing of a packet format is enabled
2206 0	    undefined
2207 */
2208 
2209 typedef struct
2210 {
2211     INFO_ELE_HDR
2212     uint32 dot11RxDot11Mode; /* refer to above table*/
2213 } dot11RxDot11ModeStruct;
2214 
2215 
2216 /******************************************************************************
2217 
2218     Name:	DOT11_RTS_THRESHOLD
2219 	Type:	Configuration
2220 	Access:	Write Only
2221 	Length: 2
2222 
2223 ******************************************************************************/
2224 
2225 typedef struct
2226 {
2227     INFO_ELE_HDR
2228     uint16  RTSThreshold; /* The number of octets in an MPDU, below which an */
2229 	                      /* RTS/CTS handshake is not performed.*/
2230 
2231     uint8  padding[2];  /* alignment to 32bits boundry   */
2232 }dot11RTSThreshold_t;
2233 
2234 
2235 /******************************************************************************
2236 
2237 	Name:	DOT11_GROUP_ADDRESS_TBL
2238 	Desc:   The variable lengths of MAC addresses that are define as listening for
2239 	        multicast. The field Number of groups identifies how many MAC Addresses
2240 			are relevant in that information element.
2241 	Type:	Configuration
2242 	Access:	Write Only
2243 	Length: up to 50 bytes
2244 
2245 ******************************************************************************/
2246 #define ADDRESS_GROUP_MAX		(8)
2247 #define ADDRESS_GROUP_MAX_LEN	(6 * ADDRESS_GROUP_MAX)
2248 typedef struct
2249 {
2250     INFO_ELE_HDR
2251 	uint8	fltrState;	                         /* 1 - multicast filtering is enabled. */
2252 	                                             /* 0 - multicast filtering is disabled.*/
2253 
2254     uint8   numOfGroups;                         /* number of relevant multicast */
2255 	                                             /* addresses.*/
2256 
2257     uint8   padding[2];  /* alignment to 32bits boundary   */
2258     uint8   dataLocation[ADDRESS_GROUP_MAX_LEN]; /* table of MAC addresses.*/
2259 }dot11MulticastGroupAddrStart_t;
2260 
2261 /******************************************************************************
2262 
2263    ACX_CONFIG_PS_WMM (Patch for Wi-Fi Bug)
2264 
2265 ******************************************************************************/
2266 
2267 typedef struct
2268 {
2269     INFO_ELE_HDR
2270     Bool32      ConfigPsOnWmmMode;  /* TRUE  - Configure PS to work on WMM mode - do not send the NULL/PS_POLL
2271                                                packets even if TIM is set.
2272                                        FALSE - Configure PS to work on Non-WMM mode - work according to the
2273                                                standard. */
2274 } IEConfigPsWmm_t;
2275 
2276 /******************************************************************************
2277 
2278     ACX_SET_RX_DATA_FILTER
2279 
2280 ******************************************************************************/
2281 /* data filter action */
2282 
2283 #ifdef HOST_COMPILE
2284 
2285 #define FILTER_DROP  0
2286 #define FILTER_SIGNAL  1
2287 #define FILTER_FW_HANDLE  2
2288 
2289 #else
2290 
2291 typedef enum {
2292 	FILTER_DROP = 0,
2293 	FILTER_SIGNAL  ,
2294     FILTER_FW_HANDLE,
2295 	FILTER_MAX  = 0xFF
2296 }filter_enum;
2297 
2298 #endif
2299 
2300 #ifdef HOST_COMPILE
2301 typedef uint8 filter_e;
2302 #else
2303 typedef filter_enum filter_e;
2304 #endif
2305 
2306 /* data filter command */
2307 #define REMOVE_FILTER   0
2308 #define ADD_FILTER      1
2309 
2310 /* limitation */
2311 #define MAX_DATA_FILTERS 4
2312 #define MAX_DATA_FILTER_SIZE 90
2313 
2314 typedef struct
2315 {
2316     INFO_ELE_HDR
2317     uint8                command; // 0-remove, 1-add
2318     uint8                index;
2319     filter_e             action;
2320     uint8                numOfFields;
2321     uint8                FPTable; //filter fields starts here. unknown size.
2322 } DataFilterConfig_t;
2323 
2324 /******************************************************************************
2325 
2326     ACX_ENABLE_RX_DATA_FILTER
2327 
2328 ******************************************************************************/
2329 
2330 typedef struct
2331 {
2332     INFO_ELE_HDR
2333     uint8       enable;
2334     filter_e    action;
2335 } DataFilterDefault_t;
2336 
2337 
2338 /******************************************************************************
2339 
2340     ACX_GET_DATA_FILTER_STATISTICS
2341 
2342 ******************************************************************************/
2343 
2344 typedef struct
2345 {
2346     INFO_ELE_HDR
2347     uint32  unmatchedPacketsCount;
2348     uint32  matchedPacketsCount[MAX_DATA_FILTERS];
2349 } ACXDataFilteringStatistics_t;
2350 
2351 
2352 /******************************************************************************
2353 
2354 Name:	ACX_POWER_LEVEL_TABLE
2355 Desc:   Retrieve Maximum Dbm per power level and sub-band.
2356 Type:	Configuration
2357 Access:	Read Only
2358 Length: 20
2359 
2360 ******************************************************************************/
2361 
2362 typedef struct
2363 {
2364 	INFO_ELE_HDR
2365 
2366 	uint8 txPowerTable[NUM_OF_SUB_BANDS][NUM_OF_POWER_LEVEL]; /* Maximun Dbm in Dbm/10 units */
2367 } PowerLevelTable_t;
2368 
2369 
2370 /******************************************************************************
2371 
2372 Name:	ACX_PWR_CONSUMPTION_STATISTICS
2373 Desc:   Retrieve time statistics of the different power states.
2374 Type:	Configuration
2375 Access:	Read Only
2376 Length: 20
2377 
2378 ******************************************************************************/
2379 
2380 typedef struct
2381 {
2382 	INFO_ELE_HDR
2383     uint32 activeTimeCnt_Low;
2384     uint32 activeTimeCnt_Hi;
2385     uint32 powerDownTimeCnt_Low;
2386     uint32 powerDownTimeCnt_Hi;
2387     uint32 elpTimeCnt_Low;
2388     uint32 elpTimeCnt_Hi;
2389 }ACXPowerConsumptionTimeStat_t;
2390 
2391 #endif // PUBLIC_INFOELE_H
2392 
2393