mac80211: improve IBSS scanning
When IBSS is fixed to a frequency, it can still scan to try to find the right BSSID. This makes sense if the BSSID isn't also fixed, but it need not scan all channels -- just one is sufficient. Make it do that by moving the scan setup code to ieee80211_request_internal_scan() and include a channel variable setting. Note that this can be further improved to start the IBSS right away if both frequency and BSSID are fixed. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
committed by
John W. Linville
parent
a75b4363ea
commit
be4a4b6a5d
@@ -439,7 +439,7 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
|
||||
struct ieee80211_local *local = hw_to_local(hw);
|
||||
int result;
|
||||
enum ieee80211_band band;
|
||||
int channels, i, j, max_bitrates;
|
||||
int channels, max_bitrates;
|
||||
bool supp_ht;
|
||||
static const u32 cipher_suites[] = {
|
||||
WLAN_CIPHER_SUITE_WEP40,
|
||||
@@ -605,21 +605,6 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
|
||||
|
||||
ieee80211_led_init(local);
|
||||
|
||||
/* alloc internal scan request */
|
||||
i = 0;
|
||||
local->int_scan_req->ssids = &local->scan_ssid;
|
||||
local->int_scan_req->n_ssids = 1;
|
||||
for (band = 0; band < IEEE80211_NUM_BANDS; band++) {
|
||||
if (!hw->wiphy->bands[band])
|
||||
continue;
|
||||
for (j = 0; j < hw->wiphy->bands[band]->n_channels; j++) {
|
||||
local->int_scan_req->channels[i] =
|
||||
&hw->wiphy->bands[band]->channels[j];
|
||||
i++;
|
||||
}
|
||||
}
|
||||
local->int_scan_req->n_channels = i;
|
||||
|
||||
local->network_latency_notifier.notifier_call =
|
||||
ieee80211_max_network_latency;
|
||||
result = pm_qos_add_notifier(PM_QOS_NETWORK_LATENCY,
|
||||
|
Reference in New Issue
Block a user