Changeset View
Changeset View
Standalone View
Standalone View
sys/net80211/ieee80211_hwmp.c
Show First 20 Lines • Show All 640 Lines • ▼ Show 20 Lines | #endif | ||||
m->m_pkthdr.len = m->m_len = frm - mtod(m, uint8_t *); | m->m_pkthdr.len = m->m_len = frm - mtod(m, uint8_t *); | ||||
M_PREPEND(m, sizeof(struct ieee80211_frame), M_NOWAIT); | M_PREPEND(m, sizeof(struct ieee80211_frame), M_NOWAIT); | ||||
if (m == NULL) { | if (m == NULL) { | ||||
ieee80211_free_node(ni); | ieee80211_free_node(ni); | ||||
vap->iv_stats.is_tx_nobuf++; | vap->iv_stats.is_tx_nobuf++; | ||||
return ENOMEM; | return ENOMEM; | ||||
} | } | ||||
if (! IEEE80211_CONF_SEQNO_OFFLOAD(ic)) | |||||
IEEE80211_TX_LOCK(ic); | IEEE80211_TX_LOCK(ic); | ||||
ieee80211_send_setup(ni, m, | ieee80211_send_setup(ni, m, | ||||
IEEE80211_FC0_TYPE_MGT | IEEE80211_FC0_SUBTYPE_ACTION, | IEEE80211_FC0_TYPE_MGT | IEEE80211_FC0_SUBTYPE_ACTION, | ||||
IEEE80211_NONQOS_TID, vap->iv_myaddr, da, vap->iv_myaddr); | IEEE80211_NONQOS_TID, vap->iv_myaddr, da, vap->iv_myaddr); | ||||
m->m_flags |= M_ENCAP; /* mark encapsulated */ | m->m_flags |= M_ENCAP; /* mark encapsulated */ | ||||
IEEE80211_NODE_STAT(ni, tx_mgmt); | IEEE80211_NODE_STAT(ni, tx_mgmt); | ||||
memset(¶ms, 0, sizeof(params)); | memset(¶ms, 0, sizeof(params)); | ||||
params.ibp_pri = WME_AC_VO; | params.ibp_pri = WME_AC_VO; | ||||
params.ibp_rate0 = ni->ni_txparms->mgmtrate; | params.ibp_rate0 = ni->ni_txparms->mgmtrate; | ||||
if (IEEE80211_IS_MULTICAST(da)) | if (IEEE80211_IS_MULTICAST(da)) | ||||
params.ibp_try0 = 1; | params.ibp_try0 = 1; | ||||
else | else | ||||
params.ibp_try0 = ni->ni_txparms->maxretry; | params.ibp_try0 = ni->ni_txparms->maxretry; | ||||
params.ibp_power = ni->ni_txpower; | params.ibp_power = ni->ni_txpower; | ||||
ret = ieee80211_raw_output(vap, ni, m, ¶ms); | ret = ieee80211_raw_output(vap, ni, m, ¶ms); | ||||
if (! IEEE80211_CONF_SEQNO_OFFLOAD(ic)) | |||||
IEEE80211_TX_UNLOCK(ic); | IEEE80211_TX_UNLOCK(ic); | ||||
return (ret); | return (ret); | ||||
} | } | ||||
#define ADDSHORT(frm, v) do { \ | #define ADDSHORT(frm, v) do { \ | ||||
le16enc(frm, v); \ | le16enc(frm, v); \ | ||||
frm += 2; \ | frm += 2; \ | ||||
} while (0) | } while (0) | ||||
#define ADDWORD(frm, v) do { \ | #define ADDWORD(frm, v) do { \ | ||||
▲ Show 20 Lines • Show All 1,407 Lines • Show Last 20 Lines |