iwlwifi: acpi: fill in SAR tables with defaults
authorLuca Coelho <luciano.coelho@intel.com>
Thu, 19 Aug 2021 15:40:27 +0000 (18:40 +0300)
committerLuca Coelho <luciano.coelho@intel.com>
Thu, 26 Aug 2021 20:37:05 +0000 (23:37 +0300)
If the tables we get in the iwl_sar_set_profile() is smaller than the
revision we support, we need to fill the values with 0.  Make sure
that's the case.

Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20210819183728.7fb9716db7ba.I75541846e0720f80695186ba39398133c8758280@changeid
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/fw/acpi.c

index 37da836..1efac0b 100644 (file)
@@ -420,16 +420,21 @@ static int iwl_sar_set_profile(union acpi_object *table,
         * The table from ACPI is flat, but we store it in a
         * structured array.
         */
-       for (i = 0; i < num_chains; i++) {
-               for (j = 0; j < num_sub_bands; j++) {
-                       if (table[idx].type != ACPI_TYPE_INTEGER ||
-                           table[idx].integer.value > U8_MAX)
-                               return -EINVAL;
+       for (i = 0; i < ACPI_SAR_NUM_CHAINS_REV2; i++) {
+               for (j = 0; j < ACPI_SAR_NUM_SUB_BANDS_REV2; j++) {
+                       /* if we don't have the values, use the default */
+                       if (i >= num_chains || j >= num_sub_bands) {
+                               profile->chains[i].subbands[j] = 0;
+                       } else {
+                               if (table[idx].type != ACPI_TYPE_INTEGER ||
+                                   table[idx].integer.value > U8_MAX)
+                                       return -EINVAL;
 
-                       profile->chains[i].subbands[j] =
-                               table[idx].integer.value;
+                               profile->chains[i].subbands[j] =
+                                       table[idx].integer.value;
 
-                       idx++;
+                               idx++;
+                       }
                }
        }