2020-12-25 11:04:58

by Klaus Mueller

[permalink] [raw]
Subject: RTL8821CE: CTRL-EVENT-BEACON-LOSS and connection loss

Hello!

I'm having a
04:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8821CE
802.11ac PCIe Wireless Network Adapter
Subsystem: AzureWave Device 3041
Flags: bus master, fast devsel, latency 0, IRQ 71
I/O ports at d000 [size=256]
Memory at f7600000 (64-bit, non-prefetchable) [size=64K]
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [70] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting
Capabilities: [148] Device Serial Number xxxx...
Capabilities: [158] Latency Tolerance Reporting
Capabilities: [160] L1 PM Substates
Capabilities: [170] Precision Time Measurement
Capabilities: [17c] Vendor Specific Information: ID=0003 Rev=1
Len=054 <?>

or PCI-IDs
04:00.0 0280: 10ec:c821
Subsystem: 1a3b:3041

It's running in 2.4 GHz / 40 MHz / Station EAPTLS / WPA-EAP-SHA256 mode.
wpa_supplicant 2.9 / no networkmanager. Kernel version is 5.10.1.



What are the problems?
- lots of "CTRL-EVENT-BEACON-LOSS" entries in wpa_supplicant.log
- very often loosing connection (CTRL-EVENT-DISCONNECTED)


There are 3 drivers:
[1] https://github.com/tomaspinho/rtl8821ce
[2] Driver in Kernel 5.10.1 (not really considered)
[3] Driver from https://github.com/lwfinger/rtw88

Throughput is measured using netperf.


Let's go into details. I will distinguish roughly two situations: very
good and mostly bad radio reception condition.



1. Very good radio reception condition
--------------------------------------
(~ 1 m distance between STA and AP and nothing in between).

=> no problem. Driver [1] and [3] are working as they should. Throughput
is about 12 MiB/s Rx and 13 MiB/s with both drivers.

on idle mode:
# iw dev wlan0 scan | egrep "signal|freq|SSID:"
freq: 2412
signal: -21.00 dBm
SSID: mysta

on load: ~ -2[23] dBm




2. Mostly bad radio reception conditions
-----------------------------------------
Driver [1] doesn't work at all or pretty bad.
Driver [3] connects pretty fast (mostly as normal).

directly after reboot under bad conditions
# iw dev wlan0 scan | egrep "signal|freq|SSID:"
freq: 2412
signal: -7[268].00 dBm
SSID: mysta

=> No "problems" can be seen. Throughput is about 2 MiB/s.

Now, the notebook is taken to good radio reception condition. It
performs as expected - no problem.

Now, bringing back the notebook again to the bad conditions:


# iw dev wlan0 scan | egrep "signal|freq|SSID:"
freq: 2412
signal: -25.00 dBm
SSID: mysta

=> Driver doesn't realize changed conditions! Frequent
CTRL-EVENT-BEACON-LOSS events are coming up. If you set up a ping, the
CTRL-EVENT-BEACON-LOSS events (mostly) disappear now. During netperf,
they are disappearing completely. Switching off netperf and ping, the
CTRL-EVENT-BEACON-LOSS events are coming up again and even complete
connection loss appears.

Loosing connection at this point is fatal, because reconnection is very
hard and a connection is lost again after few seconds. Therefore, you
have to bring the notebook back again to the good conditions to get the
connection working again.

=> The driver doesn't seem to recognize the bad signal strength!



Conclusion at the moment:
=========================

- Driver seems to always remember best ever seen signal quality and
ignores reduced quality.
- Power save seems not to be the problem (I can see BEACON_LOSS events
with or without power management enabled).
- Driver doesn't like idle mode on bad conditions if it saw better
conditions before. As long as there is load on the device, the
connection persists and no or seldom CTRL-EVENT-BEACON-LOSS events can
be seen. If there is no more traffic, CTRL-EVENT-BEACON-LOSS events are
coming up frequently and the connection will be lost after more or less
short time.



I would be glad if you could find a solution. Don't hesitate if you have
further questions. I've no problem to test some patches.


Thanks
Klaus


2020-12-29 01:44:38

by Klaus Mueller

[permalink] [raw]
Subject: Re: RTL8821CE: CTRL-EVENT-BEACON-LOSS and connection loss

Hello,



I hoped, that this patch [1] could have fixed the problem - but it
didn't. After doing a scan, there can be seen this error message in
wpa_supplicant.log:



nl80211: send_and_recv->nl_recvmsgs failed: -33



After that, the CTRL-EVENT-BEACON-LOSS have been coming up again and
short time later, the connection has been broken (but could be
reconnected again and disconnected again and so on). Pretty unusable.





Thanks

Klaus



[1] https://marc.info/?l=linux-wireless&m=160914401525592&w=2

2021-03-15 21:50:54

by Klaus Mueller

[permalink] [raw]
Subject: Re: RTL8821CE: CTRL-EVENT-BEACON-LOSS and connection loss

Hi,

I retested the version from https://github.com/lwfinger/rtw88 on linux
5.10.16 - starting with the commits on Mar 9, 2021. It now seems to work
pretty fine even on 2.4 GHz / 40 MHz! Thanks to Realtek for their support!

Additional credit goes to Larry Finger, who thankfully provides this
additional source tree to make the progress of the driver accessible to
a lot more kernels than the actual one!

Thanks
Klaus



On 25.12.20 at 11:55 Klaus Mueller wrote:
> Hello!
>
> I'm having a
> 04:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8821CE
> 802.11ac PCIe Wireless Network Adapter
> Subsystem: AzureWave Device 3041
> Flags: bus master, fast devsel, latency 0, IRQ 71
> I/O ports at d000 [size=256]
> Memory at f7600000 (64-bit, non-prefetchable) [size=64K]
> Capabilities: [40] Power Management version 3
> Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
> Capabilities: [70] Express Endpoint, MSI 00
> Capabilities: [100] Advanced Error Reporting
> Capabilities: [148] Device Serial Number xxxx...
> Capabilities: [158] Latency Tolerance Reporting
> Capabilities: [160] L1 PM Substates
> Capabilities: [170] Precision Time Measurement
> Capabilities: [17c] Vendor Specific Information: ID=0003 Rev=1
> Len=054 <?>
>