[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