Initialize ni_txrate after txparams have been setup. Some drivers
calculate various things prior to association based on ni_txrate and rely on it being nonzero. PR: kern/149185 MFC after: 2 weeks
This commit is contained in:
parent
0405a5efe7
commit
49d2c13794
sys/net80211
@ -817,6 +817,7 @@ ieee80211_sta_join(struct ieee80211vap *vap, struct ieee80211_channel *chan,
|
||||
if (ieee80211_iserp_rateset(&ni->ni_rates))
|
||||
ni->ni_flags |= IEEE80211_NODE_ERP;
|
||||
ieee80211_node_setuptxparms(ni);
|
||||
ieee80211_ratectl_node_init(ni);
|
||||
|
||||
return ieee80211_sta_join1(ieee80211_ref_node(ni));
|
||||
}
|
||||
@ -1401,6 +1402,7 @@ ieee80211_fakeup_adhoc_node(struct ieee80211vap *vap,
|
||||
#endif
|
||||
}
|
||||
ieee80211_node_setuptxparms(ni);
|
||||
ieee80211_ratectl_node_init(ni);
|
||||
if (ic->ic_newassoc != NULL)
|
||||
ic->ic_newassoc(ni, 1);
|
||||
/* XXX not right for 802.1x/WPA */
|
||||
@ -1470,6 +1472,7 @@ ieee80211_add_neighbor(struct ieee80211vap *vap,
|
||||
if (ieee80211_iserp_rateset(&ni->ni_rates))
|
||||
ni->ni_flags |= IEEE80211_NODE_ERP;
|
||||
ieee80211_node_setuptxparms(ni);
|
||||
ieee80211_ratectl_node_init(ni);
|
||||
if (ic->ic_newassoc != NULL)
|
||||
ic->ic_newassoc(ni, 1);
|
||||
/* XXX not right for 802.1x/WPA */
|
||||
@ -2338,6 +2341,7 @@ ieee80211_node_join(struct ieee80211_node *ni, int resp)
|
||||
);
|
||||
|
||||
ieee80211_node_setuptxparms(ni);
|
||||
ieee80211_ratectl_node_init(ni);
|
||||
/* give driver a chance to setup state like ni_txrate */
|
||||
if (ic->ic_newassoc != NULL)
|
||||
ic->ic_newassoc(ni, newassoc);
|
||||
|
@ -60,6 +60,7 @@ __FBSDID("$FreeBSD$");
|
||||
#ifdef IEEE80211_SUPPORT_SUPERG
|
||||
#include <net80211/ieee80211_superg.h>
|
||||
#endif
|
||||
#include <net80211/ieee80211_ratectl.h>
|
||||
|
||||
#define IEEE80211_RATE2MBS(r) (((r) & IEEE80211_RATE_VAL) / 2)
|
||||
|
||||
@ -1596,6 +1597,7 @@ sta_recv_mgmt(struct ieee80211_node *ni, struct mbuf *m0,
|
||||
IEEE80211_F_JOIN | IEEE80211_F_DOBRS);
|
||||
ieee80211_setup_basic_htrates(ni, htinfo);
|
||||
ieee80211_node_setuptxparms(ni);
|
||||
ieee80211_ratectl_node_init(ni);
|
||||
} else {
|
||||
#ifdef IEEE80211_SUPPORT_SUPERG
|
||||
if (IEEE80211_ATH_CAP(vap, ni, IEEE80211_NODE_ATH))
|
||||
|
Loading…
x
Reference in New Issue
Block a user