PERFORCE change 149557 for review

Sam Leffler sam at FreeBSD.org
Wed Sep 10 18:32:24 UTC 2008


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

Change 149557 by sam at 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
 }


More information about the p4-projects mailing list