Commit d28667f8 authored by Wey-Yi Guy's avatar Wey-Yi Guy Committed by Reinette Chatre

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: default avatarWey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: default avatarReinette Chatre <reinette.chatre@intel.com>
parent 6e8cc38d
...@@ -2259,6 +2259,7 @@ struct iwl_cfg iwl4965_agn_cfg = { ...@@ -2259,6 +2259,7 @@ struct iwl_cfg iwl4965_agn_cfg = {
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF, .plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.monitor_recover_period = IWL_MONITORING_PERIOD, .monitor_recover_period = IWL_MONITORING_PERIOD,
.temperature_kelvin = true, .temperature_kelvin = true,
.off_channel_workaround = true,
}; };
/* Module firmware */ /* Module firmware */
......
...@@ -992,12 +992,12 @@ void iwl_set_rxon_chain(struct iwl_priv *priv) ...@@ -992,12 +992,12 @@ void iwl_set_rxon_chain(struct iwl_priv *priv)
rx_chain |= idle_rx_cnt << RXON_RX_CHAIN_CNT_POS; rx_chain |= idle_rx_cnt << RXON_RX_CHAIN_CNT_POS;
/* copied from 'iwl_bg_request_scan()' */ /* copied from 'iwl_bg_request_scan()' */
/* Force use of chains B and C (0x6) for Rx for 4965 /* Force use of chains B and C (0x6) for Rx
* Avoid A (0x1) because of its off-channel reception on A-band. * Avoid A (0x1) for the device has off-channel reception on A-band.
* MIMO is not used here, but value is required */ * MIMO is not used here, but value is required */
if (iwl_is_monitor_mode(priv) && if (iwl_is_monitor_mode(priv) &&
!(priv->staging_rxon.flags & RXON_FLG_BAND_24G_MSK) && !(priv->staging_rxon.flags & RXON_FLG_BAND_24G_MSK) &&
((priv->hw_rev & CSR_HW_REV_TYPE_MSK) == CSR_HW_REV_TYPE_4965)) { priv->cfg->off_channel_workaround) {
rx_chain = ANT_ABC << RXON_RX_CHAIN_VALID_POS; rx_chain = ANT_ABC << RXON_RX_CHAIN_VALID_POS;
rx_chain |= ANT_BC << RXON_RX_CHAIN_FORCE_SEL_POS; rx_chain |= ANT_BC << RXON_RX_CHAIN_FORCE_SEL_POS;
rx_chain |= ANT_ABC << RXON_RX_CHAIN_FORCE_MIMO_SEL_POS; rx_chain |= ANT_ABC << RXON_RX_CHAIN_FORCE_MIMO_SEL_POS;
......
...@@ -306,6 +306,7 @@ struct iwl_cfg { ...@@ -306,6 +306,7 @@ struct iwl_cfg {
/* timer period for monitor the driver queues */ /* timer period for monitor the driver queues */
u32 monitor_recover_period; u32 monitor_recover_period;
bool temperature_kelvin; bool temperature_kelvin;
bool off_channel_workaround;
}; };
/*************************** /***************************
......
...@@ -830,10 +830,11 @@ static void iwl_bg_request_scan(struct work_struct *data) ...@@ -830,10 +830,11 @@ static void iwl_bg_request_scan(struct work_struct *data)
*/ */
scan->good_CRC_th = is_active ? IWL_GOOD_CRC_TH : 0; scan->good_CRC_th = is_active ? IWL_GOOD_CRC_TH : 0;
/* Force use of chains B and C (0x6) for scan Rx for 4965 /* Force use of chains B and C (0x6) for scan Rx
* Avoid A (0x1) because of its off-channel reception on A-band. * Avoid A (0x1) for the device has off-channel reception
* on A-band.
*/ */
if ((priv->hw_rev & CSR_HW_REV_TYPE_MSK) == CSR_HW_REV_TYPE_4965) if (priv->cfg->off_channel_workaround)
rx_ant = ANT_BC; rx_ant = ANT_BC;
} else { } else {
IWL_WARN(priv, "Invalid scan band count\n"); IWL_WARN(priv, "Invalid scan band count\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment