Skip to content

Commit 29d1558

Browse files
ecsvkvalo
authored andcommitted
wifi: ath11k: Cleanup mac80211 references on failure during tx_complete
When a function is using functions from mac80211 to free an skb then it should do it consistently and not switch to the generic dev_kfree_skb_any (or similar functions). Otherwise (like in the error handlers), mac80211 will will not be aware of the freed skb and thus not clean up related information in its internal data structures. Not doing so lead in the past to filled up structure which then prevented new clients to connect. Fixes: d5c6515 ("ath11k: driver for Qualcomm IEEE 802.11ax devices") Fixes: 6257c70 ("wifi: ath11k: fix tx status reporting in encap offload mode") Cc: stable@vger.kernel.org Signed-off-by: Sven Eckelmann <sven@narfation.org> Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com> Link: https://lore.kernel.org/r/20230802-ath11k-ack_status_leak-v2-2-c0af729d6229@narfation.org
1 parent 400ece6 commit 29d1558

File tree

1 file changed

+3
-3
lines changed
  • drivers/net/wireless/ath/ath11k

1 file changed

+3
-3
lines changed

drivers/net/wireless/ath/ath11k/dp_tx.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ ath11k_dp_tx_htt_tx_complete_buf(struct ath11k_base *ab,
344344
dma_unmap_single(ab->dev, skb_cb->paddr, msdu->len, DMA_TO_DEVICE);
345345

346346
if (!skb_cb->vif) {
347-
dev_kfree_skb_any(msdu);
347+
ieee80211_free_txskb(ar->hw, msdu);
348348
return;
349349
}
350350

@@ -566,12 +566,12 @@ static void ath11k_dp_tx_complete_msdu(struct ath11k *ar,
566566
dma_unmap_single(ab->dev, skb_cb->paddr, msdu->len, DMA_TO_DEVICE);
567567

568568
if (unlikely(!rcu_access_pointer(ab->pdevs_active[ar->pdev_idx]))) {
569-
dev_kfree_skb_any(msdu);
569+
ieee80211_free_txskb(ar->hw, msdu);
570570
return;
571571
}
572572

573573
if (unlikely(!skb_cb->vif)) {
574-
dev_kfree_skb_any(msdu);
574+
ieee80211_free_txskb(ar->hw, msdu);
575575
return;
576576
}
577577

0 commit comments

Comments
 (0)