Changeset View
Changeset View
Standalone View
Standalone View
sys/net80211/ieee80211_sta.c
Show First 20 Lines • Show All 1,349 Lines • ▼ Show 20 Lines | |||||
#define ISREASSOC(_st) ((_st) == IEEE80211_FC0_SUBTYPE_REASSOC_RESP) | #define ISREASSOC(_st) ((_st) == IEEE80211_FC0_SUBTYPE_REASSOC_RESP) | ||||
struct ieee80211vap *vap = ni->ni_vap; | struct ieee80211vap *vap = ni->ni_vap; | ||||
struct ieee80211com *ic = ni->ni_ic; | struct ieee80211com *ic = ni->ni_ic; | ||||
struct ieee80211_channel *rxchan = ic->ic_curchan; | struct ieee80211_channel *rxchan = ic->ic_curchan; | ||||
struct ieee80211_frame *wh; | struct ieee80211_frame *wh; | ||||
uint8_t *frm, *efrm; | uint8_t *frm, *efrm; | ||||
uint8_t *rates, *xrates, *wme, *htcap, *htinfo; | uint8_t *rates, *xrates, *wme, *htcap, *htinfo; | ||||
uint8_t *vhtcap, *vhtopmode; | uint8_t *vhtcap, *vhtopmode; | ||||
uint8_t rate; | int ht_state_change = 0, do_ht = 0, rate_index; | ||||
int ht_state_change = 0, do_ht = 0; | |||||
wh = mtod(m0, struct ieee80211_frame *); | wh = mtod(m0, struct ieee80211_frame *); | ||||
frm = (uint8_t *)&wh[1]; | frm = (uint8_t *)&wh[1]; | ||||
efrm = mtod(m0, uint8_t *) + m0->m_len; | efrm = mtod(m0, uint8_t *) + m0->m_len; | ||||
switch (subtype) { | switch (subtype) { | ||||
case IEEE80211_FC0_SUBTYPE_PROBE_RESP: | case IEEE80211_FC0_SUBTYPE_PROBE_RESP: | ||||
case IEEE80211_FC0_SUBTYPE_BEACON: { | case IEEE80211_FC0_SUBTYPE_BEACON: { | ||||
struct ieee80211_scanparams scan; | struct ieee80211_scanparams scan; | ||||
▲ Show 20 Lines • Show All 391 Lines • ▼ Show 20 Lines | while (efrm - frm > 1) { | ||||
} | } | ||||
frm += frm[1] + 2; | frm += frm[1] + 2; | ||||
} | } | ||||
IEEE80211_VERIFY_ELEMENT(rates, IEEE80211_RATE_MAXSIZE, return); | IEEE80211_VERIFY_ELEMENT(rates, IEEE80211_RATE_MAXSIZE, return); | ||||
if (xrates != NULL) | if (xrates != NULL) | ||||
IEEE80211_VERIFY_ELEMENT(xrates, | IEEE80211_VERIFY_ELEMENT(xrates, | ||||
IEEE80211_RATE_MAXSIZE - rates[1], return); | IEEE80211_RATE_MAXSIZE - rates[1], return); | ||||
rate = ieee80211_setup_rates(ni, rates, xrates, | rate_index = ieee80211_setup_rates(ni, rates, xrates, | ||||
IEEE80211_F_JOIN | | IEEE80211_F_JOIN | | ||||
IEEE80211_F_DOSORT | IEEE80211_F_DOFRATE | | IEEE80211_F_DOSORT | IEEE80211_F_DOFIXED | | ||||
IEEE80211_F_DONEGO | IEEE80211_F_DODEL); | IEEE80211_F_DONEGO | IEEE80211_F_DODEL); | ||||
if (rate & IEEE80211_RATE_BASIC) { | if (rate_index & IEEE80211_F_RATESET_ERROR) { | ||||
IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_ASSOC, | IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_ASSOC, | ||||
wh->i_addr2, | wh->i_addr2, | ||||
"%sassoc failed (rate set mismatch)", | "%sassoc failed (rate set mismatch)", | ||||
ISREASSOC(subtype) ? "re" : ""); | ISREASSOC(subtype) ? "re" : ""); | ||||
vap->iv_stats.is_rx_assoc_norate++; | vap->iv_stats.is_rx_assoc_norate++; | ||||
ieee80211_new_state(vap, IEEE80211_S_SCAN, | ieee80211_new_state(vap, IEEE80211_S_SCAN, | ||||
IEEE80211_SCAN_FAIL_STATUS); | IEEE80211_SCAN_FAIL_STATUS); | ||||
return; | return; | ||||
Show All 35 Lines | if (htcap != NULL && htinfo != NULL && | ||||
} else { | } else { | ||||
ieee80211_vht_node_init(ni); | ieee80211_vht_node_init(ni); | ||||
ieee80211_vht_updateparams(ni, vhtcap, vhtopmode); | ieee80211_vht_updateparams(ni, vhtcap, vhtopmode); | ||||
ieee80211_setup_vht_rates(ni, vhtcap, vhtopmode); | ieee80211_setup_vht_rates(ni, vhtcap, vhtopmode); | ||||
} | } | ||||
} | } | ||||
ieee80211_ht_updateparams_final(ni, htcap, htinfo); | ieee80211_ht_updateparams_final(ni, htcap, htinfo); | ||||
ieee80211_setup_htrates(ni, htcap, | ieee80211_setup_htrates(ni, htcap, IEEE80211_F_JOIN); | ||||
IEEE80211_F_JOIN | IEEE80211_F_DOBRS); | |||||
ieee80211_setup_basic_htrates(ni, htinfo); | ieee80211_setup_basic_htrates(ni, htinfo); | ||||
ieee80211_node_setuptxparms(ni); | ieee80211_node_setuptxparms(ni); | ||||
ieee80211_ratectl_node_init(ni); | ieee80211_ratectl_node_init(ni); | ||||
} | } | ||||
/* | /* | ||||
* Always initialise FF/superg state; we can use this | * Always initialise FF/superg state; we can use this | ||||
▲ Show 20 Lines • Show All 167 Lines • Show Last 20 Lines |