]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wifi: iwlwifi: allow only CN mcc from WRDD
authorAnjaneyulu <pagadala.yesu.anjaneyulu@intel.com>
Thu, 8 Aug 2024 20:22:49 +0000 (23:22 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 10 Oct 2024 10:00:19 +0000 (12:00 +0200)
[ Upstream commit ff5aabe7c2a4a4b089a9ced0cb3d0e284963a7dd ]

Block other mcc expect CN from WRDD ACPI.

Signed-off-by: Anjaneyulu <pagadala.yesu.anjaneyulu@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20240808232017.fe6ea7aa4b39.I86004687a2963fe26f990770aca103e2f5cb1628@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/intel/iwlwifi/fw/acpi.c
drivers/net/wireless/intel/iwlwifi/fw/regulatory.h
drivers/net/wireless/intel/iwlwifi/fw/uefi.c
drivers/net/wireless/intel/iwlwifi/fw/uefi.h

index ba9e656037a20608fa0422bb134e54e8300446ea..9b3d3405fb83d898d8b2b67d320042303963148f 100644 (file)
@@ -356,6 +356,11 @@ int iwl_acpi_get_mcc(struct iwl_fw_runtime *fwrt, char *mcc)
        }
 
        mcc_val = wifi_pkg->package.elements[1].integer.value;
+       if (mcc_val != BIOS_MCC_CHINA) {
+               ret = -EINVAL;
+               IWL_DEBUG_RADIO(fwrt, "ACPI WRDD is supported only for CN\n");
+               goto out_free;
+       }
 
        mcc[0] = (mcc_val >> 8) & 0xff;
        mcc[1] = mcc_val & 0xff;
index 633c9ad9af841e39fb7ceb096b28a1fd500fb608..ecf482647617cfe3abf8d29c987861133b54a3c4 100644 (file)
@@ -45,6 +45,8 @@
 #define IWL_WTAS_ENABLE_IEC_MSK        0x4
 #define IWL_WTAS_USA_UHB_MSK           BIT(16)
 
+#define BIOS_MCC_CHINA 0x434e
+
 /*
  * The profile for revision 2 is a superset of revision 1, which is in
  * turn a superset of revision 0.  So we can store all revisions
index fb982d4fe85100973be4ac1a87b0c7f7184599f3..2cf878f237ac68aab3a51d7bca970e06ee640279 100644 (file)
@@ -638,7 +638,7 @@ int iwl_uefi_get_mcc(struct iwl_fw_runtime *fwrt, char *mcc)
                goto out;
        }
 
-       if (data->mcc != UEFI_MCC_CHINA) {
+       if (data->mcc != BIOS_MCC_CHINA) {
                ret = -EINVAL;
                IWL_DEBUG_RADIO(fwrt, "UEFI WRDD is supported only for CN\n");
                goto out;
index 1f8884ca8997c4476bb9b3276e671163058b2b2f..e0ef981cd8f28d26c35f498c8253f3094432bf7d 100644 (file)
@@ -149,8 +149,6 @@ struct uefi_cnv_var_splc {
        u32 default_pwr_limit;
 } __packed;
 
-#define UEFI_MCC_CHINA 0x434e
-
 /* struct uefi_cnv_var_wrdd - WRDD table as defined in UEFI
  * @revision: the revision of the table
  * @mcc: country identifier as defined in ISO/IEC 3166-1 Alpha 2 code