Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F150389143
D26002.id75889.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
5 KB
Referenced Files
None
Subscribers
None
D26002.id75889.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D26002: 80211: consistently order 160 and 80+80
Attached
Detach File
Event Timeline
Log In to Comment