> On Mar 18, 2015, at 10:05 PM, Ian Kent <ra...@themaw.net> wrote: > > On Wed, 2015-03-18 at 21:40 -0600, Pat Fruth wrote: >> 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 <p...@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 >> + */ > > I don't think there's anything to be gained by commenting out the > original line. It only adds extra noise and the change that's been made > is evident from the log. > > Ian >
Thanks Ian. Fair enough. Here’s the patch, this time without the commented line of code. Signed-off-by: Pat Fruth <p...@patfruth.com> --- .../mwlwifi/patches/002_TX-STATUS-for-reassoc-auth.patch | 13 +++++++++++++ 1 file changed, 13 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..f454cc5 --- /dev/null +++ b/package/kernel/mwlwifi/patches/002_TX-STATUS-for-reassoc-auth.patch @@ -0,0 +1,13 @@ +--- a/mwl_tx.c ++++ b/mwl_tx.c +@@ -395,7 +395,9 @@ 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) || ++ 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@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel