[OpenWrt-Devel] [PATCH] [package] mwlwifi: generate TX_STATUS event on transmitting auth, associate, and reallocate responses

2015-03-18 Thread Pat Fruth
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 
---
 .../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 000..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@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel


Re: [OpenWrt-Devel] [PATCH v2] [package] mwlwifi: generate TX_STATUS event on transmitting auth, associate, and reallocate responses

2015-03-19 Thread Pat Fruth

> On Mar 18, 2015, at 10:05 PM, Ian Kent  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 
>> ---
>> .../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 000..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 
---
 .../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 000..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