Skip to content

Commit

Permalink
iwlwifi: make scan antenna forcing more generic
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Johannes Berg authored and Reinette Chatre committed Apr 16, 2010
1 parent ee10260 commit e7cb495
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 9 deletions.
7 changes: 6 additions & 1 deletion drivers/net/wireless/iwlwifi/iwl-4965.c
Original file line number Diff line number Diff line change
Expand Up @@ -2261,8 +2261,13 @@ struct iwl_cfg iwl4965_agn_cfg = {
.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
.monitor_recover_period = IWL_MONITORING_PERIOD,
.temperature_kelvin = true,
.off_channel_workaround = true,
.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 */
Expand Down
10 changes: 3 additions & 7 deletions drivers/net/wireless/iwlwifi/iwl-agn-lib.c
Original file line number Diff line number Diff line change
Expand Up @@ -1405,13 +1405,6 @@ void iwlagn_request_scan(struct iwl_priv *priv)
* detect transmissions.
*/
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;
default:
IWL_WARN(priv, "Invalid scan band count\n");
Expand All @@ -1420,6 +1413,9 @@ void iwlagn_request_scan(struct iwl_priv *priv)

band = priv->scan_band;

if (priv->cfg->scan_antennas[band])
rx_ant = priv->cfg->scan_antennas[band];

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]);
Expand Down
2 changes: 1 addition & 1 deletion drivers/net/wireless/iwlwifi/iwl-core.h
Original file line number Diff line number Diff line change
Expand Up @@ -318,8 +318,8 @@ struct iwl_cfg {
/* timer period for monitor the driver queues */
u32 monitor_recover_period;
bool temperature_kelvin;
bool off_channel_workaround;
u32 max_event_log_size;
u8 scan_antennas[IEEE80211_NUM_BANDS];
};

/***************************
Expand Down

0 comments on commit e7cb495

Please sign in to comment.