diff options
author | David S. Miller <davem@davemloft.net> | 2016-07-14 19:27:42 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-07-14 19:32:27 -0400 |
commit | 88b3ec527416f95ac4eae3cd458249143105deb8 (patch) | |
tree | 601973e8ccc882145068c77ef6be013307a18a36 /drivers/net/wireless/intel/iwlwifi/mvm/scan.c | |
parent | d8c62a91f7fd4239576d105b741140434e5368a0 (diff) | |
parent | 25f700ef0653d7644ed273f8770230e734cae726 (diff) |
Merge tag 'wireless-drivers-next-for-davem-2016-07-13' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next
Kalle Valo says:
====================
wireless-drivers-next patches for 4.8
Major changes:
iwlwifi
* more work on the RX path for the 9000 device series
* some more dynamic queue allocation work
* SAR BIOS implementation
* some work on debugging capabilities
* added support for GCMP encryption
* data path rework in preparation for new HW
* some cleanup to remove transport dependency on mac80211
* support for MSIx in preparation for new HW
* lots of work in preparation for HW support (9000 and a000 series)
mwifiex
* implement get_tx_power and get_antenna cfg80211 operation callbacks
wl18xx
* add support for 64bit clock
rtl8xxxu
* aggregation support (optional for now)
Also wireless-drivers is merged to fix some conflicts.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/wireless/intel/iwlwifi/mvm/scan.c')
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/scan.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c index 1cac10c5d818..dac120f8861b 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/scan.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/scan.c | |||
@@ -402,7 +402,7 @@ void iwl_mvm_rx_lmac_scan_complete_notif(struct iwl_mvm *mvm, | |||
402 | mvm->scan_status &= ~IWL_MVM_SCAN_REGULAR; | 402 | mvm->scan_status &= ~IWL_MVM_SCAN_REGULAR; |
403 | ieee80211_scan_completed(mvm->hw, &info); | 403 | ieee80211_scan_completed(mvm->hw, &info); |
404 | iwl_mvm_unref(mvm, IWL_MVM_REF_SCAN); | 404 | iwl_mvm_unref(mvm, IWL_MVM_REF_SCAN); |
405 | del_timer(&mvm->scan_timer); | 405 | cancel_delayed_work(&mvm->scan_timeout_dwork); |
406 | } else { | 406 | } else { |
407 | IWL_ERR(mvm, | 407 | IWL_ERR(mvm, |
408 | "got scan complete notification but no scan is running\n"); | 408 | "got scan complete notification but no scan is running\n"); |
@@ -1225,15 +1225,16 @@ static int iwl_mvm_check_running_scans(struct iwl_mvm *mvm, int type) | |||
1225 | return -EIO; | 1225 | return -EIO; |
1226 | } | 1226 | } |
1227 | 1227 | ||
1228 | #define SCAN_TIMEOUT (20 * HZ) | 1228 | #define SCAN_TIMEOUT 20000 |
1229 | 1229 | ||
1230 | void iwl_mvm_scan_timeout(unsigned long data) | 1230 | void iwl_mvm_scan_timeout_wk(struct work_struct *work) |
1231 | { | 1231 | { |
1232 | struct iwl_mvm *mvm = (struct iwl_mvm *)data; | 1232 | struct delayed_work *delayed_work = to_delayed_work(work); |
1233 | struct iwl_mvm *mvm = container_of(delayed_work, struct iwl_mvm, | ||
1234 | scan_timeout_dwork); | ||
1233 | 1235 | ||
1234 | IWL_ERR(mvm, "regular scan timed out\n"); | 1236 | IWL_ERR(mvm, "regular scan timed out\n"); |
1235 | 1237 | ||
1236 | del_timer(&mvm->scan_timer); | ||
1237 | iwl_force_nmi(mvm->trans); | 1238 | iwl_force_nmi(mvm->trans); |
1238 | } | 1239 | } |
1239 | 1240 | ||
@@ -1316,7 +1317,8 @@ int iwl_mvm_reg_scan_start(struct iwl_mvm *mvm, struct ieee80211_vif *vif, | |||
1316 | mvm->scan_status |= IWL_MVM_SCAN_REGULAR; | 1317 | mvm->scan_status |= IWL_MVM_SCAN_REGULAR; |
1317 | iwl_mvm_ref(mvm, IWL_MVM_REF_SCAN); | 1318 | iwl_mvm_ref(mvm, IWL_MVM_REF_SCAN); |
1318 | 1319 | ||
1319 | mod_timer(&mvm->scan_timer, jiffies + SCAN_TIMEOUT); | 1320 | queue_delayed_work(system_wq, &mvm->scan_timeout_dwork, |
1321 | msecs_to_jiffies(SCAN_TIMEOUT)); | ||
1320 | 1322 | ||
1321 | return 0; | 1323 | return 0; |
1322 | } | 1324 | } |
@@ -1439,7 +1441,7 @@ void iwl_mvm_rx_umac_scan_complete_notif(struct iwl_mvm *mvm, | |||
1439 | 1441 | ||
1440 | ieee80211_scan_completed(mvm->hw, &info); | 1442 | ieee80211_scan_completed(mvm->hw, &info); |
1441 | iwl_mvm_unref(mvm, IWL_MVM_REF_SCAN); | 1443 | iwl_mvm_unref(mvm, IWL_MVM_REF_SCAN); |
1442 | del_timer(&mvm->scan_timer); | 1444 | cancel_delayed_work(&mvm->scan_timeout_dwork); |
1443 | } else if (mvm->scan_uid_status[uid] == IWL_MVM_SCAN_SCHED) { | 1445 | } else if (mvm->scan_uid_status[uid] == IWL_MVM_SCAN_SCHED) { |
1444 | ieee80211_sched_scan_stopped(mvm->hw); | 1446 | ieee80211_sched_scan_stopped(mvm->hw); |
1445 | mvm->sched_scan_pass_all = SCHED_SCAN_PASS_ALL_DISABLED; | 1447 | mvm->sched_scan_pass_all = SCHED_SCAN_PASS_ALL_DISABLED; |
@@ -1644,7 +1646,7 @@ out: | |||
1644 | * to release the scan reference here. | 1646 | * to release the scan reference here. |
1645 | */ | 1647 | */ |
1646 | iwl_mvm_unref(mvm, IWL_MVM_REF_SCAN); | 1648 | iwl_mvm_unref(mvm, IWL_MVM_REF_SCAN); |
1647 | del_timer(&mvm->scan_timer); | 1649 | cancel_delayed_work(&mvm->scan_timeout_dwork); |
1648 | if (notify) { | 1650 | if (notify) { |
1649 | struct cfg80211_scan_info info = { | 1651 | struct cfg80211_scan_info info = { |
1650 | .aborted = true, | 1652 | .aborted = true, |