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
51typedef 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
146typedef uint16 InfoElement_e;
147#else
148typedef InfoElement_enum InfoElement_e;
149#endif
150
151
152typedef 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
160typedef 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******************************************************************************/
183typedef 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
192typedef 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
214typedef 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
250typedef 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
259typedef uint8 SlotTime_e;
260#else
261typedef SlotTime_enum SlotTime_e;
262#endif
263
264
265typedef 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******************************************************************************/
283typedef 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
298typedef 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
345typedef 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
372typedef 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
381typedef 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
424typedef 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******************************************************************************/
445typedef 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Âs 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
474typedef 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*/
559typedef 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******************************************************************************/
588typedef 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
656typedef 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
671typedef 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
680typedef uint8 CoexIp_e;
681#else
682typedef CoexIp_enum CoexIp_e;
683#endif
684
685typedef 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
706typedef 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******************************************************************************/
729typedef 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******************************************************************************/
747typedef 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******************************************************************************/
766typedef 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******************************************************************************/
787typedef struct
788{
789    uint32  debug1;
790    uint32  debug2;
791    uint32  debug3;
792    uint32  debug4;
793    uint32  debug5;
794    uint32  debug6;
795}DbgStatistics_t;
796
797typedef 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
808typedef 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
839typedef 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
863typedef struct
864{
865    uint32 RxDMAErrors;
866    uint32 TxDMAErrors;
867} DMAStatistics_t;
868
869
870typedef struct
871{
872    uint32 IRQs;              /* irqisr() */
873} IsrStatistics_t;
874
875
876typedef 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
891typedef 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
908typedef struct MicStatistics_t
909{
910    uint32 MicRxPkts;
911    uint32 MicCalcFailure;
912} MicStatistics_t;
913
914
915typedef 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
925typedef 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
935typedef struct EventStatistics_t
936{
937    uint32 calibration;
938    uint32 rxMismatch;
939    uint32 rxMemEmpty;
940} EventStatistics_t;
941
942
943typedef 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
953typedef 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
963typedef 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
990typedef 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******************************************************************************/
1020typedef 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. */
1049typedef 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******************************************************************************/
1066typedef 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
1074typedef 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
1084typedef 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
1094typedef uint8 ChannelType_e;
1095typedef uint8 PSScheme_e;
1096typedef uint8 AckPolicy_e;
1097#else
1098typedef ChannelType_enum ChannelType_e;
1099typedef PSScheme_enum PSScheme_e;
1100typedef 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
1110typedef 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******************************************************************************/
1137typedef 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
1154typedef 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 */
1165typedef 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
1181typedef 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
1194typedef 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  */
1201typedef struct
1202{
1203    uint8 rssiBeaconAverageWeight;
1204    uint8 rssiPacketAverageWeight;
1205    uint8 snrBeaconAverageWeight;
1206    uint8 snrPacketAverageWeight;
1207}RssiSnrAverageWeights_t;
1208
1209typedef struct
1210{
1211    INFO_ELE_HDR
1212    RssiSnrAverageWeights_t param;
1213}ACXRssiSnrAverageWeights_t;
1214
1215typedef 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
1235typedef 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
1262typedef 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
1281typedef 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
1301typedef 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
1316typedef 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******************************************************************************/
1330typedef 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
1346typedef 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
1367typedef 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
1388typedef 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
1406typedef 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
1418typedef uint8 Preamble_e;
1419#else
1420typedef Preamble_enum Preamble_e;
1421#endif
1422
1423
1424typedef 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
1444typedef 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
1463typedef 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
1485typedef 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
1510typedef 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
1528typedef 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******************************************************************************/
1550typedef 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
1575typedef 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
1622typedef 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******************************************************************************/
1640typedef 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******************************************************************************/
1658typedef 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******************************************************************************/
1717typedef 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
1731Name:   ACX_BET_ENABLE
1732Desc:   Enable or Disable the Beacon Early Termination module. In addition initialized the
1733        Max Dropped beacons parameter
1734Type:   Configuration
1735Access: Write
1736Length: 6
1737Note:
1738******************************************************************************/
1739typedef struct
1740
1741{
1742    INFO_ELE_HDR
1743    uint8           Enable;                                     /* specifies if beacon early termination procedure is enabled or disabled: 0  disabled, 1  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  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
1759typedef 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
1779typedef 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/*
1797Possible values for Rx DOT11 Mode are the following:
1798Value   Description
1799=====   ===========
18003       11g - processing of both a and b packet formats is enabled
18012       11b - processing of b packet format is enabled
18021       11a - processing of a packet format is enabled
18030       undefined
1804*/
1805
1806typedef 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
1822typedef 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)
1845typedef 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
1864typedef 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
1894typedef 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
1904typedef uint8 filter_e;
1905#else
1906typedef 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
1917typedef 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
1938typedef 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
1957typedef 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******************************************************************************/
1978typedef 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******************************************************************************/
2005typedef 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
2015typedef 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
2029typedef 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
2047typedef struct
2048{
2049INFO_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
2065typedef enum
2066{
2067    NO_TX = 0,
2068    PERIOD_ONLY
2069} KeepAliveTrigger_enum;
2070
2071#ifdef HOST_COMPILE
2072typedef uint8 KeepAliveTrigger_e;
2073#else
2074typedef KeepAliveTrigger_enum KeepAliveTrigger_e;
2075#endif
2076
2077typedef 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
2085typedef uint8 KeepAliveTemplateValidation_e;
2086#else
2087typedef KeepAliveTemplateValidation_enum KeepAliveTemplateValidation_e;
2088#endif
2089
2090typedef 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 */
2103typedef 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
2125typedef struct
2126{
2127    INFO_ELE_HDR
2128    uint32 uHtCapabilites;      /*
2129                                 * bit 0  Allow HT Operation
2130                                 * bit 1 - Allow Greenfield format in TX
2131                                 * bit 2  Allow Short GI in TX
2132                                 * bit 3  Allow L-SIG TXOP Protection in TX
2133                                 * bit 4  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 */
2159typedef 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
2180typedef struct
2181{
2182    INFO_ELE_HDR
2183    uint8 uRifsMode;            /* Values: 0  RIFS not allowed, 1  RIFS allowed */
2184    uint8 uHtProtection;        /* Values: 0  3 like in spec */
2185    uint8 uGfProtection;        /* Values: 0 - GF protection not required, 1  GF protection required */
2186    uint8 uHtTxBurstLimit;      /* Values: 0  TX Burst limit not required, 1  TX Burst Limit required */
2187    uint8 uDualCtsProtection;   /*
2188                                 * Values: 0  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
2206typedef 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
2241typedef 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
2251Name:	ACX_PWR_CONSUMPTION_STATISTICS
2252Desc:   Retrieve time statistics of the different power states.
2253Type:	Configuration
2254Access:	Read Only
2255Length: 20
2256
2257******************************************************************************/
2258
2259// Power Statistics
2260typedef 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
2285typedef struct
2286{
2287INFO_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******************************************************************************/
2301typedef 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
2322typedef uint8 rateAdaptParam_e;
2323#else
2324typedef rateAdaptParam_enum rateAdaptParam_e;
2325#endif
2326
2327typedef 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******************************************************************************/
2356typedef 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
2379typedef 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******************************************************************************/
2396typedef 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
2403typedef 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
2425typedef struct
2426{
2427	INFO_ELE_HDR
2428	SmartReflexErrTable_t errorTable[3];
2429}ACXSmartReflexConfigParams_t;
2430
2431#endif /* PUBLIC_INFOELE_H */
2432
2433