diff options
author | Rakesh Pillai <pillair@codeaurora.org> | 2018-09-06 15:27:27 +0200 |
---|---|---|
committer | Kalle Valo <kvalo@codeaurora.org> | 2018-10-01 15:52:24 +0200 |
commit | 058a7eab9d9ee12f57282eb0b606668dada70d7a (patch) | |
tree | 842dc1c5886bd872dd0cfd2fcf20121927f298c1 /drivers | |
parent | ath10k: fix vdev-start timeout on error (diff) | |
download | linux-058a7eab9d9ee12f57282eb0b606668dada70d7a.tar.xz linux-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')
-rw-r--r-- | drivers/net/wireless/ath/ath10k/wmi.c | 7 |
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; |