Bugzilla – Bug 718736
rtl8192ce: Wi-fi speed drops down after some heavy usage
Last modified: 2014-06-27 15:40:24 UTC
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:6.0.2) Gecko/20100101 Firefox/6.0.2 I have a lenovo x220 laptop here with Realtek wi-fi module. # lspci -nn | grep Real 03:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. RTL8188CE 802.11b/g/n WiFi Adapter [10ec:8176] (rev 01) I've noticed that it's speed drops down to approximately 1Mbit/s under heavy load. For exmaple if I start to download a torrent file or jsut do speedtest.net testing, firstly it transkmits data on my ISP maximum speed (about 20MBit/s), then, after few seconds, transmission rate goes down. It's not an ISP issue, cause on ethernet everything is o.k. Reproducible: Always Steps to Reproduce: 1. Start downloading a big file 2. Notice, how download speed decreases over time Actual Results: Speed is drastically slow Expected Results: Speed should not go down.
Please try the following: sudo /sbin/modprobe -rv rtl8192ce sudo /sbin/modprobe -v rtl8192ce ips=0 That will disable power save. Does it help?
(In reply to comment #1) > Please try the following: > > sudo /sbin/modprobe -rv rtl8192ce > sudo /sbin/modprobe -v rtl8192ce ips=0 > > > That will disable power save. Does it help? I've just tried it, no luck.
Running the standard 12.1 MS5 kernel (3.0.0-4-desktop) and connecting to speedtest.net, I get the following: Down Up 16.1 0.95 21.6 0.95 11.6 0.95 12.8 0.95 All numbers are in Mbps. As my ISP only guarantees 10 down and 1 up, I am getting full speed. This is on an 802.11n wireless connection to a Netgear WND3300 AP. When I use nerperf to connect to a server that is wired to the router, I get: TCP_MAERTS Test: 69.21 70.37 62.46 72.46 65.84 73.38 35.93 63.67 72.86 73.23 Results: max 73.38, min 35.93. Mean 65.94(10.71) TCP_STREAM Test: 87.31 86.94 87.95 88.68 88.97 88.59 88.16 89.34 72.27 89.29 Results: max 89.34, min 72.27. Mean 86.75(4.89) TCP_SENDFILE Test: 89.14 88.66 88.56 89.33 89.13 88.73 87.60 86.56 88.59 88.70 Results: max 89.33, min 86.56. Mean 88.50(0.79) A second run got TCP_MAERTS Test: 43.74 71.54 71.36 74.48 74.29 73.80 73.90 70.40 73.76 73.81 Results: max 74.48, min 43.74. Mean 70.11(8.89) TCP_STREAM Test: 88.51 89.75 72.16 89.55 89.54 88.58 88.97 89.47 88.92 88.09 Results: max 89.75, min 72.16. Mean 87.35(5.09) TCP_SENDFILE Test: 89.87 89.35 89.45 89.12 71.85 89.15 89.05 89.08 89.41 89.31 Results: max 89.87, min 71.85. Mean 87.56(5.24) MAERTS is receiving - the others are transmitting. Each of the individual measurements is a 10 second sample. What is your AP? What kind of connection? Is there any possibility of your setting up a local test like mine? Is there another computer on your network?
(In reply to comment #3) > What is your AP? What kind of connection? > > Is there any possibility of your setting up a local test like mine? Is there > another computer on your network? My AP is Asus WL520gc and connection is 802.11g (54MBit/sec) with WPA-Personal Authentication (I've tried WEP auth instead, no changes so far). I'm pretty sure that it's not an AP problem, for there are other devices connected to the AP and they do not have any problems. I have two more laptops (Lenovo u330 and Asus EEE PC Seashell, both runnnin OpenSuse 11.4) connected and a couple of android-based smartphones, all show stable maxed results on speedtest.net. I'll do the netperf test later today and post results here.
Here is what I get running netperf. The server is running on another laptop connected to the same AP. linux:/home/linux # netperf -H 192.168.0.5 -t TCP_SENDFILE -f M -D 1.0 TCP SENDFILE TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.0.5 (192.168.0.5) port 0 AF_INET : demo Interim result: 0.46 MBytes/s over 1.09 seconds Interim result: 0.42 MBytes/s over 1.00 seconds Interim result: 0.32 MBytes/s over 1.50 seconds Interim result: 0.52 MBytes/s over 1.02 seconds Interim result: 0.45 MBytes/s over 1.14 seconds Interim result: 0.50 MBytes/s over 1.19 seconds Interim result: 0.46 MBytes/s over 1.09 seconds Interim result: 0.45 MBytes/s over 1.11 seconds Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. MBytes/sec 87380 16384 16384 10.33 0.44 linux:/home/linux # netperf -H 192.168.0.5 -t TCP_STREAM -f M -D 1.0 MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.0.5 (192.168.0.5) port 0 AF_INET : demo Interim result: 0.49 MBytes/s over 1.68 seconds ending at 1316469853.493 Interim result: 0.55 MBytes/s over 1.03 seconds ending at 1316469854.523 Interim result: 0.50 MBytes/s over 1.09 seconds ending at 1316469855.613 Interim result: 0.44 MBytes/s over 1.14 seconds ending at 1316469856.751 Interim result: 0.61 MBytes/s over 1.05 seconds ending at 1316469857.799 Interim result: 0.54 MBytes/s over 1.13 seconds ending at 1316469858.926 Interim result: 0.51 MBytes/s over 1.08 seconds ending at 1316469860.007 Interim result: 0.54 MBytes/s over 1.18 seconds ending at 1316469861.187 Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. MBytes/sec 87380 16384 16384 11.32 0.47 linux:/home/linux # netperf -H 192.168.0.5 -t TCP_MAERTS -f M -D 1.0 MIGRATED TCP MAERTS TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.0.5 (192.168.0.5) port 0 AF_INET : demo Interim result: 0.12 MBytes/s over 1.00 seconds ending at 1316469867.041 Interim result: 0.11 MBytes/s over 1.05 seconds ending at 1316469868.089 Interim result: 0.15 MBytes/s over 1.06 seconds ending at 1316469869.145 Interim result: 0.11 MBytes/s over 1.29 seconds ending at 1316469870.437 Interim result: 0.11 MBytes/s over 1.01 seconds ending at 1316469871.443 Interim result: 0.14 MBytes/s over 1.00 seconds ending at 1316469872.444 Interim result: 0.11 MBytes/s over 1.23 seconds ending at 1316469873.674 Interim result: 0.13 MBytes/s over 1.24 seconds ending at 1316469874.910 Interim result: 0.13 MBytes/s over 1.03 seconds ending at 1316469875.940 Interim result: 0.11 MBytes/s over 1.19 seconds ending at 1316469877.125 Recv Send Send Socket Socket Message Elapsed Size Size Size Time Throughput bytes bytes bytes secs. MBytes/sec 87380 16384 16384 11.64 0.12
Here is same test but with server connected to the AP by ethernet: 1-st run: linux:/home/linux # netperf -H 192.168.0.100 -t TCP_STREAM -D 1.0 -l 100 MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.0.100 (192.168.0.100) port 0 AF_INET : demo Interim result: 26.59 10^6bits/s over 1.01 seconds ending at 1316470928.572 Interim result: 25.40 10^6bits/s over 1.05 seconds ending at 1316470929.620 Interim result: 26.18 10^6bits/s over 1.04 seconds ending at 1316470930.656 Interim result: 27.66 10^6bits/s over 1.06 seconds ending at 1316470931.713 Interim result: 28.67 10^6bits/s over 1.04 seconds ending at 1316470932.755 Interim result: 27.48 10^6bits/s over 1.05 seconds ending at 1316470933.809 Interim result: 28.99 10^6bits/s over 1.03 seconds ending at 1316470934.840 2-nd run: linux:/home/linux # netperf -H 192.168.0.100 -t TCP_STREAM -D 1.0 -l 10 MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0.0.0) port 0 AF_INET to 192.168.0.100 (192.168.0.100) port 0 AF_INET : demo Interim result: 4.68 10^6bits/s over 1.93 seconds ending at 1316471190.155 Interim result: 4.54 10^6bits/s over 1.04 seconds ending at 1316471191.195 Interim result: 4.92 10^6bits/s over 1.04 seconds ending at 1316471192.235 Interim result: 3.53 10^6bits/s over 1.37 seconds ending at 1316471193.608 Interim result: 3.41 10^6bits/s over 1.04 seconds ending at 1316471194.645 Interim result: 4.85 10^6bits/s over 1.11 seconds ending at 1316471195.753 Notice how on second run speed dropped down.
Is there anything else I can do to help diagnose the problem?
Dunno if that's needed, but still.. I run a live USB stick with 12.1 Milestone 5. > Linux 3.0.0-4-default i686 > openSUSE 12.1 Milestone 5 (i586)
FYI, I see the same issue running OpenSuse 11.4 with Thumbleweed updates (kernel-desktop 3.0.4-43.1 i586).
I managed to see the effect twice when using my 802.11g connection, but it is not easily reproduced. What I did see is that the TX performance is ~2 Mbps while RX is ~8 Mbps. Both should be in the 14 to 27 Mbps range. I have sent Email to the Chinese group that wrote the driver asking if their systems also show the same effect, and some questions regarding debugging.
don't play around with prios, it's for the developer
Verified it on 12.1 RC 1. The problem still persists.
Could you use wireshark on your other laptop to capture the traffic between rtl8192ce and the AP after the slowdown happens? That way we might be able to see why the slowdown happens.
I'd be happy to. Could you give me some more information on what exactly I need to do? (I've never used wireshark before). (In reply to comment #13) > Could you use wireshark on your other laptop to capture the traffic between > rtl8192ce and the AP after the slowdown happens? That way we might be able to > see why the slowdown happens.
You will need to install wireshark and start it as root using 'kdesu wireshark' if you use KDE or 'gnomesu wireshark' if you use Gnome. You can then select the wireless device to capture the packets from the air. Save the file and add it to this bug. If wireshark does not collect any packets, then you might try the program kismet. It may work when wireshark does not. The file it produces is Kismet*.pcap.
(In reply to comment #15) > You will need to install wireshark and start it as root using 'kdesu wireshark' > if you use KDE or 'gnomesu wireshark' if you use Gnome. You can then select the > wireless device to capture the packets from the air. Save the file and add it > to this bug. > > If wireshark does not collect any packets, then you might try the program > kismet. It may work when wireshark does not. The file it produces is > Kismet*.pcap. Am I correctly understand that I need to run wireshark not on the laptop which have the problem, but on another laptop connected to the same AP?
Yes. That way we see what is on the air and be able to see any delays in ACKs, etc. The second laptop does not need to be connected to any AP - it just needs to have a wireless interface run in monitor mode.
I have the same issue after upgrading from 11.4 to 12.1 on my HP 530. But with other card and other driver: lspci -nn | grep Wi 10:00.0 Network controller [0280]: Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection [8086:4222] (rev 02) I tried to boot from KDE Live USB Stick and get the same issue. What kind of traffic should I capture with wireshark?
As it happens for you with Intel hardware, some problem with either AP or the wireless MAC layer seems to be indicated, not the wireless driver. When the slowdown occurs, a few frames of the traffic would be helpful to check what the actual transmission rate is at that point.
Wireshark on other laptop doesn't see no traffic between my OpenSuse box and router. Maybe the reason is that I don't use AP but router with WPA2 or that wireshark is installed on Windows 7? Can traffic captured on my laptop be helpful? It cant' be the problem on the router: 1) The issue happened right after update 2) Other laptop works on full-speed Wi-Fi
Created attachment 467966 [details] Wireshark dump captured on laptop with issue
That wireshark dump shows a great many packets with TCP checksum errors. The resulting retransmits are likely the cause of the slowdown. I need to investigate more, but I am not sure if either mac80211 or rtl8192ce do anything but pass the TCP info without changing any part of it.
How could I give you more information?
I'm not sure about the capture. I don't see any of the wireless data in them, only the TCP data. I'm also not sure of the details for the Intel driver. You might try the compat-wireless package to see if that helps.
I couldn't find compat-wireless in 12.1 repos. So I switched to Tumbleweed using this (http://en.opensuse.org/SDB:Change_from_12.1_to_Tumbleweed) tutorial, installed compat-wireless-kmp-desktop and compat-wireless-scripts/. After reboot the issue didn't dissapear. Compat-wireless has unresolved dependency to ksym and I just ignored it.
I've tested the issue on 3.2.0 Kernel and it's still there.
Sorry for neglecting this bug for a long time. 12.1 has gone out of support in the mean time. Is the issue still present in 12.3 or newer?
Please re-open if you still see this in 12.3 or newer. Thank you.