Re: rtw88 (8822be, 8821ce) - if you have one of these please join in [was: ..]

From: Oleg Nauman <oleg.nauman_at_gmail.com>
Date: Mon, 20 Apr 2026 07:35:34 UTC
 Hello Bjoern,


On Sun, Mar 29, 2026 at 10:02 PM Bjoern A. Zeeb <bz@freebsd.org> wrote:
> So given rtw88 8822be abd 8821ce mostly are standing between me and pushing
> further changes I had a closer look this week.
>
> There are two problems:
>
> (a) switching from a (rejected) HW scan to a SW scan causes problems as
>      it can race with the scan_to_auth state change due to the nature
>      of the compat code and some extra locking assertions in net80211
>      which are hindering to at lest get half of it race free from the start.
>      I tried to work around all this only to also observe the next item.
>
> (b) more so, rtw8821c_do_iqk() (for 8821ce) fails in a lot of times here, which
>      leads to a *cough* 6s delay between starting the mgd_prepare_tx()
>      and getting the actual frame out.
>      There are moments when it works, in 20-40/120-150 ms but I have not yet
>      looked into the differences (what leads to one failing and one
>      working).
>
>      If you turn rtw88 PHY debugging (0x8 on FreeBSD or Linux) on,
>      you can see lines similar (slightly adjusted here currently)
>      to these; where the counter is 300 the (300 * 20ms) timeout failures
>      happened and the rf_reg=0xabcde (n_iqk_fail(mask)==0x00000) are the
>      ones where things seem to have worked.
>
> [40558.969218] iqk counter=7   reload=0 do_iqk_cnt=154   n_iqk_fail(mask)=0x00000 rf_reg=0xabcde
> [40586.004212] iqk counter=300 reload=0 do_iqk_cnt=155   n_iqk_fail(mask)=0x000ea rf_reg=0xaeaea
> [41325.466166] iqk counter=6   reload=0 do_iqk_cnt=156   n_iqk_fail(mask)=0x00000 rf_reg=0xabcde
> [41804.767148] iqk counter=300 reload=0 do_iqk_cnt=157   n_iqk_fail(mask)=0x000ea rf_reg=0xaeaea
> [41826.729151] iqk counter=300 reload=0 do_iqk_cnt=158   n_iqk_fail(mask)=0x000ea rf_reg=0xaeaea
> [42751.157067] iqk counter=6   reload=0 do_iqk_cnt=159   n_iqk_fail(mask)=0x00000 rf_reg=0xabcde
> [42778.272059] iqk counter=300 reload=0 do_iqk_cnt=160   n_iqk_fail(mask)=0x000ea rf_reg=0xaeaea
> [43758.862997] iqk counter=6   reload=0 do_iqk_cnt=161   n_iqk_fail(mask)=0x00000 rf_reg=0xabcde
> [43786.057993] iqk counter=300 reload=0 do_iqk_cnt=162   n_iqk_fail(mask)=0x000ea rf_reg=0xaeaea
> [44722.416953] iqk counter=6   reload=0 do_iqk_cnt=163   n_iqk_fail(mask)=0x00000 rf_reg=0xabcde
> [45505.841872] iqk counter=300 reload=0 do_iqk_cnt=164   n_iqk_fail(mask)=0x000ea rf_reg=0xaeaea
> [45528.128872] iqk counter=300 reload=0 do_iqk_cnt=165   n_iqk_fail(mask)=0x000ea rf_reg=0xaeaea
> [46350.516810] iqk counter=6   reload=0 do_iqk_cnt=166   n_iqk_fail(mask)=0x00000 rf_reg=0xabcde
> [46895.590359] iqk counter=300 reload=0 do_iqk_cnt=167   n_iqk_fail(mask)=0x000ea rf_reg=0xaeaea
> [46916.526778] iqk counter=300 reload=0 do_iqk_cnt=168   n_iqk_fail(mask)=0x000ea rf_reg=0xaeaea
> [48190.225691] iqk counter=6   reload=0 do_iqk_cnt=169   n_iqk_fail(mask)=0x00000 rf_reg=0xabcde
> [48217.376689] iqk counter=300 reload=0 do_iqk_cnt=170   n_iqk_fail(mask)=0x000ea rf_reg=0xaeaea
> [49406.787608] iqk counter=6   reload=0 do_iqk_cnt=171   n_iqk_fail(mask)=0x00000 rf_reg=0xabcde
> [49433.853606] iqk counter=300 reload=0 do_iqk_cnt=172   n_iqk_fail(mask)=0x000ea rf_reg=0xaeaea
> [50226.350550] iqk counter=7   reload=0 do_iqk_cnt=173   n_iqk_fail(mask)=0x00000 rf_reg=0xabcde
> [51510.819466] iqk counter=300 reload=0 do_iqk_cnt=174   n_iqk_fail(mask)=0x000ea rf_reg=0xaeaea
> [51532.908461] iqk counter=300 reload=0 do_iqk_cnt=175   n_iqk_fail(mask)=0x000ea rf_reg=0xaeaea
> [52540.479405] iqk counter=6   reload=0 do_iqk_cnt=176   n_iqk_fail(mask)=0x00000 rf_reg=0xabcde
> [52955.240359] iqk counter=300 reload=0 do_iqk_cnt=177   n_iqk_fail(mask)=0x000ea rf_reg=0xaeaea
> [52976.144349] iqk counter=300 reload=0 do_iqk_cnt=178   n_iqk_fail(mask)=0x000ea rf_reg=0xaeaea
> [53836.870326] iqk counter=7   reload=0 do_iqk_cnt=179   n_iqk_fail(mask)=0x00000 rf_reg=0xabcde
> [54887.781217] iqk counter=300 reload=0 do_iqk_cnt=180   n_iqk_fail(mask)=0x000ea rf_reg=0xaeaea
> [54908.598250] iqk counter=300 reload=0 do_iqk_cnt=181   n_iqk_fail(mask)=0x000ea rf_reg=0xaeaea
> [55766.079171] iqk counter=6   reload=0 do_iqk_cnt=182   n_iqk_fail(mask)=0x00000 rf_reg=0xabcde
> [56984.879080] iqk counter=300 reload=0 do_iqk_cnt=183   n_iqk_fail(mask)=0x000ea rf_reg=0xaeaea
> [57005.691081] iqk counter=300 reload=0 do_iqk_cnt=184   n_iqk_fail(mask)=0x000ea rf_reg=0xaeaea
> [57748.083033] iqk counter=6   reload=0 do_iqk_cnt=185   n_iqk_fail(mask)=0x00000 rf_reg=0xabcde
>
>
> I will likely have to dive into this some more but I do not want it
> to further block the other rtw88/rtw89(/mt76) updates at this point
> as my other work for those seems to hold up and I'd love to get some
> in in time before 15.1-R.
>
> If anyone has the time/resources to help me debugging this issue on
> the 21ce and 22be chipsets, please reply here.  Otherwise it'll have to
> wait and I'll add a note to the man page (if I do not forget) for now.
>

Please let me know how I can help with 8821ce

rtw880@pci0:2:0:0:      class=0x028000 rev=0x00 hdr=0x00 vendor=0x10ec
device=0xc821 subvendor=0x1a3b subdevice=0x3040
    vendor     = 'Realtek Semiconductor Co., Ltd.'
    device     = 'RTL8821CE 802.11ac PCIe Wireless Network Adapter'
    class      = network

>
> Lots of health,
> /bz

>
> --
> Bjoern A. Zeeb                                                     r15:7