OSDN Git Service

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