diff options
| -rw-r--r-- | fw/htt.h | 55 | ||||
| -rwxr-xr-x | fw/wmi_services.h | 1 | ||||
| -rwxr-xr-x | fw/wmi_tlv_defs.h | 3 | ||||
| -rwxr-xr-x | fw/wmi_unified.h | 24 | ||||
| -rwxr-xr-x | fw/wmi_version.h | 2 |
5 files changed, 70 insertions, 15 deletions
@@ -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 |
