diff mbox series

[3/3] ath11k: set correct NL80211_FEATURE_DYNAMIC_SMPS for WCN6855

Message ID 20210914163726.38604-3-jouni@codeaurora.org
State New
Headers show
Series None | expand

Commit Message

Jouni Malinen Sept. 14, 2021, 4:37 p.m. UTC
From: Wen Gong <wgong@codeaurora.org>

Commit "ath11k: support SMPS configuration for 6 GHz" changed "if
(ht_cap & WMI_HT_CAP_DYNAMIC_SMPS)" to "if (ht_cap &
WMI_HT_CAP_DYNAMIC_SMPS || ar->supports_6ghz)" which means
NL80211_FEATURE_DYNAMIC_SMPS is enabled for all chips which support 6
GHz. However, WCN6855 supports 6 GHz but it does not support feature
NL80211_FEATURE_DYNAMIC_SMPS, and this can lead to MU-MIMO test failures
for WCN6855.

Disable NL80211_FEATURE_DYNAMIC_SMPS for WCN6855 since its ht_cap does
not support WMI_HT_CAP_DYNAMIC_SMPS.

Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-01720.1-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1

Signed-off-by: Wen Gong <wgong@codeaurora.org>
Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
---
 drivers/net/wireless/ath/ath11k/core.c | 1 +
 drivers/net/wireless/ath/ath11k/hw.h   | 1 +
 drivers/net/wireless/ath/ath11k/mac.c  | 3 ++-
 3 files changed, 4 insertions(+), 1 deletion(-)

Comments

Kalle Valo Sept. 16, 2021, 10:08 a.m. UTC | #1
Jouni Malinen <jouni@codeaurora.org> writes:

> From: Wen Gong <wgong@codeaurora.org>

>

> Commit "ath11k: support SMPS configuration for 6 GHz" changed "if

> (ht_cap & WMI_HT_CAP_DYNAMIC_SMPS)" to "if (ht_cap &

> WMI_HT_CAP_DYNAMIC_SMPS || ar->supports_6ghz)" which means

> NL80211_FEATURE_DYNAMIC_SMPS is enabled for all chips which support 6

> GHz. However, WCN6855 supports 6 GHz but it does not support feature

> NL80211_FEATURE_DYNAMIC_SMPS, and this can lead to MU-MIMO test failures

> for WCN6855.

>

> Disable NL80211_FEATURE_DYNAMIC_SMPS for WCN6855 since its ht_cap does

> not support WMI_HT_CAP_DYNAMIC_SMPS.

>

> Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-01720.1-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1

>

> Signed-off-by: Wen Gong <wgong@codeaurora.org>

> Signed-off-by: Jouni Malinen <jouni@codeaurora.org>


[...]

> --- a/drivers/net/wireless/ath/ath11k/mac.c

> +++ b/drivers/net/wireless/ath/ath11k/mac.c

> @@ -7570,7 +7570,8 @@ static int __ath11k_mac_register(struct ath11k *ar)

>  	 * for each band for a dual band capable radio. It will be tricky to

>  	 * handle it when the ht capability different for each band.

>  	 */

> -	if (ht_cap & WMI_HT_CAP_DYNAMIC_SMPS || ar->supports_6ghz)

> +	if (ht_cap & WMI_HT_CAP_DYNAMIC_SMPS ||

> +	    (ar->supports_6ghz && !ab->hw_params.check_dynamic_smps))

>  		ar->hw->wiphy->features |= NL80211_FEATURE_DYNAMIC_SMPS;

>  

>  	ar->hw->wiphy->max_scan_ssids = WLAN_SCAN_PARAMS_MAX_SSID;


This hunk failed, in the pending branch as I don't have that
ar->supports_6ghz check. I'll drop this patch 3 for now, let's revisit
after my queue of ath11k patches is smaller.

-- 
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
Wen Gong Sept. 16, 2021, 2:09 p.m. UTC | #2
On 2021-09-16 18:08, Kalle Valo wrote:
> Jouni Malinen <jouni@codeaurora.org> writes:

> 

>> From: Wen Gong <wgong@codeaurora.org>

>> 

>> Commit "ath11k: support SMPS configuration for 6 GHz" changed "if

