[OpenWrt-Devel] [PATCH] [package] mwlwifi: generate TX_STATUS event on transmitting auth, associate, and reallocate responses
Pat Fruth
pat at patfruth.com
Wed Mar 18 23:40:37 EDT 2015
This patch addresses an issue specific to Apple devices experiencing a wireless disconnect when trying to associate with either 2.4Ghz or 5Ghz wifi of a Linksys WRT1900AC router.
Apple devices (MacBooks running Mac OS X 10.10.x Yosemite in particular, but there may be others), appear to re-auth/re-associate within approximately 25 seconds of initially associating.
Evidence of this can be seen by the presence of an entry similar to the following in the Apple system logs;
MM/DD/YY HH:MM:SS.sss AM kernel[0]: wl0: Roamed or switched channel, reason #8, bssid xx:xx:xx:xx:xx:xx
The Marvell wifi driver doesn’t generate a NL80211_CMD_FRAME_TX_STATUS event on transmitting a response to auth and/or reassociate requests. Thus, the respective callback handler functions (in hostapd’s ieee802_11.c) never get driven, ultimately leading to the problem.
The patch causes a TX_STATUS event to be generated for auth and reassociate request’s responses, in addition to associate request’s responses.
Signed-off-by: Pat Fruth <pat at patfruth.comt>
---
.../mwlwifi/patches/002_TX-STATUS-for-reassoc-auth.patch | 14 ++++++++++++++
1 file changed, 14 insertions(+)
create mode 100644 package/kernel/mwlwifi/patches/002_TX-STATUS-for-reassoc-auth.patch
diff --git a/package/kernel/mwlwifi/patches/002_TX-STATUS-for-reassoc-auth.patch b/package/kernel/mwlwifi/patches/002_TX-STATUS-for-reassoc-auth.patch
new file mode 100644
index 0000000..5f0d7fb
--- /dev/null
+++ b/package/kernel/mwlwifi/patches/002_TX-STATUS-for-reassoc-auth.patch
@@ -0,0 +1,14 @@
+--- a/mwl_tx.c
++++ b/mwl_tx.c
+@@ -395,7 +395,10 @@ void mwl_tx_done(unsigned long data)
+
+ tr = (struct mwl_dma_data *)done_skb->data;
+
+- if (ieee80211_is_assoc_resp(tr->wh.frame_control)) {
++ // if (ieee80211_is_assoc_resp(tr->wh.frame_control)) {
++ if (ieee80211_is_assoc_resp(tr->wh.frame_control) ||
++ ieee80211_is_reassoc_resp(tr->wh.frame_control) ||
++ ieee80211_is_auth(tr->wh.frame_control)) {
+
+ /* Remove H/W dma header
+ */
--
1.9.1
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list