From: Luca Coelho <luciano.coe...@intel.com>

[ Upstream commit 28db1862067cb09ebfdccfbc129a52c6fdb4c4d7 ]

The call to iwl_sar_geo_init() was moved to the end of the
iwl_mvm_sar_geo_init() function, after the table revision is assigned
to the FW command.  But the revision is only known after
iwl_sar_geo_init() is called, so we were always assigning zero to it.

Fix that by moving the assignment code after the iwl_sar_geo_init()
function is called.

Signed-off-by: Luca Coelho <luciano.coe...@intel.com>
Fixes: 45acebf8d6a6 ("iwlwifi: fix sar geo table initialization")
Signed-off-by: Luca Coelho <luciano.coe...@intel.com>
Link: 
https://lore.kernel.org/r/iwlwifi.20210210135352.cef55ef3a065.If96c60f08d24c2262c287168a6f0dbd7cf0f8f5c@changeid
Signed-off-by: Luca Coelho <luciano.coe...@intel.com>
Signed-off-by: Sasha Levin <sas...@kernel.org>
---
 drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c 
b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
index 34a44300a15eb..ad374b25e2550 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
@@ -896,12 +896,10 @@ static int iwl_mvm_sar_geo_init(struct iwl_mvm *mvm)
        if (cmd_ver == 3) {
                len = sizeof(cmd.v3);
                n_bands = ARRAY_SIZE(cmd.v3.table[0]);
-               cmd.v3.table_revision = cpu_to_le32(mvm->fwrt.geo_rev);
        } else if (fw_has_api(&mvm->fwrt.fw->ucode_capa,
                              IWL_UCODE_TLV_API_SAR_TABLE_VER)) {
                len = sizeof(cmd.v2);
                n_bands = ARRAY_SIZE(cmd.v2.table[0]);
-               cmd.v2.table_revision = cpu_to_le32(mvm->fwrt.geo_rev);
        } else {
                len = sizeof(cmd.v1);
                n_bands = ARRAY_SIZE(cmd.v1.table[0]);
@@ -921,6 +919,16 @@ static int iwl_mvm_sar_geo_init(struct iwl_mvm *mvm)
        if (ret)
                return 0;
 
+       /*
+        * Set the revision on versions that contain it.
+        * This must be done after calling iwl_sar_geo_init().
+        */
+       if (cmd_ver == 3)
+               cmd.v3.table_revision = cpu_to_le32(mvm->fwrt.geo_rev);
+       else if (fw_has_api(&mvm->fwrt.fw->ucode_capa,
+                           IWL_UCODE_TLV_API_SAR_TABLE_VER))
+               cmd.v2.table_revision = cpu_to_le32(mvm->fwrt.geo_rev);
+
        return iwl_mvm_send_cmd_pdu(mvm,
                                    WIDE_ID(PHY_OPS_GROUP, GEO_TX_POWER_LIMIT),
                                    0, len, &cmd);
-- 
2.27.0



Reply via email to