WCN36xx - Tput drop


I am using the Linaro 18_01 release. I am seeing the Throught put drop issue with specific AP (tested with Tp-Link). We are not seen the t-put issue with other STA device.

I verified the sniffer captures where is data rate is dropping like below

  1. Data re transmitted from AP with 65 Mbps
  2. RTS sent from the AP with 24 Mbps
  3. RTS rate is dropped to 12 Mbps
  4. RTS rate dropped to 1Mbps
  5. After this point Data rate is dropped to 11Mbps, which never pick up.

If we ran the wifi_scan in between Iperf3 test, also see the T-put low <3Mbps and never pick up again.

Some investigation:

STA went to scan without informing AP that it’s going to sleep (the bit in control field of any of data packets should be set to 1 - power save). It could be sniffer issue but both AP and sniffer doesn’t see this packet so most probably station issue.

Since AP didn’t get information that STA went to sleep, it thinks that STA can receive the packets and continue to send it to station. Finally since the station doesn’t respond, it sends BA request to verify last successfully received packets from station and didn’t get response since the station is still in scan and most probably closes aggregation - after that all packets are being sent on lower legacy rates and without aggregation and therefore throughput dropped significantly after station returns from scan.

STA doesn’t inform AP that it’s going to sleep before the scan start by setting Power save bit of any data packets (if STA doesn’t have anything to send data to AP it must send QOS null or Null data packets with Power save bit set - sleep).

[FYI - Also tested with DB410 and release 20_02 as well, same behavior observed]

Do you have any suggestion?


Are you using a modified wcn36xx driver? I suspect you have a modified wcn36xx driver using software scanning instead of offload scanning.


Yes, We did below changes for WCN3660B

--- a/arch/arm64/boot/dts/qcom/msm8916.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8916.dtsi
@@ -1083,7 +1083,7 @@
 			status = "disabled";
 			iris {
-				compatible = "qcom,wcn3620";
+				compatible = "qcom,wcn3680";
 				clocks = <&rpmcc RPM_SMD_RF_CLK2>;
 				clock-names = "xo";
diff --git a/drivers/net/wireless/ath/wcn36xx/main.c b/drivers/net/wireless/ath/wcn36xx/main.c
index ab5be6d..4b4e233 100644
--- a/drivers/net/wireless/ath/wcn36xx/main.c
+++ b/drivers/net/wireless/ath/wcn36xx/main.c
@@ -652,7 +652,7 @@ static int wcn36xx_hw_scan(struct ieee80211_hw *hw,
-	if (!get_feat_caps(wcn->fw_feat_caps, SCAN_OFFLOAD)) {
+	if (get_feat_caps(wcn->fw_feat_caps, SCAN_OFFLOAD)) {
 		/* legacy manual/sw scan */
 		return 0;

FYI - We have tested with DB410 and Linaro 20_02 release, see the same behavior.

This change disables offload scanning, and fall back to software scanning which can cause connection troubles (we had some issues with db410c in the past).

At least on my side, DB410C STA set all data packets with PS flag during scanning, is it only reproducible with your AP?:

Yes @Loic We have tested with multiple AP and see this behaviour with TP-Link router only and same TP-Link AP is working fine with other STA.

We were not able to see 5GHz AP in our scan result with offload scanning. That’s the reason to change it to software scanning.

I will revert the changes and check the t-put and update you.

@Loic After enable the scan off load scanning. We also able see the same behavior, its low T-put.

We also check with power save off

iwconfig wlan0 power off

T-put is good compare to power save ON, but when run scan command in between, T-put getting down and never up it again.

I want attach/share the log here, How can I ? its txt or log file only.

@Loic Any update here in this case?

Let me know if any specific log required.