summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSrinivas Girigowda <sgirigow@codeaurora.org>2018-07-19 18:13:13 -0700
committerAhmed ElArabawy <arabawy@google.com>2018-07-20 18:27:03 +0000
commitc16fb8a901d149ab96b0ce6886845e3a82389d74 (patch)
tree222c1aec5cca2f65bc361142e89244dc8418409a
parent8d7f7b3bee24a281ecaadee02a36296c9b7d212f (diff)
downloadwlan-fw-api-android-9.0.0_r0.50.tar.gz
5f266a4 fw-api: Add WMI_SAR_LIMITS_CMDID id in wmi_id_to_name API c443376 fw-api: CL 4973442 - update fw common interface files efb5122 fw-api: CL 4962465 - update fw common interface files dca6da8 fw-api: CL 4943781 - update fw common interface files 4d30959 fw-api: CL 4939194 - update fw common interface files 14314b1 fw-api: CL 4920552 - update fw common interface files 2d1b28c fw-api: CL 4901851 - update fw common interface files 30f8b88 fw-api: CL 4867158 - update fw common interface files e4b4be9 fw-api: CL 4860783 - update fw common interface files 149944c fw-api: CL 4827718 - update fw common interface files 9371093 fw-api: CL 4822672 - update fw common interface files 7b6b7db fw-api: CL 4811569 - update fw common interface files ddf59d7 fw-api: CL 4806347 - update fw common interface files 19b1fe6 fw-api: CL 4805563 - update fw common interface files 71cedde fw-api: CL 4798258 - update fw common interface files b88a1b2 Adding wlan_module_ids.h from p4 to git to enable fw-api automation Bug: 65174506 Bug: 111415903 Change-Id: I598d2eca5dcc4f731831b4c1f282316ab702cfb7 Signed-off-by: Srinivas Girigowda <sgirigow@codeaurora.org>
-rw-r--r--fw/htt.h28
-rw-r--r--fw/htt_ppdu_stats.h18
-rw-r--r--fw/htt_stats.h154
-rw-r--r--fw/wlan_module_ids.h157
-rw-r--r--fw/wmi_services.h1
-rw-r--r--fw/wmi_tlv_defs.h7
-rw-r--r--fw/wmi_unified.h181
-rw-r--r--fw/wmi_version.h2
8 files changed, 454 insertions, 94 deletions
diff --git a/fw/htt.h b/fw/htt.h
index 18aa1d9..1523359 100644
--- a/fw/htt.h
+++ b/fw/htt.h
@@ -167,9 +167,10 @@
* 3.50 Add learning_frame flag to htt_tx_msdu_desc_ext2_t
* 3.51 Add SW peer ID and TID num to HTT TX WBM COMPLETION
* 3.52 Add HTT_T2H FLOW_POOL_RESIZE msg def
+ * 3.53 Update HTT_T2H FLOW_POOL_RESIZE msg def
*/
#define HTT_CURRENT_VERSION_MAJOR 3
-#define HTT_CURRENT_VERSION_MINOR 52
+#define HTT_CURRENT_VERSION_MINOR 53
#define HTT_NUM_TX_FRAG_DESC 1024
@@ -10485,18 +10486,18 @@ typedef struct {
*
* The message would appear as follows:
*
- * |31 24|23 16|15 8|7 0|
- * |----------------+----------------+----------------+----------------|
- * | flow Pool ID | reserved0 | Msg type |
+ * |31 16|15 8|7 0|
+ * |---------------------------------+----------------+----------------|
+ * | reserved0 | Msg type |
* |-------------------------------------------------------------------|
- * | reserved1 | flow pool new size |
+ * | flow pool new size | flow pool ID |
* |-------------------------------------------------------------------|
*
* The message is interpreted as follows:
* b'0:7 - msg_type: This will be set to
* HTT_T2H_MSG_TYPE_FLOW_POOL_RESIZE
*
- * b'8:15 - flow pool ID: Existing flow pool ID
+ * b'0:15 - flow pool ID: Existing flow pool ID
*
* b'16:31 - flow pool new size: new pool size for exisiting flow pool ID
*
@@ -10504,19 +10505,18 @@ typedef struct {
PREPACK struct htt_flow_pool_resize_t {
A_UINT32 msg_type:8,
- reserved0:8,
- flow_pool_id:16;
- A_UINT32 flow_pool_new_size:16,
- reserved1:16;
+ reserved0:24;
+ A_UINT32 flow_pool_id:16,
+ flow_pool_new_size:16;
} POSTPACK;
#define HTT_FLOW_POOL_RESIZE_SZ (sizeof(struct htt_flow_pool_resize_t))
-#define HTT_FLOW_POOL_RESIZE_FLOW_POOL_ID_M 0xffff0000
-#define HTT_FLOW_POOL_RESIZE_FLOW_POOL_ID_S 16
+#define HTT_FLOW_POOL_RESIZE_FLOW_POOL_ID_M 0x0000ffff
+#define HTT_FLOW_POOL_RESIZE_FLOW_POOL_ID_S 0
-#define HTT_FLOW_POOL_RESIZE_FLOW_POOL_NEW_SIZE_M 0x0000ffff
-#define HTT_FLOW_POOL_RESIZE_FLOW_POOL_NEW_SIZE_S 0
+#define HTT_FLOW_POOL_RESIZE_FLOW_POOL_NEW_SIZE_M 0xffff0000
+#define HTT_FLOW_POOL_RESIZE_FLOW_POOL_NEW_SIZE_S 16
#define HTT_FLOW_POOL_RESIZE_FLOW_POOL_ID_GET(_var) \
diff --git a/fw/htt_ppdu_stats.h b/fw/htt_ppdu_stats.h
index a3eaa25..d2f2f49 100644
--- a/fw/htt_ppdu_stats.h
+++ b/fw/htt_ppdu_stats.h
@@ -506,6 +506,18 @@ typedef struct {
((_var) |= ((_val) << HTT_PPDU_STATS_USER_COMMON_TLV_BW_S)); \
} while (0)
+#define HTT_PPDU_STATS_USER_COMMON_TLV_DELAYED_BA_M 0x00004000
+#define HTT_PPDU_STATS_USER_COMMON_TLV_DELAYED_BA_S 14
+
+#define HTT_PPDU_STATS_USER_COMMON_TLV_DELAYED_BA_GET(_var) \
+ (((_var) & HTT_PPDU_STATS_USER_COMMON_TLV_DELAYED_BA_M) >> \
+ HTT_PPDU_STATS_USER_COMMON_TLV_DELAYED_BA_S)
+
+#define HTT_PPDU_STATS_USER_COMMON_TLV_DELAYED_BA_SET(_var, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_PPDU_STATS_USER_COMMON_TLV_DELAYED_BA, _val); \
+ ((_var) |= ((_val) << HTT_PPDU_STATS_USER_COMMON_TLV_DELAYED_BA_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
@@ -552,7 +564,8 @@ typedef struct {
/* BIT [ 0 : 0] :- mcast
* BIT [ 9 : 1] :- mpdus_tried
* BIT [ 13: 10] :- bw - HTT_PPDU_STATS_BW
- * BIT [ 31: 14] :- rsvd
+ * BIT [ 14: 14] : - delayed_ba
+ * BIT [ 31: 15] :- rsvd
*/
union {
A_UINT32 bw__mpdus_tried__mcast;
@@ -560,7 +573,8 @@ typedef struct {
A_UINT32 mcast: 1,
mpdus_tried: 9,
bw: 4,
- reserved0: 18;
+ delayed_ba: 1,
+ reserved0: 17;
};
};
diff --git a/fw/htt_stats.h b/fw/htt_stats.h
index d343aa0..baba371 100644
--- a/fw/htt_stats.h
+++ b/fw/htt_stats.h
@@ -346,6 +346,11 @@ typedef enum {
HTT_STATS_RX_REFILL_REO_ERR_TAG = 78, /* htt_rx_soc_fw_refill_ring_num_reo_err_tlv_v */
HTT_STATS_RX_REO_RESOURCE_STATS_TAG = 79, /* htt_rx_reo_debug_stats_tlv_v */
HTT_STATS_TX_SOUNDING_STATS_TAG = 80, /* htt_tx_sounding_stats_tlv */
+ HTT_STATS_TX_PDEV_TX_PPDU_STATS_TAG = 81, /* htt_tx_pdev_stats_tx_ppdu_stats_tlv_v */
+ HTT_STATS_TX_PDEV_TRIED_MPDU_CNT_HIST_TAG = 82, /* htt_tx_pdev_stats_tried_mpdu_cnt_hist_tlv_v */
+ HTT_STATS_TX_HWQ_TRIED_MPDU_CNT_HIST_TAG = 83, /* htt_tx_hwq_tried_mpdu_cnt_hist_tlv_v */
+ HTT_STATS_TX_HWQ_TXOP_USED_CNT_HIST_TAG = 84, /* htt_tx_hwq_txop_used_cnt_hist_tlv_v */
+ HTT_STATS_TX_DE_FW2WBM_RING_FULL_HIST_TAG = 85, /* htt_tx_de_fw2wbm_ring_full_hist_tlv */
HTT_STATS_MAX_TAG,
} htt_tlv_tag_t;
@@ -463,7 +468,7 @@ typedef struct {
A_UINT32 illgl_rate_phy_err;
/* wal pdev continous xretry */
A_UINT32 cont_xretry;
- /* wal pdev continous xretry */
+ /* wal pdev tx timeout */
A_UINT32 tx_timeout;
/* wal pdev resets */
A_UINT32 pdev_resets;
@@ -535,6 +540,14 @@ typedef struct {
* (acked, no ack, flush, TTL, etc)
*/
A_UINT32 local_data_freed;
+
+ /* Num MPDUs tried by SW */
+ A_UINT32 mpdu_tried;
+ /* Num of waiting seq posted in isr completion handler */
+ A_UINT32 isr_wait_seq_posted;
+
+ A_UINT32 tx_active_dur_us_low;
+ A_UINT32 tx_active_dur_us_high;
} htt_tx_pdev_stats_cmn_tlv;
#define HTT_TX_PDEV_STATS_URRN_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems))
@@ -572,6 +585,34 @@ typedef struct {
A_UINT32 sifs_hist_status[1]; /* HTT_TX_PDEV_SIFS_BURST_HIST_STATS */
} htt_tx_pdev_stats_sifs_hist_tlv_v;
+typedef struct {
+ htt_tlv_hdr_t tlv_hdr;
+ A_UINT32 num_data_ppdus_legacy_su;
+ A_UINT32 num_data_ppdus_ac_su;
+ A_UINT32 num_data_ppdus_ax_su;
+ A_UINT32 num_data_ppdus_ac_su_txbf;
+ A_UINT32 num_data_ppdus_ax_su_txbf;
+} htt_tx_pdev_stats_tx_ppdu_stats_tlv_v;
+
+#define HTT_TX_PDEV_STATS_TRIED_MPDU_CNT_HIST_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems))
+/* NOTE: Variable length TLV, use length spec to infer array size .
+ *
+ * Tried_mpdu_cnt_hist is the histogram of MPDUs tries per HWQ.
+ * The tries here is the count of the MPDUS within a PPDU that the
+ * HW had attempted to transmit on air, for the HWSCH Schedule
+ * command submitted by FW.It is not the retry attempts.
+ * The histogram bins are 0-29, 30-59, 60-89 and so on. The are
+ * 10 bins in this histogram. They are defined in FW using the
+ * following macros
+ * #define WAL_MAX_TRIED_MPDU_CNT_HISTOGRAM 9
+ * #define WAL_TRIED_MPDU_CNT_HISTOGRAM_INTERVAL 30
+ *
+ */
+typedef struct {
+ htt_tlv_hdr_t tlv_hdr;
+ A_UINT32 tried_mpdu_cnt_hist[1]; /* HTT_TX_PDEV_TRIED_MPDU_CNT_HIST */
+ A_UINT32 hist_bin_size;
+} htt_tx_pdev_stats_tried_mpdu_cnt_hist_tlv_v;
/* STATS_TYPE: HTT_DBG_EXT_STATS_PDEV_TX
* TLV_TAGS:
@@ -581,6 +622,8 @@ typedef struct {
* - HTT_STATS_TX_PDEV_FLUSH_TAG
* - HTT_STATS_TX_PDEV_PHY_ERR_TAG
* - HTT_STATS_TX_PDEV_SIFS_HIST_TAG
+ * - HTT_STATS_TX_PDEV_TX_PPDU_STATS_TAG
+ * - HTT_STATS_TX_PDEV_TRIED_MPDU_CNT_HIST_TAG
*/
/* NOTE:
* This structure is for documentation, and cannot be safely used directly.
@@ -593,6 +636,8 @@ typedef struct _htt_tx_pdev_stats {
htt_tx_pdev_stats_flush_tlv_v flush_tlv;
htt_tx_pdev_stats_phy_err_tlv_v phy_err_tlv;
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_tx_pdev_stats_t;
/* == SOC ERROR STATS == */
@@ -1279,6 +1324,8 @@ typedef struct {
A_UINT32 mpdu_ack_fail_cnt; /* mpdus tried but ack was not received */
A_UINT32 mpdu_filt_cnt; /* This will include sched cmd flush and time based discard */
A_UINT32 false_mpdu_ack_count; /* Number of MPDUs for which ACK was sucessful but no Tx happened */
+
+ A_UINT32 txq_timeout; /* Number of times txq timeout happened */
} htt_tx_hwq_stats_cmn_tlv;
#define HTT_TX_HWQ_DIFS_LATENCY_STATS_TLV_SZ(_num_elems) ( sizeof(A_UINT32) + /* hist_intvl */ \
@@ -1318,6 +1365,45 @@ typedef struct {
A_UINT32 fes_result[1]; /* HTT_TX_HWQ_MAX_FES_RESULT_STATS */
} htt_tx_hwq_fes_result_stats_tlv_v;
+#define HTT_TX_HWQ_TRIED_MPDU_CNT_HIST_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems))
+/* NOTE: Variable length TLV, use length spec to infer array size
+ *
+ * The hwq_tried_mpdu_cnt_hist is a histogram of MPDUs tries per HWQ.
+ * The tries here is the count of the MPDUS within a PPDU that the HW
+ * had attempted to transmit on air, for the HWSCH Schedule command
+ * submitted by FW in this HWQ .It is not the retry attempts. The
+ * histogram bins are 0-29, 30-59, 60-89 and so on. The are 10 bins
+ * in this histogram.
+ * they are defined in FW using the following macros
+ * #define WAL_MAX_TRIED_MPDU_CNT_HISTOGRAM 9
+ * #define WAL_TRIED_MPDU_CNT_HISTOGRAM_INTERVAL 30
+ *
+ * */
+typedef struct {
+ htt_tlv_hdr_t tlv_hdr;
+ /* Histogram of number of mpdus on tried mpdu */
+ A_UINT32 tried_mpdu_cnt_hist[1]; /* HTT_TX_HWQ_TRIED_MPDU_CNT_HIST */
+ A_UINT32 hist_bin_size;
+} htt_tx_hwq_tried_mpdu_cnt_hist_tlv_v;
+
+#define HTT_TX_HWQ_TXOP_USED_CNT_HIST_TLV_SZ(_num_elems) (sizeof(A_UINT32) * (_num_elems))
+/* NOTE: Variable length TLV, use length spec to infer array size
+ *
+ * The txop_used_cnt_hist is the histogram of txop per burst. After
+ * completing the burst, we identify the txop used in the burst and
+ * incr the corresponding bin.
+ * Each bin represents 1ms & we have 10 bins in this histogram.
+ * they are deined in FW using the following macros
+ * #define WAL_MAX_TXOP_USED_CNT_HISTOGRAM 10
+ * #define WAL_TXOP_USED_HISTOGRAM_INTERVAL 1000 ( 1 ms )
+ *
+ * */
+typedef struct {
+ htt_tlv_hdr_t tlv_hdr;
+ /* Histogram of txop used cnt */
+ A_UINT32 txop_used_cnt_hist[1]; /* HTT_TX_HWQ_TXOP_USED_CNT_HIST */
+} htt_tx_hwq_txop_used_cnt_hist_tlv_v;
+
/* STATS_TYPE : HTT_DBG_EXT_STATS_PDEV_TX_HWQ
* TLV_TAGS:
* - HTT_STATS_STRING_TAG
@@ -1326,10 +1412,17 @@ typedef struct {
* - HTT_STATS_TX_HWQ_CMD_RESULT_TAG
* - HTT_STATS_TX_HWQ_CMD_STALL_TAG
* - HTT_STATS_TX_HWQ_FES_STATUS_TAG
+ * - HTT_STATS_TX_HWQ_TRIED_MPDU_CNT_HIST_TAG
+ * - HTT_STATS_TX_HWQ_TXOP_USED_CNT_HIST_TAG
*/
/* NOTE:
* This structure is for documentation, and cannot be safely used directly.
* Instead, use the constituent TLV structures to fill/parse.
+ * General HWQ stats Mechanism:
+ * Once the host request for the stats, FW fill all the HWQ TAGS in a buffer
+ * for all the HWQ requested. & the FW send the buffer to host. In the
+ * buffer the HWQ ID is filled in mac_id__hwq_id, thus identifying each
+ * HWQ distinctly.
*/
typedef struct _htt_tx_hwq_stats {
htt_stats_string_tlv hwq_str_tlv;
@@ -1338,6 +1431,8 @@ typedef struct _htt_tx_hwq_stats {
htt_tx_hwq_cmd_result_stats_tlv_v cmd_result_tlv;
htt_tx_hwq_cmd_stall_stats_tlv_v cmd_stall_tlv;
htt_tx_hwq_fes_result_stats_tlv_v fes_stats_tlv;
+ htt_tx_hwq_tried_mpdu_cnt_hist_tlv_v tried_mpdu_tlv;
+ htt_tx_hwq_txop_used_cnt_hist_tlv_v txop_used_tlv;
} htt_tx_hwq_stats_t;
/* == TX SELFGEN STATS == */
@@ -1752,6 +1847,22 @@ typedef struct {
A_UINT32 enqueue_notify;
A_UINT32 notify_mpdu_at_head;
A_UINT32 notify_mpdu_state_valid;
+/*
+ * On receiving TQM_FLOW_NOT_EMPTY_STATUS from TQM, (on MSDUs being enqueued
+ * the flow is non empty), if the number of MSDUs is greater than the threshold,
+ * notify is incremented. UDP_THRESH counters are for UDP MSDUs, and NONUDP are
+ * for non-UDP MSDUs.
+ * MSDUQ_SWNOTIFY_UDP_THRESH1 threshold - sched_udp_notify1 is incremented
+ * MSDUQ_SWNOTIFY_UDP_THRESH2 threshold - sched_udp_notify2 is incremented
+ * MSDUQ_SWNOTIFY_NONUDP_THRESH1 threshold - sched_nonudp_notify1 is incremented
+ * MSDUQ_SWNOTIFY_NONUDP_THRESH2 threshold - sched_nonudp_notify2 is incremented
+ *
+ * Notify signifies that we trigger the scheduler.
+ */
+ A_UINT32 sched_udp_notify1;
+ A_UINT32 sched_udp_notify2;
+ A_UINT32 sched_nonudp_notify1;
+ A_UINT32 sched_nonudp_notify2;
} htt_tx_tqm_pdev_stats_tlv_v;
#define HTT_TX_TQM_CMN_STATS_MAC_ID_M 0x000000ff
@@ -1905,6 +2016,8 @@ typedef struct {
A_UINT32 eapol_lookup_failed;
A_UINT32 qpeer_not_allow_data;
A_UINT32 fse_tid_override;
+ A_UINT32 ipv6_jumbogram_zero_length;
+ A_UINT32 qos_to_non_qos_in_prog;
} htt_tx_de_classify_failed_stats_tlv;
typedef struct {
@@ -1938,6 +2051,15 @@ typedef struct {
A_UINT32 fse_hwqueue_send_to_host;
A_UINT32 mcast_entry;
A_UINT32 bcast_entry;
+ A_UINT32 htt_update_peer_cache;
+ A_UINT32 htt_learning_frame;
+ A_UINT32 fse_invalid_peer;
+ /*
+ * mec_notify is HTT TX WBM multicast echo check notification
+ * from firmware to host. FW sends SA addresses to host for all
+ * multicast/broadcast packets received on STA side.
+ */
+ A_UINT32 mec_notify;
} htt_tx_de_classify_stats_tlv;
typedef struct {
@@ -1988,6 +2110,22 @@ typedef struct {
((_var) |= ((_val) << HTT_TX_DE_CMN_STATS_MAC_ID_S)); \
} while (0)
+/*
+ * The htt_tx_de_fw2wbm_ring_full_hist_tlv is a histogram of time we waited
+ * for the fw2wbm ring buffer. we are requesting a buffer in FW2WBM release
+ * ring,which may fail, due to non availability of buffer. Hence we sleep for
+ * 200us & again request for it. This is a histogram of time we wait, with
+ * bin of 200ms & there are 10 bin (2 seconds max)
+ * They are defined by the following macros in FW
+ * #define ENTRIES_PER_BIN_COUNT 1000 // per bin 1000 * 200us = 200ms
+ * #define RING_FULL_BIN_ENTRIES (WAL_TX_DE_FW2WBM_ALLOC_TIMEOUT_COUNT /
+ * ENTRIES_PER_BIN_COUNT)
+ */
+typedef struct {
+ htt_tlv_hdr_t tlv_hdr;
+ A_UINT32 fw2wbm_ring_full_hist[1];
+} htt_tx_de_fw2wbm_ring_full_hist_tlv;
+
typedef struct {
htt_tlv_hdr_t tlv_hdr;
/* BIT [ 7 : 0] :- mac_id
@@ -2007,6 +2145,7 @@ typedef struct {
/* STATS_TYPE : HTT_DBG_EXT_STATS_TX_DE_INFO
* TLV_TAGS:
* - HTT_STATS_TX_DE_CMN_TAG
+ * - HTT_STATS_TX_DE_FW2WBM_RING_FULL_HIST_TAG
* - HTT_STATS_TX_DE_EAPOL_PACKETS_TAG
* - HTT_STATS_TX_DE_CLASSIFY_STATS_TAG
* - HTT_STATS_TX_DE_CLASSIFY_FAILED_TAG
@@ -2021,6 +2160,7 @@ typedef struct {
*/
typedef struct {
htt_tx_de_cmn_stats_tlv cmn_tlv;
+ htt_tx_de_fw2wbm_ring_full_hist_tlv fw2wbm_hist_tlv;
htt_tx_de_eapol_packets_stats_tlv eapol_stats_tlv;
htt_tx_de_classify_stats_tlv classify_stats_tlv;
htt_tx_de_classify_failed_stats_tlv classify_failed_tlv;
@@ -2641,6 +2781,8 @@ typedef struct {
/* == PDEV RX RATE CTRL STATS == */
+#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_GI_COUNTERS 4
#define HTT_RX_PDEV_STATS_NUM_DCM_COUNTERS 5
@@ -2689,6 +2831,16 @@ typedef struct {
/* Counters to track number of rx packets in each GI in each mcs (0-11) */
A_UINT32 rx_gi[HTT_RX_PDEV_STATS_NUM_GI_COUNTERS][HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS];
A_INT32 rssi_in_dbm; /* rx Signal Strength value in dBm unit */
+
+ A_UINT32 rx_11ax_su_ext;
+ A_UINT32 rx_11ac_mumimo;
+ A_UINT32 rx_11ax_mumimo;
+ A_UINT32 rx_11ax_ofdma;
+ A_UINT32 txbf;
+ A_UINT32 rx_legacy_cck_rate[HTT_RX_PDEV_STATS_NUM_LEGACY_CCK_STATS];
+ A_UINT32 rx_legacy_ofdm_rate[HTT_RX_PDEV_STATS_NUM_LEGACY_OFDM_STATS];
+ A_UINT32 rx_active_dur_us_low;
+ A_UINT32 rx_active_dur_us_high;
} htt_rx_pdev_rate_stats_tlv;
diff --git a/fw/wlan_module_ids.h b/fw/wlan_module_ids.h
index 39b9d4d..c6d5412 100644
--- a/fw/wlan_module_ids.h
+++ b/fw/wlan_module_ids.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011, 2014-2016 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2011-2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -30,79 +30,90 @@
/* Wlan module ids , global across all the modules */
typedef enum {
- WLAN_MODULE_ID_MIN = 0,
- WLAN_MODULE_INF = WLAN_MODULE_ID_MIN, /* 0x0 */
- WLAN_MODULE_WMI, /* 0x1 */
- WLAN_MODULE_STA_PWRSAVE, /* 0x2 */
- WLAN_MODULE_WHAL, /* 0x3 */
- WLAN_MODULE_COEX, /* 0x4 */
- WLAN_MODULE_ROAM, /* 0x5 */
- WLAN_MODULE_RESMGR_CHAN_MANAGER, /* 0x6 */
- WLAN_MODULE_RESMGR, /* 0x7 */
- WLAN_MODULE_VDEV_MGR, /* 0x8 */
- WLAN_MODULE_SCAN, /* 0x9 */
- WLAN_MODULE_RATECTRL, /* 0xa */
- WLAN_MODULE_AP_PWRSAVE, /* 0xb */
- WLAN_MODULE_BLOCKACK, /* 0xc */
- WLAN_MODULE_MGMT_TXRX, /* 0xd */
- WLAN_MODULE_DATA_TXRX, /* 0xe */
- WLAN_MODULE_HTT, /* 0xf */
- WLAN_MODULE_HOST, /* 0x10 */
- WLAN_MODULE_BEACON, /* 0x11 */
- WLAN_MODULE_OFFLOAD, /* 0x12 */
- WLAN_MODULE_WAL, /* 0x13 */
- WAL_MODULE_DE, /* 0x14 */
- WLAN_MODULE_PCIELP, /* 0x15 */
- WLAN_MODULE_RTT, /* 0x16 */
- WLAN_MODULE_RESOURCE, /* 0x17 */
- WLAN_MODULE_DCS, /* 0x18 */
- WLAN_MODULE_CACHEMGR, /* 0x19 */
- WLAN_MODULE_ANI, /* 0x1a */
- WLAN_MODULE_P2P, /* 0x1b */
- WLAN_MODULE_CSA, /* 0x1c */
- WLAN_MODULE_NLO, /* 0x1d */
- WLAN_MODULE_CHATTER, /* 0x1e */
- WLAN_MODULE_WOW, /* 0x1f */
- WLAN_MODULE_WAL_VDEV, /* 0x20 */
- WLAN_MODULE_WAL_PDEV, /* 0x21 */
- WLAN_MODULE_TEST, /* 0x22 */
- WLAN_MODULE_STA_SMPS, /* 0x23 */
- WLAN_MODULE_SWBMISS, /* 0x24 */
- WLAN_MODULE_WMMAC, /* 0x25 */
- WLAN_MODULE_TDLS, /* 0x26 */
- WLAN_MODULE_HB, /* 0x27 */
- WLAN_MODULE_TXBF, /* 0x28 */
- WLAN_MODULE_BATCH_SCAN, /* 0x29 */
- WLAN_MODULE_THERMAL_MGR, /* 0x2a */
- WLAN_MODULE_PHYERR_DFS, /* 0x2b */
- WLAN_MODULE_RMC, /* 0x2c */
- WLAN_MODULE_STATS, /* 0x2d */
- WLAN_MODULE_NAN, /* 0x2e */
- WLAN_MODULE_IBSS_PWRSAVE, /* 0x2f */
- WLAN_MODULE_HIF_UART, /* 0x30 */
- WLAN_MODULE_LPI, /* 0x31 */
- WLAN_MODULE_EXTSCAN, /* 0x32 */
- WLAN_MODULE_UNIT_TEST, /* 0x33 */
- WLAN_MODULE_MLME, /* 0x34 */
- WLAN_MODULE_SUPPL, /* 0x35 */
- WLAN_MODULE_ERE, /* 0x36 */
- WLAN_MODULE_OCB, /* 0x37 */
- WLAN_MODULE_RSSI_MONITOR, /* 0x38 */
- WLAN_MODULE_WPM, /* 0x39 */
- WLAN_MODULE_CSS, /* 0x3a */
- WLAN_MODULE_PPS, /* 0x3b */
- WLAN_MODULE_SCAN_CH_PREDICT, /* 0x3c */
- WLAN_MODULE_MAWC, /* 0x3d */
- WLAN_MODULE_CMC_QMIC, /* 0x3e */
- WLAN_MODULE_EGAP, /* 0x3f */
- WLAN_MODULE_NAN20, /* 0x40 */
- WLAN_MODULE_QBOOST, /* 0x41 */
- WLAN_MODULE_P2P_LISTEN_OFFLOAD, /* 0x42 */
- WLAN_MODULE_HALPHY, /* 0x43 */
- WAL_MODULE_ENQ, /* 0x44 */
+ WLAN_MODULE_ID_MIN = 0,
+ WLAN_MODULE_INF = WLAN_MODULE_ID_MIN, /* 0x0 */
+ WLAN_MODULE_WMI, /* 0x1 */
+ WLAN_MODULE_STA_PWRSAVE, /* 0x2 */
+ WLAN_MODULE_WHAL, /* 0x3 */
+ WLAN_MODULE_COEX, /* 0x4 */
+ WLAN_MODULE_ROAM, /* 0x5 */
+ WLAN_MODULE_RESMGR_CHAN_MANAGER, /* 0x6 */
+ WLAN_MODULE_RESMGR, /* 0x7 */
+ WLAN_MODULE_VDEV_MGR, /* 0x8 */
+ WLAN_MODULE_SCAN, /* 0x9 */
+ WLAN_MODULE_RATECTRL, /* 0xa */
+ WLAN_MODULE_AP_PWRSAVE, /* 0xb */
+ WLAN_MODULE_BLOCKACK, /* 0xc */
+ WLAN_MODULE_MGMT_TXRX, /* 0xd */
+ WLAN_MODULE_DATA_TXRX, /* 0xe */
+ WLAN_MODULE_HTT, /* 0xf */
+ WLAN_MODULE_HOST, /* 0x10 */
+ WLAN_MODULE_BEACON, /* 0x11 */
+ WLAN_MODULE_OFFLOAD, /* 0x12 */
+ WLAN_MODULE_WAL, /* 0x13 */
+ WAL_MODULE_DE, /* 0x14 */
+ WLAN_MODULE_PCIELP, /* 0x15 */
+ WLAN_MODULE_RTT, /* 0x16 */
+ WLAN_MODULE_RESOURCE, /* 0x17 */
+ WLAN_MODULE_DCS, /* 0x18 */
+ WLAN_MODULE_CACHEMGR, /* 0x19 */
+ WLAN_MODULE_ANI, /* 0x1a */
+ WLAN_MODULE_P2P, /* 0x1b */
+ WLAN_MODULE_CSA, /* 0x1c */
+ WLAN_MODULE_NLO, /* 0x1d */
+ WLAN_MODULE_CHATTER, /* 0x1e */
+ WLAN_MODULE_WOW, /* 0x1f */
+ WLAN_MODULE_WAL_VDEV, /* 0x20 */
+ WLAN_MODULE_WAL_PDEV, /* 0x21 */
+ WLAN_MODULE_TEST, /* 0x22 */
+ WLAN_MODULE_STA_SMPS, /* 0x23 */
+ WLAN_MODULE_SWBMISS, /* 0x24 */
+ WLAN_MODULE_WMMAC, /* 0x25 */
+ WLAN_MODULE_TDLS, /* 0x26 */
+ WLAN_MODULE_HB, /* 0x27 */
+ WLAN_MODULE_TXBF, /* 0x28 */
+ WLAN_MODULE_BATCH_SCAN, /* 0x29 */
+ WLAN_MODULE_THERMAL_MGR, /* 0x2a */
+ WLAN_MODULE_PHYERR_DFS, /* 0x2b */
+ WLAN_MODULE_RMC, /* 0x2c */
+ WLAN_MODULE_STATS, /* 0x2d */
+ WLAN_MODULE_NAN, /* 0x2e */
+ WLAN_MODULE_IBSS_PWRSAVE, /* 0x2f */
+ WLAN_MODULE_HIF_UART, /* 0x30 */
+ WLAN_MODULE_LPI, /* 0x31 */
+ WLAN_MODULE_EXTSCAN, /* 0x32 */
+ WLAN_MODULE_UNIT_TEST, /* 0x33 */
+ WLAN_MODULE_MLME, /* 0x34 */
+ WLAN_MODULE_SUPPL, /* 0x35 */
+ WLAN_MODULE_ERE, /* 0x36 */
+ WLAN_MODULE_OCB, /* 0x37 */
+ WLAN_MODULE_RSSI_MONITOR, /* 0x38 */
+ WLAN_MODULE_WPM, /* 0x39 */
+ WLAN_MODULE_CSS, /* 0x3a */
+ WLAN_MODULE_PPS, /* 0x3b */
+ WLAN_MODULE_SCAN_CH_PREDICT, /* 0x3c */
+ WLAN_MODULE_MAWC, /* 0x3d */
+ WLAN_MODULE_CMC_QMIC, /* 0x3e */
+ WLAN_MODULE_EGAP, /* 0x3f */
+ WLAN_MODULE_NAN20, /* 0x40 */
+ WLAN_MODULE_QBOOST, /* 0x41 */
+ WLAN_MODULE_P2P_LISTEN_OFFLOAD, /* 0x42 */
+ WLAN_MODULE_HALPHY, /* 0x43 */
+ WAL_MODULE_ENQ, /* 0x44 */
+ WLAN_MODULE_GNSS, /* 0x45 */
+ WLAN_MODULE_WAL_MEM, /* 0x46 */
+ WLAN_MODULE_SCHED_ALGO, /* 0x47 */
+ WLAN_MODULE_TX, /* 0x48 */
+ WLAN_MODULE_RX, /* 0x49 */
+ WLAN_MODULE_WLM, /* 0x4a */
+ WLAN_MODULE_RU_ALLOCATOR, /* 0x4b */
+ WLAN_MODULE_11K_OFFLOAD, /* 0x4c */
+ WLAN_MODULE_STA_TWT, /* 0x4d */
+ WLAN_MODULE_AP_TWT, /* 0x4e */
+ WLAN_MODULE_UL_OFDMA, /* 0x4f */
- WLAN_MODULE_ID_MAX,
- WLAN_MODULE_ID_INVALID = WLAN_MODULE_ID_MAX,
+ WLAN_MODULE_ID_MAX,
+ WLAN_MODULE_ID_INVALID = WLAN_MODULE_ID_MAX,
} WLAN_MODULE_ID;
diff --git a/fw/wmi_services.h b/fw/wmi_services.h
index e9bbeff..3ec2d63 100644
--- a/fw/wmi_services.h
+++ b/fw/wmi_services.h
@@ -255,6 +255,7 @@ typedef enum {
WMI_SERVICE_DUAL_BEACON_ON_SINGLE_MAC_MCC_SUPPORT=159, /* Support dual beacon on different channel on single MAC */
WMI_SERVICE_MOTION_DET=160, /* support for motion detection config */
WMI_SERVICE_INFRA_MBSSID=161, /* support infra multi-BSSID feature */
+ WMI_SERVICE_OBSS_SPATIAL_REUSE=162, /* support spatial reuse feature */
/******* ADD NEW SERVICES HERE *******/
diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h
index ad92b28..dfe45b4 100644
--- a/fw/wmi_tlv_defs.h
+++ b/fw/wmi_tlv_defs.h
@@ -923,6 +923,7 @@ typedef enum {
WMITLV_TAG_STRUC_wmi_motion_det_event,
WMITLV_TAG_STRUC_wmi_motion_det_base_line_event,
WMITLV_TAG_STRUC_wmi_ndp_transport_ip_param,
+ WMITLV_TAG_STRUC_wmi_obss_spatial_reuse_set_cmd_fixed_param,
} WMITLV_TAG_ID;
/*
@@ -1300,6 +1301,7 @@ typedef enum {
OP(WMI_MOTION_DET_BASE_LINE_CONFIG_PARAM_CMDID) \
OP(WMI_MOTION_DET_START_STOP_CMDID) \
OP(WMI_MOTION_DET_BASE_LINE_START_STOP_CMDID) \
+ OP(WMI_PDEV_OBSS_PD_SPATIAL_REUSE_CMDID) \
/* add new CMD_LIST elements above this line */
@@ -3746,6 +3748,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_TWT_RESUME_DIALOG_CMDID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_peer_tid_configurations_cmd_fixed_param, wmi_peer_tid_configurations_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
WMITLV_CREATE_PARAM_STRUC(WMI_PEER_TID_CONFIGURATIONS_CMDID);
+/* OBSS_PD Spatial_Reuse cnmd */
+#define WMITLV_TABLE_WMI_PDEV_OBSS_PD_SPATIAL_REUSE_CMDID(id,op,buf,len) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_obss_spatial_reuse_set_cmd_fixed_param, wmi_obss_spatial_reuse_set_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX)
+WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_OBSS_PD_SPATIAL_REUSE_CMDID);
+
/************************** TLV definitions of WMI events *******************************/
diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h
index 86cf40d..990636d 100644
--- a/fw/wmi_unified.h
+++ b/fw/wmi_unified.h
@@ -244,6 +244,7 @@ typedef enum {
WMI_GRP_11K_OFFLOAD, /* 0x3d */
WMI_GRP_TWT, /* 0x3e TWT (Target Wake Time) for STA and AP */
WMI_GRP_MOTION_DET, /* 0x3f */
+ WMI_GRP_SPATIAL_REUSE, /* 0x40 */
} WMI_GRP_ID;
#define WMI_CMD_GRP_START_ID(grp_id) (((grp_id) << 12) | 0x1)
@@ -1139,6 +1140,9 @@ typedef enum {
WMI_MOTION_DET_BASE_LINE_CONFIG_PARAM_CMDID,
WMI_MOTION_DET_START_STOP_CMDID,
WMI_MOTION_DET_BASE_LINE_START_STOP_CMDID,
+
+ /** WMI commands related to OBSS PD Spatial Reuse **/
+ WMI_PDEV_OBSS_PD_SPATIAL_REUSE_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_SPATIAL_REUSE),
} WMI_CMD_ID;
typedef enum {
@@ -4156,6 +4160,14 @@ typedef struct {
A_UINT32 vdev_id;
A_UINT32 desc_id; /* echoed in tx_compl_event */
A_UINT32 chanfreq; /* MHz units */
+ /* WMI_MGMT_TX_SEND_CMDID is used for both pass by value and
+ * pass by reference WMI management frames.
+ *
+ * a) If the command is for pass by reference,
+ * paddr_lo and padd_hi will hold the address of remote/host buffer
+ * b) If the command is for pass by value,
+ * paddr_lo and paddr_hi will be NULL.
+ */
A_UINT32 paddr_lo;
A_UINT32 paddr_hi;
A_UINT32 frame_len;
@@ -5073,6 +5085,25 @@ typedef enum {
* Bit 3-5: "Xretry threshold" to use
*/
WMI_PDEV_PARAM_SECONDARY_RETRY_ENABLE, /* 0xA0 */
+ /** Set global uplink triggered PPDU duration limit (usec). */
+ WMI_PDEV_PARAM_SET_UL_PPDU_DURATION, /* 0xA1 */
+ /** Set target buffer status report trigger interval (ms) */
+ WMI_PDEV_PARAM_SET_UL_BSR_TRIG_INTERVAL, /* 0xA2 */
+ /** Use simplified equal RU allocation for DL and UL OFDMA */
+ WMI_PDEV_PARAM_EQUAL_RU_ALLOCATION_ENABLE, /* 0xA3 */
+ /** Enable/disable MWS-COEX 4G (LTE) Quick FTDM.
+ * 0 - Don't allow quick FTDM Policy (Default)
+ * 1 - Allow quick FTDM policy.
+ */
+ WMI_PDEV_PARAM_MWSCOEX_4G_ALLOW_QUICK_FTDM, /* 0xA4 */
+ /** Set MWS-COEX 5G-NR power limit.
+ * 0: Don't apply user specific power limit,
+ * use internal power limit (Default)
+ * 1-2: invalid value (ignored)
+ * 3-21: apply the specified value as the external power limit, in dBm
+ * >21: invalid value (ignored)
+ */
+ WMI_PDEV_PARAM_MWSCOEX_SET_5GNR_PWR_LIMIT, /* 0xA5 */
} WMI_PDEV_PARAM;
typedef struct {
@@ -6270,6 +6301,8 @@ typedef struct {
A_UINT32 pdev_id; /** pdev_id for identifying the MAC. See macros starting with WMI_PDEV_ID_ for values. In non-DBDC case host should set it to 0. */
/** number of beacon stats event structures (wmi_bcn_stats) */
A_UINT32 num_bcn_stats;
+ /** number of extended peer stats event structures (wmi_peer_extd_stats) */
+ A_UINT32 num_peer_extd_stats;
/* This TLV is followed by another TLV of array of bytes
* A_UINT8 data[];
@@ -6949,7 +6982,10 @@ typedef struct {
A_UINT32 last_tx_rate_code;
/** TX power used by peer - units are 0.5 dBm */
A_INT32 last_tx_power;
- A_UINT32 reserved[4]; /** for future use - add new peer stats here */
+
+ /* Total number of received multicast & broadcast data frames corresponding to this peer */
+ A_UINT32 rx_mc_bc_cnt; /* 1 in the MSB of rx_mc_bc_cnt represents a valid data */
+ A_UINT32 reserved[3]; /** for future use - add new peer stats here */
} wmi_peer_extd_stats;
typedef struct {
@@ -8532,6 +8568,96 @@ typedef enum {
*/
WMI_VDEV_PARAM_GTX_ENABLE, /* 0x85 */
+ /*
+ * Enable/Disable multicast buffer.
+ * A FLAG to enable & disable buffering of multicast frames at AP
+ * when stations are in Power Save mode.
+ * Once AP disables buffering of multicast frame,
+ * clients which goes into Power save mode will not receive these frames.
+ * by default MCAST buffering will be enabled.
+ * (CABQ = Content After Beacon Queue = multicast queue)
+ * Host will send this VDEV param command,
+ * With Value = 1 means fw will disable the MCAST buffering
+ * With Value = 0 means fw will enable the MCAST buffering.
+ */
+ WMI_VDEV_PARAM_DISABLE_CABQ, /* 0x86 */
+
+ /**
+ * For SU and MU sounding
+ * switch between su ac/ax sounding and mu ac/ax sounding
+ * switch between triggered/ non-triggered on ax sounding enabled.
+ * each bit toggles the corresponding modes by enabling/disabling
+ *
+ * Bit 1 doesn't carry any operation for now and may change later,
+ * so reserved.
+ *
+ *-----------------------
+ * bit(0) | mode
+ *-----------------------
+ * 0 | AC
+ * 1 | AX
+ *-----------------------
+ *
+ * bit(1) | Reserved
+ *
+ *-----------------------
+ * bit(2) | mode
+ *-----------------------
+ * 0 | SU
+ * 1 | MU
+ *-----------------------
+ * bit(3) | mode
+ *-----------------------
+ * 0 | non -triggered
+ * 1 | triggered
+ */
+ WMI_VDEV_PARAM_SET_HE_SOUNDING_MODE, /* 0x87 */
+
+ /** Fixed rate setting used in UL Trigger
+ * The top nibble is used to select which format to use for encoding
+ * the rate specification: 0xVXXXXXXX, V must be 1 for the UL
+ * format.
+ * If V == 0b0001: format is: 0x1000RRRR.
+ * This will be output of WMI_ASSEMBLE_RATECODE_V1
+ *
+ * This parameter controls the UL OFDMA and UL MU-MIMO vdev fixed rate.
+ */
+ WMI_VDEV_PARAM_UL_FIXED_RATE, /* 0x88 */
+
+ /**
+ * Uplink MU-MIMO & OFDMA GI configuration used in UL Trigger
+ * 11AX: GI =
+ * WMI_GI_400_NS, WMI_GI_800_NS, WMI_GI_1600_NS, or WMI_GI_3200_NS
+ * 11N: SGI=WMI_GI_400_NS
+ */
+ WMI_VDEV_PARAM_UL_GI, /* 0x89 */
+
+ /** Enable/Disable LDPC in UL Trigger */
+ WMI_VDEV_PARAM_UL_LDPC, /* 0x8A */
+
+ /** Max NSS allowed in UL Trigger */
+ WMI_VDEV_PARAM_UL_NSS, /* 0x8B */
+
+ /** Enable/Disable STBC in UL Trigger */
+ WMI_VDEV_PARAM_UL_STBC, /* 0x8C */
+
+ /** specify the HE LTF setting that should be used for fixed rate
+ * uplink transmissions.
+ *
+ * Expects values of WMI_HE_LTF_DEFAULT, WMI_HE_LTF_1X, WMI_HE_LTF_2X,
+ * or WMI_HE_LTF_4X.
+ */
+ WMI_VDEV_PARAM_UL_HE_LTF, /* 0x8D */
+
+ /** Uplink OFDMA PPDU bandwidth (0: 20MHz, 1: 40MHz, 2: 80Mhz, 3: 160MHz)*/
+ WMI_VDEV_PARAM_UL_PPDU_BW, /* 0x8E */
+
+ /** Enable/Disable FW handling MU EDCA change from AP (1: En, 0:Dis) */
+ WMI_VDEV_PARAM_MU_EDCA_FW_UPDATE_EN, /* 0x8F */
+
+ /** Update dot11ObssNbruToleranceTime in fw. Param value: seconds */
+ WMI_VDEV_PARAM_UPDATE_OBSS_RU_TOLERANCE_TIME, /* 0x90 */
+
/*=== ADD NEW VDEV PARAM TYPES ABOVE THIS LINE ===
* The below vdev param types are used for prototyping, and are
@@ -8592,6 +8718,10 @@ typedef enum {
#define WMI_VDEV_HE_ULMUMIMO_ENABLE(hemu_mode) WMI_SET_BITS(hemu_mode, 6, 1, 1)
#define WMI_VDEV_HE_ULMUMIMO_DISABLE(hemu_mode) WMI_SET_BITS(hemu_mode, 6, 1, 0)
+#define WMI_VDEV_HE_AX_SOUNDING_IS_ENABLED(mode) WMI_GET_BITS(mode, 0, 1)
+#define WMI_VDEV_HE_MU_SOUNDING_IS_ENABLED(mode) WMI_GET_BITS(mode, 2, 1)
+#define WMI_VDEV_HE_AX_TRIG_SOUNDING_IS_ENABLED(mode) WMI_GET_BITS(mode, 3, 1)
+
/* vdev capabilities bit mask */
#define WMI_VDEV_BEACON_SUPPORT 0x1
#define WMI_VDEV_WDS_LRN_ENABLED 0x2
@@ -9887,6 +10017,15 @@ typedef struct {
#define WMI_PEER_PARAM_OFDMA_ENABLE 0x19
/* Per peer 11ax/11ac MU enable or disable */
#define WMI_PEER_PARAM_MU_ENABLE 0x1a
+/** Set peer fixed rate used in UL Trigger
+ * The top nibble is used to select which format to use for encoding
+ * the rate specification: 0xVXXXXXXX, V must be 1 for this parameter.
+ * If V == 0b0001: format is: 0x1000RRRR.
+ * This will be output of WMI_ASSEMBLE_RATECODE_V1
+ *
+ * This parameter controls the UL OFDMA and UL MU-MIMO peer fixed rate.
+ */
+#define WMI_PEER_PARAM_UL_FIXED_RATE 0x1b
/** mimo ps values for the parameter WMI_PEER_MIMO_PS_STATE */
#define WMI_PEER_MIMO_PS_NONE 0x0
@@ -10051,6 +10190,9 @@ typedef struct {
#define WMI_PEER_DYN_MIMOPS 0x00020000 /* Dynamic MIMO PS Enabled */
#define WMI_PEER_STATIC_MIMOPS 0x00040000 /* Static MIMO PS enabled */
#define WMI_PEER_SPATIAL_MUX 0x00200000 /* SM Enabled */
+#define WMI_PEER_TWT_REQ 0x00400000 /* TWT Requester Support bit in Extended Capabilities element */
+#define WMI_PEER_TWT_RESP 0x00800000 /* TWT Responder Support bit in Extended Capabilities element */
+#define WMI_PEER_MULTI_BSSID 0x01000000 /* Multiple BSSID Support bit in Extended Capabilities element */
#define WMI_PEER_VHT 0x02000000 /* VHT Enabled */
#define WMI_PEER_80MHZ 0x04000000 /* 80MHz enabld */
#define WMI_PEER_PMF 0x08000000 /* Robust Management Frame Protection enabled */
@@ -13268,6 +13410,12 @@ typedef enum
WMI_VENDOR_OUI_ACTION_CCKM_1X1 = 2, /* TX (only) CCKM rates with 1 chain only */
WMI_VENDOR_OUI_ACTION_ALT_ITO = 3, /* inactivity time-out */
WMI_VENDOR_OUI_ACTION_SWITCH_TO_11N_MODE = 4, /* Switch from 11ac to 11n mode to avoid IOT issues with ONM frame */
+ /* WMI_VENDOR_OUI_ACTION_CONNECTION_1X1_NUM_TX_RX_CHAINS_1
+ * Connect in 1x1 only and Use only one chain for both Tx and Rx
+ * to avoid IOT issues due to change in number of Tx and Rx chains
+ */
+ WMI_VENDOR_OUI_ACTION_CONNECTION_1X1_NUM_TX_RX_CHAINS_1 = 5,
+
/* Add any action before this line */
WMI_VENDOR_OUI_ACTION_MAX_ACTION_ID
} wmi_vendor_oui_action_id;
@@ -21776,6 +21924,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command)
WMI_RETURN_STRING(WMI_MNT_FILTER_CMDID);
WMI_RETURN_STRING(WMI_PDEV_GET_CHIP_POWER_STATS_CMDID);
WMI_RETURN_STRING(WMI_COEX_GET_ANTENNA_ISOLATION_CMDID);
+ WMI_RETURN_STRING(WMI_SAR_LIMITS_CMDID);
WMI_RETURN_STRING(WMI_PDEV_SET_STATS_THRESHOLD_CMDID);
WMI_RETURN_STRING(WMI_REQUEST_WLAN_STATS_CMDID);
WMI_RETURN_STRING(WMI_VDEV_ENCRYPT_DECRYPT_DATA_REQ_CMDID);
@@ -22344,9 +22493,13 @@ typedef enum {
#define WLM_FLAGS_ROAM_SUPPRESS 1
#define WLM_FLAGS_ALLOW_FINAL_BMISS_ROAM 2
-/* bit 8-9: reserved for roaming */
+/* bit 8: reserved for roaming */
+
+/* bit 9-11 of flags is used for powersave operation */
+/* bit 9: WLM_FLAGS_PS_DISABLE_BMPS, disable BMPS if bit is set */
+
+#define WLM_FLAGS_PS_DISABLE_BMPS 1 /* disable BMPS */
-/* bit 10-11 of flags is used for powersave operation */
/* bit 10: WLM_FLAGS_PS_DISABLE_CSS_COLLAPSE, disable css power collapse if bit is set */
#define WLM_FLAGS_PS_DISABLE_CSS_COLLAPSE 1 /* disable css power collapse */
@@ -22366,6 +22519,7 @@ typedef enum {
#define WLM_FLAGS_SCAN_SET_DWELL_TIME_POLICY(flag, val) WMI_SET_BITS(flag, 2, 2, val)
#define WLM_FLAGS_ROAM_GET_POLICY(flag) WMI_GET_BITS(flag, 6, 2)
#define WLM_FLAGS_ROAM_SET_POLICY(flag, val) WMI_SET_BITS(flag, 6, 2, val)
+#define WLM_FLAGS_PS_IS_BMPS_DISABLED(flag) WMI_GET_BITS(flag, 9, 1)
#define WLM_FLAGS_PS_IS_CSS_CLPS_DISABLED(flag) WMI_GET_BITS(flag, 10, 1)
#define WLM_FLAGS_PS_SET_CSS_CLPS_DISABLE(flag, val) WMI_SET_BITS(flag, 10, 1, val)
#define WLM_FLAGS_PS_IS_SYS_SLP_DISABLED(flag) WMI_GET_BITS(flag, 11, 1)
@@ -23013,6 +23167,27 @@ typedef struct {
* phase (in %); reserved for future */
} wmi_motion_det_base_line_event;
+/* Below structures are related to OBSS_PD_SPATIAL Reuse */
+typedef struct {
+ /** TLV tag and len; tag equals
+ * WMITLV_TAG_STRUC_wmi_obss_set_cmd_fixed_param */
+ A_UINT32 tlv_header;
+ /** Enable/Disable Spatial Reuse */
+ A_UINT32 enable;
+ /*
+ * In the below fields, "OBSS level" refers to the power of the
+ * signals received from "Other BSS".
+ * Spatial reuse will only be permitted if the Other BSS's signal power
+ * is witin the min to max range specified by the below fields.
+ */
+ /** Minimum OBSS level to use */
+ A_INT32 obss_min; /* RSSI in dBm */
+ /** Maximum OBSS level to use */
+ A_INT32 obss_max; /* RSSI in dBm */
+ /** Vdev id*/
+ A_UINT32 vdev_id;
+} wmi_obss_spatial_reuse_set_cmd_fixed_param;
+
/* ADD NEW DEFS HERE */
diff --git a/fw/wmi_version.h b/fw/wmi_version.h
index dafa2fe..1a6a899 100644
--- a/fw/wmi_version.h
+++ b/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_ 545
+#define __WMI_REVISION_ 555
/** The Version Namespace should not be normally changed. Only
* host and firmware of the same WMI namespace will work