--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/TWD/FirmwareApi/public_infoele.h Tue Jun 29 12:34:26 2010 +0100
@@ -0,0 +1,2513 @@
+/*
+ * public_infoele.h
+ *
+ * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved.
+ * All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 or BSD License which accompanies
+ * this distribution. The Eclipse Public License is available at
+ * http://www.eclipse.org/legal/epl-v10.html and the BSD License is as below.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * * Neither the name Texas Instruments nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**********************************************************************************************************************
+
+ FILENAME: public_infoele.h
+
+ DESCRIPTION: Contains information element defines/structures used by the FW and host.
+
+
+
+***********************************************************************************************************************/
+#ifndef PUBLIC_INFOELE_H
+#define PUBLIC_INFOELE_H
+
+
+#include "public_types.h"
+#include "public_commands.h"
+#include "public_radio.h"
+
+typedef enum
+{
+ ACX_WAKE_UP_CONDITIONS = 0x0002,
+ ACX_MEM_CFG = 0x0003,
+ ACX_SLOT = 0x0004,
+
+ ACX_AC_CFG = 0x0007,
+ ACX_MEM_MAP = 0x0008,
+ ACX_AID = 0x000A,
+
+ ACX_MEDIUM_USAGE = 0x000F,
+ ACX_RX_CFG = 0x0010,
+ ACX_TX_QUEUE_CFG = 0x0011,
+ ACX_STATISTICS = 0x0013, /* Debug API*/
+ ACX_PWR_CONSUMPTION_STATISTICS =0x0014,
+ ACX_FEATURE_CFG = 0x0015,
+ ACX_TID_CFG = 0x001A,
+ ACX_PS_RX_STREAMING = 0x001B,
+ ACX_BEACON_FILTER_OPT = 0x001F,
+ ACX_NOISE_HIST = 0x0021,
+ ACX_HDK_VERSION = 0x0022, /* ???*/
+ ACX_PD_THRESHOLD = 0x0023,
+ ACX_TX_CONFIG_OPT = 0x0024,
+ ACX_CCA_THRESHOLD = 0x0025,
+ ACX_EVENT_MBOX_MASK = 0x0026,
+ ACX_CONN_MONIT_PARAMS = 0x002D,
+ ACX_CONS_TX_FAILURE = 0x002F,
+ ACX_BCN_DTIM_OPTIONS = 0x0031,
+ ACX_SG_ENABLE = 0x0032,
+ ACX_SG_CFG = 0x0033,
+ ACX_FM_COEX_CFG = 0x0034,
+
+ ACX_BEACON_FILTER_TABLE = 0x0038,
+ ACX_ARP_IP_FILTER = 0x0039,
+ ACX_ROAMING_STATISTICS_TBL = 0x003B,
+ ACX_RATE_POLICY = 0x003D,
+ ACX_CTS_PROTECTION = 0x003E,
+ ACX_SLEEP_AUTH = 0x003F,
+ ACX_PREAMBLE_TYPE = 0x0040,
+ ACX_ERROR_CNT = 0x0041,
+ ACX_IBSS_FILTER = 0x0044,
+ ACX_SERVICE_PERIOD_TIMEOUT = 0x0045,
+ ACX_TSF_INFO = 0x0046,
+ ACX_CONFIG_PS_WMM = 0x0049,
+ ACX_ENABLE_RX_DATA_FILTER = 0x004A,
+ ACX_SET_RX_DATA_FILTER = 0x004B,
+ ACX_GET_DATA_FILTER_STATISTICS = 0x004C,
+ ACX_RX_CONFIG_OPT = 0x004E,
+ ACX_FRAG_CFG = 0x004F,
+ ACX_BET_ENABLE = 0x0050,
+
+#ifdef RADIO_SCOPE /* RADIO MODULE SECTION START */
+
+ ACX_RADIO_MODULE_START = 0x0500,
+ ACX_RS_ENABLE = ACX_RADIO_MODULE_START,
+ ACX_RS_RX = 0x0501,
+
+ /* Add here ... */
+
+ ACX_RADIO_MODULE_END = 0x0600,
+
+#endif /* RADIO MODULE SECTION END */
+
+ ACX_RSSI_SNR_TRIGGER = 0x0051,
+ ACX_RSSI_SNR_WEIGHTS = 0x0052,
+ ACX_KEEP_ALIVE_MODE = 0x0053,
+ ACX_SET_KEEP_ALIVE_CONFIG = 0x0054,
+ ACX_BA_SESSION_RESPONDER_POLICY = 0x0055,
+ ACX_BA_SESSION_INITIATOR_POLICY = 0x0056,
+ ACX_PEER_HT_CAP = 0x0057,
+ ACX_HT_BSS_OPERATION = 0x0058,
+ ACX_COEX_ACTIVITY = 0x0059,
+ ACX_SET_SMART_REFLEX_DEBUG = 0x005A,
+ ACX_SET_SMART_REFLEX_STATE = 0x005B,
+ ACX_SET_SMART_REFLEX_PARAMS = 0x005F,
+ ACX_BURST_MODE = 0x005C,
+
+ ACX_SET_RATE_MAMAGEMENT_PARAMS = 0x005D,
+ ACX_GET_RATE_MAMAGEMENT_PARAMS = 0x005E,
+
+ ACX_SET_RATE_ADAPT_PARAMS = 0x0060,
+ ACX_SET_DCO_ITRIM_PARAMS = 0x0061,
+
+
+ DOT11_RX_MSDU_LIFE_TIME = 0x1004,
+ DOT11_CUR_TX_PWR = 0x100D,
+ DOT11_RX_DOT11_MODE = 0x1012,
+ DOT11_RTS_THRESHOLD = 0x1013,
+ DOT11_GROUP_ADDRESS_TBL = 0x1014,
+ ACX_SET_RADIO_PARAMS = 0x1015,
+ ACX_PM_CONFIG = 0x1016,
+
+ MAX_DOT11_IE = ACX_PM_CONFIG,
+
+ MAX_IE = 0xFFFF /*force enumeration to 16bits*/
+} InfoElement_enum;
+
+
+#ifdef HOST_COMPILE
+typedef uint16 InfoElement_e;
+#else
+typedef InfoElement_enum InfoElement_e;
+#endif
+
+
+typedef struct
+{
+ InfoElement_e id;
+ uint16 length;
+ uint32 dataLoc; /*use this to point to for following variable-length data*/
+} InfoElement_t;
+
+
+typedef struct
+{
+ uint16 id;
+ uint16 len;
+} EleHdrStruct;
+
+#define MAX_NUM_AID 4 /* max number of STAs in IBSS */
+
+
+#ifdef HOST_COMPILE
+#define INFO_ELE_HDR EleHdrStruct EleHdr;
+#else
+#define INFO_ELE_HDR
+#endif
+
+/******************************************************************************
+
+ Name: ACX_WAKE_UP_CONDITIONS
+ Type: Configuration
+ Access: Write Only
+ Length: 2
+
+******************************************************************************/
+typedef enum
+{
+ WAKE_UP_EVENT_BEACON_BITMAP = 0x01, /* Wake on every Beacon*/
+ WAKE_UP_EVENT_DTIM_BITMAP = 0x02, /* Wake on every DTIM*/
+ WAKE_UP_EVENT_N_DTIM_BITMAP = 0x04, /* Wake on every Nth DTIM (Listen interval)*/
+ WAKE_UP_EVENT_N_BEACONS_BITMAP = 0x08, /* Wake on every Nth Beacon (Nx Beacon)*/
+ WAKE_UP_EVENT_BITS_MASK = 0x0F
+} WakeUpEventBitMask_e;
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint8 wakeUpConditionBitmap; /* The host can set one bit only. */
+ /* WakeUpEventBitMask_e describes the Possible */
+ /* Wakeup configuration bits*/
+
+ uint8 listenInterval; /* 0 for Beacon and Dtim, */
+ /* xDtims (1-10) for Listen Interval and */
+ /* xBeacons (1-255) for NxBeacon*/
+ uint8 padding[2]; /* alignment to 32bits boundry */
+}WakeUpCondition_t;
+
+/******************************************************************************
+
+ Name: ACX_MEM_CFG
+ Type: Configuration
+ Access: Write Only
+ Length: 12
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint8 rxMemblockNumber; /* specifies the number of memory buffers that */
+ /* is allocated to the Rx memory pool. The */
+ /* actual number allocated may be less than*/
+ /* this number if there are not enough memory */
+ /* blocks left over for the Minimum Number of */
+ /* Tx Blocks. Returns the actual number of RX */
+ /* buffers allocated in the memory map*/
+
+ uint8 txMinimumMemblockNumber; /* specifies the minimum number of blocks that */
+ /* must be allocated to the TX pool. Follows */
+ /* this limit even if the Number of Rx Memory */
+ /* Blocks parameter is ignored.*/
+
+ uint8 numStations; /* The number of STAs supported in IBSS mode. */
+ /* The FW uses this field to allocate memory */
+ /* for STA context data such as security keys*/
+
+ uint8 numSsidProfiles; /* The number of SSID profiles used in IBSS mode */
+ /* Enables different profiles for different STAs */
+
+ uint32 totalTxDescriptors; /* Total TX Descriptors - in the past it was configured per AC */
+} ACXConfigMemory_t;
+
+
+/******************************************************************************
+
+ Name: ACX_SLOT
+ Type: Configuration
+ Access: Write Only
+ Length: 8
+
+******************************************************************************/
+
+typedef enum
+{
+ SLOT_TIME_LONG = 0, /* the WiLink uses long (20 us) slots*/
+ SLOT_TIME_SHORT = 1, /* the WiLink uses short (9 us) slots*/
+ DEFAULT_SLOT_TIME = SLOT_TIME_SHORT,
+ MAX_SLOT_TIMES = 0xFF
+} SlotTime_enum;
+
+#ifdef HOST_COMPILE
+typedef uint8 SlotTime_e;
+#else
+typedef SlotTime_enum SlotTime_e;
+#endif
+
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint8 woneIndex; /* reserved*/
+
+ SlotTime_e slotTime; /* The slot size to be used. refer to SlotTime_enum. */
+ uint8 reserved[6];
+} ACXSlot_t;
+
+
+/******************************************************************************
+
+ Name: ACX_AC_CFG
+ Type: Configuration
+ Access: Write Only
+ Length: 8
+
+******************************************************************************/
+typedef enum
+{
+ AC_BE = 0, /* Best Effort/Legacy*/
+ AC_BK = 1, /* Background*/
+ AC_VI = 2, /* Video*/
+ AC_VO = 3, /* Voice*/
+ /* AC_BCAST = 4, */ /* Broadcast dummy access category */
+ AC_CTS2SELF = 4, /* CTS2Self fictitious AC, */
+ /* uses #4 to follow AC_VO, as */
+ /* AC_BCAST does not seem to be in use. */
+ AC_ANY_TID = 0x1F,
+ AC_INVALID = 0xFF, /* used for gTxACconstraint */
+ NUM_ACCESS_CATEGORIES = 4
+} AccessCategory_enum;
+
+typedef enum
+{
+ TID0 = 0, /* Best Effort/Legacy*/
+ TID1 = 1, /* Best Effort/Legacy*/
+ TID2 = 2, /* Background*/
+ TID3 = 3, /* Video*/
+ TID4 = 4, /* Voice*/
+ TID5 = 5, /* Broadcast dummy access category*/
+ TID6 = 6,
+ TID7 = 7, /* managment */
+ NUM_TRAFFIC_CATEGORIES = 8
+} TrafficCategory_enum;
+
+
+#define AC_REQUEST 0xfe /* Special access category type for */
+ /* requests*/
+
+
+/* following are defult values for the IE fields*/
+#define CWMIN_BK 15
+#define CWMIN_BE 15
+#define CWMIN_VI 7
+#define CWMIN_VO 3
+#define CWMAX_BK 1023
+#define CWMAX_BE 63
+#define CWMAX_VI 15
+#define CWMAX_VO 7
+#define AIFS_PIFS 1 /* slot number setting to start transmission at PIFS interval */
+#define AIFS_DIFS 2 /* slot number setting to start transmission at DIFS interval - */
+ /* normal DCF access */
+
+#define AIFS_MIN AIFS_PIFS
+
+#define AIFSN_BK 7
+#define AIFSN_BE 3
+#define AIFSN_VI AIFS_PIFS
+#define AIFSN_VO AIFS_PIFS
+#define TXOP_BK 0
+#define TXOP_BE 0
+#define TXOP_VI 3008
+#define TXOP_VO 1504
+#define DEFAULT_AC_SHORT_RETRY_LIMIT 7
+#define DEFAULT_AC_LONG_RETRY_LIMIT 4
+
+/* rxTimeout values */
+#define NO_RX_TIMEOUT 0
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint8 ac; /* Access Category - The TX queue's access category */
+ /* (refer to AccessCategory_enum)*/
+ uint8 cwMin; /* The contention window minimum size (in slots) for */
+ /* the access class.*/
+ uint16 cwMax; /* The contention window maximum size (in slots) for */
+ /* the access class.*/
+ uint8 aifsn; /* The AIF value (in slots) for the access class.*/
+ uint8 reserved;
+ uint16 txopLimit; /* The TX Op Limit (in microseconds) for the access class.*/
+} ACXAcCfg_t;
+
+
+/******************************************************************************
+
+ Name: ACX_MEM_MAP
+ Type: Configuration
+ Access: Read Only
+ Length: 72
+ Note: Except for the numTxMemBlks, numRxMemBlks fields, this is
+ used in MASTER mode only!!!
+
+******************************************************************************/
+#define MEM_MAP_NUM_FIELDS 24
+
+typedef struct
+{
+ uint32 *controlBlock; /* array of two 32-bit entries in the following order:
+ 1. Tx-Result entries counter written by the FW
+ 2. Tx-Result entries counter read by the host */
+ void *txResultQueueStart; /* points t first descriptor in TRQ */
+} TxResultPointers_t;
+
+
+typedef struct
+{
+ INFO_ELE_HDR
+ void *codeStart;
+ void *codeEnd;
+ void *wepDefaultKeyStart;
+ void *wepDefaultKeyEnd;
+ void *staTableStart;
+ void *staTableEnd;
+ void *packetTemplateStart;
+ void *packetTemplateEnd;
+ TxResultPointers_t trqBlock;
+
+ void *queueMemoryStart;
+ void *queueMemoryEnd;
+ void *packetMemoryPoolStart;
+ void *packetMemoryPoolEnd;
+ void *debugBuffer1Start;
+ void *debugBuffer1End;
+ void *debugBuffer2Start;
+ void *debugBuffer2End;
+
+ uint32 numTxMemBlks; /* Number of blocks that FW allocated for TX packets.*/
+ uint32 numRxMemBlks; /* Number of blocks that FW allocated for RX packets. */
+
+ /* the following 4 fields are valid in SLAVE mode only */
+ uint8 *txCBufPtr;
+ uint8 *rxCBufPtr;
+ void *rxControlPtr;
+ void *txControlPtr;
+
+} MemoryMap_t;
+
+
+/******************************************************************************
+
+ Name: ACX_AID
+ Type: Configuration
+ Access: Write Only
+ Length: 2
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint16 Aid; /* The Association ID to the WiLink. The WiLink uses this */
+ /* field to determine when the STA's AID bit is set in a */
+ /* received beacon and when a PS Poll frame should be */
+ /* transmitted to the AP. The host configures this information */
+ /* element after it has associated with an AP. This information */
+ /* element does not need to be set in Ad Hoc mode.*/
+ uint8 padding[2]; /* alignment to 32bits boundry */
+} ACXAid_t;
+
+
+/******************************************************************************
+
+ Name: ACX_ERROR_CNT
+ Type: Operation
+ Access: Read Only
+ Length: 12
+
+******************************************************************************/
+typedef struct
+{
+ INFO_ELE_HDR
+ uint32 PLCPErrorCount; /* The number of PLCP errors since the last time this */
+ /* information element was interrogated. This field is */
+ /* automatically cleared when it is interrogated.*/
+
+ uint32 FCSErrorCount; /* The number of FCS errors since the last time this */
+ /* information element was interrogated. This field is */
+ /* automatically cleared when it is interrogated.*/
+
+ uint32 validFrameCount; /* The number of MPDUÂ’s without PLCP header errors received*/
+ /* since the last time this information element was interrogated. */
+ /* This field is automatically cleared when it is interrogated.*/
+
+ uint32 seqNumMissCount; /* the number of missed sequence numbers in the squentially */
+ /* values of frames seq numbers */
+
+} ACXErrorCounters_t;
+
+/******************************************************************************
+
+ Name: ACX_MEDIUM_USAGE
+ Type: Configuration
+ Access: Read Only
+ Length: 8
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint32 mediumUsage; /* report to the host the value of medium usage registers*/
+ uint32 period; /* report to the host the value of medium period registers*/
+} ACXMediumUsage_t;
+
+/******************************************************************************
+
+ Name: ACX_RX_CFG
+ Type: Filtering Configuration
+ Access: Write Only
+ Length: 8
+
+******************************************************************************/
+/*
+ * Rx configuration (filter) information element
+ * ---------------------------------------------
+ */
+/*
+ RX ConfigOptions Table
+ Bit Definition
+ === ==========
+ 31:14 Reserved
+ 13 Copy RX Status - when set, write three receive status words to top of
+ rx'd MPDU.
+ When clear, do not write three status words (added rev 1.5)
+ 12 Reserved
+ 11 RX Complete upon FCS error - when set, give rx complete interrupt for
+ FCS errors, after the rx filtering, e.g. unicast frames not to us with
+ FCS error will not generate an interrupt
+ 10 SSID Filter Enable - When set, the WiLink discards all beacon,
+ probe request, and probe response frames with an SSID that does not
+ match the SSID specified by the host in the START/JOIN command.
+ When clear, the WiLink receives frames with any SSID.
+ 9 Broadcast Filter Enable - When set, the WiLink discards all broadcast
+ frames. When clear, the WiLink receives all received broadcast frames.
+ 8:6 Reserved
+ 5 BSSID Filter Enable - When set, the WiLink discards any frames with a
+ BSSID that does not match the BSSID specified by the host.
+ When clear, the WiLink receives frames from any BSSID.
+ 4 MAC Addr Filter - When set, the WiLink discards any frames with a
+ destination address that does not match the MAC address of the adaptor.
+ When clear, the WiLink receives frames destined to any MAC address.
+ 3 Promiscuous - When set, the WiLink receives all valid frames
+ (i.e., all frames that pass the FCS check).
+ When clear, only frames that pass the other filters specified are received.
+ 2 FCS - When set, the WiLink includes the FCS with the received frame.
+ When clear, the FCS is discarded.
+ 1 PLCP header - When set, write all data from baseband to frame buffer
+ including PHY header.
+ 0 Reserved - Always equal to 0.
+
+ RX FilterOptions Table
+ Bit Definition
+ === ==========
+ 31:12 Reserved - Always equal to 0.
+ 11 Association - When set, the WiLink receives all association related frames
+ (association request/response, reassocation request/response, and
+ disassociation). When clear, these frames are discarded.
+ 10 Auth/De auth - When set, the WiLink receives all authentication and
+ de-authentication frames. When clear, these frames are discarded.
+ 9 Beacon - When set, the WiLink receives all beacon frames. When clear,
+ these frames are discarded.
+ 8 Contention Free - When set, the WiLink receives all contention free frames.
+ When clear, these frames are discarded.
+ 7 Control - When set, the WiLink receives all control frames.
+ When clear, these frames are discarded.
+ 6 Data - When set, the WiLink receives all data frames.
+ When clear, these frames are discarded.
+ 5 FCS Error - When set, the WiLink receives frames that have FCS errors.
+ When clear, these frames are discarded.
+ 4 Management - When set, the WiLink receives all management frames.
+ When clear, these frames are discarded.
+ 3 Probe Request - When set, the WiLink receives all probe request frames.
+ When clear, these frames are discarded.
+ 2 Probe Response - When set, the WiLink receives all probe response frames.
+ When clear, these frames are discarded.
+ 1 RTS/CTS/ACK - When set, the WiLink receives all RTS, CTS and ACK frames.
+ When clear, these frames are discarded.
+ 0 Rsvd Type/Sub Type - When set, the WiLink receives all frames that
+ have reserved frame types and sub types as defined by the 802.11
+ specification.
+ When clear, these frames are discarded.
+*/
+typedef struct
+{
+ INFO_ELE_HDR
+ uint32 ConfigOptions; /* The configuration of the receiver in the WiLink. */
+ /* "RX ConfigOptions Table" describes the format of */
+ /* this field.*/
+ uint32 FilterOptions; /* The types of frames that the WiLink can receive. */
+ /* "RX FilterOptions Table" describes the format of */
+ /* this field.*/
+} ACXRxConfig_t;
+
+/******************************************************************************
+
+ Name: ACX_BEACON_FILTER_OPT
+ Desc: This information element enables the host to activate beacon filtering.
+ The filter can only be activated when the STA is in PS mode.
+ When activated, either the host is not notified about beacons whose
+ unicast TIM bit is not set, or these beacons are buffered first and
+ the host is notified only after the buffer reaches a predetermined size.
+ The host should not activate the filter if it configures the firmware
+ to listen to broadcasts (see the VBM Options field in the
+ ACXPowerMgmtOptions information element). The filter only affects beacons,
+ and not other MSDUs - the firmware notifies the host immediately about
+ their arrival.
+ Type: Filtering Configuration
+ Access: Write Only
+ Length: 2
+
+******************************************************************************/
+typedef struct
+{
+ INFO_ELE_HDR
+ uint8 enable; /* Indicates whether the filter is enabled. */
+ /* 1 - enabled, 0 - disabled. */
+ uint8 maxNumOfBeaconsStored; /* The number of beacons without the unicast TIM */
+ /* bit set that the firmware buffers before */
+ /* signaling the host about ready frames. */
+ /* When set to 0 and the filter is enabled, beacons */
+ /* without the unicast TIM bit set are dropped.*/
+ uint8 padding[2]; /* alignment to 32bits boundry */
+} ACXBeaconFilterOptions_t;
+
+
+/******************************************************************************
+
+ Name: ACX_BEACON_FILTER_TABLE
+ Desc: This information element configures beacon filtering handling for the
+ set of information elements. An information element in a beacon can be
+ set to be: ignored (never compared, and changes will not cause beacon
+ transfer), checked (compared, and transferred in case of a change), or
+ transferred (transferred to the host for each appearance or disappearance).
+ The table contains all information elements that are subject to monitoring
+ for host transfer.
+ All information elements that are not in the table should be ignored for
+ monitoring.
+ This functionality is only enabled when beacon filtering is enabled by
+ ACX_BEACON_FILTER_OPT.
+ Type: Filtering Configuration
+ Access: Write Only
+ Length: 101
+ Notes: the field measuring the value of received beacons for which the device
+ wakes up the host in ACX_BEACON_FILTER_OPT does not affect
+ this information element.
+
+******************************************************************************/
+
+/*
+ ACXBeaconFilterEntry (not 221)
+ Byte Offset Size (Bytes) Definition
+ =========== ============ ==========
+ 0 1 IE identifier
+ 1 1 Treatment bit mask
+
+ ACXBeaconFilterEntry (221)
+ Byte Offset Size (Bytes) Definition
+ =========== ============ ==========
+ 0 1 IE identifier
+ 1 1 Treatment bit mask
+ 2 3 OUI
+ 5 1 Type
+ 6 2 Version
+
+
+ Treatment bit mask - The information element handling:
+ bit 0 - The information element is compared and transferred
+ in case of change.
+ bit 1 - The information element is transferred to the host
+ with each appearance or disappearance.
+ Note that both bits can be set at the same time.
+*/
+#define BEACON_FILTER_TABLE_MAX_IE_NUM (32)
+#define BEACON_FILTER_TABLE_MAX_VENDOR_SPECIFIC_IE_NUM (6)
+#define BEACON_FILTER_TABLE_IE_ENTRY_SIZE (2)
+#define BEACON_FILTER_TABLE_EXTRA_VENDOR_SPECIFIC_IE_SIZE (6)
+#define BEACON_FILTER_TABLE_MAX_SIZE ((BEACON_FILTER_TABLE_MAX_IE_NUM * BEACON_FILTER_TABLE_IE_ENTRY_SIZE) + \
+ (BEACON_FILTER_TABLE_MAX_VENDOR_SPECIFIC_IE_NUM * BEACON_FILTER_TABLE_EXTRA_VENDOR_SPECIFIC_IE_SIZE))
+
+typedef struct ACXBeaconFilterIETableStruct {
+ INFO_ELE_HDR
+ uint8 NumberOfIEs; /* The number of IE's in the table*/
+ /* 0 - clears the table.*/
+
+ uint8 padding[3]; /* alignment to 32bits boundry */
+ uint8 IETable[BEACON_FILTER_TABLE_MAX_SIZE];
+} ACXBeaconFilterIETable_t;
+
+/******************************************************************************
+
+ Name: ACX_COEX_ACTIVITY_TABLE
+
+******************************************************************************/
+
+typedef enum
+{
+ COEX_IP_BT = 0,
+ COEX_IP_WLAN,
+ COEX_IP_DUAL_MODE, /* That define isn't valid value in DR&FW interface and use just in the FW */
+ MAX_COEX_IP
+} CoexIp_enum;
+
+#ifdef HOST_COMPILE
+typedef uint8 CoexIp_e;
+#else
+typedef CoexIp_enum CoexIp_e;
+#endif
+
+typedef struct ACXCoexActivityIEStruct {
+ INFO_ELE_HDR
+ CoexIp_e coexIp; /* 0-BT, 1-WLAN (according to CoexIp_e in FW) */
+ uint8 activityId; /* According to BT/WLAN activity numbering in FW */
+ uint8 defaultPriority; /* 0-255, activity default priority */
+ uint8 raisedPriority; /* 0-255, activity raised priority */
+ uint16 minService; /* 0-65535, The minimum service requested either in
+ requests or in milliseconds depending on activity ID */
+ uint16 maxService; /* 0-65535, The maximum service allowed either in
+ requests or in milliseconds depending on activity ID */
+} ACXCoexActivityIE_t;
+
+/******************************************************************************
+
+ Name: ACX_ARP_IP_FILTER
+ Type: Filtering Configuration
+ Access: Write Only
+ Length: 20
+
+******************************************************************************/
+
+#define ARP_FILTER_DISABLED (0)
+#define ARP_FILTER_ENABLED (0x01)
+#define ARP_FILTER_AUTO_ARP_ENABLED (0x02)
+
+#define ARP_FILTER_SUSPENDED_BY_FW (0x80) // Bit set/cleared by FW to indicate temporary suspention of Auto-ARP
+ // (due to join, before template is configured)
+ // This is NEVER used by the Host itself
+
+#define ARP_FILTER_HOST_ENABLE_MASK (0x03) // Take only two lower bits of host configuration
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint8 ipVersion; /* The IP version of the IP address: 4 - IPv4, 6 - IPv6.*/
+ uint8 arpFilterEnable; /* BITMAP (!) field containing all "enabled" ARP features */
+ /* 0x00 - No ARP features */
+ /* 0x01 - Only ARP filtering */
+ /* 0x02 - Only Auto-ARP */
+ /* 0x03 - Both ARP filtering and Auto-ARP */
+ uint8 padding[2]; /* alignment to 32bits boundry */
+ uint8 address[16]; /* The IP address used to filter ARP packets. ARP packets */
+ /* that do not match this address are dropped. */
+ /* When the IP Version is 4, the last 12 bytes of */
+ /* the address are ignored.*/
+
+} ACXConfigureIP_t;
+
+
+/******************************************************************************
+
+ Name: ACX_IBSS_FILTER
+ Type: Filtering Configuration
+ Access: Write Only
+ Length: 1
+
+******************************************************************************/
+typedef struct
+{
+ INFO_ELE_HDR
+ uint8 enable; /* if set (i.e. IBSS mode), forward beacons from the same SSID*/
+ /* (also from different BSSID), with bigger TSF then the this of */
+ /* the current BSS.*/
+ uint8 padding[3]; /* alignment to 32bits boundry */
+} ACXIBSSFilterOptions_t;
+
+
+/******************************************************************************
+
+ Name: ACX_SERVICE_PERIOD_TIMEOUT
+ Type: Configuration
+ Access: Write Only
+ Length: 1
+
+******************************************************************************/
+typedef struct
+{
+ INFO_ELE_HDR
+ uint16 PsPollTimeout; /* the maximum time that the device will wait to receive */
+ /* traffic from the AP after transmission of PS-poll.*/
+
+ uint16 UpsdTimeout; /* the maximum time that the device will wait to receive */
+ /* traffic from the AP after transmission from UPSD enabled*/
+ /* queue.*/
+} ACXRxTimeout_t;
+
+/******************************************************************************
+
+ Name: ACX_TX_QUEUE_CFG
+ Type: Configuration
+ Access: Write Only
+ Length: 8
+
+******************************************************************************/
+typedef struct
+{
+ INFO_ELE_HDR
+ uint8 qID; /* The TX queue ID number.*/
+ uint8 padding[3]; /* alignment to 32bits boundry */
+ uint16 numberOfBlockHighThreshold; /* The maximum memory blocks allowed in the */
+ /* queue.*/
+ uint16 numberOfBlockLowThreshold; /* The minimum memory blocks that are */
+ /* guaranteed for this queue.*/
+} ACXTxQueueCfg_t;
+
+
+/******************************************************************************
+
+ Name: ACX_STATISTICS
+ Type: Statistics
+ Access: Write Only
+ Length:
+ Note: Debug API
+
+******************************************************************************/
+typedef struct
+{
+ uint32 debug1;
+ uint32 debug2;
+ uint32 debug3;
+ uint32 debug4;
+ uint32 debug5;
+ uint32 debug6;
+}DbgStatistics_t;
+
+typedef struct
+{
+ uint32 numOfTxProcs;
+ uint32 numOfPreparedDescs;
+ uint32 numOfTxXfr;
+ uint32 numOfTxDma;
+ uint32 numOfTxCmplt;
+ uint32 numOfRxProcs;
+ uint32 numOfRxData;
+}RingStatistics_t;
+
+typedef struct
+{
+ uint32 numOfTxTemplatePrepared;
+ uint32 numOfTxDataPrepared;
+ uint32 numOfTxTemplateProgrammed;
+ uint32 numOfTxDataProgrammed;
+ uint32 numOfTxBurstProgrammed;
+ uint32 numOfTxStarts;
+ uint32 numOfTxImmResp;
+ uint32 numOfTxStartTempaltes;
+ uint32 numOfTxStartIntTemplate;
+ uint32 numOfTxStartFwGen;
+ uint32 numOfTxStartData;
+ uint32 numOfTxStartNullFrame;
+ uint32 numOfTxExch;
+ uint32 numOfTxRetryTemplate;
+ uint32 numOfTxRetryData;
+ uint32 numOfTxExchPending;
+ uint32 numOfTxExchExpiry;
+ uint32 numOfTxExchMismatch;
+ uint32 numOfTxDoneTemplate;
+ uint32 numOfTxDoneData;
+ uint32 numOfTxDoneIntTemplate;
+ uint32 numOfTxPreXfr;
+ uint32 numOfTxXfr;
+ uint32 numOfTxXfrOutOfMem;
+ uint32 numOfTxDmaProgrammed;
+ uint32 numOfTxDmaDone;
+} TxStatistics_t;
+
+
+typedef struct
+{
+ uint32 RxOutOfMem;
+ uint32 RxHdrOverflow;
+ uint32 RxHWStuck;
+ uint32 RxDroppedFrame;
+ uint32 RxCompleteDroppedFrame;
+ uint32 RxAllocFrame;
+ uint32 RxDoneQueue;
+ uint32 RxDone;
+ uint32 RxDefrag;
+ uint32 RxDefragEnd;
+ uint32 RxMic;
+ uint32 RxMicEnd;
+ uint32 RxXfr;
+ uint32 RxXfrEnd;
+ uint32 RxCmplt;
+ uint32 RxPreCmplt;
+ uint32 RxCmpltTask;
+ uint32 RxPhyHdr;
+ uint32 RxTimeout;
+} RxStatistics_t;
+
+
+typedef struct
+{
+ uint32 RxDMAErrors;
+ uint32 TxDMAErrors;
+} DMAStatistics_t;
+
+
+typedef struct
+{
+ uint32 IRQs; /* irqisr() */
+} IsrStatistics_t;
+
+
+typedef struct WepStatistics_t
+{
+ uint32 WepAddrKeyCount; /* Count of WEP address keys configured*/
+ uint32 WepDefaultKeyCount; /* Count of default keys configured*/
+ uint32 WepKeyNotFound; /* count of number of times that WEP key not found on lookup*/
+ uint32 WepDecryptFail; /* count of number of times that WEP key decryption failed*/
+ uint32 WepEncryptFail; /* count of number of times that WEP key encryption failed*/
+ uint32 WepDecPackets; /* WEP Packets Decrypted*/
+ uint32 WepDecInterrupt; /* WEP Decrypt Interrupts*/
+ uint32 WepEnPackets; /* WEP Packets Encrypted*/
+ uint32 WepEnInterrupt; /* WEP Encrypt Interrupts*/
+} WepStatistics_t;
+
+
+#define PWR_STAT_MAX_CONT_MISSED_BCNS_SPREAD 10
+typedef struct PwrStatistics_t
+{
+ uint32 MissingBcnsCnt; /* Count the amount of missing beacon interrupts to the host.*/
+ uint32 RcvdBeaconsCnt; /* Count the number of received beacons.*/
+ 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.*/
+ uint32 ContMissBcnsSpread[PWR_STAT_MAX_CONT_MISSED_BCNS_SPREAD]; /* Gives statistics about the spread continuous missed beacons.*/
+ /* The 16 LSB are dedicated for the PS mode.*/
+ /* The 16 MSB are dedicated for the PS mode.*/
+ /* ContMissBcnsSpread[0] - single missed beacon.*/
+ /* ContMissBcnsSpread[1] - two continuous missed beacons.*/
+ /* ContMissBcnsSpread[2] - three continuous missed beacons.*/
+ /* ...*/
+ /* ContMissBcnsSpread[9] - ten and more continuous missed beacons.*/
+ uint32 RcvdAwakeBeaconsCnt; /* Count the number of beacons in awake mode.*/
+} PwrStatistics_t;
+
+
+typedef struct MicStatistics_t
+{
+ uint32 MicRxPkts;
+ uint32 MicCalcFailure;
+} MicStatistics_t;
+
+
+typedef struct AesStatisticsStruct
+{
+ uint32 AesEncryptFail;
+ uint32 AesDecryptFail;
+ uint32 AesEncryptPackets;
+ uint32 AesDecryptPackets;
+ uint32 AesEncryptInterrupt;
+ uint32 AesDecryptInterrupt;
+} AesStatistics_t;
+
+typedef struct GemStatisticsStruct
+{
+ uint32 GemEncryptFail;
+ uint32 GemDecryptFail;
+ uint32 GemEncryptPackets;
+ uint32 GemDecryptPackets;
+ uint32 GemEncryptInterrupt;
+ uint32 GemDecryptInterrupt;
+} GemStatistics_t;
+
+typedef struct EventStatistics_t
+{
+ uint32 calibration;
+ uint32 rxMismatch;
+ uint32 rxMemEmpty;
+} EventStatistics_t;
+
+
+typedef struct PsPollUpsdStatistics_t
+{
+ uint32 psPollTimeOuts;
+ uint32 upsdTimeOuts;
+ uint32 upsdMaxAPturn;
+ uint32 psPollMaxAPturn;
+ uint32 psPollUtilization;
+ uint32 upsdUtilization;
+} PsPollUpsdStatistics_t;
+
+typedef struct RxFilterStatistics_t
+{
+ uint32 beaconFilter;
+ uint32 arpFilter;
+ uint32 MCFilter;
+ uint32 dupFilter;
+ uint32 dataFilter;
+ uint32 ibssFilter;
+} RxFilterStatistics_t;
+
+typedef struct ClaibrationFailStatistics_t
+{
+ uint32 initCalTotal;
+ uint32 initRadioBandsFail;
+ uint32 initSetParams;
+ uint32 initTxClpcFail;
+ uint32 initRxIqMmFail;
+ uint32 tuneCalTotal;
+ uint32 tuneDrpwRTrimFail;
+ uint32 tuneDrpwPdBufFail;
+ uint32 tuneDrpwTxMixFreqFail;
+ uint32 tuneDrpwTaCal;
+ uint32 tuneDrpwRxIf2Gain;
+ uint32 tuneDrpwRxDac;
+ uint32 tuneDrpwChanTune;
+ uint32 tuneDrpwRxTxLpf;
+ uint32 tuneDrpwLnaTank;
+ uint32 tuneTxLOLeakFail;
+ uint32 tuneTxIqMmFail;
+ uint32 tuneTxPdetFail;
+ uint32 tuneTxPPAFail;
+ uint32 tuneTxClpcFail;
+ uint32 tuneRxAnaDcFail;
+ uint32 tuneRxIqMmFail;
+ uint32 calStateFail;
+}ClaibrationFailStatistics_t;
+
+typedef struct ACXStatisticsStruct
+{
+ INFO_ELE_HDR
+ RingStatistics_t ringStat;
+ DbgStatistics_t debug;
+ TxStatistics_t tx;
+ RxStatistics_t rx;
+ DMAStatistics_t dma;
+ IsrStatistics_t isr;
+ WepStatistics_t wep;
+ PwrStatistics_t pwr;
+ AesStatistics_t aes;
+ MicStatistics_t mic;
+ EventStatistics_t event;
+ PsPollUpsdStatistics_t ps;
+ RxFilterStatistics_t rxFilter;
+ ClaibrationFailStatistics_t radioCal;
+ GemStatistics_t gem;
+} ACXStatistics_t;
+
+/******************************************************************************
+
+ Name: ACX_ROAMING_STATISTICS_TBL
+ Desc: This information element reads the current roaming triggers
+ counters/metrics.
+ Type: Statistics
+ Access: Read Only
+ Length: 6
+
+******************************************************************************/
+typedef struct
+{
+ INFO_ELE_HDR
+ uint32 MissedBeacons; /* The current number of consecutive lost beacons*/
+ uint8 snrData; /* The current average SNR in db - For Data Packets*/
+ uint8 snrBeacon; /* The current average SNR in db - For Beacon Packets*/
+ int8 rssiData; /* The current average RSSI - For Data Packets*/
+ int8 rssiBeacon; /* The current average RSSI - For Beacon Packets*/
+}ACXRoamingStatisticsTable_t;
+
+
+/******************************************************************************
+
+ Name: ACX_FEATURE_CFG
+ Desc: Provides expandability for future features
+ Type: Configuration
+ Access: Write Only
+ Length: 8
+
+******************************************************************************/
+
+/* bit defines for Option: */
+#define FEAT_PCI_CLK_RUN_ENABLE 0x00000002 /* Enable CLK_RUN on PCI bus */
+
+/* bit defines for dataflowOptions: */
+#define DF_ENCRYPTION_DISABLE 0x00000001 /* When set, enable encription in FW.*/
+ /* when clear, disable encription. */
+#define DF_SNIFF_MODE_ENABLE 0x00000080 /* When set, enable decryption in FW.*/
+ /* when clear, disable decription. */
+typedef struct
+{
+ INFO_ELE_HDR
+ uint32 Options; /* Data flow options - refer to above definitions*/
+ uint32 dataflowOptions; /* Data flow options - refer to above definitions*/
+} ACXFeatureConfig_t;
+
+
+
+/******************************************************************************
+
+ Name: ACX_TID_CFG
+ Type: Configuration
+ Access: Write Only
+ Length: 16
+
+******************************************************************************/
+typedef enum
+{
+ CHANNEL_TYPE_DCF = 0, /* DC/LEGACY*/
+ CHANNEL_TYPE_EDCF = 1, /* EDCA*/
+ CHANNEL_TYPE_HCCA = 2, /* HCCA*/
+ MAX_CHANNEL_TYPE = CHANNEL_TYPE_HCCA
+} ChannelType_enum;
+
+typedef enum
+{
+ PS_SCHEME_LEGACY = 0, /* Regular PS: simple sending of packets*/
+ PS_SCHEME_UPSD_TRIGGER = 1, /* UPSD: sending a packet triggers a UPSD downstream*/
+ PS_SCHEME_LEGACY_PSPOLL = 2, /* Legacy PSPOLL: a PSPOLL packet will be sent before */
+ /* every data packet transmission in this queue.*/
+ PS_SCHEME_SAPSD = 3, /* Scheduled APSD mode.*/
+ MAX_PS_SCHEME = PS_SCHEME_SAPSD
+} PSScheme_enum;
+
+typedef enum
+{
+ ACK_POLICY_LEGACY = 0, /* ACK immediate policy*/
+ ACK_POLICY_NO_ACK = 1, /* no ACK policy*/
+ ACK_POLICY_BLOCK = 2, /* block ack policy*/
+ MAX_ACK_POLICY = ACK_POLICY_BLOCK
+} AckPolicy_enum;
+
+
+#ifdef HOST_COMPILE
+typedef uint8 ChannelType_e;
+typedef uint8 PSScheme_e;
+typedef uint8 AckPolicy_e;
+#else
+typedef ChannelType_enum ChannelType_e;
+typedef PSScheme_enum PSScheme_e;
+typedef AckPolicy_enum AckPolicy_e;
+#endif
+
+
+
+/* Michal recommendation:
+ in the ACXTIDConfig_t structure we need only the fields psScheme, and one other field for AC id (queue? tsid?).
+ the rest are obsolete. see IEPsDeliveryTriggerType_t in CE2.0.
+ */
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint8 queueID; /* The TX queue ID number (0-7).*/
+ uint8 channelType; /* Channel access type for the queue.*/
+ /* Refer to ChannelType_enum.*/
+ uint8 tsid; /* for EDCA - the AC Index (0-3, refer to*/
+ /* AccessCategory_enum).*/
+ /* For HCCA - HCCA Traffic Stream ID (TSID) of */
+ /* the queue (8-15).*/
+ PSScheme_e psScheme; /* The power save scheme of the specified queue.*/
+ /* Refer to PSScheme_enum.*/
+ AckPolicy_e ackPolicy; /* The TX queue ACK policy. */
+ uint8 padding[3]; /* alignment to 32bits boundry */
+ uint32 APSDConf[2]; /* Not supported in this version !!!*/
+}ACXTIDConfig_t;
+
+
+
+/******************************************************************************
+
+ Name: ACX_PS_RX_STREAMING
+ Type: Configuration
+ Access: Write Only
+ Length: 32
+
+******************************************************************************/
+typedef struct
+{
+ INFO_ELE_HDR
+ uint8 TID; /* The TID index*/
+ Bool_e rxPSDEnabled; /* indicates if this traffic stream requires */
+ /* employing an RX Streaming delivery mechanism for the TID*/
+
+ uint8 streamPeriod; /* the time period for which a trigger needs to be transmitted*/
+ /* in case no data TX triggers are sent by host*/
+ uint8 txTimeout; /* the timeout from last TX trigger after which FW*/
+ /* starts generating triggers by itself*/
+}ACXPsRxStreaming_t;
+
+/************************************************************
+* MULTIPLE RSSI AND SNR *
+*************************************************************/
+
+typedef enum
+{
+ RX_QUALITY_EVENT_LEVEL = 0, /* The event is a "Level" indication which keeps */
+ /* triggering as long as the average RSSI is below*/
+ /* the threshold.*/
+
+ RX_QUALITY_EVENT_EDGE = 1 /* The event is an "Edge" indication which triggers*/
+ /* only when the RSSI threshold is crossed from above.*/
+}rxQualityEventType_enum;
+
+/* The direction in which the trigger is active */
+typedef enum
+{
+ RSSI_EVENT_DIR_LOW = 0,
+ RSSI_EVENT_DIR_HIGH = 1,
+ RSSI_EVENT_DIR_BIDIR = 2
+}RssiEventDir_e;
+
+/******************************************************************************
+
+ RSSI/SNR trigger configuration:
+
+ ACX_RSSI_SNR_TRIGGER
+ ACX_RSSI_SNR_WIGHTS
+
+******************************************************************************/
+#define NUM_OF_RSSI_SNR_TRIGGERS 8
+typedef struct
+{
+ int16 threshold;
+ uint16 pacing; /* Minimum delay between consecutive triggers in milliseconds (0 - 60000) */
+ uint8 metric; /* RSSI Beacon, RSSI Packet, SNR Beacon, SNR Packet */
+ uint8 type; /* Level / Edge */
+ uint8 direction; /* Low, High, Bidirectional */
+ uint8 hystersis; /* Hysteresis range in dB around the threshold value (0 - 255) */
+ uint8 index; /* Index of Event. Values 0 - 7 */
+ uint8 enable; /* 1 - Configured, 2 - Not Configured; (for recovery using) */
+ uint8 padding[2];
+}RssiSnrTriggerCfg_t;
+
+typedef struct
+{
+ INFO_ELE_HDR
+ RssiSnrTriggerCfg_t param;
+}ACXRssiSnrTriggerCfg_t;
+
+/* Filter Weight for every one of 4 RSSI /SNR Trigger Metrics */
+typedef struct
+{
+ uint8 rssiBeaconAverageWeight;
+ uint8 rssiPacketAverageWeight;
+ uint8 snrBeaconAverageWeight;
+ uint8 snrPacketAverageWeight;
+}RssiSnrAverageWeights_t;
+
+typedef struct
+{
+ INFO_ELE_HDR
+ RssiSnrAverageWeights_t param;
+}ACXRssiSnrAverageWeights_t;
+
+typedef enum
+{
+ METRIC_EVENT_RSSI_BEACON = 0,
+ METRIC_EVENT_RSSI_DATA = 1,
+ METRIC_EVENT_SNR_BEACON = 2,
+ METRIC_EVENT_SNR_DATA = 3,
+ METRIC_EVENT_TRIGGER_SIZE = 4
+}MetricEvent_e;
+
+/******************************************************************************
+
+ Name: ACX_NOISE_HIST
+ Desc: Noise Histogram activation is done by special command from host which
+ is responsible to read the results using this IE.
+ Type: Configuration
+ Access: Read Only
+ Length: 48 (NOISE_HIST_LEN=8)
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint32 counters[NOISE_HIST_LEN]; /* This array of eight 32 bit counters describes */
+ /* the histogram created by the FW noise */
+ /* histogram engine.*/
+
+ uint32 numOfLostCycles; /* This field indicates the number of measurement */
+ /* cycles with failure because Tx was active.*/
+
+ uint32 numOfTxHwGenLostCycles; /* This field indicates the number of measurement */
+ /* cycles with failure because Tx (FW Generated)*/
+ /* was active.*/
+
+ uint32 numOfRxLostCycles; /* This field indicates the number of measurement */
+ /* cycles because the Rx CCA was active. */
+} NoiseHistResult_t;
+
+/******************************************************************************
+
+ Name: ACX_PD_THRESHOLD
+ Type: Configuration
+ Access: Write Only
+ Length: 4
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint32 pdThreshold; /* The packet detection threshold in the PHY.*/
+} ACXPacketDetection_t;
+
+
+/******************************************************************************
+
+ Name: ACX_RATE_POLICY
+ Type: Configuration
+ Access: Write Only
+ Length: 132
+
+******************************************************************************/
+
+#define HOST_MAX_RATE_POLICIES (8)
+
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint32 numOfClasses; /* The number of transmission rate */
+ /* fallback policy classes.*/
+
+ txAttrClass_t rateClasses[HOST_MAX_RATE_POLICIES]; /* Rate Policies table*/
+}ACXTxAttrClasses_t;
+
+
+
+/******************************************************************************
+
+ Name: ACX_CTS_PROTECTION
+ Type: Configuration
+ Access: Write Only
+ Length: 1
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint8 ctsProtectMode; /* This field is a flag enabling or disabling the*/
+ /* CTS-to-self protection mechanism:*/
+ /* 0 - disable, 1 - enable*/
+ uint8 padding[3]; /* alignment to 32bits boundry */
+}ACXCtsProtection_t;
+
+/******************************************************************************
+
+ ACX_FRAG_CFG
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint16 fragThreshold;
+ uint8 padding[2]; /* alignment toIE_RTS_CTS_CFG 32bits boundry */
+
+} ACXFRAGThreshold_t;
+
+
+/******************************************************************************
+
+ ACX_RX_CONFIG_OPT
+
+******************************************************************************/
+typedef enum
+{
+ RX_QUEUE_TYPE_RX_LOW_PRIORITY, /* All except the high priority */
+ RX_QUEUE_TYPE_RX_HIGH_PRIORITY, /* Management and voice packets */
+ RX_QUEUE_TYPE_NUM,
+ RX_QUEUE_TYPE_MAX = MAX_POSITIVE8
+} RxQueueType_enum;
+
+
+#ifdef HOST_COMPILE
+ typedef uint8 RxQueueType_e;
+#else
+ typedef RxQueueType_enum RxQueueType_e;
+#endif
+
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint16 rxMblkThreshold; /* Occupied Rx mem-blocks number which requires interrupting the host (0 = no buffering) */
+ uint16 rxPktThreshold; /* Rx packets number which requires interrupting the host (0 = no buffering) */
+ uint16 rxCompleteTimeout; /* Max time in msec the FW may delay Rx-Complete interrupt */
+ RxQueueType_e rxQueueType; /* see above */
+ uint8 reserved;
+} ACXRxBufferingConfig_t;
+
+
+/******************************************************************************
+
+ Name: ACX_SLEEP_AUTH
+ Desc: configuration of sleep authorization level
+ Type: System Configuration
+ Access: Write Only
+ Length: 1
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint8 sleepAuth; /* The sleep level authorization of the device. */
+ /* 0 - Always active*/
+ /* 1 - Power down mode: light / fast sleep*/
+ /* 2 - ELP mode: Deep / Max sleep*/
+
+ uint8 padding[3]; /* alignment to 32bits boundry */
+}ACXSleepAuth_t;
+
+/******************************************************************************
+
+ Name: ACX_PM_CONFIG
+ Desc: configuration of power management
+ Type: System Configuration
+ Access: Write Only
+ Length: 1
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint32 hostClkSettlingTime; /* Host CLK settling time (in uSec units) */
+ uint8 hostFastWakeupSupport; /* 0 - not supported */
+ /* 1 - supported */
+ uint8 padding[3]; /* alignment to 32bits boundry */
+}ACXPMConfig_t;
+
+/******************************************************************************
+
+ Name: ACX_PREAMBLE_TYPE
+ Type: Configuration
+ Access: Write Only
+ Length: 1
+
+******************************************************************************/
+
+typedef enum
+{
+ LONG_PREAMBLE = 0,
+ SHORT_PREAMBLE = 1,
+ OFDM_PREAMBLE = 4,
+ N_MIXED_MODE_PREAMBLE = 6,
+ GREENFIELD_PREAMBLE = 7,
+ PREAMBLE_INVALID = 0xFF
+} Preamble_enum;
+
+
+#ifdef HOST_COMPILE
+typedef uint8 Preamble_e;
+#else
+typedef Preamble_enum Preamble_e;
+#endif
+
+
+typedef struct
+{
+ INFO_ELE_HDR
+ Preamble_e preamble; /* When set, the WiLink transmits beacon, probe response, */
+ /* RTS and PS Poll frames with a short preamble. */
+ /* When clear, the WiLink transmits the frame with a long */
+ /* preamble.*/
+ uint8 padding[3]; /* alignment to 32bits boundry */
+} ACXPreamble_t;
+
+
+/******************************************************************************
+
+ Name: ACX_CCA_THRESHOLD
+ Type: Configuration
+ Access: Write Only
+ Length: 2
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint16 rxCCAThreshold; /* The Rx Clear Channel Assessment threshold in the PHY*/
+ /* (the energy threshold).*/
+ Bool_e txEnergyDetection; /* The Tx ED value for TELEC Enable/Disable*/
+ uint8 padding;
+} ACXEnergyDetection_t;
+
+
+/******************************************************************************
+
+ Name: ACX_EVENT_MBOX_MASK
+ Type: Operation
+ Access: Write Only
+ Length: 8
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint32 lowEventMask; /* Indicates which events are masked and which are not*/
+ /* Refer to EventMBoxId_enum in public_event_mbox.h.*/
+
+ uint32 highEventMask; /* Not in use (should always be set to 0xFFFFFFFF).*/
+} ACXEventMboxMask_t;
+
+
+/******************************************************************************
+
+ Name: ACX_CONN_MONIT_PARAMS
+ Desc: This information element configures the SYNCHRONIZATION_TIMEOUT
+ interrupt indicator. It configures the number of missed Beacons
+ before issuing the SYNCHRONIZATION_TIMEOUT event.
+ Type: Configuration
+ Access: Write Only
+ Length: 8
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint32 TSFMissedThreshold; /* The number of consecutive beacons that can be */
+ /* lost before the WiLink raises the */
+ /* SYNCHRONIZATION_TIMEOUT event.*/
+
+ uint32 BSSLossTimeout; /* The delay (in time units) between the time at */
+ /* which the device issues the SYNCHRONIZATION_TIMEOUT*/
+ /* event until, if no probe response or beacon is */
+ /* received a BSS_LOSS event is issued.*/
+} AcxConnectionMonitorOptions;
+
+/******************************************************************************
+
+ Name: ACX_CONS_TX_FAILURE
+ Desc: This information element configures the number of frames transmission
+ failures before issuing the "Max Tx Retry" event. The counter is
+ incremented only for unicast frames or frames that require Ack
+ Type: Configuration
+ Access: Write Only
+ Length: 1
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint8 maxTxRetry; /* the number of frames transmission failures before */
+ /* issuing the "Max Tx Retry" event*/
+ uint8 padding[3]; /* alignment to 32bits boundry */
+} ACXConsTxFailureTriggerParameters_t;
+
+
+/******************************************************************************
+
+ Name: ACX_BCN_DTIM_OPTIONS
+ Type: Configuration
+ Access: Write Only
+ Length: 5
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint16 beaconRxTimeOut;
+ uint16 broadcastTimeOut;
+ uint8 rxBroadcastInPS; /* if set, enables receive of broadcast packets */
+ /* in Power-Save mode.*/
+ uint8 consecutivePsPollDeliveryFailureThr; /* Consecutive PS Poll Fail before updating the Driver */
+ uint8 padding[2]; /* alignment to 32bits boundry */
+} ACXBeaconAndBroadcastOptions_t;
+
+
+/******************************************************************************
+
+ Name: ACX_SG_ENABLE
+ Desc: This command instructs the WiLink to set the Soft Gemini (BT co-existence)
+ state to either enable/disable or sense mode.
+ Type: Configuration
+ Access: Write Only
+ Length: 1
+
+******************************************************************************/
+typedef struct
+{
+ INFO_ELE_HDR
+ uint8 coexOperationMode; /* 0- Co-ex operation is Disabled
+ 1- Co-ex operation is configured to Protective mode
+ 2- Co-ex operation is configured to Opportunistic mode
+
+ Default Value: 0- Co-ex operation is Disabled
+ */
+
+ uint8 padding[3]; /* alignment to 32bits boundry */
+
+} ACXBluetoothWlanCoEnableStruct;
+
+
+/* struct TSoftGeminiParams
+ * brief Soft Gemini Parameters
+ *
+ * Description
+ * Used for Setting/Printing Soft Gemini Parameters
+ *
+ *
+ */
+typedef enum
+{
+ SOFT_GEMINI_BT_PER_THRESHOLD = 0,
+ SOFT_GEMINI_HV3_MAX_OVERRIDE,
+ SOFT_GEMINI_BT_NFS_SAMPLE_INTERVAL,
+ SOFT_GEMINI_BT_LOAD_RATIO,
+ SOFT_GEMINI_AUTO_PS_MODE,
+ SOFT_GEMINI_AUTO_SCAN_PROBE_REQ,
+ SOFT_GEMINI_ACTIVE_SCAN_DURATION_FACTOR_HV3,
+ SOFT_GEMINI_ANTENNA_CONFIGURATION,
+ SOFT_GEMINI_BEACON_MISS_PERCENT,
+ SOFT_GEMINI_RATE_ADAPT_THRESH,
+ SOFT_GEMINI_RATE_ADAPT_SNR,
+ SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MIN_BR,
+ SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MAX_BR,
+ SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_MASTER_BR,
+ SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MIN_BR,
+ SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MAX_BR,
+ SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_SLAVE_BR,
+ SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MIN_EDR,
+ SOFT_GEMINI_WLAN_PS_BT_ACL_MASTER_MAX_EDR,
+ SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_MASTER_EDR,
+ SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MIN_EDR,
+ SOFT_GEMINI_WLAN_PS_BT_ACL_SLAVE_MAX_EDR,
+ SOFT_GEMINI_WLAN_PS_MAX_BT_ACL_SLAVE_EDR,
+ SOFT_GEMINI_RXT,
+ SOFT_GEMINI_TXT,
+ SOFT_GEMINI_ADAPTIVE_RXT_TXT,
+ SOFT_GEMINI_PS_POLL_TIMEOUT,
+ SOFT_GEMINI_UPSD_TIMEOUT,
+ SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_MASTER_MIN_EDR,
+ SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_MASTER_MAX_EDR,
+ SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_MASTER_EDR,
+ SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MIN_EDR,
+ SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_SLAVE_MAX_EDR,
+ SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_SLAVE_EDR,
+ SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_MIN_BR,
+ SOFT_GEMINI_WLAN_ACTIVE_BT_ACL_MAX_BR,
+ SOFT_GEMINI_WLAN_ACTIVE_MAX_BT_ACL_BR,
+ SOFT_GEMINI_PASSIVE_SCAN_DURATION_FACTOR_HV3,
+ SOFT_GEMINI_PASSIVE_SCAN_DURATION_FACTOR_A2DP,
+ SOFT_GEMINI_PASSIVE_SCAN_BT_TIME,
+ SOFT_GEMINI_PASSIVE_SCAN_WLAN_TIME,
+ SOFT_GEMINI_HV3_MAX_SERVED,
+ SOFT_GEMINI_DHCP_TIME,
+ SOFT_GEMINI_ACTIVE_SCAN_DURATION_FACTOR_A2DP,
+ SOFT_GEMINI_TEMP_PARAM_1,
+ SOFT_GEMINI_TEMP_PARAM_2,
+ SOFT_GEMINI_TEMP_PARAM_3,
+ SOFT_GEMINI_TEMP_PARAM_4,
+ SOFT_GEMINI_TEMP_PARAM_5,
+ SOFT_GEMINI_PARAMS_MAX
+} softGeminiParams;
+
+
+typedef struct
+{
+ uint32 coexParams[SOFT_GEMINI_PARAMS_MAX];
+ uint8 paramIdx; /* the param index which the FW should update, if it equals to 0xFF - update all */
+ uint8 padding[3];
+} TSoftGeminiParams;
+
+
+/******************************************************************************
+
+ Name: ACX_SG_CFG
+ Desc: This command instructs the WiLink to set the Soft Gemini (BT co-existence)
+ parameters to the desired values.
+ Type: Configuration
+ Access: Write (Read For GWSI - disable for now)
+ Length: 1
+
+******************************************************************************/
+typedef struct
+
+{
+ INFO_ELE_HDR
+
+ TSoftGeminiParams softGeminiParams;
+
+} ACXBluetoothWlanCoParamsStruct;
+
+/******************************************************************************
+
+ Name: ACX_FM_COEX_CFG
+ Desc: This command instructs the WiLink to set the FM co-existence
+ parameters to the desired values.
+ Type: Configuration
+ Access: Write
+ Length:
+
+******************************************************************************/
+typedef struct
+
+{
+ INFO_ELE_HDR
+
+ uint8 enable; /* enable(1) / disable(0) the FM Coex feature */
+
+ uint8 swallowPeriod; /* Swallow period used in COEX PLL swallowing mechanism, range 1-7 */
+
+ uint8 nDividerFrefSet1; /* The N divider used in COEX PLL swallowing mechanism for Fref of 38.4/19.2 Mhz.
+ Range: 0-0xFF, 0xFF = use FW default
+ */
+
+ uint8 nDividerFrefSet2; /* The N divider used in COEX PLL swallowing mechanism for Fref of 26/52 Mhz.
+ Range: 0-0xFF, 0xFF = use FW default
+ */
+
+ uint16 mDividerFrefSet1; /* The M divider used in COEX PLL swallowing mechanism for Fref of 38.4/19.2 Mhz.
+ Range: 0-0x1FF, 0xFFFF = use FW default
+ */
+
+ uint16 mDividerFrefSet2; /* The M divider used in COEX PLL swallowing mechanism for Fref of 26/52 Mhz.
+ Range: 0-0x1FF, 0xFFFF = use FW default
+ */
+
+ uint32 coexPllStabilizationTime; /* The time duration in uSec required for COEX PLL to stabilize.
+ 0xFFFFFFFF = use FW default
+ */
+
+ uint16 ldoStabilizationTime; /* The time duration in uSec required for LDO to stabilize.
+ 0xFFFFFFFF = use FW default
+ */
+
+ uint8 fmDisturbedBandMargin; /* The disturbed frequency band margin around the disturbed
+ frequency center (single sided).
+ For example, if 2 is configured, the following channels
+ will be considered disturbed channel:
+ 80 +- 0.1 MHz, 91 +- 0.1 MHz, 98 +- 0.1 MHz, 102 +- 0.1 MHz
+ 0xFF = use FW default
+ */
+
+ uint8 swallowClkDif; /* The swallow clock difference of the swallowing mechanism.
+ 0xFF = use FW default
+ */
+
+} ACXWlanFmCoexStruct;
+
+
+
+/******************************************************************************
+
+ Name: ACX_TSF_INFO
+ Type: Operation
+ Access: Read Only
+ Length: 20
+
+******************************************************************************/
+typedef struct ACX_fwTSFInformation
+{
+ INFO_ELE_HDR
+ uint32 CurrentTSFHigh;
+ uint32 CurrentTSFLow;
+ uint32 lastTBTTHigh;
+ uint32 lastTBTTLow;
+ uint8 LastDTIMCount;
+ uint8 padding[3]; /* alignment to 32bits boundry */
+}ACX_fwTSFInformation_t;
+
+
+/******************************************************************************
+
+Name: ACX_BET_ENABLE
+Desc: Enable or Disable the Beacon Early Termination module. In addition initialized the
+ Max Dropped beacons parameter
+Type: Configuration
+Access: Write
+Length: 6
+Note:
+******************************************************************************/
+typedef struct
+
+{
+ INFO_ELE_HDR
+ uint8 Enable; /* specifies if beacon early termination procedure is enabled or disabled: 0 – disabled, 1 – enabled */
+ uint8 MaximumConsecutiveET; /* specifies the maximum number of consecutive beacons that may be early terminated. After this number is reached
+ at least one full beacon must be correctly received in FW before beacon ET resumes. Legal range: 0 – 255 */
+ uint8 padding[2];
+}ACXBet_Enable_t;
+
+
+/******************************************************************************
+
+ Name: DOT11_RX_MSDU_LIFE_TIME
+ Type: Operation
+ Access: Write Only
+ Length: 4
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint32 RxMsduLifeTime; /* The maximum amount of time, in TU, that the WiLink */
+ /* should attempt to collect fragments of an MSDU before */
+ /* discarding them. */
+ /* The default value for this field is 512.*/
+} dot11RxMsduLifeTime_t;
+
+
+/******************************************************************************
+
+ Name: DOT11_CUR_TX_PWR
+ Desc: This IE indicates the maximum TxPower in Dbm/10 currently being used to transmit data.
+ Type: Operation
+ Access: Write Only
+ Length: 1
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint8 dot11CurrentTxPower; /* the max Power in Dbm/10 to be used to transmit data.*/
+ uint8 padding[3]; /* alignment to 32bits boundry */
+} dot11CurrentTxPowerStruct ;
+
+
+/******************************************************************************
+
+ Name: DOT11_RX_DOT11_MODE
+ Desc: This IE indicates the current Rx Mode used by DSSS PHY.
+ Type: Configuration
+ Access: Write Only
+ Length: 4
+
+******************************************************************************/
+/*
+Possible values for Rx DOT11 Mode are the following:
+Value Description
+===== ===========
+3 11g - processing of both a and b packet formats is enabled
+2 11b - processing of b packet format is enabled
+1 11a - processing of a packet format is enabled
+0 undefined
+*/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint32 dot11RxDot11Mode; /* refer to above table*/
+} dot11RxDot11ModeStruct;
+
+
+/******************************************************************************
+
+ Name: DOT11_RTS_THRESHOLD
+ Type: Configuration
+ Access: Write Only
+ Length: 2
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint16 RTSThreshold; /* The number of octets in an MPDU, below which an */
+ /* RTS/CTS handshake is not performed.*/
+
+ uint8 padding[2]; /* alignment to 32bits boundry */
+}dot11RTSThreshold_t;
+
+
+/******************************************************************************
+
+ Name: DOT11_GROUP_ADDRESS_TBL
+ Desc: The variable lengths of MAC addresses that are define as listening for
+ multicast. The field Number of groups identifies how many MAC Addresses
+ are relevant in that information element.
+ Type: Configuration
+ Access: Write Only
+ Length: up to 50 bytes
+
+******************************************************************************/
+#define ADDRESS_GROUP_MAX (8)
+#define ADDRESS_GROUP_MAX_LEN (6 * ADDRESS_GROUP_MAX)
+typedef struct
+{
+ INFO_ELE_HDR
+ uint8 fltrState; /* 1 - multicast filtering is enabled. */
+ /* 0 - multicast filtering is disabled.*/
+
+ uint8 numOfGroups; /* number of relevant multicast */
+ /* addresses.*/
+
+ uint8 padding[2]; /* alignment to 32bits boundary */
+ uint8 dataLocation[ADDRESS_GROUP_MAX_LEN]; /* table of MAC addresses.*/
+}dot11MulticastGroupAddrStart_t;
+
+/******************************************************************************
+
+ ACX_CONFIG_PS_WMM (Patch for Wi-Fi Bug)
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint32 ConfigPsOnWmmMode; /* TRUE - Configure PS to work on WMM mode - do not send the NULL/PS_POLL
+ packets even if TIM is set.
+ FALSE - Configure PS to work on Non-WMM mode - work according to the
+ standard. */
+} ACXConfigPsWmm_t;
+
+/******************************************************************************
+
+
+ Name: ACX_SET_RX_DATA_FILTER
+ Desc: This IE configure one filter in the data filter module. can be used
+ for add / remove / modify filter.
+ Type: Filtering Configuration
+ Access: Write Only
+ Length: 4 + size of the fields of the filter (can vary between filters)
+
+******************************************************************************/
+/* data filter action */
+
+#ifdef HOST_COMPILE
+
+#define FILTER_DROP 0 /* Packet will be dropped by the FW and wont be delivered to the driver. */
+#define FILTER_SIGNAL 1 /* Packet will be delivered to the driver. */
+#define FILTER_FW_HANDLE 2 /* Packet will be handled by the FW and wont be delivered to the driver. */
+
+#else
+
+typedef enum {
+ FILTER_DROP = 0,
+ FILTER_SIGNAL ,
+ FILTER_FW_HANDLE,
+ FILTER_MAX = 0xFF
+}filter_enum;
+
+#endif
+
+#ifdef HOST_COMPILE
+typedef uint8 filter_e;
+#else
+typedef filter_enum filter_e;
+#endif
+
+/* data filter command */
+#define REMOVE_FILTER 0 /* Remove filter */
+#define ADD_FILTER 1 /* Add filter */
+
+/* limitation */
+#define MAX_DATA_FILTERS 4
+#define MAX_DATA_FILTER_SIZE 90
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint8 command; /* 0-remove, 1-add */
+ uint8 index; /* range 0-MAX_DATA_FILTERS */
+ filter_e action; /* action: FILTER_DROP, FILTER_SIGNAL, FILTER_FW_HANDLE */
+ uint8 numOfFields; /* number of field in specific filter */
+ uint8 FPTable; /* filter fields starts here. variable size. */
+} DataFilterConfig_t;
+
+/******************************************************************************
+
+ Name: ACX_ENABLE_RX_DATA_FILTER
+ Desc: This IE disable / enable the data filtering feature. in case the
+ featue is enabled - default action should be set as well.
+ Type: Filtering Configuration
+ Access: Write Only
+ Length: 2
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint8 enable; /* 1 - enable, 0 - disable the data data filtering feature */
+ filter_e action; /* default action that should be implemented for packets that wont
+ match any of the filters, or in case no filter is configured */
+} DataFilterDefault_t;
+
+
+/******************************************************************************
+
+ Name: ACX_GET_DATA_FILTER_STATISTICS
+ Desc: get statistics of the data filtering module.
+ Type: Statistics
+ Access: Read Only
+ Length: 20
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint32 unmatchedPacketsCount; /* number of packets didn't match any filter (when the feature was enabled). */
+ uint32 matchedPacketsCount[MAX_DATA_FILTERS]; /* number of packets matching each of the filters */
+} ACXDataFilteringStatistics_t;
+
+
+#ifdef RADIO_SCOPE
+/******************************************************************************
+
+******************************************************************************
+
+ Name: ACX_RS_ENABLE
+ Desc: This command instructs the WiLink to set the Radio Scope functionality
+ state to either enable/disable.
+ Type: Configuration
+ Access: Write Only
+ Length: 1
+
+******************************************************************************/
+typedef struct
+{
+ INFO_ELE_HDR
+ uint8 Enable; /* RadioScope feature will be enabled (1) or disabled(0) */
+ uint8 padding[3]; /* alignment to 32 bits */
+} ACXRadioScopeEnableStruct;
+
+/******************************************************************************
+
+ Name: ACX_RS_RX
+ Desc: This command instructs the WiLink to set the Radio Scope
+ parameters to the desired values.
+ Type: Configuration
+ Access: Read/Write
+ Length: 1
+
+ We have the following available memory area:
+
+ Information Element ID - 2 bytes
+ Information Element Length - 2 bytes
+
+ Now the rest is MAX_CMD_PARAMS
+ but 4 bytes must be subtracted
+ because of the IE in Buffer.
+
+
+******************************************************************************/
+typedef struct
+{
+ uint16 service;
+ uint16 length;
+ uint8 channel;
+ uint8 band;
+ uint8 status;
+ uint8 padding[1]; /*32 bit padding */
+}RxPacketStruct;
+
+typedef struct
+{
+ /* We have the following available memory area: */
+ /* */
+ /* Information Element ID - 2 bytes */
+ /* Information Element Length - 2 bytes */
+ /* Number Of Packets in Buffer - 2 bytes */
+ /* */
+ /* Now the rest is MAX_CMD_PARAMS */
+ /* but 2 bytes must be subtracted */
+ /* because of the Number Of Packets in Buffer. */
+ RxPacketStruct packet[(MAX_CMD_PARAMS-2)/sizeof(RxPacketStruct)];
+}RxCyclicBufferStruct;
+
+typedef struct
+
+{
+ INFO_ELE_HDR
+ /*uint8 padding[MAX_CMD_PARAMS-4]; */
+ RxCyclicBufferStruct buf;
+} ACXRadioScopeRxParamsStruct;
+
+#endif /* RADIO_SCOPE */
+/******************************************************************************
+ Name: ACX_KEEP_ALIVE_MODE
+ Desc: Set/Get the Keep Alive feature mode.
+ Type: Configuration
+ Access: Write
+ Length: 4 - 1 for the mode + 3 for padding.
+
+******************************************************************************/
+
+typedef struct
+{
+INFO_ELE_HDR
+ Bool_e modeEnabled;
+ uint8 padding [3];
+}AcxKeepAliveMode;
+
+
+/******************************************************************************
+
+ Name: ACX_SET_KEEP_ALIVE_CONFIG
+ Desc: Configure a KLV template parameters.
+ Type: Configuration
+ Access: Write Only
+ Length: 8
+
+******************************************************************************/
+
+typedef enum
+{
+ NO_TX = 0,
+ PERIOD_ONLY
+} KeepAliveTrigger_enum;
+
+#ifdef HOST_COMPILE
+typedef uint8 KeepAliveTrigger_e;
+#else
+typedef KeepAliveTrigger_enum KeepAliveTrigger_e;
+#endif
+
+typedef enum
+{
+ KLV_TEMPLATE_INVALID = 0,
+ KLV_TEMPLATE_VALID,
+ KLV_TEMPLATE_PENDING /* this option is FW internal only. host can only configure VALID or INVALID*/
+} KeepAliveTemplateValidation_enum;
+
+#ifdef HOST_COMPILE
+typedef uint8 KeepAliveTemplateValidation_e;
+#else
+typedef KeepAliveTemplateValidation_enum KeepAliveTemplateValidation_e;
+#endif
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint32 period; /*at range 1000-3600000 (msec). (To allow better range for debugging)*/
+ uint8 index;
+ KeepAliveTemplateValidation_e valid;
+ KeepAliveTrigger_e trigger;
+ uint8 padding;
+} AcxSetKeepAliveConfig_t;
+
+/*
+ * BA sessen interface structure
+ */
+typedef struct
+{
+ INFO_ELE_HDR
+ uint8 aMacAddress[6]; /* Mac address of: SA as receiver / RA as initiator */
+ uint8 uTid; /* TID */
+ uint8 uPolicy; /* Enable / Disable */
+ uint16 uWinSize; /* windows size in num of packet */
+ uint16 uInactivityTimeout; /* as initiator inactivity timeout in time units(TU) of 1024us /
+ as receiver reserved */
+} TAxcBaSessionInitiatorResponderPolicy;
+
+/******************************************************************************
+
+ Name: ACX_PEER_HT_CAP
+ Desc: Configure HT capabilities - declare the capabilities of the peer
+ we are connected to.
+ Type: Configuration
+ Access: Write Only
+ Length:
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint32 uHtCapabilites; /*
+ * bit 0 – Allow HT Operation
+ * bit 1 - Allow Greenfield format in TX
+ * bit 2 – Allow Short GI in TX
+ * bit 3 – Allow L-SIG TXOP Protection in TX
+ * bit 4 – Allow HT Control fields in TX.
+ * Note, driver will still leave space for HT control in packets regardless
+ * of the value of this field. FW will be responsible to drop the HT field
+ * from any frame when this Bit is set to 0.
+ * bit 5 - Allow RD initiation in TXOP. FW is allowed to initate RD. Exact policy
+ * setting for this feature is TBD.
+ * Note, this bit can only be set to 1 if bit 3 is set to 1.
+ */
+
+ uint8 aMacAddress[6]; /*
+ * Indicates to which peer these capabilities are relevant.
+ * Note, currently this value will be set to FFFFFFFFFFFF to indicate it is
+ * relevant for all peers since we only support HT in infrastructure mode.
+ * Later on this field will be relevant to IBSS/DLS operation
+ */
+
+ uint8 uAmpduMaxLength; /*
+ * This the maximum a-mpdu length supported by the AP. The FW may not
+ * exceed this length when sending A-MPDUs
+ */
+
+ uint8 uAmpduMinSpacing; /* This is the minimal spacing required when sending A-MPDUs to the AP. */
+
+} TAxcHtCapabilitiesIeFwInterface;
+
+/* EHtCapabilitesFwBitMask mapping */
+typedef enum
+{
+ FW_CAP_BIT_MASK_HT_OPERATION = BIT_0,
+ FW_CAP_BIT_MASK_GREENFIELD_FRAME_FORMAT = BIT_1,
+ FW_CAP_BIT_MASK_SHORT_GI_FOR_20MHZ_PACKETS = BIT_2,
+ FW_CAP_BIT_MASK_LSIG_TXOP_PROTECTION = BIT_3,
+ FW_CAP_BIT_MASK_HT_CONTROL_FIELDS = BIT_4,
+ FW_CAP_BIT_MASK_RD_INITIATION = BIT_5
+} EHtCapabilitesFwBitMask;
+
+
+/******************************************************************************
+
+ Name: ACX_HT_BSS_OPERATION
+ Desc: Configure HT capabilities - AP rules for behavior in the BSS.
+ Type: Configuration
+ Access: Write Only
+ Length:
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint8 uRifsMode; /* Values: 0 – RIFS not allowed, 1 – RIFS allowed */
+ uint8 uHtProtection; /* Values: 0 – 3 like in spec */
+ uint8 uGfProtection; /* Values: 0 - GF protection not required, 1 – GF protection required */
+ uint8 uHtTxBurstLimit; /* Values: 0 – TX Burst limit not required, 1 – TX Burst Limit required */
+ uint8 uDualCtsProtection; /*
+ * Values: 0 – Dual CTS protection not required, 1 Dual CTS Protection required
+ * Note: When this value is set to 1 FW will protect all TXOP with RTS
+ * frame and will not use CTS-to-self regardless of the value of the
+ * ACX_CTS_PROTECTION information element
+ */
+ uint8 padding[3];
+
+} TAxcHtInformationIeFwInterface;
+
+/******************************************************************************
+ FwStaticData_t - information stored in command mailbox area after the Init
+ process is complete
+
+ Note: This structure is passed to the host via the mailbox at Init-Complete
+ without host request!!
+ The host reads this structure before sending any configuration to the FW.
+******************************************************************************/
+
+typedef struct
+{
+ /* dot11StationIDStruct */
+ uint8 dot11StationID[6]; /* The MAC address for the STA.*/
+ uint8 padding[2]; /* alignment to 32bits boundry */
+ /* ACXRevision_t */
+ char FWVersion[20]; /* The WiLink firmware version, an ASCII string x.x.x.x.x */
+ /* that uniquely identifies the current firmware. */
+ /* The left most digit is incremented each time a */
+ /* significant change is made to the firmware, such as */
+ /* WLAN new project.*/
+ /* The second and third digit is incremented when major enhancements*/
+ /* are added or major fixes are made.*/
+ /* The fourth digit is incremented for each SP release */
+ /* and it indicants the costumer private branch */
+ /* The fifth digit is incremented for each build.*/
+
+ uint32 HardWareVersion; /* This 4 byte field specifies the WiLink hardware version. */
+ /* bits 0 - 15: Reserved.*/
+ /* bits 16 - 23: Version ID - The WiLink version ID */
+ /* (1 = first spin, 2 = second spin, and so on).*/
+ /* bits 24 - 31: Chip ID - The WiLink chip ID. */
+ uint8 txPowerTable[NUMBER_OF_SUB_BANDS_E][NUM_OF_POWER_LEVEL]; /* Maximun Dbm in Dbm/10 units */
+} FwStaticData_t;
+
+/******************************************************************************
+
+
+
+ ACX_TX_CONFIG_OPT
+
+
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ uint16 txCompleteTimeout; /* Max time in msec the FW may delay frame Tx-Complete interrupt */
+ uint16 txCompleteThreshold; /* Tx-Complete packets number which requires interrupting the host (0 = no buffering) */
+} ACXTxConfigOptions_t;
+
+
+/******************************************************************************
+
+Name: ACX_PWR_CONSUMPTION_STATISTICS
+Desc: Retrieve time statistics of the different power states.
+Type: Configuration
+Access: Read Only
+Length: 20
+
+******************************************************************************/
+
+// Power Statistics
+typedef struct
+{
+ INFO_ELE_HDR
+ uint32 awakeTimeCnt_Low;
+ uint32 awakeTimeCnt_Hi;
+ uint32 powerDownTimeCnt_Low;
+ uint32 powerDownTimeCnt_Hi;
+ uint32 elpTimeCnt_Low;
+ uint32 elpTimeCnt_Hi;
+ uint32 ListenMode11BTimeCnt_Low;
+ uint32 ListenMode11BTimeCnt_Hi;
+ uint32 ListenModeOFDMTimeCnt_Low;
+ uint32 ListenModeOFDMTimeCnt_Hi;
+}ACXPowerConsumptionTimeStat_t;
+
+
+/******************************************************************************
+ Name: ACX_BURST_MODE
+ Desc: enable/disable burst mode in case TxOp limit != 0.
+ Type: Configuration
+ Access: Write
+ Length: 1 - 2 for the mode + 3 for padding.
+
+******************************************************************************/
+
+typedef struct
+{
+INFO_ELE_HDR
+ Bool_e enable;
+ uint8 padding [3];
+}AcxBurstMode;
+
+
+/******************************************************************************
+ Name: ACX_SET_RATE_MAMAGEMENT_PARAMS
+ Desc: configure one of the configurable parameters in rate management module.
+ Type: Configuration
+ Access: Write
+ Length: 8 bytes
+
+******************************************************************************/
+typedef enum
+{
+ RATE_MGMT_RETRY_SCORE_PARAM,
+ RATE_MGMT_PER_ADD_PARAM,
+ RATE_MGMT_PER_TH1_PARAM,
+ RATE_MGMT_PER_TH2_PARAM,
+ RATE_MGMT_MAX_PER_PARAM,
+ RATE_MGMT_INVERSE_CURIOSITY_FACTOR_PARAM,
+ RATE_MGMT_TX_FAIL_LOW_TH_PARAM,
+ RATE_MGMT_TX_FAIL_HIGH_TH_PARAM,
+ RATE_MGMT_PER_ALPHA_SHIFT_PARAM,
+ RATE_MGMT_PER_ADD_SHIFT_PARAM,
+ RATE_MGMT_PER_BETA1_SHIFT_PARAM,
+ RATE_MGMT_PER_BETA2_SHIFT_PARAM,
+ RATE_MGMT_RATE_CHECK_UP_PARAM,
+ RATE_MGMT_RATE_CHECK_DOWN_PARAM,
+ RATE_MGMT_RATE_RETRY_POLICY_PARAM,
+ RATE_MGMT_PER_WEIGHT_SHIFT_PARAM,
+ RATE_MGMT_TP_WEIGHT_SHIFT_PARAM,
+ RATE_MGMT_ALL_PARAMS = 0xff
+} rateAdaptParam_enum;
+
+#ifdef HOST_COMPILE
+typedef uint8 rateAdaptParam_e;
+#else
+typedef rateAdaptParam_enum rateAdaptParam_e;
+#endif
+
+#define RATE_MGMT_NUM_OF_UC (2)
+#define RATE_MGMT_NUM_OF_RATES (13)
+
+/* OLD STRUCTURE - OBSOLETE but kept for backwards compatibility with M3 compliant hosts */
+typedef struct
+{
+ INFO_ELE_HDR
+ rateAdaptParam_e paramIndex;
+ uint16 RateRetryScore;
+ uint16 PerAdd;
+ uint16 PerTh1;
+ uint16 PerTh2;
+ uint16 MaxPer;
+ uint8 InverseCuriosityFactor;
+ uint8 TxFailLowTh;
+ uint8 TxFailHighTh;
+ uint8 PerAlphaShift;
+ uint8 PerAddShift;
+ uint8 PerBeta1Shift;
+ uint8 PerBeta2Shift;
+ uint8 RateCheckUp;
+ uint8 RateCheckDown;
+ uint8 RateRetryPolicy[RATE_MGMT_NUM_OF_RATES];
+}AcxRateMangeParams;
+
+/* NEW STRUCTURE */
+typedef struct
+{
+ INFO_ELE_HDR
+ rateAdaptParam_e paramIndex;
+ uint16 RateRetryScore;
+ uint16 PerAdd;
+ uint16 PerTh1;
+ uint16 PerTh2;
+ uint16 MaxPer;
+ uint8 InverseCuriosityFactor[RATE_MGMT_NUM_OF_UC];
+ uint8 TxFailLowTh;
+ uint8 TxFailHighTh;
+ uint8 PerAlphaShift;
+ uint8 PerAddShift;
+ uint8 PerBeta1Shift;
+ uint8 PerBeta2Shift;
+ uint8 RateCheckUp;
+ uint8 RateCheckDown;
+ uint8 RateRetryPolicy[RATE_MGMT_NUM_OF_RATES];
+ uint8 PerWeightShift[RATE_MGMT_NUM_OF_UC]; // 2 weights, 1 per UC
+ uint8 TpWeightShift[RATE_MGMT_NUM_OF_UC]; // 2 weights, 1 per UC
+}AcxRateAdaptParams;
+
+/******************************************************************************
+ Name: ACX_GET_RATE_MAMAGEMENT_PARAMS
+ Desc: read the configurable parameters of rate management module.
+ Type:
+ Access: read
+ Length: 8 bytes
+
+******************************************************************************/
+typedef struct
+{
+ INFO_ELE_HDR
+ int32 SNRCorrectionHighLimit;
+ int32 SNRCorrectionLowLimit;
+ int32 PERErrorTH;
+ int32 attemptEvaluateTH;
+ int32 goodAttemptTH;
+ int32 curveCorrectionStep;
+}AcxRateMangeReadParams;
+
+
+
+/******************************************************************************
+
+ Name: ACX_SET_SMART_REFLEX_STATE
+ Desc: Configure smart reflex state (enable/disable).
+ Type: Configuration
+ Access: Write Only
+ Length:
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ Bool_e enable;
+ uint8 padding [3];
+}ACXSmartReflexState_t;
+
+
+/******************************************************************************
+
+ Name: ACX_SET_SMART_REFLEX_DEBUG
+ Desc: Configure smart reflex mechanism parameters - for debug mode.
+ Type: Configuration
+ Access: Write Only
+ Length:
+
+******************************************************************************/
+typedef struct
+{
+ uint8 len; //maximum length is 14
+ int8 upperLimit;
+ int8 values[14]; //this is the maximum length (in rows) of the error table
+}SmartReflexErrTable_t;
+
+typedef struct
+{
+ INFO_ELE_HDR
+ SmartReflexErrTable_t errorTable;
+ uint16 senN_P;
+ uint16 senNRN;
+ uint16 senPRN;
+ uint16 senN_P_Gain;
+}ACXSmartReflexDebugParams_t;
+
+
+/******************************************************************************
+
+ Name: ACX_SET_SMART_REFLEX_PARAMS
+ Desc: Configure smart reflex mechanism tables - 1 for each FAB.
+ The FW will choose the correct FAB, according to what is burned in the Efuse.
+ Type: Configuration
+ Access: Write Only
+ Length:
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+ SmartReflexErrTable_t errorTable[3];
+}ACXSmartReflexConfigParams_t;
+
+/******************************************************************************
+
+ Name: ACX_SET_DCO_ITRIM_PARAMS
+ Desc: Configure DCO Itrim operational parameters:
+ 1. Enable/disable of the entire feature.
+ 2. Moderation timeout (usec) - how much time to wait from last TX
+ until DCO Itrim can be set low.
+ Type: Configuration
+ Access: Write Only
+ Length:
+
+******************************************************************************/
+
+typedef struct
+{
+ INFO_ELE_HDR
+
+ Bool_e enable ;
+ uint32 moderation_timeout_usec ;
+
+}ACXDCOItrimParams_t ;
+
+
+
+#endif /* PUBLIC_INFOELE_H */
+