Message ID | 1425238304-498-19-git-send-email-emmanuel.grumbach@intel.com (mailing list archive) |
---|---|
State | Not Applicable |
Delegated to: | Johannes Berg |
Headers | show |
Hi Emmanuel, On Mon, Mar 2, 2015 at 6:31 AM, Emmanuel Grumbach <emmanuel.grumbach@intel.com> wrote: > From: Luciano Coelho <luciano.coelho@intel.com> > > We shouldn't call iwl_mvm_d3_disconnect_iter() on the running > interfaces when we are woken up due to net-detect, because it doesn't > make sense. Additionally, this seems to set the > IEEE80211_SDATA_DISCONNECT_RESUME flag that will cause a disconnection > on the next resume (if a normal WoWLAN is used). > > To solve this, skip the iteration loop when net-detect is set. > > Reported-by: Samuel Tan <samueltan@chromium.org> > Reviewed-by: Johannes Berg <johannes.berg@intel.com> > Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Shouldn't this be signed off by Luciano too? Thanks,
On Mon, 2015-03-02 at 09:23 +1100, Julian Calaby wrote: > Hi Emmanuel, > > On Mon, Mar 2, 2015 at 6:31 AM, Emmanuel Grumbach > <emmanuel.grumbach@intel.com> wrote: > > From: Luciano Coelho <luciano.coelho@intel.com> > > > > We shouldn't call iwl_mvm_d3_disconnect_iter() on the running > > interfaces when we are woken up due to net-detect, because it doesn't > > make sense. Additionally, this seems to set the > > IEEE80211_SDATA_DISCONNECT_RESUME flag that will cause a disconnection > > on the next resume (if a normal WoWLAN is used). > > > > To solve this, skip the iteration loop when net-detect is set. > > > > Reported-by: Samuel Tan <samueltan@chromium.org> > > Reviewed-by: Johannes Berg <johannes.berg@intel.com> > > Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> > > Shouldn't this be signed off by Luciano too? > Right - I removed it by mistake while removing other unneeded stuff in the same area. I updated the tree and the tag. Thanks. > Thanks, >
diff --git a/drivers/net/wireless/iwlwifi/mvm/d3.c b/drivers/net/wireless/iwlwifi/mvm/d3.c index 14e8fd6..9bdfa95 100644 --- a/drivers/net/wireless/iwlwifi/mvm/d3.c +++ b/drivers/net/wireless/iwlwifi/mvm/d3.c @@ -1876,25 +1876,28 @@ static int __iwl_mvm_resume(struct iwl_mvm *mvm, bool test) if (mvm->net_detect) { iwl_mvm_query_netdetect_reasons(mvm, vif); + /* has unlocked the mutex, so skip that */ + goto out; } else { keep = iwl_mvm_query_wakeup_reasons(mvm, vif); #ifdef CONFIG_IWLWIFI_DEBUGFS if (keep) mvm->keep_vif = vif; + /* has unlocked the mutex, so skip that */ + goto out_iterate; #endif } - /* has unlocked the mutex, so skip that */ - goto out; out_unlock: mutex_unlock(&mvm->mutex); - out: +out_iterate: if (!test) ieee80211_iterate_active_interfaces_rtnl(mvm->hw, IEEE80211_IFACE_ITER_NORMAL, iwl_mvm_d3_disconnect_iter, keep ? vif : NULL); +out: /* return 1 to reconfigure the device */ set_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status); set_bit(IWL_MVM_STATUS_D3_RECONFIG, &mvm->status);