Hello. I have a Dell laptop with this WiFi card: 02:00.0 Network controller [0280]: Intel Corporation Wi-Fi 6 AX200 [8086:2723] (rev 1a) Also, I sometimes run virtual machines on this laptop; thus, it has the usual virbr0 bridge interface, of which the only slaves are tap devices created by QEMU. The routing setup is a NAT created by NetworkManager: table ip nm-shared-virbr0 { chain nat_postrouting { type nat hook postrouting priority srcnat; policy accept; ip saddr 192.168.253.0/24 ip daddr != 192.168.253.0/24 masquerade } chain filter_forward { type filter hook forward priority filter; policy accept; ip daddr 192.168.253.0/24 oifname "virbr0" ct state { established, related } accept ip saddr 192.168.253.0/24 iifname "virbr0" accept iifname "virbr0" oifname "virbr0" accept iifname "virbr0" reject oifname "virbr0" reject } } Up to and including linux-6.10.x, this WiFi card worked as it should. When testing the performance of this card from the laptop itself against iperf3 running on the router, everything is fine even on later kernels (e.g., 6.12.7): [aep@dell-laptop linux]$ iperf3 -c 192.168.10.1 -p 9999 # Upload Connecting to host 192.168.10.1, port 9999 [ 5] local 192.168.10.234 port 38596 connected to 192.168.10.1 port 9999 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 95.9 MBytes 803 Mbits/sec 0 1.40 MBytes [ 5] 1.00-2.00 sec 103 MBytes 862 Mbits/sec 0 1.28 MBytes [ 5] 2.00-3.00 sec 100 MBytes 839 Mbits/sec 0 1.79 MBytes [ 5] 3.00-4.00 sec 104 MBytes 877 Mbits/sec 0 1.30 MBytes [ 5] 4.00-5.00 sec 103 MBytes 866 Mbits/sec 0 1.05 MBytes [ 5] 5.00-6.00 sec 87.2 MBytes 732 Mbits/sec 0 1.02 MBytes [ 5] 6.00-7.00 sec 103 MBytes 865 Mbits/sec 0 1.39 MBytes [ 5] 7.00-8.00 sec 102 MBytes 856 Mbits/sec 0 1.58 MBytes [ 5] 8.00-9.00 sec 103 MBytes 866 Mbits/sec 0 1.54 MBytes [ 5] 9.00-10.00 sec 103 MBytes 862 Mbits/sec 0 1.42 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 1005 MBytes 843 Mbits/sec 0 sender [ 5] 0.00-10.01 sec 1003 MBytes 841 Mbits/sec receiver iperf Done. However, when testing from virtual machines, with the host kernel being v6.11 or later, the speed is way too low: aep@debian-misc:~$ iperf3 -c 192.168.10.1 -p 9999 # Upload Connecting to host 192.168.10.1, port 9999 [ 5] local 192.168.252.80 port 33614 connected to 192.168.10.1 port 9999 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 32.1 MBytes 269 Mbits/sec 28 2.83 KBytes [ 5] 1.00-2.00 sec 0.00 Bytes 0.00 bits/sec 24 2.83 KBytes [ 5] 2.00-3.00 sec 0.00 Bytes 0.00 bits/sec 46 2.83 KBytes [ 5] 3.00-4.00 sec 0.00 Bytes 0.00 bits/sec 40 2.83 KBytes [ 5] 4.00-5.00 sec 1.38 MBytes 11.5 Mbits/sec 24 2.83 KBytes [ 5] 5.00-6.00 sec 0.00 Bytes 0.00 bits/sec 32 2.83 KBytes [ 5] 6.00-7.00 sec 0.00 Bytes 0.00 bits/sec 38 2.83 KBytes [ 5] 7.00-8.00 sec 0.00 Bytes 0.00 bits/sec 44 2.83 KBytes [ 5] 8.00-9.00 sec 0.00 Bytes 0.00 bits/sec 30 2.83 KBytes [ 5] 9.00-10.00 sec 0.00 Bytes 0.00 bits/sec 30 2.83 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 33.5 MBytes 28.1 Mbits/sec 336 sender [ 5] 0.00-10.01 sec 30.8 MBytes 25.8 Mbits/sec receiver iperf Done. I found that disabling TCP segmentation offload on the WiFi card helps the upload performance inside the VM: [aep@dell-laptop linux]$ sudo ethtool --features wlp2s0 tcp-segmentation-offload off aep@debian-misc:~$ iperf3 -c 192.168.10.1 -p 9999 # Upload Connecting to host 192.168.10.1, port 9999 [ 5] local 192.168.252.80 port 59622 connected to 192.168.10.1 port 9999 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 92.6 MBytes 776 Mbits/sec 0 2.49 MBytes [ 5] 1.00-2.00 sec 104 MBytes 874 Mbits/sec 1 2.49 MBytes [ 5] 2.00-3.00 sec 103 MBytes 863 Mbits/sec 0 2.49 MBytes [ 5] 3.00-4.00 sec 105 MBytes 881 Mbits/sec 0 2.49 MBytes [ 5] 4.00-5.00 sec 105 MBytes 882 Mbits/sec 0 2.49 MBytes [ 5] 5.00-6.00 sec 106 MBytes 885 Mbits/sec 0 2.49 MBytes [ 5] 6.00-7.00 sec 106 MBytes 889 Mbits/sec 0 2.49 MBytes [ 5] 7.00-8.00 sec 102 MBytes 855 Mbits/sec 0 2.49 MBytes [ 5] 8.00-9.00 sec 107 MBytes 896 Mbits/sec 0 2.49 MBytes [ 5] 9.00-10.00 sec 103 MBytes 862 Mbits/sec 0 2.49 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 1.01 GBytes 866 Mbits/sec 1 sender [ 5] 0.00-10.01 sec 1.01 GBytes 865 Mbits/sec receiver iperf Done. I have tried bisecting between 6.10 and 6.11, but gave up, as too many intermediate revisions either crash on the first forwarded packet, or do not connect, or misbehave in other ways. I am aware of https://bugzilla.kernel.org/show_bug.cgi?id=209913, which looks similar. The difference is that the recent regression is all about the forwarded traffic. Could you please fix this regression? -- Alexander Patrakov