commit 4e6c48e0984e28d064ee8fbc292aee7b7920c507 upstream. This change has already been implemented in iwldvm: commit a260e7b3f0307878b99d57ed1406cf2d497923b8 Author: Emmanuel Grumbach <emmanuel.grumbach@xxxxxxxxx> Date: Sun Oct 5 09:11:14 2014 +0300 iwlwifi: dvm: drop non VO frames when flushing Since I added the flush() callback implementation in mvm, we got reports that the queues are stuck while roaming or suspending. This commit above helped much for iwldvm, implement the same behavior for iwlmvm. CC: <stable@xxxxxxxxxxxxxxx> [3.16+] Fixes: c5b0e7c0565a ("iwlwifi: mvm: implement mac80211's flush callback") Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@xxxxxxxxx> --- drivers/net/wireless/iwlwifi/mvm/mac80211.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/drivers/net/wireless/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/iwlwifi/mvm/mac80211.c index 98556d0..56fa2a1 100644 --- a/drivers/net/wireless/iwlwifi/mvm/mac80211.c +++ b/drivers/net/wireless/iwlwifi/mvm/mac80211.c @@ -2415,6 +2415,7 @@ static void iwl_mvm_mac_flush(struct ieee80211_hw *hw, struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); struct iwl_mvm_vif *mvmvif; struct iwl_mvm_sta *mvmsta; + u32 msk; if (!vif || vif->type != NL80211_IFTYPE_STATION) return; @@ -2426,13 +2427,14 @@ static void iwl_mvm_mac_flush(struct ieee80211_hw *hw, if (WARN_ON_ONCE(!mvmsta)) goto done; - if (drop) { - if (iwl_mvm_flush_tx_path(mvm, mvmsta->tfd_queue_msk, true)) - IWL_ERR(mvm, "flush request fail\n"); - } else { - iwl_trans_wait_tx_queue_empty(mvm->trans, - mvmsta->tfd_queue_msk); - } + msk = mvmsta->tfd_queue_msk; + msk &= ~BIT(vif->hw_queue[IEEE80211_AC_VO]); + + if (iwl_mvm_flush_tx_path(mvm, msk, true)) + IWL_ERR(mvm, "flush request fail\n"); + + msk |= BIT(vif->hw_queue[IEEE80211_AC_VO]); + iwl_trans_wait_tx_queue_empty(mvm->trans, msk); done: mutex_unlock(&mvm->mutex); } -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html