linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V2 0/2] wifi: ath11k: bug fixes in tx encap offload and ppdu stats
@ 2023-04-01  2:49 Pradeep Kumar Chitrapu
  2023-04-01  2:49 ` [PATCH V2 1/2] wifi: ath11k: fix tx status reporting in encap offload mode Pradeep Kumar Chitrapu
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Pradeep Kumar Chitrapu @ 2023-04-01  2:49 UTC (permalink / raw)
  To: ath11k; +Cc: linux-wireless, Pradeep Kumar Chitrapu

Fixes bugs in radiotap fields and tx status reporting in TX
encapsulation offload cases.

Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1

Pradeep Kumar Chitrapu (2):
  wifi: ath11k: fix tx status reporting in encap offload mode
  wifi: ath11k: Fix incorrect update of radiotap fields

 drivers/net/wireless/ath/ath11k/dp.h     |  3 +++
 drivers/net/wireless/ath/ath11k/dp_tx.c  | 29 +++++++++++++++++++++++-
 drivers/net/wireless/ath/ath11k/dp_tx.h  |  1 +
 drivers/net/wireless/ath/ath11k/hal_rx.c |  4 ++--
 drivers/net/wireless/ath/ath11k/hal_rx.h |  2 +-
 5 files changed, 35 insertions(+), 4 deletions(-)


base-commit: bea046575a2e6d7d1cf63cc7ab032647a3585de5
-- 
2.17.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH V2 1/2] wifi: ath11k: fix tx status reporting in encap offload mode
  2023-04-01  2:49 [PATCH V2 0/2] wifi: ath11k: bug fixes in tx encap offload and ppdu stats Pradeep Kumar Chitrapu
@ 2023-04-01  2:49 ` Pradeep Kumar Chitrapu
  2023-04-01  2:49 ` [PATCH V2 2/2] wifi: ath11k: Fix incorrect update of radiotap fields Pradeep Kumar Chitrapu
  2023-04-03  9:15 ` [PATCH V2 0/2] wifi: ath11k: bug fixes in tx encap offload and ppdu stats Kalle Valo
  2 siblings, 0 replies; 5+ messages in thread
From: Pradeep Kumar Chitrapu @ 2023-04-01  2:49 UTC (permalink / raw)
  To: ath11k; +Cc: linux-wireless, Pradeep Kumar Chitrapu

ieee80211_tx_status() treats packets in 802.11 frame format and
tries to extract sta address from packet header. When tx encap
offload is enabled, this becomes invalid operation. Hence, switch
to using ieee80211_tx_status_ext() after filling in station
address for handling both 802.11 and 802.3 frames.

Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1

Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
---
 drivers/net/wireless/ath/ath11k/dp.h    |  3 +++
 drivers/net/wireless/ath/ath11k/dp_tx.c | 29 ++++++++++++++++++++++++-
 drivers/net/wireless/ath/ath11k/dp_tx.h |  1 +
 3 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/ath/ath11k/dp.h b/drivers/net/wireless/ath/ath11k/dp.h
