Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 27 Nov 2005 03:22:27 GMT
From:      Sam Leffler <sam@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 87301 for review
Message-ID:  <200511270322.jAR3MRga038791@repoman.freebsd.org>

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

Change 87301 by sam@sam_ebb on 2005/11/27 03:22:07

	o fix preference for privacy
	o fix bssid/ssid match debug msg; mark match with '*'

Affected files ...

.. //depot/projects/wifi/sys/net80211/ieee80211_scan_sta.c#6 edit

Differences ...

==== //depot/projects/wifi/sys/net80211/ieee80211_scan_sta.c#6 (text+ko) ====

@@ -605,19 +605,21 @@
 static int
 sta_compare(const struct sta_entry *a, const struct sta_entry *b)
 {
+#define	PREFER(_a,_b,_what) do {			\
+	if (((_a) ^ (_b)) & (_what))			\
+		return ((_a) & (_what)) ? 1 : -1;	\
+} while (0)
 	u_int8_t maxa, maxb;
 	int8_t rssia, rssib;
 	int weight;
 
 	/* desired bssid */
-	if ((a->se_flags ^ b->se_flags) & STA_BSSID_MATCH)
-		return (a->se_flags & STA_BSSID_MATCH) ? 1 : -1;
+	PREFER(a->se_flags, b->se_flags, STA_BSSID_MATCH);
 	/* desired ssid */
-	if ((a->se_flags ^ b->se_flags) & STA_SSID_MATCH)
-		return (a->se_flags & STA_SSID_MATCH) ? 1 : -1;
+	PREFER(a->se_flags, b->se_flags, STA_SSID_MATCH);
 	/* privacy support */
-	if ((a->base.se_capinfo ^ b->base.se_capinfo) & IEEE80211_CAPINFO_PRIVACY)
-		return (a->se_flags & IEEE80211_CAPINFO_PRIVACY) ? 1 : -1;
+	PREFER(a->base.se_capinfo, b->base.se_capinfo,
+		IEEE80211_CAPINFO_PRIVACY);
 
 	/* compare count of previous failures */
 	weight = b->se_fails - a->se_fails;
@@ -630,7 +632,7 @@
 	 * comparisons to avoid selecting an ap purely by rssi
 	 * when both values may be good but one ap is otherwise
 	 * more desirable (e.g. an 11b-only ap with stronger
-	 * rssi than an 11g ap).
+	 * signal than an 11g ap).
 	 */
 	rssia = MIN(a->base.se_rssi, STA_RSSI_MAX);
 	rssib = MIN(b->base.se_rssi, STA_RSSI_MAX);
@@ -651,6 +653,7 @@
 	}
 	/* all things being equal, use signal level */
 	return a->base.se_rssi - b->base.se_rssi;
+#undef PREFER
 }
 
 /*
@@ -788,7 +791,7 @@
 		    fail & 0x40 ? '=' : fail & 0x80 ? '^' : fail ? '-' : '+',
 		    ether_sprintf(se->se_macaddr));
 		printf(" %s%c", ether_sprintf(se->se_bssid),
-		    se0->se_flags & STA_BSSID_MATCH ? '!' : ' ');
+		    se0->se_flags & STA_BSSID_MATCH ? '*' : ' ');
 		printf(" %3d%c", ieee80211_chan2ieee(ic, se->se_chan),
 			fail & 0x01 ? '!' : ' ');
 		printf(" %+4d%c", se->se_rssi, fail & 0x100 ? '!' : ' ');
@@ -804,7 +807,7 @@
 		    "wep" : "no",
 		    fail & 0x04 ? '!' : ' ');
 		ieee80211_print_essid(se->se_ssid+2, se->se_ssid[1]);
-		printf("%s\n", se0->se_flags & STA_SSID_MATCH ? "!" : "");
+		printf("%s\n", se0->se_flags & STA_SSID_MATCH ? "*" : "");
 	}
 #endif
 	return fail;



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