Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e7cb4955 authored by Johannes Berg's avatar Johannes Berg Committed by Reinette Chatre
Browse files

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: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarReinette Chatre <reinette.chatre@intel.com>
parent ee102603
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -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 */
+3 −7
Original line number Diff line number Diff line
@@ -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");
@@ -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]);
+1 −1
Original line number Diff line number Diff line
@@ -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];
};

/***************************