Page MenuHomeFreeBSD

D26002.id75889.diff
No OneTemporary

D26002.id75889.diff

Index: head/sbin/ifconfig/ifieee80211.c
===================================================================
--- head/sbin/ifconfig/ifieee80211.c
+++ head/sbin/ifconfig/ifieee80211.c
@@ -2176,8 +2176,6 @@
/*
* VHT first - HT is a subset.
- *
- * XXX TODO: VHT80P80, VHT160 is not yet done.
*/
if (flags & IEEE80211_CHAN_VHT) {
if ((chanFlags & IEEE80211_CHAN_VHT20) &&
@@ -2201,7 +2199,20 @@
"VHT80 channel\n", freq);
continue;
}
-
+ if ((chanFlags & IEEE80211_CHAN_VHT160) &&
+ (flags & IEEE80211_CHAN_VHT160) == 0) {
+ if (verbose)
+ printf("%u: skip, not a "
+ "VHT160 channel\n", freq);
+ continue;
+ }
+ if ((chanFlags & IEEE80211_CHAN_VHT80P80) &&
+ (flags & IEEE80211_CHAN_VHT80P80) == 0) {
+ if (verbose)
+ printf("%u: skip, not a "
+ "VHT80+80 channel\n", freq);
+ continue;
+ }
flags &= ~IEEE80211_CHAN_VHT;
flags |= chanFlags & IEEE80211_CHAN_VHT;
}
@@ -3958,8 +3969,11 @@
if (IEEE80211_IS_CHAN_TURBO(c))
strlcat(buf, " Turbo", bsize);
if (precise) {
- /* XXX should make VHT80U, VHT80D */
- if (IEEE80211_IS_CHAN_VHT80(c) &&
+ if (IEEE80211_IS_CHAN_VHT80P80(c))
+ strlcat(buf, " vht/80p80", bsize);
+ else if (IEEE80211_IS_CHAN_VHT160(c))
+ strlcat(buf, " vht/160", bsize);
+ else if (IEEE80211_IS_CHAN_VHT80(c) &&
IEEE80211_IS_CHAN_HT40D(c))
strlcat(buf, " vht/80-", bsize);
else if (IEEE80211_IS_CHAN_VHT80(c) &&
@@ -4013,10 +4027,11 @@
static int
chanpref(const struct ieee80211_channel *c)
{
+
+ if (IEEE80211_IS_CHAN_VHT80P80(c))
+ return 90;
if (IEEE80211_IS_CHAN_VHT160(c))
return 80;
- if (IEEE80211_IS_CHAN_VHT80P80(c))
- return 75;
if (IEEE80211_IS_CHAN_VHT80(c))
return 70;
if (IEEE80211_IS_CHAN_VHT40(c))
Index: head/sys/net80211/_ieee80211.h
===================================================================
--- head/sys/net80211/_ieee80211.h
+++ head/sys/net80211/_ieee80211.h
@@ -157,7 +157,7 @@
/*
* Note: for VHT operation we will need significantly more than
* IEEE80211_CHAN_MAX channels because of the combinations of
- * VHT20, VHT40, VHT80, VHT80+80 and VHT160.
+ * VHT20, VHT40, VHT80, VHT160, and VHT80+80.
*/
#define IEEE80211_CHAN_MAX 1024
#define IEEE80211_CHAN_BYTES howmany(IEEE80211_CHAN_MAX, NBBY)
@@ -194,8 +194,8 @@
#define IEEE80211_CHAN_VHT40U 0x02000000 /* VHT40 channel, ext above */
#define IEEE80211_CHAN_VHT40D 0x04000000 /* VHT40 channel, ext below */
#define IEEE80211_CHAN_VHT80 0x08000000 /* VHT80 channel */
-#define IEEE80211_CHAN_VHT80P80 0x10000000 /* VHT80+80 channel */
-#define IEEE80211_CHAN_VHT160 0x20000000 /* VHT160 channel */
+#define IEEE80211_CHAN_VHT160 0x10000000 /* VHT160 channel */
+#define IEEE80211_CHAN_VHT80P80 0x20000000 /* VHT80+80 channel */
/* XXX note: 0x80000000 is used in src/sbin/ifconfig/ifieee80211.c :( */
#define IEEE80211_CHAN_HT40 (IEEE80211_CHAN_HT40U | IEEE80211_CHAN_HT40D)
@@ -203,14 +203,14 @@
#define IEEE80211_CHAN_VHT40 (IEEE80211_CHAN_VHT40U | IEEE80211_CHAN_VHT40D)
#define IEEE80211_CHAN_VHT (IEEE80211_CHAN_VHT20 | IEEE80211_CHAN_VHT40 \
- | IEEE80211_CHAN_VHT80 | IEEE80211_CHAN_VHT80P80 \
- | IEEE80211_CHAN_VHT160)
+ | IEEE80211_CHAN_VHT80 | IEEE80211_CHAN_VHT160 \
+ | IEEE80211_CHAN_VHT80P80)
#define IEEE80211_CHAN_BITS \
"\20\1PRIV0\2PRIV2\3PRIV3\4PRIV4\5TURBO\6CCK\7OFDM\0102GHZ\0115GHZ" \
"\12PASSIVE\13DYN\14GFSK\15GSM\16STURBO\17HALF\20QUARTER\21HT20" \
"\22HT40U\23HT40D\24DFS\0254MSXMIT\26NOADHOC\27NOHOSTAP\03011D" \
- "\031VHT20\032VHT40U\033VHT40D\034VHT80\035VHT80P80\036VHT160"
+ "\031VHT20\032VHT40U\033VHT40D\034VHT80\035VHT160\036VHT80P80"
/*
* Useful combinations of channel characteristics.
@@ -337,10 +337,10 @@
((_c)->ic_flags & IEEE80211_CHAN_VHT) != 0)
#define IEEE80211_IS_CHAN_VHT80(_c) \
(((_c)->ic_flags & IEEE80211_CHAN_VHT80) != 0)
-#define IEEE80211_IS_CHAN_VHT80P80(_c) \
- (((_c)->ic_flags & IEEE80211_CHAN_VHT80P80) != 0)
#define IEEE80211_IS_CHAN_VHT160(_c) \
(((_c)->ic_flags & IEEE80211_CHAN_VHT160) != 0)
+#define IEEE80211_IS_CHAN_VHT80P80(_c) \
+ (((_c)->ic_flags & IEEE80211_CHAN_VHT80P80) != 0)
#define IEEE80211_CHAN2IEEE(_c) (_c)->ic_ieee
Index: head/sys/net80211/ieee80211.c
===================================================================
--- head/sys/net80211/ieee80211.c
+++ head/sys/net80211/ieee80211.c
@@ -1367,8 +1367,8 @@
IEEE80211_CHAN_HT40D | IEEE80211_CHAN_VHT80;
}
- /* XXX VHT80+80 */
/* XXX VHT160 */
+ /* XXX VHT80+80 */
flags[nmodes] = 0;
}
@@ -1555,6 +1555,9 @@
* check used for (V)HT40.
*/
is_vht = !! (flags[j] & IEEE80211_CHAN_VHT);
+
+ /* XXX TODO FIXME VHT80P80. */
+ /* XXX TODO FIXME VHT160. */
/*
* Test for VHT80.
Index: head/sys/net80211/ieee80211_vht.c
===================================================================
--- head/sys/net80211/ieee80211_vht.c
+++ head/sys/net80211/ieee80211_vht.c
@@ -211,10 +211,10 @@
/* Channel width */
ic_printf(ic, "[VHT] Channel Widths: 20MHz, 40MHz, 80MHz");
- if (MS(ic->ic_vhtcaps, IEEE80211_VHTCAP_SUPP_CHAN_WIDTH_MASK) == 2)
- printf(" 80+80MHz");
if (MS(ic->ic_vhtcaps, IEEE80211_VHTCAP_SUPP_CHAN_WIDTH_MASK) >= 1)
printf(" 160MHz");
+ if (MS(ic->ic_vhtcaps, IEEE80211_VHTCAP_SUPP_CHAN_WIDTH_MASK) == 2)
+ printf(" 80+80MHz");
printf("\n");
/* Features */

File Metadata

Mime Type
text/plain
Expires
Wed, Apr 1, 7:28 PM (21 h, 40 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
30675764
Default Alt Text
D26002.id75889.diff (5 KB)

Event Timeline