#22075: Intermittent 802.11 transmission failures in a wireless/WDS bridge,
ath9k
-------------------------------------+-------------------------------------
Reporter: jmomo | Owner: developers
Type: defect | Status: new
Priority: normal | Milestone: Designated Driver
Component: base system | (Trunk)
Keywords: wds, bridging, | Version: Trunk
4-address, ath9k |
-------------------------------------+-------------------------------------
I am seeing intermittent 802.11 transmission failures from my OpenWRT
router to a bridged client.
I've been chasing this issue for two months now, so please bear with me as
I explain boring details which may or may not be of any relevance.
The OpenWRT device is a TP-Link TL-WDR4300 (N750) router, hardware version
1.6.
I am under the impression that the fact I am doing 4-address/WDS bridging
is a contributing factor, as I've never seen this issue prior to setting
up the bridge two months ago, and non-bridged clients attaching to the
same 802.11 phy don't experience the issue during an outage. I have
"option wds 1" set in my OpenWRT config, and my bridge client is a Linux
system with numerous computers behind it. I have included the wireless
config below.
The symptoms are bizarre. During each outage, I can access the OpenWRT
router and multiple hops beyond it, but then traffic dies out on the
internet near the peering points of my ISP. I assume it is a coincidence
that mtr/traceroutes die at the exact same spot out on the internet each
time, but it's a strange thing to see.
I've done numerous tcpdump captures to verify that traffic is getting from
my bridge client out to the internet, that replies are coming back, and
that the OpenWRT system attempts to pass them back to the client. However,
they never get there.
Outages occur seemingly at random, and in busts. Each individual outage
usually lasts for 100-130 seconds. Then there is a ~60 second break in
between and another outage occurs. This up/down process can go on for
anywhere from three minutes to an hour.
Reauthenticating with the AP instantly clears up the issue, for at least
awhile ("sudo -u root wpa_cli -i wlan0 reassociate" on the bridge client).
I finally nailed the issue down to OpenWRT last night by watching the
output of iw during an outage.
Here is an example of iw output during an outage period, note "tx failed",
which is incrementing throughout the outage. When I reauthenticate from
the client, the interface is re-created, the counter goes to zero, and it
stops incrementing until the next outage event.
The command used here was "watch -n 1 iw dev wlan1.sta1 station get
34:de:1a:xx:yy:zz":
{{{
Station 34:de:1a:xx:yy:zz (on wlan1.sta1)
inactive time: 350 ms
rx bytes: 15362806
rx packets: 138019
tx bytes: 107321206
tx packets: 220692
tx retries: 42086
tx failed: 2278
signal: -65 [-69, -79, -65] dBm
signal avg: -65 [-68, -77, -65] dBm
tx bitrate: 45.0 MBit/s MCS 2 40MHz short GI
rx bitrate: 120.0 MBit/s MCS 5 40MHz short GI
expected throughput: 25.542Mbps
authorized: yes
authenticated: yes
preamble: long
WMM/WME: yes
MFP: no
TDLS peer: no
connected time: 4556 s
}}}
Additional clues which may or may not be relevant. Note that these
readings were taken at a different time (prior) to the output above. I
diffed the output of everything under /sys/kernel/debug/ieee80211/phy1
with 10 seconds in between:
{{{
/sys/kernel/debug/ieee80211/phy1/ath9k/ani:
- OFDM ERRORS: 170026
+ OFDM ERRORS: 170461
/sys/kernel/debug/ieee80211/phy1/ath9k/reset:
- Fatal HW Error: 22
+ Fatal HW Error: 24
}}}
Here is some info about my system:
{{{
root@openwrt:~# cat /etc/openwrt_version
r49034
root@openwrt:~# cat /etc/openwrt_release
DISTRIB_ID='OpenWrt'
DISTRIB_RELEASE='Bleeding Edge'
DISTRIB_REVISION='r49034'
DISTRIB_CODENAME='designated_driver'
DISTRIB_TARGET='ar71xx/generic'
DISTRIB_DESCRIPTION='OpenWrt Designated Driver r49034'
DISTRIB_TAINTS='no-all busybox'
root@openwrt:~# cat /tmp/sysinfo/*
tl-wdr4300
TP-Link TL-WDR4300 v1
root@openwrt:~# cat /sys/kernel/debug/ieee80211/phy1/ath9k/reset
Baseband Hang: 0
Baseband Watchdog: 0
Fatal HW Error: 50
TX HW error: 0
Transmit timeout: 0
TX Path Hang: 0
PLL RX Hang: 0
MAC Hang: 0
Stuck Beacon: 0
MCI Reset: 0
Calibration error: 0
Tx DMA stop error: 0
Rx DMA stop error: 0
root@openwrt:~# cat /sys/kernel/debug/ieee80211/phy1/ath9k/ani
ANI: ENABLED
ANI RESET: 188
OFDM LEVEL: 0
CCK LEVEL: 0
SPUR UP: 120
SPUR DOWN: 120
OFDM WS-DET ON: 0
OFDM WS-DET OFF: 0
MRC-CCK ON: 0
MRC-CCK OFF: 0
FIR-STEP UP: 120
FIR-STEP DOWN: 172
INV LISTENTIME: 0
OFDM ERRORS: 404358
CCK ERRORS: 0
root@openwrt:~# cat /etc/config/wireless
# 2.4Ghz
config wifi-device 'radio0'
option type 'mac80211'
option macaddr '10:fe:ed:aa:bb:cc'
option hwmode '11g'
option htmode 'HT40'
list ht_capab 'LDPC'
list ht_capab 'SHORT-GI-20'
list ht_capab 'SHORT-GI-40'
list ht_capab 'TX-STBC'
list ht_capab 'RX-STBC1'
list ht_capab 'DSSS_CCK-40'
option channel 'auto'
option country 'US'
option txpower '27'
option log_level 1 # Default 2
config wifi-iface
option device 'radio0'
option network 'lan'
option mode 'ap'
option ssid 'XXXXXXXXXXXXX'
option encryption 'psk2+ccmp'
option key 'ZZZZZZZZZZZZZZ'
option wds 1
# 5Ghz
config wifi-device 'radio1'
option type 'mac80211'
option macaddr '10:fe:ed:xx:yy:zz'
option hwmode '11a'
option htmode 'HT40'
list ht_capab 'LDPC'
list ht_capab 'SHORT-GI-20'
list ht_capab 'SHORT-GI-40'
list ht_capab 'TX-STBC'
list ht_capab 'RX-STBC1'
list ht_capab 'DSSS_CCK-40'
option channel 'auto'
option country 'US'
option txpower '17'
option log_level 1 # Default 2
config wifi-iface
option device 'radio1'
option network 'lan'
option mode 'ap'
option encryption 'psk2+ccmp'
option ssid 'CCCCCCCCCCCCCC'
option key 'DDDDDDDDDDDDDD'
option wds 1
root@openwrt:~#
}}}
If you require more info, please ask and I'll get it. I have a USB flash
ext-root on this system and I have plenty of troubleshooting tools
installed to work with.
--
Ticket URL: <https://dev.openwrt.org/ticket/22075>
OpenWrt <http://openwrt.org>
Opensource Wireless Router Technology
_______________________________________________
openwrt-tickets mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-tickets