summaryrefslogtreecommitdiffstats
path: root/sbin/ifconfig/ifieee80211.c
diff options
context:
space:
mode:
authorsam <sam@FreeBSD.org>2009-01-16 20:38:42 +0000
committersam <sam@FreeBSD.org>2009-01-16 20:38:42 +0000
commitd300ae3d738eb4fea9a1ba690e6599eeff2d0924 (patch)
treec2c5efb4f90448e7ea1c6d56e26a21e9bd1a4d4c /sbin/ifconfig/ifieee80211.c
parentb5e5a8df1409088f4cb71a23ef1b49f692acc610 (diff)
downloadFreeBSD-src-d300ae3d738eb4fea9a1ba690e6599eeff2d0924.zip
FreeBSD-src-d300ae3d738eb4fea9a1ba690e6599eeff2d0924.tar.gz
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
Diffstat (limited to 'sbin/ifconfig/ifieee80211.c')
-rw-r--r--sbin/ifconfig/ifieee80211.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/sbin/ifconfig/ifieee80211.c b/sbin/ifconfig/ifieee80211.c
index 1ea7bf6..5c84ba2 100644
--- a/sbin/ifconfig/ifieee80211.c
+++ b/sbin/ifconfig/ifieee80211.c
@@ -1806,7 +1806,7 @@ regdomain_addchans(struct ieee80211req_chaninfo *ci,
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,
OpenPOWER on IntegriCloud