diff options
author | sam <sam@FreeBSD.org> | 2009-04-27 17:39:41 +0000 |
---|---|---|
committer | sam <sam@FreeBSD.org> | 2009-04-27 17:39:41 +0000 |
commit | 3a2e64d1c437a4e46134b71ad6dae31ea1f524f9 (patch) | |
tree | d18c3c1386fbc9193e4e500fe620bc0830ca492c /sys/net80211/ieee80211_output.c | |
parent | 60c7eaecd7696c335bea663d8928f295f0ab286a (diff) | |
download | FreeBSD-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.c | 4 |
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) && |