Skip to content

Commit

Permalink
wl1271: Scan only enabled channels
Browse files Browse the repository at this point in the history
Added checking of whether channel is enabled or disabled by mac80211
stack to scan. Disabled channels are not scanned.

Signed-off-by: Teemu Paasikivi <ext-teemu.3.paasikivi@nokia.com>
Reviewed-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Signed-off-by: Luciano Coelho <luciano.coelho@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Teemu Paasikivi authored and John W. Linville committed Oct 27, 2009
1 parent 1ebec3d commit 311494c
Showing 1 changed file with 21 additions and 12 deletions.
33 changes: 21 additions & 12 deletions drivers/net/wireless/wl12xx/wl1271_cmd.c
Original file line number Diff line number Diff line change
Expand Up @@ -515,12 +515,16 @@ int wl1271_cmd_scan(struct wl1271 *wl, u8 *ssid, size_t len,

struct wl1271_cmd_trigger_scan_to *trigger = NULL;
struct wl1271_cmd_scan *params = NULL;
int i, ret;
struct ieee80211_channel *channels;
int i, j, n_ch, ret;
u16 scan_options = 0;

if (wl->scanning)
return -EINVAL;

channels = wl->hw->wiphy->bands[IEEE80211_BAND_2GHZ]->channels;
n_ch = wl->hw->wiphy->bands[IEEE80211_BAND_2GHZ]->n_channels;

params = kzalloc(sizeof(*params), GFP_KERNEL);
if (!params)
return -ENOMEM;
Expand All @@ -535,24 +539,29 @@ int wl1271_cmd_scan(struct wl1271 *wl, u8 *ssid, size_t len,
scan_options |= WL1271_SCAN_OPT_PRIORITY_HIGH;
params->params.scan_options = scan_options;

params->params.num_channels = num_channels;
params->params.num_probe_requests = probe_requests;
params->params.tx_rate = cpu_to_le32(CONF_HW_BIT_RATE_2MBPS);
params->params.tid_trigger = 0;
params->params.scan_tag = WL1271_SCAN_DEFAULT_TAG;

for (i = 0; i < num_channels; i++) {
params->channels[i].min_duration =
cpu_to_le32(WL1271_SCAN_CHAN_MIN_DURATION);
params->channels[i].max_duration =
cpu_to_le32(WL1271_SCAN_CHAN_MAX_DURATION);
memset(&params->channels[i].bssid_lsb, 0xff, 4);
memset(&params->channels[i].bssid_msb, 0xff, 2);
params->channels[i].early_termination = 0;
params->channels[i].tx_power_att = WL1271_SCAN_CURRENT_TX_PWR;
params->channels[i].channel = i + 1;
for (i = 0, j = 0; i < n_ch && i < WL1271_SCAN_MAX_CHANNELS; i++) {
if (!(channels[i].flags & IEEE80211_CHAN_DISABLED)) {
params->channels[j].min_duration =
cpu_to_le32(WL1271_SCAN_CHAN_MIN_DURATION);
params->channels[j].max_duration =
cpu_to_le32(WL1271_SCAN_CHAN_MAX_DURATION);
memset(&params->channels[j].bssid_lsb, 0xff, 4);
memset(&params->channels[j].bssid_msb, 0xff, 2);
params->channels[j].early_termination = 0;
params->channels[j].tx_power_att =
WL1271_SCAN_CURRENT_TX_PWR;
params->channels[j].channel = channels[i].hw_value;
j++;
}
}

params->params.num_channels = j;

if (len && ssid) {
params->params.ssid_len = len;
memcpy(params->params.ssid, ssid, len);
Expand Down

0 comments on commit 311494c

Please sign in to comment.