Skip to content

Commit

Permalink
iwlwifi: mvm: trim sched scan delay down to 16-bit for LMAC as well
Browse files Browse the repository at this point in the history
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: Luciano Coelho <luciano.coelho@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
  • Loading branch information
Luciano Coelho authored and Emmanuel Grumbach committed Apr 29, 2015
1 parent 7d7de1e commit 283c249
Showing 1 changed file with 15 additions and 10 deletions.
25 changes: 15 additions & 10 deletions drivers/net/wireless/iwlwifi/mvm/scan.c
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ struct iwl_mvm_scan_params {
u32 suspend_time;
bool passive_fragmented;
u32 n_channels;
u32 delay;
u16 delay;
int n_ssids;
struct cfg80211_ssid *ssids;
struct ieee80211_channel **channels;
Expand Down Expand Up @@ -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 */
sec_part->schedule[0].iter_count = params->schedule[1].iterations;

if (params->delay > U16_MAX) {
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->delay = cpu_to_le16(params->delay);
sec_part->preq = params->preq;

return 0;
Expand Down Expand Up @@ -1458,7 +1451,6 @@ int iwl_mvm_sched_scan_start(struct iwl_mvm *mvm,
params.n_ssids = req->n_ssids;
params.flags = req->flags;
params.n_channels = req->n_channels;
params.delay = req->delay;
params.ssids = req->ssids;
params.channels = req->channels;
params.mac_addr = req->mac_addr;
Expand All @@ -1481,6 +1473,19 @@ int iwl_mvm_sched_scan_start(struct iwl_mvm *mvm,
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);

ret = iwl_mvm_config_sched_scan_profiles(mvm, req);
Expand Down

0 comments on commit 283c249

Please sign in to comment.