On Tue, Feb 03, 2015 at 08:39:52AM +0200, Emmanuel Grumbach wrote: > commit 4e6c48e0984e28d064ee8fbc292aee7b7920c507 upstream. > Thanks a lot for this backport Emmanuel! I'll queue it for the 3.16 kernel. Cheers, -- Luís > 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 -- 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