]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
ath10k: add peer flush in ath10k_flush for STATION
authorWen Gong <wgong@codeaurora.org>
Mon, 8 Oct 2018 09:02:43 +0000 (17:02 +0800)
committerKalle Valo <kvalo@codeaurora.org>
Sat, 13 Oct 2018 17:24:40 +0000 (20:24 +0300)
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>
drivers/net/wireless/ath/ath10k/mac.c

index e50b4f466bb15da11c2ab4c8b2dc809c2451252d..a1c2801ded10123ae46ff1d43e4fd60a04231d90 100644 (file)
@@ -6863,9 +6863,20 @@ static void ath10k_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
                         u32 queues, bool drop)
 {
        struct ath10k *ar = hw->priv;
-
-       if (drop)
+       struct ath10k_vif *arvif;
+       u32 bitmap;
+
+       if (drop) {
+               if (vif->type == NL80211_IFTYPE_STATION) {
+                       bitmap = ~(1 << WMI_MGMT_TID);
+                       list_for_each_entry(arvif, &ar->arvifs, list) {
+                               if (arvif->vdev_type == WMI_VDEV_TYPE_STA)
+                                       ath10k_wmi_peer_flush(ar, arvif->vdev_id,
+                                                             arvif->bssid, bitmap);
+                       }
+               }
                return;
+       }
 
        mutex_lock(&ar->conf_mutex);
        ath10k_mac_wait_tx_complete(ar);