summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fw/htt.h55
-rwxr-xr-xfw/wmi_services.h1
-rwxr-xr-xfw/wmi_tlv_defs.h3
-rwxr-xr-xfw/wmi_unified.h24
-rwxr-xr-xfw/wmi_version.h2
5 files changed, 70 insertions, 15 deletions
diff --git a/fw/htt.h b/fw/htt.h
index 103026bc2703..64d1391aaed2 100644
--- a/fw/htt.h
+++ b/fw/htt.h
@@ -172,9 +172,10 @@
* 3.55 Add initiator / responder flags to RX_DELBA indication
* 3.56 Fix HTT_RX_RING_SELECTION_CFG_PKT_TYPE_ENABLE bit-mask defs
* 3.57 Add support for in-band data within HTT_T2H_MSG_TYPE_CFR_DUMP_COMPL_IND
+ * 3.58 Add optional MSDU ack RSSI array to end of HTT_T2H TX_COMPL_IND msg
*/
#define HTT_CURRENT_VERSION_MAJOR 3
-#define HTT_CURRENT_VERSION_MINOR 57
+#define HTT_CURRENT_VERSION_MINOR 58
#define HTT_NUM_TX_FRAG_DESC 1024
@@ -8067,22 +8068,27 @@ PREPACK struct htt_txq_group {
* The following diagram shows the format of the TX completion indication sent
* from the target to the host
*
- * |31 27|26|25|24|23 16| 15 |14 11|10 8|7 0|
- * |------------------------------------------------------------|
- * header: | rsvd |TP|A1|A0| num | t_i| tid |status| msg_type |
- * |------------------------------------------------------------|
- * payload: | MSDU1 ID | MSDU0 ID |
- * |------------------------------------------------------------|
- * : MSDU3 ID : MSDU2 ID :
- * |------------------------------------------------------------|
- * | struct htt_tx_compl_ind_append_retries |
- * |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -|
- * | struct htt_tx_compl_ind_append_tx_tstamp |
- * |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -|
+ * |31 28|27|26|25|24|23 16| 15 |14 11|10 8|7 0|
+ * |-------------------------------------------------------------|
+ * header: |rsvd |A2|TP|A1|A0| num | t_i| tid |status| msg_type |
+ * |-------------------------------------------------------------|
+ * payload: | MSDU1 ID | MSDU0 ID |
+ * |-------------------------------------------------------------|
+ * : MSDU3 ID : MSDU2 ID :
+ * |-------------------------------------------------------------|
+ * | struct htt_tx_compl_ind_append_retries |
+ * |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -|
+ * | struct htt_tx_compl_ind_append_tx_tstamp |
+ * |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -|
+ * | MSDU1 ACK RSSI | MSDU0 ACK RSSI |
+ * |-------------------------------------------------------------|
+ * : MSDU3 ACK RSSI : MSDU2 ACK RSSI :
+ * |- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -|
* Where:
* A0 = append (a.k.a. append0)
* A1 = append1
* TP = MSDU tx power presence
+ * A2 = append2
*
* The following field definitions describe the format of the TX completion
* indication sent from the target to the host
@@ -8136,6 +8142,19 @@ PREPACK struct htt_txq_group {
* which MSDU ID.
* Value: 0 indicates MSDU tx power reports are not appended,
* 1 indicates MSDU tx power reports are appended
+ * - append2
+ * Bits 27:27
+ * Purpose: Indicate whether data ACK RSSI is appended for each MSDU in
+ * TX_COMP_IND message. The order of the per-MSDU ACK RSSI report
+ * matches the order of the MSDU IDs. Although the ACK RSSI is the
+ * same for all MSDUs witin a single PPDU, the RSSI is duplicated
+ * for each MSDU, for convenience.
+ * The ACK RSSI values are valid when status is COMPLETE_OK (and
+ * this append2 bit is set).
+ * The ACK RSSI values are SNR in dB, i.e. are the RSSI in units of
+ * dB above the noise floor.
+ * Value: 0 indicates MSDU ACK RSSI values are not appended,
+ * 1 indicates MSDU ACK RSSI values are appended.
* Payload fields:
* - hmsdu_id
* Bits 15:0
@@ -8157,6 +8176,8 @@ PREPACK struct htt_txq_group {
#define HTT_TX_COMPL_IND_APPEND1_M 0x02000000
#define HTT_TX_COMPL_IND_TX_POWER_S 26
#define HTT_TX_COMPL_IND_TX_POWER_M 0x04000000
+#define HTT_TX_COMPL_IND_APPEND2_S 27
+#define HTT_TX_COMPL_IND_APPEND2_M 0x08000000
#define HTT_TX_COMPL_IND_STATUS_SET(_info, _val) \
do { \
@@ -8208,6 +8229,14 @@ PREPACK struct htt_txq_group {
} while (0)
#define HTT_TX_COMPL_IND_TX_POWER_GET(_info) \
(((_info) & HTT_TX_COMPL_IND_TX_POWER_M) >> HTT_TX_COMPL_IND_TX_POWER_S)
+#define HTT_TX_COMPL_IND_APPEND2_SET(_info, _val) \
+ do { \
+ HTT_CHECK_SET_VAL(HTT_TX_COMPL_IND_APPEND2, _val); \
+ ((_info) |= ((_val) << HTT_TX_COMPL_IND_APPEND2_S)); \
+ } while (0)
+#define HTT_TX_COMPL_IND_APPEND2_GET(_info) \
+ (((_info) & HTT_TX_COMPL_IND_APPEND2_M) >> HTT_TX_COMPL_IND_APPEND2_S)
+
#define HTT_TX_COMPL_INV_TX_POWER 0xffff
#define HTT_TX_COMPL_CTXT_SZ sizeof(A_UINT16)
diff --git a/fw/wmi_services.h b/fw/wmi_services.h
index 6a8334476232..cf6b14d27544 100755
--- a/fw/wmi_services.h
+++ b/fw/wmi_services.h
@@ -267,6 +267,7 @@ typedef enum {
WMI_SERVICE_PEER_CHWIDTH_CHANGE = 171, /* Support for host to update/re-intersect the node capability */
WMI_SERVICE_WLAN_HPCS_PULSE=172, /* Support for High Precision Clock Synchronization feature */
WMI_SERVICE_PER_VDEV_CHAINMASK_CONFIG_SUPPORT=173, /* Support for configuring chainmask per VDEV */
+ WMI_SERVICE_TX_DATA_MGMT_ACK_RSSI=174, /* ACK RSSI indication to host for host TX data and mgmt frame */
/******* ADD NEW SERVICES HERE *******/
diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h
index 46fc5b5e3e1b..d2236b8d0d17 100755
--- a/fw/wmi_tlv_defs.h
+++ b/fw/wmi_tlv_defs.h
@@ -3981,7 +3981,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_OFFCHAN_DATA_TX_COMPLETION_EVENTID);
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_mgmt_tx_compl_bundle_event_fixed_param, wmi_mgmt_tx_compl_bundle_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, desc_ids, WMITLV_SIZE_VAR) \
WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, status, WMITLV_SIZE_VAR) \
- WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, ppdu_id, WMITLV_SIZE_VAR)
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, ppdu_id, WMITLV_SIZE_VAR) \
+ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, ack_rssi, WMITLV_SIZE_VAR)
WMITLV_CREATE_PARAM_STRUC(WMI_MGMT_TX_BUNDLE_COMPLETION_EVENTID);
/* VDEV Start response Event */
diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h
index a241f1ffb3c8..0a5e6d445fd9 100755
--- a/fw/wmi_unified.h
+++ b/fw/wmi_unified.h
@@ -2845,6 +2845,15 @@ typedef struct {
#define WMI_RSRC_CFG_FLAG_EAPOL_AC_OVERRIDE_S 16
#define WMI_RSRC_CFG_FLAG_EAPOL_AC_OVERRIDE_M 0x30000
+ /*
+ * If TX_ACK_RSSI is set, then the target should populate the ack_rssi
+ * field within the WMI_MGMT_TX_COMPLETION_EVENT message, the ack_rssi
+ * TLV within the WMI_MGMT_TX_BUNDLE_COMPLETION_EVENT message, and the
+ * "MSDU ACK RSSI" array within the HTT_T2H TX_COMPL_IND message.
+ */
+ #define WMI_RSRC_CFG_FLAG_TX_ACK_RSSI_S 18
+ #define WMI_RSRC_CFG_FLAG_TX_ACK_RSSI_M 0x40000
+
A_UINT32 flag1;
/** @brief smart_ant_cap - Smart Antenna capabilities information
@@ -3073,6 +3082,12 @@ typedef struct {
#define WMI_RSRC_CFG_FLAG_EAPOL_AC_OVERRIDE_GET(word32) \
WMI_RSRC_CFG_FLAG_GET((word32), EAPOL_AC_OVERRIDE)
+#define WMI_RSRC_CFG_FLAG_TX_ACK_RSSI_SET(word32, value) \
+ WMI_RSRC_CFG_FLAG_SET((word32), TX_ACK_RSSI, (value))
+#define WMI_RSRC_CFG_FLAG_TX_ACK_RSSI_GET(word32) \
+ WMI_RSRC_CFG_FLAG_GET((word32), TX_ACK_RSSI)
+
+
typedef struct {
A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_init_cmd_fixed_param */
@@ -5547,6 +5562,13 @@ typedef struct {
* A ppdu_id value of 0x0 is invalid, and should be ignored.
*/
A_UINT32 ppdu_id;
+ /* ack_rssi
+ * TX mgmt ack RSSI report to host.
+ * Only valid when status == COMPLETE_OK and the ACK_RSSI report is enabled
+ * ACK RSSI is reported as SNR dB, i.e. how many dB the RSSI is above
+ * the noise floor.
+ */
+ A_UINT32 ack_rssi;
} wmi_mgmt_tx_compl_event_fixed_param;
typedef struct {
@@ -5571,6 +5593,8 @@ typedef struct {
* A_UINT32 desc_ids[num_reports]; <- from tx_send_cmd
* A_UINT32 status[num_reports]; <- WMI_MGMT_TX_COMP_STATUS_TYPE
* A_UINT32 ppdu_id[num_reports]; <- list of PPDU IDs
+ * A_UINT32 ack_rssi[num_reports]; <- list of ack RSSI
+ * RSSI units = dB w.r.t. noise floor
*/
} wmi_mgmt_tx_compl_bundle_event_fixed_param;
diff --git a/fw/wmi_version.h b/fw/wmi_version.h
index 299392d0eb78..f39b6b8a29eb 100755
--- 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_ 585
+#define __WMI_REVISION_ 586
/** The Version Namespace should not be normally changed. Only
* host and firmware of the same WMI namespace will work