iwlwifi: mvm: Add list of OEMs allowed to use TAS
Add list of vendors that are allowed to use TAS and check it against the value provided in the SMBIOS manufacturer field. Initially add the following approved vendors: HP, Dell, Lenovo and Samsung. Signed-off-by: Ayala Barazani <ayala.barazani@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> Link: https://lore.kernel.org/r/iwlwifi.20211210090244.27fe6abf2e4c.I806e4b47dabddaa8ac27172e7cfa3d719c100e8f@changeid Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
This commit is contained in:
parent
7c53058840
commit
2856f623ce
@ -1153,11 +1153,38 @@ static int iwl_mvm_ppag_init(struct iwl_mvm *mvm)
|
||||
return iwl_mvm_ppag_send_cmd(mvm);
|
||||
}
|
||||
|
||||
static const struct dmi_system_id dmi_tas_approved_list[] = {
|
||||
{ .ident = "HP",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "HP"),
|
||||
},
|
||||
},
|
||||
{ .ident = "SAMSUNG",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD"),
|
||||
},
|
||||
},
|
||||
{ .ident = "LENOVO",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Lenovo"),
|
||||
},
|
||||
},
|
||||
{ .ident = "DELL",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||
},
|
||||
},
|
||||
|
||||
/* keep last */
|
||||
{}
|
||||
};
|
||||
|
||||
static void iwl_mvm_tas_init(struct iwl_mvm *mvm)
|
||||
{
|
||||
int ret;
|
||||
struct iwl_tas_config_cmd_v3 cmd = {};
|
||||
int cmd_size;
|
||||
const struct ieee80211_regdomain *regd;
|
||||
|
||||
BUILD_BUG_ON(ARRAY_SIZE(cmd.block_list_array) <
|
||||
APCI_WTAS_BLACK_LIST_MAX);
|
||||
@ -1167,6 +1194,24 @@ static void iwl_mvm_tas_init(struct iwl_mvm *mvm)
|
||||
return;
|
||||
}
|
||||
|
||||
/* Get the MCC from cfg80211 */
|
||||
regd = wiphy_dereference(mvm->hw->wiphy, mvm->hw->wiphy->regd);
|
||||
|
||||
if (!regd) {
|
||||
IWL_DEBUG_RADIO(mvm, "MCC is unavailable\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if ((regd->alpha2[0] == 'U' && regd->alpha2[1] == 'S') ||
|
||||
(regd->alpha2[0] == 'C' && regd->alpha2[1] == 'A')) {
|
||||
if (!dmi_check_system(dmi_tas_approved_list)) {
|
||||
IWL_DEBUG_RADIO(mvm,
|
||||
"System vendor '%s' is not in the approved list, disabling TAS.\n",
|
||||
dmi_get_system_info(DMI_SYS_VENDOR));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
ret = iwl_acpi_get_tas(&mvm->fwrt, &cmd);
|
||||
if (ret < 0) {
|
||||
IWL_DEBUG_RADIO(mvm,
|
||||
|
Loading…
x
Reference in New Issue
Block a user