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

Commit e7c2e1fd authored by Avri Altman's avatar Avri Altman Committed by Emmanuel Grumbach
Browse files

iwlwifi: mvm: Enable MPLUT only on supported hw



When there's a bt-wifi contention that requires arbitration,
we use a priority-based mechanism to decide which comm wins.
Over time, use cases become more and more complex, with multiple
concurrent active links with different traffic types and different QoS
requirements, on both WiFi and BT sides.
This, in turn, requires us to elaborate our prioritization mechanism.
However, our legacy products included hw that does not supports this,
so selectively enable this on specific hw - as signaled by the firmware.

Signed-off-by: default avatarAvri Altman <avri.altman@intel.com>
Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
parent b9de521f
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -308,6 +308,7 @@ typedef unsigned int __bitwise__ iwl_ucode_tlv_capa_t;
 * @IWL_UCODE_TLV_CAPA_GSCAN_SUPPORT: supports gscan
 * @IWL_UCODE_TLV_CAPA_GSCAN_SUPPORT: supports gscan
 * @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
 *
 *
 * @NUM_IWL_UCODE_TLV_CAPA: number of bits used
 * @NUM_IWL_UCODE_TLV_CAPA: number of bits used
 */
 */
@@ -334,6 +335,7 @@ enum iwl_ucode_tlv_capa {
	IWL_UCODE_TLV_CAPA_GSCAN_SUPPORT		= (__force iwl_ucode_tlv_capa_t)31,
	IWL_UCODE_TLV_CAPA_GSCAN_SUPPORT		= (__force iwl_ucode_tlv_capa_t)31,
	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,


	NUM_IWL_UCODE_TLV_CAPA
	NUM_IWL_UCODE_TLV_CAPA
#ifdef __CHECKER__
#ifdef __CHECKER__
+1 −4
Original line number Original line Diff line number Diff line
@@ -443,11 +443,8 @@ int iwl_send_bt_init_conf(struct iwl_mvm *mvm)
	if (iwl_mvm_bt_is_plcr_supported(mvm))
	if (iwl_mvm_bt_is_plcr_supported(mvm))
		bt_cmd.enabled_modules |= cpu_to_le32(BT_COEX_CORUN_ENABLED);
		bt_cmd.enabled_modules |= cpu_to_le32(BT_COEX_CORUN_ENABLED);


	if (IWL_MVM_BT_COEX_MPLUT) {
	if (iwl_mvm_is_mplut_supported(mvm))
		bt_cmd.enabled_modules |= cpu_to_le32(BT_COEX_MPLUT_ENABLED);
		bt_cmd.enabled_modules |= cpu_to_le32(BT_COEX_MPLUT_ENABLED);
		bt_cmd.enabled_modules |=
			cpu_to_le32(BT_COEX_MPLUT_BOOST_ENABLED);
	}


	bt_cmd.enabled_modules |= cpu_to_le32(BT_COEX_HIGH_BAND_RET);
	bt_cmd.enabled_modules |= cpu_to_le32(BT_COEX_HIGH_BAND_RET);


+7 −0
Original line number Original line Diff line number Diff line
@@ -976,6 +976,13 @@ static inline bool iwl_mvm_is_csum_supported(struct iwl_mvm *mvm)
			   IWL_UCODE_TLV_CAPA_CSUM_SUPPORT);
			   IWL_UCODE_TLV_CAPA_CSUM_SUPPORT);
}
}


static inline bool iwl_mvm_is_mplut_supported(struct iwl_mvm *mvm)
{
	return fw_has_capa(&mvm->fw->ucode_capa,
			   IWL_UCODE_TLV_CAPA_BT_MPLUT_SUPPORT) &&
		IWL_MVM_BT_COEX_MPLUT;
}

static inline bool iwl_mvm_has_new_rx_api(struct iwl_mvm *mvm)
static inline bool iwl_mvm_has_new_rx_api(struct iwl_mvm *mvm)
{
{
	/* firmware flag isn't defined yet */
	/* firmware flag isn't defined yet */