1 |
From 2849f83421743ece753908a74098514a90a28ed8 Mon Sep 17 00:00:00 2001 |
2 |
From: Rakesh Pillai <pillair@codeaurora.org> |
3 |
Date: Thu, 6 Sep 2018 18:57:27 +0530 |
4 |
Subject: [PATCH 040/145] ath10k: fix tx status flag setting for management |
5 |
frames |
6 |
|
7 |
[ Upstream commit 058a7eab9d9ee12f57282eb0b606668dada70d7a ] |
8 |
|
9 |
The tx_status for management frames is being filled |
10 |
incorrectly in the flags of skb_cb. This incorrect |
11 |
flag setting causes the upper layers to consider that |
12 |
the particular frame was not transmitted properly, |
13 |
leading to improper behavior. |
14 |
|
15 |
Set the IEEE80211_TX_STAT_ACK flag in the info flags |
16 |
of skb_cb, to indicate the successful transmission of |
17 |
the management frame. |
18 |
|
19 |
Tested HW: WCN3990 |
20 |
Tested FW: WLAN.HL.2.0-01188-QCAHLSWMTPLZ-1 |
21 |
|
22 |
Fixes: dc405152bb64d4ae01c9ac669de25b2d1fb6fc2d |
23 |
Signed-off-by: Rakesh Pillai <pillair@codeaurora.org> |
24 |
Signed-off-by: Kalle Valo <kvalo@codeaurora.org> |
25 |
Signed-off-by: Sasha Levin <sashal@kernel.org> |
26 |
--- |
27 |
drivers/net/wireless/ath/ath10k/wmi.c | 7 ++++++- |
28 |
1 file changed, 6 insertions(+), 1 deletion(-) |
29 |
|
30 |
diff --git a/drivers/net/wireless/ath/ath10k/wmi.c b/drivers/net/wireless/ath/ath10k/wmi.c |
31 |
index fd612d2905b0..1dced0dae9cd 100644 |
32 |
--- a/drivers/net/wireless/ath/ath10k/wmi.c |
33 |
+++ b/drivers/net/wireless/ath/ath10k/wmi.c |
34 |
@@ -2336,7 +2336,12 @@ static int wmi_process_mgmt_tx_comp(struct ath10k *ar, u32 desc_id, |
35 |
dma_unmap_single(ar->dev, pkt_addr->paddr, |
36 |
msdu->len, DMA_FROM_DEVICE); |
37 |
info = IEEE80211_SKB_CB(msdu); |
38 |
- info->flags |= status; |
39 |
+ |
40 |
+ if (status) |
41 |
+ info->flags &= ~IEEE80211_TX_STAT_ACK; |
42 |
+ else |
43 |
+ info->flags |= IEEE80211_TX_STAT_ACK; |
44 |
+ |
45 |
ieee80211_tx_status_irqsafe(ar->hw, msdu); |
46 |
|
47 |
ret = 0; |
48 |
-- |
49 |
2.19.1 |
50 |
|