From patchwork Thu Mar 19 03:40:37 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Pat Fruth X-Patchwork-Id: 451720 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from arrakis.dune.hu (arrakis.dune.hu [78.24.191.176]) (using TLSv1.1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id BC9281400B7 for ; Thu, 19 Mar 2015 14:41:12 +1100 (AEDT) Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id A54CE2807A3; Thu, 19 Mar 2015 04:40:20 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on arrakis.dune.hu X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=BAYES_00, T_RP_MATCHES_RCVD autolearn=unavailable version=3.3.2 Received: from arrakis.dune.hu (localhost [127.0.0.1]) by arrakis.dune.hu (Postfix) with ESMTP id 95D24280697 for ; Thu, 19 Mar 2015 04:40:13 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 CL_IP_EQ_FROM_MX=-3.1; rate: -7.6 Received: from patfruth.com (patfruth.com [70.57.37.193]) by arrakis.dune.hu (Postfix) with ESMTPS for ; Thu, 19 Mar 2015 04:40:12 +0100 (CET) Received: by patfruth.com (Postfix, from userid 1001) id 578314D2; Wed, 18 Mar 2015 21:40:56 -0600 (MDT) Received: from [192.168.1.53] (patfruth.com [70.57.37.193]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: pat) by patfruth.com (Postfix) with ESMTPSA id D869278; Wed, 18 Mar 2015 21:40:55 -0600 (MDT) From: Pat Fruth Date: Wed, 18 Mar 2015 21:40:37 -0600 Message-Id: To: openwrt-devel@lists.openwrt.org Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2070.6\)) X-Mailer: Apple Mail (2.2070.6) Subject: [OpenWrt-Devel] [PATCH] [package] mwlwifi: generate TX_STATUS event on transmitting auth, associate, and reallocate responses X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: openwrt-devel-bounces@lists.openwrt.org Sender: "openwrt-devel" 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 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 + */