svn commit: r189409 - in projects/vap7/sys: . contrib/pf dev
dev/ath dev/ath/ath_hal dev/ath/ath_hal/ar5210
dev/ath/ath_hal/ar5211 dev/ath/ath_hal/ar5212
dev/ath/ath_hal/ar5312 dev/ath/ath_hal/ar54...
Sam Leffler
sam at FreeBSD.org
Thu Mar 5 08:48:23 PST 2009
Author: sam
Date: Thu Mar 5 16:48:23 2009
New Revision: 189409
URL: http://svn.freebsd.org/changeset/base/189409
Log:
merge r189377: add the desired channel to the scan list if not
already present and compatible with other scan controls
Modified:
projects/vap7/sys/ (props changed)
projects/vap7/sys/contrib/pf/ (props changed)
projects/vap7/sys/dev/ (props changed)
projects/vap7/sys/dev/ath/ (props changed)
projects/vap7/sys/dev/ath/ath_hal/ (props changed)
projects/vap7/sys/dev/ath/ath_hal/ar5210/ (props changed)
projects/vap7/sys/dev/ath/ath_hal/ar5211/ (props changed)
projects/vap7/sys/dev/ath/ath_hal/ar5212/ (props changed)
projects/vap7/sys/dev/ath/ath_hal/ar5312/ (props changed)
projects/vap7/sys/dev/ath/ath_hal/ar5416/ (props changed)
projects/vap7/sys/dev/cxgb/ (props changed)
projects/vap7/sys/dev/usb2/ (props changed)
projects/vap7/sys/i386/conf/USB2 (props changed)
projects/vap7/sys/modules/usb2/ (props changed)
projects/vap7/sys/net80211/ (props changed)
projects/vap7/sys/net80211/ieee80211_scan_sta.c
Modified: projects/vap7/sys/net80211/ieee80211_scan_sta.c
==============================================================================
--- projects/vap7/sys/net80211/ieee80211_scan_sta.c Thu Mar 5 16:46:17 2009 (r189408)
+++ projects/vap7/sys/net80211/ieee80211_scan_sta.c Thu Mar 5 16:48:23 2009 (r189409)
@@ -476,6 +476,18 @@ checktable(const struct scanlist *scan,
return 0;
}
+static int
+onscanlist(const struct ieee80211_scan_state *ss,
+ const struct ieee80211_channel *c)
+{
+ int i;
+
+ for (i = 0; i < ss->ss_last; i++)
+ if (ss->ss_chans[i] == c)
+ return 1;
+ return 0;
+}
+
static void
sweepchannels(struct ieee80211_scan_state *ss, struct ieee80211vap *vap,
const struct scanlist table[])
@@ -524,6 +536,21 @@ sweepchannels(struct ieee80211_scan_stat
/* Add channel to scanning list. */
ss->ss_chans[ss->ss_last++] = c;
}
+ /*
+ * Explicitly add any desired channel if:
+ * - not already on the scan list
+ * - allowed by any desired mode constraint
+ * - there is space in the scan list
+ * This allows the channel to be used when the filtering
+ * mechanisms would otherwise elide it (e.g HT, turbo).
+ */
+ c = vap->iv_des_chan;
+ if (c != IEEE80211_CHAN_ANYC &&
+ !onscanlist(ss, c) &&
+ (vap->iv_des_mode == IEEE80211_MODE_AUTO ||
+ vap->iv_des_mode == ieee80211_chan2mode(c)) &&
+ ss->ss_last < IEEE80211_SCAN_MAX)
+ ss->ss_chans[ss->ss_last++] = c;
}
static void
More information about the svn-src-projects
mailing list