iwlwifi: skip first element in the WTAS ACPI table
[ Upstream commit19426d5430] By mistake we were considering the first element of the WTAS wifi package as part of the data we want to rid, but that element is the wifi package signature (always 0x07), so it should be skipped. Change the code to read the data starting from element 1 instead. Signed-off-by: Abhishek Naik <abhishek.naik@intel.com> Fixes:28dd7ccdc5("iwlwifi: acpi: read TAS table from ACPI and send it to the FW") Signed-off-by: Luca Coelho <luciano.coelho@intel.com> Link: https://lore.kernel.org/r/iwlwifi.20210805141826.ff8148197b15.I70636c04e37b2b57a5df3ce611511f62203d27a7@changeid Signed-off-by: Luca Coelho <luciano.coelho@intel.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
4c4f868082
commit
bd6d9c83f4
@@ -254,7 +254,7 @@ int iwl_acpi_get_tas(struct iwl_fw_runtime *fwrt,
|
||||
goto out_free;
|
||||
}
|
||||
|
||||
enabled = !!wifi_pkg->package.elements[0].integer.value;
|
||||
enabled = !!wifi_pkg->package.elements[1].integer.value;
|
||||
|
||||
if (!enabled) {
|
||||
*block_list_size = -1;
|
||||
@@ -263,15 +263,15 @@ int iwl_acpi_get_tas(struct iwl_fw_runtime *fwrt,
|
||||
goto out_free;
|
||||
}
|
||||
|
||||
if (wifi_pkg->package.elements[1].type != ACPI_TYPE_INTEGER ||
|
||||
wifi_pkg->package.elements[1].integer.value >
|
||||
if (wifi_pkg->package.elements[2].type != ACPI_TYPE_INTEGER ||
|
||||
wifi_pkg->package.elements[2].integer.value >
|
||||
APCI_WTAS_BLACK_LIST_MAX) {
|
||||
IWL_DEBUG_RADIO(fwrt, "TAS invalid array size %llu\n",
|
||||
wifi_pkg->package.elements[1].integer.value);
|
||||
ret = -EINVAL;
|
||||
goto out_free;
|
||||
}
|
||||
*block_list_size = wifi_pkg->package.elements[1].integer.value;
|
||||
*block_list_size = wifi_pkg->package.elements[2].integer.value;
|
||||
|
||||
IWL_DEBUG_RADIO(fwrt, "TAS array size %d\n", *block_list_size);
|
||||
if (*block_list_size > APCI_WTAS_BLACK_LIST_MAX) {
|
||||
@@ -284,15 +284,15 @@ int iwl_acpi_get_tas(struct iwl_fw_runtime *fwrt,
|
||||
for (i = 0; i < *block_list_size; i++) {
|
||||
u32 country;
|
||||
|
||||
if (wifi_pkg->package.elements[2 + i].type !=
|
||||
if (wifi_pkg->package.elements[3 + i].type !=
|
||||
ACPI_TYPE_INTEGER) {
|
||||
IWL_DEBUG_RADIO(fwrt,
|
||||
"TAS invalid array elem %d\n", 2 + i);
|
||||
"TAS invalid array elem %d\n", 3 + i);
|
||||
ret = -EINVAL;
|
||||
goto out_free;
|
||||
}
|
||||
|
||||
country = wifi_pkg->package.elements[2 + i].integer.value;
|
||||
country = wifi_pkg->package.elements[3 + i].integer.value;
|
||||
block_list_array[i] = cpu_to_le32(country);
|
||||
IWL_DEBUG_RADIO(fwrt, "TAS block list country %d\n", country);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user