diff options
author | Johannes Berg <johannes.berg@intel.com> | 2010-10-04 08:47:23 -0400 |
---|---|---|
committer | Wey-Yi Guy <wey-yi.w.guy@intel.com> | 2010-10-14 12:46:33 -0400 |
commit | 085fbca29d7b4574c4e42189ee5789004e4beff7 (patch) | |
tree | e573c78ee748410861112635643d8a8294f89e2a /drivers/net/wireless/iwlwifi/iwl-agn-lib.c | |
parent | de05ead8f8649788603afc470eb1c2ea2b8b1655 (diff) |
iwlwifi: allow probe-after-rx on 2.4 GHz
There are two passive 2.4 GHz channels: 12 and 13.
If you have a hidden SSID on those, you will not
be able to connect to it because we don't send out
probe requests there. We can allow this by using
the firmware's probe-after-rx functionality on
those channels as well.
This fixes
https://bugzilla.kernel.org/show_bug.cgi?id=16462
Reported-by: Daniel J Blueman <daniel.blueman@gmail.com>
Tested-by: Daniel J Blueman <daniel.blueman@gmail.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-agn-lib.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn-lib.c | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c index c1a389883af0..b555edd53354 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c | |||
@@ -1447,35 +1447,35 @@ int iwlagn_request_scan(struct iwl_priv *priv, struct ieee80211_vif *vif) | |||
1447 | if (priv->cfg->bt_params && | 1447 | if (priv->cfg->bt_params && |
1448 | priv->cfg->bt_params->advanced_bt_coexist) | 1448 | priv->cfg->bt_params->advanced_bt_coexist) |
1449 | scan->tx_cmd.tx_flags |= TX_CMD_FLG_IGNORE_BT; | 1449 | scan->tx_cmd.tx_flags |= TX_CMD_FLG_IGNORE_BT; |
1450 | scan->good_CRC_th = IWL_GOOD_CRC_TH_DISABLED; | ||
1451 | break; | 1450 | break; |
1452 | case IEEE80211_BAND_5GHZ: | 1451 | case IEEE80211_BAND_5GHZ: |
1453 | rate = IWL_RATE_6M_PLCP; | 1452 | rate = IWL_RATE_6M_PLCP; |
1454 | /* | ||
1455 | * If active scanning is requested but a certain channel is | ||
1456 | * marked passive, we can do active scanning if we detect | ||
1457 | * transmissions. | ||
1458 | * | ||
1459 | * There is an issue with some firmware versions that triggers | ||
1460 | * a sysassert on a "good CRC threshold" of zero (== disabled), | ||
1461 | * on a radar channel even though this means that we should NOT | ||
1462 | * send probes. | ||
1463 | * | ||
1464 | * The "good CRC threshold" is the number of frames that we | ||
1465 | * need to receive during our dwell time on a channel before | ||
1466 | * sending out probes -- setting this to a huge value will | ||
1467 | * mean we never reach it, but at the same time work around | ||
1468 | * the aforementioned issue. Thus use IWL_GOOD_CRC_TH_NEVER | ||
1469 | * here instead of IWL_GOOD_CRC_TH_DISABLED. | ||
1470 | */ | ||
1471 | scan->good_CRC_th = is_active ? IWL_GOOD_CRC_TH_DEFAULT : | ||
1472 | IWL_GOOD_CRC_TH_NEVER; | ||
1473 | break; | 1453 | break; |
1474 | default: | 1454 | default: |
1475 | IWL_WARN(priv, "Invalid scan band\n"); | 1455 | IWL_WARN(priv, "Invalid scan band\n"); |
1476 | return -EIO; | 1456 | return -EIO; |
1477 | } | 1457 | } |
1478 | 1458 | ||
1459 | /* | ||
1460 | * If active scanning is requested but a certain channel is | ||
1461 | * marked passive, we can do active scanning if we detect | ||
1462 | * transmissions. | ||
1463 | * | ||
1464 | * There is an issue with some firmware versions that triggers | ||
1465 | * a sysassert on a "good CRC threshold" of zero (== disabled), | ||
1466 | * on a radar channel even though this means that we should NOT | ||
1467 | * send probes. | ||
1468 | * | ||
1469 | * The "good CRC threshold" is the number of frames that we | ||
1470 | * need to receive during our dwell time on a channel before | ||
1471 | * sending out probes -- setting this to a huge value will | ||
1472 | * mean we never reach it, but at the same time work around | ||
1473 | * the aforementioned issue. Thus use IWL_GOOD_CRC_TH_NEVER | ||
1474 | * here instead of IWL_GOOD_CRC_TH_DISABLED. | ||
1475 | */ | ||
1476 | scan->good_CRC_th = is_active ? IWL_GOOD_CRC_TH_DEFAULT : | ||
1477 | IWL_GOOD_CRC_TH_NEVER; | ||
1478 | |||
1479 | band = priv->scan_band; | 1479 | band = priv->scan_band; |
1480 | 1480 | ||
1481 | if (priv->cfg->scan_rx_antennas[band]) | 1481 | if (priv->cfg->scan_rx_antennas[band]) |