summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorMichael Bestas <mkbestas@lineageos.org>2020-11-15 21:14:11 +0200
committerMichael Bestas <mkbestas@lineageos.org>2020-11-15 21:14:11 +0200
commitb51e75fd75f836588cdb8ca62020c26a951ed25c (patch)
tree2e3a7b89f0a15c97afbb7b70de8bf3c217131417 /drivers
parent3ec01a2c96a97c500fed84a64f43aba609b9b1f5 (diff)
parent12514daf02b3feac945ec882c8d70aa40f8be17f (diff)
Merge tag 'LA.UM.7.2.r1-09400-sdm660.0' of https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/fw-api into lineage-17.1-caf-msm8998
* tag 'LA.UM.7.2.r1-09400-sdm660.0' of https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/fw-api: fw-api: CL 9110018 - update fw common interface files fw-api: CL 9079230 - update fw common interface files fw-api: CL 9070306 - update fw common interface files fw-api: CL 9068648 - update fw common interface files fw-api: CL 9052539 - update fw common interface files fw-api: CL 9043991 - update fw common interface files fw-api: CL 9029062 - update fw common interface files fw-api: CL 9020007 - update fw common interface files fw-api: CL 8969207 - update fw common interface files fw-api: CL 8968673 - update fw common interface files fw-api: CL 8955754 - update fw common interface files fw-api: CL 8955096 - update fw common interface files fw-api: CL 8912889 - update fw common interface files fw-api: CL 8900976 - update fw common interface files fw-api: CL 8893572 - update fw common interface files fw-api: CL 8890559 - update fw common interface files fw-api: CL 8876590 - update fw common interface files fw-api: CL 8874163 - update fw common interface files fw-api: CL 8866928 - update fw common interface files fw-api: CL 8856123 - update fw common interface files fw-api: CL 8854908 - update fw common interface files fw-api: CL 8854881 - update fw common interface files fw-api: CL 8847485 - update fw common interface files fw-api: CL 8837732 - update fw common interface files fw-api: CL 8812402 - update fw common interface files fw-api: CL 8804310 - update fw common interface files fw-api: CL 8790961 - update fw common interface files fw-api: CL 8790927 - update fw common interface files fw-api: CL 8776823 - update fw common interface files fw-api: CL 8762856 - update fw common interface files fw-api: CL 8749246 - update fw common interface files fw-api: CL 8748543 - update fw common interface files fw-api: CL 8700774 - update fw common interface files fw-api: CL 8669899 - update fw common interface files fw-api: CL 8647982 - update fw common interface files fw-api: CL 8595725 - update fw common interface files fw-api: CL 8499894 - update fw common interface files fw-api: CL 8485353 - update fw common interface files fw-api: CL 8469425 - update fw common interface files fw-api: CL 8452279 - update fw common interface files fw-api: CL 8452276 - update fw common interface files fw-api: CL 8441602 - update fw common interface files fw-api: CL 8413004 - update fw common interface files fw-api: CL 8388967 - update fw common interface files fw-api: CL 8359323 - update fw common interface files fw-api: CL 8347123 - update fw common interface files fw-api: CL 8346800 - update fw common interface files fw-api: CL 8315141 - update fw common interface files fw-api: CL 8295923 - update fw common interface files Change-Id: Ief6cba4fed4f6968a383064dc380ebd704fc3c4f
Diffstat (limited to 'drivers')
-rw-r--r--drivers/staging/fw-api/fw/htt.h1
-rw-r--r--drivers/staging/fw-api/fw/htt_ppdu_stats.h166
-rw-r--r--drivers/staging/fw-api/fw/htt_stats.h201
-rwxr-xr-xdrivers/staging/fw-api/fw/wlan_module_ids.h1
-rwxr-xr-xdrivers/staging/fw-api/fw/wmi_services.h5
-rwxr-xr-xdrivers/staging/fw-api/fw/wmi_tlv_defs.h109
-rwxr-xr-xdrivers/staging/fw-api/fw/wmi_unified.h756
-rwxr-xr-xdrivers/staging/fw-api/fw/wmi_version.h2
8 files changed, 1171 insertions, 70 deletions
diff --git a/drivers/staging/fw-api/fw/htt.h b/drivers/staging/fw-api/fw/htt.h
index 74102299d56f..a46c61859fef 100644
--- a/drivers/staging/fw-api/fw/htt.h
+++ b/drivers/staging/fw-api/fw/htt.h
@@ -2223,6 +2223,7 @@ typedef enum {
HTT_TX_FW2WBM_REINJECT_REASON_MCAST,
HTT_TX_FW2WBM_REINJECT_REASON_ARP,
HTT_TX_FW2WBM_REINJECT_REASON_DHCP,
+ HTT_TX_FW2WBM_REINJECT_REASON_FLOW_CONTROL,
HTT_TX_FW2WBM_REINJECT_REASON_MAX,
} htt_tx_fw2wbm_reinject_reason_t;
diff --git a/drivers/staging/fw-api/fw/htt_ppdu_stats.h b/drivers/staging/fw-api/fw/htt_ppdu_stats.h
index 253a534ba836..1b7ea8beacb5 100644
--- a/drivers/staging/fw-api/fw/htt_ppdu_stats.h
+++ b/drivers/staging/fw-api/fw/htt_ppdu_stats.h
@@ -32,20 +32,20 @@
#define HTT_BA_64_BIT_MAP_SIZE_DWORDS 2
#define HTT_BA_256_BIT_MAP_SIZE_DWORDS 8
enum htt_ppdu_stats_tlv_tag {
- HTT_PPDU_STATS_COMMON_TLV,
- HTT_PPDU_STATS_USR_COMMON_TLV,
- HTT_PPDU_STATS_USR_RATE_TLV,
- HTT_PPDU_STATS_USR_MPDU_ENQ_BITMAP_64_TLV,
- HTT_PPDU_STATS_USR_MPDU_ENQ_BITMAP_256_TLV,
- HTT_PPDU_STATS_SCH_CMD_STATUS_TLV,
- HTT_PPDU_STATS_USR_COMPLTN_COMMON_TLV,
- HTT_PPDU_STATS_USR_COMPLTN_BA_BITMAP_64_TLV,
- HTT_PPDU_STATS_USR_COMPLTN_BA_BITMAP_256_TLV,
- HTT_PPDU_STATS_USR_COMPLTN_ACK_BA_STATUS_TLV,
- HTT_PPDU_STATS_USR_COMPLTN_FLUSH_TLV,
- HTT_PPDU_STATS_USR_COMMON_ARRAY_TLV,
- HTT_PPDU_STATS_INFO_TLV,
- HTT_PPDU_STATS_TX_MGMTCTRL_PAYLOAD_TLV,
+ HTT_PPDU_STATS_COMMON_TLV, /* htt_ppdu_stats_common_tlv */
+ HTT_PPDU_STATS_USR_COMMON_TLV, /* htt_ppdu_stats_user_common_tlv */
+ HTT_PPDU_STATS_USR_RATE_TLV, /* htt_ppdu_stats_user_rate_tlv */
+ HTT_PPDU_STATS_USR_MPDU_ENQ_BITMAP_64_TLV, /* htt_ppdu_stats_enq_mpdu_bitmap_64_tlv */
+ HTT_PPDU_STATS_USR_MPDU_ENQ_BITMAP_256_TLV, /* htt_ppdu_stats_enq_mpdu_bitmap_256_tlv */
+ HTT_PPDU_STATS_SCH_CMD_STATUS_TLV, /* htt_ppdu_stats_sch_cmd_tlv_v */
+ HTT_PPDU_STATS_USR_COMPLTN_COMMON_TLV, /* htt_ppdu_stats_user_cmpltn_common_tlv */
+ HTT_PPDU_STATS_USR_COMPLTN_BA_BITMAP_64_TLV, /* htt_ppdu_stats_user_cmpltn_ba_bitmap_64_tlv */
+ HTT_PPDU_STATS_USR_COMPLTN_BA_BITMAP_256_TLV, /* htt_ppdu_stats_user_cmpltn_ba_bitmap_256_tlv */
+ HTT_PPDU_STATS_USR_COMPLTN_ACK_BA_STATUS_TLV, /* htt_ppdu_stats_user_cmpltn_ack_ba_status_tlv */
+ HTT_PPDU_STATS_USR_COMPLTN_FLUSH_TLV, /* htt_ppdu_stats_flush_tlv */
+ HTT_PPDU_STATS_USR_COMMON_ARRAY_TLV, /* htt_ppdu_stats_usr_common_array_tlv_v */
+ HTT_PPDU_STATS_INFO_TLV, /* htt_ppdu_stats_info */
+ HTT_PPDU_STATS_TX_MGMTCTRL_PAYLOAD_TLV, /* htt_ppdu_stats_tx_mgmtctrl_payload_tlv */
/* New TLV's are added above to this line */
HTT_PPDU_STATS_MAX_TAG,
@@ -412,6 +412,19 @@ enum HTT_PPDU_STATS_BW {
};
typedef enum HTT_PPDU_STATS_BW HTT_PPDU_STATS_BW;
+#define HTT_PPDU_STATS_COMMON_TLV_BW_M 0x000f0000
+#define HTT_PPDU_STATS_COMMON_TLV_BW_S 16
+
+#define HTT_PPDU_STATS_COMMON_TLV_BW_GET(_var) \
+ (((_var) & HTT_PPDU_STATS_COMMON_TLV_BW_M) >> \
+ HTT_PPDU_STATS_COMMON_TLV_BW_S)
+
+#define HTT_PPDU_STATS_COMMON_TLV_BW_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_COMMON_TLV_BW, _val); \
+ ((_var) |= ((_val) << HTT_PPDU_STATS_COMMON_TLV_BW_S)); \
+ } while (0)
+
enum HTT_PPDU_STATS_SEQ_TYPE {
HTT_SEQTYPE_UNSPECIFIED = 0,
HTT_SEQTYPE_SU = 1,
@@ -426,8 +439,8 @@ enum HTT_PPDU_STATS_SEQ_TYPE {
};
typedef enum HTT_PPDU_STATS_SEQ_TYPE HTT_PPDU_STATS_SEQ_TYPE;
-#define HTT_PPDU_STATS_COMMON_TLV_PPDU_SEQ_TYPE_M 0x00ff0000
-#define HTT_PPDU_STATS_COMMON_TLV_PPDU_SEQ_TYPE_S 16
+#define HTT_PPDU_STATS_COMMON_TLV_PPDU_SEQ_TYPE_M 0x0ff00000
+#define HTT_PPDU_STATS_COMMON_TLV_PPDU_SEQ_TYPE_S 20
#define HTT_PPDU_STATS_COMMON_TLV_PPDU_SEQ_TYPE_GET(_var) \
(((_var) & HTT_PPDU_STATS_COMMON_TLV_PPDU_SEQ_TYPE_M) >> \
@@ -439,17 +452,22 @@ typedef enum HTT_PPDU_STATS_SEQ_TYPE HTT_PPDU_STATS_SEQ_TYPE;
((_var) |= ((_val) << HTT_PPDU_STATS_COMMON_TLV_PPDU_SEQ_TYPE_S)); \
} while (0)
-#define HTT_PPDU_STATS_COMMON_TLV_BW_M 0x000f0000
-#define HTT_PPDU_STATS_COMMON_TLV_BW_S 16
+/*
+ * MPROT_TYPE enum values: refer to enum
+ * pcu_ppdu_setup_init__medium_prot_type__e
+ * defined in tlv_enum.h
+ */
+#define HTT_PPDU_STATS_COMMON_TLV_MPROT_TYPE_M 0xf0000000
+#define HTT_PPDU_STATS_COMMON_TLV_MPROT_TYPE_S 28
-#define HTT_PPDU_STATS_COMMON_TLV_BW_GET(_var) \
- (((_var) & HTT_PPDU_STATS_COMMON_TLV_BW_M) >> \
- HTT_PPDU_STATS_COMMON_TLV_BW_S)
+#define HTT_PPDU_STATS_COMMON_TLV_MPROT_TYPE_GET(_var) \
+ (((_var) & HTT_PPDU_STATS_COMMON_TLV_MPROT_TYPE_M) >> \
+ HTT_PPDU_STATS_COMMON_TLV_MPROT_TYPE_S)
-#define HTT_PPDU_STATS_COMMON_TLV_BW_SET(_var, _val) \
+#define HTT_PPDU_STATS_COMMON_TLV_MPROT_TYPE_SET(_var, _val) \
do { \
- HTT_CHECK_SET_VAL(HTT_PPDU_STATS_COMMON_TLV_BW, _val); \
- ((_var) |= ((_val) << HTT_PPDU_STATS_COMMON_TLV_BW_S)); \
+ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_COMMON_TLV_MPROT_TYPE, _val); \
+ ((_var) |= ((_val) << HTT_PPDU_STATS_COMMON_TLV_BW_S)); \
} while (0)
#define HTT_PPDU_STATS_COMMON_TLV_PHY_MODE_M 0x0000ffff
@@ -478,6 +496,45 @@ typedef enum HTT_PPDU_STATS_SEQ_TYPE HTT_PPDU_STATS_SEQ_TYPE;
((_var) |= ((_val) << HTT_PPDU_STATS_COMMON_TLV_CHAN_MHZ_S)); \
} while (0)
+#define HTT_PPDU_STATS_COMMON_TLV_PHY_PPDU_TX_TIME_US_M 0x0000ffff
+#define HTT_PPDU_STATS_COMMON_TLV_PHY_PPDU_TX_TIME_US_S 0
+
+#define HTT_PPDU_STATS_COMMON_TLV_PHY_PPDU_TX_TIME_US_GET(_var) \
+ (((_var) & HTT_PPDU_STATS_COMMON_TLV_PHY_PPDU_TX_TIME_US_M) >> \
+ HTT_PPDU_STATS_COMMON_TLV_PHY_PPDU_TX_TIME_US_S )
+
+#define HTT_PPDU_STATS_COMMON_TLV_PHY_PPDU_TX_TIME_US_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_COMMON_TLV_PHY_PPDU_TX_TIME_US, _val); \
+ ((_var) |= ((_val) << HTT_PPDU_STATS_COMMON_TLV_PHY_PPDU_TX_TIME_US_S)); \
+ } while (0)
+
+#define HTT_PPDU_STATS_COMMON_TLV_NUM_UL_EXPECTED_USERS_M 0x00ff0000
+#define HTT_PPDU_STATS_COMMON_TLV_NUM_UL_EXPECTED_USERS_S 16
+
+#define HTT_PPDU_STATS_COMMON_TLV_NUM_UL_EXPECTED_USERS_GET(_var) \
+ (((_var) & HTT_PPDU_STATS_COMMON_TLV_NUM_UL_EXPECTED_USERS_M) >> \
+ HTT_PPDU_STATS_COMMON_TLV_NUM_UL_EXPECTED_USERS_S)
+
+#define HTT_PPDU_STATS_COMMON_TLV_NUM_UL_EXPECTED_USERS_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_COMMON_TLV_NUM_UL_EXPECTED_USERS, _val); \
+ ((_var) |= ((_val) << HTT_PPDU_STATS_COMMON_TLV_NUM_UL_EXPECTED_USERS_S)); \
+ } while(0);
+
+#define HTT_PPDU_STATS_COMMON_TLV_BEAM_CHANGE_M 0x01000000
+#define HTT_PPDU_STATS_COMMON_TLV_BEAM_CHANGE_S 24
+
+#define HTT_PPDU_STATS_COMMON_TLV_BEAM_CHANGE_GET(_var) \
+ (((_var) & HTT_PPDU_STATS_COMMON_TLV_BEAM_CHANGE_M) >> \
+ HTT_PPDU_STATS_COMMON_TLV_BEAM_CHANGE_S)
+
+#define HTT_PPDU_STATS_COMMON_TLV_BEAM_CHANGE_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_COMMON_TLV_BEAM_CHANGE, _val); \
+ ((_var) |= ((_val) << HTT_PPDU_STATS_COMMON_TLV_BEAM_CHANGE_S)); \
+ } while (0)
+
typedef struct {
htt_tlv_hdr_t tlv_hdr;
@@ -498,17 +555,18 @@ typedef struct {
* BIT [ 15: 8] :- queue_type - HTT_TX_QUEUE_TYPE
* BIT [ 19: 16] :- bw - HTT_PPDU_STATS_BW
* BIT [ 27: 20] :- ppdu_seq_type - HTT_PPDU_STATS_SEQ_TYPE
- * BIT [ 31: 28] :- reserved
+ * BIT [ 31: 28] :- mprot_type
*/
union {
A_UINT32 bw__queue_type__frame_type;
A_UINT32 ppdu_seq_type__bw__queue_type__frame_type;
+ A_UINT32 mprot_type__ppdu_seq_type__bw__queue_type__frame_type;
struct {
A_UINT32 frame_type: 8,
queue_type: 8,
bw: 4,
ppdu_seq_type: 8,
- reserved0: 4;
+ mprot_type: 4;
};
};
A_UINT32 chain_mask;
@@ -562,6 +620,38 @@ typedef struct {
* latency.
*/
A_UINT32 txfrm_delta_time_us;
+
+ /*
+ * The phy_ppdu_tx_time_us reports the time it took to transmit
+ * a PPDU by itself
+ * BIT [15 : 0] - phy_ppdu_tx_time_us reports the time it took to
+ * transmit by itself (not including response time)
+ * BIT [23 : 16] - num_ul_expected_users reports the number of users
+ * that are expected to respond to this transmission
+ * BIT [24 : 24] - beam_change reports the beam forming pattern
+ * between non-HE and HE portion.
+ * If we apply TxBF starting from legacy preamble,
+ * then beam_change = 0.
+ * If we apply TxBF only starting from HE portion,
+ * then beam_change = 1.
+ * BIT [31 : 25] - reserved
+ */
+ union {
+ A_UINT32 reserved__ppdu_tx_time_us;
+ A_UINT32 reserved__num_ul_expected_users__ppdu_tx_time_us;
+ struct {
+ A_UINT32 phy_ppdu_tx_time_us: 16,
+ num_ul_expected_users: 8,
+ beam_change: 1,
+ reserved1: 7;
+ };
+ };
+ /* ppdu_start_tstmp_u32_us:
+ * Upper 32 bits of the PPDU start timestamp.
+ * This field can be combined with the ppdu_start_tstmp_us field's
+ * lower 32 bits of the PPDU start timestamp to form a 64-bit timestamp.
+ */
+ A_UINT32 ppdu_start_tstmp_u32_us;
} htt_ppdu_stats_common_tlv;
#define HTT_PPDU_STATS_USER_COMMON_TLV_TID_NUM_M 0x000000ff
@@ -655,6 +745,19 @@ typedef struct {
((_var) |= ((_val) << HTT_PPDU_STATS_USER_COMMON_TLV_DELAYED_BA_S)); \
} while (0)
+#define HTT_PPDU_STATS_USER_COMMON_TLV_NUM_FRAMES_M 0xffff0000
+#define HTT_PPDU_STATS_USER_COMMON_TLV_NUM_FRAMES_S 16
+
+#define HTT_PPDU_STATS_USER_COMMON_TLV_NUM_FRAMES_GET(_var) \
+ (((_var) & HTT_PPDU_STATS_USER_COMMON_TLV_NUM_FRAMES_M) >> \
+ HTT_PPDU_STATS_USER_COMMON_TLV_NUM_FRAMES_S)
+
+#define HTT_PPDU_STATS_USER_COMMON_TLV_NUM_FRAMES_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_COMMON_TLV_NUM_FRAMES, _val); \
+ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_COMMON_TLV_NUM_FRAMES_S)); \
+ } while (0)
+
#define HTT_PPDU_STATS_USER_COMMON_TLV_FRAME_CTRL_M 0x0000ffff
#define HTT_PPDU_STATS_USER_COMMON_TLV_FRAME_CTRL_S 0
@@ -700,8 +803,9 @@ typedef struct {
/* BIT [ 0 : 0] :- mcast
* BIT [ 9 : 1] :- mpdus_tried
* BIT [ 13: 10] :- bw - HTT_PPDU_STATS_BW
- * BIT [ 14: 14] : - delayed_ba
- * BIT [ 31: 15] :- rsvd
+ * BIT [ 14: 14] :- delayed_ba
+ * BIT [ 15: 15] :- rsvd
+ * BIT [ 31: 16] :- num_frames - num of MSDUs + num of MPDUs
*/
union {
A_UINT32 bw__mpdus_tried__mcast;
@@ -710,7 +814,8 @@ typedef struct {
mpdus_tried: 9,
bw: 4,
delayed_ba: 1,
- reserved0: 17;
+ reserved0: 1,
+ num_frames: 16;
};
};
@@ -755,6 +860,9 @@ typedef struct {
is_standalone: 1,
is_buffer_addr_info_valid: 1,
reserved1: 13;
+
+ /* qdepth bytes : Contains Number of bytes of TIDQ depth */
+ A_UINT32 qdepth_bytes;
} htt_ppdu_stats_user_common_tlv;
#define HTT_PPDU_STATS_USER_RATE_TLV_TID_NUM_M 0x000000ff
diff --git a/drivers/staging/fw-api/fw/htt_stats.h b/drivers/staging/fw-api/fw/htt_stats.h
index c2f4e8d648dc..71449a68b6ee 100644
--- a/drivers/staging/fw-api/fw/htt_stats.h
+++ b/drivers/staging/fw-api/fw/htt_stats.h
@@ -319,6 +319,25 @@ enum htt_dbg_ext_stats_type {
*/
HTT_DBG_EXT_STATS_FSE_RX = 28,
+ /* HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS
+ * PARAMS:
+ * - config_param0: [Bit0] : [1] for mac_addr based request
+ * - config_param1: [Bit31 : Bit0] mac_addr31to0
+ * - config_param2: [Bit15 : Bit0] mac_addr47to32
+ * RESP MSG:
+ * - htt_ctrl_path_txrx_stats_t
+ */
+ HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS = 29,
+
+ /* HTT_DBG_EXT_STATS_PDEV_RX_RATE_EXT
+ * PARAMS:
+ * - No Params
+ * RESP MSG:
+ * - htt_rx_pdev_rate_ext_stats_t
+ */
+ HTT_DBG_EXT_STATS_PDEV_RX_RATE_EXT = 30,
+
+
/* keep this last */
HTT_DBG_NUM_EXT_STATS = 256,
};
@@ -340,6 +359,8 @@ enum htt_dbg_ext_stats_type {
((_var) |= ((_val) << HTT_DBG_EXT_PEER_STATS_RESET_S)); \
} while (0)
+#define HTT_STATS_SUBTYPE_MAX 16
+
typedef enum {
HTT_STATS_TX_PDEV_CMN_TAG = 0, /* htt_tx_pdev_stats_cmn_tlv */
HTT_STATS_TX_PDEV_UNDERRUN_TAG = 1, /* htt_tx_pdev_stats_urrn_tlv_v */
@@ -441,6 +462,9 @@ typedef enum {
HTT_STATS_RX_PDEV_UL_MUMIMO_TRIG_STATS_TAG = 97, /* htt_rx_pdev_ul_mumimo_trig_stats_tlv */
HTT_STATS_RX_FSE_STATS_TAG = 98, /* htt_rx_fse_stats_tlv */
HTT_STATS_PEER_SCHED_STATS_TAG = 99, /* htt_peer_sched_stats_tlv */
+ HTT_STATS_SCHED_TXQ_SUPERCYCLE_TRIGGER_TAG = 100, /* htt_sched_txq_supercycle_triggers_tlv_v */
+ HTT_STATS_PEER_CTRL_PATH_TXRX_STATS_TAG = 101, /* htt_peer_ctrl_path_txrx_stats_tlv */
+ HTT_STATS_PDEV_CTRL_PATH_TX_STATS_TAG = 102, /* htt_pdev_ctrl_path_tx_stats_tlv */
HTT_STATS_MAX_TAG,
} htt_tlv_tag_t;
@@ -509,6 +533,9 @@ typedef enum {
#define HTT_TX_PDEV_MAX_SIFS_BURST_STATS 9
#define HTT_TX_PDEV_MAX_SIFS_BURST_HIST_STATS 10
#define HTT_TX_PDEV_MAX_PHY_ERR_STATS 18
+/* HTT_TX_PDEV_SCHED_TX_MODE_MAX:
+ * DEPRECATED - num sched tx mode max is 8
+ */
#define HTT_TX_PDEV_SCHED_TX_MODE_MAX 4
#define HTT_TX_PDEV_NUM_SCHED_ORDER_LOG 20
@@ -672,6 +699,10 @@ typedef struct {
A_UINT32 next_seq_cancel;
/* Num of times fes offset was misaligned */
A_UINT32 fes_offsets_err_cnt;
+ /* Num of times peer blacklisted for MU-MIMO transmission */
+ A_UINT32 num_mu_peer_blacklisted;
+ /* Num of times mu_ofdma seq posted */
+ A_UINT32 mu_ofdma_seq_posted;
} htt_tx_pdev_stats_cmn_tlv;
#define HTT_TX_PDEV_STATS_URRN_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems))
@@ -738,6 +769,12 @@ typedef struct {
A_UINT32 tried_mpdu_cnt_hist[1]; /* HTT_TX_PDEV_TRIED_MPDU_CNT_HIST */
} htt_tx_pdev_stats_tried_mpdu_cnt_hist_tlv_v;
+typedef struct {
+ htt_tlv_hdr_t tlv_hdr;
+ /* Num MGMT MPDU transmitted by the target */
+ A_UINT32 fw_tx_mgmt_subtype[HTT_STATS_SUBTYPE_MAX];
+} htt_pdev_ctrl_path_tx_stats_tlv_v;
+
/* STATS_TYPE: HTT_DBG_EXT_STATS_PDEV_TX
* TLV_TAGS:
* - HTT_STATS_TX_PDEV_CMN_TAG
@@ -748,6 +785,7 @@ typedef struct {
* - HTT_STATS_TX_PDEV_SIFS_HIST_TAG
* - HTT_STATS_TX_PDEV_TX_PPDU_STATS_TAG
* - HTT_STATS_TX_PDEV_TRIED_MPDU_CNT_HIST_TAG
+ * - HTT_STATS_PDEV_CTRL_PATH_TX_STATS_TAG
*/
/* NOTE:
* This structure is for documentation, and cannot be safely used directly.
@@ -762,6 +800,7 @@ typedef struct _htt_tx_pdev_stats {
htt_tx_pdev_stats_sifs_hist_tlv_v sifs_hist_tlv;
htt_tx_pdev_stats_tx_ppdu_stats_tlv_v tx_su_tlv;
htt_tx_pdev_stats_tried_mpdu_cnt_hist_tlv_v tried_mpdu_cnt_hist_tlv;
+ htt_pdev_ctrl_path_tx_stats_tlv_v ctrl_path_tx_tlv;
} htt_tx_pdev_stats_t;
/* == SOC ERROR STATS == */
@@ -1216,7 +1255,7 @@ typedef enum {
HTT_STATS_PREAM_COUNT,
} HTT_STATS_PREAM_TYPE;
-#define HTT_TX_PEER_STATS_NUM_MCS_COUNTERS 12
+#define HTT_TX_PEER_STATS_NUM_MCS_COUNTERS 12 /* 0-11 */
/* HTT_TX_PEER_STATS_NUM_GI_COUNTERS:
* GI Index 0: WHAL_GI_800
* GI Index 1: WHAL_GI_400
@@ -1239,6 +1278,7 @@ typedef enum {
* bw index 7 (bw ext index 3): rssi_ext80_high20_chain0
*/
#define HTT_RX_PEER_STATS_NUM_BW_EXT_COUNTERS 4
+#define HTT_RX_PDEV_STATS_NUM_BW_EXT_COUNTERS 4
#define HTT_TX_PEER_STATS_NUM_SPATIAL_STREAMS 8
#define HTT_TX_PEER_STATS_NUM_PREAMBLE_TYPES HTT_STATS_PREAM_COUNT
@@ -1267,7 +1307,7 @@ typedef struct _htt_tx_peer_rate_stats_tlv {
A_UINT32 tx_dcm[HTT_TX_PEER_STATS_NUM_DCM_COUNTERS];
} htt_tx_peer_rate_stats_tlv;
-#define HTT_RX_PEER_STATS_NUM_MCS_COUNTERS 12
+#define HTT_RX_PEER_STATS_NUM_MCS_COUNTERS 12 /* 0-11 */
#define HTT_RX_PEER_STATS_NUM_GI_COUNTERS 4
#define HTT_RX_PEER_STATS_NUM_DCM_COUNTERS 5
#define HTT_RX_PEER_STATS_NUM_BW_COUNTERS 4
@@ -1353,9 +1393,24 @@ typedef struct {
/* Peer RX time */
A_UINT32 peer_rx_active_dur_us_low;
A_UINT32 peer_rx_active_dur_us_high;
+ A_UINT32 peer_curr_rate_kbps;
} htt_peer_sched_stats_tlv;
/* config_param0 */
+
+#define HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS_IS_MAC_ADDR_M 0x00000001
+#define HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS_IS_MAC_ADDR_S 0
+
+#define HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS_IS_MAC_ADDR_GET(_var) \
+ (((_var) & HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS_IS_MAC_ADDR_M) >> \
+ HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS_IS_MAC_ADDR_S)
+
+#define HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS_IS_peer_MAC_ADDR_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS_IS_MAC_ADDR, _val); \
+ ((_var) |= ((_val) << HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS_IS_MAC_ADDR_S)); \
+ } while (0)
+
#define HTT_DBG_EXT_STATS_PEER_INFO_IS_MAC_ADDR_M 0x00000001
#define HTT_DBG_EXT_STATS_PEER_INFO_IS_MAC_ADDR_S 0
@@ -1692,6 +1747,11 @@ typedef struct _htt_tx_hwq_stats {
((_var) |= ((_val) << HTT_TX_SELFGEN_CMN_STATS_MAC_ID_S)); \
} while (0)
+#define HTT_TX_PDEV_STATS_NUM_AC_MUMIMO_USER_STATS 4
+#define HTT_TX_PDEV_STATS_NUM_AX_MUMIMO_USER_STATS 8
+#define HTT_TX_PDEV_STATS_NUM_OFDMA_USER_STATS 74
+#define HTT_TX_PDEV_STATS_NUM_UL_MUMIMO_USER_STATS 8
+
typedef struct {
htt_tlv_hdr_t tlv_hdr;
@@ -1776,6 +1836,7 @@ typedef struct {
A_UINT32 ax_mu_bar_trigger_err;
A_UINT32 ax_mu_rts_trigger_err;
A_UINT32 ax_ulmumimo_trigger_err;
+ A_UINT32 ax_mu_mimo_brp_err_num_cbf_received[HTT_TX_PDEV_STATS_NUM_AX_MUMIMO_USER_STATS];
} htt_tx_selfgen_ax_err_stats_tlv;
/* STATS_TYPE : HTT_DBG_EXT_STATS_TX_SELFGEN_INFO
@@ -1804,11 +1865,6 @@ typedef struct {
/* == TX MU STATS == */
-#define HTT_TX_PDEV_STATS_NUM_AC_MUMIMO_USER_STATS 4
-#define HTT_TX_PDEV_STATS_NUM_AX_MUMIMO_USER_STATS 8
-#define HTT_TX_PDEV_STATS_NUM_OFDMA_USER_STATS 74
-#define HTT_TX_PDEV_STATS_NUM_UL_MUMIMO_USER_STATS 8
-
typedef struct {
htt_tlv_hdr_t tlv_hdr;
/* mu-mimo sw sched cmd stats */
@@ -1919,7 +1975,7 @@ typedef struct {
typedef struct {
htt_tlv_hdr_t tlv_hdr;
/* Scheduler command posted per tx_mode */
- A_UINT32 sched_cmd_posted[1]; /* HTT_TX_PDEV_SCHED_TX_MODE_MAX */
+ A_UINT32 sched_cmd_posted[1/* length = num tx modes */];
} htt_sched_txq_cmd_posted_tlv_v;
#define HTT_SCHED_TXQ_CMD_REAPED_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems))
@@ -1928,7 +1984,7 @@ typedef struct {
typedef struct {
htt_tlv_hdr_t tlv_hdr;
/* Scheduler command reaped per tx_mode */
- A_UINT32 sched_cmd_reaped[1]; /* HTT_TX_PDEV_SCHED_TX_MODE_MAX */
+ A_UINT32 sched_cmd_reaped[1/* length = num tx modes */];
} htt_sched_txq_cmd_reaped_tlv_v;
#define HTT_SCHED_TXQ_SCHED_ORDER_SU_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems))
@@ -1955,16 +2011,29 @@ typedef enum {
HTT_SCHED_TID_SKIP_SECOND_SU_SCHEDULE, /* Skip tid from 2nd SU schedule when any of the following flag is set
WAL_TX_TID(SEND_BAR | TQM_MPDU_STATE_VALID | SEND_QOS_NULL | TQM_NOTIFY_MPDU | SENDN_PENDING) */
HTT_SCHED_TID_SKIP_CMD_SLOT_NOT_AVAIL, /* Skip the tid when command slot is not available */
- HTT_SCHED_TID_SKIP_NO_ENQ, /* Skip the tid when num_frames is zero with g_disable_remove_tid as true */
+ HTT_SCHED_TID_SKIP_NO_DATA, /* Skip tid without data */
+ HTT_SCHED_TID_SKIP_NO_ENQ = HTT_SCHED_TID_SKIP_NO_DATA, /* deprecated old name */
HTT_SCHED_TID_SKIP_LOW_ENQ, /* Skip the tid when enqueue is low */
HTT_SCHED_TID_SKIP_PAUSED, /* Skipping the paused tid(sendn-frames) */
- HTT_SCHED_TID_SKIP_UL, /* UL tid skip */
+ HTT_SCHED_TID_SKIP_UL_RESP, /* skip UL response tid */
+ HTT_SCHED_TID_SKIP_UL = HTT_SCHED_TID_SKIP_UL_RESP, /* deprecated old name */
HTT_SCHED_TID_REMOVE_PAUSED, /* Removing the paused tid when number of sendn frames is zero */
HTT_SCHED_TID_REMOVE_NO_ENQ, /* Remove tid with zero queue depth */
- HTT_SCHED_TID_REMOVE_UL, /* UL tid remove */
+ HTT_SCHED_TID_REMOVE_UL_RESP, /* Remove tid UL response */
+ HTT_SCHED_TID_REMOVE_UL = HTT_SCHED_TID_REMOVE_UL_RESP, /* deprecated old name */
HTT_SCHED_TID_QUERY, /* Moving to next user and adding tid in prepend list when qstats update is pending */
HTT_SCHED_TID_SU_ONLY, /* Tid is eligible and TX_SCHED_SU_ONLY is true */
HTT_SCHED_TID_ELIGIBLE, /* Tid is eligible for scheduling */
+ HTT_SCHED_TID_SKIP_EXCEPT_EAPOL, /* skip tid except eapol */
+ HTT_SCHED_TID_SU_LOW_PRI_ONLY, /* su low priority tid only */
+ HTT_SCHED_TID_SKIP_SOUND_IN_PROGRESS, /* skip tid sound in progress */
+ HTT_SCHED_TID_SKIP_NO_UL_DATA, /* skip ul tid when no ul data */
+ HTT_SCHED_TID_REMOVE_UL_NOT_CAPABLE, /* Remove tid that are not UL capable */
+ HTT_SCHED_TID_UL_ELIGIBLE, /* Tid is eligible for UL scheduling */
+ HTT_SCHED_TID_FALLBACK_TO_PREV_DECISION, /* Fall back to previous decision */
+ HTT_SCHED_TID_SKIP_PEER_ALREADY_IN_TXQ, /* skip tid, peer is already available in the txq */
+ HTT_SCHED_TID_SKIP_DELAY_UL_SCHED, /* skip tid delay UL schedule */
+
HTT_SCHED_INELIGIBILITY_MAX,
} htt_sched_txq_sched_ineligibility_tlv_enum;
@@ -1977,6 +2046,35 @@ typedef struct {
A_UINT32 sched_ineligibility[1]; /* indexed by htt_sched_txq_sched_ineligibility_tlv_enum */
} htt_sched_txq_sched_ineligibility_tlv_v;
+typedef enum {
+ HTT_SCHED_SUPERCYCLE_TRIGGER_NONE = 0, /* Supercycle not triggerd */
+ HTT_SCHED_SUPERCYCLE_TRIGGER_FORCED, /* forced supercycle trigger */
+ HTT_SCHED_SUPERCYCLE_TRIGGER_LESS_NUM_TIDQ_ENTRIES, /* Num tidq entries is less than max_client threshold */
+ HTT_SCHED_SUPERCYCLE_TRIGGER_LESS_NUM_ACTIVE_TIDS, /* Num active tids is less than max_client threshold */
+ HTT_SCHED_SUPERCYCLE_TRIGGER_MAX_ITR_REACHED, /* max sched iteration reached */
+ HTT_SCHED_SUPERCYCLE_TRIGGER_DUR_THRESHOLD_REACHED, /* duration threshold reached */
+ HTT_SCHED_SUPERCYCLE_TRIGGER_TWT_TRIGGER, /* TWT supercycle trigger */
+ HTT_SCHED_SUPERCYCLE_TRIGGER_MAX,
+} htt_sched_txq_supercycle_triggers_tlv_enum;
+
+#define HTT_SCHED_TXQ_SUPERCYCLE_TRIGGERS_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems))
+
+/* NOTE: Variable length TLV, use length spec to infer array size */
+typedef struct {
+ htt_tlv_hdr_t tlv_hdr;
+ /*
+ * supercycle_triggers[] is a histogram that counts the number of
+ * occurrences of each different reason for a transmit scheduler
+ * supercycle to be triggered.
+ * The htt_sched_txq_supercycle_triggers_tlv_enum is used to index
+ * supercycle_triggers[], e.g. supercycle_triggers[1] holds the number
+ * of times a supercycle has been forced.
+ * These supercycle trigger counts are not automatically reset, but
+ * are reset upon request.
+ */
+ A_UINT32 supercycle_triggers[1/*HTT_SCHED_SUPERCYCLE_TRIGGER_MAX*/];
+} htt_sched_txq_supercycle_triggers_tlv_v;
+
#define HTT_TX_PDEV_STATS_SCHED_PER_TXQ_MAC_ID_M 0x000000ff
#define HTT_TX_PDEV_STATS_SCHED_PER_TXQ_MAC_ID_S 0
@@ -2101,6 +2199,7 @@ typedef struct {
* - HTT_STATS_SCHED_TXQ_CMD_REAPED_TAG
* - HTT_STATS_SCHED_TXQ_SCHED_ORDER_SU_TAG
* - HTT_STATS_SCHED_TXQ_SCHED_INELIGIBILITY_TAG
+ * - HTT_STATS_SCHED_TXQ_SUPERCYCLE_TRIGGER_TAG
*/
/* NOTE:
* This structure is for documentation, and cannot be safely used directly.
@@ -2114,6 +2213,7 @@ typedef struct {
htt_sched_txq_cmd_reaped_tlv_v cmd_reaped_tlv;
htt_sched_txq_sched_order_su_tlv_v sched_order_su_tlv;
htt_sched_txq_sched_ineligibility_tlv_v sched_ineligibility_tlv;
+ htt_sched_txq_supercycle_triggers_tlv_v sched_supercycle_trigger_tlv;
} txq[1];
} htt_stats_tx_sched_t;
@@ -3008,7 +3108,7 @@ typedef struct {
/* == PDEV TX RATE CTRL STATS == */
-#define HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS 12
+#define HTT_TX_PDEV_STATS_NUM_MCS_COUNTERS 12 /* 0-11 */
#define HTT_TX_PDEV_STATS_NUM_GI_COUNTERS 4
#define HTT_TX_PDEV_STATS_NUM_DCM_COUNTERS 5
#define HTT_TX_PDEV_STATS_NUM_BW_COUNTERS 4
@@ -3129,7 +3229,7 @@ typedef struct {
#define HTT_RX_PDEV_STATS_NUM_LEGACY_CCK_STATS 4
#define HTT_RX_PDEV_STATS_NUM_LEGACY_OFDM_STATS 8
-#define HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS 12
+#define HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS 12 /* 0-11 */
#define HTT_RX_PDEV_STATS_NUM_GI_COUNTERS 4
#define HTT_RX_PDEV_STATS_NUM_DCM_COUNTERS 5
#define HTT_RX_PDEV_STATS_NUM_BW_COUNTERS 4
@@ -3260,6 +3360,14 @@ typedef struct {
A_UINT32 rx_ulmumimo_mpdu_fail[HTT_RX_PDEV_MAX_ULMUMIMO_NUM_USER]; /* mpdu level */
A_UINT32 rx_ulofdma_non_data_nusers[HTT_RX_PDEV_MAX_OFDMA_NUM_USER];
A_UINT32 rx_ulofdma_data_nusers[HTT_RX_PDEV_MAX_OFDMA_NUM_USER];
+
+ /*
+ * NOTE - this TLV is already large enough that it causes the HTT message
+ * carrying it to be nearly at the message size limit that applies to
+ * many targets/hosts.
+ * No further fields should be added to this TLV without very careful
+ * review to ensure the size increase is acceptable.
+ */
} htt_rx_pdev_rate_stats_tlv;
/* STATS_TYPE : HTT_DBG_EXT_STATS_PDEV_RX_RATE
@@ -3274,6 +3382,26 @@ typedef struct {
htt_rx_pdev_rate_stats_tlv rate_tlv;
} htt_rx_pdev_rate_stats_t;
+typedef struct {
+ htt_tlv_hdr_t tlv_hdr;
+ A_UINT8 rssi_chain_ext[HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS][HTT_RX_PDEV_STATS_NUM_BW_EXT_COUNTERS]; /* units = dB above noise floor */
+ A_INT8 rx_per_chain_rssi_ext_in_dbm[HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS][HTT_RX_PDEV_STATS_NUM_BW_EXT_COUNTERS];
+ A_INT32 rssi_mcast_in_dbm; /* rx mcast signal strength value in dBm unit */
+ A_INT32 rssi_mgmt_in_dbm; /* rx mgmt packet signal Strength value in dBm unit */
+} htt_rx_pdev_rate_ext_stats_tlv;
+
+/* STATS_TYPE : HTT_DBG_EXT_STATS_PDEV_RX_RATE_EXT
+ * TLV_TAGS:
+ * - HTT_STATS_RX_PDEV_RATE_EXT_STATS_TAG
+ */
+/* NOTE:
+ * This structure is for documentation, and cannot be safely used directly.
+ * Instead, use the constituent TLV structures to fill/parse.
+ */
+typedef struct {
+ htt_rx_pdev_rate_ext_stats_tlv rate_tlv;
+} htt_rx_pdev_rate_ext_stats_t;
+
#define HTT_STATS_CMN_MAC_ID_M 0x000000ff
#define HTT_STATS_CMN_MAC_ID_S 0
@@ -3311,7 +3439,6 @@ typedef struct {
*/
A_UINT32 rx_ulofdma_data_ru_size_ppdu[HTT_RX_PDEV_STATS_NUM_RU_SIZE_160MHZ_CNTRS]; /* ppdu level */
A_UINT32 rx_ulofdma_non_data_ru_size_ppdu[HTT_RX_PDEV_STATS_NUM_RU_SIZE_160MHZ_CNTRS]; /* ppdu level */
-
} htt_rx_pdev_ul_trigger_stats_tlv;
/* STATS_TYPE : HTT_DBG_EXT_STATS_PDEV_UL_TRIG_STATS
@@ -3535,8 +3662,6 @@ typedef struct {
((_var) |= ((_val) << HTT_RX_PDEV_FW_STATS_MAC_ID_S)); \
} while (0)
-#define HTT_STATS_SUBTYPE_MAX 16
-
typedef struct {
htt_tlv_hdr_t tlv_hdr;
@@ -3640,6 +3765,16 @@ typedef struct {
A_UINT32 rx_recovery_reset_cnt;
} htt_rx_pdev_fw_stats_tlv;
+typedef struct {
+ htt_tlv_hdr_t tlv_hdr;
+ /* peer mac address */
+ htt_mac_addr peer_mac_addr;
+ /* Num of tx mgmt frames with subtype on peer level */
+ A_UINT32 peer_tx_mgmt_subtype[HTT_STATS_SUBTYPE_MAX];
+ /* Num of rx mgmt frames with subtype on peer level */
+ A_UINT32 peer_rx_mgmt_subtype[HTT_STATS_SUBTYPE_MAX];
+} htt_peer_ctrl_path_txrx_stats_tlv;
+
#define HTT_STATS_PHY_ERR_MAX 43
typedef struct {
@@ -3741,6 +3876,15 @@ typedef struct {
htt_rx_pdev_fw_stats_phy_err_tlv fw_stats_phy_err_tlv;
} htt_rx_pdev_stats_t;
+/* STATS_TYPE : HTT_DBG_EXT_PEER_CTRL_PATH_TXRX_STATS
+ * TLV_TAGS:
+ * - HTT_STATS_PEER_CTRL_PATH_TXRX_STATS_TAG
+ *
+ */
+typedef struct {
+ htt_peer_ctrl_path_txrx_stats_tlv peer_ctrl_path_txrx_stats_tlv;
+} htt_ctrl_path_txrx_stats_t;
+
#define HTT_PDEV_CCA_STATS_TX_FRAME_INFO_PRESENT (0x1)
#define HTT_PDEV_CCA_STATS_RX_FRAME_INFO_PRESENT (0x2)
#define HTT_PDEV_CCA_STATS_RX_CLEAR_INFO_PRESENT (0x4)
@@ -4070,11 +4214,24 @@ typedef struct {
A_UINT32 num_sr_tx_transmissions; /* CORRECTED - use this one */
A_UINT32 num_sr_tx_tranmissions; /* DEPRECATED - has typo in name */
};
- /* num_sr_rx_ge_pd_rssi_thr
- * counter of rx from other BSS for which RSSI was above the
- * packet-detection threshold specified for enabling spatial reuse
- */
- A_UINT32 num_sr_rx_ge_pd_rssi_thr;
+ union {
+ /*
+ * Count the number of times the RSSI from an other-BSS signal
+ * is below the spatial reuse power threshold, thus providing an
+ * opportunity for spatial reuse since OBSS interference will be
+ * inconsequential.
+ */
+ A_UINT32 num_spatial_reuse_opportunities;
+
+ /* DEPRECATED: num_sr_rx_ge_pd_rssi_thr
+ * This old name has been deprecated because it does not
+ * clearly and accurately reflect the information stored within
+ * this field.
+ * Use the new name (num_spatial_reuse_opportunities) instead of
+ * the deprecated old name (num_sr_rx_ge_pd_rssi_thr).
+ */
+ A_UINT32 num_sr_rx_ge_pd_rssi_thr;
+ };
} htt_pdev_obss_pd_stats_tlv;
/* NOTE:
diff --git a/drivers/staging/fw-api/fw/wlan_module_ids.h b/drivers/staging/fw-api/fw/wlan_module_ids.h
index 1bb9d0196a69..9fbcb28b49aa 100755
--- a/drivers/staging/fw-api/fw/wlan_module_ids.h
+++ b/drivers/staging/fw-api/fw/wlan_module_ids.h
@@ -114,6 +114,7 @@ typedef enum {
WLAN_MODULE_HPCS_PULSE, /* 0x50 */
WLAN_MODULE_DTF, /* 0x51 */ /* Deterministic Test Framework */
WLAN_MODULE_QUIET_IE, /* 0x52 */
+ WLAN_MODULE_SHMEM_MGR, /* 0x53 */
WLAN_MODULE_ID_MAX,
WLAN_MODULE_ID_INVALID = WLAN_MODULE_ID_MAX,
diff --git a/drivers/staging/fw-api/fw/wmi_services.h b/drivers/staging/fw-api/fw/wmi_services.h
index e695fa87b44a..3effc68be2f2 100755
--- a/drivers/staging/fw-api/fw/wmi_services.h
+++ b/drivers/staging/fw-api/fw/wmi_services.h
@@ -415,6 +415,11 @@ typedef enum {
WMI_SERVICE_QMI_STATS_SUPPORT = 225,
WMI_SERVICE_CFR_CAPTURE_FILTER_SUPPORT = 226, /* Indicate FW Supports Channel Frequency Response (CFR) via WMI_CFR_CAPTURE_FILTER_CMDID */
WMI_SERVICE_STA_BSS_MAX_IDLE_TIME = 227, /* Indicate FW supports BSS Max Idle time feature via WMI_VDEV_BSS_MAX_IDLE_TIME_CMDID */
+ WMI_SERVICE_BIP_CIPHER_SUPPORT = 228, /* FW supports new BIP_CIPHER suites (WMI_CIPHER_BIP_xxx) */
+ WMI_SERVICE_BW_165MHZ_SUPPORT = 229, /* Indicate FW supports bandwidth 165MHz (i.e. 6 GHz in addition to 2.4 and 5) */
+ WMI_SERVICE_BW_RESTRICTED_80P80_SUPPORT = WMI_SERVICE_BW_165MHZ_SUPPORT,
+ WMI_SERVICE_NAN_NDI_SAP_SAP_SCC_SUPPORT = 230, /* Support SAP + SAP + NAN discovery + NDI concurrency in SCC mode */
+ WMI_SERVICE_NAN_VDEV_SUPPORT = 231, /* indicates firmware is dependent on host to create NAN vdev */
/******* ADD NEW SERVICES HERE *******/
diff --git a/drivers/staging/fw-api/fw/wmi_tlv_defs.h b/drivers/staging/fw-api/fw/wmi_tlv_defs.h
index d5929cdc6dc6..2dafe02d9ade 100755
--- a/drivers/staging/fw-api/fw/wmi_tlv_defs.h
+++ b/drivers/staging/fw-api/fw/wmi_tlv_defs.h
@@ -1012,6 +1012,29 @@ typedef enum {
WMITLV_TAG_STRUC_wmi_cfr_filter_group_config,
WMITLV_TAG_STRUC_wmi_fd_tmpl_cmd_fixed_param,
WMITLV_TAG_STRUC_wmi_vdev_bss_max_idle_time_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_atf_ssid_grp_request_fixed_param,
+ WMITLV_TAG_STRUC_wmi_atf_group_info,
+ WMITLV_TAG_STRUC_wmi_atf_grp_wmm_ac_cfg_request_fixed_param,
+ WMITLV_TAG_STRUC_wmi_atf_group_wmm_ac_info,
+ WMITLV_TAG_STRUC_wmi_peer_atf_ext_request_fixed_param,
+ WMITLV_TAG_STRUC_wmi_peer_atf_ext_info,
+ WMITLV_TAG_STRUC_wmi_get_channel_ani_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_channel_ani_info_tlv_param,
+ WMITLV_TAG_STRUC_wmi_get_channel_ani_event_fixed_param,
+ WMITLV_TAG_STRUC_wmi_oem_data_event_fixed_param,
+ WMITLV_TAG_STRUC_wmi_peer_config_vlan_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_roam_stats_event_fixed_param,
+ WMITLV_TAG_STRUC_wmi_roam_trigger_reason_tlv_param,
+ WMITLV_TAG_STRUC_wmi_roam_scan_info_tlv_param,
+ WMITLV_TAG_STRUC_wmi_roam_scan_channel_info_tlv_param,
+ WMITLV_TAG_STRUC_wmi_roam_ap_info_tlv_param,
+ WMITLV_TAG_STRUC_wmi_roam_result_tlv_param,
+ WMITLV_TAG_STRUC_wmi_roam_neighbor_report_info_tlv_param,
+ WMITLV_TAG_STRUC_wmi_roam_neighbor_report_channel_info_tlv_param,
+ WMITLV_TAG_STRUC_wmi_set_ocl_cmd_fixed_param,
+ WMITLV_TAG_STRUC_wmi_audio_aggr_set_group_auto_rate,
+ WMITLV_TAG_STRUC_wmi_audio_aggr_set_group_probe,
+ WMITLV_TAG_STRUC_wmi_audio_aggr_update_sta_group_info,
} WMITLV_TAG_ID;
/*
@@ -1424,9 +1447,18 @@ typedef enum {
OP(WMI_AUDIO_AGGR_DEL_GROUP_CMDID) \
OP(WMI_AUDIO_AGGR_SET_GROUP_RATE_CMDID) \
OP(WMI_AUDIO_AGGR_SET_GROUP_RETRY_CMDID) \
+ OP(WMI_AUDIO_AGGR_UPDATE_STA_GROUP_INFO_CMDID) \
OP(WMI_CFR_CAPTURE_FILTER_CMDID) \
OP(WMI_FD_TMPL_CMDID) \
OP(WMI_VDEV_BSS_MAX_IDLE_TIME_CMDID) \
+ OP(WMI_ATF_SSID_GROUPING_REQUEST_CMDID) \
+ OP(WMI_ATF_GROUP_WMM_AC_CONFIG_REQUEST_CMDID) \
+ OP(WMI_PEER_ATF_EXT_REQUEST_CMDID) \
+ OP(WMI_GET_CHANNEL_ANI_CMDID) \
+ OP(WMI_PEER_CONFIG_VLAN_CMDID) \
+ OP(WMI_SET_OCL_CMDID) \
+ OP(WMI_AUDIO_AGGR_SET_GROUP_AUTO_RATE_CMDID) \
+ OP(WMI_AUDIO_AGGR_SET_GROUP_PROBE_CMDID) \
/* add new CMD_LIST elements above this line */
@@ -1615,6 +1647,7 @@ typedef enum {
OP(WMI_PDEV_DIV_RSSI_ANTID_EVENTID) \
OP(WMI_OEM_DMA_RING_CFG_RSP_EVENTID) \
OP(WMI_OEM_DMA_BUF_RELEASE_EVENTID) \
+ OP(WMI_OEM_DATA_EVENTID) \
OP(WMI_PDEV_BSS_CHAN_INFO_EVENTID) \
OP(WMI_UNIT_TEST_EVENTID) \
OP(WMI_PDEV_UPDATE_CTLTABLE_EVENTID) \
@@ -1663,6 +1696,8 @@ typedef enum {
OP(WMI_ROAM_PREAUTH_START_EVENTID) \
OP(WMI_GET_ELNA_BYPASS_EVENTID) \
OP(WMI_ROAM_PMKID_REQUEST_EVENTID) \
+ OP(WMI_GET_CHANNEL_ANI_EVENTID) \
+ OP(WMI_ROAM_STATS_EVENTID) \
/* add new EVT_LIST elements above this line */
@@ -3774,6 +3809,24 @@ WMITLV_CREATE_PARAM_STRUC(WMI_FWTEST_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_atf_peer_info, peer_info, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_PEER_ATF_REQUEST_CMDID);
+/* ATF Group Request commands */
+#define WMITLV_TABLE_WMI_ATF_SSID_GROUPING_REQUEST_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_atf_ssid_grp_request_fixed_param, wmi_atf_ssid_grp_request_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_atf_group_info, group_info, WMITLV_SIZE_VAR)
+WMITLV_CREATE_PARAM_STRUC(WMI_ATF_SSID_GROUPING_REQUEST_CMDID);
+
+/* ATF Group WMM Request commands */
+#define WMITLV_TABLE_WMI_ATF_GROUP_WMM_AC_CONFIG_REQUEST_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_atf_grp_wmm_ac_cfg_request_fixed_param, wmi_atf_grp_wmm_ac_cfg_request_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_atf_group_wmm_ac_info, group_info, WMITLV_SIZE_VAR)
+WMITLV_CREATE_PARAM_STRUC(WMI_ATF_GROUP_WMM_AC_CONFIG_REQUEST_CMDID);
+
+/* ATF EXTENDED PEER REQUEST commands */
+#define WMITLV_TABLE_WMI_PEER_ATF_EXT_REQUEST_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_atf_ext_request_fixed_param, wmi_peer_atf_ext_request_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_peer_atf_ext_info, peer_ext_info, WMITLV_SIZE_VAR)
+WMITLV_CREATE_PARAM_STRUC(WMI_PEER_ATF_EXT_REQUEST_CMDID);
+
/* enable/disable and set the periodicity of periodic channel stats */
#define WMITLV_TABLE_WMI_SET_PERIODIC_CHANNEL_STATS_CONFIG_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_set_periodic_channel_stats_config_fixed_param, wmi_set_periodic_channel_stats_config_fixed_param, fixed_param, WMITLV_SIZE_FIX)
@@ -3950,6 +4003,18 @@ WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_BTM_CONFIG_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_wlm_config_cmd_fixed_param, wmi_wlm_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_WLM_CONFIG_CMDID);
+/* Event to send roam stats */
+#define WMITLV_TABLE_WMI_ROAM_STATS_EVENTID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_stats_event_fixed_param, wmi_roam_stats_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_trigger_reason, roam_trigger_reason, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_scan_info, roam_scan_info, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_scan_channel_info, roam_scan_chan_info, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_ap_info, roam_ap_info, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_result, roam_result, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_neighbor_report_info, roam_neighbor_report_info, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_neighbor_report_channel_info, roam_neighbor_report_chan_info, WMITLV_SIZE_VAR)
+WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_STATS_EVENTID);
+
/* Motion detection cmd */
#define WMITLV_TABLE_WMI_MOTION_DET_CONFIG_PARAM_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_motion_det_config_params_cmd_fixed_param, wmi_motion_det_config_params_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
@@ -4108,6 +4173,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_RAP_CONFIG_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, oem_data, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_OEM_DATA_CMDID);
+/* Set OCL cmd */
+#define WMITLV_TABLE_WMI_SET_OCL_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_set_ocl_cmd_fixed_param, wmi_set_ocl_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_SET_OCL_CMDID);
+
/* Set ELNA BYPASS cmd */
#define WMITLV_TABLE_WMI_SET_ELNA_BYPASS_CMDID(id,op,buf,len) \
WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_set_elna_bypass_cmd_fixed_param, wmi_set_elna_bypass_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
@@ -4118,6 +4188,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_SET_ELNA_BYPASS_CMDID);
WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_get_elna_bypass_cmd_fixed_param, wmi_get_elna_bypass_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_GET_ELNA_BYPASS_CMDID);
+/* Get channel ANI level cmd */
+#define WMITLV_TABLE_WMI_GET_CHANNEL_ANI_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_get_channel_ani_cmd_fixed_param, wmi_get_channel_ani_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, channel_list, WMITLV_SIZE_VAR)
+WMITLV_CREATE_PARAM_STRUC(WMI_GET_CHANNEL_ANI_CMDID);
+
/* Audio aggr config cmd */
#define WMITLV_TABLE_WMI_AUDIO_AGGR_ENABLE_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_audio_aggr_enable_cmd_fixed_param, wmi_audio_aggr_enable_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
@@ -4141,12 +4217,30 @@ WMITLV_CREATE_PARAM_STRUC(WMI_AUDIO_AGGR_SET_GROUP_RATE_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_audio_aggr_set_group_retry, wmi_audio_aggr_set_group_retry_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_AUDIO_AGGR_SET_GROUP_RETRY_CMDID);
+#define WMITLV_TABLE_WMI_AUDIO_AGGR_SET_GROUP_AUTO_RATE_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_audio_aggr_set_group_auto_rate, wmi_audio_aggr_set_group_auto_rate_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_AUDIO_AGGR_SET_GROUP_AUTO_RATE_CMDID);
+
+#define WMITLV_TABLE_WMI_AUDIO_AGGR_SET_GROUP_PROBE_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_audio_aggr_set_group_probe, wmi_audio_aggr_set_group_probe_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_AUDIO_AGGR_SET_GROUP_PROBE_CMDID);
+
+#define WMITLV_TABLE_WMI_AUDIO_AGGR_UPDATE_STA_GROUP_INFO_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_audio_aggr_update_sta_group_info, wmi_audio_aggr_update_sta_group_info_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_FIXED_STRUC, wmi_mac_addr, au_groups, WMITLV_SIZE_VAR)
+WMITLV_CREATE_PARAM_STRUC(WMI_AUDIO_AGGR_UPDATE_STA_GROUP_INFO_CMDID);
+
/* CFR Capture Filter cmd */
#define WMITLV_TABLE_WMI_CFR_CAPTURE_FILTER_CMDID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_cfr_capture_filter_cmd_fixed_param, wmi_cfr_capture_filter_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_cfr_filter_group_config, filter_group_config, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_CFR_CAPTURE_FILTER_CMDID);
+/* VLAN config */
+#define WMITLV_TABLE_WMI_PEER_CONFIG_VLAN_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_config_vlan_cmd_fixed_param, wmi_peer_config_vlan_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_PEER_CONFIG_VLAN_CMDID);
+
/************************** TLV definitions of WMI events *******************************/
@@ -4376,7 +4470,9 @@ WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_RX_EVENTID);
/* TBTT offset Event */
#define WMITLV_TABLE_WMI_TBTTOFFSET_UPDATE_EVENTID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_tbtt_offset_event_fixed_param, wmi_tbtt_offset_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
- WMITLV_FXAR(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, tbttoffset_list, WMITLV_SIZE_FIX, WMI_MAX_AP_VDEV)
+ WMITLV_FXAR(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, tbttoffset_list, WMITLV_SIZE_FIX, WMI_MAX_AP_VDEV) \
+ WMITLV_FXAR(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, tbtt_qtime_low_us_list, WMITLV_SIZE_FIX, WMI_MAX_AP_VDEV) \
+ WMITLV_FXAR(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, tbtt_qtime_high_us_list, WMITLV_SIZE_FIX, WMI_MAX_AP_VDEV)
WMITLV_CREATE_PARAM_STRUC(WMI_TBTTOFFSET_UPDATE_EVENTID);
/* TBTT EXT offset Event */
@@ -4598,6 +4694,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_OEM_RESPONSE_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_oem_dma_buf_release_entry, entries, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_OEM_DMA_BUF_RELEASE_EVENTID);
+/* oem data event */
+#define WMITLV_TABLE_WMI_OEM_DATA_EVENTID(id,op, buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_oem_data_event_fixed_param, wmi_oem_data_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, data, WMITLV_SIZE_VAR)
+WMITLV_CREATE_PARAM_STRUC(WMI_OEM_DATA_EVENTID);
+
/* HOST SWBA Event */
#define WMITLV_TABLE_WMI_HOST_SWBA_EVENTID(id,op,buf,len) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_host_swba_event_fixed_param, wmi_host_swba_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
@@ -5588,6 +5690,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_MGMT_OFFLOAD_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_get_elna_bypass_event_fixed_param, wmi_get_elna_bypass_event_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_GET_ELNA_BYPASS_EVENTID);
+/* channel ANI event */
+#define WMITLV_TABLE_WMI_GET_CHANNEL_ANI_EVENTID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_get_channel_ani_event_fixed_param, wmi_get_channel_ani_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_channel_ani_info_tlv_param, ani_info, WMITLV_SIZE_VAR)
+WMITLV_CREATE_PARAM_STRUC(WMI_GET_CHANNEL_ANI_EVENTID);
#ifdef __cplusplus
}
diff --git a/drivers/staging/fw-api/fw/wmi_unified.h b/drivers/staging/fw-api/fw/wmi_unified.h
index 58624016b3b2..acbda0108dd2 100755
--- a/drivers/staging/fw-api/fw/wmi_unified.h
+++ b/drivers/staging/fw-api/fw/wmi_unified.h
@@ -259,6 +259,7 @@ typedef enum {
WMI_GRP_HPCS_PULSE, /* 0x42 */
WMI_GRP_AUDIO, /* 0x43 */
WMI_GRP_CFR_CAPTURE, /* 0x44 */
+ WMI_GRP_ATM, /* 0x45 ATM (Air Time Management group) */
} WMI_GRP_ID;
#define WMI_CMD_GRP_START_ID(grp_id) (((grp_id) << 12) | 0x1)
@@ -586,6 +587,11 @@ typedef enum {
/** unmap response with peer ids */
WMI_PEER_UNMAP_RESPONSE_CMDID,
+ /** WMI command for per-peer configuration of VLAN header operations
+ * during TX and RX
+ */
+ WMI_PEER_CONFIG_VLAN_CMDID,
+
/* beacon/management specific commands */
@@ -997,6 +1003,10 @@ typedef enum {
WMI_SET_ELNA_BYPASS_CMDID,
/** get ELNA BYPASS status */
WMI_GET_ELNA_BYPASS_CMDID,
+ /** get ANI level of the channels */
+ WMI_GET_CHANNEL_ANI_CMDID,
+ /** set OCL (One Chain Listen) mode */
+ WMI_SET_OCL_CMDID,
/* Offload 11k related requests */
WMI_11K_OFFLOAD_REPORT_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_11K_OFFLOAD),
@@ -1254,9 +1264,20 @@ typedef enum {
WMI_AUDIO_AGGR_DEL_GROUP_CMDID,
WMI_AUDIO_AGGR_SET_GROUP_RATE_CMDID,
WMI_AUDIO_AGGR_SET_GROUP_RETRY_CMDID,
+ WMI_AUDIO_AGGR_SET_GROUP_AUTO_RATE_CMDID,
+ WMI_AUDIO_AGGR_SET_GROUP_PROBE_CMDID,
+ WMI_AUDIO_AGGR_UPDATE_STA_GROUP_INFO_CMDID,
/** WMI commands related to Channel Frequency Response Capture **/
WMI_CFR_CAPTURE_FILTER_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_CFR_CAPTURE),
+
+ /** WMI commands related to Air Time Management feature **/
+ /** ATF SSID GROUPING REQUEST command */
+ WMI_ATF_SSID_GROUPING_REQUEST_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_ATM),
+ /** WMM ATF Configuration for groups */
+ WMI_ATF_GROUP_WMM_AC_CONFIG_REQUEST_CMDID,
+ /** ATF Peer Extended Request command */
+ WMI_PEER_ATF_EXT_REQUEST_CMDID,
} WMI_CMD_ID;
typedef enum {
@@ -1558,6 +1579,8 @@ typedef enum {
WMI_ROAM_PREAUTH_START_EVENTID,
/** Roaming PMKID request event */
WMI_ROAM_PMKID_REQUEST_EVENTID,
+ /** roam stats */
+ WMI_ROAM_STATS_EVENTID,
/** P2P disc found */
WMI_P2P_DISC_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_P2P),
@@ -1763,6 +1786,9 @@ typedef enum {
/** event to get ELNA BYPASS status */
WMI_GET_ELNA_BYPASS_EVENTID,
+ /** event to report ANI level of the channels */
+ WMI_GET_CHANNEL_ANI_EVENTID,
+
/* GPIO Event */
WMI_GPIO_INPUT_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_GPIO),
/** upload H_CV info WMI event
@@ -1796,6 +1822,7 @@ typedef enum {
WMI_OEM_RESPONSE_EVENTID,
WMI_OEM_DMA_RING_CFG_RSP_EVENTID,
WMI_OEM_DMA_BUF_RELEASE_EVENTID,
+ WMI_OEM_DATA_EVENTID,
/* NAN Event */
WMI_NAN_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_NAN),
@@ -2159,6 +2186,20 @@ typedef enum {
*/
#define WMI_HE_MAX_MCS_4_SS_MASK(r,ss) ((3 & (r)) << (((ss) - 1) << 1))
+/*
+ * index ranges from 0 to 15, and is used for checking if MCS 12/13 is enabled
+ * for a particular NSS.
+ * The lower 8 bits (indices 0-7) within the 16 bits indicate MCS 12/13
+ * enablement for BW <= 80MHz; the upper 8 bits (indices 8-15) within
+ * the 16 bits indicate MCS 12/13 enablement for BW > 80MHz.
+ * The 16 bits for the index values are within the upper bits (bits 31:16)
+ * of a 32-bit word.
+ */
+#define WMI_HE_EXTRA_MCS_SS_GET(he_mcs_map_ext, index) \
+ WMI_GET_BITS(he_mcs_map_ext, 16 + index, 1)
+#define WMI_HE_EXTRA_MCS_SS_SET(he_mcs_map_ext, index, value) \
+ WMI_SET_BITS(he_mcs_map_ext, 16 + index, 1, value)
+
/* fragmentation support field value */
enum {
WMI_HE_FRAG_SUPPORT_LEVEL0, /* No Fragmentation support */
@@ -3392,6 +3433,27 @@ typedef struct {
* are used to read and write these bitfields.
*/
A_UINT32 msdu_flow_override_config1;
+
+ /** @brief flags2 - contains flags used for the following purposes:
+ * Configure 11ax uplink ofdma/MU-MIMO feature in FW, when chipsets
+ * are brought up in Repeater/STA mode.
+ *
+ * @details
+ * Bits 3:0
+ * Enable UL MU-OFDMA/MIMO for PDEVs WIFI0, WIFI1, WIFI2
+ * This flags should only be set when a pdev has STA VAP
+ * in repeater/self-organizing-network modes.
+ * E.g. to enable UL RESP for 5G and 2G radios, value shall be
+ * 0b00000000000000000000000000000011 = 0x3.
+ * Host shall use UCI config for a radio to populate this value,
+ * each radio entry shall have "config re_ul_resp 1" value set.
+ * Hence this can be configured dynamically.
+ *
+ * Refer to the below WMI_RSRC_CFG_FLAGS2_RE_ULRESP_PDEV_CFG_GET/SET
+ * macros.
+ * Bits 31:4 - Reserved
+ */
+ A_UINT32 flags2;
} wmi_resource_config;
#define WMI_MSDU_FLOW_AST_ENABLE_GET(msdu_flow_config0, ast_x) \
@@ -3576,6 +3638,11 @@ typedef struct {
#define WMI_RSRC_CFG_FLAG_BSS_MAX_IDLE_TIME_SUPPORT_GET(word32) \
WMI_RSRC_CFG_FLAG_GET((word32), BSS_MAX_IDLE_TIME_SUPPORT)
+#define WMI_RSRC_CFG_FLAGS2_RE_ULRESP_PDEV_CFG_GET(flags2, pdev_id) \
+ WMI_GET_BITS(flags2, pdev_id, 1)
+#define WMI_RSRC_CFG_FLAGS2_RE_ULRESP_PDEV_CFG_SET(flags2, pdev_id, value) \
+ WMI_SET_BITS(flags2, pdev_id, 1, value)
+
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_init_cmd_fixed_param */
@@ -3866,6 +3933,10 @@ typedef struct {
* as a passive channel
*/
A_UINT32 dwell_time_passive_6ghz;
+ /**
+ * Offset time is in milliseconds per channel.
+ */
+ A_UINT32 scan_start_offset;
/**
* TLV (tag length value) parameters follow the scan_cmd
@@ -5356,6 +5427,12 @@ typedef struct {
wmi_mac_addr base_macaddr;
} wmi_pdev_set_base_macaddr_cmd_fixed_param;
+
+enum wmi_spectral_scan_mode {
+ WMI_SPECTRAL_SCAN_NORMAL_MODE,
+ WMI_SPECTRAL_SCAN_AGILE_MODE,
+};
+
/*
* For now, the spectral configuration is global rather than
* per-vdev. The vdev is a placeholder and will be ignored
@@ -5382,6 +5459,14 @@ typedef struct {
A_UINT32 spectral_scan_bin_scale;
A_UINT32 spectral_scan_dBm_adj;
A_UINT32 spectral_scan_chn_mask;
+ /* See enum wmi_spectral_scan_mode */
+ A_UINT32 spectral_scan_mode;
+ /* agile span center frequency (MHz), 0 for normal scan*/
+ A_UINT32 spectral_scan_center_freq;
+ /* agile span primary channel frequency (MHz), 0 for normal scan*/
+ A_UINT32 spectral_scan_chan_freq;
+ /* agile scan bandwidth (20, 40, 80, 80+80, 160), enum wmi_channel_width */
+ A_UINT32 spectral_scan_chan_width;
} wmi_vdev_spectral_configure_cmd_fixed_param;
/*
@@ -5397,6 +5482,8 @@ typedef struct {
A_UINT32 trigger_cmd;
/* 0 - ignore; 1 - enable, 2 - disable */
A_UINT32 enable_cmd;
+ /* See enum wmi_spectral_scan_mode */
+ A_UINT32 spectral_scan_mode;
} wmi_vdev_spectral_enable_cmd_fixed_param;
typedef struct {
@@ -5467,8 +5554,10 @@ typedef enum {
WMI_CSA_IE_PRESENT = 0x00000001,
WMI_XCSA_IE_PRESENT = 0x00000002,
WMI_WBW_IE_PRESENT = 0x00000004,
- WMI_CSWARP_IE_PRESENT = 0x00000008,
+ WMI_CSWRAP_IE_PRESENT = 0x00000008,
+ WMI_CSWARP_IE_PRESENT = WMI_CSWRAP_IE_PRESENT, /* deprecated: typo */
WMI_QSBW_ISE_PRESENT = 0x00000010,
+ WMI_CSWRAP_IE_EXTENDED_PRESENT = 0x00000020, /* Added bitmask to verify if the additional information is filled in */
} WMI_CSA_EVENT_IES_PRESENT_FLAG;
/* wmi CSA receive event from beacon frame */
@@ -5482,9 +5571,23 @@ typedef struct {
A_UINT32 csa_ie[2];
A_UINT32 xcsa_ie[2];
A_UINT32 wb_ie[2];
- A_UINT32 cswarp_ie;
+ union {
+ A_UINT32 cswrap_ie; /* use this */
+ A_UINT32 cswarp_ie; /* deprecated (typo) */
+ };
A_UINT32 ies_present_flag; /* WMI_CSA_EVENT_IES_PRESENT_FLAG */
A_UINT32 qsbw_ise;
+ /* cswrap_ie_extended:
+ * Stores full IEEE80211_ELEMID_CHAN_SWITCH_WRAP information element.
+ * The first two octets host the Element ID and Length fields.
+ * The IE comprises New Country Subelement (optional and max length 6),
+ * Wide Bandwidth Channel Subelement (optional and max length 5) and
+ * New Transmit Power Envelope subelement (optional and max length 7)
+ * The 4-byte words within cswrap_ie_extended[] use little endian ordering;
+ * the first octect of the IE resides in bits 7:0 of cswrap_ie_extended[0],
+ * the second octet resides in bits 15:8 of cswrap_ie_extended[0] and so on.
+ */
+ A_UINT32 cswrap_ie_extended[5];
} wmi_csa_event_fixed_param;
typedef enum {
@@ -6378,6 +6481,7 @@ typedef struct {
typedef struct {
A_UINT32 tlv_header; /* WMITLV_TAG_STRUC_wmi_pdev_bss_chan_info_request_fixed_param */
A_UINT32 param; /* 1 = read only, 2= read and clear */
+ A_UINT32 pdev_id; /* pdev_id for identifying mac */
} wmi_pdev_bss_chan_info_request_fixed_param;
typedef struct {
@@ -6544,6 +6648,14 @@ typedef struct {
* the noise floor.
*/
A_UINT32 ack_rssi;
+ /* xmit rate in kbps */
+ A_UINT32 tx_rate;
+ /* phy mode WLAN_PHY_MODE of the channel defined in wlan_defs.h */
+ A_UINT32 peer_phymode;
+ A_UINT32 retries_count;
+ /* current 64 bit TSF timestamp */
+ A_UINT32 tx_tsf_l32;
+ A_UINT32 tx_tsf_u32;
} wmi_mgmt_tx_compl_event_fixed_param;
typedef struct {
@@ -6666,6 +6778,7 @@ typedef struct {
A_UINT32 rx_bss_cycle_count_low; /* low 31 bits of rx cycle cnt for my bss in 64bits format */
A_UINT32 rx_bss_cycle_count_high; /* high 31 bits of rx_cycle cnt for my bss in 64bits format */
+ A_UINT32 pdev_id; /* pdev_id for identifying the MAC */
} wmi_pdev_bss_chan_info_event_fixed_param;
typedef struct {
@@ -9472,6 +9585,10 @@ typedef struct {
#define WMI_CIPHER_AES_GCM 0x9
#define WMI_CIPHER_AES_GMAC 0xa
#define WMI_CIPHER_WAPI_GCM_SM4 0xb
+#define WMI_CIPHER_BIP_CMAC_128 0xc
+#define WMI_CIPHER_BIP_CMAC_256 0xd
+#define WMI_CIPHER_BIP_GMAC_128 0xe
+#define WMI_CIPHER_BIP_GMAC_256 0xf
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_install_key_cmd_fixed_param */
@@ -9545,9 +9662,9 @@ typedef enum {
/* Control to enable/disable FILS discovery frame tx in non-HT duplicate */
#define WMI_VDEV_6GHZ_BITMAP_NON_HT_DUPLICATE_FD_FRAME 0x4
/* Control to enable/disable periodic FILS discovery frame transmission */
-#define WMI_VDEV_6GHZ_BITMAP_FD_FRAME 0x8
+#define WMI_VDEV_6GHZ_BITMAP_FD_FRAME 0x8 /* deprecated */
/* Control to enable/disable periodic broadcast probe response transmission */
-#define WMI_VDEV_6GHZ_BITMAP_BCAST_PROBE_RSP 0x10
+#define WMI_VDEV_6GHZ_BITMAP_BCAST_PROBE_RSP 0x10 /* deprecated */
/** the definition of different VDEV parameters */
typedef enum {
@@ -9929,7 +10046,8 @@ typedef enum {
WMI_VDEV_PARAM_DISABLE_DYN_BW_RTS, /* 0x68 */
/** per ssid (vdev) based ATF strict/fair scheduling policy
- * param values are WMI_ATF_SSID_FAIR_SCHED or WMI_ATF_SSID_STRICT_SCHED
+ * param values are WMI_ATF_SSID_FAIR_SCHED, WMI_ATF_SSID_STRICT_SCHED,
+ * or WMI_ATF_SSID_FAIR_SCHED_WITH_UB
*/
WMI_VDEV_PARAM_ATF_SSID_SCHED_POLICY, /* 0x69 */
@@ -10287,6 +10405,13 @@ typedef enum {
*/
WMI_VDEV_PARAM_6GHZ_PARAMS, /* 0x99 */
+ /**
+ * VDEV parameter to enable or disable RTT initiator role
+ * Default : Enabled
+ * valid values: 0-Disable initiator role, 1-Enable initiator role.
+ */
+ WMI_VDEV_PARAM_ENABLE_DISABLE_RTT_INITIATOR_ROLE, /* 0x9A */
+
/*=== ADD NEW VDEV PARAM TYPES ABOVE THIS LINE ===
* The below vdev param types are used for prototyping, and are
* prone to change.
@@ -10505,16 +10630,22 @@ typedef struct {
/** Upto 8 bits are available for Roaming module to be sent along with
WMI_VDEV_PARAM_ROAM_FW_OFFLOAD WMI_VDEV_PARAM **/
-/* Enable Roaming FW offload LFR1.5/LFR2.0 implementation */
+/* Bit 0: Enable Roaming FW offload LFR1.5/LFR2.0 implementation */
#define WMI_ROAM_FW_OFFLOAD_ENABLE_FLAG 0x1
-/* Enable Roaming module in FW to do scan based on Final BMISS */
+/* Bit 1: Enable Roaming module in FW to do scan based on Final BMISS */
#define WMI_ROAM_BMISS_FINAL_SCAN_ENABLE_FLAG 0x2
-/**
+/* Bit 2:
* To enable/disable EAPOL_4WAY_HANDSHAKE process while roaming.
* param value = 0 --> Enable EAPOL 4way handshake
* param value = 1 --> Skip EAPOL 4way handshake
*/
#define WMI_VDEV_PARAM_SKIP_ROAM_EAPOL_4WAY_HANDSHAKE 0x4
+/* Bit 3:
+ * Scan type when WMI_ROAM_BMISS_FINAL_SCAN_ENABLE_FLAG is set:
+ * value = 0 --> Chanmap scan followed by one full scan if no candidate found.
+ * value = 1 --> Chanmap scan only
+ */
+#define WMI_ROAM_BMISS_FINAL_SCAN_TYPE_FLAG 0x8
/** slot time long */
#define WMI_VDEV_SLOT_TIME_LONG 0x1
@@ -11365,9 +11496,16 @@ typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_tbtt_offset_event_fixed_param */
/** bimtap of VDEVs that has tbtt offset updated */
A_UINT32 vdev_map;
-/* The TLVs for tbttoffset_list will follow this TLV.
- * tbtt offset list in the order of the LSB to MSB in the vdev_map bitmap
+/* The TLVs for tbttoffset_list, tbtt_qtime_low_us_list, and
+ * tbtt_qtime_high_us_list will follow this TLV.
+ * - tbtt offset list in the order of the LSb to MSb in the vdev_map bitmap
* A_UINT32 tbttoffset_list[WMI_MAX_AP_VDEV];
+ * - tbtt qtime_low_us list(Lower 32 bit of qtime us) in the order of the
+ * LSb to MSb in the vdev_map bitmap
+ * A_UINT32 tbtt_qtime_low_us_list[WMI_MAX_AP_VDEV];
+ * - tbtt qtime_high_us list(Higher 32 bit of qtime us) in the order of the
+ * LSb to MSb in the vdev_map bitmap
+ * A_UINT32 tbtt_qtime_high_us_list[WMI_MAX_AP_VDEV];
*/
} wmi_tbtt_offset_event_fixed_param;
@@ -11377,6 +11515,9 @@ typedef struct {
A_UINT32 vdev_id;
/** tbttoffset in TUs */
A_UINT32 tbttoffset;
+ /** absolute tbtt time in qtime us */
+ A_UINT32 tbtt_qtime_low_us; /* bits 31:0 of qtime */
+ A_UINT32 tbtt_qtime_high_us; /* bits 63:32 of qtime */
} wmi_tbtt_offset_info;
/** Use this event if number of vdevs > 32 */
@@ -11809,6 +11950,12 @@ typedef struct {
/* Per peer MISC stats enable or disable */
#define WMI_PEER_PARAM_MISC_STATS_ENABLE 0x22
+/* Per peer FW congestion enable or disable:
+ * A parameter value of 1 will disable FW tx congestion control for the peer,
+ * a parameter value 0f 0 will enable FW tx congestion control for the peer.
+ */
+#define WMI_PEER_PARAM_FW_CONGESTION_DISABLE 0x23
+
/** mimo ps values for the parameter WMI_PEER_MIMO_PS_STATE */
#define WMI_PEER_MIMO_PS_NONE 0x0
#define WMI_PEER_MIMO_PS_STATIC 0x1
@@ -11954,7 +12101,16 @@ typedef struct {
* value 1 - MCS 0-9 enabled for this NSS
* value 2 - MCS 0-11 enabled for this NSS
* value 3 - NSS disabled
- * - WMI_HE_MAX_MCS_4_SS_MASK macro can be used for encoding this info
+ * WMI_HE_MAX_MCS_4_SS_MASK macro can be used for encoding this info
+ *
+ * - 8 bits x 2 are used for each Nss value for 2 categories of bandwidths,
+ * to indicate whether MCS 12 and 13 are enabled.
+ * Bits [16:23] used for checking if MCS 12/13 is enabled for a
+ * particular NSS (BW <= 80MHz)
+ * Bits [24:31] used for checking if MCS 12/13 is enabled for a
+ * particular NSS (BW > 80MHz)
+ * The WMI_HE_EXTRA_MCS_SS_[GET,SET] macros can be used for accessing
+ * these bit-fields.
*/
A_UINT32 tx_mcs_set; /* Negotiated TX HE rates(i.e. rate this node can TX to peer) */
} wmi_he_rate_set;
@@ -11971,6 +12127,7 @@ typedef struct {
#define WMI_PEER_APSD 0x00000800 /* U-APSD power save enabled */
#define WMI_PEER_HT 0x00001000 /* HT enabled */
#define WMI_PEER_40MHZ 0x00002000 /* 40MHz enabld */
+#define WMI_PEER_INTER_BSS_PEER 0x00004000 /* Inter BSS peer */
#define WMI_PEER_STBC 0x00008000 /* STBC Enabled */
#define WMI_PEER_LDPC 0x00010000 /* LDPC ENabled */
#define WMI_PEER_DYN_MIMOPS 0x00020000 /* Dynamic MIMO PS Enabled */
@@ -12095,6 +12252,12 @@ typedef struct {
/* min data rate to be used in Mbps */
A_UINT32 min_data_rate;
+ /** HE 6 GHz Band Capabilities of the peer.
+ * (Defined in 9.4.2.261 HE 6GHz Band Capabilities element in 802.11ax_D5.0)
+ * valid when WMI_PEER_HE is set and WMI_PEER_VHT/HT are not set.
+ */
+ A_UINT32 peer_he_caps_6ghz;
+
/* Following this struct are the TLV's:
* A_UINT8 peer_legacy_rates[];
* A_UINT8 peer_ht_rates[];
@@ -12189,6 +12352,11 @@ typedef struct {
A_UINT32 mac_clk_mhz;
/** unique id identifying the VDEV */
A_UINT32 vdev_id;
+ /**
+ * Noise Floor value for all chain in dBm.
+ * If per_chain_noise_floor value is 0 then it should be ignored.
+ */
+ A_UINT32 per_chain_noise_floor[WMI_MAX_CHAINS];
} wmi_chan_info_event_fixed_param;
/**
@@ -13073,13 +13241,22 @@ typedef struct wmi_fd_send_from_host {
} wmi_fd_send_from_host_cmd_fixed_param;
/*
+ * Control to send broadcast probe response instead of FD frames.
+ * When this flag is not set then FD frame will be transmitted when
+ * fd_period is non-zero
+ */
+#define WMI_FILS_FLAGS_BITMAP_BCAST_PROBE_RSP 0x1
+
+/*
* WMI command structure for FILS feature enable/disable
*/
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_enable_fils_cmd_fixed_param */
/* VDEV identifier */
A_UINT32 vdev_id;
- A_UINT32 fd_period; /* non-zero - enable Fils Discovery frames with this period (in TU), 0 - disable FD frames */
+ A_UINT32 fd_period; /* non-zero - enable Fils Discovery frames or broadcast probe response with this period (in TU),
+ * 0 - disable FD and broadcast probe response frames */
+ A_UINT32 flags; /* WMI_FILS_FLAGS_BITMAP flags */
} wmi_enable_fils_cmd_fixed_param;
/*
@@ -14058,6 +14235,7 @@ typedef enum wake_reason_e {
WOW_REASON_PAGE_FAULT, /* Host wake up due to page fault */
WOW_REASON_ROAM_PREAUTH_START,
WOW_REASON_ROAM_PMKID_REQUEST,
+ WOW_REASON_RFKILL,
/* add new WOW_REASON_ defs before this line */
WOW_REASON_MAX,
@@ -17958,11 +18136,22 @@ typedef struct {
*/
} wmi_nan_cmd_param;
+#define WMI_NAN_GET_RANGING_INITIATOR_ROLE(flag) WMI_GET_BITS(flag, 0, 1)
+#define WMI_NAN_SET_RANGING_INITIATOR_ROLE(flag, val) WMI_SET_BITS(flag, 0, 1, val)
+#define WMI_NAN_GET_RANGING_RESPONDER_ROLE(flag) WMI_GET_BITS(flag, 1, 1)
+#define WMI_NAN_SET_RANGING_RESPONDER_ROLE(flag, val) WMI_SET_BITS(flag, 1, 1, val)
+
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_nan_host_config_param */
A_UINT32 nan_2g_disc_disable:1; /** This bit when set to 1 indicate NAN 2G discovery should be disabled */
A_UINT32 nan_5g_disc_disable:1; /** This bit when set to 1 indicate NAN 5G discovery should be disabled */
A_UINT32 reserved:30;
+ /** Flags: refer to WMI_NAN_GET/SET macros
+ * Bit 0 -> Nan ranging initiator role (0 - Disable, 1 - Enable)
+ * Bit 1 -> Nan ranging responder role (0 - Disable, 1 - Enable)
+ * Bits 2-31 -> Reserved
+ */
+ A_UINT32 flags;
} wmi_nan_host_config_param_PROTOTYPE;
#define wmi_nan_host_config_param wmi_nan_host_config_param_PROTOTYPE
@@ -17981,6 +18170,7 @@ typedef struct {
A_UINT32 mac_id; /* MAC ID associated with NAN primary discovery channel; Valid only for NAN enable resp message identified by NAN_MSG_ID_ENABLE_RSP */
A_UINT32 status:1; /** This bit when set to 0 indicates status is successful; Valid only for NAN enable resp message identified by NAN_MSG_ID_ENABLE_RSP */
A_UINT32 reserved:31;
+ A_UINT32 vdev_id; /** Unique id identifying the vdev with type OPMODE_NAN; Valid only for NAN enable resp message identified by NAN_MSG_ID_ENABLE_RSP */
} wmi_nan_event_info_PROTOTYPE;
#define wmi_nan_event_info wmi_nan_event_info_PROTOTYPE
@@ -22480,8 +22670,9 @@ typedef struct {
#define WMI_ATF_DENOMINATION 1000 /* Expressed in 1 part in 1000 (permille) */
-#define WMI_ATF_SSID_FAIR_SCHED 0 /** fair ATF scheduling for vdev */
-#define WMI_ATF_SSID_STRICT_SCHED 1 /** strict ATF scheduling for vdev */
+#define WMI_ATF_SSID_FAIR_SCHED 0 /** fair ATF scheduling for vdev */
+#define WMI_ATF_SSID_STRICT_SCHED 1 /** strict ATF scheduling for vdev */
+#define WMI_ATF_SSID_FAIR_SCHED_WITH_UB 2 /** fair ATF scheduling with upper bound for VDEV */
typedef struct {
/** TLV tag and len; tag equals
@@ -22504,6 +22695,104 @@ typedef struct {
*/
} wmi_peer_atf_request_fixed_param;
+#define WMI_ATF_GROUP_SCHED_POLICY_BIT_POS 0
+#define WMI_ATF_GROUP_SCHED_POLICY_NUM_BITS 4
+
+#define WMI_ATF_GROUP_GET_GROUP_SCHED_POLICY(atf_group_flags) \
+ WMI_GET_BITS(atf_group_flags,WMI_ATF_GROUP_SCHED_POLICY_BIT_POS,WMI_ATF_GROUP_SCHED_POLICY_NUM_BITS)
+
+#define WMI_ATF_GROUP_SET_GROUP_SCHED_POLICY(atf_group_flags,val) \
+ WMI_SET_BITS(atf_group_flags,WMI_ATF_GROUP_SCHED_POLICY_BIT_POS,WMI_ATF_GROUP_SCHED_POLICY_NUM_BITS,val)
+
+typedef struct {
+ /** TLV tag and len; tag equals
+ * WMITLV_TAG_STRUC_wmi_atf_group_info */
+ A_UINT32 tlv_header;
+ A_UINT32 atf_group_id; /* ID of the Air Time Management group */
+ /* atf_group_units
+ * Fraction of air time allowed for the group, in per mille units
+ * (from 0-1000).
+ * For example, to indicate that the group can use 12.3% of the air time,
+ * the atf_group_units setting would be 123.
+ */
+ A_UINT32 atf_group_units;
+ /* atf_group_flags
+ * Bits 4-31 - Reserved (Shall be zero)
+ * Bits 0-3 - Group Schedule Policy (Fair/Strict/Fair with upper bound)
+ * Refer to WMI_ATF_SSID_ definitions
+ */
+ A_UINT32 atf_group_flags;
+} wmi_atf_group_info;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_atf_ssid_grp_request_fixed_param */
+ A_UINT32 pdev_id;
+ /*
+ * Following this structure is the TLV:
+ * struct wmi_atf_group_info group_info[];
+ */
+} wmi_atf_ssid_grp_request_fixed_param;
+
+/* ATF Configurations for WMM ACs of a group, value for each AC shall be in
+ * percentage (0-100).
+ * This perecentage is relative to the residual airtime (derived by FW)
+ * configured for the group.
+ * When WMM ATF is not configured for a peer all values shall be 0.
+ */
+typedef struct {
+ /** TLV tag and len; tag equals
+ * WMITLV_TAG_STRUC_wmi_atf_group_wmm_ac_info
+ */
+ A_UINT32 tlv_header;
+ A_UINT32 atf_group_id; /* ID of the Air Time Management group */
+ A_UINT32 atf_units_be;
+ A_UINT32 atf_units_bk;
+ A_UINT32 atf_units_vi;
+ A_UINT32 atf_units_vo;
+} wmi_atf_group_wmm_ac_info;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_atf_grp_wmm_ac_cfg_request_fixed_param */
+ A_UINT32 pdev_id;
+ /*
+ * Following this structure is the TLV:
+ * struct wmi_atf_group_wmm_ac_info group_info[];
+ */
+} wmi_atf_grp_wmm_ac_cfg_request_fixed_param;
+
+#define WMI_ATF_GROUP_CFG_PEER_BIT_POS 0
+#define WMI_ATF_GROUP_CFG_PEER_NUM_BITS 1
+
+#define WMI_ATF_GROUP_GET_CFG_PEER_BIT(atf_peer_flags) \
+ WMI_GET_BITS(atf_peer_flags,WMI_ATF_GROUP_CFG_PEER_BIT_POS,WMI_ATF_GROUP_CFG_PEER_NUM_BITS)
+
+#define WMI_ATF_GROUP_SET_CFG_PEER_BIT(atf_peer_flags,val) \
+ WMI_SET_BITS(atf_peer_flags,WMI_ATF_GROUP_CFG_PEER_BIT_POS,WMI_ATF_GROUP_CFG_PEER_NUM_BITS,val)
+
+typedef struct {
+ /** TLV tag and len; tag equals
+ * WMITLV_TAG_STRUC_wmi_peer_atf_ext_info */
+ A_UINT32 tlv_header;
+ wmi_mac_addr peer_macaddr;
+ A_UINT32 atf_group_id; /* Group Id of the peers for ATF SSID grouping */
+ /* atf_peer_flags
+ * Bits 1-31 - Reserved (Shall be zero)
+ * Bit 0 - Configured Peer Indication (0/1), this bit would be set by
+ * host to indicate that the peer has airtime % configured
+ * explicitly by user.
+ */
+ A_UINT32 atf_peer_flags;
+} wmi_peer_atf_ext_info;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_peer_atf_ext_request_fixed_param */
+ A_UINT32 pdev_id;
+ /*
+ * Following this structure is the TLV:
+ * struct wmi_peer_atf_ext_info peer_ext_info[];
+ */
+} wmi_peer_atf_ext_request_fixed_param;
+
/* Structure for Bandwidth Fairness peer information */
typedef struct {
/** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_bwf_peer_info */
@@ -23340,6 +23629,10 @@ typedef enum wmi_coex_config_type {
* config BTC separate chain mode or shared mode
*/
WMI_COEX_CONFIG_BTCOEX_SEPARATE_CHAIN_MODE = 44,
+ /* WMI_COEX_CONFIG_ENABLE_TPUT_SHAPING
+ * enable WLAN throughput shaping while BT scanning
+ */
+ WMI_COEX_CONFIG_ENABLE_TPUT_SHAPING = 45,
} WMI_COEX_CONFIG_TYPE;
typedef struct {
@@ -23790,6 +24083,15 @@ typedef struct {
#define WMI_SUPPORT_CHAN_WIDTH_80P80_GET(flags) WMI_GET_BITS(flags, 4, 1)
#define WMI_SUPPORT_CHAN_WIDTH_80P80_SET(flags, value) WMI_SET_BITS(flags, 4, 1, value)
+#define WMI_SUPPORT_AGILE_SPECTRAL_GET(flags) WMI_GET_BITS(flags, 5, 1)
+#define WMI_SUPPORT_AGILE_SPECTRAL_SET(flags, value) WMI_SET_BITS(flags, 5, 1, value)
+
+#define WMI_SUPPORT_AGILE_SPECTRAL_160_GET(flags) WMI_GET_BITS(flags, 6, 1)
+#define WMI_SUPPORT_AGILE_SPECTRAL_160_SET(flags, value) WMI_SET_BITS(flags, 6, 1, value)
+
+#define WMI_SUPPORT_ADFS_160_GET(flags) WMI_GET_BITS(flags, 7, 1)
+#define WMI_SUPPORT_ADFS_160_SET(flags, value) WMI_SET_BITS(flags, 7, 1, value)
+
#define WMI_SUPPORT_CHAIN_MASK_2G_GET(flags) WMI_GET_BITS(flags, 27, 1)
#define WMI_SUPPORT_CHAIN_MASK_2G_SET(flags, value) WMI_SET_BITS(flags, 27, 1, value)
@@ -23816,7 +24118,10 @@ typedef struct {
supports_chan_width_80:1,
supports_chan_width_160:1,
supports_chan_width_80P80:1,
- reserved:22, /* bits 26:5 */
+ supports_agile_spectral:1,
+ supports_agile_spectral_160:1,
+ supports_aDFS_160:1,
+ reserved:19, /* bits 26:8 */
chain_mask_2G:1,
chain_mask_5G:1,
chain_mask_tx:1,
@@ -24716,7 +25021,15 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command)
WMI_RETURN_STRING(WMI_AUDIO_AGGR_DEL_GROUP_CMDID);
WMI_RETURN_STRING(WMI_AUDIO_AGGR_SET_GROUP_RATE_CMDID);
WMI_RETURN_STRING(WMI_AUDIO_AGGR_SET_GROUP_RETRY_CMDID);
+ WMI_RETURN_STRING(WMI_AUDIO_AGGR_UPDATE_STA_GROUP_INFO_CMDID);
WMI_RETURN_STRING(WMI_CFR_CAPTURE_FILTER_CMDID);
+ WMI_RETURN_STRING(WMI_ATF_SSID_GROUPING_REQUEST_CMDID);
+ WMI_RETURN_STRING(WMI_ATF_GROUP_WMM_AC_CONFIG_REQUEST_CMDID);
+ WMI_RETURN_STRING(WMI_PEER_ATF_EXT_REQUEST_CMDID);
+ WMI_RETURN_STRING(WMI_GET_CHANNEL_ANI_CMDID);
+ WMI_RETURN_STRING(WMI_SET_OCL_CMDID);
+ WMI_RETURN_STRING(WMI_AUDIO_AGGR_SET_GROUP_AUTO_RATE_CMDID);
+ WMI_RETURN_STRING(WMI_AUDIO_AGGR_SET_GROUP_PROBE_CMDID);
}
return "Invalid WMI cmd";
@@ -26171,6 +26484,177 @@ typedef struct {
*/
} wmi_roam_scan_stats_event_fixed_param;
+typedef enum {
+ WMI_ROAM_TRIGGER_SUB_REASON_PERIODIC_TIMER = 1, /* Roam scan triggered due to periodic timer expiry */
+ WMI_ROAM_TRIGGER_SUB_REASON_INACTIVITY_TIMER, /* Roam scan triggered due to inactivity detection */
+ WMI_ROAM_TRIGGER_SUB_REASON_BTM_DI_TIMER, /* Roam scan triggered due to BTM Disassoc Imminent timeout */
+ WMI_ROAM_TRIGGER_SUB_REASON_FULL_SCAN, /* Roam scan triggered due to partial scan failure */
+} WMI_ROAM_TRIGGER_SUB_REASON_ID;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_trigger_reason_tlv_param */
+ /*
+ * timestamp is the absolute time w.r.t host timer which is synchronized
+ * between the host and target.
+ * This timestamp indicates the time when roam trigger happened.
+ */
+ A_UINT32 timestamp; /* Timestamp in milli seconds */
+ /* trigger_reason:
+ * Roam trigger reason from WMI_ROAM_TRIGGER_REASON_ID
+ */
+ A_UINT32 trigger_reason;
+ /* trigger_sub_reason:
+ * Reason for each roam scan from WMI_ROAM_TRIGGER_SUB_REASON_ID,
+ * if multiple scans are triggered for a single roam trigger.
+ */
+ A_UINT32 trigger_sub_reason;
+ A_UINT32 current_rssi; /* Connected AP rssi in dBm */
+ /* roam_rssi_threshold:
+ * RSSI threshold value in dBm for low RSSI roam trigger.
+ */
+ A_UINT32 roam_rssi_threshold;
+ A_UINT32 cu_load; /* Connected AP CU load percentage (0-100) */
+ /* deauth_type:
+ * 1 -> De-authentication
+ * 2 -> Disassociation
+ */
+ A_UINT32 deauth_type;
+ /* deauth_reason:
+ * De-authentication or disassociation reason.
+ * De-authentication / disassociation Values are enumerated in the
+ * 802.11 spec.
+ */
+ A_UINT32 deauth_reason;
+ /* btm_request_mode:
+ * Mode Values are enumerated in the 802.11 spec.
+ */
+ A_UINT32 btm_request_mode;
+ A_UINT32 disassoc_imminent_timer; /* in Milli seconds */
+ /* validity_internal:
+ * Preferred candidate list validity interval in Milli seconds.
+ */
+ A_UINT32 validity_internal;
+ /* candidate_list_count:
+ * Number of preferred candidates from BTM request.
+ */
+ A_UINT32 candidate_list_count;
+ /* btm_response_status_code:
+ * Response status Values are enumerated in the 802.11 spec.
+ */
+ A_UINT32 btm_response_status_code;
+} wmi_roam_trigger_reason;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_scan_info_tlv_param */
+ /* roam_scan_type:
+ * 0 -> Partial roam scan
+ * 1 -> Full roam scan
+ */
+ A_UINT32 roam_scan_type;
+ /* next_rssi_trigger_threshold:
+ * Updated RSSI threshold value in dBm for next roam trigger.
+ */
+ A_UINT32 next_rssi_trigger_threshold;
+ A_UINT32 roam_scan_channel_count; /* Number of channels scanned during roam scan */
+ A_UINT32 roam_ap_count; /* Number of roamable APs */
+} wmi_roam_scan_info;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_scan_channel_info_tlv_param */
+ A_UINT32 channel; /* Channel frequency in MHz */
+} wmi_roam_scan_channel_info;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_ap_info_tlv_param */
+ /*
+ * timestamp is the absolute time w.r.t host timer which is synchronized
+ * between the host and target.
+ * This timestamp indicates the time when candidate AP is found
+ * during roam scan.
+ */
+ A_UINT32 timestamp; /* Timestamp in milli seconds */
+ A_UINT32 candidate_type; /* 0 - Candidate AP, 1 - Connected AP */
+ wmi_mac_addr bssid; /* AP MAC address */
+ A_UINT32 channel; /* AP channel frequency in MHz */
+ A_UINT32 rssi; /* AP current rssi in dBm */
+ A_UINT32 cu_load; /* AP current cu load percentage (0-100) */
+ /*
+ * The score fields below don't have a pre-determined range,
+ * but use the sense that a higher score indicates a better
+ * roam candidate.
+ */
+ A_UINT32 rssi_score; /* AP current rssi score */
+ A_UINT32 cu_score; /* AP current cu score */
+ A_UINT32 total_score; /* AP total score */
+ A_UINT32 etp; /* AP Estimated Throughput (ETP) value in mbps */
+} wmi_roam_ap_info;
+
+typedef enum {
+ /* Failures reasons for not triggering roaming */
+ WMI_ROAM_FAIL_REASON_NO_SCAN_START = 1, /* Roam scan not started */
+ WMI_ROAM_FAIL_REASON_NO_AP_FOUND, /* No roamable APs found during roam scan */
+ WMI_ROAM_FAIL_REASON_NO_CAND_AP_FOUND, /* No candidate APs found during roam scan */
+
+ /* Failure reasons after roaming is triggered */
+ WMI_ROAM_FAIL_REASON_HOST, /* Roam fail due to VDEV STOP issued from Host */
+ WMI_ROAM_FAIL_REASON_AUTH_SEND, /* Unable to send auth request frame */
+ WMI_ROAM_FAIL_REASON_AUTH_RECV, /* Received auth response with error status code */
+ WMI_ROAM_FAIL_REASON_NO_AUTH_RESP, /* Not receiving auth response frame */
+ WMI_ROAM_FAIL_REASON_REASSOC_SEND, /* Unable to send reassoc request frame */
+ WMI_ROAM_FAIL_REASON_REASSOC_RECV, /* Received reassoc response with error status code */
+ WMI_ROAM_FAIL_REASON_NO_REASSOC_RESP, /* Not receiving reassoc response frame */
+ WMI_ROAM_FAIL_REASON_EAPOL_TIMEOUT, /* EAPOL TIMEOUT */
+ WMI_ROAM_FAIL_REASON_MLME, /* MLME internal error */
+ WMI_ROAM_FAIL_REASON_INTERNAL_ABORT, /* Internal abort */
+
+
+ WMI_ROAM_FAIL_REASON_UNKNOWN = 255,
+} WMI_ROAM_FAIL_REASON_ID;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_result_tlv_param */
+ /*
+ * timestamp is the absolute time w.r.t host timer which is synchronized
+ * between the host and target.
+ * This timestamp indicates the time when roaming is completed.
+ */
+ A_UINT32 timestamp; /* Timestamp in milli seconds */
+ A_UINT32 roam_status; /* 0 - Roaming is success, 1 - Roaming is failed */
+ A_UINT32 roam_fail_reason; /* from WMI_ROAM_FAIL_REASON_ID */
+} wmi_roam_result;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_neighbor_report_info_tlv_param */
+ /* request_type:
+ * 1 -> BTM query
+ * 2 -> 11K neighbor report request
+ */
+ A_UINT32 request_type;
+ /* neighbor_report_request_timestamp:
+ * timestamp is the absolute time w.r.t host timer which is synchronized
+ * between the host and target.
+ * This timestamp indicates the time when neighbor report request
+ * is received.
+ */
+ A_UINT32 neighbor_report_request_timestamp; /* in milli seconds */
+ /* neighbor_report_response_timestamp:
+ * This timestamp indicates the time when neighbor report response is sent.
+ */
+ A_UINT32 neighbor_report_response_timestamp; /* in milli seconds */
+ A_UINT32 neighbor_report_channel_count; /* Number of channels received in neighbor report response */
+} wmi_roam_neighbor_report_info;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_neighbor_report_channel_info_tlv_param */
+ A_UINT32 channel; /* Channel frequency in MHz */
+} wmi_roam_neighbor_report_channel_info;
+
+typedef struct {
+ A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_stats_event_fixed_param */
+ A_UINT32 vdev_id;
+ A_UINT32 roam_scan_trigger_count; /* Number of roam scans triggered */
+} wmi_roam_stats_event_fixed_param;
+
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals wmi_txpower_query_cmd_fixed_param */
A_UINT32 request_id; /* unique request ID to distinguish the command / event set */
@@ -27795,33 +28279,76 @@ typedef struct {
A_UINT32 en_dis;
} wmi_get_elna_bypass_event_fixed_param;
+typedef struct {
+ /** TLV tag and len; tag equals
+ * WMITLV_TAG_STRUC_wmi_get_channel_ani_cmd_fixed_param
+ */
+ A_UINT32 tlv_header;
+ /**
+ * TLV (tag length value) parameters follow the
+ * structure. The TLV's are:
+ * list of channels (center freq of primary 20 MHz of the channel, in MHz)
+ * A_UINT32 channel_list[];
+ */
+} wmi_get_channel_ani_cmd_fixed_param;
+
+typedef struct {
+ /** TLV tag and len; tag equals
+ * WMITLV_TAG_STRUC_wmi_get_channel_ani_event_fixed_param
+ */
+ A_UINT32 tlv_header;
+ /**
+ * TLV (tag length value) parameters follow the
+ * structure. The TLV's are:
+ * wmi_channel_ani_info_tlv_param ani_info[];
+ */
+} wmi_get_channel_ani_event_fixed_param;
+
+typedef struct {
+ /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_channel_ani_info_tlv_param */
+ A_UINT32 tlv_header;
+ /** channel freq (center of 20 MHz primary channel) in MHz */
+ A_UINT32 chan_freq;
+ /**
+ * ANI (noise interference) level corresponding to the channel.
+ * Values range from [0-9], with higher values indicating more
+ * noise interference.
+ */
+ A_UINT32 ani_level;
+} wmi_channel_ani_info_tlv_param;
+
/* This command is to specify to enable/disable audio frame aggr */
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_audio_aggr_enable_cmd_fixed_param */
A_UINT32 aggr_enable; /* enable aggregation for audio frame */
A_UINT32 tbd_enable; /* enable time_based discarding for audio frame */
+ A_UINT32 vdev_id;
} wmi_audio_aggr_enable_cmd_fixed_param;
typedef struct wmi_audio_aggr_rate_set_s {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_audio_aggr_rate_set */
A_UINT32 mcs;
A_UINT32 bandwidth; /* 0 for 20M, 1 for 40M and 2 for 80M, etc. */
+ A_UINT32 vdev_id;
} WMI_AUDIO_AGGR_RATE_SET_T;
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_audio_aggr_add_group */
A_UINT32 group_id; /* id of audio group */
wmi_mac_addr multicast_addr; /* multicast address of audio group */
+ A_UINT32 vdev_id;
} wmi_audio_aggr_add_group_cmd_fixed_param;
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_audio_aggr_del_group */
A_UINT32 group_id;
+ A_UINT32 vdev_id;
} wmi_audio_aggr_del_group_cmd_fixed_param;
typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_audio_aggr_set_group_rate */
A_UINT32 group_id;
+ A_UINT32 vdev_id;
/**
* TLV (tag length value) parameters follow the
* structure. The TLV's are:
@@ -27833,8 +28360,66 @@ typedef struct {
A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_audio_aggr_set_group_retry */
A_UINT32 group_id;
A_UINT32 retry_thresh;
+ A_UINT32 vdev_id;
} wmi_audio_aggr_set_group_retry_cmd_fixed_param;
+typedef struct {
+ A_UINT32 tlv_header;
+ A_UINT32 vdev_id;
+ A_UINT32 group_id;
+ /*
+ * bit0: if set, Enable HT20
+ * bit1: if set, Enable HT40
+ * bit2, bit3: Reserved
+ * bit4: if set, Enable VHT20
+ * bit5: if set, Enable VHT40
+ * bit6: if set, Enable VHT80
+ * bit7 ~ bit31: Reserved
+ */
+ A_UINT32 bw;
+ A_UINT32 mcs_min;
+ A_UINT32 mcs_max;
+ A_UINT32 mcs_offset;
+ A_UINT32 nss;
+} wmi_audio_aggr_set_group_auto_rate_cmd_fixed_param;
+
+typedef struct {
+ A_UINT32 tlv_header;
+ A_UINT32 vdev_id;
+ A_UINT32 group_id;
+ A_UINT32 interval;
+} wmi_audio_aggr_set_group_probe_cmd_fixed_param;
+
+typedef struct {
+ /**
+ * TLV tag and len;
+ * tag equals WMITLV_TAG_STRUC_wmi_audio_aggr_update_sta_group_info */
+ A_UINT32 tlv_header;
+
+ /* vdev id */
+ A_UINT32 vdev_id; /* which STA/vdev's group membership is being specified */
+
+ /* bitmap that indicates which groups this sta belongs to */
+ A_UINT32 group_bmap;
+
+/*
+ * This fixed_param struct is followed by a TLV array of wmi_mac_addr,
+ * which specifies the multi-cast MAC address used for each group.
+ * The number of elements within the TLV array matches the number of bits
+ * set within group_bmap.
+ */
+} wmi_audio_aggr_update_sta_group_info_cmd_fixed_param;
+
+typedef struct {
+ /** TLV tag and len; tag equals
+ * WMITLV_TAG_STRUC_wmi_set_ocl_cmd_fixed_param */
+ A_UINT32 tlv_header;
+ /* VDEV identifier */
+ A_UINT32 vdev_id;
+ /** enable/disable OCL, 1 - enable, 0 - disable*/
+ A_UINT32 en_dis_chain;
+} wmi_set_ocl_cmd_fixed_param;
+
#define WMI_CFR_GROUP_TA_ADDR_VALID_BIT_POS 0
#define WMI_CFR_GROUP_TA_ADDR_MASK_VALID_BIT_POS 1
@@ -27926,6 +28511,9 @@ typedef struct {
WMI_GET_BITS(param, WMI_CFR_GROUP_NSS_BIT_POS, WMI_CFR_GROUP_NSS_MASK_NUM_BITS)
typedef struct {
+ /** TLV tag and len; tag equals
+ * WMITLV_TAG_STRUC_wmi_cfr_filter_group_config */
+ A_UINT32 tlv_header;
/* Filter group number for which the below filters needs to be applied */
A_UINT32 filter_group_id;
/* Indicates which of the below filter's value is valid
@@ -28040,7 +28628,8 @@ typedef struct {
#define WMI_CFR_NDPA_NDP_ALL_EN_SET(param, value) \
WMI_SET_BITS(param, WMI_CFR_NDPA_NDP_ALL_EN_BIT_POS, 1, value)
-#define WWMI_CFR_NDPA_NDP_ALL_EN_GET(param) \
+#define WWMI_CFR_NDPA_NDP_ALL_EN_GET WMI_CFR_NDPA_NDP_ALL_EN_GET
+#define WMI_CFR_NDPA_NDP_ALL_EN_GET(param) \
WMI_GET_BITS(param, WMI_CFR_NDPA_NDP_ALL_EN_BIT_POS, 1)
#define WMI_CFR_TA_RA_TYPE_FILTER_EN_SET(param, value) \
@@ -28049,7 +28638,8 @@ typedef struct {
#define WMI_CFR_TA_RA_TYPE_FILTER_EN_GET(param) \
WMI_GET_BITS(param, WMI_CFR_TA_RA_TYPE_FILTER_EN_BIT_POS, 1)
-#define WWMI_CFR_ALL_PACKET_EN_SET(param, value) \
+#define WWMI_CFR_ALL_PACKET_EN_SET WMI_CFR_ALL_PACKET_EN_SET
+#define WMI_CFR_ALL_PACKET_EN_SET(param, value) \
WMI_SET_BITS(param, WMI_CFR_ALL_PACKET_EN_BIT_POS, 1, value)
#define WMI_CFR_ALL_PACKET_EN_GET(param) \
@@ -28163,6 +28753,138 @@ typedef struct {
*/
} wmi_cfr_capture_filter_cmd_fixed_param;
+typedef struct {
+ A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_oem_data_event_fixed_param */
+ A_UINT32 data_len; /** length in byte of data[]. */
+/* Following this structure is the TLV:
+ * A_UINT8 data[]; <-- length in byte given by field data_len.
+ * This data array contains OEM data, the payload begins with a field to tell the HOST regarding the kind of the OEM data.
+ */
+} wmi_oem_data_event_fixed_param;
+
+#define WMI_VLAN_TX_BIT_POS 0
+#define WMI_VLAN_RX_BIT_POS 1
+#define WMI_TX_INSERT_OR_STRIP_BIT_POS 2
+#define WMI_TX_STRIP_INSERT_VLAN_INNER_BIT_POS 3
+#define WMI_TX_STRIP_INSERT_VLAN_OUTER_BIT_POS 4
+#define WMI_RX_STRIP_VLAN_C_TAG_BIT_POS 5
+#define WMI_RX_STRIP_VLAN_S_TAG_BIT_POS 6
+#define WMI_RX_INSERT_VLAN_C_TAG_BIT_POS 7
+#define WMI_RX_INSERT_VLAN_S_TAG_BIT_POS 8
+
+#define WMI_TX_INSERT_VLAN_INNER_TCI_NUM_BITS 16
+#define WMI_TX_INSERT_VLAN_INNER_TCI_BIT_POS 0
+
+#define WMI_TX_INSERT_VLAN_OUTER_TCI_NUM_BITS 16
+#define WMI_TX_INSERT_VLAN_OUTER_TCI_BIT_POS 16
+
+
+#define WMI_VLAN_TX_SET(param, value) \
+ WMI_SET_BITS(param, WMI_VLAN_TX_BIT_POS, 1, value)
+
+#define WMI_VLAN_TX_GET(param) \
+ WMI_GET_BITS(param, WMI_VLAN_TX_BIT_POS, 1)
+
+#define WMI_VLAN_RX_SET(param, value) \
+ WMI_SET_BITS(param, WMI_VLAN_RX_BIT_POS, 1, value)
+
+#define WMI_VLAN_RX_GET(param) \
+ WMI_GET_BITS(param, WMI_VLAN_RX_BIT_POS, 1)
+
+#define WMI_TX_INSERT_OR_STRIP_SET(param, value) \
+ WMI_SET_BITS(param, WMI_TX_INSERT_OR_STRIP_BIT_POS, 1, value)
+
+#define WMI_TX_INSERT_OR_STRIP_GET(param) \
+ WMI_GET_BITS(param, WMI_TX_INSERT_OR_STRIP_BIT_POS, 1)
+
+#define WMI_TX_STRIP_INSERT_VLAN_INNER_SET(param, value) \
+ WMI_SET_BITS(param, WMI_TX_STRIP_INSERT_VLAN_INNER_BIT_POS, 1, value)
+
+#define WMI_TX_STRIP_INSERT_VLAN_INNER_GET(param) \
+ WMI_GET_BITS(param, WMI_TX_STRIP_INSERT_VLAN_INNER_BIT_POS, 1)
+
+#define WMI_TX_STRIP_INSERT_VLAN_OUTER_SET(param, value) \
+ WMI_SET_BITS(param, WMI_TX_STRIP_INSERT_VLAN_OUTER_BIT_POS, 1, value)
+
+#define WMI_TX_STRIP_INSERT_VLAN_OUTER_GET(param) \
+ WMI_GET_BITS(param, WMI_TX_STRIP_INSERT_VLAN_OUTER_BIT_POS, 1)
+
+#define WMI_RX_STRIP_VLAN_C_TAG_SET(param, value) \
+ WMI_SET_BITS(param, WMI_RX_STRIP_VLAN_C_TAG_BIT_POS, 1, value)
+
+#define WMI_RX_STRIP_VLAN_C_TAG_GET(param) \
+ WMI_GET_BITS(param, WMI_RX_STRIP_VLAN_C_TAG_BIT_POS, 1)
+
+#define WMI_RX_STRIP_VLAN_S_TAG_SET(param, value) \
+ WMI_SET_BITS(param, WMI_RX_STRIP_VLAN_S_TAG_BIT_POS, 1, value)
+
+#define WMI_RX_STRIP_VLAN_S_TAG_GET(param) \
+ WMI_GET_BITS(param, WMI_RX_STRIP_VLAN_S_TAG_BIT_POS, 1)
+
+#define WMI_RX_INSERT_VLAN_C_TAG_SET(param, value) \
+ WMI_SET_BITS(param, WMI_RX_INSERT_VLAN_C_TAG_BIT_POS, 1, value)
+
+#define WMI_RX_INSERT_VLAN_C_TAG_GET(param) \
+ WMI_GET_BITS(param, WMI_RX_INSERT_VLAN_C_TAG_BIT_POS, 1)
+
+#define WMI_RX_INSERT_VLAN_S_TAG_SET(param, value) \
+ WMI_SET_BITS(param, WMI_RX_INSERT_VLAN_S_TAG_BIT_POS, 1, value)
+
+#define WMI_RX_INSERT_VLAN_S_TAG_GET(param) \
+ WMI_GET_BITS(param, WMI_RX_INSERT_VLAN_S_TAG_BIT_POS, 1)
+
+#define WMI_TX_INSERT_VLAN_INNER_TCI_SET(param, value) \
+ WMI_SET_BITS(param, WMI_TX_INSERT_VLAN_INNER_TCI_BIT_POS, WMI_TX_INSERT_VLAN_INNER_TCI_NUM_BITS, value)
+
+#define WMI_TX_INSERT_VLAN_INNER_TCI_GET(param) \
+ WMI_GET_BITS(param, WMI_TX_INSERT_VLAN_INNER_TCI_BIT_POS, WMI_TX_INSERT_VLAN_INNER_TCI_NUM_BITS)
+
+#define WMI_TX_INSERT_VLAN_OUTER_TCI_SET(param, value) \
+ WMI_SET_BITS(param, WMI_TX_INSERT_VLAN_OUTER_TCI_BIT_POS, WMI_TX_INSERT_VLAN_OUTER_TCI_NUM_BITS, value)
+
+#define WMI_TX_INSERT_VLAN_OUTER_TCI_GET(param) \
+ WMI_GET_BITS(param, WMI_TX_INSERT_VLAN_OUTER_TCI_BIT_POS, WMI_TX_INSERT_VLAN_OUTER_TCI_NUM_BITS)
+
+typedef struct {
+ /** TLV tag and len; tag equals
+ * WMITLV_TAG_STRUC_wmi_peer_config_vlan_cmd_fixed_param */
+ A_UINT32 tlv_header;
+ /** peer MAC address */
+ wmi_mac_addr peer_macaddr;
+ /* peer_vlan_config_mask:
+ * Field indicates VLAN settings that need to set in RX and TX peer
+ * Bit 0: Indicates if the settings are present for TX peer
+ * [1 - present for TX peer]
+ * Bit 1: Indicates if the settings are present for RX peer
+ * [1 - present for RX peer]
+ * Bit 2: Setting the insert_or_strip bit in TX peer
+ * [0 - Strip, 1 - Insert]
+ * Bit 3: Setting the strip_insert_vlan_inner bit in TX peer
+ * [0 - Strip, 1 - Insert]
+ * Bit 4: Setting the strip_insert_vlan_outer bit in TX peer
+ * [0 - Strip, 1 - Insert]
+ * Bit 5: Setting the strip_vlan_c_tag_decap bit in RX peer [1 - Strip]
+ * Bit 6: Setting the strip_vlan_s_tag_decap bit in RX peer [1 - Strip]
+ * Bit 7: Setting the rx_insert_vlan_c_tag_padding bit in RX peer
+ * [1 - Insert]
+ * Bit 8: Setting the rx_insert_vlan_s_tag_padding bit in RX peer
+ * [1 - Insert]
+ */
+ A_UINT32 peer_vlan_config_mask;
+
+ /* insert_vlan_tci:
+ * Field indicates the word that needs to be inserted in the
+ * inner or outer tag, if insertion is enabled by the
+ * TX peer strip_insert_vlan_{inner,outer} fields along with
+ * insert_or_strip field
+ * Bits 0:15 insert_vlan_inner_tci
+ * Bits 16:31 insert_vlan_outer_tci
+ */
+ A_UINT32 insert_vlan_tci;
+ /* VDEV identifier */
+ A_UINT32 vdev_id;
+} wmi_peer_config_vlan_cmd_fixed_param;
+
/* ADD NEW DEFS HERE */
diff --git a/drivers/staging/fw-api/fw/wmi_version.h b/drivers/staging/fw-api/fw/wmi_version.h
index 7f450e8ae63f..675a7afd23ca 100755
--- a/drivers/staging/fw-api/fw/wmi_version.h
+++ b/drivers/staging/fw-api/fw/wmi_version.h
@@ -36,7 +36,7 @@
#define __WMI_VER_MINOR_ 0
/** WMI revision number has to be incremented when there is a
* change that may or may not break compatibility. */
-#define __WMI_REVISION_ 725
+#define __WMI_REVISION_ 757
/** The Version Namespace should not be normally changed. Only
* host and firmware of the same WMI namespace will work