|
@@ -284,11 +284,11 @@ static void iwl_mvm_scan_condition_iterator(void *data, u8 *mac,
|
|
|
struct ieee80211_vif *vif)
|
|
|
{
|
|
|
struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
|
|
|
- bool *global_bound = data;
|
|
|
+ int *global_cnt = data;
|
|
|
|
|
|
if (vif->type != NL80211_IFTYPE_P2P_DEVICE && mvmvif->phy_ctxt &&
|
|
|
mvmvif->phy_ctxt->id < MAX_PHYS)
|
|
|
- *global_bound = true;
|
|
|
+ *global_cnt += 1;
|
|
|
}
|
|
|
|
|
|
static void iwl_mvm_scan_calc_params(struct iwl_mvm *mvm,
|
|
@@ -296,16 +296,16 @@ static void iwl_mvm_scan_calc_params(struct iwl_mvm *mvm,
|
|
|
int n_ssids, u32 flags,
|
|
|
struct iwl_mvm_scan_params *params)
|
|
|
{
|
|
|
- bool global_bound = false;
|
|
|
+ int global_cnt = 0;
|
|
|
enum ieee80211_band band;
|
|
|
u8 frag_passive_dwell = 0;
|
|
|
|
|
|
ieee80211_iterate_active_interfaces_atomic(mvm->hw,
|
|
|
IEEE80211_IFACE_ITER_NORMAL,
|
|
|
iwl_mvm_scan_condition_iterator,
|
|
|
- &global_bound);
|
|
|
+ &global_cnt);
|
|
|
|
|
|
- if (!global_bound)
|
|
|
+ if (!global_cnt)
|
|
|
goto not_bound;
|
|
|
|
|
|
params->suspend_time = 30;
|
|
@@ -316,7 +316,11 @@ static void iwl_mvm_scan_calc_params(struct iwl_mvm *mvm,
|
|
|
IWL_UCODE_TLV_API_FRAGMENTED_SCAN) {
|
|
|
params->suspend_time = 105;
|
|
|
params->max_out_time = 70;
|
|
|
- frag_passive_dwell = 20;
|
|
|
+ /*
|
|
|
+ * If there is more than one active interface make
|
|
|
+ * passive scan more fragmented.
|
|
|
+ */
|
|
|
+ frag_passive_dwell = (global_cnt < 2) ? 40 : 20;
|
|
|
} else {
|
|
|
params->suspend_time = 120;
|
|
|
params->max_out_time = 120;
|