Message ID | iwlwifi.20220113104217.0ae07c2712dc.I14e2985bfd7ddd8a8d83eb1869b800c0e7f30db4@changeid |
---|---|
State | New |
Headers | show |
Series | iwlwifi: mvm: check if SAR GEO is supported before sending command | expand |
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 --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);