#ifndef _MWL_HALREG_H_
#define _MWL_HALREG_H_
#define MWL_ANT_INFO_SUPPORT
#define MACREG_REG_TSF_LOW 0xa600
#define MACREG_REG_TSF_HIGH 0xa604
#define MACREG_REG_CHIP_REV 0xa814
#define MACREG_REG_H2A_INTERRUPT_EVENTS 0x00000C18
#define MACREG_REG_H2A_INTERRUPT_CAUSE 0x00000C1C
#define MACREG_REG_H2A_INTERRUPT_MASK 0x00000C20
#define MACREG_REG_H2A_INTERRUPT_CLEAR_SEL 0x00000C24
#define MACREG_REG_H2A_INTERRUPT_STATUS_MASK 0x00000C28
#define MACREG_REG_A2H_INTERRUPT_EVENTS 0x00000C2C
#define MACREG_REG_A2H_INTERRUPT_CAUSE 0x00000C30
#define MACREG_REG_A2H_INTERRUPT_MASK 0x00000C34
#define MACREG_REG_A2H_INTERRUPT_CLEAR_SEL 0x00000C38
#define MACREG_REG_A2H_INTERRUPT_STATUS_MASK 0x00000C3C
#define MACREG_REG_GEN_PTR 0x00000C10
#define MACREG_REG_INT_CODE 0x00000C14
#define MACREG_REG_SCRATCH 0x00000C40
#define MACREG_REG_FW_PRESENT 0x0000BFFC
#define MACREG_REG_PROMISCUOUS 0xA300
#define MACREG_A2HRIC_BIT_TX_DONE 0x00000001
#define MACREG_A2HRIC_BIT_RX_RDY 0x00000002
#define MACREG_A2HRIC_BIT_OPC_DONE 0x00000004
#define MACREG_A2HRIC_BIT_MAC_EVENT 0x00000008
#define MACREG_A2HRIC_BIT_RX_PROBLEM 0x00000010
#define MACREG_A2HRIC_BIT_RADIO_OFF 0x00000020
#define MACREG_A2HRIC_BIT_RADIO_ON 0x00000040
#define MACREG_A2HRIC_BIT_RADAR_DETECT 0x00000080
#define MACREG_A2HRIC_BIT_ICV_ERROR 0x00000100
#define MACREG_A2HRIC_BIT_MIC_ERROR 0x00000200
#define MACREG_A2HRIC_BIT_QUEUE_EMPTY 0x00004000
#define MACREG_A2HRIC_BIT_QUEUE_FULL 0x00000800
#define MACREG_A2HRIC_BIT_CHAN_SWITCH 0x00001000
#define MACREG_A2HRIC_BIT_TX_WATCHDOG 0x00002000
#define MACREG_A2HRIC_BIT_BA_WATCHDOG 0x00000400
#define MACREQ_A2HRIC_BIT_TX_ACK 0x00008000
#define ISR_SRC_BITS ((MACREG_A2HRIC_BIT_RX_RDY) | \
(MACREG_A2HRIC_BIT_TX_DONE) | \
(MACREG_A2HRIC_BIT_OPC_DONE) | \
(MACREG_A2HRIC_BIT_MAC_EVENT)| \
(MACREG_A2HRIC_BIT_MIC_ERROR)| \
(MACREG_A2HRIC_BIT_ICV_ERROR)| \
(MACREG_A2HRIC_BIT_RADAR_DETECT)| \
(MACREG_A2HRIC_BIT_CHAN_SWITCH)| \
(MACREG_A2HRIC_BIT_TX_WATCHDOG)| \
(MACREG_A2HRIC_BIT_QUEUE_EMPTY)| \
(MACREG_A2HRIC_BIT_BA_WATCHDOG)| \
(MACREQ_A2HRIC_BIT_TX_ACK))
#define MACREG_A2HRIC_BIT_MASK ISR_SRC_BITS
#define MACREG_H2ARIC_BIT_PPA_READY 0x00000001
#define MACREG_H2ARIC_BIT_DOOR_BELL 0x00000002
#define ISR_RESET (1<<15)
#define MACREG_INT_CODE_CMD_FINISHED 0x00000005
#define NUM_EDCA_QUEUES 4
#define NUM_HCCA_QUEUES 0
#define NUM_BA_QUEUES 0
#define NUM_MGMT_QUEUES 0
#define NUM_ACK_EVENT_QUEUE 1
#define TOTAL_TX_QUEUES \
(NUM_EDCA_QUEUES + NUM_HCCA_QUEUES + NUM_BA_QUEUES + NUM_MGMT_QUEUES + NUM_ACK_EVENT_QUEUE)
#define MAX_TXWCB_QUEUES TOTAL_TX_QUEUES - NUM_ACK_EVENT_QUEUE
#define MAX_RXWCB_QUEUES 1
#define RATE_INDEX_MAX_ARRAY 14
#define WOW_MAX_STATION 32
struct mwl_txdesc {
uint32_t Status;
#define EAGLE_TXD_STATUS_IDLE 0x00000000
#define EAGLE_TXD_STATUS_USED 0x00000001
#define EAGLE_TXD_STATUS_OK 0x00000001
#define EAGLE_TXD_STATUS_OK_RETRY 0x00000002
#define EAGLE_TXD_STATUS_OK_MORE_RETRY 0x00000004
#define EAGLE_TXD_STATUS_MULTICAST_TX 0x00000008
#define EAGLE_TXD_STATUS_BROADCAST_TX 0x00000010
#define EAGLE_TXD_STATUS_FAILED_LINK_ERROR 0x00000020
#define EAGLE_TXD_STATUS_FAILED_EXCEED_LIMIT 0x00000040
#define EAGLE_TXD_STATUS_FAILED_XRETRY EAGLE_TXD_STATUS_FAILED_EXCEED_LIMIT
#define EAGLE_TXD_STATUS_FAILED_AGING 0x00000080
#define EAGLE_TXD_STATUS_FW_OWNED 0x80000000
uint8_t DataRate;
uint8_t TxPriority;
uint16_t QosCtrl;
uint32_t PktPtr;
uint16_t PktLen;
uint8_t DestAddr[6];
uint32_t pPhysNext;
uint32_t SapPktInfo;
#define EAGLE_TXD_MODE_BONLY 1
#define EAGLE_TXD_MODE_GONLY 2
#define EAGLE_TXD_MODE_BG 3
#define EAGLE_TXD_MODE_NONLY 4
#define EAGLE_TXD_MODE_BN 5
#define EAGLE_TXD_MODE_GN 6
#define EAGLE_TXD_MODE_BGN 7
#define EAGLE_TXD_MODE_AONLY 8
#define EAGLE_TXD_MODE_AG 10
#define EAGLE_TXD_MODE_AN 12
uint16_t Format;
#define EAGLE_TXD_FORMAT 0x0001
#define EAGLE_TXD_FORMAT_LEGACY 0x0000
#define EAGLE_TXD_FORMAT_HT 0x0001
#define EAGLE_TXD_GI 0x0002
#define EAGLE_TXD_GI_SHORT 0x0002
#define EAGLE_TXD_GI_LONG 0x0000
#define EAGLE_TXD_CHW 0x0004
#define EAGLE_TXD_CHW_20 0x0000
#define EAGLE_TXD_CHW_40 0x0004
#define EAGLE_TXD_RATE 0x01f8
#define EAGLE_TXD_RATE_S 3
#define EAGLE_TXD_ADV 0x0600
#define EAGLE_TXD_ADV_S 9
#define EAGLE_TXD_ADV_NONE 0x0000
#define EAGLE_TXD_ADV_LDPC 0x0200
#define EAGLE_TXD_ADV_RS 0x0400
#define EAGLE_TXD_ANTENNA 0x1800
#define EAGLE_TXD_ANTENNA_S 11
#define EAGLE_TXD_EXTCHAN 0x6000
#define EAGLE_TXD_EXTCHAN_S 13
#define EAGLE_TXD_EXTCHAN_HI 0x0000
#define EAGLE_TXD_EXTCHAN_LO 0x2000
#define EAGLE_TXD_PREAMBLE 0x8000
#define EAGLE_TXD_PREAMBLE_SHORT 0x8000
#define EAGLE_TXD_PREAMBLE_LONG 0x0000
uint16_t pad;
#define EAGLE_TXD_FIXED_RATE 0x0100
#define EAGLE_TXD_DONT_AGGR 0x0200
uint32_t ack_wcb_addr;
} __packed;
struct mwl_ant_info {
uint8_t rssi_a;
uint8_t rssi_b;
uint8_t rssi_c;
uint8_t rsvd1;
uint8_t nf_a;
uint8_t nf_b;
uint8_t nf_c;
uint8_t rsvd2;
uint8_t nf;
uint8_t rsvd3[3];
} __packed;
struct mwl_rxdesc {
uint8_t RxControl;
#define EAGLE_RXD_CTRL_DRIVER_OWN 0x00
#define EAGLE_RXD_CTRL_OS_OWN 0x04
#define EAGLE_RXD_CTRL_DMA_OWN 0x80
uint8_t RSSI;
uint8_t Status;
#define EAGLE_RXD_STATUS_IDLE 0x00
#define EAGLE_RXD_STATUS_OK 0x01
#define EAGLE_RXD_STATUS_MULTICAST_RX 0x02
#define EAGLE_RXD_STATUS_BROADCAST_RX 0x04
#define EAGLE_RXD_STATUS_FRAGMENT_RX 0x08
#define EAGLE_RXD_STATUS_GENERAL_DECRYPT_ERR 0xff
#define EAGLE_RXD_STATUS_DECRYPT_ERR_MASK 0x80
#define EAGLE_RXD_STATUS_TKIP_MIC_DECRYPT_ERR 0x02
#define EAGLE_RXD_STATUS_WEP_ICV_DECRYPT_ERR 0x04
#define EAGLE_RXD_STATUS_TKIP_ICV_DECRYPT_ERR 0x08
uint8_t Channel;
uint16_t PktLen;
uint8_t SQ2;
uint8_t Rate;
uint32_t pPhysBuffData;
uint32_t pPhysNext;
uint16_t QosCtrl;
uint16_t HtSig2;
#ifdef MWL_ANT_INFO_SUPPORT
struct mwl_ant_info ai;
#endif
} __packed;
#define HostCmd_STA_MODE 0x5A
#define HostCmd_SOFTAP_MODE 0xA5
#define HostCmd_STA_FWRDY_SIGNATURE 0xF0F1F2F4
#define HostCmd_SOFTAP_FWRDY_SIGNATURE 0xF1F2F4A5
#define HostCmd_CMD_CODE_DNLD 0x0001
#define HostCmd_CMD_GET_HW_SPEC 0x0003
#define HostCmd_CMD_SET_HW_SPEC 0x0004
#define HostCmd_CMD_MAC_MULTICAST_ADR 0x0010
#define HostCmd_CMD_802_11_GET_STAT 0x0014
#define HostCmd_CMD_MAC_REG_ACCESS 0x0019
#define HostCmd_CMD_BBP_REG_ACCESS 0x001a
#define HostCmd_CMD_RF_REG_ACCESS 0x001b
#define HostCmd_CMD_802_11_RADIO_CONTROL 0x001c
#define HostCmd_CMD_802_11_RF_TX_POWER 0x001e
#define HostCmd_CMD_802_11_RF_ANTENNA 0x0020
#define HostCmd_CMD_SET_BEACON 0x0100
#define HostCmd_CMD_SET_AID 0x010d
#define HostCmd_CMD_SET_RF_CHANNEL 0x010a
#define HostCmd_CMD_SET_INFRA_MODE 0x010e
#define HostCmd_CMD_SET_G_PROTECT_FLAG 0x010f
#define HostCmd_CMD_802_11_RTS_THSD 0x0113
#define HostCmd_CMD_802_11_SET_SLOT 0x0114
#define HostCmd_CMD_802_11H_DETECT_RADAR 0x0120
#define HostCmd_CMD_SET_WMM_MODE 0x0123
#define HostCmd_CMD_HT_GUARD_INTERVAL 0x0124
#define HostCmd_CMD_SET_FIXED_RATE 0x0126
#define HostCmd_CMD_SET_LINKADAPT_CS_MODE 0x0129
#define HostCmd_CMD_SET_MAC_ADDR 0x0202
#define HostCmd_CMD_SET_RATE_ADAPT_MODE 0x0203
#define HostCmd_CMD_GET_WATCHDOG_BITMAP 0x0205
#define HostCmd_CMD_BSS_START 0x1100
#define HostCmd_CMD_SET_NEW_STN 0x1111
#define HostCmd_CMD_SET_KEEP_ALIVE 0x1112
#define HostCmd_CMD_SET_APMODE 0x1114
#define HostCmd_CMD_SET_SWITCH_CHANNEL 0x1121
#define HostCmd_CMD_UPDATE_ENCRYPTION 0x1122
#define HostCmd_CMD_BASTREAM 0x1125
#define HostCmd_CMD_SET_RIFS 0x1126
#define HostCmd_CMD_SET_N_PROTECT_FLAG 0x1131
#define HostCmd_CMD_SET_N_PROTECT_OPMODE 0x1132
#define HostCmd_CMD_SET_OPTIMIZATION_LEVEL 0x1133
#define HostCmd_CMD_GET_CALTABLE 0x1134
#define HostCmd_CMD_SET_MIMOPSHT 0x1135
#define HostCmd_CMD_GET_BEACON 0x1138
#define HostCmd_CMD_SET_REGION_CODE 0x1139
#define HostCmd_CMD_SET_POWERSAVESTATION 0x1140
#define HostCmd_CMD_SET_TIM 0x1141
#define HostCmd_CMD_GET_TIM 0x1142
#define HostCmd_CMD_GET_SEQNO 0x1143
#define HostCmd_CMD_DWDS_ENABLE 0x1144
#define HostCmd_CMD_AMPDU_RETRY_RATEDROP_MODE 0x1145
#define HostCmd_CMD_CFEND_ENABLE 0x1146
#define HostCmd_RESULT_OK 0x0000
#define HostCmd_RESULT_ERROR 0x0001
#define HostCmd_RESULT_NOT_SUPPORT 0x0002
#define HostCmd_RESULT_PENDING 0x0003
#define HostCmd_RESULT_BUSY 0x0004
#define HostCmd_RESULT_PARTIAL_DATA 0x0005
#define HostCmd_ACT_GEN_READ 0x0000
#define HostCmd_ACT_GEN_WRITE 0x0001
#define HostCmd_ACT_GEN_GET 0x0000
#define HostCmd_ACT_GEN_SET 0x0001
#define HostCmd_ACT_GEN_OFF 0x0000
#define HostCmd_ACT_GEN_ON 0x0001
#define HostCmd_ACT_DIFF_CHANNEL 0x0002
#define HostCmd_ACT_GEN_SET_LIST 0x0002
#define HostCmd_ACT_USE_FIXED_RATE 0x0001
#define HostCmd_ACT_NOT_USE_FIXED_RATE 0x0002
#define HostCmd_ACT_ADD 0x0002
#define HostCmd_ACT_REMOVE 0x0004
#define HostCmd_ACT_USE_DEFAULT 0x0008
#define HostCmd_TYPE_WEP_40_BIT 0x0001
#define HostCmd_TYPE_WEP_104_BIT 0x0002
#define HostCmd_TYPE_WEP_128_BIT 0x0003
#define HostCmd_TYPE_WEP_TX_KEY 0x0004
#define HostCmd_NUM_OF_WEP_KEYS 4
#define HostCmd_WEP_KEY_INDEX_MASK 0x3fffffff
#define HostCmd_ACT_HALT 0x0001
#define HostCmd_ACT_RESTART 0x0002
#define HostCmd_TYPE_AUTO_PREAMBLE 0x0001
#define HostCmd_TYPE_SHORT_PREAMBLE 0x0002
#define HostCmd_TYPE_LONG_PREAMBLE 0x0003
#define HostCmd_TYPE_802_11A 0x0001
#define HostCmd_TYPE_802_11B 0x0002
#define HostCmd_ACT_TX_POWER_OPT_SET_HIGH 0x0003
#define HostCmd_ACT_TX_POWER_OPT_SET_MID 0x0002
#define HostCmd_ACT_TX_POWER_OPT_SET_LOW 0x0001
#define HostCmd_ACT_TX_POWER_OPT_SET_AUTO 0x0000
#define HostCmd_ACT_TX_POWER_LEVEL_MIN 0x000e
#define HostCmd_ACT_TX_POWER_LEVEL_GAP 0x0001
#define HostCmd_ACT_SET_TX_AUTO 0x0000
#define HostCmd_ACT_SET_TX_FIX_RATE 0x0001
#define HostCmd_ACT_GET_TX_RATE 0x0002
#define HostCmd_ACT_SET_RX 0x0001
#define HostCmd_ACT_SET_TX 0x0002
#define HostCmd_ACT_SET_BOTH 0x0003
#define HostCmd_ACT_GET_RX 0x0004
#define HostCmd_ACT_GET_TX 0x0008
#define HostCmd_ACT_GET_BOTH 0x000c
#define TYPE_ANTENNA_DIVERSITY 0xffff
#define HostCmd_TYPE_CAM 0x0000
#define HostCmd_TYPE_MAX_PSP 0x0001
#define HostCmd_TYPE_FAST_PSP 0x0002
#define HostCmd_CMD_SET_EDCA_PARAMS 0x0115
typedef struct {
uint16_t Cmd;
uint16_t Length;
#ifdef MWL_MBSS_SUPPORT
uint8_t SeqNum;
uint8_t MacId;
#else
uint16_t SeqNum;
#endif
uint16_t Result;
} __packed FWCmdHdr;
typedef struct {
FWCmdHdr CmdHdr;
uint8_t Version;
uint8_t HostIf;
uint16_t NumOfMCastAdr;
uint8_t PermanentAddr[6];
uint16_t RegionCode;
uint32_t FWReleaseNumber;
uint32_t ulFwAwakeCookie;
uint32_t DeviceCaps;
uint32_t RxPdWrPtr;
uint32_t NumTxQueues;
uint32_t WcbBase[MAX_TXWCB_QUEUES];
uint32_t Flags;
#define SET_HW_SPEC_DISABLEMBSS 0x08
#define SET_HW_SPEC_HOSTFORM_BEACON 0x10
#define SET_HW_SPEC_HOSTFORM_PROBERESP 0x20
#define SET_HW_SPEC_HOST_POWERSAVE 0x40
#define SET_HW_SPEC_HOSTENCRDECR_MGMT 0x80
uint32_t TxWcbNumPerQueue;
uint32_t TotalRxWcb;
} __packed HostCmd_DS_SET_HW_SPEC;
typedef struct {
FWCmdHdr CmdHdr;
u_int8_t Version;
u_int8_t HostIf;
u_int16_t NumOfWCB;
u_int16_t NumOfMCastAddr;
u_int8_t PermanentAddr[6];
u_int16_t RegionCode;
u_int16_t NumberOfAntenna;
u_int32_t FWReleaseNumber;
u_int32_t WcbBase0;
u_int32_t RxPdWrPtr;
u_int32_t RxPdRdPtr;
u_int32_t ulFwAwakeCookie;
u_int32_t WcbBase1[TOTAL_TX_QUEUES-1];
} __packed HostCmd_DS_GET_HW_SPEC;
typedef struct {
FWCmdHdr CmdHdr;
u_int32_t Enable;
} __packed HostCmd_DS_BSS_START;
typedef struct {
u_int8_t ElemId;
u_int8_t Len;
u_int8_t OuiType[4];
u_int8_t Ver[2];
u_int8_t GrpKeyCipher[4];
u_int8_t PwsKeyCnt[2];
u_int8_t PwsKeyCipherList[4];
u_int8_t AuthKeyCnt[2];
u_int8_t AuthKeyList[4];
} __packed RsnIE_t;
typedef struct {
u_int8_t ElemId;
u_int8_t Len;
u_int8_t Ver[2];
u_int8_t GrpKeyCipher[4];
u_int8_t PwsKeyCnt[2];
u_int8_t PwsKeyCipherList[4];
u_int8_t AuthKeyCnt[2];
u_int8_t AuthKeyList[4];
u_int8_t RsnCap[2];
} __packed Rsn48IE_t;
typedef struct {
u_int8_t ElementId;
u_int8_t Len;
u_int8_t CfpCnt;
u_int8_t CfpPeriod;
u_int16_t CfpMaxDuration;
u_int16_t CfpDurationRemaining;
} __packed CfParams_t;
typedef struct {
u_int8_t ElementId;
u_int8_t Len;
u_int16_t AtimWindow;
} __packed IbssParams_t;
typedef union {
CfParams_t CfParamSet;
IbssParams_t IbssParamSet;
} __packed SsParams_t;
typedef struct {
u_int8_t ElementId;
u_int8_t Len;
u_int16_t DwellTime;
u_int8_t HopSet;
u_int8_t HopPattern;
u_int8_t HopIndex;
} __packed FhParams_t;
typedef struct {
u_int8_t ElementId;
u_int8_t Len;
u_int8_t CurrentChan;
} __packed DsParams_t;
typedef union {
FhParams_t FhParamSet;
DsParams_t DsParamSet;
} __packed PhyParams_t;
typedef struct {
u_int8_t FirstChannelNum;
u_int8_t NumOfChannels;
u_int8_t MaxTxPwrLevel;
} __packed ChannelInfo_t;
typedef struct {
u_int8_t ElementId;
u_int8_t Len;
u_int8_t CountryStr[3];
ChannelInfo_t ChannelInfo[40];
} __packed Country_t;
typedef struct {
u_int8_t AIFSN : 4;
u_int8_t ACM : 1;
u_int8_t ACI : 2;
u_int8_t rsvd : 1;
}__packed ACIAIFSN_field_t;
typedef struct {
u_int8_t ECW_min : 4;
u_int8_t ECW_max : 4;
}__packed ECWmin_max_field_t;
typedef struct {
ACIAIFSN_field_t ACI_AIFSN;
ECWmin_max_field_t ECW_min_max;
u_int16_t TXOP_lim;
}__packed ACparam_rcd_t;
typedef struct {
u_int8_t ElementId;
u_int8_t Len;
u_int8_t OUI[3];
u_int8_t Type;
u_int8_t Subtype;
u_int8_t version;
u_int8_t rsvd;
ACparam_rcd_t AC_BE;
ACparam_rcd_t AC_BK;
ACparam_rcd_t AC_VI;
ACparam_rcd_t AC_VO;
} __packed WMM_param_elem_t ;
typedef struct {
#ifdef MWL_MBSS_SUPPORT
u_int8_t StaMacAddr[6];
#endif
u_int8_t SsId[32];
u_int8_t BssType;
u_int16_t BcnPeriod;
u_int8_t DtimPeriod;
SsParams_t SsParamSet;
PhyParams_t PhyParamSet;
u_int16_t ProbeDelay;
u_int16_t CapInfo;
u_int8_t BssBasicRateSet[14];
u_int8_t OpRateSet[14];
RsnIE_t RsnIE;
Rsn48IE_t Rsn48IE;
WMM_param_elem_t WMMParam;
Country_t Country;
u_int32_t ApRFType;
} __packed StartCmd_t;
#define HostCmd_CAPINFO_DEFAULT 0x0000
#define HostCmd_CAPINFO_ESS 0x0001
#define HostCmd_CAPINFO_IBSS 0x0002
#define HostCmd_CAPINFO_CF_POLLABLE 0x0004
#define HostCmd_CAPINFO_CF_REQUEST 0x0008
#define HostCmd_CAPINFO_PRIVACY 0x0010
#define HostCmd_CAPINFO_SHORT_PREAMBLE 0x0020
#define HostCmd_CAPINFO_PBCC 0x0040
#define HostCmd_CAPINFO_CHANNEL_AGILITY 0x0080
#define HostCmd_CAPINFO_SHORT_SLOT 0x0400
#define HostCmd_CAPINFO_DSSS_OFDM 0x2000
typedef struct {
FWCmdHdr CmdHdr;
StartCmd_t StartCmd;
} __packed HostCmd_DS_AP_BEACON;
typedef struct {
FWCmdHdr CmdHdr;
uint16_t FrmBodyLen;
uint8_t FrmBody[1];
} __packed HostCmd_DS_SET_BEACON;
typedef struct {
FWCmdHdr CmdHdr;
uint16_t Action;
uint16_t NumOfAdrs;
#define MWL_HAL_MCAST_MAX 32
uint8_t MACList[6*32];
} __packed HostCmd_DS_MAC_MULTICAST_ADR;
typedef struct {
FWCmdHdr CmdHdr;
uint32_t GProtectFlag;
} __packed HostCmd_FW_SET_G_PROTECT_FLAG;
typedef struct {
FWCmdHdr CmdHdr;
} __packed HostCmd_FW_SET_INFRA_MODE;
typedef struct {
FWCmdHdr CmdHdr;
uint16_t Action;
uint8_t CurrentChannel;
uint32_t ChannelFlags;
} __packed HostCmd_FW_SET_RF_CHANNEL;
#define FREQ_BAND_2DOT4GHZ 0x0001
#define FREQ_BAND_4DOT9GHZ 0x0002
#define FREQ_BAND_5GHZ 0x0004
#define FREQ_BAND_5DOT2GHZ 0x0008
#define CH_AUTO_WIDTH 0x0000
#define CH_10_MHz_WIDTH 0x0040
#define CH_20_MHz_WIDTH 0x0080
#define CH_40_MHz_WIDTH 0x0100
#define EXT_CH_NONE 0x0000
#define EXT_CH_ABOVE_CTRL_CH 0x0800
#define EXT_CH_AUTO 0x1000
#define EXT_CH_BELOW_CTRL_CH 0x1800
#define FIXED_RATE_WITH_AUTO_RATE_DROP 0
#define FIXED_RATE_WITHOUT_AUTORATE_DROP 1
#define LEGACY_RATE_TYPE 0
#define HT_RATE_TYPE 1
#define RETRY_COUNT_VALID 0
#define RETRY_COUNT_INVALID 1
typedef struct {
uint32_t FixRateType;
uint32_t RetryCountValid;
} __packed FIX_RATE_FLAG;
typedef struct {
FIX_RATE_FLAG FixRateTypeFlags;
uint32_t FixedRate;
uint32_t RetryCount;
} __packed FIXED_RATE_ENTRY;
typedef struct {
FWCmdHdr CmdHdr;
uint32_t Action;
uint32_t AllowRateDrop;
uint32_t EntryCount;
FIXED_RATE_ENTRY FixedRateTable[4];
uint8_t MulticastRate;
uint8_t MultiRateTxType;
uint8_t ManagementRate;
} __packed HostCmd_FW_USE_FIXED_RATE;
typedef struct {
uint32_t AllowRateDrop;
uint32_t EntryCount;
FIXED_RATE_ENTRY FixedRateTable[4];
} __packed USE_FIXED_RATE_INFO;
typedef struct {
FWCmdHdr CmdHdr;
uint32_t Action;
uint32_t GIType;
#define GI_TYPE_LONG 0x0001
#define GI_TYPE_SHORT 0x0002
} __packed HostCmd_FW_HT_GUARD_INTERVAL;
typedef struct {
FWCmdHdr CmdHdr;
uint32_t Action;
uint8_t RxAntennaMap;
uint8_t TxAntennaMap;
} __packed HostCmd_FW_HT_MIMO_CONFIG;
typedef struct {
FWCmdHdr CmdHdr;
uint16_t Action;
uint8_t Slot;
} __packed HostCmd_FW_SET_SLOT;
typedef struct {
FWCmdHdr CmdHdr;
uint32_t TxRetrySuccesses;
uint32_t TxMultipleRetrySuccesses;
uint32_t TxFailures;
uint32_t RTSSuccesses;
uint32_t RTSFailures;
uint32_t AckFailures;
uint32_t RxDuplicateFrames;
uint32_t FCSErrorCount;
uint32_t TxWatchDogTimeouts;
uint32_t RxOverflows;
uint32_t RxFragErrors;
uint32_t RxMemErrors;
uint32_t PointerErrors;
uint32_t TxUnderflows;
uint32_t TxDone;
uint32_t TxDoneBufTryPut;
uint32_t TxDoneBufPut;
uint32_t Wait4TxBuf;
uint32_t TxAttempts;
uint32_t TxSuccesses;
uint32_t TxFragments;
uint32_t TxMulticasts;
uint32_t RxNonCtlPkts;
uint32_t RxMulticasts;
uint32_t RxUndecryptableFrames;
uint32_t RxICVErrors;
uint32_t RxExcludedFrames;
} __packed HostCmd_DS_802_11_GET_STAT;
typedef struct {
FWCmdHdr CmdHdr;
uint16_t Action;
uint16_t Offset;
uint32_t Value;
uint16_t Reserved;
} __packed HostCmd_DS_MAC_REG_ACCESS;
typedef struct {
FWCmdHdr CmdHdr;
uint16_t Action;
uint16_t Offset;
uint8_t Value;
uint8_t Reserverd[3];
} __packed HostCmd_DS_BBP_REG_ACCESS;
typedef struct {
FWCmdHdr CmdHdr;
uint16_t Action;
uint16_t Offset;
uint8_t Value;
uint8_t Reserverd[3];
} __packed HostCmd_DS_RF_REG_ACCESS;
typedef struct {
FWCmdHdr CmdHdr;
uint16_t Action;
uint16_t Control;
uint16_t RadioOn;
} __packed HostCmd_DS_802_11_RADIO_CONTROL;
#define TX_POWER_LEVEL_TOTAL 8
typedef struct {
FWCmdHdr CmdHdr;
uint16_t Action;
uint16_t SupportTxPowerLevel;
uint16_t CurrentTxPowerLevel;
uint16_t Reserved;
uint16_t PowerLevelList[TX_POWER_LEVEL_TOTAL];
} __packed HostCmd_DS_802_11_RF_TX_POWER;
typedef struct _HostCmd_DS_802_11_RF_ANTENNA {
FWCmdHdr CmdHdr;
uint16_t Action;
uint16_t AntennaMode;
} __packed HostCmd_DS_802_11_RF_ANTENNA;
typedef struct {
FWCmdHdr CmdHdr;
uint16_t Action;
uint16_t PowerMode;
} __packed HostCmd_DS_802_11_PS_MODE;
typedef struct {
FWCmdHdr CmdHdr;
uint16_t Action;
uint16_t Threshold;
} __packed HostCmd_DS_802_11_RTS_THSD;
typedef struct {
FWCmdHdr CmdHdr;
#ifdef MWL_MBSS_SUPPORT
uint16_t MacType;
#define WL_MAC_TYPE_PRIMARY_CLIENT 0
#define WL_MAC_TYPE_SECONDARY_CLIENT 1
#define WL_MAC_TYPE_PRIMARY_AP 2
#define WL_MAC_TYPE_SECONDARY_AP 3
#endif
uint8_t MacAddr[6];
} __packed HostCmd_DS_SET_MAC,
HostCmd_FW_SET_BSSID,
HostCmd_FW_SET_MAC;
typedef struct {
FWCmdHdr CmdHdr;
uint32_t PSPoll;
} __packed HostCmd_FW_TX_POLL;
typedef struct {
FWCmdHdr CmdHdr;
uint16_t AssocID;
uint8_t MacAddr[6];
uint32_t GProtection;
uint8_t ApRates[ RATE_INDEX_MAX_ARRAY];
} __packed HostCmd_FW_SET_AID;
typedef struct {
uint32_t LegacyRateBitMap;
uint32_t HTRateBitMap;
uint16_t CapInfo;
uint16_t HTCapabilitiesInfo;
uint8_t MacHTParamInfo;
uint8_t Rev;
struct {
uint8_t ControlChan;
uint8_t AddChan;
uint16_t OpMode;
uint16_t stbc;
} __packed AddHtInfo;
} __packed PeerInfo_t;
typedef struct {
FWCmdHdr CmdHdr;
uint16_t AID;
uint8_t MacAddr[6];
uint16_t StnId;
uint16_t Action;
uint16_t Reserved;
PeerInfo_t PeerInfo;
uint8_t Qosinfo;
uint8_t isQosSta;
uint32_t FwStaPtr;
} __packed HostCmd_FW_SET_NEW_STN;
typedef struct {
FWCmdHdr CmdHdr;
uint8_t tick;
} __packed HostCmd_FW_SET_KEEP_ALIVE_TICK;
typedef struct {
FWCmdHdr CmdHdr;
uint8_t QNum;
} __packed HostCmd_FW_SET_RIFS;
typedef struct {
FWCmdHdr CmdHdr;
uint8_t ApMode;
} __packed HostCmd_FW_SET_APMODE;
typedef struct {
FWCmdHdr CmdHdr;
uint16_t Action;
uint16_t RadarTypeCode;
} __packed HostCmd_802_11h_Detect_Radar;
#define DR_DFS_DISABLE 0
#define DR_CHK_CHANNEL_AVAILABLE_START 1
#define DR_CHK_CHANNEL_AVAILABLE_STOP 2
#define DR_IN_SERVICE_MONITOR_START 3
typedef struct {
FWCmdHdr CmdHdr;
uint16_t Aid;
uint32_t Set;
} __packed HostCmd_UpdateTIM;
typedef struct {
FWCmdHdr CmdHdr;
uint32_t SsidBroadcastEnable;
} __packed HostCmd_SSID_BROADCAST;
typedef struct {
FWCmdHdr CmdHdr;
uint32_t WdsEnable;
} __packed HostCmd_WDS;
typedef struct {
FWCmdHdr CmdHdr;
uint32_t Next11hChannel;
uint32_t Mode;
uint32_t InitialCount;
uint32_t ChannelFlags ;
} __packed HostCmd_SET_SWITCH_CHANNEL;
typedef struct {
FWCmdHdr CmdHdr;
uint32_t SpectrumMgmt;
} __packed HostCmd_SET_SPECTRUM_MGMT;
typedef struct {
FWCmdHdr CmdHdr;
int32_t PowerConstraint;
} __packed HostCmd_SET_POWER_CONSTRAINT;
typedef struct {
uint8_t FirstChannelNo;
uint8_t NoofChannel;
uint8_t MaxTransmitPw;
} __packed DomainChannelEntry;
typedef struct {
uint8_t CountryString[3];
uint8_t GChannelLen;
DomainChannelEntry DomainEntryG[1];
uint8_t AChannelLen;
DomainChannelEntry DomainEntryA[20];
} __packed DomainCountryInfo;
typedef struct {
FWCmdHdr CmdHdr;
uint32_t Action ;
DomainCountryInfo DomainInfo ;
} __packed HostCmd_SET_COUNTRY_INFO;
typedef struct {
FWCmdHdr CmdHdr;
uint16_t regionCode ;
} __packed HostCmd_SET_REGIONCODE_INFO;
typedef struct {
FWCmdHdr CmdHdr;
uint16_t Action;
} __packed HostCmd_FW_SetWMMMode;
typedef struct {
FWCmdHdr CmdHdr;
uint16_t Action;
uint16_t IeListLen;
uint8_t IeList[200];
} __packed HostCmd_FW_SetIEs;
#define EDCA_PARAM_SIZE 18
#define BA_PARAM_SIZE 2
typedef struct {
FWCmdHdr CmdHdr;
uint16_t Action;
uint16_t TxOP;
uint32_t CWMax;
uint32_t CWMin;
uint8_t AIFSN;
uint8_t TxQNum;
} __packed HostCmd_FW_SET_EDCA_PARAMS;
#define MAX_ENCR_KEY_LENGTH 16
#define MIC_KEY_LENGTH 8
#define ENCR_KEY_TYPE_ID_WEP 0x00
#define ENCR_KEY_TYPE_ID_TKIP 0x01
#define ENCR_KEY_TYPE_ID_AES 0x02
#define ENCR_KEY_FLAG_INUSE 0x00000001
#define ENCR_KEY_FLAG_RXGROUPKEY 0x00000002
#define ENCR_KEY_FLAG_TXGROUPKEY 0x00000004
#define ENCR_KEY_FLAG_PAIRWISE 0x00000008
#define ENCR_KEY_FLAG_RXONLY 0x00000010
#define ENCR_KEY_FLAG_AUTHENTICATOR 0x00000020
#define ENCR_KEY_FLAG_TSC_VALID 0x00000040
#define ENCR_KEY_FLAG_WEP_TXKEY 0x01000000
#define ENCR_KEY_FLAG_MICKEY_VALID 0x02000000
typedef enum {
EncrActionEnableHWEncryption,
EncrActionTypeSetKey,
EncrActionTypeRemoveKey,
EncrActionTypeSetGroupKey
} ENCR_ACTION_TYPE;
typedef struct {
uint8_t KeyMaterial[ MAX_ENCR_KEY_LENGTH ];
} __packed WEP_TYPE_KEY;
typedef struct {
uint16_t low;
uint32_t high;
} __packed ENCR_TKIPSEQCNT;
typedef struct {
uint8_t KeyMaterial[ MAX_ENCR_KEY_LENGTH ];
uint8_t TkipTxMicKey[ MIC_KEY_LENGTH ];
uint8_t TkipRxMicKey[ MIC_KEY_LENGTH ];
ENCR_TKIPSEQCNT TkipRsc;
ENCR_TKIPSEQCNT TkipTsc;
} __packed TKIP_TYPE_KEY;
typedef struct {
uint8_t KeyMaterial[ MAX_ENCR_KEY_LENGTH ];
} __packed AES_TYPE_KEY;
typedef struct {
uint16_t Length;
uint16_t KeyTypeId;
uint32_t KeyInfo;
uint32_t KeyIndex;
uint16_t KeyLen;
union {
WEP_TYPE_KEY WepKey;
TKIP_TYPE_KEY TkipKey;
AES_TYPE_KEY AesKey;
}__packed Key;
#ifdef MWL_MBSS_SUPPORT
uint8_t Macaddr[6];
#endif
} __packed KEY_PARAM_SET;
typedef struct {
FWCmdHdr CmdHdr;
uint32_t ActionType;
uint32_t DataLength;
#ifdef MWL_MBSS_SUPPORT
uint8_t macaddr[6];
#endif
uint8_t ActionData[1];
} __packed HostCmd_FW_UPDATE_ENCRYPTION;
typedef struct {
FWCmdHdr CmdHdr;
uint32_t ActionType;
uint32_t DataLength;
KEY_PARAM_SET KeyParam;
#ifndef MWL_MBSS_SUPPORT
uint8_t Macaddr[8];
#endif
} __packed HostCmd_FW_UPDATE_ENCRYPTION_SET_KEY;
typedef struct {
uint32_t Flags;
uint8_t RateKbps;
uint16_t RateCodeToIndex;
}__packed RATE_INFO;
typedef enum {
StaInfoDbActionAddEntry,
StaInfoDbActionModifyEntry,
StaInfoDbActionRemoveEntry
}__packed STADB_ACTION_TYPE;
#define BASTREAM_FLAG_DELAYED_TYPE 0x00
#define BASTREAM_FLAG_IMMEDIATE_TYPE 0x01
#define BASTREAM_FLAG_DIRECTION_UPSTREAM 0x00
#define BASTREAM_FLAG_DIRECTION_DOWNSTREAM 0x02
#define BASTREAM_FLAG_DIRECTION_DLP 0x04
#define BASTREAM_FLAG_DIRECTION_BOTH 0x06
typedef enum {
BaCreateStream,
BaUpdateStream,
BaDestroyStream,
BaFlushStream,
BaCheckCreateStream
} BASTREAM_ACTION_TYPE;
typedef struct {
uint32_t Context;
} __packed BASTREAM_CONTEXT;
typedef struct {
uint32_t Flags;
uint32_t IdleThrs;
uint32_t BarThrs;
uint32_t WindowSize;
uint8_t PeerMacAddr[6];
uint8_t DialogToken;
uint8_t Tid;
uint8_t QueueId;
uint8_t ParamInfo;
BASTREAM_CONTEXT FwBaContext;
uint8_t ResetSeqNo;
uint16_t StartSeqNo;
uint8_t StaSrcMacAddr[6];
}__packed BASTREAM_CREATE_STREAM;
typedef struct {
uint32_t Flags;
BASTREAM_CONTEXT FwBaContext;
uint16_t BaSeqNum;
}__packed BASTREAM_UPDATE_STREAM;
typedef struct {
uint32_t Flags;
BASTREAM_CONTEXT FwBaContext;
}__packed BASTREAM_STREAM_INFO;
typedef struct {
FWCmdHdr CmdHdr;
uint32_t ActionType;
union
{
BASTREAM_CREATE_STREAM CreateParams;
BASTREAM_UPDATE_STREAM UpdtSeqNum;
BASTREAM_STREAM_INFO DestroyParams;
BASTREAM_STREAM_INFO FlushParams;
}__packed BaInfo;
}__packed HostCmd_FW_BASTREAM;
typedef struct {
FWCmdHdr CmdHdr;
uint8_t Watchdogbitmap;
} __packed HostCmd_FW_GET_WATCHDOG_BITMAP;
typedef struct {
FWCmdHdr CmdHdr;
uint16_t MaxPowerLevel;
uint16_t Reserved;
} __packed HostCmd_DS_SET_REGION_POWER;
typedef struct {
FWCmdHdr CmdHdr;
uint16_t Action;
uint16_t RateAdaptMode;
} __packed HostCmd_DS_SET_RATE_ADAPT_MODE;
typedef struct {
FWCmdHdr CmdHdr;
uint16_t Action;
uint16_t CSMode;
} __packed HostCmd_DS_SET_LINKADAPT_CS_MODE;
typedef struct {
FWCmdHdr CmdHdr;
uint32_t NProtectFlag;
} __packed HostCmd_FW_SET_N_PROTECT_FLAG;
typedef struct {
FWCmdHdr CmdHdr;
uint8_t NProtectOpMode;
} __packed HostCmd_FW_SET_N_PROTECT_OPMODE;
typedef struct {
FWCmdHdr CmdHdr;
uint8_t OptLevel;
} __packed HostCmd_FW_SET_OPTIMIZATION_LEVEL;
typedef struct {
FWCmdHdr CmdHdr;
uint8_t annex;
uint8_t index;
uint8_t len;
uint8_t Reserverd;
#define CAL_TBL_SIZE 160
uint8_t calTbl[CAL_TBL_SIZE];
} __packed HostCmd_FW_GET_CALTABLE;
typedef struct {
FWCmdHdr CmdHdr;
uint8_t Addr[6];
uint8_t Enable;
uint8_t Mode;
} __packed HostCmd_FW_SET_MIMOPSHT;
#define MAX_BEACON_SIZE 1024
typedef struct {
FWCmdHdr CmdHdr;
uint16_t Bcnlen;
uint8_t Reserverd[2];
uint8_t Bcn[MAX_BEACON_SIZE];
} __packed HostCmd_FW_GET_BEACON;
typedef struct {
FWCmdHdr CmdHdr;
uint8_t NumberOfPowersave;
uint8_t reserved;
} __packed HostCmd_SET_POWERSAVESTATION;
typedef struct {
FWCmdHdr CmdHdr;
uint16_t Aid;
uint32_t Set;
uint8_t reserved;
} __packed HostCmd_SET_TIM;
typedef struct {
FWCmdHdr CmdHdr;
uint8_t TrafficMap[251];
uint8_t reserved;
} __packed HostCmd_GET_TIM;
typedef struct {
FWCmdHdr CmdHdr;
uint8_t MacAddr[6];
uint8_t TID;
uint16_t SeqNo;
uint8_t reserved;
} __packed HostCmd_GET_SEQNO;
typedef struct {
FWCmdHdr CmdHdr;
uint32_t Enable;
} __packed HostCmd_DWDS_ENABLE;
typedef struct {
FWCmdHdr CmdHdr;
uint16_t Action;
uint32_t Option;
uint32_t Threshold;
}__packed HostCmd_FW_AMPDU_RETRY_RATEDROP_MODE;
typedef struct {
FWCmdHdr CmdHdr;
uint32_t Enable;
}__packed HostCmd_CFEND_ENABLE;
#endif