diff options
author | Eliad Peller <eliad@wizery.com> | 2013-12-05 10:19:39 -0500 |
---|---|---|
committer | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2014-02-03 15:23:41 -0500 |
commit | 37577fe2499a4d83c39910702959832baf589bab (patch) | |
tree | d97c34db553b0793ba44ab24ef35bb8525a1d8ce /drivers/net/wireless/iwlwifi/mvm/mac80211.c | |
parent | b77f06d9eccb2edb1ef78c30eb6d38632ed4f196 (diff) |
iwlwifi: mvm: get status on D0i3 exit
Schedule work to query the wakeup reasons, and
disconnect in some cases (e.g. beacon loss).
Signed-off-by: Eliad Peller <eliadx.peller@intel.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/mvm/mac80211.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/mac80211.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/iwlwifi/mvm/mac80211.c index 827510ea7eab..59b5b7a80d12 100644 --- a/drivers/net/wireless/iwlwifi/mvm/mac80211.c +++ b/drivers/net/wireless/iwlwifi/mvm/mac80211.c | |||
@@ -547,6 +547,7 @@ static void iwl_mvm_restart_cleanup(struct iwl_mvm *mvm) | |||
547 | iwl_mvm_cleanup_iterator, mvm); | 547 | iwl_mvm_cleanup_iterator, mvm); |
548 | 548 | ||
549 | mvm->p2p_device_vif = NULL; | 549 | mvm->p2p_device_vif = NULL; |
550 | mvm->d0i3_ap_sta_id = IWL_MVM_STATION_COUNT; | ||
550 | 551 | ||
551 | iwl_mvm_reset_phy_ctxts(mvm); | 552 | iwl_mvm_reset_phy_ctxts(mvm); |
552 | memset(mvm->fw_key_table, 0, sizeof(mvm->fw_key_table)); | 553 | memset(mvm->fw_key_table, 0, sizeof(mvm->fw_key_table)); |
@@ -602,6 +603,7 @@ static void iwl_mvm_mac_stop(struct ieee80211_hw *hw) | |||
602 | { | 603 | { |
603 | struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); | 604 | struct iwl_mvm *mvm = IWL_MAC80211_GET_MVM(hw); |
604 | 605 | ||
606 | flush_work(&mvm->d0i3_exit_work); | ||
605 | flush_work(&mvm->async_handlers_wk); | 607 | flush_work(&mvm->async_handlers_wk); |
606 | 608 | ||
607 | mutex_lock(&mvm->mutex); | 609 | mutex_lock(&mvm->mutex); |
@@ -1216,6 +1218,9 @@ static void iwl_mvm_bss_info_changed_station(struct iwl_mvm *mvm, | |||
1216 | ret = iwl_mvm_rm_sta_id(mvm, vif, mvmvif->ap_sta_id); | 1218 | ret = iwl_mvm_rm_sta_id(mvm, vif, mvmvif->ap_sta_id); |
1217 | if (ret) | 1219 | if (ret) |
1218 | IWL_ERR(mvm, "failed to remove AP station\n"); | 1220 | IWL_ERR(mvm, "failed to remove AP station\n"); |
1221 | |||
1222 | if (mvm->d0i3_ap_sta_id == mvmvif->ap_sta_id) | ||
1223 | mvm->d0i3_ap_sta_id = IWL_MVM_STATION_COUNT; | ||
1219 | mvmvif->ap_sta_id = IWL_MVM_STATION_COUNT; | 1224 | mvmvif->ap_sta_id = IWL_MVM_STATION_COUNT; |
1220 | /* remove quota for this interface */ | 1225 | /* remove quota for this interface */ |
1221 | ret = iwl_mvm_update_quotas(mvm, NULL); | 1226 | ret = iwl_mvm_update_quotas(mvm, NULL); |