2010-12-06 08:51:41

by Wade Fitzpatrick

[permalink] [raw]
Subject: ar9170usb slow / poor performance

I have 2 USB wireless dongles:
- Generic Realtek RTL8187 using rtl8187 driver
- Netgear WN111v2 [Atheros AR9001-U(2)NG] using ar9170usb driver

Performance of the Netgear has degraded severely since updating to Arch
Linux kernel 2.6.36.1-3 from 2.6.35.4-2, also reported by
http://article.gmane.org/gmane.linux.kernel.wireless.general/59911

Note that I only installed and enabled wlan1 because wlan0 was
performing so badly.

# lsusb -v -d 0bda:8187

Bus 002 Device 005: ID 0bda:8187 Realtek Semiconductor Corp. RTL8187
Wireless Adapter
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x0bda Realtek Semiconductor Corp.
idProduct 0x8187 RTL8187 Wireless Adapter
bcdDevice 1.00
iManufacturer 1 Manufacturer_Realtek_RTL8187_
iProduct 2 RTL8187_Wireless_LAN_Adapter
iSerial 3 001AEF0050E6
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 39
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 4 Wireless Network Card
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 0 (Defined at Interface level)
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 5 Bulk-IN,Bulk-OUT,Bulk-OUT
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
bNumConfigurations 1
Device Status: 0x0000
(Bus Powered)

# lsusb -v -d 0846:9001

Bus 002 Device 004: ID 0846:9001 NetGear, Inc. WN111(v2) RangeMax Next
Wireless [Atheros AR9001U-(2)NG]
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 255 Vendor Specific Subclass
bDeviceProtocol 255 Vendor Specific Protocol
bMaxPacketSize0 64
idVendor 0x0846 NetGear, Inc.
idProduct 0x9001 WN111(v2) RangeMax Next Wireless [Atheros
AR9001U-(2)NG]
bcdDevice 1.06
iManufacturer 16 ATHER
iProduct 32 USB2.0 WLAN
iSerial 48 12345
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 46
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 4
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x04 EP 4 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 1
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 255 Vendor Specific Subclass
bDeviceProtocol 255 Vendor Specific Protocol
bMaxPacketSize0 64
bNumConfigurations 1
Device Status: 0x0000
(Bus Powered)

# iwconfig
lo no wireless extensions.

eth0 no wireless extensions.

wlan0 IEEE 802.11bgn ESSID:"waddles"
Mode:Managed Frequency:2.412 GHz Access Point:
00:22:3F:07:42:F3
Bit Rate=117 Mb/s Tx-Power=20 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=34/70 Signal level=-76 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

wlan1 IEEE 802.11bg ESSID:"waddles"
Mode:Managed Frequency:2.412 GHz Access Point:
00:22:3F:07:42:F3
Bit Rate=36 Mb/s Tx-Power=20 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=44/70 Signal level=-66 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0

tun0 no wireless extensions.

My network looks like this:

Linux Router/AP DSL Modem
(wlan0) 192.168.1.57 ---/--- 192.168.1.1 --- 192.168.0.1 --- Internet
(wlan1) 192.168.1.4 ---/---

Between the router and the modem is an ethernet crossover cable.

# ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=63 time=2.23 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=63 time=2.11 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=63 time=1.88 ms
^C
--- 192.168.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 1.882/2.076/2.235/0.146 ms

# route add -host 192.168.0.1 gw 192.168.1.1 dev wlan0

# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt
Iface
192.168.0.1 192.168.1.1 255.255.255.255 UGH 0 0 0
wlan0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0
wlan1
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0
wlan0
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0
wlan1

# ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=63 time=158 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=63 time=168 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=63 time=162 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=63 time=170 ms
64 bytes from 192.168.0.1: icmp_seq=5 ttl=63 time=178 ms
64 bytes from 192.168.0.1: icmp_seq=6 ttl=63 time=166 ms
64 bytes from 192.168.0.1: icmp_seq=7 ttl=63 time=166 ms
64 bytes from 192.168.0.1: icmp_seq=8 ttl=63 time=155 ms
64 bytes from 192.168.0.1: icmp_seq=9 ttl=63 time=434 ms
64 bytes from 192.168.0.1: icmp_seq=10 ttl=63 time=154 ms
64 bytes from 192.168.0.1: icmp_seq=11 ttl=63 time=174 ms
64 bytes from 192.168.0.1: icmp_seq=12 ttl=63 time=161 ms
64 bytes from 192.168.0.1: icmp_seq=13 ttl=63 time=147 ms
64 bytes from 192.168.0.1: icmp_seq=14 ttl=63 time=170 ms
64 bytes from 192.168.0.1: icmp_seq=15 ttl=63 time=161 ms
64 bytes from 192.168.0.1: icmp_seq=16 ttl=63 time=190 ms
64 bytes from 192.168.0.1: icmp_seq=17 ttl=63 time=218 ms
64 bytes from 192.168.0.1: icmp_seq=18 ttl=63 time=166 ms
64 bytes from 192.168.0.1: icmp_seq=19 ttl=63 time=514 ms
64 bytes from 192.168.0.1: icmp_seq=20 ttl=63 time=177 ms
64 bytes from 192.168.0.1: icmp_seq=21 ttl=63 time=144 ms
64 bytes from 192.168.0.1: icmp_seq=22 ttl=63 time=191 ms
64 bytes from 192.168.0.1: icmp_seq=23 ttl=63 time=175 ms
64 bytes from 192.168.0.1: icmp_seq=24 ttl=63 time=156 ms
64 bytes from 192.168.0.1: icmp_seq=25 ttl=63 time=947 ms
64 bytes from 192.168.0.1: icmp_seq=26 ttl=63 time=1833 ms
64 bytes from 192.168.0.1: icmp_seq=27 ttl=63 time=2196 ms
64 bytes from 192.168.0.1: icmp_seq=28 ttl=63 time=1542 ms
64 bytes from 192.168.0.1: icmp_seq=29 ttl=63 time=816 ms
64 bytes from 192.168.0.1: icmp_seq=30 ttl=63 time=3045 ms
64 bytes from 192.168.0.1: icmp_seq=31 ttl=63 time=3181 ms
64 bytes from 192.168.0.1: icmp_seq=32 ttl=63 time=2287 ms
64 bytes from 192.168.0.1: icmp_seq=33 ttl=63 time=1496 ms
64 bytes from 192.168.0.1: icmp_seq=34 ttl=63 time=687 ms
64 bytes from 192.168.0.1: icmp_seq=35 ttl=63 time=173 ms
^C
--- 192.168.0.1 ping statistics ---
35 packets transmitted, 35 received, 0% packet loss, time 34037ms
rtt min/avg/max/mdev = 144.678/653.604/3181.758/855.953 ms, pipe 4

