4 * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved.
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
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
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.
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.
34 /**********************************************************************************************************************
36 FILENAME: public_infoele.h
38 DESCRIPTION: Contains information element defines/structures used by the FW and host.
42 ***********************************************************************************************************************/
43 #ifndef PUBLIC_INFOELE_H
44 #define PUBLIC_INFOELE_H
47 #include "public_types.h"
48 #include "public_commands.h"
49 #include "public_radio.h"
53 ACX_WAKE_UP_CONDITIONS = 0x0002,
61 ACX_MEDIUM_USAGE = 0x000F,
63 ACX_TX_QUEUE_CFG = 0x0011,
64 ACX_STATISTICS = 0x0013, /* Debug API*/
65 ACX_PWR_CONSUMPTION_STATISTICS =0x0014,
66 ACX_FEATURE_CFG = 0x0015,
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,
81 ACX_FM_COEX_CFG = 0x0034,
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,
102 #ifdef RADIO_SCOPE /* RADIO MODULE SECTION START */
104 ACX_RADIO_MODULE_START = 0x0500,
105 ACX_RS_ENABLE = ACX_RADIO_MODULE_START,
110 ACX_RADIO_MODULE_END = 0x0600,
112 #endif /* RADIO MODULE SECTION END */
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,
128 ACX_SET_RATE_MAMAGEMENT_PARAMS = 0x005D,
129 ACX_GET_RATE_MAMAGEMENT_PARAMS = 0x005E,
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,
139 MAX_DOT11_IE = ACX_PM_CONFIG,
141 MAX_IE = 0xFFFF /*force enumeration to 16bits*/
146 typedef uint16 InfoElement_e;
148 typedef InfoElement_enum InfoElement_e;
156 uint32 dataLoc; /*use this to point to for following variable-length data*/
166 #define MAX_NUM_AID 4 /* max number of STAs in IBSS */
170 #define INFO_ELE_HDR EleHdrStruct EleHdr;
175 /******************************************************************************
177 Name: ACX_WAKE_UP_CONDITIONS
182 ******************************************************************************/
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;
195 uint8 wakeUpConditionBitmap; /* The host can set one bit only. */
196 /* WakeUpEventBitMask_e describes the Possible */
197 /* Wakeup configuration bits*/
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 */
205 /******************************************************************************
212 ******************************************************************************/
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*/
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.*/
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*/
234 uint8 numSsidProfiles; /* The number of SSID profiles used in IBSS mode */
235 /* Enables different profiles for different STAs */
237 uint32 totalTxDescriptors; /* Total TX Descriptors - in the past it was configured per AC */
241 /******************************************************************************
248 ******************************************************************************/
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
259 typedef uint8 SlotTime_e;
261 typedef SlotTime_enum SlotTime_e;
268 uint8 woneIndex; /* reserved*/
270 SlotTime_e slotTime; /* The slot size to be used. refer to SlotTime_enum. */
275 /******************************************************************************
282 ******************************************************************************/
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. */
294 AC_INVALID = 0xFF, /* used for gTxACconstraint */
295 NUM_ACCESS_CATEGORIES = 4
296 } AccessCategory_enum;
300 TID0 = 0, /* Best Effort/Legacy*/
301 TID1 = 1, /* Best Effort/Legacy*/
302 TID2 = 2, /* Background*/
305 TID5 = 5, /* Broadcast dummy access category*/
307 TID7 = 7, /* managment */
308 NUM_TRAFFIC_CATEGORIES = 8
309 } TrafficCategory_enum;
312 #define AC_REQUEST 0xfe /* Special access category type for */
316 /* following are defult values for the IE fields*/
321 #define CWMAX_BK 1023
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 */
329 #define AIFS_MIN AIFS_PIFS
333 #define AIFSN_VI AIFS_PIFS
334 #define AIFSN_VO AIFS_PIFS
339 #define DEFAULT_AC_SHORT_RETRY_LIMIT 7
340 #define DEFAULT_AC_LONG_RETRY_LIMIT 4
342 /* rxTimeout values */
343 #define NO_RX_TIMEOUT 0
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.*/
356 uint16 txopLimit; /* The TX Op Limit (in microseconds) for the access class.*/
360 /******************************************************************************
366 Note: Except for the numTxMemBlks, numRxMemBlks fields, this is
367 used in MASTER mode only!!!
369 ******************************************************************************/
370 #define MEM_MAP_NUM_FIELDS 24
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;
386 void *wepDefaultKeyStart;
387 void *wepDefaultKeyEnd;
390 void *packetTemplateStart;
391 void *packetTemplateEnd;
392 TxResultPointers_t trqBlock;
394 void *queueMemoryStart;
395 void *queueMemoryEnd;
396 void *packetMemoryPoolStart;
397 void *packetMemoryPoolEnd;
398 void *debugBuffer1Start;
399 void *debugBuffer1End;
400 void *debugBuffer2Start;
401 void *debugBuffer2End;
403 uint32 numTxMemBlks; /* Number of blocks that FW allocated for TX packets.*/
404 uint32 numRxMemBlks; /* Number of blocks that FW allocated for RX packets. */
406 /* the following 4 fields are valid in SLAVE mode only */
415 /******************************************************************************
422 ******************************************************************************/
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 */
437 /******************************************************************************
444 ******************************************************************************/
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.*/
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.*/
456 uint32 validFrameCount; /* The number of MPDU
\92s without PLCP header errors received*/
457 /* since the last time this information element was interrogated. */
458 /* This field is automatically cleared when it is interrogated.*/
460 uint32 seqNumMissCount; /* the number of missed sequence numbers in the squentially */
461 /* values of frames seq numbers */
463 } ACXErrorCounters_t;
465 /******************************************************************************
467 Name: ACX_MEDIUM_USAGE
472 ******************************************************************************/
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*/
481 /******************************************************************************
484 Type: Filtering Configuration
488 ******************************************************************************/
490 * Rx configuration (filter) information element
491 * ---------------------------------------------
494 RX ConfigOptions Table
498 13 Copy RX Status - when set, write three receive status words to top of
500 When clear, do not write three status words (added rev 1.5)
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.
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.
527 RX FilterOptions Table
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
557 When clear, these frames are discarded.
562 uint32 ConfigOptions; /* The configuration of the receiver in the WiLink. */
563 /* "RX ConfigOptions Table" describes the format of */
565 uint32 FilterOptions; /* The types of frames that the WiLink can receive. */
566 /* "RX FilterOptions Table" describes the format of */
570 /******************************************************************************
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
583 Type: Filtering Configuration
587 ******************************************************************************/
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;
602 /******************************************************************************
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
612 All information elements that are not in the table should be ignored for
614 This functionality is only enabled when beacon filtering is enabled by
615 ACX_BEACON_FILTER_OPT.
616 Type: Filtering Configuration
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.
623 ******************************************************************************/
626 ACXBeaconFilterEntry (not 221)
627 Byte Offset Size (Bytes) Definition
628 =========== ============ ==========
630 1 1 Treatment bit mask
632 ACXBeaconFilterEntry (221)
633 Byte Offset Size (Bytes) Definition
634 =========== ============ ==========
636 1 1 Treatment bit mask
642 Treatment bit mask - The information element handling:
643 bit 0 - The information element is compared and transferred
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.
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))
656 typedef struct ACXBeaconFilterIETableStruct {
658 uint8 NumberOfIEs; /* The number of IE's in the table*/
659 /* 0 - clears the table.*/
661 uint8 padding[3]; /* alignment to 32bits boundry */
662 uint8 IETable[BEACON_FILTER_TABLE_MAX_SIZE];
663 } ACXBeaconFilterIETable_t;
665 /******************************************************************************
667 Name: ACX_COEX_ACTIVITY_TABLE
669 ******************************************************************************/
675 COEX_IP_DUAL_MODE, /* That define isn't valid value in DR&FW interface and use just in the FW */
680 typedef uint8 CoexIp_e;
682 typedef CoexIp_enum CoexIp_e;
685 typedef struct ACXCoexActivityIEStruct {
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;
697 /******************************************************************************
699 Name: ACX_ARP_IP_FILTER
700 Type: Filtering Configuration
704 ******************************************************************************/
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.*/
721 /******************************************************************************
723 Name: ACX_IBSS_FILTER
724 Type: Filtering Configuration
728 ******************************************************************************/
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;
739 /******************************************************************************
741 Name: ACX_SERVICE_PERIOD_TIMEOUT
746 ******************************************************************************/
750 uint16 PsPollTimeout; /* the maximum time that the device will wait to receive */
751 /* traffic from the AP after transmission of PS-poll.*/
753 uint16 UpsdTimeout; /* the maximum time that the device will wait to receive */
754 /* traffic from the AP after transmission from UPSD enabled*/
758 /******************************************************************************
760 Name: ACX_TX_QUEUE_CFG
765 ******************************************************************************/
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 */
773 uint16 numberOfBlockLowThreshold; /* The minimum memory blocks that are */
774 /* guaranteed for this queue.*/
778 /******************************************************************************
786 ******************************************************************************/
800 uint32 numOfPreparedDescs;
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;
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;
833 uint32 numOfTxXfrOutOfMem;
834 uint32 numOfTxDmaProgrammed;
835 uint32 numOfTxDmaDone;
842 uint32 RxHdrOverflow;
844 uint32 RxDroppedFrame;
845 uint32 RxCompleteDroppedFrame;
872 uint32 IRQs; /* irqisr() */
876 typedef struct WepStatistics_t
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*/
890 #define PWR_STAT_MAX_CONT_MISSED_BCNS_SPREAD 10
891 typedef struct PwrStatistics_t
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.*/
903 /* ContMissBcnsSpread[9] - ten and more continuous missed beacons.*/
904 uint32 RcvdAwakeBeaconsCnt; /* Count the number of beacons in awake mode.*/
908 typedef struct MicStatistics_t
911 uint32 MicCalcFailure;
915 typedef struct AesStatisticsStruct
917 uint32 AesEncryptFail;
918 uint32 AesDecryptFail;
919 uint32 AesEncryptPackets;
920 uint32 AesDecryptPackets;
921 uint32 AesEncryptInterrupt;
922 uint32 AesDecryptInterrupt;
925 typedef struct GemStatisticsStruct
927 uint32 GemEncryptFail;
928 uint32 GemDecryptFail;
929 uint32 GemEncryptPackets;
930 uint32 GemDecryptPackets;
931 uint32 GemEncryptInterrupt;
932 uint32 GemDecryptInterrupt;
935 typedef struct EventStatistics_t
943 typedef struct PsPollUpsdStatistics_t
945 uint32 psPollTimeOuts;
947 uint32 upsdMaxAPturn;
948 uint32 psPollMaxAPturn;
949 uint32 psPollUtilization;
950 uint32 upsdUtilization;
951 } PsPollUpsdStatistics_t;
953 typedef struct RxFilterStatistics_t
961 } RxFilterStatistics_t;
963 typedef struct ClaibrationFailStatistics_t
966 uint32 initRadioBandsFail;
967 uint32 initSetParams;
968 uint32 initTxClpcFail;
969 uint32 initRxIqMmFail;
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;
988 }ClaibrationFailStatistics_t;
990 typedef struct ACXStatisticsStruct
993 RingStatistics_t ringStat;
994 DbgStatistics_t debug;
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;
1010 /******************************************************************************
1012 Name: ACX_ROAMING_STATISTICS_TBL
1013 Desc: This information element reads the current roaming triggers
1019 ******************************************************************************/
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;
1031 /******************************************************************************
1033 Name: ACX_FEATURE_CFG
1034 Desc: Provides expandability for future features
1039 ******************************************************************************/
1041 /* bit defines for Option: */
1042 #define FEAT_PCI_CLK_RUN_ENABLE 0x00000002 /* Enable CLK_RUN on PCI bus */
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. */
1052 uint32 Options; /* Data flow options - refer to above definitions*/
1053 uint32 dataflowOptions; /* Data flow options - refer to above definitions*/
1054 } ACXFeatureConfig_t;
1058 /******************************************************************************
1065 ******************************************************************************/
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
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
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
1094 typedef uint8 ChannelType_e;
1095 typedef uint8 PSScheme_e;
1096 typedef uint8 AckPolicy_e;
1098 typedef ChannelType_enum ChannelType_e;
1099 typedef PSScheme_enum PSScheme_e;
1100 typedef AckPolicy_enum AckPolicy_e;
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.
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 !!!*/
1129 /******************************************************************************
1131 Name: ACX_PS_RX_STREAMING
1136 ******************************************************************************/
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*/
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;
1150 /************************************************************
1151 * MULTIPLE RSSI AND SNR *
1152 *************************************************************/
1156 RX_QUALITY_EVENT_LEVEL = 0, /* The event is a "Level" indication which keeps */
1157 /* triggering as long as the average RSSI is below*/
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;
1164 /* The direction in which the trigger is active */
1167 RSSI_EVENT_DIR_LOW = 0,
1168 RSSI_EVENT_DIR_HIGH = 1,
1169 RSSI_EVENT_DIR_BIDIR = 2
1172 /******************************************************************************
1174 RSSI/SNR trigger configuration:
1176 ACX_RSSI_SNR_TRIGGER
1179 ******************************************************************************/
1180 #define NUM_OF_RSSI_SNR_TRIGGERS 8
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) */
1192 }RssiSnrTriggerCfg_t;
1197 RssiSnrTriggerCfg_t param;
1198 }ACXRssiSnrTriggerCfg_t;
1200 /* Filter Weight for every one of 4 RSSI /SNR Trigger Metrics */
1203 uint8 rssiBeaconAverageWeight;
1204 uint8 rssiPacketAverageWeight;
1205 uint8 snrBeaconAverageWeight;
1206 uint8 snrPacketAverageWeight;
1207 }RssiSnrAverageWeights_t;
1212 RssiSnrAverageWeights_t param;
1213 }ACXRssiSnrAverageWeights_t;
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
1224 /******************************************************************************
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.
1231 Length: 48 (NOISE_HIST_LEN=8)
1233 ******************************************************************************/
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.*/
1242 uint32 numOfLostCycles; /* This field indicates the number of measurement */
1243 /* cycles with failure because Tx was active.*/
1245 uint32 numOfTxHwGenLostCycles; /* This field indicates the number of measurement */
1246 /* cycles with failure because Tx (FW Generated)*/
1249 uint32 numOfRxLostCycles; /* This field indicates the number of measurement */
1250 /* cycles because the Rx CCA was active. */
1251 } NoiseHistResult_t;
1253 /******************************************************************************
1255 Name: ACX_PD_THRESHOLD
1260 ******************************************************************************/
1265 uint32 pdThreshold; /* The packet detection threshold in the PHY.*/
1266 } ACXPacketDetection_t;
1269 /******************************************************************************
1271 Name: ACX_RATE_POLICY
1276 ******************************************************************************/
1278 #define HOST_MAX_RATE_POLICIES (8)
1284 uint32 numOfClasses; /* The number of transmission rate */
1285 /* fallback policy classes.*/
1287 txAttrClass_t rateClasses[HOST_MAX_RATE_POLICIES]; /* Rate Policies table*/
1288 }ACXTxAttrClasses_t;
1292 /******************************************************************************
1294 Name: ACX_CTS_PROTECTION
1299 ******************************************************************************/
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;
1310 /******************************************************************************
1314 ******************************************************************************/
1319 uint16 fragThreshold;
1320 uint8 padding[2]; /* alignment toIE_RTS_CTS_CFG 32bits boundry */
1322 } ACXFRAGThreshold_t;
1325 /******************************************************************************
1329 ******************************************************************************/
1332 RX_QUEUE_TYPE_RX_LOW_PRIORITY, /* All except the high priority */
1333 RX_QUEUE_TYPE_RX_HIGH_PRIORITY, /* Management and voice packets */
1335 RX_QUEUE_TYPE_MAX = MAX_POSITIVE8
1340 typedef uint8 RxQueueType_e;
1342 typedef RxQueueType_enum RxQueueType_e;
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 */
1354 } ACXRxBufferingConfig_t;
1357 /******************************************************************************
1359 Name: ACX_SLEEP_AUTH
1360 Desc: configuration of sleep authorization level
1361 Type: System Configuration
1365 ******************************************************************************/
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*/
1375 uint8 padding[3]; /* alignment to 32bits boundry */
1378 /******************************************************************************
1381 Desc: configuration of power management
1382 Type: System Configuration
1386 ******************************************************************************/
1391 uint32 hostClkSettlingTime; /* Host CLK settling time (in uSec units) */
1392 uint8 hostFastWakeupSupport; /* 0 - not supported */
1394 uint8 padding[3]; /* alignment to 32bits boundry */
1397 /******************************************************************************
1399 Name: ACX_PREAMBLE_TYPE
1404 ******************************************************************************/
1411 N_MIXED_MODE_PREAMBLE = 6,
1412 GREENFIELD_PREAMBLE = 7,
1413 PREAMBLE_INVALID = 0xFF
1418 typedef uint8 Preamble_e;
1420 typedef Preamble_enum Preamble_e;
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 */
1431 uint8 padding[3]; /* alignment to 32bits boundry */
1435 /******************************************************************************
1437 Name: ACX_CCA_THRESHOLD
1442 ******************************************************************************/
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*/
1451 } ACXEnergyDetection_t;
1454 /******************************************************************************
1456 Name: ACX_EVENT_MBOX_MASK
1461 ******************************************************************************/
1466 uint32 lowEventMask; /* Indicates which events are masked and which are not*/
1467 /* Refer to EventMBoxId_enum in public_event_mbox.h.*/
1469 uint32 highEventMask; /* Not in use (should always be set to 0xFFFFFFFF).*/
1470 } ACXEventMboxMask_t;
1473 /******************************************************************************
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.
1483 ******************************************************************************/
1488 uint32 TSFMissedThreshold; /* The number of consecutive beacons that can be */
1489 /* lost before the WiLink raises the */
1490 /* SYNCHRONIZATION_TIMEOUT event.*/
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;
1498 /******************************************************************************
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
1508 ******************************************************************************/
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;
1519 /******************************************************************************
1521 Name: ACX_BCN_DTIM_OPTIONS
1526 ******************************************************************************/
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;
1540 /******************************************************************************
1543 Desc: This command instructs the WiLink to set the Soft Gemini (BT co-existence)
1544 state to either enable/disable or sense mode.
1549 ******************************************************************************/
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
1557 Default Value: 0- Co-ex operation is Disabled
1560 uint8 padding[3]; /* alignment to 32bits boundry */
1562 } ACXBluetoothWlanCoEnableStruct;
1566 /** \struct TSoftGeminiParams
1567 * \brief Soft Gemini Parameters
1570 * Used for Setting/Printing Soft Gemini Parameters
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,
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
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 */
1627 } TSoftGeminiParams;
1630 /******************************************************************************
1633 Desc: This command instructs the WiLink to set the Soft Gemini (BT co-existence)
1634 parameters to the desired values.
1636 Access: Write (Read For GWSI - disable for now)
1639 ******************************************************************************/
1645 TSoftGeminiParams softGeminiParams;
1646 } ACXBluetoothWlanCoParamsStruct;
1648 /******************************************************************************
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.
1657 ******************************************************************************/
1663 uint8 enable; /* enable(1) / disable(0) the FM Coex feature */
1665 uint8 swallowPeriod; /* Swallow period used in COEX PLL swallowing mechanism,
1666 Range: 0-0xFF, 0xFF = use FW default
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
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
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
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
1685 uint32 coexPllStabilizationTime; /* The time duration in uSec required for COEX PLL to stabilize.
1686 0xFFFFFFFF = use FW default
1689 uint16 ldoStabilizationTime; /* The time duration in uSec required for LDO to stabilize.
1690 0xFFFFFFFF = use FW default
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
1701 uint8 swallowClkDif; /* The swallow clock difference of the swallowing mechanism.
1702 0xFF = use FW default
1705 } ACXWlanFmCoexStruct;
1709 /******************************************************************************
1716 ******************************************************************************/
1717 typedef struct ACX_fwTSFInformation
1720 uint32 CurrentTSFHigh;
1721 uint32 CurrentTSFLow;
1722 uint32 lastTBTTHigh;
1724 uint8 LastDTIMCount;
1725 uint8 padding[3]; /* alignment to 32bits boundry */
1726 }ACX_fwTSFInformation_t;
1729 /******************************************************************************
1731 Name: ACX_BET_ENABLE
1732 Desc: Enable or Disable the Beacon Early Termination module. In addition initialized the
1733 Max Dropped beacons parameter
1738 ******************************************************************************/
1743 uint8 Enable; /* specifies if beacon early termination procedure is enabled or disabled: 0
\96 disabled, 1
\96 enabled */
1744 uint8 MaximumConsecutiveET; /* specifies the maximum number of consecutive beacons that may be early terminated. After this number is reached
1745 at least one full beacon must be correctly received in FW before beacon ET resumes. Legal range: 0
\96 255 */
1750 /******************************************************************************
1752 Name: DOT11_RX_MSDU_LIFE_TIME
1757 ******************************************************************************/
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;
1769 /******************************************************************************
1771 Name: DOT11_CUR_TX_PWR
1772 Desc: This IE indicates the maximum TxPower in Dbm/10 currently being used to transmit data.
1777 ******************************************************************************/
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 ;
1787 /******************************************************************************
1789 Name: DOT11_RX_DOT11_MODE
1790 Desc: This IE indicates the current Rx Mode used by DSSS PHY.
1795 ******************************************************************************/
1797 Possible values for Rx DOT11 Mode are the following:
1800 3 11g - processing of both a and b packet formats is enabled
1801 2 11b - processing of b packet format is enabled
1802 1 11a - processing of a packet format is enabled
1809 uint32 dot11RxDot11Mode; /* refer to above table*/
1810 } dot11RxDot11ModeStruct;
1813 /******************************************************************************
1815 Name: DOT11_RTS_THRESHOLD
1820 ******************************************************************************/
1825 uint16 RTSThreshold; /* The number of octets in an MPDU, below which an */
1826 /* RTS/CTS handshake is not performed.*/
1828 uint8 padding[2]; /* alignment to 32bits boundry */
1829 }dot11RTSThreshold_t;
1832 /******************************************************************************
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.
1840 Length: up to 50 bytes
1842 ******************************************************************************/
1843 #define ADDRESS_GROUP_MAX (8)
1844 #define ADDRESS_GROUP_MAX_LEN (6 * ADDRESS_GROUP_MAX)
1848 uint8 fltrState; /* 1 - multicast filtering is enabled. */
1849 /* 0 - multicast filtering is disabled.*/
1851 uint8 numOfGroups; /* number of relevant multicast */
1854 uint8 padding[2]; /* alignment to 32bits boundary */
1855 uint8 dataLocation[ADDRESS_GROUP_MAX_LEN]; /* table of MAC addresses.*/
1856 }dot11MulticastGroupAddrStart_t;
1858 /******************************************************************************
1860 ACX_CONFIG_PS_WMM (Patch for Wi-Fi Bug)
1862 ******************************************************************************/
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
1873 /******************************************************************************
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
1881 Length: 4 + size of the fields of the filter (can vary between filters)
1883 ******************************************************************************/
1884 /* data filter action */
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. */
1904 typedef uint8 filter_e;
1906 typedef filter_enum filter_e;
1909 /* data filter command */
1910 #define REMOVE_FILTER 0 /* Remove filter */
1911 #define ADD_FILTER 1 /* Add filter */
1914 #define MAX_DATA_FILTERS 4
1915 #define MAX_DATA_FILTER_SIZE 90
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;
1927 /******************************************************************************
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
1936 ******************************************************************************/
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;
1947 /******************************************************************************
1949 Name: ACX_GET_DATA_FILTER_STATISTICS
1950 Desc: get statistics of the data filtering module.
1955 ******************************************************************************/
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;
1966 /******************************************************************************
1968 ******************************************************************************
1971 Desc: This command instructs the WiLink to set the Radio Scope functionality
1972 state to either enable/disable.
1977 ******************************************************************************/
1981 uint8 Enable; /* RadioScope feature will be enabled (1) or disabled(0) */
1982 uint8 padding[3]; /* alignment to 32 bits */
1983 } ACXRadioScopeEnableStruct;
1985 /******************************************************************************
1988 Desc: This command instructs the WiLink to set the Radio Scope
1989 parameters to the desired values.
1994 We have the following available memory area:
1996 Information Element ID - 2 bytes
1997 Information Element Length - 2 bytes
1999 Now the rest is MAX_CMD_PARAMS
2000 but 4 bytes must be subtracted
2001 because of the IE in Buffer.
2004 ******************************************************************************/
2012 uint8 padding[1]; /*32 bit padding */
2017 /* We have the following available memory area: */
2019 /* Information Element ID - 2 bytes */
2020 /* Information Element Length - 2 bytes */
2021 /* Number Of Packets in Buffer - 2 bytes */
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;
2033 /*uint8 padding[MAX_CMD_PARAMS-4]; */
2034 RxCyclicBufferStruct buf;
2035 } ACXRadioScopeRxParamsStruct;
2037 #endif /* RADIO_SCOPE */
2038 /******************************************************************************
2039 Name: ACX_KEEP_ALIVE_MODE
2040 Desc: Set/Get the Keep Alive feature mode.
2043 Length: 4 - 1 for the mode + 3 for padding.
2045 ******************************************************************************/
2055 /******************************************************************************
2057 Name: ACX_SET_KEEP_ALIVE_CONFIG
2058 Desc: Configure a KLV template parameters.
2063 ******************************************************************************/
2069 } KeepAliveTrigger_enum;
2072 typedef uint8 KeepAliveTrigger_e;
2074 typedef KeepAliveTrigger_enum KeepAliveTrigger_e;
2079 KLV_TEMPLATE_INVALID = 0,
2081 KLV_TEMPLATE_PENDING /* this option is FW internal only. host can only configure VALID or INVALID*/
2082 } KeepAliveTemplateValidation_enum;
2085 typedef uint8 KeepAliveTemplateValidation_e;
2087 typedef KeepAliveTemplateValidation_enum KeepAliveTemplateValidation_e;
2093 uint32 period; /*at range 1000-3600000 (msec). (To allow better range for debugging)*/
2095 KeepAliveTemplateValidation_e valid;
2096 KeepAliveTrigger_e trigger;
2098 } AcxSetKeepAliveConfig_t;
2101 * BA sessen interface structure
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;
2114 /******************************************************************************
2116 Name: ACX_PEER_HT_CAP
2117 Desc: Configure HT capabilities - declare the capabilities of the peer
2118 we are connected to.
2123 ******************************************************************************/
2128 uint32 uHtCapabilites; /*
2129 * bit 0
\96 Allow HT Operation
2130 * bit 1 - Allow Greenfield format in TX
2131 * bit 2
\96 Allow Short GI in TX
2132 * bit 3
\96 Allow L-SIG TXOP Protection in TX
2133 * bit 4
\96 Allow HT Control fields in TX.
2134 * Note, driver will still leave space for HT control in packets regardless
2135 * of the value of this field. FW will be responsible to drop the HT field
2136 * from any frame when this Bit is set to 0.
2137 * bit 5 - Allow RD initiation in TXOP. FW is allowed to initate RD. Exact policy
2138 * setting for this feature is TBD.
2139 * Note, this bit can only be set to 1 if bit 3 is set to 1.
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
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
2154 uint8 uAmpduMinSpacing; /* This is the minimal spacing required when sending A-MPDUs to the AP. */
2156 } TAxcHtCapabilitiesIeFwInterface;
2158 /* EHtCapabilitesFwBitMask mapping */
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;
2170 /******************************************************************************
2172 Name: ACX_HT_BSS_OPERATION
2173 Desc: Configure HT capabilities - AP rules for behavior in the BSS.
2178 ******************************************************************************/
2183 uint8 uRifsMode; /* Values: 0
\96 RIFS not allowed, 1
\96 RIFS allowed */
2184 uint8 uHtProtection; /* Values: 0
\96 3 like in spec */
2185 uint8 uGfProtection; /* Values: 0 - GF protection not required, 1
\96 GF protection required */
2186 uint8 uHtTxBurstLimit; /* Values: 0
\96 TX Burst limit not required, 1
\96 TX Burst Limit required */
2187 uint8 uDualCtsProtection; /*
2188 * Values: 0
\96 Dual CTS protection not required, 1 Dual CTS Protection required
2189 * Note: When this value is set to 1 FW will protect all TXOP with RTS
2190 * frame and will not use CTS-to-self regardless of the value of the
2191 * ACX_CTS_PROTECTION information element
2195 } TAxcHtInformationIeFwInterface;
2197 /******************************************************************************
2198 FwStaticData_t - information stored in command mailbox area after the Init
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 ******************************************************************************/
2208 /* dot11StationIDStruct */
2209 uint8 dot11StationID[6]; /* The MAC address for the STA.*/
2210 uint8 padding[2]; /* alignment to 32bits boundry */
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.*/
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 */
2231 /******************************************************************************
2239 ******************************************************************************/
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;
2249 /******************************************************************************
2251 Name: ACX_PWR_CONSUMPTION_STATISTICS
2252 Desc: Retrieve time statistics of the different power states.
2257 ******************************************************************************/
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;
2276 /******************************************************************************
2277 Name: ACX_BURST_MODE
2278 Desc: enable/disable burst mode in case TxOp limit != 0.
2281 Length: 1 - 2 for the mode + 3 for padding.
2283 ******************************************************************************/
2293 /******************************************************************************
2294 Name: ACX_SET_RATE_MAMAGEMENT_PARAMS
2295 Desc: configure one of the configurable parameters in rate management module.
2300 ******************************************************************************/
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;
2322 typedef uint8 rateAdaptParam_e;
2324 typedef rateAdaptParam_enum rateAdaptParam_e;
2330 rateAdaptParam_e paramIndex;
2331 uint16 RateRetryScore;
2336 uint8 InverseCuriosityFactor;
2339 uint8 PerAlphaShift;
2341 uint8 PerBeta1Shift;
2342 uint8 PerBeta2Shift;
2344 uint8 RateCheckDown;
2345 uint8 RateRetryPolicy[13];
2346 }AcxRateMangeParams;
2348 /******************************************************************************
2349 Name: ACX_GET_RATE_MAMAGEMENT_PARAMS
2350 Desc: read the configurable parameters of rate management module.
2355 ******************************************************************************/
2359 int32 SNRCorrectionHighLimit;
2360 int32 SNRCorrectionLowLimit;
2362 int32 attemptEvaluateTH;
2363 int32 goodAttemptTH;
2364 int32 curveCorrectionStep;
2365 }AcxRateMangeReadParams;
2369 /******************************************************************************
2371 Name: ACX_SET_SMART_REFLEX_STATE
2372 Desc: Configure smart reflex state (enable/disable).
2377 ******************************************************************************/
2384 }ACXSmartReflexState_t;
2387 /******************************************************************************
2389 Name: ACX_SET_SMART_REFLEX_DEBUG
2390 Desc: Configure smart reflex mechanism parameters - for debug mode.
2395 ******************************************************************************/
2398 uint8 len; //maximum length is 14
2400 int8 values[14]; //this is the maximum length (in rows) of the error table
2401 }SmartReflexErrTable_t;
2406 SmartReflexErrTable_t errorTable;
2411 }ACXSmartReflexDebugParams_t;
2414 /******************************************************************************
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.
2423 ******************************************************************************/
2428 SmartReflexErrTable_t errorTable[3];
2429 }ACXSmartReflexConfigParams_t;
2431 #endif /* PUBLIC_INFOELE_H */