aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl3945-base.c
diff options
context:
space:
mode:
authorReinette Chatre <reinette.chatre@intel.com>2008-03-11 19:17:15 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-03-13 19:32:33 -0400
commit26c0f03f6b77c513cb7bc37b73a06819bdbb791b (patch)
treef32ce924d002461216053dd4cf588e3c8e3272f2 /drivers/net/wireless/iwlwifi/iwl3945-base.c
parent35cdeaf4103b9a5c8a86899a5ed12a86c6a12a37 (diff)
iwlwifi: fix bug to show hidden APs during scan
Indirect scanning ('iwlist scan') should report information about hidden APs. When an AP is hidden it does not respond to active scanning, we thus have to use passive scanning to locate these APs. This fixes http://bughost.org/bugzilla/show_bug.cgi?id=1499 Signed-off-by: Reinette Chatre <reinette.chatre@intel.com> Tested-by: Bill Moss <bmoss@clemson.edu> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl3945-base.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl3945-base.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index bf3925fdb9be..093b863ef904 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -6309,18 +6309,23 @@ static void iwl3945_bg_request_scan(struct work_struct *data)
6309 if (priv->iw_mode == IEEE80211_IF_TYPE_MNTR) 6309 if (priv->iw_mode == IEEE80211_IF_TYPE_MNTR)
6310 scan->filter_flags = RXON_FILTER_PROMISC_MSK; 6310 scan->filter_flags = RXON_FILTER_PROMISC_MSK;
6311 6311
6312 if (direct_mask) 6312 if (direct_mask) {
6313 IWL_DEBUG_SCAN 6313 IWL_DEBUG_SCAN
6314 ("Initiating direct scan for %s.\n", 6314 ("Initiating direct scan for %s.\n",
6315 iwl3945_escape_essid(priv->essid, priv->essid_len)); 6315 iwl3945_escape_essid(priv->essid, priv->essid_len));
6316 else 6316 scan->channel_count =
6317 iwl3945_get_channels_for_scan(
6318 priv, band, 1, /* active */
6319 direct_mask,
6320 (void *)&scan->data[le16_to_cpu(scan->tx_cmd.len)]);
6321 } else {
6317 IWL_DEBUG_SCAN("Initiating indirect scan.\n"); 6322 IWL_DEBUG_SCAN("Initiating indirect scan.\n");
6318 6323 scan->channel_count =
6319 scan->channel_count = 6324 iwl3945_get_channels_for_scan(
6320 iwl3945_get_channels_for_scan( 6325 priv, band, 0, /* passive */
6321 priv, band, 1, /* active */ 6326 direct_mask,
6322 direct_mask, 6327 (void *)&scan->data[le16_to_cpu(scan->tx_cmd.len)]);
6323 (void *)&scan->data[le16_to_cpu(scan->tx_cmd.len)]); 6328 }
6324 6329
6325 cmd.len += le16_to_cpu(scan->tx_cmd.len) + 6330 cmd.len += le16_to_cpu(scan->tx_cmd.len) +
6326 scan->channel_count * sizeof(struct iwl3945_scan_channel); 6331 scan->channel_count * sizeof(struct iwl3945_scan_channel);