Page MenuHomeFreeBSD

D42421.id.diff
No OneTemporary

D42421.id.diff

diff --git a/sys/compat/linuxkpi/common/src/linux_80211.c b/sys/compat/linuxkpi/common/src/linux_80211.c
--- a/sys/compat/linuxkpi/common/src/linux_80211.c
+++ b/sys/compat/linuxkpi/common/src/linux_80211.c
@@ -3556,16 +3556,16 @@
if (hw->wiphy->bands[NL80211_BAND_5GHZ]->vht_cap.vht_supported){
ic->ic_flags_ext |= IEEE80211_FEXT_VHT;
- ic->ic_vhtcaps =
+ ic->ic_vht_cap.vht_cap_info =
hw->wiphy->bands[NL80211_BAND_5GHZ]->vht_cap.cap;
setbit(bands, IEEE80211_MODE_VHT_5GHZ);
chan_flags |= NET80211_CBW_FLAG_VHT80;
if (IEEE80211_VHTCAP_SUPP_CHAN_WIDTH_IS_160MHZ(
- ic->ic_vhtcaps))
+ ic->ic_vht_cap.vht_cap_info))
chan_flags |= NET80211_CBW_FLAG_VHT160;
if (IEEE80211_VHTCAP_SUPP_CHAN_WIDTH_IS_160_80P80MHZ(
- ic->ic_vhtcaps))
+ ic->ic_vht_cap.vht_cap_info))
chan_flags |= NET80211_CBW_FLAG_VHT80P80;
}
#endif
diff --git a/sys/net80211/ieee80211.c b/sys/net80211/ieee80211.c
--- a/sys/net80211/ieee80211.c
+++ b/sys/net80211/ieee80211.c
@@ -553,7 +553,7 @@
vap->iv_htextcaps = ic->ic_htextcaps;
/* 11ac capabilities - XXX methodize */
- vap->iv_vht_cap.vht_cap_info = ic->ic_vhtcaps;
+ vap->iv_vht_cap.vht_cap_info = ic->ic_vht_cap.vht_cap_info;
vap->iv_vhtextcaps = ic->ic_vhtextcaps;
vap->iv_opmode = opmode;
@@ -944,9 +944,9 @@
break;
}
if (bit)
- ic->ic_flags_vht |= flag;
+ ic->ic_vht_flags |= flag;
else
- ic->ic_flags_vht &= ~flag;
+ ic->ic_vht_flags &= ~flag;
}
void
diff --git a/sys/net80211/ieee80211_ddb.c b/sys/net80211/ieee80211_ddb.c
--- a/sys/net80211/ieee80211_ddb.c
+++ b/sys/net80211/ieee80211_ddb.c
@@ -672,7 +672,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);
+ db_printf("\tvhtcaps=%b\n", ic->ic_vht_cap.vht_cap_info, IEEE80211_VHTCAP_BITS);
#if 0
uint8_t ic_modecaps[2]; /* set of mode capabilities */
diff --git a/sys/net80211/ieee80211_ioctl.c b/sys/net80211/ieee80211_ioctl.c
--- a/sys/net80211/ieee80211_ioctl.c
+++ b/sys/net80211/ieee80211_ioctl.c
@@ -711,7 +711,7 @@
dc->dc_drivercaps = ic->ic_caps;
dc->dc_cryptocaps = ic->ic_cryptocaps;
dc->dc_htcaps = ic->ic_htcaps;
- dc->dc_vhtcaps = ic->ic_vhtcaps;
+ dc->dc_vhtcaps = ic->ic_vht_cap.vht_cap_info;
ci = &dc->dc_chaninfo;
ic->ic_getradiocaps(ic, maxchans, &ci->ic_nchans, ci->ic_chans);
KASSERT(ci->ic_nchans <= maxchans,
diff --git a/sys/net80211/ieee80211_node.c b/sys/net80211/ieee80211_node.c
--- a/sys/net80211/ieee80211_node.c
+++ b/sys/net80211/ieee80211_node.c
@@ -809,7 +809,7 @@
* based on what HT has done; it may further promote the
* channel to VHT80 or above.
*/
- if (ic->ic_vhtcaps != 0) {
+ if (ic->ic_vht_cap.vht_cap_info != 0) {
int flags = getvhtadjustflags(ic);
if (flags > ieee80211_vhtchanflags(c))
c = ieee80211_vht_adjust_channel(ic, c, flags);
diff --git a/sys/net80211/ieee80211_regdomain.c b/sys/net80211/ieee80211_regdomain.c
--- a/sys/net80211/ieee80211_regdomain.c
+++ b/sys/net80211/ieee80211_regdomain.c
@@ -149,10 +149,10 @@
if (isset(bands, IEEE80211_MODE_VHT_5GHZ)) {
cbw_flags |= NET80211_CBW_FLAG_HT40; /* Make sure this is set; or assert? */
cbw_flags |= NET80211_CBW_FLAG_VHT80;
- if (IEEE80211_VHTCAP_SUPP_CHAN_WIDTH_IS_160MHZ(ic->ic_vhtcaps))
+ if (IEEE80211_VHTCAP_SUPP_CHAN_WIDTH_IS_160MHZ(ic->ic_vht_cap.vht_cap_info))
cbw_flags |= NET80211_CBW_FLAG_VHT160;
if (IEEE80211_VHTCAP_SUPP_CHAN_WIDTH_IS_160_80P80MHZ(
- ic->ic_vhtcaps))
+ ic->ic_vht_cap.vht_cap_info))
cbw_flags |= NET80211_CBW_FLAG_VHT80P80;
ieee80211_add_channel_list_5ghz(chans, IEEE80211_CHAN_MAX,
nchans, def_chan_5ghz_band1, nitems(def_chan_5ghz_band1),
diff --git a/sys/net80211/ieee80211_var.h b/sys/net80211/ieee80211_var.h
--- a/sys/net80211/ieee80211_var.h
+++ b/sys/net80211/ieee80211_var.h
@@ -240,10 +240,9 @@
uint8_t ic_txstream; /* # TX streams */
/* VHT information */
- uint32_t ic_vhtcaps; /* VHT capabilities */
+ uint32_t ic_vht_flags; /* VHT state flags */
+ struct ieee80211_vht_cap ic_vht_cap; /* VHT capabilities + MCS info */
uint32_t ic_vhtextcaps; /* VHT extended capabilities (TODO) */
- struct ieee80211_vht_mcs_info ic_vht_mcsinfo; /* Support TX/RX VHT MCS */
- uint32_t ic_flags_vht; /* VHT state flags */
uint32_t ic_vht_spare[3];
/* optional state for Atheros SuperG protocol extensions */
diff --git a/sys/net80211/ieee80211_vht.c b/sys/net80211/ieee80211_vht.c
--- a/sys/net80211/ieee80211_vht.c
+++ b/sys/net80211/ieee80211_vht.c
@@ -144,7 +144,7 @@
if (! IEEE80211_CONF_VHT(ic))
return;
- vap->iv_vht_cap.vht_cap_info = ic->ic_vhtcaps;
+ vap->iv_vht_cap.vht_cap_info = ic->ic_vht_cap.vht_cap_info;
vap->iv_vhtextcaps = ic->ic_vhtextcaps;
/* XXX assume VHT80 support; should really check vhtcaps */
@@ -157,7 +157,7 @@
if (IEEE80211_VHTCAP_SUPP_CHAN_WIDTH_IS_160_80P80MHZ(vap->iv_vht_cap.vht_cap_info))
vap->iv_vht_flags |= IEEE80211_FVHT_USEVHT80P80;
- memcpy(&vap->iv_vht_cap.supp_mcs, &ic->ic_vht_mcsinfo,
+ memcpy(&vap->iv_vht_cap.supp_mcs, &ic->ic_vht_cap.supp_mcs,
sizeof(struct ieee80211_vht_mcs_info));
}
@@ -199,19 +199,19 @@
/* Channel width */
ic_printf(ic, "[VHT] Channel Widths: 20MHz, 40MHz, 80MHz%s%s\n",
- (IEEE80211_VHTCAP_SUPP_CHAN_WIDTH_IS_160MHZ(ic->ic_vhtcaps)) ?
+ (IEEE80211_VHTCAP_SUPP_CHAN_WIDTH_IS_160MHZ(ic->ic_vht_cap.vht_cap_info)) ?
", 160MHz" : "",
- (IEEE80211_VHTCAP_SUPP_CHAN_WIDTH_IS_160_80P80MHZ(ic->ic_vhtcaps)) ?
+ (IEEE80211_VHTCAP_SUPP_CHAN_WIDTH_IS_160_80P80MHZ(ic->ic_vht_cap.vht_cap_info)) ?
", 80+80MHz" : "");
/* Features */
- ic_printf(ic, "[VHT] Features: %b\n", ic->ic_vhtcaps,
+ ic_printf(ic, "[VHT] Features: %b\n", ic->ic_vht_cap.vht_cap_info,
IEEE80211_VHTCAP_BITS);
/* For now, just 5GHz VHT. Worry about 2GHz VHT later */
for (i = 0; i < 8; i++) {
/* Each stream is 2 bits */
- tx = (ic->ic_vht_mcsinfo.tx_mcs_map >> (2*i)) & 0x3;
- rx = (ic->ic_vht_mcsinfo.rx_mcs_map >> (2*i)) & 0x3;
+ tx = (ic->ic_vht_cap.supp_mcs.tx_mcs_map >> (2*i)) & 0x3;
+ rx = (ic->ic_vht_cap.supp_mcs.rx_mcs_map >> (2*i)) & 0x3;
if (tx == 3 && rx == 3)
continue;
ic_printf(ic, "[VHT] NSS %d: TX MCS 0..%d, RX MCS 0..%d\n",

File Metadata

Mime Type
text/plain
Expires
Fri, Jan 30, 6:27 AM (6 h, 41 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28095859
Default Alt Text
D42421.id.diff (6 KB)

Event Timeline