NOTE --- The higher ping times occurred when downloading a 39kB image file.

# route del -host 192.168.0.1 gw 192.168.1.1 dev wlan0

# ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=63 time=2.37 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=63 time=2.10 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=63 time=1.96 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=63 time=2.38 ms
^C
--- 192.168.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 1.964/2.206/2.388/0.187 ms

I have also tried using the carl9170 driver (2010_12_02) with
compat-wireless and carl9170-fw (1.9.1-1) but I found 'iwconfig' would
segfault when it tried to display ath0.

Can somebody help me debug it further please?


2010-12-06 13:14:47

by Christian Lamparter

[permalink] [raw]
Subject: Re: ar9170usb slow / poor performance

On Monday 06 December 2010 09:51:34 Wade Fitzpatrick wrote:
> I have 2 USB wireless dongles:
> - Generic Realtek RTL8187 using rtl8187 driver
> - Netgear WN111v2 [Atheros AR9001-U(2)NG] using ar9170usb driver
>
> Performance of the Netgear has degraded severely since updating to Arch
> Linux kernel 2.6.36.1-3 from 2.6.35.4-2, also reported by
> http://article.gmane.org/gmane.linux.kernel.wireless.general/59911

here's a list of all changes to ar9170usb during 2.6.35-2.6.36:

git log v2.6.35..v2.6.36 --format=oneline drivers/net/wireless/ath/ar9170/ ->
5db5584441c drivers/net/wireless: Restore upper case words in wiphy_<level> messages
a55427e8284 ar9170: add get_survey callback in order to get channel noise
c96c31e499b drivers/net/wireless: Use wiphy_<level>

I don't think any of these changes would cause such problems.

> # iwconfig
Don't use iwconfig. iwconfig and other tools like iwlist, iwspy and
iwevent are obsolete and deprecated.

What you want is: "iw dev wlanX link" instead.
<http://wireless.kernel.org/en/users/Documentation/iw/replace-iwconfig>
<http://wireless.kernel.org/en/users/Documentation/iw>
> wlan0 IEEE 802.11bgn ESSID:"waddles"
> Mode:Managed Frequency:2.412 GHz Access Point: 00:22:3F:07:42:F3
> Bit Rate=117 Mb/s Tx-Power=20 dBm
> Link Quality=34/70 Signal level=-76 dBm
117 MBits/s, so ar9170usb? must be sending with 802.11n MCS rates.

> wlan1 IEEE 802.11bg ESSID:"waddles"
> Mode:Managed Frequency:2.412 GHz Access Point: 00:22:3F:07:42:F3
> Bit Rate=36 Mb/s Tx-Power=20 dBm
> Link Quality=44/70 Signal level=-66 dBm
where as rtl8187 only sticks to b/g rates.

for a fair comparison, I would recommend that both drivers should
stick to b/g. So you could either disable minstrel_ht, or patch
the driver (patch attached... just scroll down).

Or is it the other way round and ar9170usb is wlan1?
> I have also tried using the carl9170 driver (2010_12_02) with
> compat-wireless and carl9170-fw (1.9.1-1) but I found 'iwconfig' would
> segfault when it tried to display ath0.
ath0? neither ar9170usb nor carl9170 (in fact no mac80211 driver)
names the interface "ath0". Only the original vendor driver "otus"
did that.

Regards,
Chr

