diff mbox series

ath11k: Disable SU support in meshpoint mode

Message ID 20190904091527.27260-1-john@phrozen.org (mailing list archive)
State Superseded
Delegated to: Kalle Valo
Headers show
Series ath11k: Disable SU support in meshpoint mode | expand

Commit Message

John Crispin Sept. 4, 2019, 9:15 a.m. UTC
From: Sven Eckelmann <seckelmann@datto.com>

The firmware WLAN.HK.2.1.0.1-00629-QCAHKSWPL_SILICONZ-1 often stops sending
data on 5GHz when SU support is advertised. A simple throughput benchmark
will end up at only a couple hundred kilobytes per second (when finishing
at all).

Disabling SU related flags works around this problem and allowed a maximum
throughput of ~450 MBit/s in a simple test setup with an HK01 over air.

Signed-off-by: Sven Eckelmann <seckelmann@datto.com>
---
 drivers/net/wireless/ath/ath11k/mac.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

Comments

Sven Eckelmann Sept. 4, 2019, 9:21 a.m. UTC | #1
On Wednesday, 4 September 2019 11:15:27 CEST John Crispin wrote:
> From: Sven Eckelmann <seckelmann@datto.com>
> 
> The firmware WLAN.HK.2.1.0.1-00629-QCAHKSWPL_SILICONZ-1 often stops sending
> data on 5GHz when SU support is advertised. A simple throughput benchmark
> will end up at only a couple hundred kilobytes per second (when finishing
> at all).
> 
> Disabling SU related flags works around this problem and allowed a maximum
> throughput of ~450 MBit/s in a simple test setup with an HK01 over air.
> 
> Signed-off-by: Sven Eckelmann <seckelmann@datto.com>
> ---
>  drivers/net/wireless/ath/ath11k/mac.c | 11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)

This is the incorrect patch. The correct version can be found at 
https://patchwork.kernel.org/project/ath11k/list/?series=159083

> diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c
> index 4d40c9635a4a..0869900d7e18 100644
> --- a/drivers/net/wireless/ath/ath11k/mac.c
> +++ b/drivers/net/wireless/ath/ath11k/mac.c
> @@ -3365,19 +3365,20 @@ static int ath11k_mac_copy_he_cap(struct ath11k *ar,
>  			he_cap_elem->phy_cap_info[3] &=
>  				~(IEEE80211_HE_PHY_CAP3_RX_HE_MU_PPDU_FROM_NON_AP_STA |
>  				  IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_TX_MASK |
> -				  IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_MASK);
> -			he_cap_elem->phy_cap_info[4] &=
> -				~IEEE80211_HE_PHY_CAP4_MU_BEAMFORMER;
> -			he_cap_elem->phy_cap_info[5] &=
> -				~IEEE80211_HE_PHY_CAP5_NG16_MU_FEEDBACK;
> +				  IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_MASK |
> +			          IEEE80211_HE_PHY_CAP3_SU_BEAMFORMER);
> +			he_cap_elem->phy_cap_info[4] = 0;
> +			he_cap_elem->phy_cap_info[5] = 0;
>  			he_cap_elem->phy_cap_info[6] &=
>  				~(IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_75_MU |
> +				  IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMER_FB |
>  				  IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMER_FB |
>  				  IEEE80211_HE_PHY_CAP6_TRIG_CQI_FB |
>  				  IEEE80211_HE_PHY_CAP6_PARTIAL_BANDWIDTH_DL_MUMIMO);
>  			he_cap_elem->phy_cap_info[7] &=
>  				~(IEEE80211_HE_PHY_CAP7_SRP_BASED_SR |
>  				  IEEE80211_HE_PHY_CAP7_POWER_BOOST_FACTOR_AR |
> +				  IEEE80211_HE_PHY_CAP7_HE_SU_MU_PPDU_4XLTF_AND_08_US_GI |
>  				  IEEE80211_HE_PHY_CAP7_STBC_TX_ABOVE_80MHZ |
>  				  IEEE80211_HE_PHY_CAP7_STBC_RX_ABOVE_80MHZ);
>  			he_cap_elem->phy_cap_info[8] &=
>
diff mbox series

Patch

diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c
index 4d40c9635a4a..0869900d7e18 100644
--- a/drivers/net/wireless/ath/ath11k/mac.c
+++ b/drivers/net/wireless/ath/ath11k/mac.c
@@ -3365,19 +3365,20 @@  static int ath11k_mac_copy_he_cap(struct ath11k *ar,
 			he_cap_elem->phy_cap_info[3] &=
 				~(IEEE80211_HE_PHY_CAP3_RX_HE_MU_PPDU_FROM_NON_AP_STA |
 				  IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_TX_MASK |
-				  IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_MASK);
-			he_cap_elem->phy_cap_info[4] &=
-				~IEEE80211_HE_PHY_CAP4_MU_BEAMFORMER;
-			he_cap_elem->phy_cap_info[5] &=
-				~IEEE80211_HE_PHY_CAP5_NG16_MU_FEEDBACK;
+				  IEEE80211_HE_PHY_CAP3_DCM_MAX_CONST_RX_MASK |
+			          IEEE80211_HE_PHY_CAP3_SU_BEAMFORMER);
+			he_cap_elem->phy_cap_info[4] = 0;
+			he_cap_elem->phy_cap_info[5] = 0;
 			he_cap_elem->phy_cap_info[6] &=
 				~(IEEE80211_HE_PHY_CAP6_CODEBOOK_SIZE_75_MU |
+				  IEEE80211_HE_PHY_CAP6_TRIG_SU_BEAMFORMER_FB |
 				  IEEE80211_HE_PHY_CAP6_TRIG_MU_BEAMFORMER_FB |
 				  IEEE80211_HE_PHY_CAP6_TRIG_CQI_FB |
 				  IEEE80211_HE_PHY_CAP6_PARTIAL_BANDWIDTH_DL_MUMIMO);
 			he_cap_elem->phy_cap_info[7] &=
 				~(IEEE80211_HE_PHY_CAP7_SRP_BASED_SR |
 				  IEEE80211_HE_PHY_CAP7_POWER_BOOST_FACTOR_AR |
+				  IEEE80211_HE_PHY_CAP7_HE_SU_MU_PPDU_4XLTF_AND_08_US_GI |
 				  IEEE80211_HE_PHY_CAP7_STBC_TX_ABOVE_80MHZ |
 				  IEEE80211_HE_PHY_CAP7_STBC_RX_ABOVE_80MHZ);
 			he_cap_elem->phy_cap_info[8] &=