[ath][CURRENT] Triangle-shaped network performance

Adrian Chadd adrian.chadd at gmail.com
Sun Mar 25 18:44:57 UTC 2012


Hi,

The LOR is known. I'd love to fix it but I have other things to do first.

Try running athstats 1 and watch the rate of errors change over time.

Disable HT40 as on ongested channels it's going to behave very oddly.


Adrian



Sent from my Palm Pre on AT&T
On Mar 25, 2012 11:27 AM, Lytochkin Boris <lytboris at gmail.com> wrote: 

Hi.



I'm digging in appalling wireless network performance on my home

router: fetching file from local NAS can run an 20kb/s rates while

running 802.11n capable ath card.

I found some curious fact: network performance is lagging periodically

in triangle-shaped form. Look an this ping to router from my laptop:



>ping 192.168.1.5 -t -w 1

Reply from 192.168.1.5: bytes=32 time=78ms TTL=64

Reply from 192.168.1.5: bytes=32 time=54ms TTL=64

Reply from 192.168.1.5: bytes=32 time=77ms TTL=64

Reply from 192.168.1.5: bytes=32 time=100ms TTL=64

Reply from 192.168.1.5: bytes=32 time=123ms TTL=64

Reply from 192.168.1.5: bytes=32 time=164ms TTL=64

Reply from 192.168.1.5: bytes=32 time=189ms TTL=64

Reply from 192.168.1.5: bytes=32 time=177ms TTL=64

Reply from 192.168.1.5: bytes=32 time=199ms TTL=64

Reply from 192.168.1.5: bytes=32 time=220ms TTL=64

Reply from 192.168.1.5: bytes=32 time=243ms TTL=64

Reply from 192.168.1.5: bytes=32 time=265ms TTL=64

Reply from 192.168.1.5: bytes=32 time=288ms TTL=64

Reply from 192.168.1.5: bytes=32 time=310ms TTL=64

Reply from 192.168.1.5: bytes=32 time=340ms TTL=64

Reply from 192.168.1.5: bytes=32 time=367ms TTL=64

Reply from 192.168.1.5: bytes=32 time=373ms TTL=64

Reply from 192.168.1.5: bytes=32 time=416ms TTL=64

Reply from 192.168.1.5: bytes=32 time=414ms TTL=64

Reply from 192.168.1.5: bytes=32 time=425ms TTL=64

Timeout.

Reply from 192.168.1.5: bytes=32 time=39ms TTL=64

Reply from 192.168.1.5: bytes=32 time=57ms TTL=64

Reply from 192.168.1.5: bytes=32 time=81ms TTL=64

Reply from 192.168.1.5: bytes=32 time=104ms TTL=64

Reply from 192.168.1.5: bytes=32 time=130ms TTL=64

Reply from 192.168.1.5: bytes=32 time=147ms TTL=64

Reply from 192.168.1.5: bytes=32 time=174ms TTL=64

Reply from 192.168.1.5: bytes=32 time=193ms TTL=64

Reply from 192.168.1.5: bytes=32 time=214ms TTL=64

Timeout.

Reply from 192.168.1.5: bytes=32 time=297ms TTL=64

Reply from 192.168.1.5: bytes=32 time=314ms TTL=64

Reply from 192.168.1.5: bytes=32 time=330ms TTL=64

Reply from 192.168.1.5: bytes=32 time=355ms TTL=64

Reply from 192.168.1.5: bytes=32 time=376ms TTL=64

Reply from 192.168.1.5: bytes=32 time=402ms TTL=64

Reply from 192.168.1.5: bytes=32 time=422ms TTL=64

Reply from 192.168.1.5: bytes=32 time=445ms TTL=64

Reply from 192.168.1.5: bytes=32 time=467ms TTL=64

Timeout.

Reply from 192.168.1.5: bytes=32 time=40ms TTL=64

Reply from 192.168.1.5: bytes=32 time=62ms TTL=64

