On Mon, Oct 8, 2018 at 2:03 AM Wen Gong <wgong@xxxxxxxxxxxxxx> wrote: > > 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@xxxxxxxxxxxxxx> > drivers/net/wireless/ath/ath10k/mac.c | 15 +++++++++++++-- > 1 file changed, 13 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c > index 97548f9..8df3cec 100644 > --- a/drivers/net/wireless/ath/ath10k/mac.c > +++ b/drivers/net/wireless/ath/ath10k/mac.c > @@ -6814,9 +6814,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) { 'vif' may be NULL. It is trivially easy for me to crash a system on v4.20-rc1 by suspending the system while not connected. I'll send a patch to fix this. Brian > + 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); > -- > 1.9.1 >