path: root/sys/net80211/ieee80211_ht.h
diff options
authorAdrian Chadd <adrian@FreeBSD.org>2017-01-13 07:02:04 +0000
committerAdrian Chadd <adrian@FreeBSD.org>2017-01-13 07:02:04 +0000
commit51172f62a753fbf3305b6a339ad3dc3847cb1a64 (patch)
tree6b151c905f737fcc583b5d9a84d681c3f3faf6e1 /sys/net80211/ieee80211_ht.h
parent67f4aa3878efa3ab6b639e65830d52b30e303f0d (diff)
[net80211] Initial VHT node upgrade/downgrade support and initial IE parsing.
This is the bulk of the magic to start enabling VHT channel negotiation. It is absolutely, positively not yet even a complete VHT wave-1 implementation. * parse IEs in scan, assoc req/resp, probe req/resp; * break apart the channel upgrade from the HT IE parsing - do it after the VHT IEs are parsed; * (dirty! sigh) add channel width decision making in ieee80211_ht.c htinfo_update_chw(). This is the main bit where negotiated channel promotion through IEs occur. * Shoehorn in VHT node init ,teardown, rate control, etc calls like the HT versions; * Do VHT channel adjustment where appropriate Tested: * monitor mode, ath10k port * STA mode, ath10k port - VHT20, VHT40, VHT80 modes TODO: * IBSS; * hostap; * (ignore mesh, wds for now); * finish 11n state engine - channel width change, opmode notifications, SMPS, etc; * VHT basic rate negotiation and acceptance criteria when scanning, associating, etc; * VHT control/management frame handling (group managment and operating mode being the two big ones); * Verify TX/RX VHT rate negotiation is actually working correctly. Whilst here, add some comments about seqno allocation and locking. To achieve the full VHT rates I need to push seqno allocation into the drivers and finally remove the IEEE80211_TX_LOCK() I added years ago to fix issues. :/
Notes: svn path=/head/; revision=312015
Diffstat (limited to 'sys/net80211/ieee80211_ht.h')
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/net80211/ieee80211_ht.h b/sys/net80211/ieee80211_ht.h
index dfc7d1c312a0..b34d4edf3895 100644
--- a/sys/net80211/ieee80211_ht.h
+++ b/sys/net80211/ieee80211_ht.h
@@ -201,9 +201,12 @@ void ieee80211_htprot_update(struct ieee80211com *, int protmode);
void ieee80211_ht_timeout(struct ieee80211com *);
void ieee80211_parse_htcap(struct ieee80211_node *, const uint8_t *);
void ieee80211_parse_htinfo(struct ieee80211_node *, const uint8_t *);
-int ieee80211_ht_updateparams(struct ieee80211_node *, const uint8_t *,
+void ieee80211_ht_updateparams(struct ieee80211_node *, const uint8_t *,
const uint8_t *);
+int ieee80211_ht_updateparams_final(struct ieee80211_node *,
+ const uint8_t *, const uint8_t *);
void ieee80211_ht_updatehtcap(struct ieee80211_node *, const uint8_t *);
+void ieee80211_ht_updatehtcap_final(struct ieee80211_node *);
int ieee80211_ampdu_request(struct ieee80211_node *,
struct ieee80211_tx_ampdu *);
void ieee80211_ampdu_stop(struct ieee80211_node *,