From: Avery Pennarun <apenwarr@gmail.com> To: linux-wireless <linux-wireless@vger.kernel.org>, ath9k-devel <ath9k-devel@lists.ath9k.org> Cc: Tim Shepard <shep@alum.mit.edu> Subject: ath9k(?): AP stops sending traffic to iPhone 4S until another 802.11n-capable STA joins Date: Wed, 4 Nov 2015 00:20:12 -0500 [thread overview] Message-ID: <CAHqTa-1jwvOSjEwo8c_3-80rBXf91LMVTQkgqed1FPmOR7rXNQ@mail.gmail.com> (raw) [fixed ath9k list address. sorry for the spam] Hi all, I have a pretty weird problem I've been chasing for a few weeks and have narrowed it down, but not quite solved it. It may be caused by bugs in aggregation-related code. Steps: - Set up an ath9k-based Linux AP on an ARM processor (currently using this version of backports, though I've tried older and newer versions with no change: "backported from Linux (next-20150525-0-gc201847) using backports backports-20150525-0-g49969bd") - Join my iPhone 4S (running iOS 7.1.2) to the network - Use it for a while - Eventually it will stay connected, but Internet access doesn't work - Wireless packet captures show that packets are received *from* the iPhone, and ACKs are returned for those packets from the ath9k, and those packets are correctly forwarded to the AP's br0 interface. But outgoing packets show up on br0 and wlan0 with tcpdump, but never make it onto the air. - Putting the iPhone 4S into airplane mode and then letting it reconnecting will fix it for a few more seconds/minutes before it stops again. More details: - It only seems to happen to my iPhone 4S client (never seen it with a different client). - It only seems to happen with my ath9k AP. - It only seems to happen on my home network (another instance of the same AP hardware on another network doesn't trigger the problem). - It only seems to happen when no other 802.11n-capable devices are connected to the same AP. - The moment I join an 802.11n-capable device to the AP, traffic instantly unblocks (see packet capture below). - Joining an 802.11g-only device (no aggregation) does *not* unblock traffic. - Disabling encryption and turning wmm_enable on and off have no effect. - Disabling 802.11n support on the AP (so that everyone has to use 802.11g) makes the problem go away. - 'ip -s link show dev wlan0' shows tx packet counters continuing to increase during the outage, even though packets aren't flowing. - I applied a patch from Tim Shepard to track the most recent tx attempt, acked tx, and rx packet times inside mac80211. According to this data, mac80211 thinks rx happened at most a couple of seconds ago (as expected). The most recent tx was acked, but it was back around the time the outage started. Note that this disagrees with 'ip -s link' and tcpdump, which think they transmitted much more recently than that. (The patch is here: https://gfiber-review.googlesource.com/#/c/1250/ ) I captured a pcap of a new 802.11n-capable device joining the network and unblocking the transmit. The action starts around frame 325: http://apenwarr.ca/tmp/iPod4-fixing-iPhone4-trimmed.pcap.gz In this pcap, the main players are: ath9k AP: 88:dc:96:08:60:50 iPhone 4S with the problem: e4:25:e7:73:e6:31 New client fixing the problem (iPod 4): 18:e7:f4:7e:c1:42 Observations from the pcap: - Upstream packets (iPhone->ath9k) are received and acked (see eg. frame 154) - Beacons from the ath9k show an empty TIM bitmap until the iPod joins, then it's nonempty and things unblock. Does anyone have any thoughts about what to look for here? Have fun, Avery
WARNING: multiple messages have this Message-ID (diff)
From: Avery Pennarun <apenwarr@gmail.com> To: ath9k-devel@lists.ath9k.org Subject: [ath9k-devel] ath9k(?): AP stops sending traffic to iPhone 4S until another 802.11n-capable STA joins Date: Wed, 04 Nov 2015 05:27:02 -0000 [thread overview] Message-ID: <CAHqTa-1jwvOSjEwo8c_3-80rBXf91LMVTQkgqed1FPmOR7rXNQ@mail.gmail.com> (raw) [fixed ath9k list address. sorry for the spam] Hi all, I have a pretty weird problem I've been chasing for a few weeks and have narrowed it down, but not quite solved it. It may be caused by bugs in aggregation-related code. Steps: - Set up an ath9k-based Linux AP on an ARM processor (currently using this version of backports, though I've tried older and newer versions with no change: "backported from Linux (next-20150525-0-gc201847) using backports backports-20150525-0-g49969bd") - Join my iPhone 4S (running iOS 7.1.2) to the network - Use it for a while - Eventually it will stay connected, but Internet access doesn't work - Wireless packet captures show that packets are received *from* the iPhone, and ACKs are returned for those packets from the ath9k, and those packets are correctly forwarded to the AP's br0 interface. But outgoing packets show up on br0 and wlan0 with tcpdump, but never make it onto the air. - Putting the iPhone 4S into airplane mode and then letting it reconnecting will fix it for a few more seconds/minutes before it stops again. More details: - It only seems to happen to my iPhone 4S client (never seen it with a different client). - It only seems to happen with my ath9k AP. - It only seems to happen on my home network (another instance of the same AP hardware on another network doesn't trigger the problem). - It only seems to happen when no other 802.11n-capable devices are connected to the same AP. - The moment I join an 802.11n-capable device to the AP, traffic instantly unblocks (see packet capture below). - Joining an 802.11g-only device (no aggregation) does *not* unblock traffic. - Disabling encryption and turning wmm_enable on and off have no effect. - Disabling 802.11n support on the AP (so that everyone has to use 802.11g) makes the problem go away. - 'ip -s link show dev wlan0' shows tx packet counters continuing to increase during the outage, even though packets aren't flowing. - I applied a patch from Tim Shepard to track the most recent tx attempt, acked tx, and rx packet times inside mac80211. According to this data, mac80211 thinks rx happened at most a couple of seconds ago (as expected). The most recent tx was acked, but it was back around the time the outage started. Note that this disagrees with 'ip -s link' and tcpdump, which think they transmitted much more recently than that. (The patch is here: https://gfiber-review.googlesource.com/#/c/1250/ ) I captured a pcap of a new 802.11n-capable device joining the network and unblocking the transmit. The action starts around frame 325: http://apenwarr.ca/tmp/iPod4-fixing-iPhone4-trimmed.pcap.gz In this pcap, the main players are: ath9k AP: 88:dc:96:08:60:50 iPhone 4S with the problem: e4:25:e7:73:e6:31 New client fixing the problem (iPod 4): 18:e7:f4:7e:c1:42 Observations from the pcap: - Upstream packets (iPhone->ath9k) are received and acked (see eg. frame 154) - Beacons from the ath9k show an empty TIM bitmap until the iPod joins, then it's nonempty and things unblock. Does anyone have any thoughts about what to look for here? Have fun, Avery
next reply other threads:[~2015-11-04 5:20 UTC|newest] Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-11-04 5:20 Avery Pennarun [this message] 2015-11-04 5:27 ` [ath9k-devel] ath9k(?): AP stops sending traffic to iPhone 4S until another 802.11n-capable STA joins Avery Pennarun -- strict thread matches above, loose matches on Subject: below -- 2015-11-04 5:03 Avery Pennarun 2016-02-16 21:28 ` Avery Pennarun 2016-02-16 22:05 ` Johannes Berg 2016-02-17 4:32 ` Avery Pennarun 2016-02-17 6:23 ` Krishna Chaitanya 2016-02-17 7:05 ` Avery Pennarun
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=CAHqTa-1jwvOSjEwo8c_3-80rBXf91LMVTQkgqed1FPmOR7rXNQ@mail.gmail.com \ --to=apenwarr@gmail.com \ --cc=ath9k-devel@lists.ath9k.org \ --cc=linux-wireless@vger.kernel.org \ --cc=shep@alum.mit.edu \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.