Message ID | 20210618064625.14131-1-pkshih@realtek.com (mailing list archive) |
---|---|
Headers | show |
Series | rtw89: add Realtek 802.11ax driver | expand |
> -----Original Message----- > From: Ping-Ke Shih [mailto:pkshih@realtek.com] > Sent: Friday, June 18, 2021 2:46 PM > To: kvalo@codeaurora.org > Cc: linux-wireless@vger.kernel.org > Subject: [PATCH 00/24] rtw89: add Realtek 802.11ax driver Sorry. I forget to add "v5" prefix, but I think it's confusing people if I send this patchset again. > > This driver named rtw89, which is the next generation of rtw88, supports > Realtek 8852AE 802.11ax 2x2 chip whose new features are OFDMA, DBCC, > Spatial reuse, TWT and BSS coloring; now some of them aren't implemented > though. > > The chip architecture is entirely different from the chips supported by > rtw88 like RTL8822CE 802.11ac chip. First of all, register address ranges > are totally redefined, so it's impossible to reuse register definition. To > communicate with firmware, new H2C/C2H format is proposed. In order to have > better utilization, TX DMA flow is changed to two stages DMA. To provide > rich RX status information, additional RX PPDU packets are added. > > Since there are so many differences mentioned above, we decide to propose > a new driver. It has many authors, they are listed in alphabetic order: > > Chin-Yen Lee <timlee@realtek.com> > Ping-Ke Shih <pkshih@realtek.com> > Po Hao Huang <phhuang@realtek.com> > Tzu-En Huang <tehuang@realtek.com> > Vincent Fann <vincent_fann@realtek.com> > Yan-Hsuan Chuang <tony0620emma@gmail.com> > Zong-Zhe Yang <kevin_yang@realtek.com> > > v5: > - add OFDMA feature > - improve BT coexistence performance > - improve power save mode > - support SAR > - fine tune performance > - firmware: rtw89: 8852a: update fw to v0.13.24.0 > https://github.com/pkshih/linux-firmware.git > pick the commit a5b79c4790da3eb3690e23554225ef8db464f2c6 > v4: > - add basic BT coexistence features > - add power save mode, so an new patch (two files) is added > - fine tune performance > - add debugfs for debugging coex, bb, ... > v3: > - fix "networking block comments" reported by checkpatch > - Add MODULE_DEVICE_TABLE() generated by Thomas Backlund <tmb@mageia.org> > - Add missed BB settings > - error handle of RX BD and DESC length > - reduce debug level of C2H ACKs > - fix rekey failure due to wrong operator > v2: > - fix compiler warnings made by W=1 > Reported-by: kernel test robot <lkp@intel.com> > - sort header file alphabetically > - fix "networking block comments" reported by checkpatch > Hi Kalle and wireless experts, I submitted first version of rtw89 at the end of 2020, and continue to add features and fine tune driver by following versions. After half year development, I think this driver has been stable, so I'd like to inquiry if experts have time to help review this driver. Not only reviewing but you want to verify this driver, a 8852AE demoboard is needed; please feel free to contact me privately. -- Ping-Ke
Hi Ping-Ke, After applied your patches on 5.17-rc7, tested on pci device: 04:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. Device [10ec:8852] I found the performance is a bit poor on TX especially. Tested on Intel AX210, it's result is TX 461Mb/s and RX 547Mb/s at the same position. $ iperf3 -c 192.168.1.7 Connecting to host 192.168.1.7, port 5201 [ 5] local 192.168.1.6 port 40942 connected to 192.168.1.7 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 26.2 MBytes 220 Mbits/sec 0 1.12 MBytes [ 5] 1.00-2.00 sec 21.2 MBytes 178 Mbits/sec 0 1.76 MBytes [ 5] 2.00-3.00 sec 33.8 MBytes 283 Mbits/sec 0 2.00 MBytes [ 5] 3.00-4.00 sec 31.2 MBytes 262 Mbits/sec 0 2.12 MBytes [ 5] 4.00-5.00 sec 30.0 MBytes 252 Mbits/sec 0 2.38 MBytes [ 5] 5.00-6.00 sec 31.2 MBytes 262 Mbits/sec 0 2.56 MBytes [ 5] 6.00-7.00 sec 31.2 MBytes 262 Mbits/sec 0 2.56 MBytes [ 5] 7.00-8.00 sec 27.5 MBytes 231 Mbits/sec 0 2.56 MBytes [ 5] 8.00-9.00 sec 35.0 MBytes 294 Mbits/sec 0 2.56 MBytes [ 5] 9.00-10.00 sec 31.2 MBytes 262 Mbits/sec 0 2.69 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 299 MBytes 251 Mbits/sec 0 sender [ 5] 0.00-10.01 sec 296 MBytes 248 Mbits/sec receiver iperf Done. $ iperf3 -c 192.168.1.7 -R Connecting to host 192.168.1.7, port 5201 Reverse mode, remote host 192.168.1.7 is sending [ 5] local 192.168.1.6 port 40946 connected to 192.168.1.7 port 5201 [ ID] Interval Transfer Bitrate [ 5] 0.00-1.00 sec 46.4 MBytes 389 Mbits/sec [ 5] 1.00-2.00 sec 48.7 MBytes 408 Mbits/sec [ 5] 2.00-3.00 sec 48.5 MBytes 407 Mbits/sec [ 5] 3.00-4.00 sec 51.9 MBytes 435 Mbits/sec [ 5] 4.00-5.00 sec 47.8 MBytes 401 Mbits/sec [ 5] 5.00-6.00 sec 50.7 MBytes 426 Mbits/sec [ 5] 6.00-7.00 sec 48.2 MBytes 404 Mbits/sec [ 5] 7.00-8.00 sec 48.2 MBytes 405 Mbits/sec [ 5] 8.00-9.00 sec 51.0 MBytes 428 Mbits/sec [ 5] 9.00-10.00 sec 52.0 MBytes 436 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 497 MBytes 417 Mbits/sec 126 sender [ 5] 0.00-10.00 sec 493 MBytes 414 Mbits/sec receiver iperf Done. Also I found some errors when stress test, not sure how to reproduce yet, copy log here: kernel: rtw89_pci 0000:04:00.0: Firmware version 0.13.24.0, cmd version 0, type 1 kernel: rtw89_pci 0000:04:00.0: Firmware version 0.13.24.0, cmd version 0, type 3 kernel: rtw89_pci 0000:04:00.0: chip rfe_type is 1 kernel: initcall rtw89_pci_driver_init+0x0/0x1000 [rtw89_pci] returned 0 after 26621 usecs kernel: rtw89_pci 0000:04:00.0 wlp4s0: renamed from wlan0 kernel: wlp4s0: authenticate with 9c:d3:6d:a3:b2:e7 kernel: wlp4s0: send auth to 9c:d3:6d:a3:b2:e7 (try 1/3) kernel: wlp4s0: send auth to 9c:d3:6d:a3:b2:e7 (try 2/3) kernel: wlp4s0: send auth to 9c:d3:6d:a3:b2:e7 (try 3/3) kernel: wlp4s0: authentication with 9c:d3:6d:a3:b2:e7 timed out kernel: wlp4s0: authenticate with 9c:d3:6d:a3:b2:e7 kernel: wlp4s0: send auth to 9c:d3:6d:a3:b2:e7 (try 1/3) kernel: wlp4s0: authenticated kernel: wlp4s0: associate with 9c:d3:6d:a3:b2:e7 (try 1/3) kernel: wlp4s0: RX AssocResp from 9c:d3:6d:a3:b2:e7 (capab=0x11 status=0 aid=9) kernel: wlp4s0: associated kernel: IPv6: ADDRCONF(NETDEV_CHANGE): wlp4s0: link becomes ready kernel: rtw89_pci 0000:04:00.0: FW status = 0xb9001100 kernel: rtw89_pci 0000:04:00.0: FW BADADDR = 0x0 kernel: rtw89_pci 0000:04:00.0: FW EPC/RA = 0x0 kernel: rtw89_pci 0000:04:00.0: FW MISC = 0xb8990c7b kernel: rtw89_pci 0000:04:00.0: R_AX_HALT_C2H = 0x10 kernel: rtw89_pci 0000:04:00.0: R_AX_SER_DBG_INFO = 0x41000001 kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991bcb kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991bd5 kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991acb kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xbfc00180 kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991bf9 kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991ba7 kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991bd3 kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991ae3 kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991aad kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991ba7 kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991bd1 kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991ac5 kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991ba7 kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991ad1 kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991bbb kernel: rtw89_pci 0000:04:00.0: ---> err=0x10
Hi, Previous result is from a single antenna PCI card of 8852AE. After test on another Laptop with 8852AE, it works fine. Result: AP ASUS AX86u: TX 660M RX 880M AP Netgear R7800: TX 500M RX 561M Looks like the performance is affected by antenna. The error log is not reproduced again. Tested-by: Aaron Ma <aaron.ma@canonical.com> Aaron On 6/23/21 2:29 PM, Aaron Ma wrote: > Hi Ping-Ke, > > After applied your patches on 5.17-rc7, tested on pci device: > 04:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. Device [10ec:8852] > > I found the performance is a bit poor on TX especially. > Tested on Intel AX210, it's result is TX 461Mb/s and RX 547Mb/s at the same position. > > $ iperf3 -c 192.168.1.7 > Connecting to host 192.168.1.7, port 5201 > [ 5] local 192.168.1.6 port 40942 connected to 192.168.1.7 port 5201 > [ ID] Interval Transfer Bitrate Retr Cwnd > [ 5] 0.00-1.00 sec 26.2 MBytes 220 Mbits/sec 0 1.12 MBytes > [ 5] 1.00-2.00 sec 21.2 MBytes 178 Mbits/sec 0 1.76 MBytes > [ 5] 2.00-3.00 sec 33.8 MBytes 283 Mbits/sec 0 2.00 MBytes > [ 5] 3.00-4.00 sec 31.2 MBytes 262 Mbits/sec 0 2.12 MBytes > [ 5] 4.00-5.00 sec 30.0 MBytes 252 Mbits/sec 0 2.38 MBytes > [ 5] 5.00-6.00 sec 31.2 MBytes 262 Mbits/sec 0 2.56 MBytes > [ 5] 6.00-7.00 sec 31.2 MBytes 262 Mbits/sec 0 2.56 MBytes > [ 5] 7.00-8.00 sec 27.5 MBytes 231 Mbits/sec 0 2.56 MBytes > [ 5] 8.00-9.00 sec 35.0 MBytes 294 Mbits/sec 0 2.56 MBytes > [ 5] 9.00-10.00 sec 31.2 MBytes 262 Mbits/sec 0 2.69 MBytes > - - - - - - - - - - - - - - - - - - - - - - - - - > [ ID] Interval Transfer Bitrate Retr > [ 5] 0.00-10.00 sec 299 MBytes 251 Mbits/sec 0 sender > [ 5] 0.00-10.01 sec 296 MBytes 248 Mbits/sec receiver > > iperf Done. > > $ iperf3 -c 192.168.1.7 -R > Connecting to host 192.168.1.7, port 5201 > Reverse mode, remote host 192.168.1.7 is sending > [ 5] local 192.168.1.6 port 40946 connected to 192.168.1.7 port 5201 > [ ID] Interval Transfer Bitrate > [ 5] 0.00-1.00 sec 46.4 MBytes 389 Mbits/sec > [ 5] 1.00-2.00 sec 48.7 MBytes 408 Mbits/sec > [ 5] 2.00-3.00 sec 48.5 MBytes 407 Mbits/sec > [ 5] 3.00-4.00 sec 51.9 MBytes 435 Mbits/sec > [ 5] 4.00-5.00 sec 47.8 MBytes 401 Mbits/sec > [ 5] 5.00-6.00 sec 50.7 MBytes 426 Mbits/sec > [ 5] 6.00-7.00 sec 48.2 MBytes 404 Mbits/sec > [ 5] 7.00-8.00 sec 48.2 MBytes 405 Mbits/sec > [ 5] 8.00-9.00 sec 51.0 MBytes 428 Mbits/sec > [ 5] 9.00-10.00 sec 52.0 MBytes 436 Mbits/sec > - - - - - - - - - - - - - - - - - - - - - - - - - > [ ID] Interval Transfer Bitrate Retr > [ 5] 0.00-10.00 sec 497 MBytes 417 Mbits/sec 126 sender > [ 5] 0.00-10.00 sec 493 MBytes 414 Mbits/sec receiver > > iperf Done. > > > Also I found some errors when stress test, not sure how to reproduce yet, copy log here: > > kernel: rtw89_pci 0000:04:00.0: Firmware version 0.13.24.0, cmd version 0, type 1 > kernel: rtw89_pci 0000:04:00.0: Firmware version 0.13.24.0, cmd version 0, type 3 > kernel: rtw89_pci 0000:04:00.0: chip rfe_type is 1 > kernel: initcall rtw89_pci_driver_init+0x0/0x1000 [rtw89_pci] returned 0 after 26621 usecs > kernel: rtw89_pci 0000:04:00.0 wlp4s0: renamed from wlan0 > kernel: wlp4s0: authenticate with 9c:d3:6d:a3:b2:e7 > kernel: wlp4s0: send auth to 9c:d3:6d:a3:b2:e7 (try 1/3) > kernel: wlp4s0: send auth to 9c:d3:6d:a3:b2:e7 (try 2/3) > kernel: wlp4s0: send auth to 9c:d3:6d:a3:b2:e7 (try 3/3) > kernel: wlp4s0: authentication with 9c:d3:6d:a3:b2:e7 timed out > kernel: wlp4s0: authenticate with 9c:d3:6d:a3:b2:e7 > kernel: wlp4s0: send auth to 9c:d3:6d:a3:b2:e7 (try 1/3) > kernel: wlp4s0: authenticated > kernel: wlp4s0: associate with 9c:d3:6d:a3:b2:e7 (try 1/3) > kernel: wlp4s0: RX AssocResp from 9c:d3:6d:a3:b2:e7 (capab=0x11 status=0 aid=9) > kernel: wlp4s0: associated > kernel: IPv6: ADDRCONF(NETDEV_CHANGE): wlp4s0: link becomes ready > kernel: rtw89_pci 0000:04:00.0: FW status = 0xb9001100 > kernel: rtw89_pci 0000:04:00.0: FW BADADDR = 0x0 > kernel: rtw89_pci 0000:04:00.0: FW EPC/RA = 0x0 > kernel: rtw89_pci 0000:04:00.0: FW MISC = 0xb8990c7b > kernel: rtw89_pci 0000:04:00.0: R_AX_HALT_C2H = 0x10 > kernel: rtw89_pci 0000:04:00.0: R_AX_SER_DBG_INFO = 0x41000001 > kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991bcb > kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991bd5 > kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991acb > kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xbfc00180 > kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991bf9 > kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991ba7 > kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991bd3 > kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991ae3 > kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991aad > kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991ba7 > kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991bd1 > kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991ac5 > kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991ba7 > kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991ad1 > kernel: rtw89_pci 0000:04:00.0: [ERR]fw PC = 0xb8991bbb > kernel: rtw89_pci 0000:04:00.0: ---> > err=0x10 >