summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath10k/wmi.c
diff options
context:
space:
mode:
authorRakesh Pillai <pillair@codeaurora.org>2018-09-06 18:57:27 +0530
committerKalle Valo <kvalo@codeaurora.org>2018-10-01 16:52:24 +0300
commit058a7eab9d9ee12f57282eb0b606668dada70d7a (patch)
tree842dc1c5886bd872dd0cfd2fcf20121927f298c1 /drivers/net/wireless/ath/ath10k/wmi.c
parent833fd34d743c728afe6d127ef7bee67e7d9199a8 (diff)
downloadlinux-stable-058a7eab9d9ee12f57282eb0b606668dada70d7a.tar.gz
linux-stable-058a7eab9d9ee12f57282eb0b606668dada70d7a.tar.bz2
linux-stable-058a7eab9d9ee12f57282eb0b606668dada70d7a.zip
ath10k: fix tx status flag setting for management frames
The tx_status for management frames is being filled incorrectly in the flags of skb_cb. This incorrect flag setting causes the upper layers to consider that the particular frame was not transmitted properly, leading to improper behavior. Set the IEEE80211_TX_STAT_ACK flag in the info flags of skb_cb, to indicate the successful transmission of the management frame. Tested HW: WCN3990 Tested FW: WLAN.HL.2.0-01188-QCAHLSWMTPLZ-1 Fixes: dc405152bb64d4ae01c9ac669de25b2d1fb6fc2d Signed-off-by: Rakesh Pillai <pillair@codeaurora.org> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'drivers/net/wireless/ath/ath10k/wmi.c')
-rw-r--r--drivers/net/wireless/ath/ath10k/wmi.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath10k/wmi.c b/drivers/net/wireless/ath/ath10k/wmi.c
index 8093d947ddd2..c1a46af5f13f 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.c
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
@@ -2342,7 +2342,12 @@ static int wmi_process_mgmt_tx_comp(struct ath10k *ar, u32 desc_id,
dma_unmap_single(ar->dev, pkt_addr->paddr,
msdu->len, DMA_FROM_DEVICE);
info = IEEE80211_SKB_CB(msdu);
- info->flags |= status;
+
+ if (status)
+ info->flags &= ~IEEE80211_TX_STAT_ACK;
+ else
+ info->flags |= IEEE80211_TX_STAT_ACK;
+
ieee80211_tx_status_irqsafe(ar->hw, msdu);
ret = 0;