aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath
diff options
context:
space:
mode:
authorWen Gong <wgong@codeaurora.org>2018-10-08 05:02:43 -0400
committerKalle Valo <kvalo@codeaurora.org>2018-10-13 13:24:40 -0400
commit9de4162f099948ad85871b8b2ed61e84f139cb5a (patch)
tree024387952d878b6da2ec4ef1ee4fb577593d463d /drivers/net/wireless/ath
parent7bfd82bff60ef572b9acef8ca32669ace1f50664 (diff)
ath10k: add peer flush in ath10k_flush for STATION
In the noisy environment, if there are packets in the queue and can't send out, the suspend timing will be more than 5 seconds due to the wait, flush the queue to optimize the suspend timing, and let the upper layer to retry the packets after resume. Tested with QCA6174 PCI with firmware WLAN.RM.4.4.1-00109-QCARMSWPZ-1, but this will also affect QCA9377 PCI. It's not a regression with new firmware releases. Signed-off-by: Wen Gong <wgong@codeaurora.org> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'drivers/net/wireless/ath')
-rw-r--r--drivers/net/wireless/ath/ath10k/mac.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index e50b4f466bb1..a1c2801ded10 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -6863,9 +6863,20 @@ static void ath10k_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
6863 u32 queues, bool drop) 6863 u32 queues, bool drop)
6864{ 6864{
6865 struct ath10k *ar = hw->priv; 6865 struct ath10k *ar = hw->priv;
6866 6866 struct ath10k_vif *arvif;
6867 if (drop) 6867 u32 bitmap;
6868
6869 if (drop) {
6870 if (vif->type == NL80211_IFTYPE_STATION) {
6871 bitmap = ~(1 << WMI_MGMT_TID);
6872 list_for_each_entry(arvif, &ar->arvifs, list) {
6873 if (arvif->vdev_type == WMI_VDEV_TYPE_STA)
6874 ath10k_wmi_peer_flush(ar, arvif->vdev_id,
6875 arvif->bssid, bitmap);
6876 }
6877 }
6868 return; 6878 return;
6879 }
6869 6880
6870 mutex_lock(&ar->conf_mutex); 6881 mutex_lock(&ar->conf_mutex);
6871 ath10k_mac_wait_tx_complete(ar); 6882 ath10k_mac_wait_tx_complete(ar);