wl12xx: fix sched scan of DFS channels
Eyal Shapira [Tue, 20 Dec 2011 10:04:01 +0000 (12:04 +0200)]
DFS channels weren't scanned properly because
min/max_duration weren't set for these channels
even though they're required by the FW.
The change sets passive_duration and min/max_duration
for all channels as the FW uses the correct parameters
according to the channel type.

Signed-off-by: Eyal Shapira <eyal@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>

drivers/net/wireless/wl12xx/scan.c

index 108765a..05dca0c 100644 (file)
@@ -437,18 +437,19 @@ wl1271_scan_get_sched_scan_channels(struct wl1271 *wl,
 
                        if (flags & IEEE80211_CHAN_RADAR) {
                                channels[j].flags |= SCAN_CHANNEL_FLAGS_DFS;
+
                                channels[j].passive_duration =
                                        cpu_to_le16(c->dwell_time_dfs);
-                       }
-                       else if (flags & IEEE80211_CHAN_PASSIVE_SCAN) {
+                       } else {
                                channels[j].passive_duration =
                                        cpu_to_le16(c->dwell_time_passive);
-                       } else {
-                               channels[j].min_duration =
-                                       cpu_to_le16(c->min_dwell_time_active);
-                               channels[j].max_duration =
-                                       cpu_to_le16(c->max_dwell_time_active);
                        }
+
+                       channels[j].min_duration =
+                               cpu_to_le16(c->min_dwell_time_active);
+                       channels[j].max_duration =
+                               cpu_to_le16(c->max_dwell_time_active);
+
                        channels[j].tx_power_att = req->channels[i]->max_power;
                        channels[j].channel = req->channels[i]->hw_value;