aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorWey-Yi Guy <wey-yi.w.guy@intel.com>2010-03-19 14:54:49 -0400
committerReinette Chatre <reinette.chatre@intel.com>2010-03-25 14:22:32 -0400
commitd28667f871991e0eea983b398421b8db2c8bdf8c (patch)
treebaeb7ca506966102456cfb3363a07bf377910173 /drivers
parent6e8cc38d5b05bb812f89a35bd9bf52405e67d0df (diff)
iwlwifi: avoid device type checking in generic code
Avoid checking for specified device type to perform certain function, switch to .cfg approach as more generic and better implementation method. Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-4965.c1
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.c6
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-core.h1
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-scan.c7
4 files changed, 9 insertions, 6 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c
index 1b5ced5159b8..1808c976e504 100644
--- a/drivers/net/wireless/iwlwifi/iwl-4965.c
+++ b/drivers/net/wireless/iwlwifi/iwl-4965.c
@@ -2259,6 +2259,7 @@ struct iwl_cfg iwl4965_agn_cfg = {
2259 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, 2259 .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
2260 .monitor_recover_period = IWL_MONITORING_PERIOD, 2260 .monitor_recover_period = IWL_MONITORING_PERIOD,
2261 .temperature_kelvin = true, 2261 .temperature_kelvin = true,
2262 .off_channel_workaround = true,
2262}; 2263};
2263 2264
2264/* Module firmware */ 2265/* Module firmware */
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
index 9e4835240815..1b4408a31bff 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
@@ -992,12 +992,12 @@ void iwl_set_rxon_chain(struct iwl_priv *priv)
992 rx_chain |= idle_rx_cnt << RXON_RX_CHAIN_CNT_POS; 992 rx_chain |= idle_rx_cnt << RXON_RX_CHAIN_CNT_POS;
993 993
994 /* copied from 'iwl_bg_request_scan()' */ 994 /* copied from 'iwl_bg_request_scan()' */
995 /* Force use of chains B and C (0x6) for Rx for 4965 995 /* Force use of chains B and C (0x6) for Rx
996 * Avoid A (0x1) because of its off-channel reception on A-band. 996 * Avoid A (0x1) for the device has off-channel reception on A-band.
997 * MIMO is not used here, but value is required */ 997 * MIMO is not used here, but value is required */
998 if (iwl_is_monitor_mode(priv) && 998 if (iwl_is_monitor_mode(priv) &&
999 !(priv->staging_rxon.flags & RXON_FLG_BAND_24G_MSK) && 999 !(priv->staging_rxon.flags & RXON_FLG_BAND_24G_MSK) &&
1000 ((priv->hw_rev & CSR_HW_REV_TYPE_MSK) == CSR_HW_REV_TYPE_4965)) { 1000 priv->cfg->off_channel_workaround) {
1001 rx_chain = ANT_ABC << RXON_RX_CHAIN_VALID_POS; 1001 rx_chain = ANT_ABC << RXON_RX_CHAIN_VALID_POS;
1002 rx_chain |= ANT_BC << RXON_RX_CHAIN_FORCE_SEL_POS; 1002 rx_chain |= ANT_BC << RXON_RX_CHAIN_FORCE_SEL_POS;
1003 rx_chain |= ANT_ABC << RXON_RX_CHAIN_FORCE_MIMO_SEL_POS; 1003 rx_chain |= ANT_ABC << RXON_RX_CHAIN_FORCE_MIMO_SEL_POS;
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h
index e9b0411de845..9d7a68f07882 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.h
+++ b/drivers/net/wireless/iwlwifi/iwl-core.h
@@ -306,6 +306,7 @@ struct iwl_cfg {
306 /* timer period for monitor the driver queues */ 306 /* timer period for monitor the driver queues */
307 u32 monitor_recover_period; 307 u32 monitor_recover_period;
308 bool temperature_kelvin; 308 bool temperature_kelvin;
309 bool off_channel_workaround;
309}; 310};
310 311
311/*************************** 312/***************************
diff --git a/drivers/net/wireless/iwlwifi/iwl-scan.c b/drivers/net/wireless/iwlwifi/iwl-scan.c
index 1544d751a42e..5ecfc7f6ff43 100644
--- a/drivers/net/wireless/iwlwifi/iwl-scan.c
+++ b/drivers/net/wireless/iwlwifi/iwl-scan.c
@@ -830,10 +830,11 @@ static void iwl_bg_request_scan(struct work_struct *data)
830 */ 830 */
831 scan->good_CRC_th = is_active ? IWL_GOOD_CRC_TH : 0; 831 scan->good_CRC_th = is_active ? IWL_GOOD_CRC_TH : 0;
832 832
833 /* Force use of chains B and C (0x6) for scan Rx for 4965 833 /* Force use of chains B and C (0x6) for scan Rx
834 * Avoid A (0x1) because of its off-channel reception on A-band. 834 * Avoid A (0x1) for the device has off-channel reception
835 * on A-band.
835 */ 836 */
836 if ((priv->hw_rev & CSR_HW_REV_TYPE_MSK) == CSR_HW_REV_TYPE_4965) 837 if (priv->cfg->off_channel_workaround)
837 rx_ant = ANT_BC; 838 rx_ant = ANT_BC;
838 } else { 839 } else {
839 IWL_WARN(priv, "Invalid scan band count\n"); 840 IWL_WARN(priv, "Invalid scan band count\n");