Re: 2.6.38: rt2800usb: high latency (1000ms)?

From: Justin Piszcz
Date: Wed Apr 13 2011 - 13:58:00 EST

On Wed, 13 Apr 2011, Daniel Halperin wrote:

Ugh! Couldn't you configure the stupid mailing list filter to only
drop rich text mails that have [PATCH or [RFC or [RFT in the subject,
e.g.? Original mail below.

(sorry for the resend, Justin and Ivo).


On Wed, Apr 13, 2011 at 9:23 AM, Daniel Halperin
<dhalperi@xxxxxxxxxxxxxxxxx> wrote:

On Wed, Apr 13, 2011 at 9:01 AM, Justin Piszcz <jpiszcz@xxxxxxxxxxxxxxx> wrote:

Can you try disabling powersaving?
iwconfig wlan0 power off

Wow! That was it, now its interactive again.

64 bytes from wireless-host ( icmp_req=1 ttl=64 time=0.581 ms
64 bytes from wireless-host ( icmp_req=2 ttl=64 time=0.647 ms

Thanks, so its recommend to keep this off then, can that be set as the driver default?

That's a bad idea, what you're seeing is likely completely a red herring. Wi-Fi power saving mode saves energy by putting the RF hardware most of the time. This is a Good Thing.
Power save is designed to kick in only when the load is very slow; the client's network stack should automatically disable power save during times of high load, e.g., during a download or a VoIP call. You should run some tests to see if this is actually occurring; there may be a bug in the rtl implementation.
The real problem here is that your ping test has invalid assumptions. One packet/second is not enough load to disable Wi-Fi power save, so you should not see interactive ping times. Again, this is a good thing and something I doubt you want to disable! (Assuming that RTL's implementation isn't fundamentally broken elsewhere) It certainly should NOT be the driver default.
Try again with sudo ping -i 0.01 -s 1400 (e.g., to ping with large packets every 10 ms); this should probably trigger the logic that automatically disables the power saving mode. Or try pinging while doing a 1 Mbit UDP transfer (e.g., with iperf).


When powersave is enabled, it is very jumpy, I've used satellite comms before
and (~600ms-1200ms was more smooth) as it did not jump around as much. The
application is just a standalone desktop with minimal activity for the majority
of the time, maybe thats why..

With powersave disabled, I now see 0% packet loss (802.11n) and low ping
times, this looks like the proper solution for the wireless USB device I
am using. By the way, is it possible/are there wireless USB devices out there
that support wake on wireless lan (WOWL?

Your ping command with power off:
1408 bytes from server ( icmp_req=539 ttl=64 time=1.07 ms
1408 bytes from server ( icmp_req=540 ttl=64 time=1.31 ms
1408 bytes from server ( icmp_req=541 ttl=64 time=1.07 ms
1408 bytes from server ( icmp_req=542 ttl=64 time=1.26 ms

Your ping command with power on:
1408 bytes from server ( icmp_req=649 ttl=64 time=1.80 ms
1408 bytes from server ( icmp_req=650 ttl=64 time=1.85 ms
1408 bytes from server ( icmp_req=651 ttl=64 time=2.86 ms
1408 bytes from server ( icmp_req=652 ttl=64 time=1.46 ms

You are correct, if there is a lot of traffic, its good, but if the system
is relatively idle and all that's going on is an SSH session, there is horrible

So the fix/workaround, for Debian-based distributions (if you come across this problem):

File: /etc/network/interfaces

-- snip --

# Wireless
auto wlan0
iface wlan0 inet dhcp
wpa-ssid your-ssid
wpa-psk your-private-key
post-up /sbin/iwconfig wlan0 power off

-- snip --