Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 31 Aug 2009 21:25:49 +0000 (UTC)
From:      Sam Leffler <sam@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r196717 - head/sys/dev/ath
Message-ID:  <200908312125.n7VLPnQL039502@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: sam
Date: Mon Aug 31 21:25:49 2009
New Revision: 196717
URL: http://svn.freebsd.org/changeset/base/196717

Log:
  On resume in sta mode program the beacon timers so when roaming (and
  the previous ap is no longer in range) the device will deliver bmiss
  interrupts and trigger the state machine.  Also arrange to sync the
  beacon timers on the next received beacon frame so that when we don't
  roam we re-synchronize with the ap.
  
  Tested by:	trasz
  MFC after:	1 week

Modified:
  head/sys/dev/ath/if_ath.c

Modified: head/sys/dev/ath/if_ath.c
==============================================================================
--- head/sys/dev/ath/if_ath.c	Mon Aug 31 21:07:05 2009	(r196716)
+++ head/sys/dev/ath/if_ath.c	Mon Aug 31 21:25:49 2009	(r196717)
@@ -1236,7 +1236,16 @@ ath_resume(struct ath_softc *sc)
 	if (sc->sc_resume_up) {
 		if (ic->ic_opmode == IEEE80211_M_STA) {
 			ath_init(sc);
-			ieee80211_beacon_miss(ic);
+			/*
+			 * Program the beacon registers using the last rx'd
+			 * beacon frame and enable sync on the next beacon
+			 * we see.  This should handle the case where we
+			 * wakeup and find the same AP and also the case where
+			 * we wakeup and need to roam.  For the latter we
+			 * should get bmiss events that trigger a roam.
+			 */
+			ath_beacon_config(sc, NULL);
+			sc->sc_syncbeacon = 1;
 		} else
 			ieee80211_resume_all(ic);
 	}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200908312125.n7VLPnQL039502>