Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 10 Sep 2008 18:32:23 GMT
From:      Sam Leffler <sam@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 149557 for review
Message-ID:  <200809101832.m8AIWNeu056324@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=149557

Change 149557 by sam@sam_ebb on 2008/09/10 18:31:45

	Always update ic_lastnonht so we track overlapping legacy bss
	properly; was doing this only on a change in the protection mode
	so the advertised protection mode in the beacon would oscillate.
	
	Submitted by:	Chris Zimmermann

Affected files ...

.. //depot/projects/vap/sys/net80211/ieee80211_ht.c#50 edit

Differences ...

==== //depot/projects/vap/sys/net80211/ieee80211_ht.c#50 (text+ko) ====

@@ -1103,22 +1103,21 @@
 ieee80211_htprot_update(struct ieee80211com *ic, int protmode)
 {
 #define	OPMODE(x)	SM(x, IEEE80211_HTINFO_OPMODE)
-	if (protmode == ic->ic_curhtprotmode)
-		return;
-	if (OPMODE(ic->ic_curhtprotmode) == IEEE80211_HTINFO_OPMODE_MIXED &&
-	    OPMODE(protmode) == IEEE80211_HTINFO_OPMODE_PROTOPT)
-		return;
+	IEEE80211_LOCK(ic);
 
-	IEEE80211_LOCK(ic);
 	/* track non-HT station presence */
 	KASSERT(protmode & IEEE80211_HTINFO_NONHT_PRESENT,
-	    ("missing NONHT_PRESENT"));
+	    ("protmode 0x%x", protmode));
 	ic->ic_flags_ext |= IEEE80211_FEXT_NONHT_PR;
 	ic->ic_lastnonht = ticks;
 
-	/* push beacon update */
-	ic->ic_curhtprotmode = protmode;
-	htinfo_notify(ic);
+	if (protmode != ic->ic_curhtprotmode &&
+	    (OPMODE(ic->ic_curhtprotmode) != IEEE80211_HTINFO_OPMODE_MIXED ||
+	     OPMODE(protmode) == IEEE80211_HTINFO_OPMODE_PROTOPT)) {
+		/* push beacon update */
+		ic->ic_curhtprotmode = protmode;
+		htinfo_notify(ic);
+	}
 	IEEE80211_UNLOCK(ic);
 #undef OPMODE
 }



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