index be9eafc872b3..fb5c9e4b8ad2 100644
--- a/drivers/net/wireless/ath/ath11k/dp.h
+++ b/drivers/net/wireless/ath/ath11k/dp.h
@@ -303,12 +303,15 @@ struct ath11k_dp {
 
 #define HTT_TX_WBM_COMP_STATUS_OFFSET 8
 
+#define HTT_INVALID_PEER_ID	0xffff
 /* HTT tx completion is overlaid in wbm_release_ring */
 #define HTT_TX_WBM_COMP_INFO0_STATUS		GENMASK(12, 9)
 #define HTT_TX_WBM_COMP_INFO0_REINJECT_REASON	GENMASK(16, 13)
 #define HTT_TX_WBM_COMP_INFO0_REINJECT_REASON	GENMASK(16, 13)
 
 #define HTT_TX_WBM_COMP_INFO1_ACK_RSSI		GENMASK(31, 24)
+#define HTT_TX_WBM_COMP_INFO2_SW_PEER_ID	GENMASK(15, 0)
+#define HTT_TX_WBM_COMP_INFO2_VALID		BIT(21)
 
 struct htt_tx_wbm_completion {
 	u32 info0;
diff --git a/drivers/net/wireless/ath/ath11k/dp_tx.c b/drivers/net/wireless/ath/ath11k/dp_tx.c
index 8afbba236935..391e5a724727 100644
--- a/drivers/net/wireless/ath/ath11k/dp_tx.c
+++ b/drivers/net/wireless/ath/ath11k/dp_tx.c
@@ -316,10 +316,12 @@ ath11k_dp_tx_htt_tx_complete_buf(struct ath11k_base *ab,
 				 struct dp_tx_ring *tx_ring,
 				 struct ath11k_dp_htt_wbm_tx_status *ts)
 {
+	struct ieee80211_tx_status status = { 0 };
 	struct sk_buff *msdu;
 	struct ieee80211_tx_info *info;
 	struct ath11k_skb_cb *skb_cb;
 	struct ath11k *ar;
+	struct ath11k_peer *peer;
 
 	spin_lock(&tx_ring->tx_idr_lock);
 	msdu = idr_remove(&tx_ring->txbuf_idr, ts->msdu_id);
@@ -341,6 +343,10 @@ ath11k_dp_tx_htt_tx_complete_buf(struct ath11k_base *ab,
 
 	dma_unmap_single(ab->dev, skb_cb->paddr, msdu->len, DMA_TO_DEVICE);
 
+	if (!skb_cb->vif) {
+		dev_kfree_skb_any(msdu);
+		return;
+	}
 	memset(&info->status, 0, sizeof(info->status));
 
 	if (ts->acked) {
@@ -355,7 +361,23 @@ ath11k_dp_tx_htt_tx_complete_buf(struct ath11k_base *ab,
 		}
 	}
 
-	ieee80211_tx_status(ar->hw, msdu);
+	spin_lock_bh(&ab->base_lock);
+	peer = ath11k_peer_find_by_id(ab, ts->peer_id);
+	if (!peer || !peer->sta) {
+		ath11k_dbg(ab, ATH11K_DBG_DATA,
+			   "dp_tx: failed to find the peer with peer_id %d\n",
+			    ts->peer_id);
+		spin_unlock_bh(&ab->base_lock);
+		dev_kfree_skb_any(msdu);
+		return;
+	}
+	spin_unlock_bh(&ab->base_lock);
+
+	status.sta = peer->sta;
+	status.info = info;
+	status.skb = msdu;
+
+	ieee80211_tx_status_ext(ar->hw, &status);
 }
 
 static void
@@ -379,6 +401,11 @@ ath11k_dp_tx_process_htt_tx_complete(struct ath11k_base *ab,
 		ts.msdu_id = msdu_id;
 		ts.ack_rssi = FIELD_GET(HTT_TX_WBM_COMP_INFO1_ACK_RSSI,
 					status_desc->info1);
+		if (FIELD_GET(HTT_TX_WBM_COMP_INFO2_VALID, status_desc->info2))
+			ts.peer_id = FIELD_GET(HTT_TX_WBM_COMP_INFO2_SW_PEER_ID,
+					       status_desc->info2);
+		else
+			ts.peer_id = HTT_INVALID_PEER_ID;
 		ath11k_dp_tx_htt_tx_complete_buf(ab, tx_ring, &ts);
 		break;
 	case HAL_WBM_REL_HTT_TX_COMP_STATUS_REINJ:
diff --git a/drivers/net/wireless/ath/ath11k/dp_tx.h b/drivers/net/wireless/ath/ath11k/dp_tx.h
index e87d65bfbf06..68a21ea9b934 100644
--- a/drivers/net/wireless/ath/ath11k/dp_tx.h
+++ b/drivers/net/wireless/ath/ath11k/dp_tx.h
@@ -13,6 +13,7 @@ struct ath11k_dp_htt_wbm_tx_status {
 	u32 msdu_id;
 	bool acked;
 	int ack_rssi;
+	u16 peer_id;
 };
 
 void ath11k_dp_tx_update_txcompl(struct ath11k *ar, struct hal_tx_status *ts);
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH V2 2/2] wifi: ath11k: Fix incorrect update of radiotap fields
  2023-04-01  2:49 [PATCH V2 0/2] wifi: ath11k: bug fixes in tx encap offload and ppdu stats Pradeep Kumar Chitrapu
  2023-04-01  2:49 ` [PATCH V2 1/2] wifi: ath11k: fix tx status reporting in encap offload mode Pradeep Kumar Chitrapu
@ 2023-04-01  2:49 ` Pradeep Kumar Chitrapu
  2023-04-03  9:15 ` [PATCH V2 0/2] wifi: ath11k: bug fixes in tx encap offload and ppdu stats Kalle Valo
  2 siblings, 0 replies; 5+ messages in thread
From: Pradeep Kumar Chitrapu @ 2023-04-01  2:49 UTC (permalink / raw)
  To: ath11k; +Cc: linux-wireless, Pradeep Kumar Chitrapu

Fix incorrect update of ppdu stats causing incorrect radiotap
fields.

Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1

Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
---
 drivers/net/wireless/ath/ath11k/hal_rx.c | 4 ++--
 drivers/net/wireless/ath/ath11k/hal_rx.h | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/ath/ath11k/hal_rx.c b/drivers/net/wireless/ath/ath11k/hal_rx.c
index 7f39c6fb7408..d462b36c3cb2 100644
--- a/drivers/net/wireless/ath/ath11k/hal_rx.c
+++ b/drivers/net/wireless/ath/ath11k/hal_rx.c
@@ -1023,7 +1023,7 @@ ath11k_hal_rx_parse_mon_status_tlv(struct ath11k_base *ab,
 		info1 = __le32_to_cpu(vht_sig->info1);
 
 		ppdu_info->ldpc = FIELD_GET(HAL_RX_VHT_SIG_A_INFO_INFO1_SU_MU_CODING,
-					    info0);
+					    info1);
 		ppdu_info->mcs = FIELD_GET(HAL_RX_VHT_SIG_A_INFO_INFO1_MCS,
 					   info1);
 		gi_setting = FIELD_GET(HAL_RX_VHT_SIG_A_INFO_INFO1_GI_SETTING,
@@ -1446,7 +1446,7 @@ ath11k_hal_rx_parse_mon_status_tlv(struct ath11k_base *ab,
 		 * PHYRX_OTHER_RECEIVE_INFO TLV.
 		 */
 		ppdu_info->rssi_comb =
-			FIELD_GET(HAL_RX_PHYRX_RSSI_LEGACY_INFO_INFO1_RSSI_COMB,
+			FIELD_GET(HAL_RX_PHYRX_RSSI_LEGACY_INFO_INFO0_RSSI_COMB,
 				  __le32_to_cpu(rssi->info0));
 
 		if (db2dbm) {
diff --git a/drivers/net/wireless/ath/ath11k/hal_rx.h b/drivers/net/wireless/ath/ath11k/hal_rx.h
index f6bae07abfd3..064796935f9c 100644
--- a/drivers/net/wireless/ath/ath11k/hal_rx.h
+++ b/drivers/net/wireless/ath/ath11k/hal_rx.h
@@ -385,7 +385,7 @@ struct hal_rx_he_sig_b2_ofdma_info {
 	__le32 info0;
 } __packed;
 
-#define HAL_RX_PHYRX_RSSI_LEGACY_INFO_INFO1_RSSI_COMB	GENMASK(15, 8)
+#define HAL_RX_PHYRX_RSSI_LEGACY_INFO_INFO0_RSSI_COMB	GENMASK(15, 8)
 
 #define HAL_RX_PHYRX_RSSI_PREAMBLE_PRI20	GENMASK(7, 0)
 
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH V2 0/2] wifi: ath11k: bug fixes in tx encap offload and ppdu stats
  2023-04-01  2:49 [PATCH V2 0/2] wifi: ath11k: bug fixes in tx encap offload and ppdu stats Pradeep Kumar Chitrapu
  2023-04-01  2:49 ` [PATCH V2 1/2] wifi: ath11k: fix tx status reporting in encap offload mode Pradeep Kumar Chitrapu
  2023-04-01  2:49 ` [PATCH V2 2/2] wifi: ath11k: Fix incorrect update of radiotap fields Pradeep Kumar Chitrapu
@ 2023-04-03  9:15 ` Kalle Valo
  2023-04-03 16:06   ` Pradeep Kumar Chitrapu
  2 siblings, 1 reply; 5+ messages in thread
From: Kalle Valo @ 2023-04-03  9:15 UTC (permalink / raw)
  To: Pradeep Kumar Chitrapu; +Cc: ath11k, linux-wireless

Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com> writes:

> Fixes bugs in radiotap fields and tx status reporting in TX
> encapsulation offload cases.
>
> Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
>
> Pradeep Kumar Chitrapu (2):
>   wifi: ath11k: fix tx status reporting in encap offload mode
>   wifi: ath11k: Fix incorrect update of radiotap fields

No changelog. What has changed since v1?


-- 
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH V2 0/2] wifi: ath11k: bug fixes in tx encap offload and ppdu stats
  2023-04-03  9:15 ` [PATCH V2 0/2] wifi: ath11k: bug fixes in tx encap offload and ppdu stats Kalle Valo
@ 2023-04-03 16:06   ` Pradeep Kumar Chitrapu
  0 siblings, 0 replies; 5+ messages in thread
From: Pradeep Kumar Chitrapu @ 2023-04-03 16:06 UTC (permalink / raw)
  To: Kalle Valo; +Cc: ath11k, linux-wireless


On 4/3/2023 2:15 AM, Kalle Valo wrote:
> Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com> writes:
>
>> Fixes bugs in radiotap fields and tx status reporting in TX
>> encapsulation offload cases.
>>
>> Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
>>
>> Pradeep Kumar Chitrapu (2):
>>    wifi: ath11k: fix tx status reporting in encap offload mode
>>    wifi: ath11k: Fix incorrect update of radiotap fields
> No changelog. What has changed since v1?

Thanks Kalle. Sorry about missing changelog. let me send V3 with updated 
change log..

changes are : avoid using ieee80211_tx_status_8023 and use 
ieee80211_tx_status_ext instead,
and fix commit description inorder to address previous review comments.


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-04-03 16:06 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-04-01  2:49 [PATCH V2 0/2] wifi: ath11k: bug fixes in tx encap offload and ppdu stats Pradeep Kumar Chitrapu
2023-04-01  2:49 ` [PATCH V2 1/2] wifi: ath11k: fix tx status reporting in encap offload mode Pradeep Kumar Chitrapu
2023-04-01  2:49 ` [PATCH V2 2/2] wifi: ath11k: Fix incorrect update of radiotap fields Pradeep Kumar Chitrapu
2023-04-03  9:15 ` [PATCH V2 0/2] wifi: ath11k: bug fixes in tx encap offload and ppdu stats Kalle Valo
2023-04-03 16:06   ` Pradeep Kumar Chitrapu

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 NNTP newsgroup(s).