Hi Eric, This compares Cubic with BBR with 4.13-rc2 (which has a few new commits to bbr.c):
wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000 $ cat /proc/sys/net/ipv4/tcp_congestion_control cubic $ iperf3 -c Connecting to host , port 5201 [ 4] local port 35242 connected to port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-1.00 sec 2.34 MBytes 19.6 Mbits/sec 0 26.9 KBytes [ 4] 1.00-2.00 sec 2.45 MBytes 20.6 Mbits/sec 0 26.9 KBytes [ 4] 2.00-3.00 sec 2.36 MBytes 19.8 Mbits/sec 0 26.9 KBytes [ 4] 3.00-4.00 sec 2.43 MBytes 20.4 Mbits/sec 0 26.9 KBytes [ 4] 4.00-5.00 sec 2.42 MBytes 20.3 Mbits/sec 0 26.9 KBytes [ 4] 5.00-6.00 sec 2.33 MBytes 19.5 Mbits/sec 0 29.7 KBytes [ 4] 6.00-7.00 sec 2.48 MBytes 20.8 Mbits/sec 0 29.7 KBytes [ 4] 7.00-8.00 sec 2.27 MBytes 19.1 Mbits/sec 0 29.7 KBytes [ 4] 8.00-9.00 sec 2.45 MBytes 20.6 Mbits/sec 0 29.7 KBytes [ 4] 9.00-10.00 sec 2.43 MBytes 20.4 Mbits/sec 0 29.7 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.00 sec 24.0 MBytes 20.1 Mbits/sec 0 sender [ 4] 0.00-10.00 sec 23.9 MBytes 20.1 Mbits/sec receiver $ echo bbr > /proc/sys/net/ipv4/tcp_congestion_control $ iperf3 -c Connecting to host , port 5201 [ 4] local port 35246 connected to port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-1.00 sec 1.69 MBytes 14.2 Mbits/sec 0 8.48 KBytes [ 4] 1.00-2.00 sec 1.59 MBytes 13.4 Mbits/sec 0 8.48 KBytes [ 4] 2.00-3.00 sec 1.43 MBytes 12.0 Mbits/sec 0 8.48 KBytes [ 4] 3.00-4.00 sec 1.63 MBytes 13.6 Mbits/sec 0 8.48 KBytes [ 4] 4.00-5.00 sec 1.59 MBytes 13.4 Mbits/sec 0 8.48 KBytes [ 4] 5.00-6.00 sec 1.50 MBytes 12.6 Mbits/sec 0 8.48 KBytes [ 4] 6.00-7.00 sec 1.59 MBytes 13.3 Mbits/sec 0 8.48 KBytes [ 4] 7.00-8.00 sec 1.59 MBytes 13.3 Mbits/sec 0 8.48 KBytes [ 4] 8.00-9.00 sec 1.60 MBytes 13.4 Mbits/sec 0 8.48 KBytes [ 4] 9.00-10.00 sec 1.63 MBytes 13.6 Mbits/sec 0 8.48 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-10.00 sec 15.8 MBytes 13.3 Mbits/sec 0 sender [ 4] 0.00-10.00 sec 15.8 MBytes 13.2 Mbits/sec receiver Hope that helps. Taking a step back, the original issue for me here is that using a MacBook Air at the same location and with the same BSSID throughput (for TCP is about 100Mbits/sec). Of course it's a different phy and stack but we should be able to get much better throughput from the Atheros phy, driver and TCP stack in this scenario without very much tuning. Patching tcp_output.c as above did make a significant difference (though not quite making up the full difference) but it looks like using BBR on the client doesn't. Are you thinking the solution lies down the path of using BBR? Could you tell what you would expect to see results-wise in using BBR over others in this scenario? Thanks! Appreciate your input to this! -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to linux in Ubuntu. https://bugs.launchpad.net/bugs/1670041 Title: Poor performance of Atheros QCA6174 802.11ac (rev 32) (Killer Wireless 1535) Status in linux package in Ubuntu: In Progress Status in linux source package in Zesty: In Progress Bug description: Update (2017-05-20): Kalle Valo suggested a hack which increased client -> AP TCP performance - so it does not look like a firmware issue as I thought originally, rather an ath10k driver issue: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1670041/comments/11 https://patchwork.kernel.org/patch/5784701/ (the hack is at the bottom) Tested here: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1670041/comments/17 Update: added some forensics in the paste (a long read): http://paste.ubuntu.com/24118478/ ----- 3b:00.0 Network controller: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter (rev 32) qca6174 hw3.2 target 0x05030000 chip_id 0x00340aff sub 1a56:1535 Original message: ------ I experience a very poor 802.11ac performance of a QCA6174 Wireless card (Killer Wireless 1535). This is a dev version of Zesty with a recently released 4.10 kernel: uname -r 4.10.0-9-generic dpkg -l linux-firmware | grep ii ii linux-firmware 1.163 all Firmware for Linux kernel drivers lspci -vvv: ... 3b:00.0 Network controller: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter (rev 32) Subsystem: Bigfoot Networks, Inc. QCA6174 802.11ac Wireless Network Adapter Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0, Cache Line Size: 64 bytes Interrupt: pin A routed to IRQ 334 Region 0: Memory at dd200000 (64-bit, non-prefetchable) [size=2M] Capabilities: <access denied> Kernel driver in use: ath10k_pci Kernel modules: ath10k_pci ----------------------------------------- Testing wireless speed with RT-87U 802.11ac router shows that the speed is only 27.3 megabits per second which is very low for an 802.11ac card: iperf -c rtr ------------------------------------------------------------ Client connecting to rtr, TCP port 5001 TCP window size: 85.0 KByte (default) ------------------------------------------------------------ [ 3] local 10.10.10.78 port 48930 connected with 10.10.10.1 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 32.6 MBytes 27.3 Mbits/sec ------------------------------------ For comparison, on the same network (from the same distance to the router) I have the following result with an Intel's card (on a 4.8 kernel, different laptop): UX32LN:~$ lspci | grep 7260 02:00.0 Network controller: Intel Corporation Wireless 7260 (rev bb) UX32LN:~$ iperf -c rtr ------------------------------------------------------------ Client connecting to rtr, TCP port 5001 TCP window size: 85.0 KByte (default) ------------------------------------------------------------ [ 3] local 10.10.10.208 port 37196 connected with 10.10.10.1 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.1 sec 237 MBytes 198 Mbits/sec administrator@UX32LN:~$ lsp lspci lspcmcia lspgpot 200 Mbps is much better. ----------------------------------- Back to the problematic card: Booted 16.04.2 with the rolling HWE kernel 4.8: journalctl -k | grep -i ath Mar 04 18:28:31 ubuntu kernel: ath10k_pci 0000:3b:00.0: enabling device (0000 -> 0002) Mar 04 18:28:31 ubuntu kernel: ath10k_pci 0000:3b:00.0: pci irq msi oper_irq_mode 2 irq_mode 0 reset_mode 0 Mar 04 18:28:31 ubuntu kernel: ath10k_pci 0000:3b:00.0: Direct firmware load for ath10k/pre-cal-pci-0000:3b:00.0.bin failed with error -2 Mar 04 18:28:31 ubuntu kernel: ath10k_pci 0000:3b:00.0: Direct firmware load for ath10k/cal-pci-0000:3b:00.0.bin failed with error -2 Mar 04 18:28:31 ubuntu kernel: ath10k_pci 0000:3b:00.0: Direct firmware load for ath10k/QCA6174/hw3.0/firmware-5.bin failed with error -2 Mar 04 18:28:31 ubuntu kernel: ath10k_pci 0000:3b:00.0: could not fetch firmware file 'ath10k/QCA6174/hw3.0/firmware-5.bin': -2 Mar 04 18:28:31 ubuntu kernel: ath10k_pci 0000:3b:00.0: qca6174 hw3.2 target 0x05030000 chip_id 0x00340aff sub 1a56:1535 Mar 04 18:28:31 ubuntu kernel: ath10k_pci 0000:3b:00.0: kconfig debug 0 debugfs 1 tracing 1 dfs 0 testmode 0 Mar 04 18:28:31 ubuntu kernel: ath10k_pci 0000:3b:00.0: firmware ver WLAN.RM.2.0-00180-QCARMSWPZ-1 api 4 features wowlan,ignore-otp,no-4addr-pad crc32 75dee6c5 Mar 04 18:28:31 ubuntu kernel: ath10k_pci 0000:3b:00.0: board_file api 2 bmi_id N/A crc32 6fc88fe7 Mar 04 18:28:34 ubuntu kernel: ath10k_pci 0000:3b:00.0: htt-ver 3.26 wmi-op 4 htt-op 3 cal otp max-sta 32 raw 0 hwcrypto 1 Mar 04 18:28:34 ubuntu kernel: ath: EEPROM regdomain: 0x6c Mar 04 18:28:34 ubuntu kernel: ath: EEPROM indicates we should expect a direct regpair map Mar 04 18:28:34 ubuntu kernel: ath: Country alpha2 being used: 00 Mar 04 18:28:34 ubuntu kernel: ath: Regpair used: 0x6c Mar 04 18:28:34 ubuntu kernel: ath10k_pci 0000:3b:00.0 wlp59s0: renamed from wlan0 iperf -c 10.10.10.1 ------------------------------------------------------------ Client connecting to 10.10.10.1, TCP port 5001 TCP window size: 85.0 KByte (default) ------------------------------------------------------------ [ 3] local 10.10.10.78 port 43786 connected with 10.10.10.1 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 43.0 MBytes 36.0 Mbits/sec -------------------------------- Booted on 4.4 General Availability kernel - the card did not work at all: Mar 04 18:51:54 ubuntu kernel: ath10k_pci 0000:3b:00.0: failed to enable dynamic BW: -11 Mar 04 18:52:00 ubuntu kernel: ath10k_pci 0000:3b:00.0: could not suspend target (-11) -------------------------------- The card's product name is Killer Wireless-AC 1535: http://www.killernetworking.com/products/killer-wireless-ac-1535 The card vendor refers to linux-firmware 1.163: http://www.killernetworking.com/driver-downloads/knowledge-base?view=topic&id=2 --------------------------------- I tend to blame Atheros firmware so I've tried whatever kvalo has in the ath10k-firmware https://github.com/kvalo/ath10k-firmware sudo rmmod ath10k_pci ath10k_core ath mac80211 cfg80211 # this gets rid of some of the kernel warnings about firmware but the performance remains low sudo cp ath10k- firmware/QCA6174/hw3.0/firmware-4.bin_WLAN.RM.2.0-00180-QCARMSWPZ-1 /lib/firmware/ath10k/QCA6174/hw3.0/firmware-5.bin sudo cp ath10k-firmware/QCA6174/hw3.0/board-2.bin /lib/firmware/ath10k/QCA6174/hw3.0/board-2.bin sudo modprobe -a ath10k_pci ath10k_core ath mac80211 cfg80211 ---------------------------------- Tried both 5.0 GHz and 2.4 GHz modes - got similar results. ---------------------------------- ProblemType: Bug DistroRelease: Ubuntu 17.04 Package: linux-image-4.10.0-9-generic 4.10.0-9.11 ProcVersionSignature: Ubuntu 4.10.0-9.11-generic 4.10.0 Uname: Linux 4.10.0-9-generic x86_64 NonfreeKernelModules: nvidia_uvm nvidia_drm nvidia_modeset nvidia ApportVersion: 2.20.4-0ubuntu2 Architecture: amd64 AudioDevicesInUse: USER PID ACCESS COMMAND /dev/snd/controlC0: dima 3458 F.... pulseaudio /dev/snd/controlC1: dima 3458 F.... pulseaudio CurrentDesktop: Unity:Unity7 Date: Sat Mar 4 22:03:00 2017 InstallationDate: Installed on 2017-02-27 (5 days ago) InstallationMedia: Ubuntu 17.04 "Zesty Zapus" - Alpha amd64 (20170227) MachineType: Razer Blade ProcFB: 0 inteldrmfb ProcKernelCmdLine: BOOT_IMAGE=/vmlinuz-4.10.0-9-generic.efi.signed root=UUID=3f515c94-cd91-48b4-80f6-84ec24cb7b8f ro rootflags=subvol=@ quiet button.lid_init_state=open pcie_aspm=off RelatedPackageVersions: linux-restricted-modules-4.10.0-9-generic N/A linux-backports-modules-4.10.0-9-generic N/A linux-firmware 1.163 SourcePackage: linux UpgradeStatus: No upgrade log present (probably fresh install) dmi.bios.date: 01/10/2017 dmi.bios.vendor: Razer dmi.bios.version: 1.00 dmi.board.name: Razer dmi.board.vendor: Razer dmi.chassis.type: 9 dmi.chassis.vendor: Razer dmi.modalias: dmi:bvnRazer:bvr1.00:bd01/10/2017:svnRazer:pnBlade:pvr6.06:rvnRazer:rnRazer:rvr:cvnRazer:ct9:cvr: dmi.product.name: Blade dmi.product.version: 6.06 dmi.sys.vendor: Razer To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1670041/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp