blob: 902f6367bbc7d9964d3774301fa815f927f3f39d [file] [log] [blame] [edit]
/******************************************************************************
*
* This file is provided under a dual license. When you use or
* distribute this software, you may choose to be licensed under
* version 2 of the GNU General Public License ("GPLv2 License")
* or BSD License.
*
* GPLv2 License
*
* Copyright(C) 2016 MediaTek Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of version 2 of the GNU General Public License as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See http://www.gnu.org/licenses/gpl-2.0.html for more details.
*
* BSD LICENSE
*
* Copyright(C) 2016 MediaTek Inc. All rights reserved.
*
* 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 of the copyright holder 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
* HOLDER 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.
*
*****************************************************************************/
/*
** Id: //Department/DaVinci/BRANCHES/
* MT6620_WIFI_DRIVER_V2_3/include/nic_cmd_event.h#1
*/
/*! \file "nic_cmd_event.h"
* \brief This file contains the declairation file of the WLAN OID processing
* routines of Windows driver for MediaTek Inc.
* 802.11 Wireless LAN Adapters.
*/
#ifndef _NIC_CMD_EVENT_H
#define _NIC_CMD_EVENT_H
/*******************************************************************************
* C O M P I L E R F L A G S
*******************************************************************************
*/
/*******************************************************************************
* E X T E R N A L R E F E R E N C E S
*******************************************************************************
*/
#include "gl_vendor.h"
/*******************************************************************************
* C O N S T A N T S
*******************************************************************************
*/
#define CMD_PQ_ID (0x8000)
#define CMD_PACKET_TYPE_ID (0xA0)
#define PKT_FT_CMD 0x2
#define CMD_STATUS_SUCCESS 0
#define CMD_STATUS_REJECTED 1
#define CMD_STATUS_UNKNOWN 2
#define MAX_IE_LENGTH (600)
#define MAX_WSC_IE_LENGTH (400)
/* Action field in structure CMD_CH_PRIVILEGE_T */
#define CMD_CH_ACTION_REQ 0
#define CMD_CH_ACTION_ABORT 1
/* Status field in structure EVENT_CH_PRIVILEGE_T */
#define EVENT_CH_STATUS_GRANT 0
/*CMD_POWER_OFFSET_T , follow 5G sub-band*/
/* #define MAX_SUBBAND_NUM 8 */
/* */
/* */
/* */
/* */
#define S2D_INDEX_CMD_H2N 0x0
#define S2D_INDEX_CMD_C2N 0x1
#define S2D_INDEX_CMD_H2C 0x2
#define S2D_INDEX_CMD_H2N_H2C 0x3
#define S2D_INDEX_EVENT_N2H 0x0
#define S2D_INDEX_EVENT_N2C 0x1
#define S2D_INDEX_EVENT_C2H 0x2
#define S2D_INDEX_EVENT_N2H_N2C 0x3
#define RDD_EVENT_HDR_SIZE 20
#define RDD_ONEPLUSE_SIZE 8 /* size of one pulse is 8 bytes */
#define RDD_PULSE_OFFSET0 0
#define RDD_PULSE_OFFSET1 1
#define RDD_PULSE_OFFSET2 2
#define RDD_PULSE_OFFSET3 3
#define RDD_PULSE_OFFSET4 4
#define RDD_PULSE_OFFSET5 5
#define RDD_PULSE_OFFSET6 6
#define RDD_PULSE_OFFSET7 7
#if (CFG_SUPPORT_DFS_MASTER == 1)
#define RDD_IN_SEL_0 0
#define RDD_IN_SEL_1 1
#define PPB_SIZE 32
#define LPB_SIZE 32
#endif
#if (CFG_SUPPORT_TXPOWER_INFO == 1)
#define TXPOWER_EVENT_SHOW_ALL_RATE_TXPOWER_INFO 0x5
#endif
#if CFG_SUPPORT_QA_TOOL
#define IQ_FILE_LINE_OFFSET 18
#define IQ_FILE_IQ_STR_LEN 8
#define RTN_IQ_DATA_LEN 1024 /* return 1k per packet */
#define MCAST_WCID_TO_REMOVE 0
/* Network type */
#define NETWORK_INFRA BIT(16)
#define NETWORK_P2P BIT(17)
#define NETWORK_IBSS BIT(18)
#define NETWORK_MESH BIT(19)
#define NETWORK_BOW BIT(20)
#define NETWORK_WDS BIT(21)
/* Station role */
#define STA_TYPE_STA BIT(0)
#define STA_TYPE_AP BIT(1)
#define STA_TYPE_ADHOC BIT(2)
#define STA_TYPE_TDLS BIT(3)
#define STA_TYPE_WDS BIT(4)
/* Connection type */
#define CONNECTION_INFRA_STA (STA_TYPE_STA|NETWORK_INFRA)
#define CONNECTION_INFRA_AP (STA_TYPE_AP|NETWORK_INFRA)
#define CONNECTION_P2P_GC (STA_TYPE_STA|NETWORK_P2P)
#define CONNECTION_P2P_GO (STA_TYPE_AP|NETWORK_P2P)
#define CONNECTION_MESH_STA (STA_TYPE_STA|NETWORK_MESH)
#define CONNECTION_MESH_AP (STA_TYPE_AP|NETWORK_MESH)
#define CONNECTION_IBSS_ADHOC (STA_TYPE_ADHOC|NETWORK_IBSS)
#define CONNECTION_TDLS \
(STA_TYPE_STA|NETWORK_INFRA|STA_TYPE_TDLS)
#define CONNECTION_WDS (STA_TYPE_WDS|NETWORK_WDS)
#define ICAP_CONTENT_ADC 0x10000006
#define ICAP_CONTENT_TOAE 0x7
#define ICAP_CONTENT_SPECTRUM 0xB
#define ICAP_CONTENT_RBIST 0x10
#define ICAP_CONTENT_DCOC 0x20
#define ICAP_CONTENT_FIIQ 0x48
#define ICAP_CONTENT_FDIQ 0x49
#if CFG_SUPPORT_BUFFER_MODE
struct CMD_EFUSE_BUFFER_MODE {
uint8_t ucSourceMode;
uint8_t ucCount;
uint8_t ucCmdType; /* 0:6632, 1: 7668 */
uint8_t ucReserved;
uint8_t aBinContent[MAX_EEPROM_BUFFER_SIZE];
};
#define SOURCE_MODE_EFUSE (0)
#define SOURCE_MODE_BUFFER_MODE (1)
#define CMD_TYPE_CONTENT_FORMAT_MASK BITS(0, 3)
#define CONTENT_FORMAT_BIN_CONTENT (0)
#define CONTENT_FORMAT_WHOLE_CONTENT (1)
#define CONTENT_FORMAT_MULTIPLE_SECTIONS (2)
#define CMD_TYPE_CAL_TIME_REDUCTION_MASK BIT(4)
#define CMD_TYPE_CAL_TIME_REDUCTION_SHFT (4)
#define CAL_TIME_REDUCTION_ENABLE (1)
struct CMD_EFUSE_BUFFER_MODE_CONNAC_T {
uint8_t ucSourceMode;
uint8_t ucContentFormat;
uint16_t u2Count;
uint8_t aBinContent[MAX_EEPROM_BUFFER_SIZE];
};
/*#if (CFG_EEPROM_PAGE_ACCESS == 1)*/
struct CMD_ACCESS_EFUSE {
uint32_t u4Address;
uint32_t u4Valid;
uint8_t aucData[16];
};
struct CMD_EFUSE_FREE_BLOCK {
uint8_t ucGetFreeBlock;
uint8_t ucVersion;
uint8_t ucDieIndex;
uint8_t aucReserved;
};
struct CMD_GET_TX_POWER {
uint8_t ucTxPwrType;
uint8_t ucCenterChannel;
uint8_t ucDbdcIdx; /* 0:Band 0, 1: Band1 */
uint8_t ucBand; /* 0:G-band 1: A-band*/
uint8_t ucReserved[4];
};
/*#endif*/
#endif /* CFG_SUPPORT_BUFFER_MODE */
struct CMD_SET_TX_TARGET_POWER {
int8_t cTxPwr2G4Cck; /* signed, in unit of 0.5dBm */
int8_t cTxPwr2G4Dsss; /* signed, in unit of 0.5dBm */
uint8_t ucTxTargetPwr; /* Tx target power base for all*/
uint8_t ucReserved;
int8_t cTxPwr2G4OFDM_BPSK;
int8_t cTxPwr2G4OFDM_QPSK;
int8_t cTxPwr2G4OFDM_16QAM;
int8_t cTxPwr2G4OFDM_Reserved;
int8_t cTxPwr2G4OFDM_48Mbps;
int8_t cTxPwr2G4OFDM_54Mbps;
int8_t cTxPwr2G4HT20_BPSK;
int8_t cTxPwr2G4HT20_QPSK;
int8_t cTxPwr2G4HT20_16QAM;
int8_t cTxPwr2G4HT20_MCS5;
int8_t cTxPwr2G4HT20_MCS6;
int8_t cTxPwr2G4HT20_MCS7;
int8_t cTxPwr2G4HT40_BPSK;
int8_t cTxPwr2G4HT40_QPSK;
int8_t cTxPwr2G4HT40_16QAM;
int8_t cTxPwr2G4HT40_MCS5;
int8_t cTxPwr2G4HT40_MCS6;
int8_t cTxPwr2G4HT40_MCS7;
int8_t cTxPwr5GOFDM_BPSK;
int8_t cTxPwr5GOFDM_QPSK;
int8_t cTxPwr5GOFDM_16QAM;
int8_t cTxPwr5GOFDM_Reserved;
int8_t cTxPwr5GOFDM_48Mbps;
int8_t cTxPwr5GOFDM_54Mbps;
int8_t cTxPwr5GHT20_BPSK;
int8_t cTxPwr5GHT20_QPSK;
int8_t cTxPwr5GHT20_16QAM;
int8_t cTxPwr5GHT20_MCS5;
int8_t cTxPwr5GHT20_MCS6;
int8_t cTxPwr5GHT20_MCS7;
int8_t cTxPwr5GHT40_BPSK;
int8_t cTxPwr5GHT40_QPSK;
int8_t cTxPwr5GHT40_16QAM;
int8_t cTxPwr5GHT40_MCS5;
int8_t cTxPwr5GHT40_MCS6;
int8_t cTxPwr5GHT40_MCS7;
};
/*
* Definitions for extension CMD_ID
*/
enum ENUM_EXT_CMD_ID {
EXT_CMD_ID_EFUSE_ACCESS = 0x01,
EXT_CMD_ID_RF_REG_ACCESS = 0x02,
EXT_CMD_ID_EEPROM_ACCESS = 0x03,
EXT_CMD_ID_RF_TEST = 0x04,
EXT_CMD_ID_RADIO_ON_OFF_CTRL = 0x05,
EXT_CMD_ID_WIFI_RX_DISABLE = 0x06,
EXT_CMD_ID_PM_STATE_CTRL = 0x07,
EXT_CMD_ID_CHANNEL_SWITCH = 0x08,
EXT_CMD_ID_NIC_CAPABILITY = 0x09,
EXT_CMD_ID_AP_PWR_SAVING_CLEAR = 0x0A,
EXT_CMD_ID_SET_WTBL2_RATETABLE = 0x0B,
EXT_CMD_ID_GET_WTBL_INFORMATION = 0x0C,
EXT_CMD_ID_ASIC_INIT_UNINIT_CTRL = 0x0D,
EXT_CMD_ID_MULTIPLE_REG_ACCESS = 0x0E,
EXT_CMD_ID_AP_PWR_SAVING_CAPABILITY = 0x0F,
EXT_CMD_ID_SECURITY_ADDREMOVE_KEY = 0x10,
EXT_CMD_ID_SET_TX_POWER_CONTROL = 0x11,
EXT_CMD_ID_SET_THERMO_CALIBRATION = 0x12,
EXT_CMD_ID_FW_LOG_2_HOST = 0x13,
EXT_CMD_ID_AP_PWR_SAVING_START = 0x14,
EXT_CMD_ID_MCC_OFFLOAD_START = 0x15,
EXT_CMD_ID_MCC_OFFLOAD_STOP = 0x16,
EXT_CMD_ID_LED = 0x17,
EXT_CMD_ID_PACKET_FILTER = 0x18,
EXT_CMD_ID_COEXISTENCE = 0x19,
EXT_CMD_ID_PWR_MGT_BIT_WIFI = 0x1B,
EXT_CMD_ID_GET_TX_POWER = 0x1C,
EXT_CMD_ID_BF_ACTION = 0x1E,
EXT_CMD_ID_WMT_CMD_OVER_WIFI = 0x20,
EXT_CMD_ID_EFUSE_BUFFER_MODE = 0x21,
EXT_CMD_ID_OFFLOAD_CTRL = 0x22,
EXT_CMD_ID_THERMAL_PROTECT = 0x23,
EXT_CMD_ID_CLOCK_SWITCH_DISABLE = 0x24,
EXT_CMD_ID_STAREC_UPDATE = 0x25,
EXT_CMD_ID_BSSINFO_UPDATE = 0x26,
EXT_CMD_ID_EDCA_SET = 0x27,
EXT_CMD_ID_SLOT_TIME_SET = 0x28,
EXT_CMD_ID_DEVINFO_UPDATE = 0x2A,
EXT_CMD_ID_NOA_OFFLOAD_CTRL = 0x2B,
EXT_CMD_ID_GET_SENSOR_RESULT = 0x2C,
EXT_CMD_ID_TMR_CAL = 0x2D,
EXT_CMD_ID_WAKEUP_OPTION = 0x2E,
EXT_CMD_ID_OBTW = 0x2F,
EXT_CMD_ID_GET_TX_STATISTICS = 0x30,
EXT_CMD_ID_AC_QUEUE_CONTROL = 0x31,
EXT_CMD_ID_WTBL_UPDATE = 0x32,
EXT_CMD_ID_BCN_UPDATE = 0x33,
EXT_CMD_ID_DRR_CTRL = 0x36,
EXT_CMD_ID_BSSGROUP_CTRL = 0x37,
EXT_CMD_ID_VOW_FEATURE_CTRL = 0x38,
EXT_CMD_ID_PKT_PROCESSOR_CTRL = 0x39,
EXT_CMD_ID_PALLADIUM = 0x3A,
#if CFG_SUPPORT_MU_MIMO
EXT_CMD_ID_MU_CTRL = 0x40,
#endif /* CFG_SUPPORT_MU_MIMO */
EXT_CMD_ID_EFUSE_FREE_BLOCK = 0x4F,
EXT_CMD_ID_TX_POWER_FEATURE_CTRL = 0x58,
EXT_CMD_ID_SER = 0x81,
};
enum NDIS_802_11_WEP_STATUS {
Ndis802_11WEPEnabled,
Ndis802_11Encryption1Enabled = Ndis802_11WEPEnabled,
Ndis802_11WEPDisabled,
Ndis802_11EncryptionDisabled = Ndis802_11WEPDisabled,
Ndis802_11WEPKeyAbsent,
Ndis802_11Encryption1KeyAbsent = Ndis802_11WEPKeyAbsent,
Ndis802_11WEPNotSupported,
Ndis802_11EncryptionNotSupported = Ndis802_11WEPNotSupported,
Ndis802_11TKIPEnable,
Ndis802_11Encryption2Enabled = Ndis802_11TKIPEnable,
Ndis802_11Encryption2KeyAbsent,
Ndis802_11AESEnable,
Ndis802_11Encryption3Enabled = Ndis802_11AESEnable,
Ndis802_11CCMP256Enable,
Ndis802_11GCMP128Enable,
Ndis802_11GCMP256Enable,
Ndis802_11Encryption3KeyAbsent,
Ndis802_11TKIPAESMix,
/* TKIP or AES mix */
Ndis802_11Encryption4Enabled = Ndis802_11TKIPAESMix,
Ndis802_11Encryption4KeyAbsent,
Ndis802_11GroupWEP40Enabled,
Ndis802_11GroupWEP104Enabled,
#ifdef WAPI_SUPPORT
Ndis802_11EncryptionSMS4Enabled, /* WPI SMS4 support */
#endif /* WAPI_SUPPORT */
};
#if CFG_SUPPORT_MU_MIMO
enum {
/* debug commands */
MU_SET_ENABLE = 0,
MU_GET_ENABLE,
MU_SET_MUPROFILE_ENTRY,
MU_GET_MUPROFILE_ENTRY,
MU_SET_GROUP_TBL_ENTRY,
MU_GET_GROUP_TBL_ENTRY,
MU_SET_CLUSTER_TBL_ENTRY,
MU_GET_CLUSTER_TBL_ENTRY,
MU_SET_GROUP_USER_THRESHOLD,
MU_GET_GROUP_USER_THRESHOLD,
MU_SET_GROUP_NSS_THRESHOLD,
MU_GET_GROUP_NSS_THRESHOLD,
MU_SET_TXREQ_MIN_TIME,
MU_GET_TXREQ_MIN_TIME,
MU_SET_SU_NSS_CHECK,
MU_GET_SU_NSS_CHECK,
MU_SET_CALC_INIT_MCS,
MU_GET_CALC_INIT_MCS,
MU_SET_TXOP_DEFAULT,
MU_GET_TXOP_DEFAULT,
MU_SET_SU_LOSS_THRESHOLD,
MU_GET_SU_LOSS_THRESHOLD,
MU_SET_MU_GAIN_THRESHOLD,
MU_GET_MU_GAIN_THRESHOLD,
MU_SET_SECONDARY_AC_POLICY,
MU_GET_SECONDARY_AC_POLICY,
MU_SET_GROUP_TBL_DMCS_MASK,
MU_GET_GROUP_TBL_DMCS_MASK,
MU_SET_MAX_GROUP_SEARCH_CNT,
MU_GET_MAX_GROUP_SEARCH_CNT,
MU_GET_MU_PROFILE_TX_STATUS_CNT,
MU_SET_TRIGGER_MU_TX,
/* F/W flow test commands */
MU_SET_TRIGGER_GID_MGMT_FRAME,
/* HQA commands */
MU_HQA_SET_STA_PARAM,
MU_HQA_SET_ENABLE,
MU_HQA_SET_SNR_OFFSET,
MU_HQA_SET_ZERO_NSS,
MU_HQA_SET_SPEED_UP_LQ,
MU_HQA_SET_GROUP,
MU_HQA_SET_MU_TABLE,
MU_HQA_SET_CALC_LQ,
MU_HQA_GET_CALC_LQ,
MU_HQA_SET_CALC_INIT_MCS,
MU_HQA_GET_CALC_INIT_MCS,
MU_HQA_GET_QD,
};
#endif /* CFG_SUPPORT_MU_MIMO */
#endif /* CFG_SUPPORT_QA_TOOL */
enum ENUM_CMD_ID {
CMD_ID_DUMMY_RSV = 0x00, /* 0x00 (Set) */
CMD_ID_TEST_CTRL = 0x01, /* 0x01 (Set) */
CMD_ID_BASIC_CONFIG, /* 0x02 (Set) */
CMD_ID_SCAN_REQ_V2, /* 0x03 (Set) */
CMD_ID_NIC_POWER_CTRL, /* 0x04 (Set) */
CMD_ID_POWER_SAVE_MODE, /* 0x05 (Set) */
CMD_ID_LINK_ATTRIB, /* 0x06 (Set) */
CMD_ID_ADD_REMOVE_KEY, /* 0x07 (Set) */
CMD_ID_DEFAULT_KEY_ID, /* 0x08 (Set) */
CMD_ID_INFRASTRUCTURE, /* 0x09 (Set) */
CMD_ID_SET_RX_FILTER, /* 0x0a (Set) */
CMD_ID_DOWNLOAD_BUF, /* 0x0b (Set) */
CMD_ID_WIFI_START, /* 0x0c (Set) */
CMD_ID_CMD_BT_OVER_WIFI, /* 0x0d (Set) */
CMD_ID_SET_MEDIA_CHANGE_DELAY_TIME, /* 0x0e (Set) */
CMD_ID_SET_DOMAIN_INFO, /* 0x0f (Set) */
CMD_ID_SET_IP_ADDRESS, /* 0x10 (Set) */
CMD_ID_BSS_ACTIVATE_CTRL, /* 0x11 (Set) */
CMD_ID_SET_BSS_INFO, /* 0x12 (Set) */
CMD_ID_UPDATE_STA_RECORD, /* 0x13 (Set) */
CMD_ID_REMOVE_STA_RECORD, /* 0x14 (Set) */
CMD_ID_INDICATE_PM_BSS_CREATED, /* 0x15 (Set) */
CMD_ID_INDICATE_PM_BSS_CONNECTED, /* 0x16 (Set) */
CMD_ID_INDICATE_PM_BSS_ABORT, /* 0x17 (Set) */
CMD_ID_UPDATE_BEACON_CONTENT, /* 0x18 (Set) */
CMD_ID_SET_BSS_RLM_PARAM, /* 0x19 (Set) */
CMD_ID_SCAN_REQ, /* 0x1a (Set) */
CMD_ID_SCAN_CANCEL, /* 0x1b (Set) */
CMD_ID_CH_PRIVILEGE, /* 0x1c (Set) */
CMD_ID_UPDATE_WMM_PARMS, /* 0x1d (Set) */
CMD_ID_SET_WMM_PS_TEST_PARMS, /* 0x1e (Set) */
CMD_ID_TX_AMPDU, /* 0x1f (Set) */
CMD_ID_ADDBA_REJECT, /* 0x20 (Set) */
CMD_ID_SET_PS_PROFILE_ADV, /* 0x21 (Set) */
CMD_ID_SET_RAW_PATTERN, /* 0x22 (Set) */
CMD_ID_CONFIG_PATTERN_FUNC, /* 0x23 (Set) */
CMD_ID_SET_TX_PWR, /* 0x24 (Set) */
CMD_ID_SET_PWR_PARAM, /* 0x25 (Set) */
CMD_ID_P2P_ABORT, /* 0x26 (Set) */
CMD_ID_SET_DBDC_PARMS = 0x28, /* 0x28 (Set) */
#if CFG_SUPPORT_ADVANCE_CONTROL
CMD_ID_KEEP_FULL_PWR = 0x2A, /* 0x2A (Set) */
#endif
/* SLT commands */
CMD_ID_RANDOM_RX_RESET_EN = 0x2C, /* 0x2C (Set ) */
CMD_ID_RANDOM_RX_RESET_DE = 0x2D, /* 0x2D (Set ) */
CMD_ID_SAPP_EN = 0x2E, /* 0x2E (Set ) */
CMD_ID_SAPP_DE = 0x2F, /* 0x2F (Set ) */
CMD_ID_ROAMING_TRANSIT = 0x30, /* 0x30 (Set) */
CMD_ID_SET_PHY_PARAM, /* 0x31 (Set) */
CMD_ID_SET_NOA_PARAM, /* 0x32 (Set) */
CMD_ID_SET_OPPPS_PARAM, /* 0x33 (Set) */
CMD_ID_SET_UAPSD_PARAM, /* 0x34 (Set) */
CMD_ID_SET_SIGMA_STA_SLEEP, /* 0x35 (Set) */
CMD_ID_SET_EDGE_TXPWR_LIMIT, /* 0x36 (Set) */
CMD_ID_SET_DEVICE_MODE, /* 0x37 (Set) */
CMD_ID_SET_TXPWR_CTRL, /* 0x38 (Set) */
CMD_ID_SET_AUTOPWR_CTRL, /* 0x39 (Set) */
CMD_ID_SET_WFD_CTRL, /* 0x3a (Set) */
CMD_ID_SET_NLO_REQ, /* 0x3b (Set) */
CMD_ID_SET_NLO_CANCEL, /* 0x3c (Set) */
CMD_ID_SET_GTK_REKEY_DATA, /* 0x3d (Set) */
CMD_ID_ROAMING_CONTROL, /* 0x3e (Set) */
/* CFG_M0VE_BA_TO_DRIVER */
CMD_ID_RESET_BA_SCOREBOARD = 0x3f, /* 0x3f (Set) */
CMD_ID_SET_EDGE_TXPWR_LIMIT_5G = 0x40, /* 0x40 (Set) */
CMD_ID_SET_CHANNEL_PWR_OFFSET, /* 0x41 (Set) */
CMD_ID_SET_80211AC_TX_PWR, /* 0x42 (Set) */
CMD_ID_SET_PATH_COMPASATION, /* 0x43 (Set) */
CMD_ID_SET_BATCH_REQ = 0x47, /* 0x47 (Set) */
CMD_ID_SET_NVRAM_SETTINGS, /* 0x48 (Set) */
CMD_ID_SET_COUNTRY_POWER_LIMIT, /* 0x49 (Set) */
#if CFG_WOW_SUPPORT
CMD_ID_SET_WOWLAN, /* 0x4a (Set) */
#endif
#if CFG_SUPPORT_CSI
CMD_ID_CSI_CONTROL = 0x4C, /* 0x4C (Set /Query) */
#endif
CMD_ID_SET_MDNS_RECORD = 0x4e,
#if CFG_SUPPORT_WIFI_HOST_OFFLOAD
CMD_ID_SET_AM_FILTER = 0x55, /* 0x55 (Set) */
CMD_ID_SET_AM_HEARTBEAT, /* 0x56 (Set) */
CMD_ID_SET_AM_TCP, /* 0x57 (Set) */
#endif
CMD_ID_SET_SUSPEND_MODE = 0x58, /* 0x58 (Set) */
CMD_ID_SET_COUNTRY_POWER_LIMIT_PER_RATE = 0x5d, /* 0x5d (Set) */
#if CFG_WOW_SUPPORT
CMD_ID_SET_PF_CAPABILITY = 0x59, /* 0x59 (Set) */
#endif
CMD_ID_SET_RRM_CAPABILITY = 0x5A, /* 0x5A (Set) */
CMD_ID_SET_AP_CONSTRAINT_PWR_LIMIT = 0x5B, /* 0x5B (Set) */
CMD_ID_SET_TSM_STATISTICS_REQUEST = 0x5E,
CMD_ID_GET_TSM_STATISTICS = 0x5F,
CMD_ID_GET_PSCAN_CAPABILITY = 0x60, /* 0x60 (Get) deprecated */
CMD_ID_SET_SCHED_SCAN_ENABLE, /* 0x61 (Set) */
CMD_ID_SET_SCHED_SCAN_REQ, /* 0x62 (Set) */
CMD_ID_SET_GSCAN_ADD_HOTLIST_BSSID, /* 0x63 (Set) deprecated */
CMD_ID_SET_GSCAN_ADD_SWC_BSSID, /* 0x64 (Set) deprecated */
CMD_ID_SET_GSCAN_MAC_ADDR, /* 0x65 (Set) deprecated */
CMD_ID_GET_GSCAN_RESULT, /* 0x66 (Get) deprecated */
CMD_ID_SET_PSCAN_MAC_ADDR, /* 0x67 (Set) deprecated */
CMD_ID_UPDATE_AC_PARMS = 0x6A, /* 0x6A (Set) */
#if CFG_SUPPORT_ROAMING_SKIP_ONE_AP
/* 0x6D (Set) used to setting roaming skip*/
CMD_ID_SET_ROAMING_SKIP = 0x6D,
#endif
CMD_ID_GET_SET_CUSTOMER_CFG = 0x70, /* 0x70(Set) */
CMD_ID_TDLS_PS = 0x75, /* 0x75 (Set) */
CMD_ID_GET_CNM = 0x79,
CMD_ID_COEX_CTRL = 0x7C, /* 0x7C (Set/Query) */
CMD_ID_PERF_IND = 0x7E, /* 0x7C (Set) */
CMD_ID_GET_NIC_CAPABILITY = 0x80, /* 0x80 (Query) */
CMD_ID_GET_LINK_QUALITY, /* 0x81 (Query) */
CMD_ID_GET_STATISTICS, /* 0x82 (Query) */
CMD_ID_GET_CONNECTION_STATUS, /* 0x83 (Query) */
CMD_ID_GET_STA_STATISTICS = 0x85, /* 0x85 (Query) */
CMD_ID_GET_LTE_CHN = 0x87, /* 0x87 (Query) */
CMD_ID_GET_CHN_LOADING = 0x88, /* 0x88 (Query) */
CMD_ID_GET_BUG_REPORT = 0x89, /* 0x89 (Query) */
CMD_ID_GET_NIC_CAPABILITY_V2 = 0x8A,/* 0x8A (Query) */
CMD_ID_LOG_UI_INFO = 0x8D, /* 0x8D (Set / Query) */
#if CFG_SUPPORT_OSHARE
CMD_ID_SET_OSHARE_MODE = 0x8C,
#endif
#if (CFG_SUPPORT_DFS_MASTER == 1)
CMD_ID_RDD_ON_OFF_CTRL = 0x8F, /* 0x8F(Set) */
#endif
#if CFG_SUPPORT_ANT_DIV
CMD_ID_ANT_DIV_CTRL = 0x91,
#endif
CMD_ID_TMR_ACTION = 0x92,
#if (CFG_SUPPORT_TSF_SYNC == 1)
CMD_ID_BEACON_TSF_SYNC = 0x94, /* 0x94 (Set / Query) */
#endif
CMD_ID_WFC_KEEP_ALIVE = 0xA0, /* 0xa0(Set) */
CMD_ID_RSSI_MONITOR = 0xA1, /* 0xa1(Set) */
#if CFG_SUPPORT_CAL_RESULT_BACKUP_TO_HOST
CMD_ID_CAL_BACKUP_IN_HOST_V2 = 0xAE, /* 0xAE (Set / Query) */
#endif
CMD_ID_ACCESS_REG = 0xc0, /* 0xc0 (Set / Query) */
CMD_ID_MAC_MCAST_ADDR, /* 0xc1 (Set / Query) */
CMD_ID_802_11_PMKID, /* 0xc2 (Set / Query) */
CMD_ID_ACCESS_EEPROM, /* 0xc3 (Set / Query) */
CMD_ID_SW_DBG_CTRL, /* 0xc4 (Set / Query) */
CMD_ID_FW_LOG_2_HOST, /* 0xc5 (Set) */
CMD_ID_DUMP_MEM, /* 0xc6 (Query) */
CMD_ID_RESOURCE_CONFIG, /* 0xc7 (Set / Query) */
#if CFG_SUPPORT_QA_TOOL
CMD_ID_ACCESS_RX_STAT, /* 0xc8 (Query) */
#endif /* CFG_SUPPORT_QA_TOOL */
CMD_ID_CHIP_CONFIG = 0xCA, /* 0xca (Set / Query) */
CMD_ID_STATS_LOG = 0xCB, /* 0xcb (Set) */
CMD_ID_IPI_INFO = 0xCC, /* 0xcc (Query) */
CMD_ID_WLAN_INFO = 0xCD, /* 0xcd (Query) */
CMD_ID_MIB_INFO = 0xCE, /* 0xce (Query) */
#if CFG_SUPPORT_GET_MCS_INFO
CMD_ID_TX_MCS_INFO = 0xCF, /* 0xcf (Query) */
#endif
CMD_ID_GET_TXPWR_TBL = 0xD0, /* 0xd0 (Query) */
CMD_ID_SET_TXBF_BACKOFF = 0xD1,
CMD_ID_SET_RDD_CH = 0xE1,
#if CFG_SUPPORT_QA_TOOL
/* magic number for Extending MT6630 original CMD header */
CMD_ID_LAYER_0_EXT_MAGIC_NUM = 0xED,
#endif /* CFG_SUPPORT_QA_TOOL */
CMD_ID_SET_BWCS = 0xF1,
CMD_ID_SET_OSC = 0xF2,
CMD_ID_HIF_CTRL = 0xF6, /* 0xF6 (Set) */
CMD_ID_GET_BUILD_DATE_CODE = 0xF8, /* 0xf8 (Query) */
CMD_ID_GET_BSS_INFO = 0xF9, /* 0xF9 (Query) */
CMD_ID_SET_HOTSPOT_OPTIMIZATION = 0xFA, /* 0xFA (Set) */
CMD_ID_SET_TDLS_CH_SW = 0xFB,
CMD_ID_SET_MONITOR = 0xFC, /* 0xFC (Set) */
#if CFG_SUPPORT_ADVANCE_CONTROL
CMD_ID_ADV_CONTROL = 0xFE, /* 0xFE (Set / Query) */
#endif
CMD_ID_END
};
enum ENUM_EVENT_ID {
EVENT_ID_NIC_CAPABILITY = 0x01, /* 0x01 (Query) */
EVENT_ID_LINK_QUALITY, /* 0x02 (Query / Unsolicited) */
EVENT_ID_STATISTICS, /* 0x03 (Query) */
EVENT_ID_MIC_ERR_INFO, /* 0x04 (Unsolicited) */
EVENT_ID_ACCESS_REG, /* 0x05 (Query - CMD_ID_ACCESS_REG) */
EVENT_ID_ACCESS_EEPROM, /* 0x06 (Query - CMD_ID_ACCESS_EEPROM) */
EVENT_ID_SLEEPY_INFO, /* 0x07 (Unsolicited) */
EVENT_ID_BT_OVER_WIFI, /* 0x08 (Unsolicited) */
EVENT_ID_TEST_STATUS, /* 0x09 (Query - CMD_ID_TEST_CTRL) */
EVENT_ID_RX_ADDBA, /* 0x0a (Unsolicited) */
EVENT_ID_RX_DELBA, /* 0x0b (Unsolicited) */
EVENT_ID_ACTIVATE_STA_REC, /* 0x0c (Response) */
EVENT_ID_SCAN_DONE, /* 0x0d (Unsoiicited) */
EVENT_ID_RX_FLUSH, /* 0x0e (Unsolicited) */
EVENT_ID_TX_DONE, /* 0x0f (Unsolicited) */
EVENT_ID_CH_PRIVILEGE, /* 0x10 (Unsolicited) */
EVENT_ID_BSS_ABSENCE_PRESENCE, /* 0x11 (Unsolicited) */
EVENT_ID_STA_CHANGE_PS_MODE, /* 0x12 (Unsolicited) */
EVENT_ID_BSS_BEACON_TIMEOUT, /* 0x13 (Unsolicited) */
EVENT_ID_UPDATE_NOA_PARAMS, /* 0x14 (Unsolicited) */
EVENT_ID_AP_OBSS_STATUS, /* 0x15 (Unsolicited) */
EVENT_ID_STA_UPDATE_FREE_QUOTA, /* 0x16 (Unsolicited) */
EVENT_ID_SW_DBG_CTRL, /* 0x17 (Query - CMD_ID_SW_DBG_CTRL) */
EVENT_ID_ROAMING_STATUS, /* 0x18 (Unsolicited) */
EVENT_ID_STA_AGING_TIMEOUT, /* 0x19 (Unsolicited) */
EVENT_ID_SEC_CHECK_RSP, /* 0x1a (Query - CMD_ID_SEC_CHECK) */
EVENT_ID_SEND_DEAUTH, /* 0x1b (Unsolicited) */
EVENT_ID_UPDATE_RDD_STATUS, /* 0x1c (Unsolicited) */
EVENT_ID_UPDATE_BWCS_STATUS, /* 0x1d (Unsolicited) */
EVENT_ID_UPDATE_BCM_DEBUG, /* 0x1e (Unsolicited) */
EVENT_ID_RX_ERR, /* 0x1f (Unsolicited) */
EVENT_ID_DUMP_MEM = 0x20, /* 0x20 (Query - CMD_ID_DUMP_MEM) */
EVENT_ID_STA_STATISTICS, /* 0x21 (Query ) */
EVENT_ID_STA_STATISTICS_UPDATE, /* 0x22 (Unsolicited) */
EVENT_ID_SCHED_SCAN_DONE, /* 0x23 (Unsoiicited) */
EVENT_ID_ADD_PKEY_DONE, /* 0x24 (Unsoiicited) */
EVENT_ID_ICAP_DONE, /* 0x25 (Unsoiicited) */
/* 0x26 (Query - CMD_ID_RESOURCE_CONFIG) */
EVENT_ID_RESOURCE_CONFIG = 0x26,
EVENT_ID_DEBUG_MSG = 0x27, /* 0x27 (Unsoiicited) */
EVENT_ID_RTT_CALIBR_DONE = 0x28, /* 0x28 (Unsoiicited) */
EVENT_ID_RTT_UPDATE_RANGE = 0x29, /* 0x29 (Unsoiicited) */
EVENT_ID_CHECK_REORDER_BUBBLE = 0x2a, /* 0x2a (Unsoiicited) */
EVENT_ID_BATCH_RESULT = 0x2b, /* 0x2b (Query) */
EVENT_ID_TX_ADDBA = 0x2e, /* 0x2e (Unsolicited) */
#if CFG_SUPPORT_CSI
EVENT_ID_CSI_DATA = 0x3C, /* 0x3C (Query) */
#endif
EVENT_ID_GET_GTK_REKEY_DATA = 0x3d, /* 0x3d (Query) */
EVENT_ID_UART_ACK = 0x40, /* 0x40 (Unsolicited) */
EVENT_ID_UART_NAK, /* 0x41 (Unsolicited) */
EVENT_ID_GET_CHIPID, /* 0x42 (Query - CMD_ID_GET_CHIPID) */
EVENT_ID_SLT_STATUS, /* 0x43 (Query - CMD_ID_SET_SLTINFO) */
EVENT_ID_CHIP_CONFIG, /* 0x44 (Query - CMD_ID_CHIP_CONFIG) */
#if CFG_SUPPORT_QA_TOOL
/* 0x45 (Query - CMD_ID_ACCESS_RX_STAT) */
EVENT_ID_ACCESS_RX_STAT,
#endif /* CFG_SUPPORT_QA_TOOL */
EVENT_ID_RDD_SEND_PULSE = 0x50,
#if CFG_SUPPORT_TX_BF
EVENT_ID_PFMU_TAG_READ = 0x51,
EVENT_ID_PFMU_DATA_READ = 0x52,
#endif
#if CFG_SUPPORT_MU_MIMO
EVENT_ID_MU_GET_QD = 0x53,
EVENT_ID_MU_GET_LQ = 0x54,
#endif
#if (CFG_SUPPORT_DFS_MASTER == 1)
EVENT_ID_RDD_REPORT = 0x60,
EVENT_ID_CSA_DONE = 0x61,
#if (CFG_WOW_SUPPORT == 1)
EVENT_ID_WOW_WAKEUP_REASON = 0x62,
#endif
#if CFG_SUPPORT_IDC_CH_SWITCH
EVENT_ID_LTE_IDC_REPORT = 0x64,
#endif
#endif
EVENT_ID_DBDC_SWITCH_DONE = 0x78,
EVENT_ID_GET_CNM = 0x79,
EVENT_ID_TDLS = 0x80, /* TDLS event_id */
EVENT_ID_LOG_UI_INFO = 0x8D,
EVENT_ID_UPDATE_COEX_PHYRATE = 0x90, /* 0x90 (Unsolicited) */
EVENT_ID_TM_REPORT = 0x92,
#if (CFG_SUPPORT_TSF_SYNC == 1)
EVENT_ID_BEACON_TSF_SYNC = 0x94, /* 0x94 (Set / Query) */
#endif
EVENT_ID_RSSI_MONITOR = 0xA1,
#if CFG_SUPPORT_CAL_RESULT_BACKUP_TO_HOST
/* 0xAE (Query - CMD_ID_CAL_BACKUP) */
EVENT_ID_CAL_BACKUP_IN_HOST_V2 = 0xAE,
/* 0xAF (FW Cal All Done Event) */
EVENT_ID_CAL_ALL_DONE = 0xAF,
#endif
EVENT_ID_IPI_INFO = 0xCC,
EVENT_ID_WLAN_INFO = 0xCD,
EVENT_ID_MIB_INFO = 0xCE,
#if CFG_SUPPORT_GET_MCS_INFO
EVENT_ID_TX_MCS_INFO = 0xCF,
#endif
EVENT_ID_GET_TXPWR_TBL = 0xD0,
/* 0xEC (Query - CMD_ID_GET_NIC_CAPABILITY_V2) */
EVENT_ID_NIC_CAPABILITY_V2 = 0xEC,
/*#if (CFG_EFUSE_BUFFER_MODE_DELAY_CAL == 1)*/
/* magic number for Extending MT6630 original EVENT header */
EVENT_ID_LAYER_0_EXT_MAGIC_NUM = 0xED,
/*#endif*/
#if CFG_ASSERT_DUMP
EVENT_ID_ASSERT_DUMP = 0xF0,
#endif
EVENT_ID_LMAC_SER = 0xF1,
EVENT_ID_HIF_CTRL = 0xF6,
EVENT_ID_BUILD_DATE_CODE = 0xF8,
EVENT_ID_GET_AIS_BSS_INFO = 0xF9,
EVENT_ID_DEBUG_CODE = 0xFB,
EVENT_ID_RFTEST_READY = 0xFC, /* 0xFC */
#if CFG_SUPPORT_ADVANCE_CONTROL
EVENT_ID_ADV_CONTROL = 0xFE,
#endif
EVENT_ID_END
};
#if CFG_WOW_SUPPORT
/* Filter Flag */
#define WOWLAN_FF_DROP_ALL BIT(0)
#define WOWLAN_FF_SEND_MAGIC_TO_HOST BIT(1)
#define WOWLAN_FF_ALLOW_ARP BIT(2)
#define WOWLAN_FF_ALLOW_BMC BIT(3)
#define WOWLAN_FF_ALLOW_UC BIT(4)
#define WOWLAN_FF_ALLOW_1X BIT(5)
#define WOWLAN_FF_ALLOW_ARP_REQ2ME BIT(6)
/* wow detect type */
#define WOWLAN_DETECT_TYPE_NONE 0
#define WOWLAN_DETECT_TYPE_MAGIC BIT(0)
#define WOWLAN_DETECT_TYPE_ANY BIT(1)
#define WOWLAN_DETECT_TYPE_DISCONNECT BIT(2)
#define WOWLAN_DETECT_TYPE_GTK_REKEY_FAILURE BIT(3)
#define WOWLAN_DETECT_TYPE_BCN_LOST BIT(4)
#define WOWLAN_DETECT_TYPE_PNO_MATCH_SSID BIT(5)
/* Wakeup command bit define */
#define PF_WAKEUP_CMD_BIT0_OUTPUT_MODE_EN BIT(0)
#define PF_WAKEUP_CMD_BIT1_OUTPUT_DATA BIT(1)
#define PF_WAKEUP_CMD_BIT2_WAKEUP_LEVEL BIT(2)
#define PM_WOWLAN_REQ_START 0x1
#define PM_WOWLAN_REQ_STOP 0x2
struct CMD_WAKE_HIF {
/* use in-band signal to wakeup system, ENUM_HIF_TYPE */
uint8_t ucWakeupHif;
uint8_t ucGpioPin; /* GPIO Pin */
uint8_t ucTriggerLvl; /* GPIO Pin */
uint8_t aucResv1[1];
/* 0: low to high, 1: high to low */
uint32_t u4GpioInterval;
uint8_t aucResv2[4];
};
struct CMD_WOWLAN_PARAM {
uint8_t ucCmd;
uint8_t ucDetectType;
/* ARP/MC/DropExceptMagic/SendMagicToHost */
uint16_t u2FilterFlag;
uint8_t ucScenarioID; /* WOW/WOBLE/Proximity */
uint8_t ucBlockCount;
uint8_t ucBssid;
uint8_t aucReserved1[1];
struct CMD_WAKE_HIF astWakeHif[2];
struct WOW_PORT stWowPort;
uint8_t aucReserved2[32];
};
struct EVENT_WOWLAN_NOTIFY {
uint8_t ucNetTypeIndex;
uint8_t aucReserved[3];
};
/* PACKETFILTER CAPABILITY TYPE */
#define PACKETF_CAP_TYPE_ARP BIT(1)
#define PACKETF_CAP_TYPE_MAGIC BIT(2)
#define PACKETF_CAP_TYPE_BITMAP BIT(3)
#define PACKETF_CAP_TYPE_EAPOL BIT(4)
#define PACKETF_CAP_TYPE_TDLS BIT(5)
#define PACKETF_CAP_TYPE_CF BIT(6)
#define PACKETF_CAP_TYPE_HEARTBEAT BIT(7)
#define PACKETF_CAP_TYPE_TCP_SYN BIT(8)
#define PACKETF_CAP_TYPE_UDP_SYN BIT(9)
#define PACKETF_CAP_TYPE_BCAST_SYN BIT(10)
#define PACKETF_CAP_TYPE_MCAST_SYN BIT(11)
#define PACKETF_CAP_TYPE_V6 BIT(12)
#define PACKETF_CAP_TYPE_TDIM BIT(13)
enum _ENUM_FUNCTION_SELECT {
FUNCTION_PF = 1,
FUNCTION_BITMAP = 2,
FUNCTION_EAPOL = 3,
FUNCTION_TDLS = 4,
FUNCTION_ARPNS = 5,
FUNCTION_CF = 6,
FUNCTION_MODE = 7,
FUNCTION_BSSID = 8,
FUNCTION_MGMT = 9,
FUNCTION_BMC_DROP = 10,
FUNCTION_UC_DROP = 11,
FUNCTION_ALL_TOMCU = 12,
};
enum ENUM_PF_OPCODE {
PF_OPCODE_ADD = 0,
PF_OPCODE_DEL,
PF_OPCODE_ENABLE,
PF_OPCODE_DISABLE,
PF_OPCODE_NUM
};
enum ENUM_SCN_FUNC_MASK {
ENUM_SCN_RANDOM_MAC_EN = (1 << 0),
ENUM_SCN_DBDC_SCAN_DIS = (1 << 1),
ENUM_SCN_DBDC_SCAN_TYPE3 = (1 << 2),
ENUM_SCN_USE_PADDING_AS_BSSID = (1 << 3),
ENUM_SCN_RANDOM_SN_EN = (1 << 4),
};
enum ENUM_WOW_WAKEUP_REASON {
ENUM_PF_CMD_TYPE_MAGIC = 0,
ENUM_PF_CMD_TYPE_BITMAP = 1,
ENUM_PF_CMD_TYPE_ARPNS = 2,
ENUM_PF_CMD_TYPE_GTK_REKEY = 3,
ENUM_PF_CMD_TYPE_COALESCING_FILTER = 4,
ENUM_PF_CMD_TYPE_HW_GLOBAL_ENABLE = 5,
ENUM_PF_CMD_TYPE_TCP_SYN = 6,
ENUM_PF_CMD_TYPE_TDLS = 7,
ENUM_PF_CMD_TYPE_DISCONNECT = 8,
ENUM_PF_CMD_TYPE_IPV4_UDP = 9,
ENUM_PF_CMD_TYPE_IPV4_TCP = 10,
ENUM_PF_CMD_TYPE_IPV6_UDP = 11,
ENUM_PF_CMD_TYPE_IPV6_TCP = 12,
ENUM_PF_CMD_TYPE_BEACON_LOST = 13,
ENUM_PF_CMD_TYPE_IPV6_ICMP = 14,
ENUM_PF_CMD_TYPE_ANY_UC2M = 15,
ENUM_PF_CMD_TYPE_FFS = 16,
ENUM_PF_CMD_TYPE_PNO_MATCH_SSID = 17,
ENUM_PF_CMD_TYPE_UNDEFINED = 255,
};
struct CMD_PACKET_FILTER_CAP {
uint8_t ucCmd;
uint16_t packet_cap_type;
uint8_t aucReserved1[1];
/* GLOBAL */
uint32_t PFType;
uint32_t FunctionSelect;
uint32_t Enable;
/* MAGIC */
uint8_t ucBssid;
uint16_t usEnableBits;
uint8_t aucReserved5[1];
/* DTIM */
uint8_t DtimEnable;
uint8_t DtimValue;
uint8_t aucReserved2[2];
/* BITMAP_PATTERN_T */
uint32_t Index;
uint32_t Offset;
uint32_t FeatureBits;
uint32_t Resv;
uint32_t PatternLength;
uint32_t Mask[4];
uint32_t Pattern[32];
/* COALESCE */
uint32_t FilterID;
uint32_t PacketType;
uint32_t CoalesceOP;
uint8_t FieldLength;
uint8_t CompareOP;
uint8_t FieldID;
uint8_t aucReserved3[1];
uint32_t Pattern3[4];
/* TCPSYN */
uint32_t AddressType;
uint32_t TCPSrcPort;
uint32_t TCPDstPort;
uint32_t SourceIP[4];
uint32_t DstIP[4];
uint8_t aucReserved4[64];
};
#endif /*CFG_WOW_SUPPORT*/
#if CFG_SUPPORT_WIFI_HOST_OFFLOAD
struct CMD_TCP_GENERATOR {
enum ENUM_PF_OPCODE eOpcode;
uint32_t u4ReplyId;
uint32_t u4Period;
uint32_t u4Timeout;
uint32_t u4IpId;
uint32_t u4DestPort;
uint32_t u4SrcPort;
uint32_t u4Seq;
uint8_t aucDestIp[4];
uint8_t aucSrcIp[4];
uint8_t aucDestMac[6];
uint8_t ucBssId;
uint8_t aucReserved1[1];
uint8_t aucReserved2[64];
};
struct CMD_PATTERN_GENERATOR {
enum ENUM_PF_OPCODE eOpcode;
uint32_t u4ReplyId;
uint32_t u4EthernetLength;
uint32_t u4Period;
uint8_t aucEthernetFrame[128];
uint8_t ucBssId;
uint8_t aucReserved1[3];
uint8_t aucReserved2[64];
};
struct CMD_BITMAP_FILTER {
enum ENUM_PF_OPCODE eOpcode;
uint32_t u4ReplyId;
uint32_t u4Offset;
uint32_t u4Length;
uint8_t aucPattern[64];
uint8_t aucBitMask[64];
u_int8_t fgIsEqual;
u_int8_t fgIsAccept;
uint8_t ucBssId;
uint8_t aucReserved1[1];
uint8_t aucReserved2[64];
};
#endif /*CFG_SUPPORT_WIFI_HOST_OFFLOAD*/
#if CFG_SUPPORT_PER_BSS_FILTER
struct CMD_RX_PACKET_FILTER {
uint32_t u4RxPacketFilter;
uint8_t ucIsPerBssFilter;
uint8_t ucBssIndex;
uint8_t aucReserved[2];
uint32_t u4BssMgmtFilter;
uint8_t aucReserved2[56];
};
#else
struct CMD_RX_PACKET_FILTER {
uint32_t u4RxPacketFilter;
uint8_t aucReserved[64];
};
#endif
#if defined(MT6632)
#define S2D_INDEX_CMD_H2N 0x0
#define S2D_INDEX_CMD_C2N 0x1
#define S2D_INDEX_CMD_H2C 0x2
#define S2D_INDEX_CMD_H2N_H2C 0x3
#define S2D_INDEX_EVENT_N2H 0x0
#define S2D_INDEX_EVENT_N2C 0x1
#define S2D_INDEX_EVENT_C2H 0x2
#define S2D_INDEX_EVENT_N2H_N2C 0x3
#endif
#define EXT_EVENT_TARGET_TX_POWER 0x1
#define EXT_EVENT_ID_CMD_RESULT 0x00
#define EXT_EVENT_ID_EFUSE_ACCESS 0x01
#define EXT_EVENT_ID_RF_REG_ACCESS 0x02
#define EXT_EVENT_ID_EEPROM_ACCESS 0x03
#define EXT_EVENT_ID_RF_TEST 0x04
#define EXT_EVENT_ID_PS_SYNC 0x05
#define EXT_EVENT_ID_SLEEPY_NOTIFY 0x06
#define EXT_EVENT_ID_WLAN_ERROR 0x07
#define EXT_EVENT_ID_NIC_CAPABILITY 0x09
#define EXT_EVENT_ID_AP_PWR_SAVING_CLEAR 0x0A
#define EXT_EVENT_ID_SET_WTBL2_RATETABLE 0x0B
#define EXT_EVENT_ID_GET_WTBL2_INFORMATION 0x0C
#define EXT_EVENT_ID_MULTIPLE_REG_ACCESS 0x0E
#define EXT_EVENT_ID_AP_PWR_SAVING_CAPABILITY 0x0F
#define EXT_EVENT_ID_SECURITY_ADDREMOVE_KEY 0x10
#define EXT_EVENT_ID_FW_LOG_2_HOST 0x13
#define EXT_EVENT_ID_AP_PWR_SAVING_START 0x14
#define EXT_EVENT_ID_PACKET_FILTER 0x18
#define EXT_EVENT_ID_COEXISTENCE 0x19
#define EXT_EVENT_ID_BEACON_LOSS 0x1A
#define EXT_EVENT_ID_PWR_MGT_BIT_WIFI 0x1B
#define EXT_EVENT_ID_GET_TX_POWER 0x1C
#define EXT_EVENT_ID_WMT_EVENT_OVER_WIFI 0x20
#define EXT_EVENT_ID_MCC_TRIGGER 0x21
#define EXT_EVENT_ID_THERMAL_PROTECT 0x22
#define EXT_EVENT_ID_ASSERT_DUMP 0x23
#define EXT_EVENT_ID_GET_SENSOR_RESULT 0x2C
#define EXT_EVENT_ID_ROAMING_DETECT_NOTIFICATION 0x2D
#define EXT_EVENT_ID_TMR_CAL 0x2E
#define EXT_EVENT_ID_RA_THROUGHPUT_BURST 0x2F
#define EXT_EVENT_ID_GET_TX_STATISTIC 0x30
#define EXT_EVENT_ID_PRETBTT_INT 0x31
#define EXT_EVENT_ID_WTBL_UPDATE 0x32
#define EXT_EVENT_ID_BF_STATUS_READ 0x35
#define EXT_EVENT_ID_DRR_CTRL 0x36
#define EXT_EVENT_ID_BSSGROUP_CTRL 0x37
#define EXT_EVENT_ID_VOW_FEATURE_CTRL 0x38
#define EXT_EVENT_ID_PKT_PROCESSOR_CTRL 0x39
#define EXT_EVENT_ID_RDD_REPORT 0x3A
#define EXT_EVENT_ID_DEVICE_CAPABILITY 0x3B
#define EXT_EVENT_ID_MAC_INFO 0x3C
#define EXT_EVENT_ID_ATE_TEST_MODE 0x3D
#define EXT_EVENT_ID_CAC_END 0x3E
#define EXT_EVENT_ID_MU_CTRL 0x40
#define EXT_EVENT_ID_DBDC_CTRL 0x45
#define EXT_EVENT_ID_CONFIG_MUAR 0x48
#define EXT_EVENT_ID_RX_AIRTIME_CTRL 0x4a
#define EXT_EVENT_ID_AT_PROC_MODULE 0x4b
#define EXT_EVENT_ID_MAX_AMSDU_LENGTH_UPDATE 0x4c
#define EXT_EVENT_ID_EFUSE_FREE_BLOCK 0x4d
#define EXT_EVENT_ID_MURA_CTRL 0x4d
#define EXT_EVENT_ID_CSA_NOTIFY 0x4F
#define EXT_EVENT_ID_WIFI_SPECTRUM 0x50
#define EXT_EVENT_ID_TMR_CALCU_INFO 0x51
#define EXT_EVENT_ID_DUMP_MEM 0x57
#define EXT_EVENT_ID_TX_POWER_FEATURE_CTRL 0x58
#define EXT_EVENT_ID_G_BAND_256QAM_PROBE_RESULT 0x6B
#define EXT_EVENT_ID_MPDU_TIME_UPDATE 0x6F
/*#endif*/
#if (CFG_SUPPORT_TXPOWER_INFO == 1)
#define EXT_EVENT_ID_TX_POWER_FEATURE_CTRL 0x58
#endif
#define SCHED_SCAN_CHANNEL_TYPE_SPECIFIED (0)
#define SCHED_SCAN_CHANNEL_TYPE_DUAL_BAND (1)
#define SCHED_SCAN_CHANNEL_TYPE_2G4_ONLY (2)
#define SCHED_SCAN_CHANNEL_TYPE_5G_ONLY (3)
/*******************************************************************************
* D A T A T Y P E S
*******************************************************************************
*/
#ifndef LINUX
#endif
/* for Event Packet (via HIF-RX) */
struct PSE_CMD_HDR {
/* DW0 */
uint16_t u2TxByteCount;
uint16_t u2Reserved1: 10;
uint16_t u2Qidx: 5;
uint16_t u2Pidx: 1;
/* DW1 */
uint16_t u2Reserved2: 13;
uint16_t u2Hf: 2;
uint16_t u2Ft: 1;
uint16_t u2Reserved3: 8;
uint16_t u2PktFt: 2;
uint16_t u2Reserved4: 6;
/* DW2~7 */
uint32_t au4Reserved[6];
};
struct WIFI_CMD {
uint16_t u2TxByteCount; /* Max value is over 2048 */
uint16_t u2PQ_ID; /* Must be 0x8000 (Port1, Queue 0) */
#if 1
uint8_t ucWlanIdx;
uint8_t ucHeaderFormat;
uint8_t ucHeaderPadding;
uint8_t ucPktFt: 2;
uint8_t ucOwnMAC: 6;
uint32_t au4Reserved1[6];
uint16_t u2Length;
uint16_t u2PqId;
#endif
uint8_t ucCID;
uint8_t ucPktTypeID; /* Must be 0x20 (CMD Packet) */
uint8_t ucSetQuery;
uint8_t ucSeqNum;
#if 1
/* padding fields, hw may auto modify this field */
uint8_t ucD2B0Rev;
uint8_t ucExtenCID; /* Extend CID */
uint8_t ucS2DIndex; /* Index for Src to Dst in CMD usage */
uint8_t ucExtCmdOption; /* Extend CID option */
uint8_t ucCmdVersion;
uint8_t ucReserved2[3];
uint32_t au4Reserved3[4]; /* padding fields */
#endif
uint8_t aucBuffer[0];
};
/* for Command Packet (via HIF-TX) */
/* following CM's documentation v0.7 */
struct WIFI_EVENT {
uint16_t u2PacketLength;
uint16_t u2PacketType; /* Must be filled with 0xE000 (EVENT Packet) */
uint8_t ucEID;
uint8_t ucSeqNum;
uint8_t ucEventVersion;
uint8_t aucReserved[1];
uint8_t ucExtenEID;
uint8_t aucReserved2[2];
uint8_t ucS2DIndex;
uint8_t aucBuffer[0];
};
/* CMD_ID_TEST_CTRL */
struct CMD_TEST_CTRL {
uint8_t ucAction;
uint8_t aucReserved[3];
union {
uint32_t u4OpMode;
uint32_t u4ChannelFreq;
struct PARAM_MTK_WIFI_TEST_STRUCT rRfATInfo;
} u;
};
struct CMD_TEST_CTRL_EXT_T {
uint8_t ucAction;
uint8_t ucIcapLen;
uint8_t aucReserved[2];
union {
uint32_t u4OpMode;
uint32_t u4ChannelFreq;
struct PARAM_MTK_WIFI_TEST_STRUCT_EXT_T rRfATInfo;
} u;
};
/* EVENT_TEST_STATUS */
struct PARAM_CUSTOM_RFTEST_TX_STATUS_STRUCT {
uint32_t u4PktSentStatus;
uint32_t u4PktSentCount;
uint16_t u2AvgAlc;
uint8_t ucCckGainControl;
uint8_t ucOfdmGainControl;
};
struct PARAM_CUSTOM_RFTEST_RX_STATUS_STRUCT {
/*!< number of packets that Rx ok from interrupt */
uint32_t u4IntRxOk;
/*!< number of packets that CRC error from interrupt */
uint32_t u4IntCrcErr;
/*!< number of packets that is short preamble from interrupt */
uint32_t u4IntShort;
/*!< number of packets that is long preamble from interrupt */
uint32_t u4IntLong;
/*!< number of packets that Rx ok from PAU */
uint32_t u4PauRxPktCount;
/*!< number of packets that CRC error from PAU */
uint32_t u4PauCrcErrCount;
/*!< number of packets that is short preamble from PAU */
uint32_t u4PauRxFifoFullCount;
uint32_t u4PauCCACount; /*!< CCA rising edge count */
};
union EVENT_TEST_STATUS {
struct PARAM_MTK_WIFI_TEST_STRUCT rATInfo;
/* PARAM_CUSTOM_RFTEST_TX_STATUS_STRUCT_T rTxStatus; */
/* PARAM_CUSTOM_RFTEST_RX_STATUS_STRUCT_T rRxStatus; */
};
/* CMD_BUILD_CONNECTION */
struct CMD_BUILD_CONNECTION {
uint8_t ucInfraMode;
uint8_t ucAuthMode;
uint8_t ucEncryptStatus;
uint8_t ucSsidLen;
uint8_t aucSsid[PARAM_MAX_LEN_SSID];
uint8_t aucBssid[PARAM_MAC_ADDR_LEN];
/* Ad-hoc mode */
uint16_t u2BeaconPeriod;
uint16_t u2ATIMWindow;
uint8_t ucJoinOnly;
uint8_t ucReserved;
uint32_t u4FreqInKHz;
/* for faster connection */
uint8_t aucScanResult[0];
};
/* CMD_ADD_REMOVE_KEY */
struct CMD_802_11_KEY {
uint8_t ucAddRemove;
uint8_t ucTxKey;
uint8_t ucKeyType;
uint8_t ucIsAuthenticator;
uint8_t aucPeerAddr[6];
uint8_t ucBssIdx;
uint8_t ucAlgorithmId;
uint8_t ucKeyId;
uint8_t ucKeyLen;
uint8_t ucWlanIndex;
uint8_t ucMgmtProtection;
uint8_t aucKeyMaterial[32];
uint8_t aucKeyRsc[16];
};
/* CMD_ID_DEFAULT_KEY_ID */
struct CMD_DEFAULT_KEY {
uint8_t ucBssIdx;
uint8_t ucKeyId;
uint8_t ucWlanIndex;
uint8_t ucMulticast;
};
/* WPA2 PMKID cache structure */
struct PMKID_ENTRY {
struct PARAM_BSSID_INFO rBssidInfo;
u_int8_t fgPmkidExist;
};
struct CMD_802_11_PMKID {
uint32_t u4BSSIDInfoCount;
struct PMKID_ENTRY *arPMKIDInfo[1];
};
struct CMD_GTK_REKEY_DATA {
uint8_t aucKek[16];
uint8_t aucKck[16];
uint8_t aucReplayCtr[8];
};
struct CMD_CSUM_OFFLOAD {
uint16_t u2RxChecksum; /* bit0: IP, bit1: UDP, bit2: TCP */
uint16_t u2TxChecksum; /* bit0: IP, bit1: UDP, bit2: TCP */
};
/* CMD_BASIC_CONFIG */
struct CMD_BASIC_CONFIG {
uint8_t ucNative80211;
uint8_t ucCtrlFlagAssertPath;
uint8_t ucCtrlFlagDebugLevel;
uint8_t aucReserved[1];
struct CMD_CSUM_OFFLOAD rCsumOffload;
uint8_t ucCrlFlagSegememt;
uint8_t aucReserved2[3];
};
/* CMD_MAC_MCAST_ADDR */
struct CMD_MAC_MCAST_ADDR {
uint32_t u4NumOfGroupAddr;
uint8_t ucBssIndex;
uint8_t aucReserved[3];
uint8_t arAddress[MAX_NUM_GROUP_ADDR][PARAM_MAC_ADDR_LEN];
};
/* CMD_ACCESS_EEPROM */
struct CMD_ACCESS_EEPROM {
uint16_t u2Offset;
uint16_t u2Data;
};
struct CMD_CUSTOM_NOA_PARAM_STRUCT {
uint32_t u4NoaDurationMs;
uint32_t u4NoaIntervalMs;
uint32_t u4NoaCount;
uint8_t ucBssIdx;
uint8_t aucReserved[3];
};
struct CMD_CUSTOM_OPPPS_PARAM_STRUCT {
uint32_t u4CTwindowMs;
uint8_t ucBssIdx;
uint8_t aucReserved[3];
};
struct CMD_CUSTOM_UAPSD_PARAM_STRUCT {
uint8_t fgEnAPSD;
uint8_t fgEnAPSD_AcBe;
uint8_t fgEnAPSD_AcBk;
uint8_t fgEnAPSD_AcVo;
uint8_t fgEnAPSD_AcVi;
uint8_t ucMaxSpLen;
uint8_t aucResv[2];
};
struct CMD_SET_AP_CONSTRAINT_PWR_LIMIT {
/* DWORD_0 - Common Part */
uint8_t ucCmdVer;
uint8_t aucPadding0[1];
uint16_t u2CmdLen; /* Cmd size including common part and body */
/* DWORD_1 afterwards - Command Body */
uint8_t ucBssIndex;
uint8_t ucPwrSetEnable;
int8_t cMaxTxPwr; /* In unit of 0.5 dBm (signed) */
int8_t cMinTxPwr; /* In unit of 0.5 dBm (signed) */
uint8_t aucPadding1[32]; /* for new param in the future */
};
struct CMD_SET_RRM_CAPABILITY {
/* DWORD_0 - Common Part */
uint8_t ucCmdVer;
uint8_t aucPadding0[1];
uint16_t u2CmdLen; /* Cmd size including common part and body */
/* DWORD_1 afterwards - Command Body */
uint8_t ucBssIndex;
uint8_t ucRrmEnable; /* 802.11k rrm flag */
/* Table 7-43e, RRM Enabled Capabilities Field */
uint8_t ucCapabilities[5];
uint8_t aucPadding1[1];
uint8_t aucPadding2[32]; /* for new param in the future */
};
#if CFG_M0VE_BA_TO_DRIVER
struct CMD_RESET_BA_SCOREBOARD {
uint8_t ucflag;
uint8_t ucTID;
uint8_t aucMacAddr[PARAM_MAC_ADDR_LEN];
};
#endif
/* EVENT_CONNECTION_STATUS */
struct EVENT_CONNECTION_STATUS {
uint8_t ucMediaStatus;
uint8_t ucReasonOfDisconnect;
uint8_t ucInfraMode;
uint8_t ucSsidLen;
uint8_t aucSsid[PARAM_MAX_LEN_SSID];
uint8_t aucBssid[PARAM_MAC_ADDR_LEN];
uint8_t ucAuthenMode;
uint8_t ucEncryptStatus;
uint16_t u2BeaconPeriod;
uint16_t u2AID;
uint16_t u2ATIMWindow;
uint8_t ucNetworkType;
uint8_t aucReserved[1];
uint32_t u4FreqInKHz;
#if CFG_ENABLE_WIFI_DIRECT
uint8_t aucInterfaceAddr[PARAM_MAC_ADDR_LEN];
#endif
};
/* EVENT_NIC_CAPABILITY */
#define FEATURE_FLAG0_NIC_CAPABILITY_V2 BIT(0)
struct EVENT_NIC_CAPABILITY {
uint16_t u2ProductID;
uint16_t u2FwVersion;
uint16_t u2DriverVersion;
uint8_t ucHw5GBandDisabled;
uint8_t ucEepromUsed;
uint8_t aucMacAddr[6];
uint8_t ucEndianOfMacAddrNumber;
uint8_t ucHwNotSupportAC;
uint8_t ucRfVersion;
uint8_t ucPhyVersion;
uint8_t ucRfCalFail;
uint8_t ucBbCalFail;
uint8_t aucDateCode[16];
uint32_t u4FeatureFlag0;
uint32_t u4FeatureFlag1;
uint32_t u4CompileFlag0;
uint32_t u4CompileFlag1;
uint8_t aucBranchInfo[4];
uint8_t ucFwBuildNumber;
uint8_t ucHwSetNss1x1;
uint8_t ucHwNotSupportDBDC;
uint8_t ucHwBssIdNum;
uint8_t aucReserved1[56];
};
struct EVENT_NIC_CAPABILITY_V2 {
uint16_t u2TotalElementNum;
uint8_t aucReserved[2];
uint8_t aucBuffer[0];
};
struct NIC_CAPABILITY_V2_ELEMENT {
uint32_t tag_type; /* NIC_CAPABILITY_V2_TAG_T */
uint32_t body_len;
uint8_t aucbody[0];
};
typedef uint32_t(*NIC_CAP_V2_ELEMENT_HDLR)(
struct ADAPTER *prAdapter, uint8_t *buff);
struct NIC_CAPABILITY_V2_REF_TABLE {
uint32_t tag_type; /* NIC_CAPABILITY_V2_TAG_T */
NIC_CAP_V2_ELEMENT_HDLR hdlr;
};
enum NIC_CAPABILITY_V2_TAG {
TAG_CAP_TX_RESOURCE = 0x0,
TAG_CAP_TX_EFUSEADDRESS = 0x1,
TAG_CAP_COEX_FEATURE = 0x2,
TAG_CAP_SINGLE_SKU = 0x3,
TAG_CAP_CSUM_OFFLOAD = 0x4,
TAG_CAP_HW_VERSION = 0x5,
TAG_CAP_SW_VERSION = 0x6,
TAG_CAP_MAC_ADDR = 0x7,
TAG_CAP_PHY_CAP = 0x8,
TAG_CAP_MAC_CAP = 0x9,
TAG_CAP_FRAME_BUF_CAP = 0xa,
TAG_CAP_BEAMFORM_CAP = 0xb,
TAG_CAP_LOCATION_CAP = 0xc,
TAG_CAP_MUMIMO_CAP = 0xd,
TAG_CAP_BUFFER_MODE_INFO = 0xe,
TAG_CAP_TOTAL
};
#if CFG_TCP_IP_CHKSUM_OFFLOAD
struct NIC_CSUM_OFFLOAD {
uint8_t ucIsSupportCsumOffload; /* 1: Support, 0: Not Support */
uint8_t aucReseved[3];
};
#endif
struct NIC_COEX_FEATURE {
uint32_t u4FddMode; /* TRUE for COEX FDD mode */
};
struct NIC_EFUSE_ADDRESS {
uint32_t u4EfuseStartAddress; /* Efuse Start Address */
uint32_t u4EfuseEndAddress; /* Efuse End Address */
};
struct CAP_HW_VERSION {
uint16_t u2ProductID; /* CHIP ID */
uint8_t ucEcoVersion; /* ECO version */
uint8_t ucReserved;
uint32_t u4MacIpID; /* MAC IP version */
uint32_t u4BBIpID; /* Baseband IP version */
uint32_t u4TopIpID; /* TOP IP version */
uint32_t u4ConfigId; /* Configuration ID */
};
struct CAP_SW_VERSION {
uint16_t u2FwVersion; /* FW version <major.minor> */
uint16_t u2FwBuildNumber; /* FW build number */
uint8_t aucBranchInfo[4]; /* Branch name in ASCII */
uint8_t aucDateCode[16]; /* FW build data code */
};
struct CAP_MAC_ADDR {
uint8_t aucMacAddr[6];
uint8_t aucReserved[2];
};
struct CAP_PHY_CAP {
uint8_t ucHt; /* 1:support, 0:not*/
uint8_t ucVht; /* 1:support, 0:not*/
uint8_t uc5gBand; /* 1:support, 0:not*/
/* 0: BW20, 1:BW40, 2:BW80, 3:BW160, 4:BW80+80 */
uint8_t ucMaxBandwidth;
uint8_t ucNss; /* 1:1x1, 2:2x2, ... */
uint8_t ucDbdc; /* 1:support, 0:not*/
uint8_t ucTxLdpc; /* 1:support, 0:not*/
uint8_t ucRxLdpc; /* 1:support, 0:not*/
uint8_t ucTxStbc; /* 1:support, 0:not*/
uint8_t ucRxStbc; /* 1:support, 0:not*/
/* BIT(0): 2G4_WF0, BIT(1): 5G_WF0, BIT(2): 2G4_WF1, BIT(3): 5G_WF1 */
uint8_t ucHwWifiPath;
uint8_t aucReserved[1];
};
struct CAP_MAC_CAP {
uint8_t ucHwBssIdNum; /* HW BSSID number */
uint8_t ucWmmSet; /* 1: AC0~3, 2: AC0~3 and AC10~13, ... */
uint8_t ucWtblEntryNum; /* WTBL entry number */
uint8_t ucReserved;
};
struct CAP_FRAME_BUF_CAP {
/* 1: support in-chip Tx AMSDU (HW or CR4) */
uint8_t ucChipTxAmsdu;
/* 2: support 2 MSDU in AMSDU, 3:support 3 MSDU in AMSDU,...*/
uint8_t ucTxAmsduNum;
/* Rx AMSDU size, 0:4K, 1:8K,2:12K */
uint8_t ucRxAmsduSize;
uint8_t ucReserved;
/* Txd entry number */
uint32_t u4TxdCount;
/* Txd and packet buffer in KB (cut through sysram size) */
uint32_t u4PacketBufSize;
};
struct CAP_BEAMFORM_CAP {
uint8_t ucBFer; /* Tx beamformer, 1:support, 0:not*/
uint8_t ucIBFer; /* Tx implicit beamformer 1:support, 0:not*/
uint8_t ucBFee; /* Rx beamformee, 1:support, 0:not */
uint8_t ucReserved;
uint32_t u4BFerCap; /* Tx beamformere cap */
uint32_t u4BFeeCap; /* Rx beamformee cap */
};
struct CAP_LOCATION_CAP {
uint8_t ucTOAE; /* 1:support, 0:not */
uint8_t aucReserved[3];
};
struct CAP_MUMIMO_CAP {
uint8_t ucMuMimoRx; /* 1:support, 0:not */
uint8_t ucMuMimoTx; /* 1:support, 0:not */
uint8_t aucReserved[2];
};
#define EFUSE_SECTION_TABLE_SIZE (10) /* It should not be changed. */
struct EFUSE_SECTION_T {
uint16_t u2StartOffset;
uint16_t u2Length;
};
struct CAP_BUFFER_MODE_INFO_T {
uint8_t ucVersion; /* Version */
uint8_t ucFormatSupportBitmap; /* Format Support Bitmap*/
uint16_t u2EfuseTotalSize; /* Total eFUSE Size */
struct EFUSE_SECTION_T arSections[EFUSE_SECTION_TABLE_SIZE];
/* NOTE: EFUSE_SECTION_TABLE_SIZE should be fixed to
* 10 so that driver don't change.
*/
};
/*
* NIC_TX_RESOURCE_REPORT_EVENT related definition
*/
#define NIC_TX_RESOURCE_REPORT_VERSION_PREFIX (0x80000000)
#define NIC_TX_RESOURCE_REPORT_VERSION_1 \
(NIC_TX_RESOURCE_REPORT_VERSION_PREFIX | 0x1)
struct nicTxRsrcEvtHdlr {
uint32_t u4Version;
uint32_t(*nicEventTxResource)
(IN struct ADAPTER *prAdapter,
IN uint8_t *pucEventBuf);
void (*nicTxResourceInit)(IN struct ADAPTER *prAdapter);
};
struct NIC_TX_RESOURCE {
/* the total usable resource for MCU port */
uint32_t u4CmdTotalResource;
/* the unit of a MCU resource */
uint32_t u4CmdResourceUnit;
/* the total usable resource for LMAC port */
uint32_t u4DataTotalResource;
/* the unit of a LMAC resource */
uint32_t u4DataResourceUnit;
};
struct tx_resource_report_v1 {
/*
* u4Version: NIC_TX_RESOURCE_REPORT_VERSION_1
*/
uint32_t u4Version;
/*
* the followings are content for u4Verion = 0x80000001
*/
uint32_t u4HifDataPsePageQuota;
uint32_t u4HifCmdPsePageQuota;
uint32_t u4HifDataPlePageQuota;
uint32_t u4HifCmdPlePageQuota;
/*
* u4PlePsePageSize: the unit of a page in PLE and PSE
* [31:16] PLE page size
* [15:0] PLE page size
*/
uint32_t u4PlePsePageSize;
/*
* ucPpTxAddCnt: the extra pse resource needed by HW
*/
uint8_t ucPpTxAddCnt;
uint8_t ucReserved[3];
};
/* modified version of WLAN_BEACON_FRAME_BODY_T for simplier buffering */
struct WLAN_BEACON_FRAME_BODY_T_LOCAL {
/* Beacon frame body */
uint32_t au4Timestamp[2]; /* Timestamp */
uint16_t u2BeaconInterval; /* Beacon Interval */
uint16_t u2CapInfo; /* Capability */
/* Various IEs, start from SSID */
uint8_t aucInfoElem[MAX_IE_LENGTH];
/* This field is *NOT* carried by F/W but caculated by nic_rx */
uint16_t u2IELength;
};
/* EVENT_SCAN_RESULT */
struct EVENT_SCAN_RESULT {
int32_t i4RSSI;
uint32_t u4LinkQuality;
uint32_t u4DSConfig; /* Center frequency */
uint32_t u4DomainInfo; /* Require CM opinion */
uint32_t u4Reserved;
uint8_t ucNetworkType;
uint8_t ucOpMode;
uint8_t aucBssid[MAC_ADDR_LEN];
uint8_t aucRatesEx[PARAM_MAX_LEN_RATES_EX];
struct WLAN_BEACON_FRAME_BODY_T_LOCAL rBeaconFrameBody;
};
/* event of tkip mic error */
struct EVENT_MIC_ERR_INFO {
uint32_t u4Flags;
};
/* event of add key done for port control */
struct EVENT_ADD_KEY_DONE_INFO {
uint8_t ucBSSIndex;
uint8_t ucReserved;
uint8_t aucStaAddr[6];
};
struct EVENT_PMKID_CANDIDATE_LIST {
uint32_t u4Version; /*!< Version */
uint32_t u4NumCandidates; /*!< How many candidates follow */
struct PARAM_PMKID_CANDIDATE arCandidateList[1];
};
struct EVENT_CMD_RESULT {
uint8_t ucCmdID;
uint8_t ucStatus;
uint8_t aucReserved[2];
};
/* CMD_ID_ACCESS_REG & EVENT_ID_ACCESS_REG */
struct CMD_ACCESS_REG {
uint32_t u4Address;
uint32_t u4Data;
};
#define COEX_CTRL_BUF_LEN 460
/* CMD_COEX_HANDLER & EVENT_COEX_HANDLER */
/************************************************/
/* UINT_32 u4SubCmd : Coex Ctrl Sub Command */
/* UINT_8 aucBuffer : Reserve for Sub Command */
/* Data Structure */
/************************************************/
struct CMD_COEX_HANDLER {
uint32_t u4SubCmd;
uint8_t aucBuffer[COEX_CTRL_BUF_LEN];
};
/* Sub Command Data Structure */
/************************************************/
/* UINT_32 u4IsoPath : WF Path (WF0/WF1) */
/* UINT_32 u4Channel : WF Channel */
/* UINT_32 u4Band : WF Band (Band0/Band1)(Not used now) */
/* UINT_32 u4Isolation : Isolation value */
/************************************************/
struct CMD_COEX_ISO_DETECT {
uint32_t u4IsoPath;
uint32_t u4Channel;
uint32_t u4Isolation;
};
/************************************************/
/* PCHAR pucCoexInfo : CoexInfoTag */
/************************************************/
struct CMD_COEX_GET_INFO {
uint8_t ucCoexInfo[COEX_CTRL_BUF_LEN];
};
/* Coex Command Used */
enum ENUM_COEX_CMD_CTRL {
/* Set */
COEX_CMD_SET_DISABLE_DATA_RSSI_UPDATE = 0x00,
COEX_CMD_SET_DATA_RSSI = 0x01,
/* Get */
COEX_CMD_GET_ISO_DETECT = 0x80,
COEX_CMD_GET_INFO = 0x81,
COEX_CMD_NUM
};
#if CFG_SUPPORT_CAL_RESULT_BACKUP_TO_HOST
/* CMD_ID_CAL_BACKUP_IN_HOST_V2 & EVENT_ID_CAL_BACKUP_IN_HOST_V2 */
struct CMD_CAL_BACKUP_STRUCT_V2 {
uint8_t ucReason;
uint8_t ucAction;
uint8_t ucNeedResp;
uint8_t ucFragNum;
uint8_t ucRomRam;
uint32_t u4ThermalValue;
uint32_t u4Address;
uint32_t u4Length;
uint32_t u4RemainLength;
uint32_t au4Buffer[PARAM_CAL_DATA_DUMP_MAX_NUM];
};
struct CMD_CAL_BACKUP_STRUCT {
uint8_t ucReason;
uint8_t ucAction;
uint8_t ucNeedResp;
uint8_t ucFragNum;
uint8_t ucRomRam;
uint32_t u4ThermalValue;
uint32_t u4Address;
uint32_t u4Length;
uint32_t u4RemainLength;
};
#endif
#if CFG_AUTO_CHANNEL_SEL_SUPPORT
struct CMD_ACCESS_CHN_LOAD {
uint32_t u4Address;
uint32_t u4Data;
uint16_t u2Channel;
uint8_t aucReserved[2];
};
struct CMD_GET_LTE_SAFE_CHN {
uint8_t ucIndex;
uint8_t ucFlags;
uint8_t aucReserved0[2];
uint8_t aucReserved2[16];
};
#endif
/* CMD_DUMP_MEMORY */
struct CMD_DUMP_MEM {
uint32_t u4Address;
uint32_t u4Length;
uint32_t u4RemainLength;
#if CFG_SUPPORT_QA_TOOL
uint32_t u4IcapContent;
#endif /* CFG_SUPPORT_QA_TOOL */
uint8_t ucFragNum;
};
struct EVENT_DUMP_MEM {
uint32_t u4Address;
uint32_t u4Length;
uint32_t u4RemainLength;
#if CFG_SUPPORT_QA_TOOL
uint32_t eIcapContent;
#endif /* CFG_SUPPORT_QA_TOOL */
uint8_t ucFragNum;
uint8_t aucBuffer[1];
};
#if CFG_SUPPORT_QA_TOOL
struct CMD_ACCESS_RX_STAT {
uint32_t u4SeqNum;
uint32_t u4TotalNum;
};
struct EVENT_ACCESS_RX_STAT {
uint32_t u4SeqNum;
uint32_t u4TotalNum;
uint32_t au4Buffer[1];
};
#if CFG_SUPPORT_TX_BF
union CMD_TXBF_ACTION {
struct PROFILE_TAG_READ rProfileTagRead;
struct PROFILE_TAG_WRITE rProfileTagWrite;
struct PROFILE_DATA_READ rProfileDataRead;
struct PROFILE_DATA_WRITE rProfileDataWrite;
struct PROFILE_PN_READ rProfilePnRead;
struct PROFILE_PN_WRITE rProfilePnWrite;
struct TX_BF_SOUNDING_START rTxBfSoundingStart;
struct TX_BF_SOUNDING_STOP rTxBfSoundingStop;
struct TX_BF_TX_APPLY rTxBfTxApply;
struct TX_BF_PFMU_MEM_ALLOC rTxBfPfmuMemAlloc;
struct TX_BF_PFMU_MEM_RLS rTxBfPfmuMemRls;
#if CFG_SUPPORT_TX_BF_FPGA
struct TX_BF_PROFILE_SW_TAG_WRITE rTxBfProfileSwTagWrite;
#endif
};
#define CMD_DEVINFO_UPDATE_HDR_SIZE 8
struct CMD_DEV_INFO_UPDATE {
uint8_t ucOwnMacIdx;
uint8_t ucReserve;
uint16_t u2TotalElementNum;
uint8_t ucAppendCmdTLV;
uint8_t aucReserve[3];
uint8_t aucBuffer[0];
/* CMD_DEVINFO_ACTIVE_T rCmdDevInfoActive; */
};
#define CMD_BSSINFO_UPDATE_HDR_SIZE 8
struct CMD_BSS_INFO_UPDATE {
uint8_t ucBssIndex;
uint8_t ucReserve;
uint16_t u2TotalElementNum;
uint32_t u4Reserve;
/* CMD_BSSINFO_BASIC_T rCmdBssInfoBasic; */
uint8_t aucBuffer[0];
};
/* STA record command */
#define CMD_STAREC_UPDATE_HDR_SIZE 8
struct CMD_STAREC_UPDATE {
uint8_t ucBssIndex;
uint8_t ucWlanIdx;
uint16_t u2TotalElementNum;
uint32_t u4Reserve;
uint8_t aucBuffer[0];
};
struct EXT_EVENT_BF_STATUS_T {
uint8_t ucEventCategoryID;
uint8_t ucBw;
uint16_t u2SubCarrIdx;
u_int8_t fgBFer;
uint8_t aucReserved[3];
uint8_t aucBuf[1000]; /* temp size */
};
struct EVENT_PFMU_TAG_READ {
union PFMU_PROFILE_TAG1 ru4TxBfPFMUTag1;
union PFMU_PROFILE_TAG2 ru4TxBfPFMUTag2;
};
#if CFG_SUPPORT_MU_MIMO
struct EVENT_HQA_GET_QD {
uint32_t u4EventId;
uint32_t au4RawData[14];
};
struct EVENT_HQA_GET_MU_CALC_LQ {
uint32_t u4EventId;
struct MU_STRUCT_LQ_REPORT rEntry;
};
struct EVENT_SHOW_GROUP_TBL_ENTRY {
uint32_t u4EventId;
uint8_t index;
uint8_t numUser: 2;
uint8_t BW: 2;
uint8_t NS0: 2;
uint8_t NS1: 2;
/* UINT_8 NS2:1; */
/* UINT_8 NS3:1; */
uint8_t PFIDUser0;
uint8_t PFIDUser1;
/* UINT_8 PFIDUser2; */
/* UINT_8 PFIDUser3; */
u_int8_t fgIsShortGI;
u_int8_t fgIsUsed;
u_int8_t fgIsDisable;
uint8_t initMcsUser0: 4;
uint8_t initMcsUser1: 4;
/* UINT_8 initMcsUser2:4; */
/* UINT_8 initMcsUser3:4; */
uint8_t dMcsUser0: 4;
uint8_t dMcsUser1: 4;
/* UINT_8 dMcsUser2:4; */
/* UINT_8 dMcsUser3:4; */
};
union CMD_MUMIMO_ACTION {
uint8_t ucMuMimoCategory;
uint8_t aucRsv[3];
union {
struct MU_GET_CALC_INIT_MCS rMuGetCalcInitMcs;
struct MU_SET_INIT_MCS rMuSetInitMcs;
struct MU_SET_CALC_LQ rMuSetCalcLq;
struct MU_GET_LQ rMuGetLq;
struct MU_SET_SNR_OFFSET rMuSetSnrOffset;
struct MU_SET_ZERO_NSS rMuSetZeroNss;
struct MU_SPEED_UP_LQ rMuSpeedUpLq;
struct MU_SET_MU_TABLE rMuSetMuTable;
struct MU_SET_GROUP rMuSetGroup;
struct MU_GET_QD rMuGetQd;
struct MU_SET_ENABLE rMuSetEnable;
struct MU_SET_GID_UP rMuSetGidUp;
struct MU_TRIGGER_MU_TX rMuTriggerMuTx;
} unMuMimoParam;
};
#endif /* CFG_SUPPORT_MU_MIMO */
#endif /* CFG_SUPPORT_TX_BF */
#endif /* CFG_SUPPORT_QA_TOOL */
struct CMD_SW_DBG_CTRL {
uint32_t u4Id;
uint32_t u4Data;
/* Debug Support */
uint32_t u4DebugCnt[64];
};
#if CFG_SUPPORT_ANT_DIV
enum {
ANT_DIV_DISABLE = 0,
ANT_DIV_ANT_1,
ANT_DIV_ANT_2,
ANT_DIV_SUCCESS,
ANT_DIV_WF_SCNING,
ANT_DIV_BT_SCNING,
ANT_DIV_DISCONNECT,
ANT_DIV_INVALID_RSSI,
ANT_DIV_MSG_TIMEOUT,
ANT_DIV_SWH_FAIL,
ANT_DIV_PARA_ERR,
ANT_DIV_OTHER_FAIL,
ANT_DIV_STATE_NUM
};
enum {
ANT_DIV_CMD_SET_ANT = 0,
ANT_DIV_CMD_GET_ANT,
ANT_DIV_CMD_DETC,
ANT_DIV_CMD_SWH,
};
struct CMD_ANT_DIV_CTRL {
uint8_t ucAction;
uint8_t ucAntId;
uint8_t ucState;
uint8_t ucRcpi;
uint8_t ucReserve[8];
};
#endif
struct CMD_FW_LOG_2_HOST_CTRL {
uint8_t ucFwLog2HostCtrl;
uint8_t ucMcuDest;
#if CFG_SUPPORT_FW_DBG_LEVEL_CTRL
uint8_t ucFwLogLevel;
uint8_t ucReserve;
#else
uint8_t ucReserve[2];
#endif
};
struct CMD_CHIP_CONFIG {
uint16_t u2Id;
uint8_t ucType;
uint8_t ucRespType;
uint16_t u2MsgSize;
uint8_t aucReserved0[2];
uint8_t aucCmd[CHIP_CONFIG_RESP_SIZE];
};
/* CMD_ID_LINK_ATTRIB */
struct CMD_LINK_ATTRIB {
int8_t cRssiTrigger;
uint8_t ucDesiredRateLen;
uint16_t u2DesiredRate[32];
uint8_t ucMediaStreamMode;
uint8_t aucReserved[1];
};
/* CMD_ID_NIC_POWER_CTRL */
struct CMD_NIC_POWER_CTRL {
uint8_t ucPowerMode;
uint8_t aucReserved[3];
};
/* CMD_ID_POWER_SAVE_MODE */
struct CMD_PS_PROFILE {
uint8_t ucBssIndex;
uint8_t ucPsProfile;
uint8_t aucReserved[2];
};
/* EVENT_LINK_QUALITY */
#if 1
struct LINK_QUALITY_ {
int8_t cRssi; /* AIS Network. */
int8_t cLinkQuality;
uint16_t u2LinkSpeed; /* TX rate1 */
uint8_t ucMediumBusyPercentage; /* Read clear */
uint8_t ucIsLQ0Rdy; /* Link Quality BSS0 Ready. */
};
struct EVENT_LINK_QUALITY_V2 {
struct LINK_QUALITY_ rLq[BSSID_NUM];
};
struct EVENT_LINK_QUALITY {
int8_t cRssi;
int8_t cLinkQuality;
uint16_t u2LinkSpeed;
uint8_t ucMediumBusyPercentage;
};
#endif
#if CFG_SUPPORT_P2P_RSSI_QUERY
/* EVENT_LINK_QUALITY */
struct EVENT_LINK_QUALITY_EX {
int8_t cRssi;
int8_t cLinkQuality;
uint16_t u2LinkSpeed;
uint8_t ucMediumBusyPercentage;
uint8_t ucIsLQ0Rdy;
int8_t cRssiP2P; /* For P2P Network. */
int8_t cLinkQualityP2P;
uint16_t u2LinkSpeedP2P;
uint8_t ucMediumBusyPercentageP2P;
uint8_t ucIsLQ1Rdy;
};
#endif
/* EVENT_ID_STATISTICS */
struct EVENT_STATISTICS {
union LARGE_INTEGER rTransmittedFragmentCount;
union LARGE_INTEGER rMulticastTransmittedFrameCount;
union LARGE_INTEGER rFailedCount;
union LARGE_INTEGER rRetryCount;
union LARGE_INTEGER rMultipleRetryCount;
union LARGE_INTEGER rRTSSuccessCount;
union LARGE_INTEGER rRTSFailureCount;
union LARGE_INTEGER rACKFailureCount;
union LARGE_INTEGER rFrameDuplicateCount;
union LARGE_INTEGER rReceivedFragmentCount;
union LARGE_INTEGER rMulticastReceivedFrameCount;
union LARGE_INTEGER rFCSErrorCount;
};
struct _EVENT_BUG_REPORT_T {
/* BugReportVersion 1 */
uint32_t u4BugReportVersion;
/* FW Module State 2 */
uint32_t u4FWState;
/* Scan Counter 3-6 */
uint32_t u4ReceivedBeaconCount;
uint32_t u4ReceivedProbeResponseCount;
uint32_t u4SentProbeRequestCount;
uint32_t u4SentProbeRequestFailCount;
/* Roaming Counter 7-9 */
uint32_t u4RoamingDebugFlag;
uint32_t u4RoamingThreshold;
uint32_t u4RoamingCurrentRcpi;
/* RF Counter 10-14 */
uint32_t u4RFPriChannel;
uint32_t u4RFChannelS1;
uint32_t u4RFChannelS2;
uint32_t u4RFChannelWidth;
uint32_t u4RFSco;
/* Coex Counter 15-17 */
uint32_t u4BTProfile;
uint32_t u4BTOn;
uint32_t u4LTEOn;
/* Low Power Counter 18-20 */
uint32_t u4LPTxUcPktNum;
uint32_t u4LPRxUcPktNum;
uint32_t u4LPPSProfile;
/* Base Band Counter 21- 32 */
uint32_t u4OfdmPdCnt;
uint32_t u4CckPdCnt;
uint32_t u4CckSigErrorCnt;
uint32_t u4CckSfdErrorCnt;
uint32_t u4OfdmSigErrorCnt;
uint32_t u4OfdmTaqErrorCnt;
uint32_t u4OfdmFcsErrorCnt;
uint32_t u4CckFcsErrorCnt;
uint32_t u4OfdmMdrdyCnt;
uint32_t u4CckMdrdyCnt;
uint32_t u4PhyCcaStatus;
uint32_t u4WifiFastSpiStatus;
/* Mac RX Counter 33-45 */
uint32_t u4RxMdrdyCount;
uint32_t u4RxFcsErrorCount;
uint32_t u4RxbFifoFullCount;
uint32_t u4RxMpduCount;
uint32_t u4RxLengthMismatchCount;
uint32_t u4RxCcaPrimCount;
uint32_t u4RxEdCount;
uint32_t u4LmacFreeRunTimer;
uint32_t u4WtblReadPointer;
uint32_t u4RmacWritePointer;
uint32_t u4SecWritePointer;
uint32_t u4SecReadPointer;
uint32_t u4DmaReadPointer;
/* Mac TX Counter 46-47 */
uint32_t u4TxChannelIdleCount;
uint32_t u4TxCcaNavTxTime;
/* If you want to add item,
* please modify BUG_REPORT_NUM in mtk_driver_nl80211.h
*/
};
/* EVENT_ID_FW_SLEEPY_NOTIFY */
struct EVENT_SLEEPY_INFO {
uint8_t ucSleepyState;
uint8_t aucReserved[3];
};
struct EVENT_ACTIVATE_STA_REC {
uint8_t aucMacAddr[6];
uint8_t ucStaRecIdx;
uint8_t ucBssIndex;
};
struct EVENT_DEACTIVATE_STA_REC {
uint8_t ucStaRecIdx;
uint8_t aucReserved[3];
};
/* CMD_BT_OVER_WIFI */
struct CMD_BT_OVER_WIFI {
uint8_t ucAction; /* 0: query, 1: setup, 2: destroy */
uint8_t ucChannelNum;
uint8_t rPeerAddr[PARAM_MAC_ADDR_LEN];
uint16_t u2BeaconInterval;
uint8_t ucTimeoutDiscovery;
uint8_t ucTimeoutInactivity;
uint8_t ucRole;
uint8_t PAL_Capabilities;
uint8_t cMaxTxPower;
uint8_t ucChannelBand;
uint8_t ucReserved[1];
};
#if (CFG_SUPPORT_DFS_MASTER == 1)
enum ENUM_REG_DOMAIN {
REG_DEFAULT = 0,
REG_JP_53,
REG_JP_56
};
struct CMD_RDD_ON_OFF_CTRL {
uint8_t ucDfsCtrl;
uint8_t ucRddIdx;
uint8_t ucRddRxSel;
uint8_t ucSetVal;
uint8_t aucReserve[4];
};
#endif
/* EVENT_BT_OVER_WIFI */
struct EVENT_BT_OVER_WIFI {
uint8_t ucLinkStatus;
uint8_t ucSelectedChannel;
int8_t cRSSI;
uint8_t ucReserved[1];
};
/* Same with DOMAIN_SUBBAND_INFO */
struct CMD_SUBBAND_INFO {
uint8_t ucRegClass;
uint8_t ucBand;
uint8_t ucChannelSpan;
uint8_t ucFirstChannelNum;
uint8_t ucNumChannels;
uint8_t aucReserved[3];
};
/* CMD_SET_DOMAIN_INFO */
#if (CFG_SUPPORT_SINGLE_SKU == 1)
struct CMD_SET_DOMAIN_INFO_V2 {
uint32_t u4CountryCode;
uint8_t uc2G4Bandwidth; /* CONFIG_BW_20_40M or CONFIG_BW_20M */
uint8_t uc5GBandwidth; /* CONFIG_BW_20_40M or CONFIG_BW_20M */
uint8_t aucReserved[2];
struct acctive_channel_list active_chs;
};
#endif
struct CMD_SET_DOMAIN_INFO {
uint16_t u2CountryCode;
uint16_t u2IsSetPassiveScan;
struct CMD_SUBBAND_INFO rSubBand[6];
uint8_t uc2G4Bandwidth; /* CONFIG_BW_20_40M or CONFIG_BW_20M */
uint8_t uc5GBandwidth; /* CONFIG_BW_20_40M or CONFIG_BW_20M */
uint8_t aucReserved[2];
};
#if CFG_SUPPORT_PWR_LIMIT_COUNTRY
/* CMD_SET_PWR_LIMIT_TABLE */
struct CMD_CHANNEL_POWER_LIMIT {
uint8_t ucCentralCh;
int8_t cPwrLimitCCK;
int8_t cPwrLimit20L; /* MCS0~4 */
int8_t cPwrLimit20H; /* MCS5~8 */
int8_t cPwrLimit40L; /* MCS0~4 */
int8_t cPwrLimit40H; /* MCS5~9 */
int8_t cPwrLimit80L; /* MCS0~4 */
int8_t cPwrLimit80H; /* MCS5~9 */
int8_t cPwrLimit160L; /* MCS0~4 */
int8_t cPwrLimit160H; /* MCS5~9 */
uint8_t ucFlag; /*Not used in driver*/
uint8_t aucReserved[1];
};
struct CMD_SET_COUNTRY_CHANNEL_POWER_LIMIT {
uint16_t u2CountryCode;
uint8_t ucCountryFlag; /*Not used in driver*/
uint8_t ucNum; /*Numbers of channel to set power limit*/
uint8_t ucTempVersion; /*Temp use for 160nc power limit implementation*/
uint8_t aucReserved[3];
struct CMD_CHANNEL_POWER_LIMIT
rChannelPowerLimit[1]; /*Channel power limit entries to be set*/
};
#if (CFG_SUPPORT_SINGLE_SKU == 1)
struct CMD_CHANNEL_POWER_LIMIT_V2 {
uint8_t ucCentralCh;
uint8_t ucReserved[3];
uint8_t tx_pwr_dsss_cck;
uint8_t tx_pwr_dsss_bpsk;
uint8_t tx_pwr_ofdm_bpsk; /* 6M, 9M */
uint8_t tx_pwr_ofdm_qpsk; /* 12M, 18M */
uint8_t tx_pwr_ofdm_16qam; /* 24M, 36M */
uint8_t tx_pwr_ofdm_48m;
uint8_t tx_pwr_ofdm_54m;
uint8_t tx_pwr_ht20_bpsk; /* MCS0*/
uint8_t tx_pwr_ht20_qpsk; /* MCS1, MCS2*/
uint8_t tx_pwr_ht20_16qam; /* MCS3, MCS4*/
uint8_t tx_pwr_ht20_mcs5; /* MCS5*/
uint8_t tx_pwr_ht20_mcs6; /* MCS6*/
uint8_t tx_pwr_ht20_mcs7; /* MCS7*/
uint8_t tx_pwr_ht40_bpsk; /* MCS0*/
uint8_t tx_pwr_ht40_qpsk; /* MCS1, MCS2*/
uint8_t tx_pwr_ht40_16qam; /* MCS3, MCS4*/
uint8_t tx_pwr_ht40_mcs5; /* MCS5*/
uint8_t tx_pwr_ht40_mcs6; /* MCS6*/
uint8_t tx_pwr_ht40_mcs7; /* MCS7*/
uint8_t tx_pwr_ht40_mcs32; /* MCS32*/
uint8_t tx_pwr_vht20_bpsk; /* MCS0*/
uint8_t tx_pwr_vht20_qpsk; /* MCS1, MCS2*/
uint8_t tx_pwr_vht20_16qam; /* MCS3, MCS4*/
uint8_t tx_pwr_vht20_64qam; /* MCS5, MCS6*/
uint8_t tx_pwr_vht20_mcs7;
uint8_t tx_pwr_vht20_mcs8;
uint8_t tx_pwr_vht20_mcs9;
uint8_t tx_pwr_vht_40;
uint8_t tx_pwr_vht_80;
uint8_t tx_pwr_vht_160c;
uint8_t tx_pwr_vht_160nc;
uint8_t tx_pwr_lg_40;
uint8_t tx_pwr_lg_80;
uint8_t tx_pwr_1ss_delta;
uint8_t ucReserved_1[2];
};
struct CMD_SET_COUNTRY_CHANNEL_POWER_LIMIT_V2 {
uint8_t ucNum;
uint8_t eband; /*ENUM_BAND_T*/
uint8_t usReserved[2];
uint32_t countryCode;
struct CMD_CHANNEL_POWER_LIMIT_V2 rChannelPowerLimit[0];
};
#define BF_TX_PWR_LIMIT_SECTION_NUM 17
#define BF_TX_PWR_LIMIT_ELEMENT_NUM 10
#define TX_PWR_LIMIT_SECTION_NUM 9
#define TX_PWR_LIMIT_ELEMENT_NUM 10
#define TX_PWR_LIMIT_COUNTRY_STR_MAX_LEN 4
#define TX_PWR_LIMIT_MAX_VAL 63
#define POWER_LIMIT_SKU_CCK_NUM 4
#define POWER_LIMIT_SKU_OFDM_NUM 8
#define POWER_LIMIT_SKU_HT20_NUM 8
#define POWER_LIMIT_SKU_HT40_NUM 9
#define POWER_LIMIT_SKU_VHT20_NUM 10
#define POWER_LIMIT_SKU_VHT40_NUM 10
#define POWER_LIMIT_SKU_VHT80_NUM 10
#define POWER_LIMIT_SKU_VHT160_NUM 10
#define SINGLE_SKU_PARAM_NUM \
(POWER_LIMIT_SKU_CCK_NUM + \
POWER_LIMIT_SKU_OFDM_NUM + \
POWER_LIMIT_SKU_HT20_NUM + \
POWER_LIMIT_SKU_HT40_NUM + \
POWER_LIMIT_SKU_VHT20_NUM + \
POWER_LIMIT_SKU_VHT40_NUM + \
POWER_LIMIT_SKU_VHT80_NUM + \
POWER_LIMIT_SKU_VHT160_NUM)
#define POWER_LIMIT_TXBF_BACKOFF_PARAM_NUM 6
struct CHANNEL_TX_PWR_LIMIT {
uint8_t ucChannel;
int8_t rTxPwrLimitValue[TX_PWR_LIMIT_SECTION_NUM]
[TX_PWR_LIMIT_ELEMENT_NUM];
int8_t rTxBfBackoff[POWER_LIMIT_TXBF_BACKOFF_PARAM_NUM];
};
struct TX_PWR_LIMIT_DATA {
uint32_t countryCode;
uint32_t ucChNum;
struct CHANNEL_TX_PWR_LIMIT *rChannelTxPwrLimit;
};
struct SKU_TABLE_TYPE {
int8_t i1PwrLimit[SINGLE_SKU_PARAM_NUM];
};
struct CHANNEL_POWER_LIMIT_PER_RATE {
uint8_t ucCentralCh;
struct SKU_TABLE_TYPE aucTxPwrLimit;
};
struct CMD_SET_COUNTRY_TX_POWER_LIMIT_PER_RATE {
uint8_t ucCmdVer;
uint8_t aucPadding0[1];
uint16_t u2CmdLen;
uint8_t ucNum;
uint8_t eBand;
uint8_t bCmdFinished;
uint8_t aucPadding1[1];
uint32_t countryCode;
uint8_t aucPadding2[32];
struct CHANNEL_POWER_LIMIT_PER_RATE rChannelPowerLimit[0];
};
struct CMD_TXPWR_TXBF_CHANNEL_BACKOFF {
uint8_t ucCentralCh;
uint8_t aucPadding0[1];
int8_t aucTxBfBackoff[POWER_LIMIT_TXBF_BACKOFF_PARAM_NUM];
};
#define CMD_POWER_LIMIT_TABLE_SUPPORT_CHANNEL_NUM 64
struct CMD_TXPWR_TXBF_SET_BACKOFF {
uint8_t ucCmdVer;
uint8_t aucPadding0[1];
uint16_t u2CmdLen;
uint8_t ucNum;
uint8_t ucBssIdx;
uint8_t aucPadding1[2];
uint8_t aucPadding2[32];
struct CMD_TXPWR_TXBF_CHANNEL_BACKOFF
rChannelTxBfBackoff[CMD_POWER_LIMIT_TABLE_SUPPORT_CHANNEL_NUM];
};
#endif
#endif
/* CMD_SET_IP_ADDRESS */
struct IPV4_NETWORK_ADDRESS {
uint8_t aucIpAddr[4];
};
struct CMD_SET_NETWORK_ADDRESS_LIST {
uint8_t ucBssIndex;
uint8_t ucAddressCount;
uint8_t ucReserved[2];
struct IPV4_NETWORK_ADDRESS arNetAddress[1];
};
struct PATTERN_DESCRIPTION {
uint8_t fgCheckBcA1;
uint8_t fgCheckMcA1;
uint8_t ePatternHeader;
uint8_t fgAndOp;
uint8_t fgNotOp;
uint8_t ucPatternMask;
uint16_t u2PatternOffset;
uint8_t aucPattern[8];
};
struct CMD_RAW_PATTERN_CONFIGURATION {
struct PATTERN_DESCRIPTION arPatternDesc[4];
};
struct CMD_PATTERN_FUNC_CONFIG {
u_int8_t fgBcA1En;
u_int8_t fgMcA1En;
u_int8_t fgBcA1MatchDrop;
u_int8_t fgMcA1MatchDrop;
};
struct EVENT_TX_DONE {
uint8_t ucPacketSeq;
uint8_t ucStatus;
uint16_t u2SequenceNumber;
uint8_t ucWlanIndex;
uint8_t ucTxCount;
uint16_t u2TxRate;
uint8_t ucFlag;
uint8_t ucTid;
uint8_t ucRspRate;
uint8_t ucRateTableIdx;
uint8_t ucBandwidth;
uint8_t ucTxPower;
uint8_t ucFlushReason;
uint8_t aucReserved0[1];
uint32_t u4TxDelay;
uint32_t u4Timestamp;
uint32_t u4AppliedFlag;
uint8_t aucRawTxS[28];
uint8_t aucReserved1[32];
};
enum ENUM_TXS_APPLIED_FLAG {
TX_FRAME_IN_AMPDU_FORMAT = 0,
TX_FRAME_EXP_BF,
TX_FRAME_IMP_BF,
TX_FRAME_PS_BIT
};
enum ENUM_TXS_CONTROL_FLAG {
TXS_WITH_ADVANCED_INFO = 0,
TXS_IS_EXIST
};
#if (CFG_SUPPORT_DFS_MASTER == 1)
enum ENUM_DFS_CTRL {
RDD_STOP = 0,
RDD_START,
RDD_DET_MODE,
RDD_RADAR_EMULATE,
RDD_START_TXQ = 20
};
#endif
struct CMD_BSS_ACTIVATE_CTRL {
uint8_t ucBssIndex;
uint8_t ucActive;
uint8_t ucNetworkType;
uint8_t ucOwnMacAddrIndex;
uint8_t aucBssMacAddr[6];
uint8_t ucBMCWlanIndex;
uint8_t ucReserved;
};
struct CMD_SET_BSS_RLM_PARAM {
uint8_t ucBssIndex;
uint8_t ucRfBand;
uint8_t ucPrimaryChannel;
uint8_t ucRfSco;
uint8_t ucErpProtectMode;
uint8_t ucHtProtectMode;
uint8_t ucGfOperationMode;
uint8_t ucTxRifsMode;
uint16_t u2HtOpInfo3;
uint16_t u2HtOpInfo2;
uint8_t ucHtOpInfo1;
uint8_t ucUseShortPreamble;
uint8_t ucUseShortSlotTime;
uint8_t ucVhtChannelWidth;
uint8_t ucVhtChannelFrequencyS1;
uint8_t ucVhtChannelFrequencyS2;
uint16_t u2VhtBasicMcsSet;
uint8_t ucNss;
};
struct CMD_SET_BSS_INFO {
uint8_t ucBssIndex;
uint8_t ucConnectionState;
uint8_t ucCurrentOPMode;
uint8_t ucSSIDLen;
uint8_t aucSSID[32];
uint8_t aucBSSID[6];
uint8_t ucIsQBSS;
uint8_t ucReserved1;
uint16_t u2OperationalRateSet;
uint16_t u2BSSBasicRateSet;
uint8_t ucStaRecIdxOfAP;
uint16_t u2HwDefaultFixedRateCode;
uint8_t ucNonHTBasicPhyType; /* For Slot Time and CWmin */
uint8_t ucAuthMode;
uint8_t ucEncStatus;
uint8_t ucPhyTypeSet;
uint8_t ucWapiMode;
uint8_t ucIsApMode;
uint8_t ucBMCWlanIndex;
uint8_t ucHiddenSsidMode;
uint8_t ucDisconnectDetectTh;
uint32_t u4PrivateData;
struct CMD_SET_BSS_RLM_PARAM rBssRlmParam;
uint8_t ucDBDCBand;
uint8_t ucWmmSet;
uint8_t ucDBDCAction;
uint8_t ucNss;
uint8_t aucReserved[20];
};
enum ENUM_RTS_POLICY {
RTS_POLICY_AUTO,
RTS_POLICY_STATIC_BW,
RTS_POLICY_DYNAMIC_BW,
RTS_POLICY_LEGACY,
RTS_POLICY_NO_RTS
};
struct CMD_UPDATE_STA_RECORD {
uint8_t ucStaIndex;
uint8_t ucStaType;
/* This field should assign at create
* and keep consistency for update usage
*/
uint8_t aucMacAddr[MAC_ADDR_LEN];
uint16_t u2AssocId;
uint16_t u2ListenInterval;
/* This field should assign at create
* and keep consistency for update usage
*/
uint8_t ucBssIndex;
uint8_t ucDesiredPhyTypeSet;
uint16_t u2DesiredNonHTRateSet;
uint16_t u2BSSBasicRateSet;
uint8_t ucIsQoS;
uint8_t ucIsUapsdSupported;
uint8_t ucStaState;
uint8_t ucMcsSet;
uint8_t ucSupMcs32;
uint8_t aucReserved1[1];
uint8_t aucRxMcsBitmask[10];
uint16_t u2RxHighestSupportedRate;
uint32_t u4TxRateInfo;
uint16_t u2HtCapInfo;
uint16_t u2HtExtendedCap;
uint32_t u4TxBeamformingCap;
uint8_t ucAmpduParam;
uint8_t ucAselCap;
uint8_t ucRCPI;
uint8_t ucNeedResp;
/* b0~3: Trigger enabled, b4~7: Delivery enabled */
uint8_t ucUapsdAc;
/* 0: all, 1: max 2, 2: max 4, 3: max 6 */
uint8_t ucUapsdSp;
/* This field should assign at create
* and keep consistency for update usage
*/
uint8_t ucWlanIndex;
/* This field should assign at create
* and keep consistency for update usage
*/
uint8_t ucBMCWlanIndex;
uint32_t u4VhtCapInfo;
uint16_t u2VhtRxMcsMap;
uint16_t u2VhtRxHighestSupportedDataRate;
uint16_t u2VhtTxMcsMap;
uint16_t u2VhtTxHighestSupportedDataRate;
/* 0: auto 1: Static BW 2: Dynamic BW 3: Legacy 7: WoRts */
uint8_t ucRtsPolicy;
/* VHT operating mode, bit 7: Rx NSS Type,
* bit 4-6, Rx NSS, bit 0-1: Channel Width
*/
uint8_t ucVhtOpMode;
uint8_t ucTrafficDataType; /* 0: auto 1: data 2: video 3: voice */
uint8_t ucTxGfMode;
uint8_t ucTxSgiMode;
uint8_t ucTxStbcMode;
uint16_t u2HwDefaultFixedRateCode;
uint8_t ucTxAmpdu;
uint8_t ucRxAmpdu;
uint32_t u4FixedPhyRate; /* */
uint16_t u2MaxLinkSpeed; /* unit is 0.5 Mbps */
uint16_t u2MinLinkSpeed;
uint32_t u4Flags;
uint8_t ucTxBaSize;
uint8_t ucRxBaSize;
uint8_t aucReserved3[2];
struct TXBF_PFMU_STA_INFO rTxBfPfmuInfo;
uint8_t ucTxAmsduInAmpdu;
uint8_t ucRxAmsduInAmpdu;
uint8_t aucReserved5[2];
uint32_t u4TxMaxAmsduInAmpduLen;
/* UINT_8 aucReserved4[30]; */
};
struct CMD_REMOVE_STA_RECORD {
uint8_t ucActionType;
uint8_t ucStaIndex;
uint8_t ucBssIndex;
uint8_t ucReserved;
};
struct CMD_INDICATE_PM_BSS_CREATED {
uint8_t ucBssIndex;
uint8_t ucDtimPeriod;
uint16_t u2BeaconInterval;
uint16_t u2AtimWindow;
uint8_t aucReserved[2];
};
struct CMD_INDICATE_PM_BSS_CONNECTED {
uint8_t ucBssIndex;
uint8_t ucDtimPeriod;
uint16_t u2AssocId;
uint16_t u2BeaconInterval;
uint16_t u2AtimWindow;
uint8_t fgIsUapsdConnection;
uint8_t ucBmpDeliveryAC;
uint8_t ucBmpTriggerAC;
uint8_t aucReserved[1];
};
struct CMD_INDICATE_PM_BSS_ABORT {
uint8_t ucBssIndex;
uint8_t aucReserved[3];
};
struct CMD_BEACON_TEMPLATE_UPDATE {
/* 0: update randomly,
* 1: update all,
* 2: delete all (1 and 2 will update directly without search)
*/
uint8_t ucUpdateMethod;
uint8_t ucBssIndex;
uint8_t aucReserved[2];
uint16_t u2Capability;
uint16_t u2IELen;
uint8_t aucIE[MAX_IE_LENGTH];
};
struct CMD_SET_WMM_PS_TEST_STRUCT {
uint8_t ucBssIndex;
/* b0~3: trigger-en AC0~3. b4~7: delivery-en AC0~3 */
uint8_t bmfgApsdEnAc;
/* enter PS immediately without 5 second guard after connected */
uint8_t ucIsEnterPsAtOnce;
/* not to trigger UC on beacon TIM is matched (under U-APSD) */
uint8_t ucIsDisableUcTrigger;
};
struct GSCN_CHANNEL_INFO {
uint8_t ucBand;
uint8_t ucChannelNumber; /* Channel Number */
uint8_t ucPassive; /* 0:active, 1:passive scan; ignored for DFS */
uint8_t aucReserved[1];
uint32_t u4DwellTimeMs; /* dwell time hint */
};
enum ENUM_WIFI_BAND {
WIFI_BAND_UNSPECIFIED,
WIFI_BAND_BG = 1, /* 2.4 GHz */
WIFI_BAND_A = 2, /* 5 GHz without DFS */
WIFI_BAND_A_DFS = 4, /* 5 GHz DFS only */
WIFI_BAND_A_WITH_DFS = 6, /* 5 GHz with DFS */
WIFI_BAND_ABG = 3, /* 2.4 GHz + 5 GHz; no DFS */
WIFI_BAND_ABG_WITH_DFS = 7, /* 2.4 GHz + 5 GHz with DFS */
};
struct GSCAN_BUCKET {
uint16_t u2BucketIndex; /* bucket index, 0 based */
/* desired period, in millisecond;
* if this is too low, the firmware should choose to generate
* results as fast as it can instead of failing the command
*/
uint8_t ucBucketFreqMultiple;
/* report_events semantics -
* This is a bit field; which defines following bits -
* REPORT_EVENTS_EACH_SCAN
* report a scan completion event after scan. If this is not set
* then scan completion events should be reported if
* report_threshold_percent or report_threshold_num_scans is
* reached.
* REPORT_EVENTS_FULL_RESULTS
* forward scan results (beacons/probe responses + IEs)
* in real time to HAL, in addition to completion events
* Note: To keep backward compatibility, fire completion
* events regardless of REPORT_EVENTS_EACH_SCAN.
* REPORT_EVENTS_NO_BATCH
* controls if scans for this bucket should be placed in the
* history buffer
*/
uint8_t ucReportFlag;
uint8_t ucMaxBucketFreqMultiple; /* max_period / base_period */
uint8_t ucStepCount;
uint8_t ucNumChannels;
uint8_t aucReserved[1];
enum ENUM_WIFI_BAND
eBand; /* when UNSPECIFIED, use channel list */
/* channels to scan; these may include DFS channels */
struct GSCN_CHANNEL_INFO arChannelList[8];
};
struct CMD_GSCN_REQ {
uint8_t ucFlags;
uint8_t ucNumScnToCache;
uint8_t aucReserved[2];
uint32_t u4BufferThreshold;
uint32_t u4BasePeriod; /* base timer period in ms */
uint32_t u4NumBuckets;
/* number of APs to store in each scan in the */
uint32_t u4MaxApPerScan;
/* BSSID/RSSI history buffer (keep the highest RSSI APs) */
struct GSCAN_BUCKET arBucket[8];
};
struct CMD_GSCN_SCN_COFIG {
uint8_t ucNumApPerScn; /* GSCAN_ATTRIBUTE_NUM_AP_PER_SCAN */
uint32_t u4BufferThreshold; /* GSCAN_ATTRIBUTE_REPORT_THRESHOLD */
uint32_t u4NumScnToCache; /* GSCAN_ATTRIBUTE_NUM_SCANS_TO_CACHE */
};
/* Definition for CHANNEL_INFO.ucBand:
* 0: Reserved
* 1: BAND_2G4
* 2: BAND_5G
* Others: Reserved
*/
struct CHANNEL_INFO {
uint8_t ucBand;
uint8_t ucChannelNum;
};
struct CMD_SCAN_REQ {
uint8_t ucSeqNum;
uint8_t ucBssIndex;
uint8_t ucScanType;
/* BIT(0) wildcard / BIT(1) P2P-wildcard / BIT(2) specific */
uint8_t ucSSIDType;
uint8_t ucSSIDLength;
uint8_t ucNumProbeReq;
uint16_t u2ChannelMinDwellTime;
uint16_t u2ChannelDwellTime;
uint16_t u2TimeoutValue;
uint8_t aucSSID[32];
uint8_t ucChannelType;
uint8_t ucChannelListNum;
uint8_t aucReserved[2];
struct CHANNEL_INFO arChannelList[32];
uint16_t u2IELen;
uint8_t aucIE[MAX_IE_LENGTH];
};
struct CMD_SCAN_REQ_V2 {
uint8_t ucSeqNum;
uint8_t ucBssIndex;
uint8_t ucScanType;
uint8_t ucSSIDType;
uint8_t ucSSIDNum;
uint8_t ucNumProbeReq;
uint8_t ucScnFuncMask;
uint8_t auVersion[1];
struct PARAM_SSID arSSID[4];
uint16_t u2ProbeDelayTime;
uint16_t u2ChannelDwellTime;
uint16_t u2TimeoutValue;
uint8_t ucChannelType;
uint8_t ucChannelListNum; /*total 160*/
struct CHANNEL_INFO arChannelList[32]; /*total 160+64=224*/
uint16_t u2IELen; /*total 226*/
uint8_t aucIE[MAX_IE_LENGTH]; /*total 826*/
uint8_t ucChannelListExtNum;
uint8_t ucSSIDExtNum;
uint16_t u2ChannelMinDwellTime;
struct CHANNEL_INFO arChannelListExtend[32];
struct PARAM_SSID arSSIDExtend[6];
uint8_t aucBSSID[MAC_ADDR_LEN];
uint8_t aucRandomMac[MAC_ADDR_LEN];
uint8_t aucPadding_2[64];
};
struct CMD_SCAN_CANCEL {
uint8_t ucSeqNum;
uint8_t ucIsExtChannel; /* For P2P channel extension. */
uint8_t aucReserved[2];
};
/* 20150107 Daniel Added complete channels number in the scan done event */
/* before*/
/*
* typedef struct EVENT_SCAN_DONE {
* UINT_8 ucSeqNum;
* UINT_8 ucSparseChannelValid;
* CHANNEL_INFO_T rSparseChannel;
* } EVENT_SCAN_DONE, *P_EVENT_SCAN_DONE;
*/
/* after */
#define EVENT_SCAN_DONE_CHANNEL_NUM_MAX 64
struct EVENT_SCAN_DONE {
uint8_t ucSeqNum;
uint8_t ucSparseChannelValid;
struct CHANNEL_INFO rSparseChannel;
/*scan done version #2 */
uint8_t ucCompleteChanCount;
uint8_t ucCurrentState;
uint8_t ucScanDoneVersion;
/*scan done version #3 */
uint8_t ucReserved;
uint32_t u4ScanDurBcnCnt;
uint8_t fgIsPNOenabled;
uint8_t aucReserving[3];
/*channel idle count # Mike */
uint8_t ucSparseChannelArrayValidNum;
uint8_t aucReserved[3];
uint8_t aucChannelNum[EVENT_SCAN_DONE_CHANNEL_NUM_MAX];
/* Idle format for au2ChannelIdleTime */
/* 0: first bytes: idle time(ms) 2nd byte: dwell time(ms) */
/* 1: first bytes: idle time(8ms) 2nd byte: dwell time(8ms) */
/* 2: dwell time (16us) */
uint16_t au2ChannelIdleTime[EVENT_SCAN_DONE_CHANNEL_NUM_MAX];
/* Beacon and Probe Response Count in each Channel */
uint8_t aucChannelBAndPCnt[EVENT_SCAN_DONE_CHANNEL_NUM_MAX];
/* Mdrdy Count in each Channel */
uint8_t aucChannelMDRDYCnt[EVENT_SCAN_DONE_CHANNEL_NUM_MAX];
};
struct CMD_BATCH_REQ {
uint8_t ucSeqNum;
uint8_t ucNetTypeIndex;
uint8_t ucCmd; /* Start/ Stop */
/* an integer number of scans per batch */
uint8_t ucMScan;
/* an integer number of the max AP to remember per scan */
uint8_t ucBestn;
/* an integer number of highest-strength AP for which we'd */
uint8_t ucRtt;
/* like approximate distance reported */
uint8_t ucChannel; /* channels */
uint8_t ucChannelType;
uint8_t ucChannelListNum;
uint8_t aucReserved[3];
uint32_t u4Scanfreq; /* an integer number of seconds between scans */
struct CHANNEL_INFO arChannelList[32]; /* channels */
};
struct EVENT_BATCH_RESULT_ENTRY {
uint8_t aucBssid[MAC_ADDR_LEN];
uint8_t aucSSID[ELEM_MAX_LEN_SSID];
uint8_t ucSSIDLen;
int8_t cRssi;
uint32_t ucFreq;
uint32_t u4Age;
uint32_t u4Dist;
uint32_t u4Distsd;
};
struct EVENT_BATCH_RESULT {
uint8_t ucScanCount;
uint8_t aucReserved[3];
/* Must be the same with SCN_BATCH_STORE_MAX_NUM */
struct EVENT_BATCH_RESULT_ENTRY arBatchResult[12];
};
struct CMD_CH_PRIVILEGE {
uint8_t ucBssIndex;
uint8_t ucTokenID;
uint8_t ucAction;
uint8_t ucPrimaryChannel;
uint8_t ucRfSco;
uint8_t ucRfBand;
uint8_t ucRfChannelWidth; /* To support 80/160MHz bandwidth */
uint8_t ucRfCenterFreqSeg1; /* To support 80/160MHz bandwidth */
uint8_t ucRfCenterFreqSeg2; /* To support 80/160MHz bandwidth */
uint8_t ucReqType;
uint8_t ucDBDCBand;
uint8_t aucReserved;
uint32_t u4MaxInterval; /* In unit of ms */
uint8_t aucReserved2[8];
};
struct CMD_TX_PWR {
int8_t cTxPwr2G4Cck; /* signed, in unit of 0.5dBm */
int8_t cTxPwr2G4Dsss; /* signed, in unit of 0.5dBm */
int8_t acReserved[2];
int8_t cTxPwr2G4OFDM_BPSK;
int8_t cTxPwr2G4OFDM_QPSK;
int8_t cTxPwr2G4OFDM_16QAM;
int8_t cTxPwr2G4OFDM_Reserved;
int8_t cTxPwr2G4OFDM_48Mbps;
int8_t cTxPwr2G4OFDM_54Mbps;
int8_t cTxPwr2G4HT20_BPSK;
int8_t cTxPwr2G4HT20_QPSK;
int8_t cTxPwr2G4HT20_16QAM;
int8_t cTxPwr2G4HT20_MCS5;
int8_t cTxPwr2G4HT20_MCS6;
int8_t cTxPwr2G4HT20_MCS7;
int8_t cTxPwr2G4HT40_BPSK;
int8_t cTxPwr2G4HT40_QPSK;
int8_t cTxPwr2G4HT40_16QAM;
int8_t cTxPwr2G4HT40_MCS5;
int8_t cTxPwr2G4HT40_MCS6;
int8_t cTxPwr2G4HT40_MCS7;
int8_t cTxPwr5GOFDM_BPSK;
int8_t cTxPwr5GOFDM_QPSK;
int8_t cTxPwr5GOFDM_16QAM;
int8_t cTxPwr5GOFDM_Reserved;
int8_t cTxPwr5GOFDM_48Mbps;
int8_t cTxPwr5GOFDM_54Mbps;
int8_t cTxPwr5GHT20_BPSK;
int8_t cTxPwr5GHT20_QPSK;
int8_t cTxPwr5GHT20_16QAM;
int8_t cTxPwr5GHT20_MCS5;
int8_t cTxPwr5GHT20_MCS6;
int8_t cTxPwr5GHT20_MCS7;
int8_t cTxPwr5GHT40_BPSK;
int8_t cTxPwr5GHT40_QPSK;
int8_t cTxPwr5GHT40_16QAM;
int8_t cTxPwr5GHT40_MCS5;
int8_t cTxPwr5GHT40_MCS6;
int8_t cTxPwr5GHT40_MCS7;
};
struct CMD_TX_AC_PWR {
int8_t ucBand;
#if 0
int8_t c11AcTxPwr_BPSK;
int8_t c11AcTxPwr_QPSK;
int8_t c11AcTxPwr_16QAM;
int8_t c11AcTxPwr_MCS5_MCS6;
int8_t c11AcTxPwr_MCS7;
int8_t c11AcTxPwr_MCS8;
int8_t c11AcTxPwr_MCS9;
int8_t c11AcTxPwrVht40_OFFSET;
int8_t c11AcTxPwrVht80_OFFSET;
int8_t c11AcTxPwrVht160_OFFSET;
#else
struct AC_PWR_SETTING_STRUCT rAcPwr;
#endif
};
struct CMD_RSSI_PATH_COMPASATION {
int8_t c2GRssiCompensation;
int8_t c5GRssiCompensation;
};
struct CMD_5G_PWR_OFFSET {
int8_t cOffsetBand0; /* 4.915-4.980G */
int8_t cOffsetBand1; /* 5.000-5.080G */
int8_t cOffsetBand2; /* 5.160-5.180G */
int8_t cOffsetBand3; /* 5.200-5.280G */
int8_t cOffsetBand4; /* 5.300-5.340G */
int8_t cOffsetBand5; /* 5.500-5.580G */
int8_t cOffsetBand6; /* 5.600-5.680G */
int8_t cOffsetBand7; /* 5.700-5.825G */
};
struct CMD_PWR_PARAM {
uint32_t au4Data[28];
uint32_t u4RefValue1;
uint32_t u4RefValue2;
};
struct CMD_PHY_PARAM {
uint8_t aucData[144]; /* eFuse content */
};
struct CMD_AUTO_POWER_PARAM {
/* 0: Disable 1: Enalbe 0x10: Change parameters */
uint8_t ucType;
uint8_t ucBssIndex;
uint8_t aucReserved[2];
uint8_t aucLevelRcpiTh[3];
uint8_t aucReserved2[1];
int8_t aicLevelPowerOffset[3]; /* signed, in unit of 0.5dBm */
uint8_t aucReserved3[1];
uint8_t aucReserved4[8];
};
/*for WMMAC, CMD_ID_UPDATE_AC_PARAMS*/
struct CMD_UPDATE_AC_PARAMS {
uint8_t ucAcIndex; /*0 ~3, from AC0 to AC3*/
uint8_t ucBssIdx; /*no use*/
/* if 0, disable ACM for ACx specified by
** ucAcIndex, otherwise in unit of 32us
*/
uint16_t u2MediumTime;
/* rate to be used to tx packet with priority
** ucAcIndex , unit: bps
*/
uint32_t u4PhyRate;
uint16_t u2EDCALifeTime; /* msdu life time for this TC, unit: 2TU */
/* if we use fix rate to tx packets, should tell
** firmware the limited retries
*/
uint8_t ucRetryCount;
uint8_t aucReserved[5];
};
/* S56 Traffic Stream Metrics */
struct CMD_SET_TSM_STATISTICS_REQUEST {
uint8_t ucEnabled; /* 0, disable; 1, enable; */
uint8_t ucBssIdx; /* always AIS Bss index now */
uint8_t ucAcIndex; /* wmm ac index, the statistics should be on this TC
*/
uint8_t ucTid;
uint8_t aucPeerAddr
[MAC_ADDR_LEN]; /* packet to the target address to be mesured */
uint8_t ucBin0Range;
uint8_t aucReserved[3];
/* if this variable is 0, followed variables are meaningless
** only report once for a same trigger condition in this time frame
** for triggered mode: bit(0):average, bit(1):consecutive,
** bit(2):delay
*/
uint8_t ucTriggerCondition;
uint8_t ucAvgErrThreshold;
uint8_t ucConsecutiveErrThreshold;
uint8_t ucDelayThreshold;
uint8_t ucMeasureCount;
uint8_t ucTriggerTimeout; /* unit: 100 TU*/
};
struct CMD_GET_TSM_STATISTICS {
uint8_t ucBssIdx; /* always AIS Bss now */
/* wmm ac index, the statistics should be on this TC or TS */
uint8_t ucAcIndex;
uint8_t ucTid; /* */
uint8_t aucPeerAddr
[MAC_ADDR_LEN]; /* indicating the RA for the measured frames */
/* for triggered mode: bit(0):average, bit(1):consecutive,
** bit(2):delay
*/
uint8_t ucReportReason;
uint16_t u2Reserved;
uint32_t u4PktTxDoneOK;
uint32_t u4PktDiscard; /* u2PktTotal - u2PktTxDoneOK */
uint32_t u4PktFail; /* failed count for exceeding retry limit */
uint32_t u4PktRetryTxDoneOK;
uint32_t u4PktQosCfPollLost;
/* 802.11k - Average Packet Transmission delay for all packets per this
** TC or TS
*/
uint32_t u4AvgPktTxDelay;
/* 802.11k - Average Packet Queue Delay */
uint32_t u4AvgPktQueueDelay;
uint64_t u8StartTime; /* represented by TSF */
/* sum of packets whose packet tx delay is less than Bi (i=0~6) range
** value(unit: TU)
*/
uint32_t au4PktCntBin[6];
};
struct CMD_DBDC_SETTING {
uint8_t ucDbdcEn;
uint8_t ucWmmBandBitmap;
uint8_t ucUpdateSettingNextChReq;
uint8_t aucPadding0[1];
uint8_t ucCmdVer;
uint8_t aucPadding1[1];
uint16_t u2CmdLen;
uint8_t ucPrimaryChannel;
uint8_t ucWmmQueIdx;
uint8_t aucPadding2[2];
uint8_t aucPadding3[24];
};
struct EVENT_CH_PRIVILEGE {
uint8_t ucBssIndex;
uint8_t ucTokenID;
uint8_t ucStatus;
uint8_t ucPrimaryChannel;
uint8_t ucRfSco;
uint8_t ucRfBand;
uint8_t ucRfChannelWidth; /* To support 80/160MHz bandwidth */
uint8_t ucRfCenterFreqSeg1; /* To support 80/160MHz bandwidth */
uint8_t ucRfCenterFreqSeg2; /* To support 80/160MHz bandwidth */
uint8_t ucReqType;
uint8_t ucDBDCBand;
uint8_t aucReserved;
uint32_t u4GrantInterval; /* In unit of ms */
uint8_t aucReserved2[8];
};
#if (CFG_SUPPORT_DFS_MASTER == 1)
struct LONG_PULSE_BUFFER {
uint32_t u4LongStartTime;
uint16_t u2LongPulseWidth;
};
struct PERIODIC_PULSE_BUFFER {
uint32_t u4PeriodicStartTime;
uint16_t u2PeriodicPulseWidth;
int16_t i2PeriodicPulsePower;
};
struct EVENT_RDD_REPORT {
/*0: Only report radar detected; 1: Add parameter reports*/
uint8_t ucRadarReportMode;
uint8_t ucRddIdx;
uint8_t ucLongDetected;
uint8_t ucPeriodicDetected;
uint8_t ucLPBNum;
uint8_t ucPPBNum;
uint8_t ucLPBPeriodValid;
uint8_t ucLPBWidthValid;
uint8_t ucPRICountM1;
uint8_t ucPRICountM1TH;
uint8_t ucPRICountM2;
uint8_t ucPRICountM2TH;
uint32_t u4PRI1stUs;
struct LONG_PULSE_BUFFER arLpbContent[LPB_SIZE];
struct PERIODIC_PULSE_BUFFER arPpbContent[PPB_SIZE];
};
#endif
#if (CFG_WOW_SUPPORT == 1)
/* event of wake up reason */
struct _EVENT_WAKEUP_REASON_INFO {
uint8_t reason;
uint8_t aucReserved[3];
};
#endif
struct EVENT_BSS_BEACON_TIMEOUT {
uint8_t ucBssIndex;
uint8_t ucReasonCode;
uint8_t aucReserved[2];
};
struct EVENT_STA_AGING_TIMEOUT {
uint8_t ucStaRecIdx;
uint8_t aucReserved[3];
};
struct EVENT_NOA_TIMING {
uint8_t ucIsInUse; /* Indicate if this entry is in use or not */
uint8_t ucCount; /* Count */
uint8_t aucReserved[2];
uint32_t u4Duration; /* Duration */
uint32_t u4Interval; /* Interval */
uint32_t u4StartTime; /* Start Time */
};
struct EVENT_UPDATE_NOA_PARAMS {
uint8_t ucBssIndex;
uint8_t aucReserved[2];
uint8_t ucEnableOppPS;
uint16_t u2CTWindow;
uint8_t ucNoAIndex;
uint8_t ucNoATimingCount; /* Number of NoA Timing */
struct EVENT_NOA_TIMING
arEventNoaTiming[8 /*P2P_MAXIMUM_NOA_COUNT */];
};
struct EVENT_AP_OBSS_STATUS {
uint8_t ucBssIndex;
uint8_t ucObssErpProtectMode;
uint8_t ucObssHtProtectMode;
uint8_t ucObssGfOperationMode;
uint8_t ucObssRifsOperationMode;
uint8_t ucObssBeaconForcedTo20M;
uint8_t aucReserved[2];
};
struct EVENT_DEBUG_MSG {
uint16_t u2DebugMsgId;
uint8_t ucMsgType;
uint8_t ucFlags; /* unused */
uint32_t u4Value; /* memory addre or ... */
uint16_t u2MsgSize;
uint8_t aucReserved0[2];
uint8_t aucMsg[1];
};
struct CMD_EDGE_TXPWR_LIMIT {
int8_t cBandEdgeMaxPwrCCK;
int8_t cBandEdgeMaxPwrOFDM20;
int8_t cBandEdgeMaxPwrOFDM40;
int8_t cBandEdgeMaxPwrOFDM80;
};
struct CMD_POWER_OFFSET {
uint8_t ucBand; /*1:2.4G ; 2:5G */
/*the max num subband is 5G, devide with 8 subband */
uint8_t ucSubBandOffset[MAX_SUBBAND_NUM_5G];
uint8_t aucReverse[3];
};
struct CMD_NVRAM_SETTING {
struct WIFI_CFG_PARAM_STRUCT rNvramSettings;
};
#if CFG_SUPPORT_TDLS
struct CMD_TDLS_CH_SW {
u_int8_t fgIsTDLSChSwProhibit;
};
#endif
struct CMD_SET_DEVICE_MODE {
uint16_t u2ChipID;
uint16_t u2Mode;
};
#if CFG_SUPPORT_ADVANCE_CONTROL
/* command type */
#define CMD_ADV_CONTROL_SET (1<<15)
#define CMD_PTA_CONFIG_TYPE (0x1)
#define CMD_AFH_CONFIG_TYPE (0x2)
#define CMD_BA_CONFIG_TYPE (0x3)
#define CMD_GET_REPORT_TYPE (0x4)
#define CMD_NOISE_HISTOGRAM_TYPE (0x5)
#if CFG_IPI_2CHAIN_SUPPORT
#define CMD_NOISE_HISTOGRAM_TYPE2 (0x51)
#endif
#define CMD_ADMINCTRL_CONFIG_TYPE (0x6)
#if CFG_SUPPORT_EXT_PTA_DEBUG_COMMAND
#define CMD_EXT_PTA_CONFIG_TYPE (0x7)
#endif
/* for PtaConfig field */
#define CMD_PTA_CONFIG_PTA_EN (1<<0)
#define CMD_PTA_CONFIG_RW_EN (1<<1)
#define CMD_PTA_CONFIG_PTA_STAT_EN (1<<2)
/* pta config related mask */
#define CMD_PTA_CONFIG_PTA (1<<0)
#define CMD_PTA_CONFIG_RW (1<<1)
#define CMD_PTA_CONFIG_TXDATA_TAG (1<<2)
#define CMD_PTA_CONFIG_RXDATAACK_TAG (1<<3)
#define CMD_PTA_CONFIG_RX_NSW_TAG (1<<4)
#define CMD_PTA_CONFIG_TXACK_TAG (1<<5)
#define CMD_PTA_CONFIG_TXPROTFRAME_TAG (1<<6)
#define CMD_PTA_CONFIG_RXPROTFRAMEACK_TAG (1<<7)
#define CMD_PTA_CONFIG_TX_BMC_TAG (1<<8)
#define CMD_PTA_CONFIG_TX_BCN_TAG (1<<9)
#define CMD_PTA_CONFIG_RX_SP_TAG (1<<10)
#define CMD_PTA_CONFIG_TX_MGMT_TAG (1<<11)
#define CMD_PTA_CONFIG_RXMGMTACK_TAG (1<<12)
#define CMD_PTA_CONFIG_PTA_STAT (1<<13)
#define CMD_PTA_CONFIG_PTA_STAT_RESET (1<<14)
#define CMD_PTA_CONFIG_COMM_ACT_BT_WF0_INBAND (1<<15)
#define CMD_PTA_CONFIG_COMM_ACT_BT_WF0_OUTBAND (1<<16)
#define CMD_PTA_CONFIG_COMM_ACT_BT_WF1_INBAND (1<<17)
#define CMD_PTA_CONFIG_COMM_ACT_BT_WF1_OUTBAND (1<<18)
#if CFG_SUPPORT_EXT_PTA_DEBUG_COMMAND
/* ext pta config related mask */
#define CMD_EXT_PTA_CONFIG_EXT_PTA (1<<0)
#define CMD_EXT_PTA_CONFIG_HI_RX_TAG (1<<1)
#define CMD_EXT_PTA_CONFIG_LO_RX_TAG (1<<2)
#define CMD_EXT_PTA_CONFIG_HI_TX_TAG (1<<3)
#define CMD_EXT_PTA_CONFIG_LO_TX_TAG (1<<4)
#define CMD_EXT_PTA_CONFIG_COMM_ACT_ZB_BT_UNSAFE (1<<5)
#define CMD_EXT_PTA_CONFIG_COMM_ACT_ZB_WF0_UNSAFE (1<<6)
#define CMD_EXT_PTA_CONFIG_COMM_ACT_ZB_WF1_UNSAFE (1<<7)
#define CMD_EXT_PTA_CONFIG_COMM_ACT_ZB_BT_HSF (1<<8)
#define CMD_EXT_PTA_CONFIG_COMM_ACT_ZB_WF0_HSF (1<<9)
#define CMD_EXT_PTA_CONFIG_COMM_ACT_ZB_WF1_HSF (1<<10)
#endif
/* for config PTA Tag */
#define EVENT_CONFIG_PTA_OFFSET (0)
#define EVENT_CONFIG_PTA_FEILD (0x1)
#define EVENT_CONFIG_PTA_WIFI_OFFSET (12)
#define EVENT_CONFIG_PTA_WIFI_FEILD (0x1)
#define EVENT_CONFIG_PTA_BT_OFFSET (15)
#define EVENT_CONFIG_PTA_BT_FEILD (0x1)
#define EVENT_CONFIG_PTA_ARB_OFFSET (16)
#define EVENT_CONFIG_PTA_ARB_FEILD (0x1)
#define EVENT_CONFIG_WIFI_GRANT_OFFSET (30)
#define EVENT_CONFIG_WIFI_GRANT_FEILD (0x1)
#define EVENT_CONFIG_WIFI_PRI_OFFSET (12)
#define EVENT_CONFIG_WIFI_PRI_FEILD (0xf)
#define EVENT_CONFIG_WIFI_TXREQ_OFFSET (8)
#define EVENT_CONFIG_WIFI_TXREQ_FEILD (0x1)
#define EVENT_CONFIG_WIFI_RXREQ_OFFSET (9)
#define EVENT_CONFIG_WIFI_RXREQ_FEILD (0x1)
#define EVENT_CONFIG_BT_GRANT_OFFSET (29)
#define EVENT_CONFIG_BT_GRANT_FEILD (0x1)
#define EVENT_CONFIG_BT_PRI_OFFSET (4)
#define EVENT_CONFIG_BT_PRI_FEILD (0xf)
#define EVENT_CONFIG_BT_TXREQ_OFFSET (0)
#define EVENT_CONFIG_BT_TXREQ_FEILD (0x1)
#define EVENT_CONFIG_BT_RXREQ_OFFSET (1)
#define EVENT_CONFIG_BT_RXREQ_FEILD (0x1)
#define EVENT_PTA_BTTRX_CNT_OFFSET (16)
#define EVENT_PTA_BTTRX_CNT_FEILD (0xFFFF)
#define EVENT_PTA_BTTRX_GRANT_CNT_OFFSET (0)
#define EVENT_PTA_BTTRX_GRANT_CNT_FEILD (0xFFFF)
#define EVENT_PTA_WFTRX_CNT_OFFSET (16)
#define EVENT_PTA_WFTRX_CNT_FEILD (0xFFFF)
#define EVENT_PTA_WFTRX_GRANT_CNT_OFFSET (0)
#define EVENT_PTA_WFTRX_GRANT_CNT_FEILD (0xFFFF)
#define EVENT_PTA_TX_ABT_CNT_OFFSET (16)
#define EVENT_PTA_TX_ABT_CNT_FEILD (0xFFFF)
#define EVENT_PTA_RX_ABT_CNT_OFFSET (0)
#define EVENT_PTA_RX_ABT_CNT_FEILD (0xFFFF)
struct CMD_PTA_CONFIG {
uint16_t u2Type;
uint16_t u2Len;
uint32_t u4ConfigMask;
/* common usage in set/get */
uint32_t u4PtaConfig;
uint32_t u4TxDataTag;
uint32_t u4RxDataAckTag;
uint32_t u4RxNswTag;
uint32_t u4TxAckTag;
uint32_t u4TxProtFrameTag;
uint32_t u4RxProtFrameAckTag;
uint32_t u4TxBMCTag;
uint32_t u4TxBCNTag;
uint32_t u4RxSPTag;
uint32_t u4TxMgmtTag;
uint32_t u4RxMgmtAckTag;
uint32_t u4CommActBtWf0Inband;
uint32_t u4CommActBtWf0Outband;
uint32_t u4CommActBtWf1Inband;
uint32_t u4CommActBtWf1Outband;
/* Only used in get */
uint32_t u4PtaWF0TxCnt;
uint32_t u4PtaWF0RxCnt;
uint32_t u4PtaWF0AbtCnt;
uint32_t u4PtaWF1TxCnt;
uint32_t u4PtaWF1RxCnt;
uint32_t u4PtaWF1AbtCnt;
uint32_t u4PtaBTTxCnt;
uint32_t u4PtaBTRxCnt;
uint32_t u4PtaBTAbtCnt;
uint32_t u4GrantStat;
uint32_t u4CoexMode;
};
#if CFG_SUPPORT_EXT_PTA_DEBUG_COMMAND
struct CMD_EXT_PTA_CONFIG {
uint16_t u2Type;
uint16_t u2Len;
uint32_t u4ConfigMask;
/* common usage in set/get */
uint32_t u4ExtPtaConfig;
uint32_t u4ZbHiRxTag;
uint32_t u4ZbLoRxTag;
uint32_t u4ZbHiTxTag;
uint32_t u4ZbLoTxTag;
uint32_t u4CommActZbBtUnsafe;
uint32_t u4CommActZbWf0Unsafe;
uint32_t u4CommActZbWf1Unsafe;
uint32_t u4CommActZbBtHsf;
uint32_t u4CommActZbWf0Hsf;
uint32_t u4CommActZbWf1Hsf;
/* used in get */
uint32_t u4BtTag;
uint32_t u4Wf0Tag;
uint32_t u4Wf1Tag;
uint32_t u4ZbGntCnt;
uint32_t u4ZbAbtCnt;
uint32_t u4ZbLoTxReqCnt;
uint32_t u4ZbHiTxReqCnt;
uint32_t u4ZbLoRxReqCnt;
uint32_t u4ZbHiRxReqCnt;
};
#endif
/* get report related */
enum ENUM_GET_REPORT_ACTION_T {
CMD_GET_REPORT_ENABLE = 1,
CMD_GET_REPORT_DISABLE,
CMD_GET_REPORT_RESET,
CMD_GET_REPORT_GET,
CMD_SET_REPORT_SAMPLE_DUR,
CMD_SET_REPORT_SAMPLE_POINT,
CMD_SET_REPORT_TXTHRES,
CMD_SET_REPORT_RXTHRES,
CMD_GET_REPORT_ACTIONS
};
#define EVENT_REPORT_OFDM_FCCA (16)
#define EVENT_REPORT_OFDM_FCCA_FEILD (0xffff)
#define EVENT_REPORT_CCK_FCCA (0)
#define EVENT_REPORT_CCK_FCCA_FEILD (0xffff)
#define EVENT_REPORT_OFDM_SIGERR (16)
#define EVENT_REPORT_OFDM_SIGERR_FEILD (0xffff)
#define EVENT_REPORT_CCK_SIGERR (0)
#define EVENT_REPORT_CCK_SIGERR_FEILD (0xffff)
struct CMD_GET_TRAFFIC_REPORT {
uint16_t u2Type;
uint16_t u2Len;
/* parameter */
uint8_t ucBand;
uint8_t ucAction;
uint8_t reserved[2];
/* report 1 */
uint32_t u4FalseCCA;
uint32_t u4HdrCRC;
uint32_t u4PktSent;
uint32_t u4PktRetried;
uint32_t u4PktTxfailed;
uint32_t u4RxMPDU;
uint32_t u4RxFcs;
/* air time report */
uint32_t u4FetchSt; /* ms */
uint32_t u4FetchEd; /* ms */
uint32_t u4ChBusy; /* us */
uint32_t u4ChIdle; /* us */
uint32_t u4TxAirTime; /* us */
uint32_t u4RxAirTime; /* us */
uint32_t u4TimerDur; /* ms */
uint32_t u4FetchCost; /* us */
int32_t TimerDrift; /* ms */
int16_t u2SamplePoints; /* ms */
int8_t ucTxThres; /* ms */
int8_t ucRxThres; /* ms */
};
/* admission control related define */
/* support set operations */
#define ADMIN_CTRL_SET_MODE (0)
#define ADMIN_CTRL_SET_BASE (1)
#define ADMIN_CTRL_SET_TBL1 (2)
#define ADMIN_CTRL_SET_TBL2 (3)
#define ADMIN_CTRL_SET_TBL3 (4)
#define ADMIN_CTRL_SET_METHOD (5)
/* admission ctrl mode */
#define ADMIN_CTRL_MODE_DIS (0)
#define ADMIN_CTRL_MODE_AUTO (1)
#define ADMIN_CTRL_MODE_MAN (2)
#define ADMIN_CTRL_MODE_RESET (3)
/* default value */
#define ADMIN_CTRL_RATE_CODE_NUM (8) /* AUTO_RATE_NUM */
#define ADMIN_CTRL_TBL_ENTRY_NUM (6)
#define ADMIN_CTRL_MAX_PERCENTAGE (100)
/* status define */
#define BT_PROF_A2DP_SRC 0x02
#define BT_PROF_LINK_CONNECTED 0x04
#define BT_PROF_A2DP_SINK 0x400
#define ADMIN_LINK_2G BIT(0)
#define ADMIN_LINK_OTHER BIT(1)
#define ADMIN_ENABLED BIT(2)
#define ADMIN_PER_PKT_ENABLED BIT(3)
#define ADMIN_METHOD1_ENABLED BIT(4)
#define ADMIN_METHOD2_ENABLED BIT(5)
struct ADMIN_CTRL_PARAM {
/* bt info updated to admin ctrl */
uint32_t u4CoexMode;
/* Ctrl mode */
uint16_t u2eMode;
/* Admin ctrl related */
uint16_t u2AdminCtrlBase;
uint16_t u2CurAdminTime;
uint16_t u2ForceAdminTime;
/* Rate related */
uint16_t au2RateCode[ADMIN_CTRL_RATE_CODE_NUM];
/* admin ctrl % tbl */
uint8_t aucAdminTbl1[ADMIN_CTRL_TBL_ENTRY_NUM];
uint8_t aucAdminTbl2[ADMIN_CTRL_TBL_ENTRY_NUM];
uint8_t aucAdminTbl3[ADMIN_CTRL_TBL_ENTRY_NUM];
uint8_t ucAdminThermalLimit;
uint8_t ucLastChosenTbl;
uint8_t ucAdminStatus;
uint8_t reserved[3];
};
struct CMD_ADMIN_CTRL_CONFIG {
uint16_t u2Type;
uint16_t u2Len;
/* parameter */
uint16_t u2Action;
uint8_t reserved[2];
/* content */
struct ADMIN_CTRL_PARAM content;
};
struct CMD_ADV_CONFIG_HEADER {
uint16_t u2Type;
uint16_t u2Len;
};
/* noise histogram related */
enum ENUM_NOISE_HISTOGRAM_ACTION_T {
CMD_NOISE_HISTOGRAM_ENABLE = 1,
CMD_NOISE_HISTOGRAM_DISABLE,
CMD_NOISE_HISTOGRAM_RESET,
CMD_NOISE_HISTOGRAM_GET,
#if CFG_IPI_2CHAIN_SUPPORT
CMD_NOISE_HISTOGRAM_GET2
#endif
};
struct CMD_NOISE_HISTOGRAM_REPORT {
uint16_t u2Type;
uint16_t u2Len;
/* parameter */
uint8_t ucAction;
uint8_t reserved[3];
/* IPI_report */
uint32_t u4IPI0; /* Power <= -92 */
uint32_t u4IPI1; /* -92 < Power <= -89 */
uint32_t u4IPI2; /* -89 < Power <= -86 */
uint32_t u4IPI3; /* -86 < Power <= -83 */
uint32_t u4IPI4; /* -83 < Power <= -80 */
uint32_t u4IPI5; /* -80 < Power <= -75 */
uint32_t u4IPI6; /* -75 < Power <= -70 */
uint32_t u4IPI7; /* -70 < Power <= -65 */
uint32_t u4IPI8; /* -65 < Power <= -60 */
uint32_t u4IPI9; /* -60 < Power <= -55 */
uint32_t u4IPI10; /* -55 < Power */
};
#endif
#if CFG_SUPPORT_RDD_TEST_MODE
struct CMD_RDD_CH {
uint8_t ucRddTestMode;
uint8_t ucRddShutCh;
uint8_t ucRddStartCh;
uint8_t ucRddStopCh;
uint8_t ucRddDfs;
uint8_t ucReserved;
uint8_t ucReserved1;
uint8_t ucReserved2;
};
struct EVENT_RDD_STATUS {
uint8_t ucRddStatus;
uint8_t aucReserved[3];
};
#endif
struct EVENT_ICAP_STATUS {
uint8_t ucRddStatus;
uint8_t aucReserved[3];
uint32_t u4StartAddress;
uint32_t u4IcapSieze;
#if CFG_SUPPORT_QA_TOOL
uint32_t u4IcapContent;
#endif /* CFG_SUPPORT_QA_TOOL */
};
#if CFG_SUPPORT_QA_TOOL
struct ADC_BUS_FMT {
uint32_t u4Dcoc0Q: 14; /* [13:0] */
uint32_t u4Dcoc0I: 14; /* [27:14] */
uint32_t u4DbgData1: 4; /* [31:28] */
uint32_t u4Dcoc1Q: 14; /* [45:32] */
uint32_t u4Dcoc1I: 14; /* [46:59] */
uint32_t u4DbgData2: 4; /* [63:60] */
uint32_t u4DbgData3; /* [95:64] */
};
struct IQC_BUS_FMT {
int32_t u4Iqc0Q: 12; /* [11:0] */
int32_t u4Iqc0I: 12; /* [23:12] */
int32_t u4Na1: 8; /* [31:24] */
int32_t u4Iqc1Q: 12; /* [43:32] */
int32_t u4Iqc1I: 12; /* [55:44] */
int32_t u4Na2: 8; /* [63:56] */
int32_t u4Na3; /* [95:64] */
};
struct IQC_160_BUS_FMT {
int32_t u4Iqc0Q1: 12; /* [11:0] */
int32_t u4Iqc0I1: 12; /* [23:12] */
uint32_t u4Iqc0Q0P1: 8; /* [31:24] */
int32_t u4Iqc0Q0P2: 4; /* [35:32] */
int32_t u4Iqc0I0: 12; /* [47:36] */
int32_t u4Iqc1Q1: 12; /* [59:48] */
uint32_t u4Iqc1I1P1: 4; /* [63:60] */
int32_t u4Iqc1I1P2: 8; /* [71:64] */
int32_t u4Iqc1Q0: 12; /* [83:72] */
int32_t u4Iqc1I0: 12; /* [95:84] */
};
struct SPECTRUM_BUS_FMT {
int32_t u4DcocQ: 12; /* [11:0] */
int32_t u4DcocI: 12; /* [23:12] */
int32_t u4LpfGainIdx: 4; /* [27:24] */
int32_t u4LnaGainIdx: 2; /* [29:28] */
int32_t u4AssertData: 2; /* [31:30] */
};
struct PACKED_ADC_BUS_FMT {
uint32_t u4AdcQ0T2: 4; /* [19:16] */
uint32_t u4AdcQ0T1: 4; /* [11:8] */
uint32_t u4AdcQ0T0: 4; /* [3:0] */
uint32_t u4AdcI0T2: 4; /* [23:20] */
uint32_t u4AdcI0T1: 4; /* [15:12] */
uint32_t u4AdcI0T0: 4; /* [7:4] */
uint32_t u4AdcQ0T5: 4; /* [43:40] */
uint32_t u4AdcQ0T4: 4; /* [35:32] */
uint32_t u4AdcQ0T3: 4; /* [27:24] */
uint32_t u4AdcI0T5: 4; /* [47:44] */
uint32_t u4AdcI0T4: 4; /* [39:36] */
uint32_t u4AdcI0T3: 4; /* [31:28] */
uint32_t u4AdcQ1T2: 4; /* [19:16] */
uint32_t u4AdcQ1T1: 4; /* [11:8] */
uint32_t u4AdcQ1T0: 4; /* [3:0] */
uint32_t u4AdcI1T2: 4; /* [23:20] */
uint32_t u4AdcI1T1: 4; /* [15:12] */
uint32_t u4AdcI1T0: 4; /* [7:4] */
uint32_t u4AdcQ1T5: 4; /* [43:40] */
uint32_t u4AdcQ1T4: 4; /* [35:32] */
uint32_t u4AdcQ1T3: 4; /* [27:24] */
uint32_t u4AdcI1T5: 4; /* [47:44] */
uint32_t u4AdcI1T4: 4; /* [39:36] */
uint32_t u4AdcI1T3: 4; /* [31:28] */
};
union ICAP_BUS_FMT {
struct ADC_BUS_FMT rAdcBusData; /* 12 bytes */
struct IQC_BUS_FMT rIqcBusData; /* 12 bytes */
struct IQC_160_BUS_FMT rIqc160BusData; /* 12 bytes */
struct SPECTRUM_BUS_FMT rSpectrumBusData; /* 4 bytes */
struct PACKED_ADC_BUS_FMT rPackedAdcBusData; /* 12 bytes */
};
#endif /* CFG_SUPPORT_QA_TOOL */
struct CMD_SET_TXPWR_CTRL {
int8_t c2GLegacyStaPwrOffset; /* Unit: 0.5dBm, default: 0 */
int8_t c2GHotspotPwrOffset;
int8_t c2GP2pPwrOffset;
int8_t c2GBowPwrOffset;
int8_t c5GLegacyStaPwrOffset; /* Unit: 0.5dBm, default: 0 */
int8_t c5GHotspotPwrOffset;
int8_t c5GP2pPwrOffset;
int8_t c5GBowPwrOffset;
/* TX power policy when concurrence
* in the same channel
* 0: Highest power has priority
* 1: Lowest power has priority
*/
uint8_t ucConcurrencePolicy;
int8_t acReserved1[3]; /* Must be zero */
/* Power limit by channel for all data rates */
int8_t acTxPwrLimit2G[14]; /* Channel 1~14, Unit: 0.5dBm */
int8_t acTxPwrLimit5G[4]; /* UNII 1~4 */
int8_t acReserved2[2]; /* Must be zero */
};
struct SSID_MATCH_SETS {
int32_t i4RssiThresold;
uint8_t aucSsid[32];
uint8_t ucSsidLen;
uint8_t aucPadding_1[3];
};
struct CMD_SCHED_SCAN_REQ {
uint8_t ucVersion;
uint8_t ucSeqNum;
uint8_t fgStopAfterIndication;
uint8_t ucSsidNum;
uint8_t ucMatchSsidNum;
uint8_t aucPadding_0;
uint16_t u2IELen;
struct PARAM_SSID auSsid[10];
struct SSID_MATCH_SETS auMatchSsid[16];
uint8_t ucChannelType;
uint8_t ucChnlNum;
uint8_t ucMspEntryNum;
uint8_t ucScnFuncMask;
struct CHANNEL_INFO aucChannel[64];
uint16_t au2MspList[10];
uint8_t aucPadding_3[64];
#if CFG_SUPPORT_WAKE_ON_PNO
/*PNO wake up threshold */
int32_t rRSSIThreshold;
/* Dwell time and passive listen time */
uint16_t u2ChannelMinDwellTime;
uint16_t u2ChannelDwellTime;
uint16_t u2ChannelPassiveTime;
#endif
/* keep last */
uint8_t aucIE[0]; /* MUST be the last for IE content */
};
struct EVENT_SCHED_SCAN_DONE {
uint8_t ucSeqNum;
uint8_t ucStatus;
uint8_t aucReserved[2];
};
#if CFG_SUPPORT_CSI
enum CSI_EVENT_TLV_TAG {
CSI_EVENT_VERSION,
CSI_EVENT_CBW,
CSI_EVENT_RSSI,
CSI_EVENT_SNR,
CSI_EVENT_BAND,
CSI_EVENT_CSI_NUM,
CSI_EVENT_CSI_I_DATA,
CSI_EVENT_CSI_Q_DATA,
CSI_EVENT_DBW,
CSI_EVENT_CH_IDX,
CSI_EVENT_TA,
CSI_EVENT_EXTRA_INFO,
CSI_EVENT_RX_MODE,
CSI_EVENT_RSVD1,
CSI_EVENT_RSVD2,
CSI_EVENT_RSVD3,
CSI_EVENT_RSVD4,
CSI_EVENT_H_IDX,
CSI_EVENT_TX_RX_IDX, /* csi event end, must be exist */
CSI_EVENT_TLV_TAG_NUM,
};
#define CSI_EVENT_RX_IDX_MASK BITS(0, 15)
#define CSI_EVENT_RX_IDX_SHFIT 0
#define CSI_EVENT_TX_IDX_MASK BITS(16, 31)
#define CSI_EVENT_TX_IDX_SHFIT 16
#define CSI_EVENT_RX_MODE_MASK BITS(0, 15)
#define CSI_EVENT_RX_MODE_SHFIT 0
#define CSI_EVENT_RATE_MASK BITS(16, 31)
#define CSI_EVENT_RATE_SHFIT 16
#endif
struct CMD_HIF_CTRL {
uint8_t ucHifType;
uint8_t ucHifDirection;
uint8_t ucHifStop;
uint8_t ucHifSuspend;
uint8_t aucReserved2[32];
};
enum ENUM_HIF_TYPE {
ENUM_HIF_TYPE_SDIO = 0x00,
ENUM_HIF_TYPE_USB = 0x01,
ENUM_HIF_TYPE_PCIE = 0x02,
ENUM_HIF_TYPE_GPIO = 0x03,
};
enum ENUM_HIF_DIRECTION {
ENUM_HIF_TX = 0x01,
ENUM_HIF_RX = 0x02,
ENUM_HIF_TRX = 0x03,
};
enum ENUM_HIF_TRAFFIC_STATUS {
ENUM_HIF_TRAFFIC_BUSY = 0x01,
ENUM_HIF_TRAFFIC_IDLE = 0x02,
ENUM_HIF_TRAFFIC_INVALID = 0x3,
};
struct EVENT_HIF_CTRL {
uint8_t ucHifType;
uint8_t ucHifTxTrafficStatus;
uint8_t ucHifRxTrafficStatus;
uint8_t ucHifSuspend;
uint8_t aucReserved2[32];
};
#if CFG_SUPPORT_BUILD_DATE_CODE
struct CMD_GET_BUILD_DATE_CODE {
uint8_t aucReserved[4];
};
struct EVENT_BUILD_DATE_CODE {
uint8_t aucDateCode[16];
};
#endif
struct CMD_GET_STA_STATISTICS {
uint8_t ucIndex;
uint8_t ucFlags;
uint8_t ucReadClear;
uint8_t ucLlsReadClear;
uint8_t aucMacAddr[MAC_ADDR_LEN];
uint8_t ucResetCounter;
uint8_t aucReserved1[1];
uint8_t aucReserved2[16];
};
/* per access category statistics */
struct WIFI_WMM_AC_STAT_GET_FROM_FW {
uint32_t u4TxFailMsdu;
uint32_t u4TxRetryMsdu;
};
/* CFG_SUPPORT_WFD */
struct EVENT_STA_STATISTICS {
/* Event header */
/* UINT_16 u2Length; */
/* Must be filled with 0x0001 (EVENT Packet) */
/* UINT_16 u2Reserved1; */
/* UINT_8 ucEID; */
/* UINT_8 ucSeqNum; */
/* UINT_8 aucReserved2[2]; */
/* Event Body */
uint8_t ucVersion;
uint8_t aucReserved1[3];
uint32_t u4Flags; /* Bit0: valid */
uint8_t ucStaRecIdx;
uint8_t ucNetworkTypeIndex;
uint8_t ucWTEntry;
uint8_t aucReserved4[1];
uint8_t ucMacAddr[MAC_ADDR_LEN];
uint8_t ucPer; /* base: 128 */
uint8_t ucRcpi;
uint32_t u4PhyMode; /* SGI BW */
uint16_t u2LinkSpeed; /* unit is 0.5 Mbits */
uint8_t ucLinkQuality;
uint8_t ucLinkReserved;
uint32_t u4TxCount;
uint32_t u4TxFailCount;
uint32_t u4TxLifeTimeoutCount;
uint32_t u4TxDoneAirTime;
/* Transmit in the air (wtbl) */
uint32_t u4TransmitCount;
/* Transmit without ack/ba in the air (wtbl) */
uint32_t u4TransmitFailCount;
struct WIFI_WMM_AC_STAT_GET_FROM_FW
arLinkStatistics[AC_NUM]; /*link layer statistics */
uint8_t ucTemperature;
uint8_t ucSkipAr;
uint8_t ucArTableIdx;
uint8_t ucRateEntryIdx;
uint8_t ucRateEntryIdxPrev;
uint8_t ucTxSgiDetectPassCnt;
uint8_t ucAvePer;
#if (CFG_SUPPORT_RA_GEN == 0)
uint8_t aucArRatePer[AR_RATE_TABLE_ENTRY_MAX];
uint8_t aucRateEntryIndex[AUTO_RATE_NUM];
#else
uint32_t u4AggRangeCtrl_0;
uint32_t u4AggRangeCtrl_1;
uint8_t ucRangeType;
uint8_t aucReserved5[24];
#endif
uint8_t ucArStateCurr;
uint8_t ucArStatePrev;
uint8_t ucArActionType;
uint8_t ucHighestRateCnt;
uint8_t ucLowestRateCnt;
uint16_t u2TrainUp;
uint16_t u2TrainDown;
uint32_t u4Rate1TxCnt;
uint32_t u4Rate1FailCnt;
struct TX_VECTOR_BBP_LATCH rTxVector[ENUM_BAND_NUM];
struct MIB_INFO_STAT rMibInfo[ENUM_BAND_NUM];
u_int8_t fgIsForceTxStream;
u_int8_t fgIsForceSeOff;
#if (CFG_SUPPORT_RA_GEN == 0)
uint8_t aucReserved6[17];
#else
uint16_t u2RaRunningCnt;
uint8_t ucRaStatus;
uint8_t ucFlag;
uint8_t aucTxQuality[MAX_TX_QUALITY_INDEX];
uint8_t ucTxRateUpPenalty;
uint8_t ucLowTrafficMode;
uint8_t ucLowTrafficCount;
uint8_t ucLowTrafficDashBoard;
uint8_t ucDynamicSGIState;
uint8_t ucDynamicSGIScore;
uint8_t ucDynamicBWState;
uint8_t ucDynamicGband256QAMState;
uint8_t ucVhtNonSpRateState;
#endif
uint8_t aucReserved[4];
};
#if CFG_AUTO_CHANNEL_SEL_SUPPORT
struct EVENT_LTE_SAFE_CHN {
uint8_t ucVersion;
uint8_t aucReserved[3];
uint32_t u4Flags; /* Bit0: valid */
struct LTE_SAFE_CHN_INFO rLteSafeChn;
};
#endif
#if CFG_SUPPORT_SNIFFER
struct CMD_MONITOR_SET_INFO {
uint8_t ucEnable;
uint8_t ucBand;
uint8_t ucPriChannel;
uint8_t ucSco;
uint8_t ucChannelWidth;
uint8_t ucChannelS1;
uint8_t ucChannelS2;
uint8_t aucResv[9];
};
#endif
struct CMD_STATS_LOG {
uint32_t u4DurationInMs;
uint8_t aucReserved[32];
};
struct EVENT_WIFI_RDD_TEST {
uint32_t u4FuncIndex;
uint32_t u4FuncLength;
uint32_t u4Prefix;
uint32_t u4Count;
uint8_t ucRddIdx;
uint8_t aucReserve[3];
uint8_t aucBuffer[0];
};
#if CFG_SUPPORT_MSP
/* EVENT_ID_WLAN_INFO */
struct EVENT_WLAN_INFO {
struct PARAM_TX_CONFIG rWtblTxConfig;
struct PARAM_SEC_CONFIG rWtblSecConfig;
struct PARAM_KEY_CONFIG rWtblKeyConfig;
struct PARAM_PEER_RATE_INFO rWtblRateInfo;
struct PARAM_PEER_BA_CONFIG rWtblBaConfig;
struct PARAM_PEER_CAP rWtblPeerCap;
struct PARAM_PEER_RX_COUNTER_ALL rWtblRxCounter;
struct PARAM_PEER_TX_COUNTER_ALL rWtblTxCounter;
};
/* EVENT_ID_MIB_INFO */
struct EVENT_MIB_INFO {
struct HW_MIB_COUNTER rHwMibCnt;
struct HW_MIB2_COUNTER rHwMib2Cnt;
struct HW_TX_AMPDU_METRICS rHwTxAmpduMts;
};
#endif
#if CFG_SUPPORT_GET_MCS_INFO
struct EVENT_TX_MCS_INFO {
uint16_t au2TxRateCode[MCS_INFO_SAMPLE_CNT];
uint8_t aucTxRatePer[MCS_INFO_SAMPLE_CNT];
uint8_t aucReserved[2];
};
#endif
/*#if (CFG_EEPROM_PAGE_ACCESS == 1)*/
struct EVENT_ACCESS_EFUSE {
uint32_t u4Address;
uint32_t u4Valid;
uint8_t aucData[16];
};
struct EXT_EVENT_EFUSE_FREE_BLOCK {
uint8_t u2FreeBlockNum;
uint8_t ucVersion; /* 0: original format ; 1: modified format */
uint8_t ucTotalBlockNum; /* Total Block */
uint8_t ucReserved;
};
struct EXT_EVENT_GET_TX_POWER {
uint8_t ucTxPwrType;
uint8_t ucEfuseAddr;
uint8_t ucTx0TargetPower;
uint8_t ucDbdcIdx;
};
struct EXT_EVENT_RF_TEST_RESULT_T {
uint32_t u4FuncIndex;
uint32_t u4PayloadLength;
uint8_t aucEvent[0];
};
struct EXT_EVENT_RBIST_DUMP_DATA_T {
uint32_t u4FuncIndex;
uint32_t u4PktNum;
uint32_t u4Bank;
uint32_t u4DataLength;
uint32_t u4WFCnt;
uint32_t u4SmplCnt;
uint32_t u4Reserved[6];
uint32_t u4Data[256];
};
struct EXT_EVENT_RBIST_CAP_STATUS_T {
uint32_t u4FuncIndex;
uint32_t u4CapDone;
uint32_t u4Reserved[15];
};
struct EXT_EVENT_RECAL_DATA_T {
uint32_t u4FuncIndex;
uint32_t u4Type; /* 0 for string, 1 for int data */
union {
uint8_t ucData[32];
uint32_t u4Data[3];
} u;
};
struct CMD_SUSPEND_MODE_SETTING {
uint8_t ucBssIndex;
uint8_t ucEnableSuspendMode;
uint8_t ucMdtim; /* LP parameter */
uint8_t ucDeviceSuspend; /* kernel 1:suspend 0:resume (reserved) */
uint32_t u4CtrlFlag; /* b0:Dis ARPNS, b1:Dis REKEY, b2:DTIM policy */
uint8_t ucWowSuspend; /* 0:updabye by bora origin policy,1:wow mdtim */
uint8_t ucReserved1[3];
uint8_t ucReserved2[56];
};
struct EVENT_UPDATE_COEX_PHYRATE {
uint8_t ucVersion;
uint8_t aucReserved1[3]; /* 4 byte alignment */
uint32_t u4Flags;
uint32_t au4PhyRateLimit[MAX_BSSID_NUM + 1];
uint8_t ucSupportSisoOnly;
uint8_t ucWfPathSupport;
uint8_t aucReserved2[2]; /* 4 byte alignment */
};
struct CMD_GET_TXPWR_TBL {
/* DWORD_0 - Common Part */
uint8_t ucCmdVer;
uint8_t ucAction;
uint16_t u2CmdLen;
/* DWORD_1 ~ x - Command Body */
uint8_t ucDbdcIdx;
uint8_t aucReserved[3];
};
struct EVENT_GET_TXPWR_TBL {
/* DWORD_0 - Common Part */
uint8_t ucEvtVer;
uint8_t ucAction;
uint16_t u2EvtLen;
/* DWORD_1 ~ x - Command Body */
uint8_t ucCenterCh;
uint8_t aucReserved[3];
struct POWER_LIMIT tx_pwr_tbl[TXPWR_TBL_NUM];
};
#ifdef CFG_GET_TEMPURATURE
struct EVENT_GET_THERMAL_SENSOR {
uint8_t u1ThermalCategory;
uint8_t u1Reserved[3];
uint32_t u4SensorResult;
};
struct CMD_THERMAL_SENSOR_INFO {
uint8_t u1ThermalCtrlFormatId;
/* 0: get temperature, 1: get thermal sensor ADC */
uint8_t u1ActionIdx;
uint8_t u1Reserved[2];
};
/** enum for EVENT */
enum THERMAL_EVENT_CATEGORY {
THERMAL_EVENT_TEMPERATURE_INFO = 0x0,
TXPOWER_EVENT_THERMAL_SENSOR_SHOW_INFO = 0x1,
THERMAL_EVENT_NUM
};
/** enum for Get Thermal Sensor Info Action */
enum THERMAL_SENSOR_INFO_ACTION {
THERMAL_SENSOR_INFO_TEMPERATURE = 0,
THERMAL_SENSOR_INFO_ADC,
THERMAL_SENSOR_INFO_NUM
};
/** enum for CMD */
enum THERMAL_ACTION_CATEGORY {
THERMAL_SENSOR_INFO_GET = 0x0,
THERMAL_MANUAL_CTRL = 0x1,
THERMAL_SENSOR_BASIC_INFO = 0x2,
THERMAL_ACTION_NUM
};
#endif
/*#endif*/
struct CMD_TDLS_PS_T {
/* 0: disable tdls power save; 1: enable tdls power save */
uint8_t ucIsEnablePs;
uint8_t aucReserved[3];
};
#if (CFG_SUPPORT_TXPOWER_INFO == 1)
struct CMD_TX_POWER_SHOW_INFO_T {
uint8_t ucPowerCtrlFormatId;
uint8_t ucTxPowerInfoCatg;
uint8_t ucBandIdx;
uint8_t ucReserved;
};
struct EXT_EVENT_TXPOWER_ALL_RATE_POWER_INFO_T {
uint8_t ucTxPowerCategory;
uint8_t ucBandIdx;
uint8_t ucChBand;
uint8_t ucReserved;
/* Rate power info */
struct FRAME_POWER_CONFIG_INFO_T rRatePowerInfo;
/* tx Power Max/Min Limit info */
int8_t icPwrMaxBnd;
int8_t icPwrMinBnd;
uint8_t ucReserved2;
};
#endif
struct CMD_SET_SCHED_SCAN_ENABLE {
uint8_t ucSchedScanAct;
uint8_t aucReserved[3];
};
struct CMD_EVENT_LOG_UI_INFO {
uint32_t u4Version;
uint32_t u4LogLevel;
uint8_t aucReserved[4];
};
struct EXT_EVENT_MAX_AMSDU_LENGTH_UPDATE {
uint8_t ucWlanIdx;
uint8_t ucAmsduLen;
};
struct EVENT_GET_IPI_INFO_T {
uint32_t au4IpiValue[11];
};
#if (CFG_SUPPORT_PERF_IND == 1)
struct CMD_PERF_IND {
/* DWORD_0 - Common Part */
uint8_t ucCmdVer;
uint8_t aucPadding0[1];
uint16_t u2CmdLen; /* cmd size including common part and body. */
/* DWORD_1 ~ x - Command Body */
uint32_t u4VaildPeriod; /* in ms */
/* Current State */
uint32_t ulCurTxBytes[4]; /* in Bps */
uint32_t ulCurRxBytes[4]; /* in Bps */
uint16_t u2CurRxRate[4]; /* Unit 500 Kbps */
uint8_t ucCurRxRCPI0[4];
uint8_t ucCurRxRCPI1[4];
uint8_t ucCurRxNss[4];
uint32_t au4Reserve[63];
};
#endif
#if CFG_SUPPORT_ADVANCE_CONTROL
struct CMD_KEEP_FULL_PWR {
uint8_t ucEnable;
uint8_t aucReserved[3];
};
#endif
#if CFG_SUPPORT_CSI
#define CSI_INFO_RSVD1 BIT(0)
#define CSI_INFO_RSVD2 BIT(1)
struct CSI_TLV_ELEMENT {
uint32_t tag_type;
uint32_t body_len;
uint8_t aucbody[0];
};
enum CSI_CONTROL_MODE_T {
CSI_CONTROL_MODE_STOP,
CSI_CONTROL_MODE_START,
CSI_CONTROL_MODE_SET,
CSI_CONTROL_MODE_NUM
};
enum CSI_CONFIG_ITEM_T {
CSI_CONFIG_RSVD1,
CSI_CONFIG_WF,
CSI_CONFIG_RSVD2,
CSI_CONFIG_FRAME_TYPE,
CSI_CONFIG_TX_PATH,
CSI_CONFIG_OUTPUT_FORMAT,
CSI_CONFIG_INFO,
CSI_CONFIG_ITEM_NUM
};
struct CMD_CSI_CONTROL_T {
uint8_t ucBandIdx;
uint8_t ucMode;
uint8_t ucCfgItem;
uint8_t ucValue1;
uint8_t ucValue2;
};
enum CSI_OUTPUT_FORMAT_T {
CSI_OUTPUT_RAW,
CSI_OUTPUT_TONE_MASKED,
CSI_OUTPUT_TONE_MASKED_SHIFTED,
CSI_OUTPUT_FORMAT_NUM
};
#endif
#ifdef CFG_SUPPORT_TIME_MEASURE
/* TM CMD/EVENT */
enum ENUM_TM_EVENT_INDEX_T {
TM_EVENT_NULLBOT = 0,
TM_EVENT_TM_REPORT,
TM_EVENT_QUERY_TMSYNC,
TM_EVENT_QUERY_DISTANCE,
TM_EVENT_NUM
};
enum ENUM_TM_ACTION_CATEGORY {
TM_ACTION_NULLBOT = 0,
TM_ACTION_TMR_ENABLE,
TM_ACTION_TOAE_CAL,
TM_ACTION_START_FTM,
TM_ACTION_TMSYNC_QUERY,
TM_ACTION_DISTANCE_QUERY,
TM_ACTION_NUM
};
struct EVENT_TM_REPORT_T {
/* DWORD_0 - Common Part */
uint8_t ucCmdVer;
uint8_t ucTmrEventIdx;
uint16_t u2CmdLen; /* Cmd size including common part and body */
/* DWORD 1/2 - common */
uint8_t aucRttPeerAddr[6]; /* TM peer address */
uint16_t u2NumOfValidResult;
/* DWORD 3 - Distance */
uint32_t u4DistanceCm;
/* DWORD 4~5 - Distance STDEV in burst */
uint64_t u8DistStdevSq;
/* DWORD 6~13 - Audio Sync */
uint64_t u8Tsf;
int64_t i8ClockOffset;
int64_t i8ClkRateDiffRatioIn10ms;
uint64_t u8LastToA;
uint8_t aucPadding2[64];
};
struct CMD_TM_ACTION_T {
/* DWORD_0 - Common Part */
uint8_t ucCmdVer;
uint8_t ucTmCategory;
uint16_t u2CmdLen; /* Cmd size including common part and body */
/* DWORD 1/2 */
uint8_t aucRttPeerAddr[6]; /* TM peer address */
uint8_t ucFTMNum;
uint8_t ucMinDeltaIn100US;
/* DWORD 3 - FTM parameter */
uint8_t ucFTMBandwidth;
uint8_t fgFtmEnable;
uint8_t ucPadding1[2];
uint8_t aucPadding2[64];
};
#define CMD_TM_ACTION_START_FTM_LEN \
OFFSET_OF(struct CMD_TM_ACTION_T, fgFtmEnable)
#define CMD_TM_ACTION_QUERY_LEN \
OFFSET_OF(struct CMD_TM_ACTION_T, aucRttPeerAddr[0])
#define TM_CMD_EVENT_VER 0
#endif
#if (CFG_SUPPORT_TSF_SYNC == 1)
struct CMD_TSF_SYNC {
/* DWORD_0 - Common Part */
uint8_t ucCmdVer;
uint8_t aucPadding0[1];
uint16_t u2CmdLen; /* cmd size including common part and body. */
/* DWORD_1 ~ x - Command Body */
uint64_t u8TsfValue;
uint8_t fgIsLatch;
uint8_t ucBssIndex;
uint8_t aucReserved[2];
};
#endif
/*******************************************************************************
* P U B L I C D A T A
*******************************************************************************
*/
/*******************************************************************************
* P R I V A T E D A T A
*******************************************************************************
*/
/*******************************************************************************
* M A C R O S
*******************************************************************************
*/
#if CFG_SUPPORT_CSI
#define GET_CSI_RX_IDX(TRX_IDX) \
((TRX_IDX & CSI_EVENT_RX_IDX_MASK) >> CSI_EVENT_RX_IDX_SHFIT)
#define GET_CSI_TX_IDX(TRX_IDX) \
((TRX_IDX & CSI_EVENT_TX_IDX_MASK) >> CSI_EVENT_TX_IDX_SHFIT)
#define GET_CSI_RX_MODE(DATA) \
((DATA & CSI_EVENT_RX_MODE_MASK) >> CSI_EVENT_RX_MODE_SHFIT)
#define GET_CSI_RATE(DATA) \
((DATA & CSI_EVENT_RATE_MASK) >> CSI_EVENT_RATE_SHFIT)
#endif
/*******************************************************************************
* F U N C T I O N D E C L A R A T I O N S
*******************************************************************************
*/
void nicCmdEventQueryMcrRead(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
void nicCmdEventQueryCoexGetInfo(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
void nicCmdEventQueryCoexIso(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
#if CFG_SUPPORT_QA_TOOL
void nicCmdEventQueryRxStatistics(IN struct ADAPTER
*prAdapter, IN struct CMD_INFO *prCmdInfo,
IN uint8_t *pucEventBuf);
uint32_t nicTsfRawData2IqFmt(struct EVENT_DUMP_MEM *prEventDumpMem,
struct ICAP_INFO_T *prIcap);
uint32_t nicExtTsfRawData2IqFmt(
struct EXT_EVENT_RBIST_DUMP_DATA_T *prEventDumpMem,
struct ICAP_INFO_T *prIcap);
int32_t GetIQData(struct ADAPTER *prAdapter,
int32_t **prIQAry, uint32_t *prDataLen, uint32_t u4IQ,
uint32_t u4GetWf1);
#if CFG_SUPPORT_TX_BF
void nicCmdEventPfmuDataRead(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
void nicCmdEventPfmuTagRead(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
#endif /* CFG_SUPPORT_TX_BF */
#if CFG_SUPPORT_MU_MIMO
void nicCmdEventGetQd(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
void nicCmdEventGetCalcLq(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
void nicCmdEventGetCalcInitMcs(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
#endif /* CFG_SUPPORT_MU_MIMO */
#endif /* CFG_SUPPORT_QA_TOOL */
#if CFG_SUPPORT_CAL_RESULT_BACKUP_TO_HOST
void nicCmdEventQueryCalBackupV2(IN struct ADAPTER
*prAdapter, IN struct CMD_INFO *prCmdInfo,
IN uint8_t *pucEventBuf);
#endif
#if 0
void nicEventQueryMemDump(IN struct ADAPTER *prAdapter,
IN uint8_t *pucEventBuf);
#endif
void nicCmdEventQueryMemDump(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
void nicCmdEventQuerySwCtrlRead(IN struct ADAPTER
*prAdapter, IN struct CMD_INFO *prCmdInfo,
IN uint8_t *pucEventBuf);
void nicCmdEventQueryChipConfig(IN struct ADAPTER
*prAdapter, IN struct CMD_INFO *prCmdInfo,
IN uint8_t *pucEventBuf);
void nicCmdEventQueryRfTestATInfo(IN struct ADAPTER
*prAdapter, IN struct CMD_INFO *prCmdInfo,
IN uint8_t *pucEventBuf);
void nicCmdEventSetCommon(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
void nicCmdEventSetDisassociate(IN struct ADAPTER
*prAdapter, IN struct CMD_INFO *prCmdInfo,
IN uint8_t *pucEventBuf);
void nicCmdEventSetIpAddress(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
void nicCmdEventQueryLinkQuality(IN struct ADAPTER
*prAdapter, IN struct CMD_INFO *prCmdInfo,
IN uint8_t *pucEventBuf);
void nicCmdEventQueryLinkSpeed(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
void nicCmdEventQueryStatistics(IN struct ADAPTER
*prAdapter, IN struct CMD_INFO *prCmdInfo,
IN uint8_t *pucEventBuf);
void nicCmdEventEnterRfTest(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
void nicCmdEventLeaveRfTest(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
void nicCmdEventQueryMcastAddr(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
void nicCmdEventQueryEepromRead(IN struct ADAPTER
*prAdapter, IN struct CMD_INFO *prCmdInfo,
IN uint8_t *pucEventBuf);
void nicCmdEventSetMediaStreamMode(IN struct ADAPTER
*prAdapter, IN struct CMD_INFO *prCmdInfo,
IN uint8_t *pucEventBuf);
void nicCmdEventSetStopSchedScan(IN struct ADAPTER
*prAdapter, IN struct CMD_INFO *prCmdInfo,
IN uint8_t *pucEventBuf);
/* Statistics responder */
void nicCmdEventQueryXmitOk(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
void nicCmdEventQueryRecvOk(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
void nicCmdEventQueryXmitError(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
void nicCmdEventQueryRecvError(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
void nicCmdEventQueryRecvNoBuffer(IN struct ADAPTER
*prAdapter, IN struct CMD_INFO *prCmdInfo,
IN uint8_t *pucEventBuf);
void nicCmdEventQueryRecvCrcError(IN struct ADAPTER
*prAdapter, IN struct CMD_INFO *prCmdInfo,
IN uint8_t *pucEventBuf);
void nicCmdEventQueryRecvErrorAlignment(IN struct ADAPTER
*prAdapter, IN struct CMD_INFO *prCmdInfo,
IN uint8_t *pucEventBuf);
void nicCmdEventQueryXmitOneCollision(IN struct ADAPTER
*prAdapter, IN struct CMD_INFO *prCmdInfo,
IN uint8_t *pucEventBuf);
void nicCmdEventQueryXmitMoreCollisions(IN struct ADAPTER
*prAdapter, IN struct CMD_INFO *prCmdInfo,
IN uint8_t *pucEventBuf);
void nicCmdEventQueryXmitMaxCollisions(IN struct ADAPTER
*prAdapter, IN struct CMD_INFO *prCmdInfo,
IN uint8_t *pucEventBuf);
/* for timeout check */
void nicOidCmdTimeoutCommon(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo);
void nicCmdTimeoutCommon(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo);
void nicOidCmdEnterRFTestTimeout(IN struct ADAPTER
*prAdapter, IN struct CMD_INFO *prCmdInfo);
#if CFG_SUPPORT_BUILD_DATE_CODE
void nicCmdEventBuildDateCode(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
#endif
void nicCmdEventQueryStaStatistics(IN struct ADAPTER
*prAdapter, IN struct CMD_INFO *prCmdInfo,
IN uint8_t *pucEventBuf);
void nicCmdEventQueryBugReport(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
#if CFG_AUTO_CHANNEL_SEL_SUPPORT
/* 4 Auto Channel Selection */
void nicCmdEventQueryLteSafeChn(IN struct ADAPTER
*prAdapter, IN struct CMD_INFO *prCmdInfo,
IN uint8_t *pucEventBuf);
#endif
#if CFG_SUPPORT_BATCH_SCAN
void nicCmdEventBatchScanResult(IN struct ADAPTER
*prAdapter, IN struct CMD_INFO *prCmdInfo,
IN uint8_t *pucEventBuf);
#endif
#if CFG_SUPPORT_ADVANCE_CONTROL
void nicCmdEventQueryAdvCtrl(IN struct ADAPTER
*prAdapter, IN struct CMD_INFO *prCmdInfo,
IN uint8_t *pucEventBuf);
#endif
void nicEventRddPulseDump(IN struct ADAPTER *prAdapter,
IN uint8_t *pucEventBuf);
#if (CFG_SUPPORT_TXPOWER_INFO == 1)
void nicCmdEventQueryTxPowerInfo(IN struct ADAPTER
*prAdapter, IN struct CMD_INFO *prCmdInfo,
IN uint8_t *pucEventBuf);
#endif
void nicCmdEventQueryWlanInfo(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
void nicCmdEventQueryMibInfo(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
void nicCmdEventQueryNicCapabilityV2(IN struct ADAPTER
*prAdapter, IN uint8_t *pucEventBuf);
uint32_t nicCmdEventQueryNicTxResource(IN struct ADAPTER
*prAdapter, IN uint8_t *pucEventBuf);
uint32_t nicCmdEventQueryNicEfuseAddr(IN struct ADAPTER
*prAdapter, IN uint8_t *pucEventBuf);
uint32_t nicCmdEventQueryNicCoexFeature(IN struct ADAPTER
*prAdapter, IN uint8_t *pucEventBuf);
#if CFG_TCP_IP_CHKSUM_OFFLOAD
uint32_t nicCmdEventQueryNicCsumOffload(IN struct ADAPTER
*prAdapter, IN uint8_t *pucEventBuf);
#endif
uint32_t nicCfgChipCapHwVersion(IN struct ADAPTER
*prAdapter, IN uint8_t *pucEventBuf);
uint32_t nicCfgChipCapSwVersion(IN struct ADAPTER
*prAdapter, IN uint8_t *pucEventBuf);
uint32_t nicCfgChipCapMacAddr(IN struct ADAPTER *prAdapter,
IN uint8_t *pucEventBuf);
uint32_t nicCfgChipCapPhyCap(IN struct ADAPTER *prAdapter,
IN uint8_t *pucEventBuf);
uint32_t nicCfgChipCapMacCap(IN struct ADAPTER *prAdapter,
IN uint8_t *pucEventBuf);
uint32_t nicCfgChipCapFrameBufCap(IN struct ADAPTER
*prAdapter, IN uint8_t *pucEventBuf);
uint32_t nicCfgChipCapBeamformCap(IN struct ADAPTER
*prAdapter, IN uint8_t *pucEventBuf);
uint32_t nicCfgChipCapLocationCap(IN struct ADAPTER
*prAdapter, IN uint8_t *pucEventBuf);
uint32_t nicCfgChipCapMuMimoCap(IN struct ADAPTER
*prAdapter, IN uint8_t *pucEventBuf);
uint32_t nicCfgChipCapBufferModeInfo(IN struct ADAPTER
*prAdapter, IN uint8_t *pucEventBuf);
void nicExtEventICapIQData(IN struct ADAPTER *prAdapter,
IN uint8_t *pucEventBuf);
void nicExtEventQueryMemDump(IN struct ADAPTER *prAdapter,
IN uint8_t *pucEventBuf);
void nicEventLinkQuality(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventLayer0ExtMagic(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventMicErrorInfo(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventScanDone(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventSchedScanDone(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventSleepyNotify(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventBtOverWifi(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventStatistics(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventWlanInfo(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventMibInfo(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventIpiInfo(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventBeaconTimeout(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventUpdateNoaParams(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventStaAgingTimeout(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventApObssStatus(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventRoamingStatus(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventSendDeauth(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventUpdateRddStatus(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventUpdateBwcsStatus(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventUpdateBcmDebug(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventAddPkeyDone(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventIcapDone(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
#if CFG_SUPPORT_CAL_RESULT_BACKUP_TO_HOST
void nicEventCalAllDone(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
#endif
void nicEventDebugMsg(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventTdls(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventRssiMonitor(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventDumpMem(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventAssertDump(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventLmacSerReset(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventHifCtrl(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventRddSendPulse(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
void nicEventUpdateCoexPhyrate(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
uint32_t nicEventQueryTxResource_v1(IN struct ADAPTER
*prAdapter, IN uint8_t *pucEventBuf);
uint32_t nicEventQueryTxResourceEntry(IN struct ADAPTER
*prAdapter, IN uint8_t *pucEventBuf);
uint32_t nicEventQueryTxResource(IN struct ADAPTER
*prAdapter, IN uint8_t *pucEventBuf);
#if CFG_SUPPORT_ANT_DIV
void nicCmdEventAntDiv(IN struct ADAPTER
*prAdapter, IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
#endif
#if (CFG_WOW_SUPPORT == 1)
void nicEventWakeUpReason(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
#endif
void nicCmdEventQueryCnmInfo(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
void nicEventCnmInfo(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
#if CFG_SUPPORT_REPLAY_DETECTION
void nicCmdEventSetAddKey(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
void nicOidCmdTimeoutSetAddKey(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo);
void nicEventGetGtkDataSync(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
#endif
void nicCmdEventGetTxPwrTbl(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo,
IN uint8_t *pucEventBuf);
#ifdef CFG_GET_TEMPURATURE
void nicCmdEventGetTemperature(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo,
IN uint8_t *pucEventBuf);
#endif
#if (CFG_SUPPORT_GET_MCS_INFO == 1)
void nicCmdEventQueryTxMcsInfo(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
void nicEventTxMcsInfo(IN struct ADAPTER *prAdapter,
IN struct WIFI_EVENT *prEvent);
#endif
#ifdef CFG_SUPPORT_TIME_MEASURE
void nicCmdEventGetTmReport(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo,
IN uint8_t *pucEventBuf);
#endif
#if (CFG_SUPPORT_TSF_SYNC == 1)
void nicCmdEventLatchTSF(IN struct ADAPTER *prAdapter,
IN struct CMD_INFO *prCmdInfo, IN uint8_t *pucEventBuf);
#endif
/*******************************************************************************
* F U N C T I O N S
*******************************************************************************
*/
#endif /* _NIC_CMD_EVENT_H */