PERFORCE change 141938 for review

Sam Leffler sam at FreeBSD.org
Tue May 20 23:15:31 UTC 2008


http://perforce.freebsd.org/chv.cgi?CH=141938

Change 141938 by sam at sam_ebb on 2008/05/20 23:15:16

	Ignore sw beacon miss events when scanning.  This is kind of a hack
	but it is insufficient to manipulate the vap's timer on scan start/end
	as there may be multiple sta vap's present when a scan is done.

Affected files ...

.. //depot/projects/vap/sys/net80211/ieee80211_proto.c#31 edit

Differences ...

==== //depot/projects/vap/sys/net80211/ieee80211_proto.c#31 (text+ko) ====

@@ -1323,8 +1323,23 @@
 ieee80211_swbmiss(void *arg)
 {
 	struct ieee80211vap *vap = arg;
+	struct ieee80211com *ic = vap->iv_ic;
+
+	/* XXX sleep state? */
+	KASSERT(vap->iv_state == IEEE80211_S_RUN,
+	    ("wrong state %d", vap->iv_state));
 
-	if (vap->iv_swbmiss_count == 0) {
+	if (ic->ic_flags & IEEE80211_F_SCAN) {
+		/*
+		 * If scanning just ignore and reset state.  It's awkward
+		 * to reset the swbmiss timer on scan start/end so instead
+		 * we do this.  If get a bmiss after coming out of scan
+		 * because we haven't had time to receive a beacon then
+		 * we should probe the AP before posting a real bmiss
+		 * (unless iv_bmiss_max has been artifiically lowered).
+		 */
+		vap->iv_swbmiss_count = 0;
+	} else if (vap->iv_swbmiss_count == 0) {
 		if (vap->iv_bmiss != NULL)
 			vap->iv_bmiss(vap);
 		if (vap->iv_bmiss_count == 0)	/* don't re-arm timer */


More information about the p4-projects mailing list