Hi On 2024-04-09, Bitterblue Smith wrote: > Some (all?) management frames are incorrectly reported to mac80211 as > decrypted when actually the hardware did not decrypt them. This results > in speeds 3-5 times lower than expected, 20-30 Mbps instead of 100 > Mbps. > > Fix this by checking the encryption type field of the RX descriptor. > rtw88 does the same thing. > > This fix was tested only with rtl8192du, which will use the same code. > > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Bitterblue Smith <rtl8821cerfe2@xxxxxxxxx> > --- > v4: > - Patch is new in v4. This patch indeed provides a nice speedup with WPA3/ SAE on my rtl8192du: v3 of the patch series: $ iperf3 -c <remote_server_ipv6> Connecting to host <remote_server_ipv6>, port 5201 [ 5] local <local_client_ipv6> port 45806 connected to <remote_server_ipv6> port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 3.75 MBytes 31.4 Mbits/sec 0 241 KBytes [ 5] 1.00-2.00 sec 3.88 MBytes 32.5 Mbits/sec 0 411 KBytes [ 5] 2.00-3.00 sec 3.88 MBytes 32.5 Mbits/sec 0 580 KBytes [ 5] 3.00-4.00 sec 3.88 MBytes 32.5 Mbits/sec 0 720 KBytes [ 5] 4.00-5.00 sec 2.62 MBytes 22.0 Mbits/sec 0 846 KBytes [ 5] 5.00-6.00 sec 2.75 MBytes 23.1 Mbits/sec 0 1004 KBytes [ 5] 6.00-7.00 sec 2.62 MBytes 22.0 Mbits/sec 0 1.14 MBytes [ 5] 7.00-8.00 sec 2.75 MBytes 23.1 Mbits/sec 0 1.27 MBytes [ 5] 8.00-9.00 sec 2.62 MBytes 22.0 Mbits/sec 0 1.41 MBytes [ 5] 9.00-10.00 sec 2.75 MBytes 23.1 Mbits/sec 0 1.55 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 31.5 MBytes 26.4 Mbits/sec 0 sender [ 5] 0.00-10.00 sec 30.4 MBytes 25.5 Mbits/sec receiver iperf Done. $ iperf3 -c <remote_server_ipv6> --reverse Connecting to host <remote_server_ipv6>, port 5201 Reverse mode, remote host <remote_server_ipv6> is sending [ 5] local <local_client_ipv6> port 57564 connected to <remote_server_ipv6> port 5201 [ ID] Interval Transfer Bitrate [ 5] 0.00-1.00 sec 3.25 MBytes 27.2 Mbits/sec [ 5] 1.00-2.00 sec 2.50 MBytes 21.0 Mbits/sec [ 5] 2.00-3.00 sec 2.25 MBytes 18.9 Mbits/sec [ 5] 3.00-4.00 sec 2.25 MBytes 18.9 Mbits/sec [ 5] 4.00-5.00 sec 2.88 MBytes 24.1 Mbits/sec [ 5] 5.00-6.00 sec 2.88 MBytes 24.1 Mbits/sec [ 5] 6.00-7.00 sec 2.38 MBytes 19.9 Mbits/sec [ 5] 7.00-8.00 sec 2.62 MBytes 22.0 Mbits/sec [ 5] 8.00-9.00 sec 3.00 MBytes 25.2 Mbits/sec [ 5] 9.00-10.00 sec 3.00 MBytes 25.2 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.01 sec 29.9 MBytes 25.0 Mbits/sec 0 sender [ 5] 0.00-10.00 sec 27.0 MBytes 22.6 Mbits/sec receiver iperf Done. $ iperf3 -c <remote_server_ipv6> --bidir Connecting to host <remote_server_ipv6>, port 5201 [ 5] local <local_client_ipv6> port 44242 connected to <remote_server_ipv6> port 5201 [ 7] local <local_client_ipv6> port 44252 connected to <remote_server_ipv6> port 5201 [ ID][Role] Interval Transfer Bitrate Retr Cwnd [ 5][TX-C] 0.00-1.00 sec 2.00 MBytes 16.8 Mbits/sec 0 109 KBytes [ 7][RX-C] 0.00-1.00 sec 1.00 MBytes 8.38 Mbits/sec [ 5][TX-C] 1.00-2.00 sec 2.75 MBytes 23.1 Mbits/sec 0 212 KBytes [ 7][RX-C] 1.00-2.00 sec 640 KBytes 5.24 Mbits/sec [ 5][TX-C] 2.00-3.00 sec 2.25 MBytes 18.9 Mbits/sec 0 315 KBytes [ 7][RX-C] 2.00-3.00 sec 640 KBytes 5.24 Mbits/sec [ 5][TX-C] 3.00-4.00 sec 3.12 MBytes 26.2 Mbits/sec 0 421 KBytes [ 7][RX-C] 3.00-4.00 sec 512 KBytes 4.19 Mbits/sec [ 5][TX-C] 4.00-5.00 sec 4.00 MBytes 33.6 Mbits/sec 0 551 KBytes [ 7][RX-C] 4.00-5.00 sec 640 KBytes 5.24 Mbits/sec [ 5][TX-C] 5.00-6.00 sec 2.50 MBytes 21.0 Mbits/sec 0 676 KBytes [ 7][RX-C] 5.00-6.00 sec 384 KBytes 3.15 Mbits/sec [ 5][TX-C] 6.00-7.00 sec 2.75 MBytes 23.1 Mbits/sec 0 802 KBytes [ 7][RX-C] 6.00-7.00 sec 384 KBytes 3.15 Mbits/sec [ 5][TX-C] 7.00-8.00 sec 2.62 MBytes 22.0 Mbits/sec 0 925 KBytes [ 7][RX-C] 7.00-8.00 sec 256 KBytes 2.10 Mbits/sec [ 5][TX-C] 8.00-9.00 sec 2.75 MBytes 23.1 Mbits/sec 0 1.05 MBytes [ 7][RX-C] 8.00-9.00 sec 512 KBytes 4.19 Mbits/sec [ 5][TX-C] 9.00-10.00 sec 2.62 MBytes 22.0 Mbits/sec 0 1.19 MBytes [ 7][RX-C] 9.00-10.00 sec 256 KBytes 2.10 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID][Role] Interval Transfer Bitrate Retr [ 5][TX-C] 0.00-10.00 sec 27.4 MBytes 23.0 Mbits/sec 0 sender [ 5][TX-C] 0.00-10.00 sec 25.4 MBytes 21.3 Mbits/sec receiver [ 7][RX-C] 0.00-10.00 sec 6.12 MBytes 5.14 Mbits/sec 1 sender [ 7][RX-C] 0.00-10.00 sec 5.12 MBytes 4.30 Mbits/sec receiver iperf Done. *********************************************************************** v4 of the patch series: $ iperf3 -c <remote_server_ipv6> Connecting to host <remote_server_ipv6>, port 5201 [ 5] local <local_client_ipv6> port 60528 connected to <remote_server_ipv6> port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 13.1 MBytes 110 Mbits/sec 0 445 KBytes [ 5] 1.00-2.00 sec 13.2 MBytes 111 Mbits/sec 0 644 KBytes [ 5] 2.00-3.00 sec 11.9 MBytes 99.6 Mbits/sec 0 768 KBytes [ 5] 3.00-4.00 sec 11.5 MBytes 96.5 Mbits/sec 0 855 KBytes [ 5] 4.00-5.00 sec 12.0 MBytes 101 Mbits/sec 0 945 KBytes [ 5] 5.00-6.00 sec 11.4 MBytes 95.5 Mbits/sec 0 945 KBytes [ 5] 6.00-7.00 sec 11.6 MBytes 97.5 Mbits/sec 0 945 KBytes [ 5] 7.00-8.00 sec 11.2 MBytes 94.4 Mbits/sec 0 945 KBytes [ 5] 8.00-9.00 sec 13.0 MBytes 109 Mbits/sec 0 945 KBytes [ 5] 9.00-10.00 sec 12.0 MBytes 101 Mbits/sec 0 1000 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 121 MBytes 101 Mbits/sec 0 sender [ 5] 0.00-10.03 sec 118 MBytes 98.3 Mbits/sec receiver iperf Done. $ iperf3 -c <remote_server_ipv6> --reverse Connecting to host <remote_server_ipv6>, port 5201 Reverse mode, remote host <remote_server_ipv6> is sending [ 5] local <local_client_ipv6> port 59562 connected to <remote_server_ipv6> port 5201 [ ID] Interval Transfer Bitrate [ 5] 0.00-1.00 sec 16.0 MBytes 134 Mbits/sec [ 5] 1.00-2.00 sec 14.9 MBytes 125 Mbits/sec [ 5] 2.00-3.00 sec 19.2 MBytes 162 Mbits/sec [ 5] 3.00-4.00 sec 14.9 MBytes 125 Mbits/sec [ 5] 4.00-5.00 sec 18.2 MBytes 153 Mbits/sec [ 5] 5.00-6.00 sec 18.9 MBytes 158 Mbits/sec [ 5] 6.00-7.00 sec 17.8 MBytes 149 Mbits/sec [ 5] 7.00-8.00 sec 17.5 MBytes 147 Mbits/sec [ 5] 8.00-9.00 sec 15.1 MBytes 127 Mbits/sec [ 5] 9.00-10.00 sec 14.8 MBytes 124 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.01 sec 171 MBytes 144 Mbits/sec 1 sender [ 5] 0.00-10.00 sec 167 MBytes 140 Mbits/sec receiver iperf Done $ iperf3 -c <remote_server_ipv6> --bidir Connecting to host <remote_server_ipv6>, port 5201 [ 5] local <local_client_ipv6> port 34312 connected to <remote_server_ipv6> port 5201 [ 7] local <local_client_ipv6> port 34318 connected to <remote_server_ipv6> port 5201 [ ID][Role] Interval Transfer Bitrate Retr Cwnd [ 5][TX-C] 0.00-1.00 sec 8.25 MBytes 69.1 Mbits/sec 0 395 KBytes [ 7][RX-C] 0.00-1.00 sec 7.00 MBytes 58.7 Mbits/sec [ 5][TX-C] 1.00-2.00 sec 3.38 MBytes 28.3 Mbits/sec 0 420 KBytes [ 7][RX-C] 1.00-2.00 sec 14.6 MBytes 123 Mbits/sec [ 5][TX-C] 2.00-3.00 sec 2.88 MBytes 24.1 Mbits/sec 0 473 KBytes [ 7][RX-C] 2.00-3.00 sec 15.4 MBytes 129 Mbits/sec [ 5][TX-C] 3.00-4.00 sec 1.12 MBytes 9.44 Mbits/sec 0 531 KBytes [ 7][RX-C] 3.00-4.00 sec 10.9 MBytes 91.2 Mbits/sec [ 5][TX-C] 4.00-5.00 sec 1.12 MBytes 9.44 Mbits/sec 0 558 KBytes [ 7][RX-C] 4.00-5.00 sec 10.8 MBytes 90.2 Mbits/sec [ 5][TX-C] 5.00-6.00 sec 1.38 MBytes 11.5 Mbits/sec 0 600 KBytes [ 7][RX-C] 5.00-6.00 sec 3.62 MBytes 30.4 Mbits/sec [ 5][TX-C] 6.00-7.00 sec 2.75 MBytes 23.1 Mbits/sec 0 718 KBytes [ 7][RX-C] 6.00-7.00 sec 12.2 MBytes 103 Mbits/sec [ 5][TX-C] 7.00-8.00 sec 2.75 MBytes 23.1 Mbits/sec 0 853 KBytes [ 7][RX-C] 7.00-8.00 sec 11.1 MBytes 93.3 Mbits/sec [ 5][TX-C] 8.00-9.00 sec 2.75 MBytes 23.1 Mbits/sec 0 1.03 MBytes [ 7][RX-C] 8.00-9.00 sec 13.6 MBytes 114 Mbits/sec [ 5][TX-C] 9.00-10.00 sec 4.12 MBytes 34.6 Mbits/sec 0 1.12 MBytes [ 7][RX-C] 9.00-10.00 sec 16.6 MBytes 139 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID][Role] Interval Transfer Bitrate Retr [ 5][TX-C] 0.00-10.00 sec 30.5 MBytes 25.6 Mbits/sec 0 sender [ 5][TX-C] 0.00-10.04 sec 27.1 MBytes 22.7 Mbits/sec receiver [ 7][RX-C] 0.00-10.00 sec 119 MBytes 99.7 Mbits/sec 10 sender [ 7][RX-C] 0.00-10.04 sec 116 MBytes 96.8 Mbits/sec receiver iperf Done. Regards Stefan Lippers-Hollmann