---
diff --git a/drivers/net/wireless/ath/ar9170/main.c b/drivers/net/wireless/ath/ar9170/main.c
index 32bf79e..cb2d1a7 100644
--- a/drivers/net/wireless/ath/ar9170/main.c
+++ b/drivers/net/wireless/ath/ar9170/main.c
@@ -145,7 +145,7 @@ static struct ieee80211_channel ar9170_5ghz_chantable[] = {

#define AR9170_HT_CAP \
{ \
- .ht_supported = true, \
+ .ht_supported = false, \
.cap = IEEE80211_HT_CAP_MAX_AMSDU | \
IEEE80211_HT_CAP_SUP_WIDTH_20_40 | \
IEEE80211_HT_CAP_SGI_40 | \

2010-12-06 15:15:38

by Wade Fitzpatrick

[permalink] [raw]
Subject: Re: ar9170usb slow / poor performance

Thanks for the response, Christian. Here is what I am seeing now, using
ar9170usb from compat-wireless (2010_12_02):


usb 2-5: new high speed USB device using ehci_hcd and address 5
usb 2-5: reset high speed USB device using ehci_hcd and address 5
usbcore: registered new interface driver ar9170usb
arusb_lnx: module is from the staging directory, the quality is unknown,
you have been warned.
arusb - version 0.0.0.999
usbcore: registered new interface driver Otus
ath: EEPROM regdomain: 0x0
ath: EEPROM indicates default country code should be used
ath: doing EEPROM country->regdmn map search
ath: country maps to regdmn code: 0x3a
ath: Country alpha2 being used: US
ath: Regpair used: 0x3a
ieee80211 phy1: Selected rate control algorithm 'minstrel_ht'
Registered led device: ar9170-phy1::tx
Registered led device: ar9170-phy1::assoc
usb 2-5: Atheros AR9170 is registered as 'phy1'


# iw dev wlan0 link
Connected to 00:22:3f:07:42:f3 (on wlan0)
SSID: waddles
freq: 2412
RX: 2627575 bytes (16028 packets)
TX: 127342 bytes (600 packets)
signal: -62 dBm
tx bitrate: 54.0 MBit/s
# iw dev wlan1 link
Connected to 00:22:3f:07:42:f3 (on wlan1)
SSID: waddles
freq: 2412
RX: 6208 bytes (43 packets)
TX: 522 bytes (5 packets)
signal: -61 dBm
tx bitrate: 6.5 MBit/s MCS 0
# iw event -f
wlan1 (phy #1): deauth 00:22:3f:07:42:f3 -> 00:22:3f:8d:7b:05 reason 2:
Previous authentication no longer valid [frame: c0 00 40 01 00 22 3f 8d
7b 05 00 22 3f 07 42 f3 00 22 3f 07 42 f3 70 00 02 00]
wlan1 (phy #1): disconnected (by AP) reason: 2: Previous authentication
no longer valid
wlan1 (phy #1): scan started
wlan1 (phy #1): scan finished: 2412 2417 2422 2427 2432 2437 2442 2447
2452 2457 2462, ""
wlan1 (phy #1): auth 00:22:3f:07:42:f3 -> 00:22:3f:8d:7b:05 status: 0:
Successful [frame: b0 00 40 01 00 22 3f 8d 7b 05 00 22 3f 07 42 f3 00 22
3f 07 42 f3 00 00 00 00 02 00 00 00]
wlan1: new station 00:22:3f:07:42:f3
wlan1 (phy #1): assoc 00:22:3f:07:42:f3 -> 00:22:3f:8d:7b:05 status: 0:
Successful [frame: 10 00 40 01 00 22 3f 8d 7b 05 00 22 3f 07 42 f3 00 22
3f 07 42 f3 10 00 31 04 00 00 03 c0 01 08 82 84 8b 0c 12 96 18 24 32 04
30 48 60 6c dd 18 00 50 f2 02 01 01 82 00 03 a4 00 00 27 a4 00 00 42 43
5e 00 62 32 2f 00 dd 09 00 03 7f 01 01 00 00 ff 7f dd 0a 00 03 7f 04 01
00 00 00 00 00 dd 1e 00 90 4c 33 4c 10 1b ff ff 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 2d 1a 4c 10 1b ff ff 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 dd 1a 00 90 4c 34 01
00 1b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3d 16 01
00 1b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
wlan1 (phy #1): connected to 00:22:3f:07:42:f3
wlan1 (phy #1): deauth 00:22:3f:07:42:f3 -> 00:22:3f:8d:7b:05 reason 2:
Previous authentication no longer valid [frame: c0 00 40 01 00 22 3f 8d
7b 05 00 22 3f 07 42 f3 00 22 3f 07 42 f3 70 00 02 00]
wlan1 (phy #1): disconnected (by AP) reason: 2: Previous authentication
no longer valid
wlan1 (phy #1): scan started
wlan1 (phy #1): scan finished: 2412 2417 2422 2427 2432 2437 2442 2447
2452 2457 2462, ""
wlan1 (phy #1): auth 00:22:3f:07:42:f3 -> 00:22:3f:8d:7b:05 status: 0:
Successful [frame: b0 00 40 01 00 22 3f 8d 7b 05 00 22 3f 07 42 f3 00 22
3f 07 42 f3 00 00 00 00 02 00 00 00]
wlan1: new station 00:22:3f:07:42:f3
wlan1 (phy #1): assoc 00:22:3f:07:42:f3 -> 00:22:3f:8d:7b:05 status: 0:
Successful [frame: 10 00 40 01 00 22 3f 8d 7b 05 00 22 3f 07 42 f3 00 22
3f 07 42 f3 10 00 31 04 00 00 03 c0 01 08 82 84 8b 0c 12 96 18 24 32 04
30 48 60 6c dd 18 00 50 f2 02 01 01 82 00 03 a4 00 00 27 a4 00 00 42 43
5e 00 62 32 2f 00 dd 09 00 03 7f 01 01 00 00 ff 7f dd 0a 00 03 7f 04 01
00 00 00 00 00 dd 1e 00 90 4c 33 4c 10 1b ff ff 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 2d 1a 4c 10 1b ff ff 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 dd 1a 00 90 4c 34 01
00 1b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3d 16 01
00 1b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00]
wlan1 (phy #1): connected to 00:22:3f:07:42:f3
wlan1 (phy #1): deauth 00:22:3f:07:42:f3 -> 00:22:3f:8d:7b:05 reason 2:
Previous authentication no longer valid [frame: c0 00 40 01 00 22 3f 8d
7b 05 00 22 3f 07 42 f3 00 22 3f 07 42 f3 70 00 02 00]
wlan1 (phy #1): disconnected (by AP) reason: 2: Previous authentication
no longer valid

The wlan1 link is unusable. If I create a host route and ping the modem
over wlan1, all I get is 'Destination Host Unreachable' messages.

Note that wlan0 (the RTL8187) also has updated drivers but is stable
throughout this.

Any more suggestions?

Regards,
Wade.

On 07/12/10 00:14, Christian Lamparter wrote:
> On Monday 06 December 2010 09:51:34 Wade Fitzpatrick wrote:
>> I have 2 USB wireless dongles:
>> - Generic Realtek RTL8187 using rtl8187 driver
>> - Netgear WN111v2 [Atheros AR9001-U(2)NG] using ar9170usb driver
>>
>> Performance of the Netgear has degraded severely since updating to Arch
>> Linux kernel 2.6.36.1-3 from 2.6.35.4-2, also reported by
>> http://article.gmane.org/gmane.linux.kernel.wireless.general/59911
> here's a list of all changes to ar9170usb during 2.6.35-2.6.36:
>
> git log v2.6.35..v2.6.36 --format=oneline drivers/net/wireless/ath/ar9170/ ->
> 5db5584441c drivers/net/wireless: Restore upper case words in wiphy_<level> messages
> a55427e8284 ar9170: add get_survey callback in order to get channel noise
> c96c31e499b drivers/net/wireless: Use wiphy_<level>
>
> I don't think any of these changes would cause such problems.
>
>> # iwconfig
> Don't use iwconfig. iwconfig and other tools like iwlist, iwspy and
> iwevent are obsolete and deprecated.
>
> What you want is: "iw dev wlanX link" instead.
> <http://wireless.kernel.org/en/users/Documentation/iw/replace-iwconfig>
> <http://wireless.kernel.org/en/users/Documentation/iw>
>> wlan0 IEEE 802.11bgn ESSID:"waddles"
>> Mode:Managed Frequency:2.412 GHz Access Point: 00:22:3F:07:42:F3
>> Bit Rate=117 Mb/s Tx-Power=20 dBm
>> Link Quality=34/70 Signal level=-76 dBm
> 117 MBits/s, so ar9170usb? must be sending with 802.11n MCS rates.
>
>> wlan1 IEEE 802.11bg ESSID:"waddles"
>> Mode:Managed Frequency:2.412 GHz Access Point: 00:22:3F:07:42:F3
>> Bit Rate=36 Mb/s Tx-Power=20 dBm
>> Link Quality=44/70 Signal level=-66 dBm
> where as rtl8187 only sticks to b/g rates.
>
> for a fair comparison, I would recommend that both drivers should
> stick to b/g. So you could either disable minstrel_ht, or patch
> the driver (patch attached... just scroll down).
>
> Or is it the other way round and ar9170usb is wlan1?
>> I have also tried using the carl9170 driver (2010_12_02) with
>> compat-wireless and carl9170-fw (1.9.1-1) but I found 'iwconfig' would
>> segfault when it tried to display ath0.
> ath0? neither ar9170usb nor carl9170 (in fact no mac80211 driver)
> names the interface "ath0". Only the original vendor driver "otus"
> did that.
>
> Regards,
> Chr
>
> ---
> diff --git a/drivers/net/wireless/ath/ar9170/main.c b/drivers/net/wireless/ath/ar9170/main.c
> index 32bf79e..cb2d1a7 100644
> --- a/drivers/net/wireless/ath/ar9170/main.c
> +++ b/drivers/net/wireless/ath/ar9170/main.c
> @@ -145,7 +145,7 @@ static struct ieee80211_channel ar9170_5ghz_chantable[] = {
>
> #define AR9170_HT_CAP \
> { \
> - .ht_supported = true, \
> + .ht_supported = false, \
> .cap = IEEE80211_HT_CAP_MAX_AMSDU | \
> IEEE80211_HT_CAP_SUP_WIDTH_20_40 | \
> IEEE80211_HT_CAP_SGI_40 | \

2010-12-06 09:39:28

by Mohammed Shafi

[permalink] [raw]
Subject: Re: ar9170usb slow / poor performance

On Mon, Dec 6, 2010 at 2:21 PM, Wade Fitzpatrick
<[email protected]> wrote:
> I have 2 USB wireless dongles:
> ?- Generic Realtek RTL8187 using rtl8187 driver
> ?- Netgear WN111v2 [Atheros AR9001-U(2)NG] using ar9170usb driver
>
> Performance of the Netgear has degraded severely since updating to Arch
> Linux kernel 2.6.36.1-3 from 2.6.35.4-2, also reported by
> http://article.gmane.org/gmane.linux.kernel.wireless.general/59911
>
> Note that I only installed and enabled wlan1 because wlan0 was performing so
> badly.
>
> # lsusb -v -d 0bda:8187
>
> Bus 002 Device 005: ID 0bda:8187 Realtek Semiconductor Corp. RTL8187
> Wireless Adapter
> Device Descriptor:
> ?bLength ? ? ? ? ? ? ? ?18
> ?bDescriptorType ? ? ? ? 1
> ?bcdUSB ? ? ? ? ? ? ? 2.00
> ?bDeviceClass ? ? ? ? ? ?0 (Defined at Interface level)
> ?bDeviceSubClass ? ? ? ? 0
> ?bDeviceProtocol ? ? ? ? 0
> ?bMaxPacketSize0 ? ? ? ?64
> ?idVendor ? ? ? ? ? 0x0bda Realtek Semiconductor Corp.
> ?idProduct ? ? ? ? ?0x8187 RTL8187 Wireless Adapter
> ?bcdDevice ? ? ? ? ? ?1.00
> ?iManufacturer ? ? ? ? ? 1 Manufacturer_Realtek_RTL8187_
> ?iProduct ? ? ? ? ? ? ? ?2 RTL8187_Wireless_LAN_Adapter
> ?iSerial ? ? ? ? ? ? ? ? 3 001AEF0050E6
> ?bNumConfigurations ? ? ?1
> ?Configuration Descriptor:
> ? ?bLength ? ? ? ? ? ? ? ? 9
> ? ?bDescriptorType ? ? ? ? 2
> ? ?wTotalLength ? ? ? ? ? 39
> ? ?bNumInterfaces ? ? ? ? ?1
> ? ?bConfigurationValue ? ? 1
> ? ?iConfiguration ? ? ? ? ?4 Wireless Network Card
> ? ?bmAttributes ? ? ? ? 0x80
> ? ? ?(Bus Powered)
> ? ?MaxPower ? ? ? ? ? ? ?500mA
> ? ?Interface Descriptor:
> ? ? ?bLength ? ? ? ? ? ? ? ? 9
> ? ? ?bDescriptorType ? ? ? ? 4
> ? ? ?bInterfaceNumber ? ? ? ?0
> ? ? ?bAlternateSetting ? ? ? 0
> ? ? ?bNumEndpoints ? ? ? ? ? 3
> ? ? ?bInterfaceClass ? ? ? ? 0 (Defined at Interface level)
> ? ? ?bInterfaceSubClass ? ? ?0
> ? ? ?bInterfaceProtocol ? ? ?0
> ? ? ?iInterface ? ? ? ? ? ? ?5 Bulk-IN,Bulk-OUT,Bulk-OUT
> ? ? ?Endpoint Descriptor:
> ? ? ? ?bLength ? ? ? ? ? ? ? ? 7
> ? ? ? ?bDescriptorType ? ? ? ? 5
> ? ? ? ?bEndpointAddress ? ? 0x81 ?EP 1 IN
> ? ? ? ?bmAttributes ? ? ? ? ? ?2
> ? ? ? ? ?Transfer Type ? ? ? ? ? ?Bulk
> ? ? ? ? ?Synch Type ? ? ? ? ? ? ? None
> ? ? ? ? ?Usage Type ? ? ? ? ? ? ? Data
> ? ? ? ?wMaxPacketSize ? ? 0x0200 ?1x 512 bytes
> ? ? ? ?bInterval ? ? ? ? ? ? ? 0
> ? ? ?Endpoint Descriptor:
> ? ? ? ?bLength ? ? ? ? ? ? ? ? 7
> ? ? ? ?bDescriptorType ? ? ? ? 5
> ? ? ? ?bEndpointAddress ? ? 0x02 ?EP 2 OUT
> ? ? ? ?bmAttributes ? ? ? ? ? ?2
> ? ? ? ? ?Transfer Type ? ? ? ? ? ?Bulk
> ? ? ? ? ?Synch Type ? ? ? ? ? ? ? None
> ? ? ? ? ?Usage Type ? ? ? ? ? ? ? Data
> ? ? ? ?wMaxPacketSize ? ? 0x0200 ?1x 512 bytes
> ? ? ? ?bInterval ? ? ? ? ? ? ? 0
> ? ? ?Endpoint Descriptor:
> ? ? ? ?bLength ? ? ? ? ? ? ? ? 7
> ? ? ? ?bDescriptorType ? ? ? ? 5
> ? ? ? ?bEndpointAddress ? ? 0x03 ?EP 3 OUT
> ? ? ? ?bmAttributes ? ? ? ? ? ?2
> ? ? ? ? ?Transfer Type ? ? ? ? ? ?Bulk
> ? ? ? ? ?Synch Type ? ? ? ? ? ? ? None
> ? ? ? ? ?Usage Type ? ? ? ? ? ? ? Data
> ? ? ? ?wMaxPacketSize ? ? 0x0200 ?1x 512 bytes
> ? ? ? ?bInterval ? ? ? ? ? ? ? 0
> Device Qualifier (for other device speed):
> ?bLength ? ? ? ? ? ? ? ?10
> ?bDescriptorType ? ? ? ? 6
> ?bcdUSB ? ? ? ? ? ? ? 2.00
> ?bDeviceClass ? ? ? ? ? ?0 (Defined at Interface level)
> ?bDeviceSubClass ? ? ? ? 0
> ?bDeviceProtocol ? ? ? ? 0
> ?bMaxPacketSize0 ? ? ? ?64
> ?bNumConfigurations ? ? ?1
> Device Status: ? ? 0x0000
> ?(Bus Powered)
>
> # lsusb -v -d 0846:9001
>
> Bus 002 Device 004: ID 0846:9001 NetGear, Inc. WN111(v2) RangeMax Next
> Wireless [Atheros AR9001U-(2)NG]
> Device Descriptor:
> ?bLength ? ? ? ? ? ? ? ?18
> ?bDescriptorType ? ? ? ? 1
> ?bcdUSB ? ? ? ? ? ? ? 2.00
> ?bDeviceClass ? ? ? ? ?255 Vendor Specific Class
> ?bDeviceSubClass ? ? ? 255 Vendor Specific Subclass
> ?bDeviceProtocol ? ? ? 255 Vendor Specific Protocol
> ?bMaxPacketSize0 ? ? ? ?64
> ?idVendor ? ? ? ? ? 0x0846 NetGear, Inc.
> ?idProduct ? ? ? ? ?0x9001 WN111(v2) RangeMax Next Wireless [Atheros
> AR9001U-(2)NG]
> ?bcdDevice ? ? ? ? ? ?1.06
> ?iManufacturer ? ? ? ? ?16 ATHER
> ?iProduct ? ? ? ? ? ? ? 32 USB2.0 WLAN
> ?iSerial ? ? ? ? ? ? ? ?48 12345
> ?bNumConfigurations ? ? ?1
> ?Configuration Descriptor:
> ? ?bLength ? ? ? ? ? ? ? ? 9
> ? ?bDescriptorType ? ? ? ? 2
> ? ?wTotalLength ? ? ? ? ? 46
> ? ?bNumInterfaces ? ? ? ? ?1
> ? ?bConfigurationValue ? ? 1
> ? ?iConfiguration ? ? ? ? ?0
> ? ?bmAttributes ? ? ? ? 0x80
> ? ? ?(Bus Powered)
> ? ?MaxPower ? ? ? ? ? ? ?500mA
> ? ?Interface Descriptor:
> ? ? ?bLength ? ? ? ? ? ? ? ? 9
> ? ? ?bDescriptorType ? ? ? ? 4
> ? ? ?bInterfaceNumber ? ? ? ?0
> ? ? ?bAlternateSetting ? ? ? 0
> ? ? ?bNumEndpoints ? ? ? ? ? 4
> ? ? ?bInterfaceClass ? ? ? 255 Vendor Specific Class
> ? ? ?bInterfaceSubClass ? ? ?0
> ? ? ?bInterfaceProtocol ? ? ?0
> ? ? ?iInterface ? ? ? ? ? ? ?0
> ? ? ?Endpoint Descriptor:
> ? ? ? ?bLength ? ? ? ? ? ? ? ? 7
> ? ? ? ?bDescriptorType ? ? ? ? 5
> ? ? ? ?bEndpointAddress ? ? 0x01 ?EP 1 OUT
> ? ? ? ?bmAttributes ? ? ? ? ? ?2
> ? ? ? ? ?Transfer Type ? ? ? ? ? ?Bulk
> ? ? ? ? ?Synch Type ? ? ? ? ? ? ? None
> ? ? ? ? ?Usage Type ? ? ? ? ? ? ? Data
> ? ? ? ?wMaxPacketSize ? ? 0x0200 ?1x 512 bytes
> ? ? ? ?bInterval ? ? ? ? ? ? ? 0
> ? ? ?Endpoint Descriptor:
> ? ? ? ?bLength ? ? ? ? ? ? ? ? 7
> ? ? ? ?bDescriptorType ? ? ? ? 5
> ? ? ? ?bEndpointAddress ? ? 0x82 ?EP 2 IN
> ? ? ? ?bmAttributes ? ? ? ? ? ?2
> ? ? ? ? ?Transfer Type ? ? ? ? ? ?Bulk
> ? ? ? ? ?Synch Type ? ? ? ? ? ? ? None
> ? ? ? ? ?Usage Type ? ? ? ? ? ? ? Data
> ? ? ? ?wMaxPacketSize ? ? 0x0200 ?1x 512 bytes
> ? ? ? ?bInterval ? ? ? ? ? ? ? 0
> ? ? ?Endpoint Descriptor:
> ? ? ? ?bLength ? ? ? ? ? ? ? ? 7
> ? ? ? ?bDescriptorType ? ? ? ? 5
> ? ? ? ?bEndpointAddress ? ? 0x83 ?EP 3 IN
> ? ? ? ?bmAttributes ? ? ? ? ? ?3
> ? ? ? ? ?Transfer Type ? ? ? ? ? ?Interrupt
> ? ? ? ? ?Synch Type ? ? ? ? ? ? ? None
> ? ? ? ? ?Usage Type ? ? ? ? ? ? ? Data
> ? ? ? ?wMaxPacketSize ? ? 0x0040 ?1x 64 bytes
> ? ? ? ?bInterval ? ? ? ? ? ? ? 1
> ? ? ?Endpoint Descriptor:
> ? ? ? ?bLength ? ? ? ? ? ? ? ? 7
> ? ? ? ?bDescriptorType ? ? ? ? 5
> ? ? ? ?bEndpointAddress ? ? 0x04 ?EP 4 OUT
> ? ? ? ?bmAttributes ? ? ? ? ? ?3
> ? ? ? ? ?Transfer Type ? ? ? ? ? ?Interrupt
> ? ? ? ? ?Synch Type ? ? ? ? ? ? ? None
> ? ? ? ? ?Usage Type ? ? ? ? ? ? ? Data
> ? ? ? ?wMaxPacketSize ? ? 0x0040 ?1x 64 bytes
> ? ? ? ?bInterval ? ? ? ? ? ? ? 1
> Device Qualifier (for other device speed):
> ?bLength ? ? ? ? ? ? ? ?10
> ?bDescriptorType ? ? ? ? 6
> ?bcdUSB ? ? ? ? ? ? ? 2.00
> ?bDeviceClass ? ? ? ? ?255 Vendor Specific Class
> ?bDeviceSubClass ? ? ? 255 Vendor Specific Subclass
> ?bDeviceProtocol ? ? ? 255 Vendor Specific Protocol
> ?bMaxPacketSize0 ? ? ? ?64
> ?bNumConfigurations ? ? ?1
> Device Status: ? ? 0x0000
> ?(Bus Powered)
>
> # iwconfig
> lo ? ? ? ?no wireless extensions.
>
> eth0 ? ? ?no wireless extensions.
>
> wlan0 ? ? IEEE 802.11bgn ?ESSID:"waddles"
> ? ? ? ? ?Mode:Managed ?Frequency:2.412 GHz ?Access Point: 00:22:3F:07:42:F3
> ? ? ? ? ?Bit Rate=117 Mb/s ? Tx-Power=20 dBm
> ? ? ? ? ?Retry ?long limit:7 ? RTS thr:off ? Fragment thr:off
> ? ? ? ? ?Encryption key:off
> ? ? ? ? ?Power Management:off
> ? ? ? ? ?Link Quality=34/70 ?Signal level=-76 dBm
> ? ? ? ? ?Rx invalid nwid:0 ?Rx invalid crypt:0 ?Rx invalid frag:0
> ? ? ? ? ?Tx excessive retries:0 ?Invalid misc:0 ? Missed beacon:0
>
> wlan1 ? ? IEEE 802.11bg ?ESSID:"waddles"
> ? ? ? ? ?Mode:Managed ?Frequency:2.412 GHz ?Access Point: 00:22:3F:07:42:F3
> ? ? ? ? ?Bit Rate=36 Mb/s ? Tx-Power=20 dBm
> ? ? ? ? ?Retry ?long limit:7 ? RTS thr:off ? Fragment thr:off
> ? ? ? ? ?Encryption key:off
> ? ? ? ? ?Power Management:off
> ? ? ? ? ?Link Quality=44/70 ?Signal level=-66 dBm
> ? ? ? ? ?Rx invalid nwid:0 ?Rx invalid crypt:0 ?Rx invalid frag:0
> ? ? ? ? ?Tx excessive retries:0 ?Invalid misc:0 ? Missed beacon:0
>
> tun0 ? ? ?no wireless extensions.
>
> My network looks like this:
>
> Linux ? ? ? ? ? ? ? ? ? ? ? ? ?Router/AP ? ? ? DSL Modem
> (wlan0) 192.168.1.57 ---/--- 192.168.1.1 --- 192.168.0.1 --- Internet
> (wlan1) 192.168.1.4 ?---/---
>
> Between the router and the modem is an ethernet crossover cable.
>
> # ping 192.168.0.1
> PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
> 64 bytes from 192.168.0.1: icmp_seq=1 ttl=63 time=2.23 ms
> 64 bytes from 192.168.0.1: icmp_seq=2 ttl=63 time=2.11 ms
> 64 bytes from 192.168.0.1: icmp_seq=3 ttl=63 time=1.88 ms
> ^C
> --- 192.168.0.1 ping statistics ---
> 3 packets transmitted, 3 received, 0% packet loss, time 2002ms
> rtt min/avg/max/mdev = 1.882/2.076/2.235/0.146 ms
>
> # route add -host 192.168.0.1 gw 192.168.1.1 dev wlan0
>
> # netstat -nr
> Kernel IP routing table
> Destination ? ? Gateway ? ? ? ? Genmask ? ? ? ? Flags ? MSS Window ?irtt
> Iface
> 192.168.0.1 ? ? 192.168.1.1 ? ? 255.255.255.255 UGH ? ? ? 0 0 ? ? ? ? ?0
> wlan0
> 192.168.1.0 ? ? 0.0.0.0 ? ? ? ? 255.255.255.0 ? U ? ? ? ? 0 0 ? ? ? ? ?0
> wlan1
> 192.168.1.0 ? ? 0.0.0.0 ? ? ? ? 255.255.255.0 ? U ? ? ? ? 0 0 ? ? ? ? ?0
> wlan0
> 0.0.0.0 ? ? ? ? 192.168.1.1 ? ? 0.0.0.0 ? ? ? ? UG ? ? ? ?0 0 ? ? ? ? ?0
> wlan1
>
> # ping 192.168.0.1
> PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
> 64 bytes from 192.168.0.1: icmp_seq=1 ttl=63 time=158 ms
> 64 bytes from 192.168.0.1: icmp_seq=2 ttl=63 time=168 ms
> 64 bytes from 192.168.0.1: icmp_seq=3 ttl=63 time=162 ms
> 64 bytes from 192.168.0.1: icmp_seq=4 ttl=63 time=170 ms
> 64 bytes from 192.168.0.1: icmp_seq=5 ttl=63 time=178 ms
> 64 bytes from 192.168.0.1: icmp_seq=6 ttl=63 time=166 ms
> 64 bytes from 192.168.0.1: icmp_seq=7 ttl=63 time=166 ms
> 64 bytes from 192.168.0.1: icmp_seq=8 ttl=63 time=155 ms
> 64 bytes from 192.168.0.1: icmp_seq=9 ttl=63 time=434 ms
> 64 bytes from 192.168.0.1: icmp_seq=10 ttl=63 time=154 ms
> 64 bytes from 192.168.0.1: icmp_seq=11 ttl=63 time=174 ms
> 64 bytes from 192.168.0.1: icmp_seq=12 ttl=63 time=161 ms
> 64 bytes from 192.168.0.1: icmp_seq=13 ttl=63 time=147 ms
> 64 bytes from 192.168.0.1: icmp_seq=14 ttl=63 time=170 ms
> 64 bytes from 192.168.0.1: icmp_seq=15 ttl=63 time=161 ms
> 64 bytes from 192.168.0.1: icmp_seq=16 ttl=63 time=190 ms
> 64 bytes from 192.168.0.1: icmp_seq=17 ttl=63 time=218 ms
> 64 bytes from 192.168.0.1: icmp_seq=18 ttl=63 time=166 ms
> 64 bytes from 192.168.0.1: icmp_seq=19 ttl=63 time=514 ms
> 64 bytes from 192.168.0.1: icmp_seq=20 ttl=63 time=177 ms
> 64 bytes from 192.168.0.1: icmp_seq=21 ttl=63 time=144 ms
> 64 bytes from 192.168.0.1: icmp_seq=22 ttl=63 time=191 ms
> 64 bytes from 192.168.0.1: icmp_seq=23 ttl=63 time=175 ms
> 64 bytes from 192.168.0.1: icmp_seq=24 ttl=63 time=156 ms
> 64 bytes from 192.168.0.1: icmp_seq=25 ttl=63 time=947 ms
> 64 bytes from 192.168.0.1: icmp_seq=26 ttl=63 time=1833 ms
> 64 bytes from 192.168.0.1: icmp_seq=27 ttl=63 time=2196 ms
> 64 bytes from 192.168.0.1: icmp_seq=28 ttl=63 time=1542 ms
> 64 bytes from 192.168.0.1: icmp_seq=29 ttl=63 time=816 ms
> 64 bytes from 192.168.0.1: icmp_seq=30 ttl=63 time=3045 ms
> 64 bytes from 192.168.0.1: icmp_seq=31 ttl=63 time=3181 ms
> 64 bytes from 192.168.0.1: icmp_seq=32 ttl=63 time=2287 ms
> 64 bytes from 192.168.0.1: icmp_seq=33 ttl=63 time=1496 ms
> 64 bytes from 192.168.0.1: icmp_seq=34 ttl=63 time=687 ms
> 64 bytes from 192.168.0.1: icmp_seq=35 ttl=63 time=173 ms
> ^C
> --- 192.168.0.1 ping statistics ---
> 35 packets transmitted, 35 received, 0% packet loss, time 34037ms
> rtt min/avg/max/mdev = 144.678/653.604/3181.758/855.953 ms, pipe 4
>
> NOTE --- The higher ping times occurred when downloading a 39kB image file.
>
> # route del -host 192.168.0.1 gw 192.168.1.1 dev wlan0
>
> # ping 192.168.0.1
> PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
> 64 bytes from 192.168.0.1: icmp_seq=1 ttl=63 time=2.37 ms
> 64 bytes from 192.168.0.1: icmp_seq=2 ttl=63 time=2.10 ms
> 64 bytes from 192.168.0.1: icmp_seq=3 ttl=63 time=1.96 ms
> 64 bytes from 192.168.0.1: icmp_seq=4 ttl=63 time=2.38 ms
> ^C
> --- 192.168.0.1 ping statistics ---
> 4 packets transmitted, 4 received, 0% packet loss, time 3003ms
> rtt min/avg/max/mdev = 1.964/2.206/2.388/0.187 ms
>
> I have also tried using the carl9170 driver (2010_12_02) with
> compat-wireless and carl9170-fw (1.9.1-1) but I found 'iwconfig' would
> segfault when it tried to display ath0.

Can you please try with ath9k driver with the same compat wireless.Are
you still seeing poor performance?
>
> Can somebody help me debug it further please?
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to [email protected]
> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
>