Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 16 Jan 2009 20:38:42 +0000 (UTC)
From:      Sam Leffler <sam@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r187342 - head/sbin/ifconfig
Message-ID:  <200901162038.n0GKcgx1017878@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: sam
Date: Fri Jan 16 20:38:42 2009
New Revision: 187342
URL: http://svn.freebsd.org/changeset/base/187342

Log:
  Fix 1/2 and 1/4 width channel handling for non-GSM operation:
  o correct typo that caused random channel selection
  o explicitly add 1/2 and 1/4 width channels because channel lookups match
    flags that include IEEE80211_CHANNEL_HALF and IEEE80211_CHANNEL_QUARTER

Modified:
  head/sbin/ifconfig/ifieee80211.c

Modified: head/sbin/ifconfig/ifieee80211.c
==============================================================================
--- head/sbin/ifconfig/ifieee80211.c	Fri Jan 16 19:43:21 2009	(r187341)
+++ head/sbin/ifconfig/ifieee80211.c	Fri Jan 16 20:38:42 2009	(r187342)
@@ -1806,7 +1806,7 @@ regdomain_addchans(struct ieee80211req_c
 				continue;
 			}
 			if ((flags & IEEE80211_CHAN_QUARTER) &&
-			    ((chanFlags & IEEE80211_CHAN_HALF) == 0 &&
+			    ((chanFlags & IEEE80211_CHAN_QUARTER) == 0 &&
 			     (flags & IEEE80211_CHAN_GSM) == 0)) {
 				if (verbose)
 					printf("%u: skip, device does not support quarter-rate channels\n", freq);
@@ -1900,12 +1900,26 @@ regdomain_makechannels(
 		if (!LIST_EMPTY(&rd->bands_11b))
 			regdomain_addchans(ci, &rd->bands_11b, reg,
 			    IEEE80211_CHAN_B, &dc->dc_chaninfo);
-		if (!LIST_EMPTY(&rd->bands_11g))
+		if (!LIST_EMPTY(&rd->bands_11g)) {
 			regdomain_addchans(ci, &rd->bands_11g, reg,
 			    IEEE80211_CHAN_G, &dc->dc_chaninfo);
-		if (!LIST_EMPTY(&rd->bands_11a))
+			regdomain_addchans(ci, &rd->bands_11g, reg,
+			    IEEE80211_CHAN_G | IEEE80211_CHAN_HALF,
+			    &dc->dc_chaninfo);
+			regdomain_addchans(ci, &rd->bands_11g, reg,
+			    IEEE80211_CHAN_G | IEEE80211_CHAN_QUARTER,
+			    &dc->dc_chaninfo);
+		}
+		if (!LIST_EMPTY(&rd->bands_11a)) {
 			regdomain_addchans(ci, &rd->bands_11a, reg,
 			    IEEE80211_CHAN_A, &dc->dc_chaninfo);
+			regdomain_addchans(ci, &rd->bands_11a, reg,
+			    IEEE80211_CHAN_A | IEEE80211_CHAN_HALF,
+			    &dc->dc_chaninfo);
+			regdomain_addchans(ci, &rd->bands_11a, reg,
+			    IEEE80211_CHAN_A | IEEE80211_CHAN_QUARTER,
+			    &dc->dc_chaninfo);
+		}
 		if (!LIST_EMPTY(&rd->bands_11na)) {
 			regdomain_addchans(ci, &rd->bands_11na, reg,
 			    IEEE80211_CHAN_A | IEEE80211_CHAN_HT20,



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