>> (ht_cap & WMI_HT_CAP_DYNAMIC_SMPS)" to "if (ht_cap &

>> WMI_HT_CAP_DYNAMIC_SMPS || ar->supports_6ghz)" which means

>> NL80211_FEATURE_DYNAMIC_SMPS is enabled for all chips which support 6

>> GHz. However, WCN6855 supports 6 GHz but it does not support feature

>> NL80211_FEATURE_DYNAMIC_SMPS, and this can lead to MU-MIMO test 

>> failures

>> for WCN6855.

>> 

>> Disable NL80211_FEATURE_DYNAMIC_SMPS for WCN6855 since its ht_cap does

>> not support WMI_HT_CAP_DYNAMIC_SMPS.

>> 

>> Tested-on: WCN6855 hw2.0 PCI 

>> WLAN.HSP.1.1-01720.1-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1

>> 

>> Signed-off-by: Wen Gong <wgong@codeaurora.org>

>> Signed-off-by: Jouni Malinen <jouni@codeaurora.org>

> 

> [...]

> 

>> --- a/drivers/net/wireless/ath/ath11k/mac.c

>> +++ b/drivers/net/wireless/ath/ath11k/mac.c

>> @@ -7570,7 +7570,8 @@ static int __ath11k_mac_register(struct ath11k 

>> *ar)

>>  	 * for each band for a dual band capable radio. It will be tricky to

>>  	 * handle it when the ht capability different for each band.

>>  	 */

>> -	if (ht_cap & WMI_HT_CAP_DYNAMIC_SMPS || ar->supports_6ghz)

>> +	if (ht_cap & WMI_HT_CAP_DYNAMIC_SMPS ||

>> +	    (ar->supports_6ghz && !ab->hw_params.check_dynamic_smps))

>>  		ar->hw->wiphy->features |= NL80211_FEATURE_DYNAMIC_SMPS;

>> 

>>  	ar->hw->wiphy->max_scan_ssids = WLAN_SCAN_PARAMS_MAX_SSID;

> 

> This hunk failed, in the pending branch as I don't have that

> ar->supports_6ghz check. I'll drop this patch 3 for now, let's revisit

> after my queue of ath11k patches is smaller.

Hi Kalle,

ar->supports_6ghz is introduced by this patch:
https://patchwork.kernel.org/project/linux-wireless/patch/20210913175510.193005-3-jouni@codeaurora.org/

@@ -7559,7 +7570,7 @@  static int __ath11k_mac_register(struct ath11k 
*ar)
  	 * for each band for a dual band capable radio. It will be tricky to
  	 * handle it when the ht capability different for each band.
  	 */
-	if (ht_cap & WMI_HT_CAP_DYNAMIC_SMPS)
+	if (ht_cap & WMI_HT_CAP_DYNAMIC_SMPS || ar->supports_6ghz)
  		ar->hw->wiphy->features |= NL80211_FEATURE_DYNAMIC_SMPS;

  	ar->hw->wiphy->max_scan_ssids = WLAN_SCAN_PARAMS_MAX_SSID;
Kalle Valo Sept. 16, 2021, 3:15 p.m. UTC | #3
Wen Gong <wgong@codeaurora.org> writes:

> On 2021-09-16 18:08, Kalle Valo wrote:

>> Jouni Malinen <jouni@codeaurora.org> writes:

>>

>>> From: Wen Gong <wgong@codeaurora.org>

>>>

>>> Commit "ath11k: support SMPS configuration for 6 GHz" changed "if

>>> (ht_cap & WMI_HT_CAP_DYNAMIC_SMPS)" to "if (ht_cap &

>>> WMI_HT_CAP_DYNAMIC_SMPS || ar->supports_6ghz)" which means

>>> NL80211_FEATURE_DYNAMIC_SMPS is enabled for all chips which support 6

>>> GHz. However, WCN6855 supports 6 GHz but it does not support feature

>>> NL80211_FEATURE_DYNAMIC_SMPS, and this can lead to MU-MIMO test

>>> failures

>>> for WCN6855.

>>>

>>> Disable NL80211_FEATURE_DYNAMIC_SMPS for WCN6855 since its ht_cap does

