mirror of https://gitee.com/openkylin/linux.git
ath10k: make ath10k report discarded packets to mac80211
Whenever ath10k firmware discards a packet (HTT_TX_COMPL_STATE_DISCARD flag), the skb is freed and mac80211 does not get feedback through ieee80211_tx_status(). Instead, make sure that the IEEE80211_TX_STAT_ACK flag is disabled and let the packet go through, like ath9k does. Signed-off-by: Ignacio Nunez Hernanz <nacho.nunez@aoifes.com> [kvalo@codeaurora.org: rebase patch manually] Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
parent
f74290fdb3
commit
abb374fe84
|
@ -102,11 +102,6 @@ int ath10k_txrx_tx_unref(struct ath10k_htt *htt,
|
|||
memset(&info->status, 0, sizeof(info->status));
|
||||
trace_ath10k_txrx_tx_unref(ar, tx_done->msdu_id);
|
||||
|
||||
if (tx_done->status == HTT_TX_COMPL_STATE_DISCARD) {
|
||||
ieee80211_free_txskb(htt->ar->hw, msdu);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!(info->flags & IEEE80211_TX_CTL_NO_ACK))
|
||||
info->flags |= IEEE80211_TX_STAT_ACK;
|
||||
|
||||
|
@ -117,6 +112,13 @@ int ath10k_txrx_tx_unref(struct ath10k_htt *htt,
|
|||
(info->flags & IEEE80211_TX_CTL_NO_ACK))
|
||||
info->flags |= IEEE80211_TX_STAT_NOACK_TRANSMITTED;
|
||||
|
||||
if (tx_done->status == HTT_TX_COMPL_STATE_DISCARD) {
|
||||
if (info->flags & IEEE80211_TX_CTL_NO_ACK)
|
||||
info->flags &= ~IEEE80211_TX_STAT_NOACK_TRANSMITTED;
|
||||
else
|
||||
info->flags &= ~IEEE80211_TX_STAT_ACK;
|
||||
}
|
||||
|
||||
ieee80211_tx_status(htt->ar->hw, msdu);
|
||||
/* we do not own the msdu anymore */
|
||||
|
||||
|
|
Loading…
Reference in New Issue