diff mbox series

iwlwifi: mvm: check if SAR GEO is supported before sending command

Message ID iwlwifi.20220113104217.0ae07c2712dc.I14e2985bfd7ddd8a8d83eb1869b800c0e7f30db4@changeid
State New
Headers show
Series iwlwifi: mvm: check if SAR GEO is supported before sending command | expand

Commit Message

Luca Coelho Jan. 13, 2022, 8:42 a.m. UTC
From: Luca Coelho <luciano.coelho@intel.com>

Older hardware, for instance 3160, do not support SAR GEO offsets.  We
used to check for support before sending the command, but when moving
the command to the init phase, we lost the check.  This causes a
failure when initializing HW that do not support this command.

Fix that by adding a check before sending the command.  Additionally,
fix the caller so that it checks for the return value of the
iwl_mvm_sar_geo_init() function, which it was ignoring.

Fixes: db700bc35703 ("iwlwifi: mvm: check if SAR GEO is supported before sending command")
Cc: stable@vger.kernel.org # 5.15+
Reported-by: Len Brown <lenb@kernel.org>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
---
 drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

Luca Coelho Jan. 27, 2022, 6:29 p.m. UTC | #1
On Thu, 2022-01-13 at 14:09 +0200, Luca Coelho wrote:
> On Thu, 2022-01-13 at 12:47 +0200, Kalle Valo wrote:
> > Luca Coelho <luca@coelho.fi> writes:
> > 
> > > From: Luca Coelho <luciano.coelho@intel.com>
> > > 
> > > Older hardware, for instance 3160, do not support SAR GEO offsets.  We
> > > used to check for support before sending the command, but when moving
> > > the command to the init phase, we lost the check.  This causes a
> > > failure when initializing HW that do not support this command.
> > > 
> > > Fix that by adding a check before sending the command.  Additionally,
> > > fix the caller so that it checks for the return value of the
> > > iwl_mvm_sar_geo_init() function, which it was ignoring.
> > > 
> > > Fixes: db700bc35703 ("iwlwifi: mvm: check if SAR GEO is supported before sending command")
> > 
> > $ git show db700bc35703
> > fatal: ambiguous argument 'db700bc35703': unknown revision or path not in the working tree.
> > 
> > No need to resend because of this, if you can provide the commit id I
> > can fix the tag.
> 
> Oops, sorry, I added the tag to my own commit...
> 
> This is the correct one:
> 
> Fixes: 78a19d5285d9 ("iwlwifi: mvm: Read the PPAG and SAR tables at INIT stage")

As we discussed on IRC, this is not the right fix.  I have now finally
had the time to fix it properly, so let's drop this patch.  I'll send a
new one soon.

--
Cheers,
Luca.
diff mbox series

Patch

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
index 6f4690e56a46..6528a6253336 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
@@ -882,6 +882,10 @@  static int iwl_mvm_sar_geo_init(struct iwl_mvm *mvm)
 		     offsetof(struct iwl_geo_tx_power_profiles_cmd_v4, ops) !=
 		     offsetof(struct iwl_geo_tx_power_profiles_cmd_v5, ops));
 
+	/* not supporting GEO is not a failure, so return 0 */
+	if (!iwl_sar_geo_support(&mvm->fwrt))
+		return 0;
+
 	/* the ops field is at the same spot for all versions, so set in v1 */
 	cmd.v1.ops = cpu_to_le32(IWL_PER_CHAIN_OFFSET_SET_TABLES);
 
@@ -1741,7 +1745,7 @@  int iwl_mvm_up(struct iwl_mvm *mvm)
 	ret = iwl_mvm_sar_init(mvm);
 	if (ret == 0)
 		ret = iwl_mvm_sar_geo_init(mvm);
-	else if (ret < 0)
+	if (ret < 0)
 		goto error;
 
 	ret = iwl_mvm_sgom_init(mvm);