Page MenuHomeFreeBSD

D35977.id108681.diff
No OneTemporary

D35977.id108681.diff

Index: sys/net80211/ieee80211.h
===================================================================
--- sys/net80211/ieee80211.h
+++ sys/net80211/ieee80211.h
@@ -1009,10 +1009,16 @@
IEEE80211_ELEMID_MESHPXUC = 138,
IEEE80211_ELEMID_MESHAH = 60, /* XXX: remove */
- /* 802.11ac */
+ /* 802.11ac-2013, Table 8-54-Element IDs */
IEEE80211_ELEMID_VHT_CAP = 191,
IEEE80211_ELEMID_VHT_OPMODE = 192,
+ IEEE80211_ELEMID_EXTENDED_BSS_LOAD = 193,
+ IEEE80211_ELEMID_WIDE_BW_CHANNEL_SWITCH = 194,
IEEE80211_ELEMID_VHT_PWR_ENV = 195,
+ IEEE80211_ELEMID_CHANNEL_SWITCH_WRAPPER = 196,
+ IEEE80211_ELEMID_AID = 197,
+ IEEE80211_ELEMID_QUIET_CHANNEL = 198,
+ IEEE80211_ELEMID_OPMODE_NOTIF = 199,
};
struct ieee80211_tim_ie {
Index: sys/net80211/ieee80211.c
===================================================================
--- sys/net80211/ieee80211.c
+++ sys/net80211/ieee80211.c
@@ -2204,7 +2204,11 @@
status |= IFM_IEEE80211_MBSS;
break;
}
- if (IEEE80211_IS_CHAN_HTA(chan)) {
+ if (IEEE80211_IS_CHAN_VHT_5GHZ(chan)) {
+ status |= IFM_IEEE80211_VHT5G;
+ } else if (IEEE80211_IS_CHAN_VHT_2GHZ(chan)) {
+ status |= IFM_IEEE80211_VHT2G;
+ } else if (IEEE80211_IS_CHAN_HTA(chan)) {
status |= IFM_IEEE80211_11NA;
} else if (IEEE80211_IS_CHAN_HTG(chan)) {
status |= IFM_IEEE80211_11NG;
Index: sys/net80211/ieee80211_ddb.c
===================================================================
--- sys/net80211/ieee80211_ddb.c
+++ sys/net80211/ieee80211_ddb.c
@@ -236,7 +236,7 @@
{
int i;
- db_printf("%p: mac %s refcnt %d\n", ni,
+ db_printf("STA: %p: mac %s refcnt %d\n", ni,
ether_sprintf(ni->ni_macaddr), ieee80211_node_refcnt(ni));
db_printf("\tvap %p wdsvap %p ic %p table %p\n",
ni->ni_vap, ni->ni_wdsvap, ni->ni_ic, ni->ni_table);
@@ -254,6 +254,9 @@
ni->ni_ies.ath_ie);
db_printf("\t htcap_ie %p htinfo_ie %p]\n",
ni->ni_ies.htcap_ie, ni->ni_ies.htinfo_ie);
+ db_printf("\t vhtcap_ie %p vhtopmode_ie %p vhtpwrenv_ie %p]\n",
+ ni->ni_ies.vhtcap_ie, ni->ni_ies.vhtopmode_ie,
+ ni->ni_ies.vhtpwrenv_ie);
if (ni->ni_flags & IEEE80211_NODE_QOS) {
for (i = 0; i < WME_NUM_TID; i++) {
if (ni->ni_txseqs[i] || ni->ni_rxseqs[i])
@@ -263,6 +266,7 @@
ni->ni_rxseqs[i] & IEEE80211_SEQ_FRAG_MASK);
}
}
+
db_printf("\ttxseq %u rxseq %u fragno %u rxfragstamp %u\n",
ni->ni_txseqs[IEEE80211_NONQOS_TID],
ni->ni_rxseqs[IEEE80211_NONQOS_TID] >> IEEE80211_SEQ_SEQ_SHIFT,
@@ -307,6 +311,21 @@
ni->ni_mlstate, IEEE80211_MESH_MLSTATE_BITS,
ni->ni_mllid, ni->ni_mlpid, ni->ni_mlrcnt, ni->ni_mltval);
#endif
+
+ /* VHT state */
+ db_printf("\tvhtcap %b vht_basicmcs %#06x vht_pad2 %#06x\n",
+ ni->ni_vhtcap, IEEE80211_VHTCAP_BITS,
+ ni->ni_vht_basicmcs, ni->ni_vht_pad2);
+ db_printf("\tvht_mcsinfo: { rx_mcs_map %#06x rx_highest %#06x "
+ "tx_mcs_map %#06x tx_highest %#06x }\n",
+ ni->ni_vht_mcsinfo.rx_mcs_map, ni->ni_vht_mcsinfo.rx_highest,
+ ni->ni_vht_mcsinfo.tx_mcs_map, ni->ni_vht_mcsinfo.tx_highest);
+ db_printf("\tvht_chan1/chan2 %u/%u vht_chanwidth %#04x\n",
+ ni->ni_vht_chan1, ni->ni_vht_chan2, ni->ni_vht_chanwidth);
+ db_printf("\tvht_pad1 %#04x vht_spare { %#x %#x %#x %#x %#x %#x %#x %#x }\n",
+ ni->ni_vht_pad1, ni->ni_vht_spare[0], ni->ni_vht_spare[1],
+ ni->ni_vht_spare[2], ni->ni_vht_spare[3], ni->ni_vht_spare[4],
+ ni->ni_vht_spare[5], ni->ni_vht_spare[6], ni->ni_vht_spare[7]);
}
#ifdef IEEE80211_SUPPORT_TDMA
@@ -334,7 +353,7 @@
const struct ieee80211com *ic = vap->iv_ic;
int i;
- db_printf("%p:", vap);
+ db_printf("VAP %p:", vap);
db_printf(" bss %p", vap->iv_bss);
db_printf(" myaddr %s", ether_sprintf(vap->iv_myaddr));
db_printf("\n");
@@ -364,6 +383,7 @@
db_printf("\tflags_ven=%b\n", vap->iv_flags_ven, IEEE80211_FVEN_BITS);
db_printf("\tcaps=%b\n", vap->iv_caps, IEEE80211_C_BITS);
db_printf("\thtcaps=%b\n", vap->iv_htcaps, IEEE80211_C_HTCAP_BITS);
+ db_printf("\tvhtcaps=%b\n", vap->iv_vhtcaps, IEEE80211_VHTCAP_BITS);
_db_show_stats(&vap->iv_stats);
@@ -518,7 +538,7 @@
{
struct ieee80211vap *vap;
- db_printf("%p:", ic);
+ db_printf("COM: %p:", ic);
TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next)
db_printf(" %s(%p)", vap->iv_ifp->if_xname, vap);
db_printf("\n");
@@ -543,6 +563,7 @@
db_printf("\tcryptocaps=%b\n",
ic->ic_cryptocaps, IEEE80211_CRYPTO_BITS);
db_printf("\thtcaps=%b\n", ic->ic_htcaps, IEEE80211_HTCAP_BITS);
+ db_printf("\tvhtcaps=%b\n", ic->ic_vhtcaps, IEEE80211_VHTCAP_BITS);
#if 0
uint8_t ic_modecaps[2]; /* set of mode capabilities */
Index: sys/net80211/ieee80211_radiotap.h
===================================================================
--- sys/net80211/ieee80211_radiotap.h
+++ sys/net80211/ieee80211_radiotap.h
@@ -427,6 +427,7 @@
/* #define IEEE80211_RADIOTAP_HE_DATA3_STBC 0x8000 */
#define IEEE80211_RADIOTAP_HE_DATA4_SU_MU_SPTL_REUSE 0x000F
+#define IEEE80211_RADIOTAP_HE_DATA4_MU_STA_ID 0x7FF0
#define IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE1 0x000F
#define IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE2 0x00F0
#define IEEE80211_RADIOTAP_HE_DATA4_TB_SPTL_REUSE3 0x0F00
Index: sys/net80211/ieee80211_var.h
===================================================================
--- sys/net80211/ieee80211_var.h
+++ sys/net80211/ieee80211_var.h
@@ -695,7 +695,8 @@
"\20\2INACT\3SCANWAIT\4BGSCAN\5WPS\6TSN\7SCANREQ\10RESUME" \
"\0114ADDR\12NONEPR_PR\13SWBMISS\14DFS\15DOTD\16STATEWAIT\17REINIT" \
"\20BPF\21WDSLEGACY\22PROBECHAN\23UNIQMAC\24SCAN_OFFLOAD\25SEQNO_OFFLOAD" \
- "\26VHT\27QUIET_IE"
+ "\26FRAG_OFFLOAD\27VHT" \
+ "\30QUIET_IE\31UAPSD"
/* ic_flags_ht/iv_flags_ht */
#define IEEE80211_FHT_NONHT_PR 0x00000001 /* STATUS: non-HT sta present */
@@ -933,10 +934,10 @@
ieee80211_vhtchanflags(const struct ieee80211_channel *c)
{
- if (IEEE80211_IS_CHAN_VHT80P80(c))
- return IEEE80211_FVHT_USEVHT80P80;
if (IEEE80211_IS_CHAN_VHT160(c))
return IEEE80211_FVHT_USEVHT160;
+ if (IEEE80211_IS_CHAN_VHT80P80(c))
+ return IEEE80211_FVHT_USEVHT80P80;
if (IEEE80211_IS_CHAN_VHT80(c))
return IEEE80211_FVHT_USEVHT80;
if (IEEE80211_IS_CHAN_VHT40(c))
Index: sys/net80211/ieee80211_vht.c
===================================================================
--- sys/net80211/ieee80211_vht.c
+++ sys/net80211/ieee80211_vht.c
@@ -797,7 +797,7 @@
struct ieee80211_channel *c;
/* First case - handle channel demotion - if VHT isn't set */
- if ((flags & IEEE80211_FVHT_VHT) == 0) {
+ if ((flags & IEEE80211_FVHT_MASK) == 0) {
#if 0
printf("%s: demoting channel %d/0x%08x\n", __func__,
chan->ic_ieee, chan->ic_flags);
@@ -822,7 +822,7 @@
/* Start with VHT80 */
c = NULL;
if ((c == NULL) && (flags & IEEE80211_FVHT_USEVHT160))
- c = findvhtchan(ic, chan, IEEE80211_CHAN_VHT80);
+ c = findvhtchan(ic, chan, IEEE80211_CHAN_VHT160);
if ((c == NULL) && (flags & IEEE80211_FVHT_USEVHT80P80))
c = findvhtchan(ic, chan, IEEE80211_CHAN_VHT80P80);

File Metadata

Mime Type
text/plain
Expires
Wed, Mar 18, 4:20 AM (9 h, 15 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29878856
Default Alt Text
D35977.id108681.diff (6 KB)

Event Timeline