2019-10-08 06:05:55

by You-Sheng Yang

[permalink] [raw]
Subject: [PATCH] iwlwifi: fw: don't send GEO_TX_POWER_LIMIT command to FW version 29

Follow-up for commit fddbfeece9c7 ("iwlwifi: fw: don't send
GEO_TX_POWER_LIMIT command to FW version 36"). There is no
GEO_TX_POWER_LIMIT command support for all revisions of FW version
29, either.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=204151
Signed-off-by: You-Sheng Yang <[email protected]>
---
drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
index 32a5e4e5461f..dbba616c19de 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
@@ -889,14 +889,14 @@ static bool iwl_mvm_sar_geo_support(struct iwl_mvm *mvm)
* firmware versions. Unfortunately, we don't have a TLV API
* flag to rely on, so rely on the major version which is in
* the first byte of ucode_ver. This was implemented
- * initially on version 38 and then backported to29 and 17.
+ * initially on version 38 and then backported to 29 and 17.
* The intention was to have it in 36 as well, but not all
* 8000 family got this feature enabled. The 8000 family is
* the only one using version 36, so skip this version
- * entirely.
+ * entirely. All revisions of -29 fw still don't have
+ * GEO_TX_POWER_LIMIT supported yet.
*/
return IWL_UCODE_SERIAL(mvm->fw->ucode_ver) >= 38 ||
- IWL_UCODE_SERIAL(mvm->fw->ucode_ver) == 29 ||
IWL_UCODE_SERIAL(mvm->fw->ucode_ver) == 17;
}

--
2.20.1


2019-10-08 07:18:28

by Luciano Coelho

[permalink] [raw]
Subject: Re: [PATCH] iwlwifi: fw: don't send GEO_TX_POWER_LIMIT command to FW version 29

On Tue, 2019-10-08 at 14:05 +0800, You-Sheng Yang wrote:
> Follow-up for commit fddbfeece9c7 ("iwlwifi: fw: don't send
> GEO_TX_POWER_LIMIT command to FW version 36"). There is no
> GEO_TX_POWER_LIMIT command support for all revisions of FW version
> 29, either.
>
> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=204151
> Signed-off-by: You-Sheng Yang <[email protected]>
> ---
> drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
> index 32a5e4e5461f..dbba616c19de 100644
> --- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
> +++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
> @@ -889,14 +889,14 @@ static bool iwl_mvm_sar_geo_support(struct iwl_mvm *mvm)
> * firmware versions. Unfortunately, we don't have a TLV API
> * flag to rely on, so rely on the major version which is in
> * the first byte of ucode_ver. This was implemented
> - * initially on version 38 and then backported to29 and 17.
> + * initially on version 38 and then backported to 29 and 17.
> * The intention was to have it in 36 as well, but not all
> * 8000 family got this feature enabled. The 8000 family is
> * the only one using version 36, so skip this version
> - * entirely.
> + * entirely. All revisions of -29 fw still don't have
> + * GEO_TX_POWER_LIMIT supported yet.
> */
> return IWL_UCODE_SERIAL(mvm->fw->ucode_ver) >= 38 ||
> - IWL_UCODE_SERIAL(mvm->fw->ucode_ver) == 29 ||
> IWL_UCODE_SERIAL(mvm->fw->ucode_ver) == 17;
> }

Thanks for the patch!

But I have investigated this (even) further and now I see that 3168
doesn't have this command, but 7265D does. The latter also uses -29,
so we can't blindly disable all -29 versions.

Can you try this instead?

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
index 0d2229319261..38d89ee9bd28 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
@@ -906,8 +906,10 @@ static bool iwl_mvm_sar_geo_support(struct iwl_mvm
*mvm)
* entirely.
*/
return IWL_UCODE_SERIAL(mvm->fw->ucode_ver) >= 38 ||
- IWL_UCODE_SERIAL(mvm->fw->ucode_ver) == 29 ||
- IWL_UCODE_SERIAL(mvm->fw->ucode_ver) == 17;
+ IWL_UCODE_SERIAL(mvm->fw->ucode_ver) == 17 ||
+ (IWL_UCODE_SERIAL(mvm->fw->ucode_ver) == 29 &&
+ (mvm->trans->hw_rev &
+ CSR_HW_REV_TYPE_MSK) == CSR_HW_REV_TYPE_7265D);
}