>>> not support WMI_HT_CAP_DYNAMIC_SMPS.

>>>

>>> Tested-on: WCN6855 hw2.0 PCI

>>> WLAN.HSP.1.1-01720.1-QCAHSPSWPL_V1_V2_SILICONZ_LITE-1

>>>

>>> Signed-off-by: Wen Gong <wgong@codeaurora.org>

>>> Signed-off-by: Jouni Malinen <jouni@codeaurora.org>

>>

>> [...]

>>

>>> --- a/drivers/net/wireless/ath/ath11k/mac.c

>>> +++ b/drivers/net/wireless/ath/ath11k/mac.c

>>> @@ -7570,7 +7570,8 @@ static int __ath11k_mac_register(struct

>>> ath11k *ar)

>>>  	 * for each band for a dual band capable radio. It will be tricky to

>>>  	 * handle it when the ht capability different for each band.

>>>  	 */

>>> -	if (ht_cap & WMI_HT_CAP_DYNAMIC_SMPS || ar->supports_6ghz)

>>> +	if (ht_cap & WMI_HT_CAP_DYNAMIC_SMPS ||

>>> +	    (ar->supports_6ghz && !ab->hw_params.check_dynamic_smps))

>>>  		ar->hw->wiphy->features |= NL80211_FEATURE_DYNAMIC_SMPS;

>>>

>>>  	ar->hw->wiphy->max_scan_ssids = WLAN_SCAN_PARAMS_MAX_SSID;

>>

>> This hunk failed, in the pending branch as I don't have that

>> ar->supports_6ghz check. I'll drop this patch 3 for now, let's revisit

>> after my queue of ath11k patches is smaller.

>

> ar->supports_6ghz is introduced by this patch:

> https://patchwork.kernel.org/project/linux-wireless/patch/20210913175510.193005-3-jouni@codeaurora.org/


Ah, and that was in Awaiting Upstream state and not yet in my pending
branch. I'll take that patchset first to pending branch and then apply
this patch 3, so no need to resend anything (at least for the moment).

-- 
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
diff mbox series

Patch

diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c
index 265ff225bd81..2bae8c5184d4 100644
--- a/drivers/net/wireless/ath/ath11k/core.c
+++ b/drivers/net/wireless/ath/ath11k/core.c
@@ -279,6 +279,7 @@  static const struct ath11k_hw_params ath11k_hw_params[] = {
 		.sram_dump = &sram_dump_wcn6855,
 		.max_tx_ring = DP_TCL_NUM_RING_MAX_QCA6390,
 		.hal_params = &ath11k_hal_params_qca6390,
+		.check_dynamic_smps = true,
 	},
 };
 
diff --git a/drivers/net/wireless/ath/ath11k/hw.h b/drivers/net/wireless/ath/ath11k/hw.h
index c6831fb110ba..7463b96770b7 100644
--- a/drivers/net/wireless/ath/ath11k/hw.h
+++ b/drivers/net/wireless/ath/ath11k/hw.h
@@ -180,6 +180,7 @@  struct ath11k_hw_params {
 	const struct ath11k_hw_sram_dump *sram_dump;
 	u8 max_tx_ring;
 	const struct hal_param *hal_params;
+	bool check_dynamic_smps;
 };
 
 struct ath11k_hw_ops {
diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c
index 1f4765e43546..97a2c92b7b9b 100644
--- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/drivers/net/wireless/ath/ath11k/mac.c
@@ -7570,7 +7570,8 @@  static int __ath11k_mac_register(struct ath11k *ar)
 	 * for each band for a dual band capable radio. It will be tricky to
 	 * handle it when the ht capability different for each band.
 	 */
-	if (ht_cap & WMI_HT_CAP_DYNAMIC_SMPS || ar->supports_6ghz)
+	if (ht_cap & WMI_HT_CAP_DYNAMIC_SMPS ||
+	    (ar->supports_6ghz && !ab->hw_params.check_dynamic_smps))
 		ar->hw->wiphy->features |= NL80211_FEATURE_DYNAMIC_SMPS;
 
 	ar->hw->wiphy->max_scan_ssids = WLAN_SCAN_PARAMS_MAX_SSID;