diff options
author | Wey-Yi Guy <wey-yi.w.guy@intel.com> | 2010-03-19 14:54:49 -0400 |
---|---|---|
committer | Reinette Chatre <reinette.chatre@intel.com> | 2010-03-25 14:22:32 -0400 |
commit | d28667f871991e0eea983b398421b8db2c8bdf8c (patch) | |
tree | baeb7ca506966102456cfb3363a07bf377910173 /drivers | |
parent | 6e8cc38d5b05bb812f89a35bd9bf52405e67d0df (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.c | 1 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-core.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-core.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-scan.c | 7 |
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"); |