int iwl_mvm_get_sar_geo_profile(struct iwl_mvm *mvm)


--
Cheers,
Luca.

2019-10-09 03:02:10

by You-Sheng Yang

[permalink] [raw]
Subject: Re: [PATCH] iwlwifi: fw: don't send GEO_TX_POWER_LIMIT command to FW version 29

Tested and commented on the issue page. Thank you for the correction.

--
Cheers,
You-Sheng Yang

On 2019-10-08 15:17, Luciano Coelho wrote:
> On Tue, 2019-10-08 at 14:05 +0800, You-Sheng Yang wrote:
>> Follow-up for commit fddbfeece9c7 ("iwlwifi: fw: don't send
>> GEO_TX_POWER_LIMIT command to FW version 36"). There is no
>> GEO_TX_POWER_LIMIT command support for all revisions of FW version
>> 29, either.
>>
>> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=204151
>> Signed-off-by: You-Sheng Yang <[email protected]>
>> ---
>> drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 6 +++---
>> 1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
>> index 32a5e4e5461f..dbba616c19de 100644
>> --- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
>> +++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
>> @@ -889,14 +889,14 @@ static bool iwl_mvm_sar_geo_support(struct iwl_mvm *mvm)
>> * firmware versions. Unfortunately, we don't have a TLV API
>> * flag to rely on, so rely on the major version which is in
>> * the first byte of ucode_ver. This was implemented
>> - * initially on version 38 and then backported to29 and 17.
>> + * initially on version 38 and then backported to 29 and 17.
>> * The intention was to have it in 36 as well, but not all
>> * 8000 family got this feature enabled. The 8000 family is
>> * the only one using version 36, so skip this version
>> - * entirely.
>> + * entirely. All revisions of -29 fw still don't have
>> + * GEO_TX_POWER_LIMIT supported yet.
>> */
>> return IWL_UCODE_SERIAL(mvm->fw->ucode_ver) >= 38 ||
>> - IWL_UCODE_SERIAL(mvm->fw->ucode_ver) == 29 ||
>> IWL_UCODE_SERIAL(mvm->fw->ucode_ver) == 17;
>> }
>
> Thanks for the patch!
>
> But I have investigated this (even) further and now I see that 3168
> doesn't have this command, but 7265D does. The latter also uses -29,
> so we can't blindly disable all -29 versions.
>
> Can you try this instead?
>
> diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
> b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
> index 0d2229319261..38d89ee9bd28 100644
> --- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
> +++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
> @@ -906,8 +906,10 @@ static bool iwl_mvm_sar_geo_support(struct iwl_mvm
> *mvm)
> * entirely.
> */
> return IWL_UCODE_SERIAL(mvm->fw->ucode_ver) >= 38 ||
> - IWL_UCODE_SERIAL(mvm->fw->ucode_ver) == 29 ||
> - IWL_UCODE_SERIAL(mvm->fw->ucode_ver) == 17;
> + IWL_UCODE_SERIAL(mvm->fw->ucode_ver) == 17 ||
> + (IWL_UCODE_SERIAL(mvm->fw->ucode_ver) == 29 &&
> + (mvm->trans->hw_rev &
> + CSR_HW_REV_TYPE_MSK) == CSR_HW_REV_TYPE_7265D);
> }
>
> int iwl_mvm_get_sar_geo_profile(struct iwl_mvm *mvm)
>
>
> --
> Cheers,
> Luca.
>


Attachments:
signature.asc (499.00 B)
OpenPGP digital signature