Reply from 192.168.1.5: bytes=32 time=96ms TTL=64

Reply from 192.168.1.5: bytes=32 time=116ms TTL=64

Reply from 192.168.1.5: bytes=32 time=133ms TTL=64

Reply from 192.168.1.5: bytes=32 time=159ms TTL=64

Reply from 192.168.1.5: bytes=32 time=176ms TTL=64

Reply from 192.168.1.5: bytes=32 time=188ms TTL=64

Reply from 192.168.1.5: bytes=32 time=223ms TTL=64

Reply from 192.168.1.5: bytes=32 time=233ms TTL=64

Reply from 192.168.1.5: bytes=32 time=321ms TTL=64

Reply from 192.168.1.5: bytes=32 time=285ms TTL=64

Reply from 192.168.1.5: bytes=32 time=298ms TTL=64

Reply from 192.168.1.5: bytes=32 time=320ms TTL=64

Reply from 192.168.1.5: bytes=32 time=350ms TTL=64

Reply from 192.168.1.5: bytes=32 time=374ms TTL=64

Reply from 192.168.1.5: bytes=32 time=396ms TTL=64

Reply from 192.168.1.5: bytes=32 time=420ms TTL=64

Timeout.

Timeout.

Reply from 192.168.1.5: bytes=32 time=24ms TTL=64

Reply from 192.168.1.5: bytes=32 time=43ms TTL=64

Reply from 192.168.1.5: bytes=32 time=65ms TTL=64

Reply from 192.168.1.5: bytes=32 time=89ms TTL=64

Reply from 192.168.1.5: bytes=32 time=109ms TTL=64

Reply from 192.168.1.5: bytes=32 time=131ms TTL=64

Reply from 192.168.1.5: bytes=32 time=154ms TTL=64

Reply from 192.168.1.5: bytes=32 time=176ms TTL=64

Reply from 192.168.1.5: bytes=32 time=200ms TTL=64

Reply from 192.168.1.5: bytes=32 time=221ms TTL=64

Reply from 192.168.1.5: bytes=32 time=244ms TTL=64

Reply from 192.168.1.5: bytes=32 time=268ms TTL=64

Reply from 192.168.1.5: bytes=32 time=290ms TTL=64

Reply from 192.168.1.5: bytes=32 time=314ms TTL=64

Reply from 192.168.1.5: bytes=32 time=357ms TTL=64

Reply from 192.168.1.5: bytes=32 time=359ms TTL=64

Reply from 192.168.1.5: bytes=32 time=392ms TTL=64

Reply from 192.168.1.5: bytes=32 time=430ms TTL=64

Reply from 192.168.1.5: bytes=32 time=429ms TTL=64

Reply from 192.168.1.5: bytes=32 time=448ms TTL=64

Timeout.

Timeout.

Reply from 192.168.1.5: bytes=32 time=66ms TTL=64

Reply from 192.168.1.5: bytes=32 time=89ms TTL=64

Reply from 192.168.1.5: bytes=32 time=118ms TTL=64

Reply from 192.168.1.5: bytes=32 time=138ms TTL=64

Reply from 192.168.1.5: bytes=32 time=154ms TTL=64

Reply from 192.168.1.5: bytes=32 time=163ms TTL=64

Reply from 192.168.1.5: bytes=32 time=185ms TTL=64

Reply from 192.168.1.5: bytes=32 time=227ms TTL=64

Reply from 192.168.1.5: bytes=32 time=229ms TTL=64

Reply from 192.168.1.5: bytes=32 time=261ms TTL=64

Reply from 192.168.1.5: bytes=32 time=274ms TTL=64

Reply from 192.168.1.5: bytes=32 time=297ms TTL=64

Reply from 192.168.1.5: bytes=32 time=318ms TTL=64

Reply from 192.168.1.5: bytes=32 time=340ms TTL=64

Reply from 192.168.1.5: bytes=32 time=366ms TTL=64

