mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-07 09:00:28 +00:00
net80211: add ieee80211_add_vhtcap_ch()
Add an implementation of ieee80211_add_vhtcap() which works based on information derived from the vap (and possibly channel/band but we do not support that yet in net80211). This is needed for scans request information in LinuxKPI at times before we have a BSS. Sponsored by: The FreeBSD Foundation MFC after: 3 days Reviewed by: adrian, cc Differential Revision: https://reviews.freebsd.org/D42422
This commit is contained in:
parent
562adbe1d3
commit
6c3ae01cc7
|
@ -707,6 +707,33 @@ ieee80211_add_vhtcap(uint8_t *frm, struct ieee80211_node *ni)
|
||||||
return (frm);
|
return (frm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Non-associated probe requests. Add VHT capabilities based on
|
||||||
|
* the current channel configuration. No BSS yet.
|
||||||
|
*/
|
||||||
|
uint8_t *
|
||||||
|
ieee80211_add_vhtcap_ch(uint8_t *frm, struct ieee80211vap *vap,
|
||||||
|
struct ieee80211_channel *c)
|
||||||
|
{
|
||||||
|
struct ieee80211_vht_cap *vhtcap;
|
||||||
|
|
||||||
|
memset(frm, 0, 2 + sizeof(*vhtcap));
|
||||||
|
frm[0] = IEEE80211_ELEMID_VHT_CAP;
|
||||||
|
frm[1] = sizeof(*vhtcap);
|
||||||
|
frm += 2;
|
||||||
|
|
||||||
|
/* 32-bit VHT capability */
|
||||||
|
ADDWORD(frm, vap->iv_vht_cap.vht_cap_info);
|
||||||
|
|
||||||
|
/* supp_mcs */
|
||||||
|
ADDSHORT(frm, vap->iv_vht_cap.supp_mcs.rx_mcs_map);
|
||||||
|
ADDSHORT(frm, vap->iv_vht_cap.supp_mcs.rx_highest);
|
||||||
|
ADDSHORT(frm, vap->iv_vht_cap.supp_mcs.tx_mcs_map);
|
||||||
|
ADDSHORT(frm, vap->iv_vht_cap.supp_mcs.tx_highest);
|
||||||
|
|
||||||
|
return (frm);
|
||||||
|
}
|
||||||
|
|
||||||
static uint8_t
|
static uint8_t
|
||||||
ieee80211_vht_get_chwidth_ie(struct ieee80211_channel *c)
|
ieee80211_vht_get_chwidth_ie(struct ieee80211_channel *c)
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,6 +50,8 @@ void ieee80211_vht_node_leave(struct ieee80211_node *ni);
|
||||||
|
|
||||||
uint8_t * ieee80211_add_vhtcap(uint8_t *frm, struct ieee80211_node *);
|
uint8_t * ieee80211_add_vhtcap(uint8_t *frm, struct ieee80211_node *);
|
||||||
uint8_t * ieee80211_add_vhtinfo(uint8_t *frm, struct ieee80211_node *);
|
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 *,
|
void ieee80211_vht_update_cap(struct ieee80211_node *,
|
||||||
const uint8_t *, const uint8_t *);
|
const uint8_t *, const uint8_t *);
|
||||||
|
|
Loading…
Reference in a new issue