* [PATCH] ath11k: fix number of VHT beamformee spatial streams @ 2022-06-16 17:39 ` Jesus Fernandez Manzano 0 siblings, 0 replies; 10+ messages in thread From: Jesus Fernandez Manzano @ 2022-06-16 17:39 UTC (permalink / raw) To: ath11k; +Cc: linux-wireless, jesus.manzano The number of spatial streams used when acting as a beamformee in VHT mode are reported by the firmware as 7 (8 sts - 1) both in IPQ6018 and IPQ8074 which respectively have 2 and 4 sts each. So the firmware should report 1 (2 - 1) and 3 (4 - 1). Fix this by checking that the number of VHT beamformee sts reported by the firmware is not greater than the number of receiving antennas - 1. The fix is based on the same approach used in this same function for sanitizing the number of sounding dimensions reported by the firmware. Without this change, acting as a beamformee in VHT mode is not working properly. Tested-on: IPQ6018 hw1.0 AHB WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1 Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1 Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices") Signed-off-by: Jesus Fernandez Manzano <jesus.manzano@galgus.net> --- drivers/net/wireless/ath/ath11k/mac.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c index 42d2e8cf8125..7109ca4f166d 100644 --- a/drivers/net/wireless/ath/ath11k/mac.c +++ b/drivers/net/wireless/ath/ath11k/mac.c @@ -4950,6 +4950,8 @@ static int ath11k_mac_set_txbf_conf(struct ath11k_vif *arvif) if (vht_cap & (IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE)) { nsts = vht_cap & IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK; nsts >>= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; + if (nsts > (ar->num_rx_chains - 1)) + nsts = ar->num_rx_chains - 1; value |= SM(nsts, WMI_TXBF_STS_CAP_OFFSET); } @@ -4990,7 +4992,7 @@ static int ath11k_mac_set_txbf_conf(struct ath11k_vif *arvif) static void ath11k_set_vht_txbf_cap(struct ath11k *ar, u32 *vht_cap) { bool subfer, subfee; - int sound_dim = 0; + int sound_dim = 0, nsts = 0; subfer = !!(*vht_cap & (IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE)); subfee = !!(*vht_cap & (IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE)); @@ -5000,6 +5002,11 @@ static void ath11k_set_vht_txbf_cap(struct ath11k *ar, u32 *vht_cap) subfer = false; } + if (ar->num_rx_chains < 2) { + *vht_cap &= ~(IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE); + subfee = false; + } + /* If SU Beaformer is not set, then disable MU Beamformer Capability */ if (!subfer) *vht_cap &= ~(IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE); @@ -5012,7 +5019,9 @@ static void ath11k_set_vht_txbf_cap(struct ath11k *ar, u32 *vht_cap) sound_dim >>= IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT; *vht_cap &= ~IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_MASK; - /* TODO: Need to check invalid STS and Sound_dim values set by FW? */ + nsts = (*vht_cap & IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK); + nsts >>= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; + *vht_cap &= ~IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK; /* Enable Sounding Dimension Field only if SU BF is enabled */ if (subfer) { @@ -5024,9 +5033,15 @@ static void ath11k_set_vht_txbf_cap(struct ath11k *ar, u32 *vht_cap) *vht_cap |= sound_dim; } - /* Use the STS advertised by FW unless SU Beamformee is not supported*/ - if (!subfee) - *vht_cap &= ~(IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK); + /* Enable Beamformee STS Field only if SU BF is enabled */ + if (subfee) { + if (nsts > (ar->num_rx_chains - 1)) + nsts = ar->num_rx_chains - 1; + + nsts <<= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; + nsts &= IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK; + *vht_cap |= nsts; + } } static struct ieee80211_sta_vht_cap -- 2.25.1 -- ath11k mailing list ath11k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath11k ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH] ath11k: fix number of VHT beamformee spatial streams @ 2022-06-16 17:39 ` Jesus Fernandez Manzano 0 siblings, 0 replies; 10+ messages in thread From: Jesus Fernandez Manzano @ 2022-06-16 17:39 UTC (permalink / raw) To: ath11k; +Cc: linux-wireless, jesus.manzano The number of spatial streams used when acting as a beamformee in VHT mode are reported by the firmware as 7 (8 sts - 1) both in IPQ6018 and IPQ8074 which respectively have 2 and 4 sts each. So the firmware should report 1 (2 - 1) and 3 (4 - 1). Fix this by checking that the number of VHT beamformee sts reported by the firmware is not greater than the number of receiving antennas - 1. The fix is based on the same approach used in this same function for sanitizing the number of sounding dimensions reported by the firmware. Without this change, acting as a beamformee in VHT mode is not working properly. Tested-on: IPQ6018 hw1.0 AHB WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1 Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1 Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices") Signed-off-by: Jesus Fernandez Manzano <jesus.manzano@galgus.net> --- drivers/net/wireless/ath/ath11k/mac.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c index 42d2e8cf8125..7109ca4f166d 100644 --- a/drivers/net/wireless/ath/ath11k/mac.c +++ b/drivers/net/wireless/ath/ath11k/mac.c @@ -4950,6 +4950,8 @@ static int ath11k_mac_set_txbf_conf(struct ath11k_vif *arvif) if (vht_cap & (IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE)) { nsts = vht_cap & IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK; nsts >>= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; + if (nsts > (ar->num_rx_chains - 1)) + nsts = ar->num_rx_chains - 1; value |= SM(nsts, WMI_TXBF_STS_CAP_OFFSET); } @@ -4990,7 +4992,7 @@ static int ath11k_mac_set_txbf_conf(struct ath11k_vif *arvif) static void ath11k_set_vht_txbf_cap(struct ath11k *ar, u32 *vht_cap) { bool subfer, subfee; - int sound_dim = 0; + int sound_dim = 0, nsts = 0; subfer = !!(*vht_cap & (IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE)); subfee = !!(*vht_cap & (IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE)); @@ -5000,6 +5002,11 @@ static void ath11k_set_vht_txbf_cap(struct ath11k *ar, u32 *vht_cap) subfer = false; } + if (ar->num_rx_chains < 2) { + *vht_cap &= ~(IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE); + subfee = false; + } + /* If SU Beaformer is not set, then disable MU Beamformer Capability */ if (!subfer) *vht_cap &= ~(IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE); @@ -5012,7 +5019,9 @@ static void ath11k_set_vht_txbf_cap(struct ath11k *ar, u32 *vht_cap) sound_dim >>= IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT; *vht_cap &= ~IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_MASK; - /* TODO: Need to check invalid STS and Sound_dim values set by FW? */ + nsts = (*vht_cap & IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK); + nsts >>= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; + *vht_cap &= ~IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK; /* Enable Sounding Dimension Field only if SU BF is enabled */ if (subfer) { @@ -5024,9 +5033,15 @@ static void ath11k_set_vht_txbf_cap(struct ath11k *ar, u32 *vht_cap) *vht_cap |= sound_dim; } - /* Use the STS advertised by FW unless SU Beamformee is not supported*/ - if (!subfee) - *vht_cap &= ~(IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK); + /* Enable Beamformee STS Field only if SU BF is enabled */ + if (subfee) { + if (nsts > (ar->num_rx_chains - 1)) + nsts = ar->num_rx_chains - 1; + + nsts <<= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; + nsts &= IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK; + *vht_cap |= nsts; + } } static struct ieee80211_sta_vht_cap -- 2.25.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
[parent not found: <CALQr=E8S6gt_UjaP7GS3M0Tn-MGg7-Xs03Q3suuV7=OP4XmiEQ@mail.gmail.com>]
* Re: [PATCH] ath11k: fix number of VHT beamformee spatial streams [not found] ` <CALQr=E8S6gt_UjaP7GS3M0Tn-MGg7-Xs03Q3suuV7=OP4XmiEQ@mail.gmail.com> @ 2022-06-21 8:29 ` Jesús Fernández Manzano 0 siblings, 0 replies; 10+ messages in thread From: Jesús Fernández Manzano @ 2022-06-21 8:29 UTC (permalink / raw) To: Sipos Csaba; +Cc: ath11k, linux-wireless Hi Csaba, It happens the same to me, HE is also affected and not fixed by this patch because it is treated in a different place in the code than where the VHT capabilities are set. If this patch is correct and is accepted I would like to fix the HE part and upstream it too. Ps: thanks for your work in the OpenWRT forum in the Xiaomi AX3600 thread. Very useful all these months. Regards, Jesus El 20/6/22 a las 19:35, Sipos Csaba escribió: > Dear Jesus, > > I wanted to ask you if you are sure if this is just a VHT issue, and > HE is not affected? On my IPQ8074 board with 4 antennas for 5GHz, I > have this IW output: > > HE Iftypes: AP > HE MAC Capabilities (0x000d9a181040): > +HTC HE Supported > TWT Responder > Dynamic BA Fragementation Level: 1 > BSR > Broadcast TWT > OM Control > Maximum A-MPDU Length Exponent: 3 > RX Control Frame to MultiBSS > A-MSDU in A-MPDU > OM Control UL MU Data Disable RX > HE PHY Capabilities: (0x1c604c887fdb839c010c00): > HE40/HE80/5GHz > HE160/5GHz > HE160/HE80+80/5GHz > LDPC Coding in Payload > HE SU PPDU with 1x HE-LTF and 0.8us GI > STBC Tx <= 80MHz > STBC Rx <= 80MHz > Full Bandwidth UL MU-MIMO > DCM Max Constellation Rx: 1 > SU Beamformer > SU Beamformee > MU Beamformer > Beamformee STS <= 80Mhz: 7 > Beamformee STS > 80Mhz: 3 > Sounding Dimensions <= 80Mhz: 3 > Sounding Dimensions > 80Mhz: 3 > Ng = 16 SU Feedback > Ng = 16 MU Feedback > Codebook Size SU Feedback > Codebook Size MU Feedback > PPE Threshold Present > HE SU PPDU & HE PPDU 4x HE-LTF 0.8us GI > Max NC: 3 > STBC Rx > 80MHz > HE ER SU PPDU 4x HE-LTF 0.8us GI > TX 1024-QAM > RX 1024-QAM > HE RX MCS and NSS set <= 80 MHz > 1 streams: MCS 0-11 > 2 streams: MCS 0-11 > 3 streams: MCS 0-11 > 4 streams: MCS 0-11 > 5 streams: not supported > 6 streams: not supported > 7 streams: not supported > 8 streams: not supported > HE TX MCS and NSS set <= 80 MHz > 1 streams: MCS 0-11 > 2 streams: MCS 0-11 > 3 streams: MCS 0-11 > 4 streams: MCS 0-11 > 5 streams: not supported > 6 streams: not supported > 7 streams: not supported > 8 streams: not supported > HE RX MCS and NSS set 160 MHz > 1 streams: MCS 0-11 > 2 streams: MCS 0-11 > 3 streams: not supported > 4 streams: not supported > 5 streams: not supported > 6 streams: not supported > 7 streams: not supported > 8 streams: not supported > HE TX MCS and NSS set 160 MHz > 1 streams: MCS 0-11 > 2 streams: MCS 0-11 > 3 streams: not supported > 4 streams: not supported > 5 streams: not supported > 6 streams: not supported > 7 streams: not supported > 8 streams: not supported > > As you can see I have Beamformee STS <= 80Mhz: 7 under HE PHY > Capabilities, not sure if that is correct. > > Using WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1 firmware. > > Thanks for your answer! > > Regards, > Csaba > > Jesus Fernandez Manzano <jesus.manzano@galgus.net> ezt írta (időpont: > 2022. jún. 16., Cs, 20:21): > > The number of spatial streams used when acting as a beamformee in VHT > mode are reported by the firmware as 7 (8 sts - 1) both in IPQ6018 and > IPQ8074 which respectively have 2 and 4 sts each. So the firmware > should > report 1 (2 - 1) and 3 (4 - 1). > > Fix this by checking that the number of VHT beamformee sts reported by > the firmware is not greater than the number of receiving antennas - 1. > The fix is based on the same approach used in this same function for > sanitizing the number of sounding dimensions reported by the firmware. > > Without this change, acting as a beamformee in VHT mode is not working > properly. > > Tested-on: IPQ6018 hw1.0 AHB > WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1 > Tested-on: IPQ8074 hw2.0 AHB > WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1 > > Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax > devices") > Signed-off-by: Jesus Fernandez Manzano <jesus.manzano@galgus.net> > --- > drivers/net/wireless/ath/ath11k/mac.c | 25 ++++++++++++++++++++----- > 1 file changed, 20 insertions(+), 5 deletions(-) > > diff --git a/drivers/net/wireless/ath/ath11k/mac.c > b/drivers/net/wireless/ath/ath11k/mac.c > index 42d2e8cf8125..7109ca4f166d 100644 > --- a/drivers/net/wireless/ath/ath11k/mac.c > +++ b/drivers/net/wireless/ath/ath11k/mac.c > @@ -4950,6 +4950,8 @@ static int ath11k_mac_set_txbf_conf(struct > ath11k_vif *arvif) > if (vht_cap & (IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE)) { > nsts = vht_cap & > IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK; > nsts >>= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; > + if (nsts > (ar->num_rx_chains - 1)) > + nsts = ar->num_rx_chains - 1; > value |= SM(nsts, WMI_TXBF_STS_CAP_OFFSET); > } > > @@ -4990,7 +4992,7 @@ static int ath11k_mac_set_txbf_conf(struct > ath11k_vif *arvif) > static void ath11k_set_vht_txbf_cap(struct ath11k *ar, u32 *vht_cap) > { > bool subfer, subfee; > - int sound_dim = 0; > + int sound_dim = 0, nsts = 0; > > subfer = !!(*vht_cap & > (IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE)); > subfee = !!(*vht_cap & > (IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE)); > @@ -5000,6 +5002,11 @@ static void ath11k_set_vht_txbf_cap(struct > ath11k *ar, u32 *vht_cap) > subfer = false; > } > > + if (ar->num_rx_chains < 2) { > + *vht_cap &= > ~(IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE); > + subfee = false; > + } > + > /* If SU Beaformer is not set, then disable MU Beamformer > Capability */ > if (!subfer) > *vht_cap &= > ~(IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE); > @@ -5012,7 +5019,9 @@ static void ath11k_set_vht_txbf_cap(struct > ath11k *ar, u32 *vht_cap) > sound_dim >>= IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT; > *vht_cap &= ~IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_MASK; > > - /* TODO: Need to check invalid STS and Sound_dim values > set by FW? */ > + nsts = (*vht_cap & IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK); > + nsts >>= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; > + *vht_cap &= ~IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK; > > /* Enable Sounding Dimension Field only if SU BF is enabled */ > if (subfer) { > @@ -5024,9 +5033,15 @@ static void ath11k_set_vht_txbf_cap(struct > ath11k *ar, u32 *vht_cap) > *vht_cap |= sound_dim; > } > > - /* Use the STS advertised by FW unless SU Beamformee is > not supported*/ > - if (!subfee) > - *vht_cap &= ~(IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK); > + /* Enable Beamformee STS Field only if SU BF is enabled */ > + if (subfee) { > + if (nsts > (ar->num_rx_chains - 1)) > + nsts = ar->num_rx_chains - 1; > + > + nsts <<= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; > + nsts &= IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK; > + *vht_cap |= nsts; > + } > } > > static struct ieee80211_sta_vht_cap > -- > 2.25.1 > -- ath11k mailing list ath11k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath11k ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] ath11k: fix number of VHT beamformee spatial streams @ 2022-06-21 8:29 ` Jesús Fernández Manzano 0 siblings, 0 replies; 10+ messages in thread From: Jesús Fernández Manzano @ 2022-06-21 8:29 UTC (permalink / raw) To: Sipos Csaba; +Cc: ath11k, linux-wireless Hi Csaba, It happens the same to me, HE is also affected and not fixed by this patch because it is treated in a different place in the code than where the VHT capabilities are set. If this patch is correct and is accepted I would like to fix the HE part and upstream it too. Ps: thanks for your work in the OpenWRT forum in the Xiaomi AX3600 thread. Very useful all these months. Regards, Jesus El 20/6/22 a las 19:35, Sipos Csaba escribió: > Dear Jesus, > > I wanted to ask you if you are sure if this is just a VHT issue, and > HE is not affected? On my IPQ8074 board with 4 antennas for 5GHz, I > have this IW output: > > HE Iftypes: AP > HE MAC Capabilities (0x000d9a181040): > +HTC HE Supported > TWT Responder > Dynamic BA Fragementation Level: 1 > BSR > Broadcast TWT > OM Control > Maximum A-MPDU Length Exponent: 3 > RX Control Frame to MultiBSS > A-MSDU in A-MPDU > OM Control UL MU Data Disable RX > HE PHY Capabilities: (0x1c604c887fdb839c010c00): > HE40/HE80/5GHz > HE160/5GHz > HE160/HE80+80/5GHz > LDPC Coding in Payload > HE SU PPDU with 1x HE-LTF and 0.8us GI > STBC Tx <= 80MHz > STBC Rx <= 80MHz > Full Bandwidth UL MU-MIMO > DCM Max Constellation Rx: 1 > SU Beamformer > SU Beamformee > MU Beamformer > Beamformee STS <= 80Mhz: 7 > Beamformee STS > 80Mhz: 3 > Sounding Dimensions <= 80Mhz: 3 > Sounding Dimensions > 80Mhz: 3 > Ng = 16 SU Feedback > Ng = 16 MU Feedback > Codebook Size SU Feedback > Codebook Size MU Feedback > PPE Threshold Present > HE SU PPDU & HE PPDU 4x HE-LTF 0.8us GI > Max NC: 3 > STBC Rx > 80MHz > HE ER SU PPDU 4x HE-LTF 0.8us GI > TX 1024-QAM > RX 1024-QAM > HE RX MCS and NSS set <= 80 MHz > 1 streams: MCS 0-11 > 2 streams: MCS 0-11 > 3 streams: MCS 0-11 > 4 streams: MCS 0-11 > 5 streams: not supported > 6 streams: not supported > 7 streams: not supported > 8 streams: not supported > HE TX MCS and NSS set <= 80 MHz > 1 streams: MCS 0-11 > 2 streams: MCS 0-11 > 3 streams: MCS 0-11 > 4 streams: MCS 0-11 > 5 streams: not supported > 6 streams: not supported > 7 streams: not supported > 8 streams: not supported > HE RX MCS and NSS set 160 MHz > 1 streams: MCS 0-11 > 2 streams: MCS 0-11 > 3 streams: not supported > 4 streams: not supported > 5 streams: not supported > 6 streams: not supported > 7 streams: not supported > 8 streams: not supported > HE TX MCS and NSS set 160 MHz > 1 streams: MCS 0-11 > 2 streams: MCS 0-11 > 3 streams: not supported > 4 streams: not supported > 5 streams: not supported > 6 streams: not supported > 7 streams: not supported > 8 streams: not supported > > As you can see I have Beamformee STS <= 80Mhz: 7 under HE PHY > Capabilities, not sure if that is correct. > > Using WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1 firmware. > > Thanks for your answer! > > Regards, > Csaba > > Jesus Fernandez Manzano <jesus.manzano@galgus.net> ezt írta (időpont: > 2022. jún. 16., Cs, 20:21): > > The number of spatial streams used when acting as a beamformee in VHT > mode are reported by the firmware as 7 (8 sts - 1) both in IPQ6018 and > IPQ8074 which respectively have 2 and 4 sts each. So the firmware > should > report 1 (2 - 1) and 3 (4 - 1). > > Fix this by checking that the number of VHT beamformee sts reported by > the firmware is not greater than the number of receiving antennas - 1. > The fix is based on the same approach used in this same function for > sanitizing the number of sounding dimensions reported by the firmware. > > Without this change, acting as a beamformee in VHT mode is not working > properly. > > Tested-on: IPQ6018 hw1.0 AHB > WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1 > Tested-on: IPQ8074 hw2.0 AHB > WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1 > > Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax > devices") > Signed-off-by: Jesus Fernandez Manzano <jesus.manzano@galgus.net> > --- > drivers/net/wireless/ath/ath11k/mac.c | 25 ++++++++++++++++++++----- > 1 file changed, 20 insertions(+), 5 deletions(-) > > diff --git a/drivers/net/wireless/ath/ath11k/mac.c > b/drivers/net/wireless/ath/ath11k/mac.c > index 42d2e8cf8125..7109ca4f166d 100644 > --- a/drivers/net/wireless/ath/ath11k/mac.c > +++ b/drivers/net/wireless/ath/ath11k/mac.c > @@ -4950,6 +4950,8 @@ static int ath11k_mac_set_txbf_conf(struct > ath11k_vif *arvif) > if (vht_cap & (IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE)) { > nsts = vht_cap & > IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK; > nsts >>= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; > + if (nsts > (ar->num_rx_chains - 1)) > + nsts = ar->num_rx_chains - 1; > value |= SM(nsts, WMI_TXBF_STS_CAP_OFFSET); > } > > @@ -4990,7 +4992,7 @@ static int ath11k_mac_set_txbf_conf(struct > ath11k_vif *arvif) > static void ath11k_set_vht_txbf_cap(struct ath11k *ar, u32 *vht_cap) > { > bool subfer, subfee; > - int sound_dim = 0; > + int sound_dim = 0, nsts = 0; > > subfer = !!(*vht_cap & > (IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE)); > subfee = !!(*vht_cap & > (IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE)); > @@ -5000,6 +5002,11 @@ static void ath11k_set_vht_txbf_cap(struct > ath11k *ar, u32 *vht_cap) > subfer = false; > } > > + if (ar->num_rx_chains < 2) { > + *vht_cap &= > ~(IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE); > + subfee = false; > + } > + > /* If SU Beaformer is not set, then disable MU Beamformer > Capability */ > if (!subfer) > *vht_cap &= > ~(IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE); > @@ -5012,7 +5019,9 @@ static void ath11k_set_vht_txbf_cap(struct > ath11k *ar, u32 *vht_cap) > sound_dim >>= IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT; > *vht_cap &= ~IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_MASK; > > - /* TODO: Need to check invalid STS and Sound_dim values > set by FW? */ > + nsts = (*vht_cap & IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK); > + nsts >>= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; > + *vht_cap &= ~IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK; > > /* Enable Sounding Dimension Field only if SU BF is enabled */ > if (subfer) { > @@ -5024,9 +5033,15 @@ static void ath11k_set_vht_txbf_cap(struct > ath11k *ar, u32 *vht_cap) > *vht_cap |= sound_dim; > } > > - /* Use the STS advertised by FW unless SU Beamformee is > not supported*/ > - if (!subfee) > - *vht_cap &= ~(IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK); > + /* Enable Beamformee STS Field only if SU BF is enabled */ > + if (subfee) { > + if (nsts > (ar->num_rx_chains - 1)) > + nsts = ar->num_rx_chains - 1; > + > + nsts <<= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; > + nsts &= IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK; > + *vht_cap |= nsts; > + } > } > > static struct ieee80211_sta_vht_cap > -- > 2.25.1 > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] ath11k: fix number of VHT beamformee spatial streams 2022-06-21 8:29 ` Jesús Fernández Manzano @ 2022-06-21 12:06 ` Sipos Csaba -1 siblings, 0 replies; 10+ messages in thread From: Sipos Csaba @ 2022-06-21 12:06 UTC (permalink / raw) To: Jesús Fernández Manzano; +Cc: ath11k, linux-wireless Hi Jesus, Oh, I am nobody, the masterminds are clearly Robert and Christian (Ansuel), I just try to use my radio access network knowledge and common sense to try and dissect issues like this. I am not sure if you noticed, that when you do uplink heavy tests on AX, in the current state uplink power is grossly fluctuating reported by the driver, while the RF environment is static. I am not sure if this issue with BF will fix it, but sure it sounds plausible. It is also unknown how the driver calculates RX power per client: does it uses some sort of reference signal, or the calculated power depends on traffic volume? Regards, Csaba Jesús Fernández Manzano <jesus.manzano@galgus.net> ezt írta (időpont: 2022. jún. 21., K, 10:29): > > Hi Csaba, > > It happens the same to me, HE is also affected and not fixed by this > patch because it is treated in a different place in the code than where > the VHT capabilities are set. If this patch is correct and is accepted I > would like to fix the HE part and upstream it too. > > Ps: thanks for your work in the OpenWRT forum in the Xiaomi AX3600 > thread. Very useful all these months. > > Regards, > Jesus > > El 20/6/22 a las 19:35, Sipos Csaba escribió: > > Dear Jesus, > > > > I wanted to ask you if you are sure if this is just a VHT issue, and > > HE is not affected? On my IPQ8074 board with 4 antennas for 5GHz, I > > have this IW output: > > > > HE Iftypes: AP > > HE MAC Capabilities (0x000d9a181040): > > +HTC HE Supported > > TWT Responder > > Dynamic BA Fragementation Level: 1 > > BSR > > Broadcast TWT > > OM Control > > Maximum A-MPDU Length Exponent: 3 > > RX Control Frame to MultiBSS > > A-MSDU in A-MPDU > > OM Control UL MU Data Disable RX > > HE PHY Capabilities: (0x1c604c887fdb839c010c00): > > HE40/HE80/5GHz > > HE160/5GHz > > HE160/HE80+80/5GHz > > LDPC Coding in Payload > > HE SU PPDU with 1x HE-LTF and 0.8us GI > > STBC Tx <= 80MHz > > STBC Rx <= 80MHz > > Full Bandwidth UL MU-MIMO > > DCM Max Constellation Rx: 1 > > SU Beamformer > > SU Beamformee > > MU Beamformer > > Beamformee STS <= 80Mhz: 7 > > Beamformee STS > 80Mhz: 3 > > Sounding Dimensions <= 80Mhz: 3 > > Sounding Dimensions > 80Mhz: 3 > > Ng = 16 SU Feedback > > Ng = 16 MU Feedback > > Codebook Size SU Feedback > > Codebook Size MU Feedback > > PPE Threshold Present > > HE SU PPDU & HE PPDU 4x HE-LTF 0.8us GI > > Max NC: 3 > > STBC Rx > 80MHz > > HE ER SU PPDU 4x HE-LTF 0.8us GI > > TX 1024-QAM > > RX 1024-QAM > > HE RX MCS and NSS set <= 80 MHz > > 1 streams: MCS 0-11 > > 2 streams: MCS 0-11 > > 3 streams: MCS 0-11 > > 4 streams: MCS 0-11 > > 5 streams: not supported > > 6 streams: not supported > > 7 streams: not supported > > 8 streams: not supported > > HE TX MCS and NSS set <= 80 MHz > > 1 streams: MCS 0-11 > > 2 streams: MCS 0-11 > > 3 streams: MCS 0-11 > > 4 streams: MCS 0-11 > > 5 streams: not supported > > 6 streams: not supported > > 7 streams: not supported > > 8 streams: not supported > > HE RX MCS and NSS set 160 MHz > > 1 streams: MCS 0-11 > > 2 streams: MCS 0-11 > > 3 streams: not supported > > 4 streams: not supported > > 5 streams: not supported > > 6 streams: not supported > > 7 streams: not supported > > 8 streams: not supported > > HE TX MCS and NSS set 160 MHz > > 1 streams: MCS 0-11 > > 2 streams: MCS 0-11 > > 3 streams: not supported > > 4 streams: not supported > > 5 streams: not supported > > 6 streams: not supported > > 7 streams: not supported > > 8 streams: not supported > > > > As you can see I have Beamformee STS <= 80Mhz: 7 under HE PHY > > Capabilities, not sure if that is correct. > > > > Using WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1 firmware. > > > > Thanks for your answer! > > > > Regards, > > Csaba > > > > Jesus Fernandez Manzano <jesus.manzano@galgus.net> ezt írta (időpont: > > 2022. jún. 16., Cs, 20:21): > > > > The number of spatial streams used when acting as a beamformee in VHT > > mode are reported by the firmware as 7 (8 sts - 1) both in IPQ6018 and > > IPQ8074 which respectively have 2 and 4 sts each. So the firmware > > should > > report 1 (2 - 1) and 3 (4 - 1). > > > > Fix this by checking that the number of VHT beamformee sts reported by > > the firmware is not greater than the number of receiving antennas - 1. > > The fix is based on the same approach used in this same function for > > sanitizing the number of sounding dimensions reported by the firmware. > > > > Without this change, acting as a beamformee in VHT mode is not working > > properly. > > > > Tested-on: IPQ6018 hw1.0 AHB > > WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1 > > Tested-on: IPQ8074 hw2.0 AHB > > WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1 > > > > Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax > > devices") > > Signed-off-by: Jesus Fernandez Manzano <jesus.manzano@galgus.net> > > --- > > drivers/net/wireless/ath/ath11k/mac.c | 25 ++++++++++++++++++++----- > > 1 file changed, 20 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/net/wireless/ath/ath11k/mac.c > > b/drivers/net/wireless/ath/ath11k/mac.c > > index 42d2e8cf8125..7109ca4f166d 100644 > > --- a/drivers/net/wireless/ath/ath11k/mac.c > > +++ b/drivers/net/wireless/ath/ath11k/mac.c > > @@ -4950,6 +4950,8 @@ static int ath11k_mac_set_txbf_conf(struct > > ath11k_vif *arvif) > > if (vht_cap & (IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE)) { > > nsts = vht_cap & > > IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK; > > nsts >>= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; > > + if (nsts > (ar->num_rx_chains - 1)) > > + nsts = ar->num_rx_chains - 1; > > value |= SM(nsts, WMI_TXBF_STS_CAP_OFFSET); > > } > > > > @@ -4990,7 +4992,7 @@ static int ath11k_mac_set_txbf_conf(struct > > ath11k_vif *arvif) > > static void ath11k_set_vht_txbf_cap(struct ath11k *ar, u32 *vht_cap) > > { > > bool subfer, subfee; > > - int sound_dim = 0; > > + int sound_dim = 0, nsts = 0; > > > > subfer = !!(*vht_cap & > > (IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE)); > > subfee = !!(*vht_cap & > > (IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE)); > > @@ -5000,6 +5002,11 @@ static void ath11k_set_vht_txbf_cap(struct > > ath11k *ar, u32 *vht_cap) > > subfer = false; > > } > > > > + if (ar->num_rx_chains < 2) { > > + *vht_cap &= > > ~(IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE); > > + subfee = false; > > + } > > + > > /* If SU Beaformer is not set, then disable MU Beamformer > > Capability */ > > if (!subfer) > > *vht_cap &= > > ~(IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE); > > @@ -5012,7 +5019,9 @@ static void ath11k_set_vht_txbf_cap(struct > > ath11k *ar, u32 *vht_cap) > > sound_dim >>= IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT; > > *vht_cap &= ~IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_MASK; > > > > - /* TODO: Need to check invalid STS and Sound_dim values > > set by FW? */ > > + nsts = (*vht_cap & IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK); > > + nsts >>= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; > > + *vht_cap &= ~IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK; > > > > /* Enable Sounding Dimension Field only if SU BF is enabled */ > > if (subfer) { > > @@ -5024,9 +5033,15 @@ static void ath11k_set_vht_txbf_cap(struct > > ath11k *ar, u32 *vht_cap) > > *vht_cap |= sound_dim; > > } > > > > - /* Use the STS advertised by FW unless SU Beamformee is > > not supported*/ > > - if (!subfee) > > - *vht_cap &= ~(IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK); > > + /* Enable Beamformee STS Field only if SU BF is enabled */ > > + if (subfee) { > > + if (nsts > (ar->num_rx_chains - 1)) > > + nsts = ar->num_rx_chains - 1; > > + > > + nsts <<= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; > > + nsts &= IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK; > > + *vht_cap |= nsts; > > + } > > } > > > > static struct ieee80211_sta_vht_cap > > -- > > 2.25.1 > > > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] ath11k: fix number of VHT beamformee spatial streams @ 2022-06-21 12:06 ` Sipos Csaba 0 siblings, 0 replies; 10+ messages in thread From: Sipos Csaba @ 2022-06-21 12:06 UTC (permalink / raw) To: Jesús Fernández Manzano; +Cc: ath11k, linux-wireless Hi Jesus, Oh, I am nobody, the masterminds are clearly Robert and Christian (Ansuel), I just try to use my radio access network knowledge and common sense to try and dissect issues like this. I am not sure if you noticed, that when you do uplink heavy tests on AX, in the current state uplink power is grossly fluctuating reported by the driver, while the RF environment is static. I am not sure if this issue with BF will fix it, but sure it sounds plausible. It is also unknown how the driver calculates RX power per client: does it uses some sort of reference signal, or the calculated power depends on traffic volume? Regards, Csaba Jesús Fernández Manzano <jesus.manzano@galgus.net> ezt írta (időpont: 2022. jún. 21., K, 10:29): > > Hi Csaba, > > It happens the same to me, HE is also affected and not fixed by this > patch because it is treated in a different place in the code than where > the VHT capabilities are set. If this patch is correct and is accepted I > would like to fix the HE part and upstream it too. > > Ps: thanks for your work in the OpenWRT forum in the Xiaomi AX3600 > thread. Very useful all these months. > > Regards, > Jesus > > El 20/6/22 a las 19:35, Sipos Csaba escribió: > > Dear Jesus, > > > > I wanted to ask you if you are sure if this is just a VHT issue, and > > HE is not affected? On my IPQ8074 board with 4 antennas for 5GHz, I > > have this IW output: > > > > HE Iftypes: AP > > HE MAC Capabilities (0x000d9a181040): > > +HTC HE Supported > > TWT Responder > > Dynamic BA Fragementation Level: 1 > > BSR > > Broadcast TWT > > OM Control > > Maximum A-MPDU Length Exponent: 3 > > RX Control Frame to MultiBSS > > A-MSDU in A-MPDU > > OM Control UL MU Data Disable RX > > HE PHY Capabilities: (0x1c604c887fdb839c010c00): > > HE40/HE80/5GHz > > HE160/5GHz > > HE160/HE80+80/5GHz > > LDPC Coding in Payload > > HE SU PPDU with 1x HE-LTF and 0.8us GI > > STBC Tx <= 80MHz > > STBC Rx <= 80MHz > > Full Bandwidth UL MU-MIMO > > DCM Max Constellation Rx: 1 > > SU Beamformer > > SU Beamformee > > MU Beamformer > > Beamformee STS <= 80Mhz: 7 > > Beamformee STS > 80Mhz: 3 > > Sounding Dimensions <= 80Mhz: 3 > > Sounding Dimensions > 80Mhz: 3 > > Ng = 16 SU Feedback > > Ng = 16 MU Feedback > > Codebook Size SU Feedback > > Codebook Size MU Feedback > > PPE Threshold Present > > HE SU PPDU & HE PPDU 4x HE-LTF 0.8us GI > > Max NC: 3 > > STBC Rx > 80MHz > > HE ER SU PPDU 4x HE-LTF 0.8us GI > > TX 1024-QAM > > RX 1024-QAM > > HE RX MCS and NSS set <= 80 MHz > > 1 streams: MCS 0-11 > > 2 streams: MCS 0-11 > > 3 streams: MCS 0-11 > > 4 streams: MCS 0-11 > > 5 streams: not supported > > 6 streams: not supported > > 7 streams: not supported > > 8 streams: not supported > > HE TX MCS and NSS set <= 80 MHz > > 1 streams: MCS 0-11 > > 2 streams: MCS 0-11 > > 3 streams: MCS 0-11 > > 4 streams: MCS 0-11 > > 5 streams: not supported > > 6 streams: not supported > > 7 streams: not supported > > 8 streams: not supported > > HE RX MCS and NSS set 160 MHz > > 1 streams: MCS 0-11 > > 2 streams: MCS 0-11 > > 3 streams: not supported > > 4 streams: not supported > > 5 streams: not supported > > 6 streams: not supported > > 7 streams: not supported > > 8 streams: not supported > > HE TX MCS and NSS set 160 MHz > > 1 streams: MCS 0-11 > > 2 streams: MCS 0-11 > > 3 streams: not supported > > 4 streams: not supported > > 5 streams: not supported > > 6 streams: not supported > > 7 streams: not supported > > 8 streams: not supported > > > > As you can see I have Beamformee STS <= 80Mhz: 7 under HE PHY > > Capabilities, not sure if that is correct. > > > > Using WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1 firmware. > > > > Thanks for your answer! > > > > Regards, > > Csaba > > > > Jesus Fernandez Manzano <jesus.manzano@galgus.net> ezt írta (időpont: > > 2022. jún. 16., Cs, 20:21): > > > > The number of spatial streams used when acting as a beamformee in VHT > > mode are reported by the firmware as 7 (8 sts - 1) both in IPQ6018 and > > IPQ8074 which respectively have 2 and 4 sts each. So the firmware > > should > > report 1 (2 - 1) and 3 (4 - 1). > > > > Fix this by checking that the number of VHT beamformee sts reported by > > the firmware is not greater than the number of receiving antennas - 1. > > The fix is based on the same approach used in this same function for > > sanitizing the number of sounding dimensions reported by the firmware. > > > > Without this change, acting as a beamformee in VHT mode is not working > > properly. > > > > Tested-on: IPQ6018 hw1.0 AHB > > WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1 > > Tested-on: IPQ8074 hw2.0 AHB > > WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1 > > > > Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax > > devices") > > Signed-off-by: Jesus Fernandez Manzano <jesus.manzano@galgus.net> > > --- > > drivers/net/wireless/ath/ath11k/mac.c | 25 ++++++++++++++++++++----- > > 1 file changed, 20 insertions(+), 5 deletions(-) > > > > diff --git a/drivers/net/wireless/ath/ath11k/mac.c > > b/drivers/net/wireless/ath/ath11k/mac.c > > index 42d2e8cf8125..7109ca4f166d 100644 > > --- a/drivers/net/wireless/ath/ath11k/mac.c > > +++ b/drivers/net/wireless/ath/ath11k/mac.c > > @@ -4950,6 +4950,8 @@ static int ath11k_mac_set_txbf_conf(struct > > ath11k_vif *arvif) > > if (vht_cap & (IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE)) { > > nsts = vht_cap & > > IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK; > > nsts >>= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; > > + if (nsts > (ar->num_rx_chains - 1)) > > + nsts = ar->num_rx_chains - 1; > > value |= SM(nsts, WMI_TXBF_STS_CAP_OFFSET); > > } > > > > @@ -4990,7 +4992,7 @@ static int ath11k_mac_set_txbf_conf(struct > > ath11k_vif *arvif) > > static void ath11k_set_vht_txbf_cap(struct ath11k *ar, u32 *vht_cap) > > { > > bool subfer, subfee; > > - int sound_dim = 0; > > + int sound_dim = 0, nsts = 0; > > > > subfer = !!(*vht_cap & > > (IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE)); > > subfee = !!(*vht_cap & > > (IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE)); > > @@ -5000,6 +5002,11 @@ static void ath11k_set_vht_txbf_cap(struct > > ath11k *ar, u32 *vht_cap) > > subfer = false; > > } > > > > + if (ar->num_rx_chains < 2) { > > + *vht_cap &= > > ~(IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE); > > + subfee = false; > > + } > > + > > /* If SU Beaformer is not set, then disable MU Beamformer > > Capability */ > > if (!subfer) > > *vht_cap &= > > ~(IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE); > > @@ -5012,7 +5019,9 @@ static void ath11k_set_vht_txbf_cap(struct > > ath11k *ar, u32 *vht_cap) > > sound_dim >>= IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT; > > *vht_cap &= ~IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_MASK; > > > > - /* TODO: Need to check invalid STS and Sound_dim values > > set by FW? */ > > + nsts = (*vht_cap & IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK); > > + nsts >>= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; > > + *vht_cap &= ~IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK; > > > > /* Enable Sounding Dimension Field only if SU BF is enabled */ > > if (subfer) { > > @@ -5024,9 +5033,15 @@ static void ath11k_set_vht_txbf_cap(struct > > ath11k *ar, u32 *vht_cap) > > *vht_cap |= sound_dim; > > } > > > > - /* Use the STS advertised by FW unless SU Beamformee is > > not supported*/ > > - if (!subfee) > > - *vht_cap &= ~(IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK); > > + /* Enable Beamformee STS Field only if SU BF is enabled */ > > + if (subfee) { > > + if (nsts > (ar->num_rx_chains - 1)) > > + nsts = ar->num_rx_chains - 1; > > + > > + nsts <<= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; > > + nsts &= IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK; > > + *vht_cap |= nsts; > > + } > > } > > > > static struct ieee80211_sta_vht_cap > > -- > > 2.25.1 > > > -- ath11k mailing list ath11k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath11k ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] ath11k: fix number of VHT beamformee spatial streams 2022-06-21 12:06 ` Sipos Csaba @ 2022-06-21 15:28 ` Jesús Fernández Manzano -1 siblings, 0 replies; 10+ messages in thread From: Jesús Fernández Manzano @ 2022-06-21 15:28 UTC (permalink / raw) To: Sipos Csaba; +Cc: ath11k, linux-wireless El 21/6/22 a las 14:06, Sipos Csaba escribió: > I am not sure if you noticed, that when you do uplink heavy tests on > AX, in the current state uplink power is grossly fluctuating reported > by the driver, while the RF environment is static. I am not sure if > this issue with BF will fix it, but sure it sounds plausible. It is > also unknown how the driver calculates RX power per client: does it > uses some sort of reference signal, or the calculated power depends on > traffic volume? Hi Csaba, Yes I noticed the same issue in heavy iperf3 uplink tests. But that was happening to me with firmware 2.4, now with 2.5 and the latest board-2.bin it works like a charm. Maybe you need some more patches in ath11k? I am using a combination of upstream patches from recent kernels and some qca patches. If you want, we can discuss the topic outside the mailing list to not spam other people. Regards, Jesus. -- ath11k mailing list ath11k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath11k ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] ath11k: fix number of VHT beamformee spatial streams @ 2022-06-21 15:28 ` Jesús Fernández Manzano 0 siblings, 0 replies; 10+ messages in thread From: Jesús Fernández Manzano @ 2022-06-21 15:28 UTC (permalink / raw) To: Sipos Csaba; +Cc: ath11k, linux-wireless El 21/6/22 a las 14:06, Sipos Csaba escribió: > I am not sure if you noticed, that when you do uplink heavy tests on > AX, in the current state uplink power is grossly fluctuating reported > by the driver, while the RF environment is static. I am not sure if > this issue with BF will fix it, but sure it sounds plausible. It is > also unknown how the driver calculates RX power per client: does it > uses some sort of reference signal, or the calculated power depends on > traffic volume? Hi Csaba, Yes I noticed the same issue in heavy iperf3 uplink tests. But that was happening to me with firmware 2.4, now with 2.5 and the latest board-2.bin it works like a charm. Maybe you need some more patches in ath11k? I am using a combination of upstream patches from recent kernels and some qca patches. If you want, we can discuss the topic outside the mailing list to not spam other people. Regards, Jesus. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] ath11k: fix number of VHT beamformee spatial streams 2022-06-16 17:39 ` Jesus Fernandez Manzano @ 2022-09-22 8:35 ` Kalle Valo -1 siblings, 0 replies; 10+ messages in thread From: Kalle Valo @ 2022-09-22 8:35 UTC (permalink / raw) To: Jesus Fernandez Manzano; +Cc: ath11k, linux-wireless, jesus.manzano Jesus Fernandez Manzano <jesus.manzano@galgus.net> wrote: > The number of spatial streams used when acting as a beamformee in VHT > mode are reported by the firmware as 7 (8 sts - 1) both in IPQ6018 and > IPQ8074 which respectively have 2 and 4 sts each. So the firmware should > report 1 (2 - 1) and 3 (4 - 1). > > Fix this by checking that the number of VHT beamformee sts reported by > the firmware is not greater than the number of receiving antennas - 1. > The fix is based on the same approach used in this same function for > sanitizing the number of sounding dimensions reported by the firmware. > > Without this change, acting as a beamformee in VHT mode is not working > properly. > > Tested-on: IPQ6018 hw1.0 AHB WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1 > Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1 > > Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices") > Signed-off-by: Jesus Fernandez Manzano <jesus.manzano@galgus.net> > Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com> Patch applied to ath-next branch of ath.git, thanks. 55b5ee3357d7 wifi: ath11k: fix number of VHT beamformee spatial streams -- https://patchwork.kernel.org/project/linux-wireless/patch/20220616173947.21901-1-jesus.manzano@galgus.net/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] ath11k: fix number of VHT beamformee spatial streams @ 2022-09-22 8:35 ` Kalle Valo 0 siblings, 0 replies; 10+ messages in thread From: Kalle Valo @ 2022-09-22 8:35 UTC (permalink / raw) To: Jesus Fernandez Manzano; +Cc: ath11k, linux-wireless, jesus.manzano Jesus Fernandez Manzano <jesus.manzano@galgus.net> wrote: > The number of spatial streams used when acting as a beamformee in VHT > mode are reported by the firmware as 7 (8 sts - 1) both in IPQ6018 and > IPQ8074 which respectively have 2 and 4 sts each. So the firmware should > report 1 (2 - 1) and 3 (4 - 1). > > Fix this by checking that the number of VHT beamformee sts reported by > the firmware is not greater than the number of receiving antennas - 1. > The fix is based on the same approach used in this same function for > sanitizing the number of sounding dimensions reported by the firmware. > > Without this change, acting as a beamformee in VHT mode is not working > properly. > > Tested-on: IPQ6018 hw1.0 AHB WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1 > Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.5.0.1-01208-QCAHKSWPL_SILICONZ-1 > > Fixes: d5c65159f289 ("ath11k: driver for Qualcomm IEEE 802.11ax devices") > Signed-off-by: Jesus Fernandez Manzano <jesus.manzano@galgus.net> > Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com> Patch applied to ath-next branch of ath.git, thanks. 55b5ee3357d7 wifi: ath11k: fix number of VHT beamformee spatial streams -- https://patchwork.kernel.org/project/linux-wireless/patch/20220616173947.21901-1-jesus.manzano@galgus.net/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches -- ath11k mailing list ath11k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath11k ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2022-09-22 8:35 UTC | newest] Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-06-16 17:39 [PATCH] ath11k: fix number of VHT beamformee spatial streams Jesus Fernandez Manzano 2022-06-16 17:39 ` Jesus Fernandez Manzano [not found] ` <CALQr=E8S6gt_UjaP7GS3M0Tn-MGg7-Xs03Q3suuV7=OP4XmiEQ@mail.gmail.com> 2022-06-21 8:29 ` Jesús Fernández Manzano 2022-06-21 8:29 ` Jesús Fernández Manzano 2022-06-21 12:06 ` Sipos Csaba 2022-06-21 12:06 ` Sipos Csaba 2022-06-21 15:28 ` Jesús Fernández Manzano 2022-06-21 15:28 ` Jesús Fernández Manzano 2022-09-22 8:35 ` Kalle Valo 2022-09-22 8:35 ` Kalle Valo
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.