[PATCH ath-next v2] wifi: ath12k: support average ack rssi in station dump
Nicolas Escande
nico.escande at gmail.com
Thu Jun 12 05:10:15 PDT 2025
On Thu Jun 12, 2025 at 1:46 PM CEST, Sowmiya Sree Elavalagan wrote:
> From: Sivashankari Madhavan <quic_sivamadh at quicinc.com>
>
> Currently, the ACK RSSI value is not shown in station dump. Enable WMI
> resource flag for ACK RSSI in WMI INIT command to add ACK RSSI value in
> management TX completion event from WMI. Update ACK RSSI value obtained
> in management and data frame completion path to ieee80211_tx_info. Also
> advertise NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT flag during hardware
> register to mac80211 layer so that ACK RSSI is added to station dump
> message.
>
> Example output :
> Station 00:03:7f:01:5c:4b (on wlp88s0)
> inactive time: 46584 ms
> rx bytes: 955
> rx packets: 10
> tx bytes: 769
> tx packets: 6
> tx retries: 81
> tx failed: 0
> rx drop misc: 0
> signal: -39 dBm
> signal avg: -40 dBm
> tx bitrate: 6.0 MBit/s
> tx duration: 1185 us
> rx bitrate: 309.7 MBit/s 40MHz HE-MCS 6 HE-NSS 2 HE-GI 0 HE-DCM 0
> rx duration: 0 us
> last ack signal:-41 dBm
> avg ack signal: -40 dBm
> authorized: yes
> authenticated: yes
> .......
>
> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.4.1-00199-QCAHKSWPL_SILICONZ-1
> Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
>
> Signed-off-by: Sivashankari Madhavan <quic_sivamadh at quicinc.com>
> Signed-off-by: Sowmiya Sree Elavalagan <quic_ssreeela at quicinc.com>
[...]
> @@ -5651,6 +5655,8 @@ static int ath12k_pull_mgmt_tx_compl_param_tlv(struct ath12k_base *ab,
> param->pdev_id = ev->pdev_id;
> param->desc_id = ev->desc_id;
> param->status = ev->status;
> + param->ppdu_id = ev->ppdu_id;
Hello,
It seems this ppdu_id is retrieved from frimware but not used in this patchset
Is this by design ?
> + param->ack_rssi = ev->ack_rssi;
>
> kfree(tb);
> return 0;
> @@ -6552,7 +6558,8 @@ static void ath12k_mgmt_tx_compl_event(struct ath12k_base *ab, struct sk_buff *s
> }
>
> wmi_process_mgmt_tx_comp(ar, le32_to_cpu(tx_compl_param.desc_id),
> - le32_to_cpu(tx_compl_param.status));
> + le32_to_cpu(tx_compl_param.status),
> + le32_to_cpu(tx_compl_param.ack_rssi));
>
> ath12k_dbg(ab, ATH12K_DBG_MGMT,
> "mgmt tx compl ev pdev_id %d, desc_id %d, status %d",
> diff --git a/drivers/net/wireless/ath/ath12k/wmi.h b/drivers/net/wireless/ath/ath12k/wmi.h
> index ac18f75e0449..49010367dc06 100644
> --- a/drivers/net/wireless/ath/ath12k/wmi.h
> +++ b/drivers/net/wireless/ath/ath12k/wmi.h
> @@ -2486,6 +2486,7 @@ struct wmi_init_cmd {
> #define WMI_RSRC_CFG_FLAGS2_RX_PEER_METADATA_VERSION GENMASK(5, 4)
> #define WMI_RSRC_CFG_FLAG1_BSS_CHANNEL_INFO_64 BIT(5)
> #define WMI_RSRC_CFG_FLAGS2_CALC_NEXT_DTIM_COUNT_SET BIT(9)
> +#define WMI_RSRC_CFG_FLAG1_ACK_RSSI BIT(18)
>
> struct ath12k_wmi_resource_config_params {
> __le32 tlv_header;
> @@ -4445,6 +4446,8 @@ struct wmi_mgmt_tx_compl_event {
> __le32 desc_id;
> __le32 status;
> __le32 pdev_id;
> + __le32 ppdu_id;
> + __le32 ack_rssi;
> } __packed;
>
> struct wmi_scan_event {
>
> base-commit: 9f92c4a01c5268f57fa19dd7cbcb1f59b0e66da6
More information about the ath12k
mailing list