iwlwifi: make scan antenna forcing more generic
Some future hardware will also require some antenna overrides so make the current logic more generic; right now it is semantically based on a workaround for off-channel reception but the reasons for the new antenna overrides will be different. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
This commit is contained in:
parent
ee102603c0
commit
e7cb49550e
3 changed files with 10 additions and 9 deletions
|
@ -2261,8 +2261,13 @@ 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,
|
|
||||||
.max_event_log_size = 512,
|
.max_event_log_size = 512,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Force use of chains B and C for scan RX on 5 GHz band
|
||||||
|
* because the device has off-channel reception on chain A.
|
||||||
|
*/
|
||||||
|
.scan_antennas[IEEE80211_BAND_5GHZ] = ANT_BC,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Module firmware */
|
/* Module firmware */
|
||||||
|
|
|
@ -1405,13 +1405,6 @@ void iwlagn_request_scan(struct iwl_priv *priv)
|
||||||
* detect transmissions.
|
* detect transmissions.
|
||||||
*/
|
*/
|
||||||
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
|
|
||||||
* Avoid A (0x1) for the device has off-channel reception
|
|
||||||
* on A-band.
|
|
||||||
*/
|
|
||||||
if (priv->cfg->off_channel_workaround)
|
|
||||||
rx_ant = ANT_BC;
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
IWL_WARN(priv, "Invalid scan band count\n");
|
IWL_WARN(priv, "Invalid scan band count\n");
|
||||||
|
@ -1420,6 +1413,9 @@ void iwlagn_request_scan(struct iwl_priv *priv)
|
||||||
|
|
||||||
band = priv->scan_band;
|
band = priv->scan_band;
|
||||||
|
|
||||||
|
if (priv->cfg->scan_antennas[band])
|
||||||
|
rx_ant = priv->cfg->scan_antennas[band];
|
||||||
|
|
||||||
priv->scan_tx_ant[band] =
|
priv->scan_tx_ant[band] =
|
||||||
iwl_toggle_tx_ant(priv, priv->scan_tx_ant[band]);
|
iwl_toggle_tx_ant(priv, priv->scan_tx_ant[band]);
|
||||||
rate_flags |= iwl_ant_idx_to_flags(priv->scan_tx_ant[band]);
|
rate_flags |= iwl_ant_idx_to_flags(priv->scan_tx_ant[band]);
|
||||||
|
|
|
@ -318,8 +318,8 @@ 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;
|
|
||||||
u32 max_event_log_size;
|
u32 max_event_log_size;
|
||||||
|
u8 scan_antennas[IEEE80211_NUM_BANDS];
|
||||||
};
|
};
|
||||||
|
|
||||||
/***************************
|
/***************************
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue