From owner-svn-src-all@FreeBSD.ORG Fri Apr 25 01:20:11 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 70CD15F7; Fri, 25 Apr 2014 01:20:11 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 43DC317A6; Fri, 25 Apr 2014 01:20:11 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.8/8.14.8) with ESMTP id s3P1KBtV043436; Fri, 25 Apr 2014 01:20:11 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.8/8.14.8/Submit) id s3P1KBAt043435; Fri, 25 Apr 2014 01:20:11 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201404250120.s3P1KBAt043435@svn.freebsd.org> From: Adrian Chadd Date: Fri, 25 Apr 2014 01:20:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r264906 - head/sys/net80211 X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 25 Apr 2014 01:20:11 -0000 Author: adrian Date: Fri Apr 25 01:20:10 2014 New Revision: 264906 URL: http://svnweb.freebsd.org/changeset/base/264906 Log: Add a SLEEP->SCAN transition. Without this a disassociate or scan request during SLEEP results in a hang. Whilst I'm here, add in some disabled code that will transition to RUN if there's multicast traffic. It's not needed for Atheros hardware but it may be for other hardware. Tested: * AR5416, STA mode (powersave) * AR5212, STA mode (powersave) Modified: head/sys/net80211/ieee80211_sta.c Modified: head/sys/net80211/ieee80211_sta.c ============================================================================== --- head/sys/net80211/ieee80211_sta.c Thu Apr 24 23:56:56 2014 (r264905) +++ head/sys/net80211/ieee80211_sta.c Fri Apr 25 01:20:10 2014 (r264906) @@ -300,12 +300,18 @@ sta_newstate(struct ieee80211vap *vap, e if (vap->iv_roaming == IEEE80211_ROAMING_AUTO) ieee80211_check_scan_current(vap); break; + case IEEE80211_S_SLEEP: /* beacon miss */ + /* + * XXX if in sleep we need to wakeup the hardware. + */ + /* FALLTHROUGH */ case IEEE80211_S_RUN: /* beacon miss */ /* * Beacon miss. Notify user space and if not * under control of a user application (roaming * manual) kick off a scan to re-connect. */ + ieee80211_sta_leave(ni); if (vap->iv_roaming == IEEE80211_ROAMING_AUTO) ieee80211_check_scan_current(vap); @@ -1417,19 +1423,12 @@ sta_recv_mgmt(struct ieee80211_node *ni, * for the multicast bit being set. */ #if 0 - if ((tim->tim_bitctl & 1) || - (min <= ix && ix <= max && - isset(tim->tim_bitmap - min, aid))) { - /* - * XXX Do not let bg scan kick off - * we are expecting data. - */ + if (tim->tim_bitctl & 1) { ieee80211_sta_tim_notify(vap, 1); ic->ic_lastdata = ticks; - // XXX not yet? -// vap->iv_sta_ps(vap, 0); } #endif + ni->ni_dtim_count = tim->tim_count; ni->ni_dtim_period = tim->tim_period; }