From: Jeff Johnson <quic_jjohnson@quicinc.com>
To: Sowmiya Sree Elavalagan <quic_ssreeela@quicinc.com>,
<ath12k@lists.infradead.org>
Cc: <linux-wireless@vger.kernel.org>,
Sivashankari Madhavan <quic_sivamadh@quicinc.com>
Subject: Re: [PATCH] wifi: ath12k: support average ack rssi in station dump
Date: Tue, 14 May 2024 10:02:09 -0700 [thread overview]
Message-ID: <27d7b0d8-5e1b-4df1-987a-159b559b85d8@quicinc.com> (raw)
In-Reply-To: <20240514124949.2197384-1-quic_ssreeela@quicinc.com>
On 5/14/2024 5:49 AM, Sowmiya Sree Elavalagan wrote:
> From: Sivashankari Madhavan <quic_sivamadh@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:12:cc:cc (on wlo1)
> inactive time: 600 ms
> rx bytes: 288106
> rx packets: 1446
> tx bytes: 41818
> tx packets: 342
> tx retries: 64
> tx failed: 0
> beacon loss: 0
> beacon rx: 602
> rx drop misc: 51
> signal: 0 dBm
> beacon signal avg: -44 dBm
> tx duration: 0 us
> rx bitrate: 1441.1 MBit/s 80MHz HE-MCS 9 HE-NSS 3 HE-GI 0 HE-DCM 0
> rx duration: 0 us
> last ack signal:-51 dBm
> avg ack signal: -50 dBm
> authorized: yes
> .......
>
> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-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@quicinc.com>
> Signed-off-by: Sowmiya Sree Elavalagan <quic_ssreeela@quicinc.com>
>
> Depends-On: wifi: ath12k: fix the issue that calculation of ack signal strength
> https://patchwork.kernel.org/project/linux-wireless/patch/20240511030917.65811-1-quic_lingbok@quicinc.com/
Does your patch not need to consider whether or not
WMI_TLV_SERVICE_HW_DB2DBM_CONVERSION_SUPPORT is enabled?
> ---
> drivers/net/wireless/ath/ath12k/dp_tx.c | 2 ++
> drivers/net/wireless/ath/ath12k/mac.c | 1 +
> drivers/net/wireless/ath/ath12k/wmi.c | 15 +++++++++++----
> drivers/net/wireless/ath/ath12k/wmi.h | 3 +++
> 4 files changed, 17 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath12k/dp_tx.c b/drivers/net/wireless/ath/ath12k/dp_tx.c
> index 32496015cf9a..43bdb49d08e2 100644
> --- a/drivers/net/wireless/ath/ath12k/dp_tx.c
> +++ b/drivers/net/wireless/ath/ath12k/dp_tx.c
> @@ -541,6 +541,8 @@ static void ath12k_dp_tx_status_parse(struct ath12k_base *ab,
>
> ts->ppdu_id = le32_get_bits(desc->info1,
> HAL_WBM_COMPL_TX_INFO1_TQM_STATUS_NUMBER);
> + ts->ack_rssi = le32_get_bits(desc->info2,
> + HAL_WBM_COMPL_TX_INFO2_ACK_FRAME_RSSI);
> if (le32_to_cpu(desc->rate_stats.info0) & HAL_TX_RATE_STATS_INFO0_VALID)
> ts->rate_stats = le32_to_cpu(desc->rate_stats.info0);
> else
> diff --git a/drivers/net/wireless/ath/ath12k/mac.c b/drivers/net/wireless/ath/ath12k/mac.c
> index 96dc5c2e096f..1f4739269544 100644
> --- a/drivers/net/wireless/ath/ath12k/mac.c
> +++ b/drivers/net/wireless/ath/ath12k/mac.c
> @@ -8733,6 +8733,7 @@ static int ath12k_mac_hw_register(struct ath12k_hw *ah)
>
> wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_CQM_RSSI_LIST);
> wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_STA_TX_PWR);
> + wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT);
>
> wiphy->cipher_suites = cipher_suites;
> wiphy->n_cipher_suites = ARRAY_SIZE(cipher_suites);
> diff --git a/drivers/net/wireless/ath/ath12k/wmi.c b/drivers/net/wireless/ath/ath12k/wmi.c
> index 3004c7463be9..fe909d866539 100644
> --- a/drivers/net/wireless/ath/ath12k/wmi.c
> +++ b/drivers/net/wireless/ath/ath12k/wmi.c
> @@ -3468,7 +3468,8 @@ ath12k_wmi_copy_resource_config(struct ath12k_wmi_resource_config_params *wmi_cf
> wmi_cfg->max_bssid_rx_filters = cpu_to_le32(tg_cfg->max_bssid_rx_filters);
> wmi_cfg->use_pdev_id = cpu_to_le32(tg_cfg->use_pdev_id);
> wmi_cfg->flag1 = cpu_to_le32(tg_cfg->atf_config |
> - WMI_RSRC_CFG_FLAG1_BSS_CHANNEL_INFO_64);
> + WMI_RSRC_CFG_FLAG1_BSS_CHANNEL_INFO_64 |
> + WMI_RSRC_CFG_FLAG1_ACK_RSSI);
> wmi_cfg->peer_map_unmap_version = cpu_to_le32(tg_cfg->peer_map_unmap_version);
> wmi_cfg->sched_params = cpu_to_le32(tg_cfg->sched_params);
> wmi_cfg->twt_ap_pdev_count = cpu_to_le32(tg_cfg->twt_ap_pdev_count);
> @@ -5134,7 +5135,7 @@ static int ath12k_pull_mgmt_rx_params_tlv(struct ath12k_base *ab,
> }
>
> static int wmi_process_mgmt_tx_comp(struct ath12k *ar, u32 desc_id,
> - u32 status)
> + u32 status, u32 ack_rssi)
> {
> struct sk_buff *msdu;
> struct ieee80211_tx_info *info;
> @@ -5158,8 +5159,11 @@ static int wmi_process_mgmt_tx_comp(struct ath12k *ar, u32 desc_id,
> dma_unmap_single(ar->ab->dev, skb_cb->paddr, msdu->len, DMA_TO_DEVICE);
>
> info = IEEE80211_SKB_CB(msdu);
> - if ((!(info->flags & IEEE80211_TX_CTL_NO_ACK)) && !status)
> + if ((!(info->flags & IEEE80211_TX_CTL_NO_ACK)) && !status) {
> info->flags |= IEEE80211_TX_STAT_ACK;
> + info->status.ack_signal = ack_rssi;
> + info->status.flags |= IEEE80211_TX_STATUS_ACK_SIGNAL_VALID;
> + }
>
> ieee80211_tx_status_irqsafe(ath12k_ar_to_hw(ar), msdu);
>
> @@ -5200,6 +5204,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;
> + param->ack_rssi = ev->ack_rssi;
>
> kfree(tb);
> return 0;
> @@ -6110,7 +6116,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 496866673aea..7ebd52a7ebb8 100644
> --- a/drivers/net/wireless/ath/ath12k/wmi.h
> +++ b/drivers/net/wireless/ath/ath12k/wmi.h
> @@ -2410,6 +2410,7 @@ struct wmi_init_cmd {
> #define WMI_RSRC_CFG_HOST_SVC_FLAG_REG_CC_EXT_SUPPORT_BIT 4
> #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_FLAG1_ACK_RSSI BIT(18)
>
> struct ath12k_wmi_resource_config_params {
> __le32 tlv_header;
> @@ -4180,6 +4181,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 {
next prev parent reply other threads:[~2024-05-14 18:16 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-14 12:49 [PATCH] wifi: ath12k: support average ack rssi in station dump Sowmiya Sree Elavalagan
2024-05-14 17:02 ` Jeff Johnson [this message]
2024-05-15 5:00 ` Sowmiya Sree Elavalagan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=27d7b0d8-5e1b-4df1-987a-159b559b85d8@quicinc.com \
--to=quic_jjohnson@quicinc.com \
--cc=ath12k@lists.infradead.org \
--cc=linux-wireless@vger.kernel.org \
--cc=quic_sivamadh@quicinc.com \
--cc=quic_ssreeela@quicinc.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).