Reply from 192.168.1.5: bytes=32 time=388ms TTL=64

Reply from 192.168.1.5: bytes=32 time=408ms TTL=64

Reply from 192.168.1.5: bytes=32 time=431ms TTL=64

Reply from 192.168.1.5: bytes=32 time=452ms TTL=64

Timeout.

Reply from 192.168.1.5: bytes=32 time=38ms TTL=64

Reply from 192.168.1.5: bytes=32 time=62ms TTL=64

Reply from 192.168.1.5: bytes=32 time=83ms TTL=64

Reply from 192.168.1.5: bytes=32 time=105ms TTL=64

Reply from 192.168.1.5: bytes=32 time=128ms TTL=64

Reply from 192.168.1.5: bytes=32 time=151ms TTL=64

Reply from 192.168.1.5: bytes=32 time=171ms TTL=64

Reply from 192.168.1.5: bytes=32 time=195ms TTL=64

Reply from 192.168.1.5: bytes=32 time=217ms TTL=64

Reply from 192.168.1.5: bytes=32 time=248ms TTL=64

Reply from 192.168.1.5: bytes=32 time=278ms TTL=64

Reply from 192.168.1.5: bytes=32 time=291ms TTL=64

Reply from 192.168.1.5: bytes=32 time=304ms TTL=64

Reply from 192.168.1.5: bytes=32 time=317ms TTL=64

Reply from 192.168.1.5: bytes=32 time=337ms TTL=64

Reply from 192.168.1.5: bytes=32 time=339ms TTL=64

Reply from 192.168.1.5: bytes=32 time=361ms TTL=64

Reply from 192.168.1.5: bytes=32 time=383ms TTL=64

Reply from 192.168.1.5: bytes=32 time=405ms TTL=64

Reply from 192.168.1.5: bytes=32 time=427ms TTL=64

Timeout.

Reply from 192.168.1.5: bytes=32 time=42ms TTL=64





This hell happens some minutes after successful boot and working with

~1ms pings. Than it booms and this triangle nightmare starts.



>uname -a

FreeBSD gate.home 10.0-CURRENT FreeBSD 10.0-CURRENT #1: Fri Feb 17

23:48:28 MSK 2012     root at gate.home:/usr/obj/usr/src/sys/GATEv2  i386

(I tried today's kernel - bug is still there regardless of

ATH_ENABLE_11N option).



>ifconfig -v wlan0

wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500

        ether b0:48:7a:da:0e:59

        inet6 fe80::b248:7aff:feda:e59%wlan0 prefixlen 64 tentative scopeid 0x10

        inet 192.168.2.1 netmask 0xffffff00 broadcast 192.168.2.255

        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>

        media: IEEE 802.11 Wireless Ethernet autoselect mode 11ng <hostap>

        status: running

        ssid starlink channel 11 (2462 MHz 11g ht/40-) bssid b0:48:7a:da:0e:59

        regdomain ETSI country RU indoor ecm authmode WPA -wps -tsn

        privacy MIXED deftxkey 3

        AES-CCM 2:128-bit

        AES-CCM 3:128-bit powersavemode OFF powersavesleep 100 txpower 50

        txpowmax 50.0 -dotd rtsthreshold 2346 fragthreshold 2346 bmiss 7

        11a     ucast NONE    mgmt  6 Mb/s mcast  6 Mb/s maxretry 6

        11b     ucast NONE    mgmt  1 Mb/s mcast  1 Mb/s maxretry 6

        11g     ucast NONE    mgmt  1 Mb/s mcast  1 Mb/s maxretry 6

        turboA  ucast NONE    mgmt  6 Mb/s mcast  6 Mb/s maxretry 6

        turboG  ucast NONE    mgmt  1 Mb/s mcast  1 Mb/s maxretry 6

        sturbo  ucast NONE    mgmt  6 Mb/s mcast  6 Mb/s maxretry 6

        11na    ucast NONE    mgmt 12 MCS  mcast 12 MCS  maxretry 6

        11ng    ucast NONE    mgmt  2 MCS  mcast  2 MCS  maxretry 6

        half    ucast NONE    mgmt  3 Mb/s mcast  3 Mb/s maxretry 6

        quarter ucast NONE    mgmt  1 Mb/s mcast  1 Mb/s maxretry 6

        scanvalid 60 -bgscan bgscanintvl 300 bgscanidle 250

        roam:11a     rssi    7dBm rate 12 Mb/s

        roam:11b     rssi    7dBm rate  1 Mb/s

        roam:11g     rssi    7dBm rate  5 Mb/s

        roam:turboA  rssi    7dBm rate 12 Mb/s

        roam:turboG  rssi    7dBm rate 12 Mb/s

        roam:sturbo  rssi    7dBm rate 12 Mb/s

        roam:11na    rssi    7dBm  MCS  1

        roam:11ng    rssi    7dBm  MCS  1

        roam:half    rssi    7dBm rate  6 Mb/s

        roam:quarter rssi    7dBm rate  3 Mb/s

        -pureg protmode CTS ht htcompat ampdu ampdulimit 64k ampdudensity 8

        amsdu shortgi htprotmode RTSCTS -puren -smps -rifs wme burst -dwds

        -hidessid apbridge dtimperiod 1 doth -dfs inact bintval 1000

        AC_BE cwmin  4 cwmax  6 aifs  3 txopLimit   0 -acm ack

              cwmin  4 cwmax 10 aifs  3 txopLimit   0 -acm

        AC_BK cwmin  4 cwmax 10 aifs  7 txopLimit   0 -acm ack

              cwmin  4 cwmax 10 aifs  7 txopLimit   0 -acm

        AC_VI cwmin  3 cwmax  4 aifs  1 txopLimit  94 -acm ack

              cwmin  3 cwmax  4 aifs  2 txopLimit  94 -acm

        AC_VO cwmin  2 cwmax  3 aifs  1 txopLimit  47 -acm ack

              cwmin  2 cwmax  3 aifs  2 txopLimit  47 -acm

        groups: wlan





~>athstats

17532        data frames received

12450        data frames transmit

4            tx frames with an alternate rate

2060         long on-chip tx retries

187          tx failed 'cuz too many retries

MCS5         current transmit rate

417          tx frames with no ack marked

11805        tx frames with short preamble

1003         rx failed 'cuz of bad CRC

1495         beacons transmitted

26           periodic calibrations

-0/+0        TDMA slot adjust (usecs, smoothed)

63           rssi of last ack

64           avg recv rssi

-96          rx noise floor

229          tx frames through raw api

1726         A-MPDU sub-frames received

513          CRC errors for non-last A-MPDU subframes

272          CRC errors for last subframe in an A-MPDU

308          A-MPDU sub-frame TX attempt success

10389        cabq frames transmitted

746          cabq xmit overflowed beacon interval

1            OFDM weak signal detect

388          listen time

3            ANI disabled OFDM weak signal detect

1            ANI disabled CCK weak signal threshold

21671        cumulative OFDM phy error count

130597       cumulative CCK phy error count

30           ANI forced listen time to zero

2060         missing ACK's

1374         bad FCS

13           average rssi (beacons only)

Antenna profile:

[0] tx    12052 rx       12

[1] tx        0 rx    17520



>pciconf -l -v

...

ath0 at pci0:2:13:0:       class=0x028000 card=0x2091168c chip=0x0029168c

rev=0x01 hdr=0x00

    vendor     = 'Atheros Communications Inc.'

    device     = 'AR922X Wireless Network Adapter'

    class      = network

...





Do somebody have any ideas where to dig next?



ps. There is LOR on router startup:

Mar 25 22:11:49 gate kernel: lock order reversal:

Mar 25 22:11:49 gate kernel: 1st 0xc54b46c0 ath0_node_lock

