On Mon, Oct 8, 2018 at 2:03 AM Wen Gong <[email protected]> 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 <[email protected]>
> 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
>