summaryrefslogtreecommitdiffstats
path: root/sys/net80211/ieee80211_output.c
diff options
context:
space:
mode:
authorsam <sam@FreeBSD.org>2009-04-27 17:39:41 +0000
committersam <sam@FreeBSD.org>2009-04-27 17:39:41 +0000
commit3a2e64d1c437a4e46134b71ad6dae31ea1f524f9 (patch)
treed18c3c1386fbc9193e4e500fe620bc0830ca492c /sys/net80211/ieee80211_output.c
parent60c7eaecd7696c335bea663d8928f295f0ab286a (diff)
downloadFreeBSD-src-3a2e64d1c437a4e46134b71ad6dae31ea1f524f9.zip
FreeBSD-src-3a2e64d1c437a4e46134b71ad6dae31ea1f524f9.tar.gz
Store the tx seq# of an 802.11 frame in the mbuf pkthdr; this will be
used for s/w retransmit schemes that want to access this information w/o the overhead of decoding the raw frame. Note this also allows drivers to record this information w/o writing the frame when the seq# is obtained through an out-of-band mechanism (e.g. when a h/w assigned seq# is reported in a descriptor on tx done notification). Reviewed by: sephe, avatar
Diffstat (limited to 'sys/net80211/ieee80211_output.c')
-rw-r--r--sys/net80211/ieee80211_output.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/net80211/ieee80211_output.c b/sys/net80211/ieee80211_output.c
index f36365c..6ee8f52 100644
--- a/sys/net80211/ieee80211_output.c
+++ b/sys/net80211/ieee80211_output.c
@@ -512,6 +512,7 @@ ieee80211_send_setup(
seqno = ni->ni_txseqs[tid]++;
*(uint16_t *)&wh->i_seq[0] = htole16(seqno << IEEE80211_SEQ_SEQ_SHIFT);
+ M_SEQNO_SET(m, seqno);
if (IEEE80211_IS_MULTICAST(wh->i_addr1))
m->m_flags |= M_MCAST;
@@ -1097,12 +1098,15 @@ ieee80211_encap(struct ieee80211vap *vap, struct ieee80211_node *ni,
seqno = ni->ni_txseqs[tid]++;
*(uint16_t *)wh->i_seq =
htole16(seqno << IEEE80211_SEQ_SEQ_SHIFT);
+ M_SEQNO_SET(m, seqno);
}
} else {
seqno = ni->ni_txseqs[IEEE80211_NONQOS_TID]++;
*(uint16_t *)wh->i_seq =
htole16(seqno << IEEE80211_SEQ_SEQ_SHIFT);
+ M_SEQNO_SET(m, seqno);
}
+
/* check if xmit fragmentation is required */
txfrag = (m->m_pkthdr.len > vap->iv_fragthreshold &&
!IEEE80211_IS_MULTICAST(wh->i_addr1) &&
OpenPOWER on IntegriCloud