(ath0_node_lock) @ /usr/src/sys/net80211/ieee80211_ioctl.c:1341

Mar 25 22:11:49 gate kernel: 2nd 0xc54b3014 ath0_com_lock

(ath0_com_lock) @ /usr/src/sys/net80211/ieee80211_node.c:2510

Mar 25 22:11:49 gate kernel: KDB: stack backtrace:

Mar 25 22:11:49 gate kernel:

db_trace_self_wrapper(c0cae317,6372732f,7379732f,74656e2f,31323038,...)

at db_trace_self_wrapper+0x26

Mar 25 22:11:49 gate kernel:

kdb_backtrace(c086e65b,c0cb1d64,c0ee7060,9ce,d6f478d8,...) at

kdb_backtrace+0x2a

Mar 25 22:11:49 gate kernel:

_witness_debugger(c0cb1d64,c54b3014,c54b3004,c3d55590,c0cc7c06,...) at

_witness_debugger+0x25

Mar 25 22:11:49 gate kernel:

witness_checkorder(c54b3014,9,c0cc7c06,9ce,0,...) at

witness_checkorder+0x86b

Mar 25 22:11:49 gate kernel:

_mtx_lock_flags(c54b3014,0,c0cc7c06,9ce,64,...) at

_mtx_lock_flags+0xcc

Mar 25 22:11:49 gate kernel:

ieee80211_node_leave(c6ef4000,c0,2,c6ef4000,c54b46ac,...) at

ieee80211_node_leave+0xb3

Mar 25 22:11:49 gate kernel:

domlme(d6f47974,c6ef4000,c0cc7140,53d,d6f479a6,...) at domlme+0x83

Mar 25 22:11:49 gate kernel:

setmlme_common(2,d6f479a2,2a,30000,11080002,...) at

setmlme_common+0x132

Mar 25 22:11:49 gate kernel:

ieee80211_ioctl_setmlme(c0ee7060,c6a1cc30,c0ee7060,c0d4ccd8,c6a1cb80,...)

at ieee80211_ioctl_setmlme+0xa4

Mar 25 22:11:49 gate kernel:

ieee80211_ioctl_set80211(c6a1cb80,1b9,d6f47a80,c0882524,c54b3000,...)

at ieee80211_ioctl_set80211+0x554

Mar 25 22:11:49 gate kernel:

ieee80211_ioctl(c646f400,801c69ea,c551ecc0,c0cbe319,d6f47ac0,...) at

ieee80211_ioctl+0x300

Mar 25 22:11:49 gate kernel:

in_control(c6a661a0,801c69ea,c551ecc0,c646f400,c6a1cb80,...) at

in_control+0x235

Mar 25 22:11:49 gate kernel:

ifioctl(c6a661a0,801c69ea,c551ecc0,c6a1cb80,c68fa9d8,...) at

ifioctl+0x18c4

Mar 25 22:11:49 gate kernel:

soo_ioctl(c68fa9d8,801c69ea,c551ecc0,c3da2180,c6a1cb80,...) at

soo_ioctl+0x44f

Mar 25 22:11:49 gate kernel:

kern_ioctl(c6a1cb80,3,801c69ea,c551ecc0,f47cec,...) at

kern_ioctl+0x22d

Mar 25 22:11:49 gate kernel:

sys_ioctl(c6a1cb80,d6f47cec,48,19ce87f7,206,...) at sys_ioctl+0x13f

Mar 25 22:11:49 gate kernel: syscall(d6f47d28) at syscall+0x2e0

Mar 25 22:11:49 gate kernel: Xint0x80_syscall() at Xint0x80_syscall+0x21

Mar 25 22:11:49 gate kernel: --- syscall (54, FreeBSD ELF32,

sys_ioctl), eip = 0x2821d143, esp = 0xbfbfeabc, ebp = 0xbfbfeb18 ---





-- 

Boris Lytochkin




More information about the freebsd-wireless mailing list