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

Commit 1e3c3c35 authored by Emmanuel Grumbach's avatar Emmanuel Grumbach
Browse files

iwlwifi: mvm: let the firmware choose the antenna for beacons



The firmware knows better what antenna to choose.
Old firmware still need the setting, so use a flag to know
if the driver should choose the antenna or if the firmware
can do it iself.

Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
parent 006bda75
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -309,6 +309,8 @@ typedef unsigned int __bitwise__ iwl_ucode_tlv_capa_t;
 * @IWL_UCODE_TLV_CAPA_EXTENDED_DTS_MEASURE: extended DTS measurement
 * @IWL_UCODE_TLV_CAPA_EXTENDED_DTS_MEASURE: extended DTS measurement
 * @IWL_UCODE_TLV_CAPA_SHORT_PM_TIMEOUTS: supports short PM timeouts
 * @IWL_UCODE_TLV_CAPA_SHORT_PM_TIMEOUTS: supports short PM timeouts
 * @IWL_UCODE_TLV_CAPA_BT_MPLUT_SUPPORT: supports bt-coex Multi-priority LUT
 * @IWL_UCODE_TLV_CAPA_BT_MPLUT_SUPPORT: supports bt-coex Multi-priority LUT
 * @IWL_UCODE_TLV_CAPA_BEACON_ANT_SELECTION: firmware will decide on what
 *	antenna the beacon should be transmitted
 *
 *
 * @NUM_IWL_UCODE_TLV_CAPA: number of bits used
 * @NUM_IWL_UCODE_TLV_CAPA: number of bits used
 */
 */
@@ -336,6 +338,7 @@ enum iwl_ucode_tlv_capa {
	IWL_UCODE_TLV_CAPA_EXTENDED_DTS_MEASURE		= (__force iwl_ucode_tlv_capa_t)64,
	IWL_UCODE_TLV_CAPA_EXTENDED_DTS_MEASURE		= (__force iwl_ucode_tlv_capa_t)64,
	IWL_UCODE_TLV_CAPA_SHORT_PM_TIMEOUTS		= (__force iwl_ucode_tlv_capa_t)65,
	IWL_UCODE_TLV_CAPA_SHORT_PM_TIMEOUTS		= (__force iwl_ucode_tlv_capa_t)65,
	IWL_UCODE_TLV_CAPA_BT_MPLUT_SUPPORT		= (__force iwl_ucode_tlv_capa_t)67,
	IWL_UCODE_TLV_CAPA_BT_MPLUT_SUPPORT		= (__force iwl_ucode_tlv_capa_t)67,
	IWL_UCODE_TLV_CAPA_BEACON_ANT_SELECTION		= (__force iwl_ucode_tlv_capa_t)71,


	NUM_IWL_UCODE_TLV_CAPA
	NUM_IWL_UCODE_TLV_CAPA
#ifdef __CHECKER__
#ifdef __CHECKER__
+6 −3
Original line number Original line Diff line number Diff line
@@ -1012,9 +1012,12 @@ static int iwl_mvm_mac_ctxt_send_beacon(struct iwl_mvm *mvm,
						TX_CMD_FLG_BT_PRIO_POS;
						TX_CMD_FLG_BT_PRIO_POS;
	beacon_cmd.tx.tx_flags = cpu_to_le32(tx_flags);
	beacon_cmd.tx.tx_flags = cpu_to_le32(tx_flags);


	if (!fw_has_capa(&mvm->fw->ucode_capa,
			 IWL_UCODE_TLV_CAPA_BEACON_ANT_SELECTION)) {
		mvm->mgmt_last_antenna_idx =
		mvm->mgmt_last_antenna_idx =
			iwl_mvm_next_antenna(mvm, iwl_mvm_get_valid_tx_ant(mvm),
			iwl_mvm_next_antenna(mvm, iwl_mvm_get_valid_tx_ant(mvm),
					     mvm->mgmt_last_antenna_idx);
					     mvm->mgmt_last_antenna_idx);
	}


	beacon_cmd.tx.rate_n_flags =
	beacon_cmd.tx.rate_n_flags =
		cpu_to_le32(BIT(mvm->mgmt_last_antenna_idx) <<
		cpu_to_le32(BIT(mvm->mgmt_last_antenna_idx) <<