git: 4e78b9b5afe9 - main - net80211: fix VHT node setup in hostap mode
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 16 Jul 2025 15:21:50 UTC
The branch main has been updated by adrian:
URL: https://cgit.FreeBSD.org/src/commit/?id=4e78b9b5afe9c1ebe93ccd8a0767fda39b26da4a
commit 4e78b9b5afe9c1ebe93ccd8a0767fda39b26da4a
Author: Adrian Chadd <adrian@FreeBSD.org>
AuthorDate: 2025-06-11 04:59:30 +0000
Commit: Adrian Chadd <adrian@FreeBSD.org>
CommitDate: 2025-07-16 15:12:03 +0000
net80211: fix VHT node setup in hostap mode
Way back in 2017 I wrote the initial VHT hostap support, and then
added a NULL check here to stop it from panicing. However, there
is no VHTINFO IE in an ASSOC_REQ management frame. Thus, the node
would never have VHT state initialised.
This mirrors what HT node setup does (which again doesn't have
HTINFO IE's in an ASSOC_REQ frame), the upgrade will happen once
the exchange completes.
Fixes: 2023566223a4020d832bd4e25dc7dadfd660b836
Differential Revision: https://reviews.freebsd.org/D50787
---
sys/net80211/ieee80211_hostap.c | 7 ++-----
sys/net80211/ieee80211_vht.c | 4 +---
sys/net80211/ieee80211_vht.h | 3 +--
3 files changed, 4 insertions(+), 10 deletions(-)
diff --git a/sys/net80211/ieee80211_hostap.c b/sys/net80211/ieee80211_hostap.c
index c5a478533313..9074878e17e4 100644
--- a/sys/net80211/ieee80211_hostap.c
+++ b/sys/net80211/ieee80211_hostap.c
@@ -2214,12 +2214,9 @@ hostap_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m0,
/* VHT */
if (IEEE80211_IS_CHAN_VHT(ni->ni_chan) &&
- vhtcap != NULL &&
- vhtinfo != NULL) {
- /* XXX TODO; see below */
- net80211_vap_printf(vap, "%s: VHT TODO!\n", __func__);
+ vhtcap != NULL) {
ieee80211_vht_node_init(ni);
- ieee80211_vht_update_cap(ni, vhtcap, vhtinfo);
+ ieee80211_vht_update_cap(ni, vhtcap);
} else if (ni->ni_flags & IEEE80211_NODE_VHT)
ieee80211_vht_node_cleanup(ni);
diff --git a/sys/net80211/ieee80211_vht.c b/sys/net80211/ieee80211_vht.c
index e91977f1ef98..de0b691d4d2a 100644
--- a/sys/net80211/ieee80211_vht.c
+++ b/sys/net80211/ieee80211_vht.c
@@ -838,12 +838,10 @@ ieee80211_add_vhtinfo(uint8_t *frm, struct ieee80211_node *ni)
}
void
-ieee80211_vht_update_cap(struct ieee80211_node *ni, const uint8_t *vhtcap_ie,
- const uint8_t *vhtop_ie)
+ieee80211_vht_update_cap(struct ieee80211_node *ni, const uint8_t *vhtcap_ie)
{
ieee80211_parse_vhtcap(ni, vhtcap_ie);
- ieee80211_parse_vhtopmode(ni, vhtop_ie);
}
static struct ieee80211_channel *
diff --git a/sys/net80211/ieee80211_vht.h b/sys/net80211/ieee80211_vht.h
index 2964de63c343..a1529df4a85b 100644
--- a/sys/net80211/ieee80211_vht.h
+++ b/sys/net80211/ieee80211_vht.h
@@ -52,8 +52,7 @@ uint8_t * ieee80211_add_vhtinfo(uint8_t *frm, struct ieee80211_node *);
uint8_t *ieee80211_add_vhtcap_ch(uint8_t *, struct ieee80211vap *,
struct ieee80211_channel *);
-void ieee80211_vht_update_cap(struct ieee80211_node *,
- const uint8_t *, const uint8_t *);
+void ieee80211_vht_update_cap(struct ieee80211_node *, const uint8_t *);
struct ieee80211_channel *
ieee80211_vht_adjust_channel(struct ieee80211com *,