Commit 283c2491 authored by Luciano Coelho's avatar Luciano Coelho Committed by Emmanuel Grumbach

iwlwifi: mvm: trim sched scan delay down to 16-bit for LMAC as well

In theory, LMAC scans can handle a 32-bit delay, but since waiting for
over 18 hours to start the scan is a bit silly and to keep it aligned
with UMAC scans (which only support 16-bit delays), trim it down to
16-bits.

This makes the LMAC vs. UMAC and the UMAC reg scan vs. UMAC sched scan
code more similar.
Signed-off-by: default avatarLuciano Coelho <luciano.coelho@intel.com>
Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
parent 7d7de1e9
...@@ -80,7 +80,7 @@ struct iwl_mvm_scan_params { ...@@ -80,7 +80,7 @@ struct iwl_mvm_scan_params {
u32 suspend_time; u32 suspend_time;
bool passive_fragmented; bool passive_fragmented;
u32 n_channels; u32 n_channels;
u32 delay; u16 delay;
int n_ssids; int n_ssids;
struct cfg80211_ssid *ssids; struct cfg80211_ssid *ssids;
struct ieee80211_channel **channels; struct ieee80211_channel **channels;
...@@ -1279,14 +1279,7 @@ static int iwl_mvm_sched_scan_umac(struct iwl_mvm *mvm, ...@@ -1279,14 +1279,7 @@ static int iwl_mvm_sched_scan_umac(struct iwl_mvm *mvm,
/* With UMAC we use only one schedule, so take the final one only */ /* With UMAC we use only one schedule, so take the final one only */
sec_part->schedule[0].iter_count = params->schedule[1].iterations; sec_part->schedule[0].iter_count = params->schedule[1].iterations;
if (params->delay > U16_MAX) { sec_part->delay = cpu_to_le16(params->delay);
IWL_DEBUG_SCAN(mvm,
"delay value is > 16-bits, set to max possible\n");
sec_part->delay = cpu_to_le16(U16_MAX);
} else {
sec_part->delay = cpu_to_le16(params->delay);
}
sec_part->preq = params->preq; sec_part->preq = params->preq;
return 0; return 0;
...@@ -1458,7 +1451,6 @@ int iwl_mvm_sched_scan_start(struct iwl_mvm *mvm, ...@@ -1458,7 +1451,6 @@ int iwl_mvm_sched_scan_start(struct iwl_mvm *mvm,
params.n_ssids = req->n_ssids; params.n_ssids = req->n_ssids;
params.flags = req->flags; params.flags = req->flags;
params.n_channels = req->n_channels; params.n_channels = req->n_channels;
params.delay = req->delay;
params.ssids = req->ssids; params.ssids = req->ssids;
params.channels = req->channels; params.channels = req->channels;
params.mac_addr = req->mac_addr; params.mac_addr = req->mac_addr;
...@@ -1481,6 +1473,19 @@ int iwl_mvm_sched_scan_start(struct iwl_mvm *mvm, ...@@ -1481,6 +1473,19 @@ int iwl_mvm_sched_scan_start(struct iwl_mvm *mvm,
params.interval = req->interval / MSEC_PER_SEC; params.interval = req->interval / MSEC_PER_SEC;
} }
/* In theory, LMAC scans can handle a 32-bit delay, but since
* waiting for over 18 hours to start the scan is a bit silly
* and to keep it aligned with UMAC scans (which only support
* 16-bit delays), trim it down to 16-bits.
*/
if (req->delay > U16_MAX) {
IWL_DEBUG_SCAN(mvm,
"delay value is > 16-bits, set to max possible\n");
params.delay = U16_MAX;
} else {
params.delay = req->delay;
}
iwl_mvm_scan_calc_dwell(mvm, vif, &params); iwl_mvm_scan_calc_dwell(mvm, vif, &params);
ret = iwl_mvm_config_sched_scan_profiles(mvm, req); ret = iwl_mvm_config_sched_scan_profiles(mvm, req);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment