aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Chadd <adrian@FreeBSD.org>2025-08-31 03:03:40 +0000
committerAdrian Chadd <adrian@FreeBSD.org>2025-09-02 03:29:30 +0000
commit167520e47d37ab72ff5561c41b9a2d95e5d70bd5 (patch)
tree18d86ed2cc10434799ed27ada88e862aa1eaa943
parenta0627bc6923c4f27bad3dd83af3d3441dc0526aa (diff)
[net80211] clean up M_SEQNO_SET and M_SEQNO_GET() to always limit to the sequence number range
Use '% IEEE80211_SEQ_RANGE' to limit the sequence numbers being stored and retrieved to 0..4095 inclusive. Differential Revision: https://reviews.freebsd.org/D52302 Reviewed by: bz
-rw-r--r--sys/net80211/ieee80211_freebsd.h11
1 files changed, 8 insertions, 3 deletions
diff --git a/sys/net80211/ieee80211_freebsd.h b/sys/net80211/ieee80211_freebsd.h
index 3684fba52c5c..954801d95787 100644
--- a/sys/net80211/ieee80211_freebsd.h
+++ b/sys/net80211/ieee80211_freebsd.h
@@ -341,11 +341,16 @@ struct mbuf *ieee80211_getmgtframe(uint8_t **frm, int headroom, int pktlen);
#define M_AGE_SUB(m,adj) (m->m_pkthdr.csum_data -= adj)
/*
- * Store the sequence number.
+ * Store / retrieve the sequence number in an mbuf.
+ *
+ * The sequence number being stored/retreived is the 12 bit
+ * base sequence number, not the 16 bit sequence number field.
+ * I.e., it's from 0..4095 inclusive, with no 4 bit padding for
+ * fragment numbers.
*/
#define M_SEQNO_SET(m, seqno) \
- ((m)->m_pkthdr.tso_segsz = (seqno))
-#define M_SEQNO_GET(m) ((m)->m_pkthdr.tso_segsz)
+ ((m)->m_pkthdr.tso_segsz = ((seqno) % IEEE80211_SEQ_RANGE))
+#define M_SEQNO_GET(m) (((m)->m_pkthdr.tso_segsz) % IEEE80211_SEQ_RANGE)
#define MTAG_ABI_NET80211 1132948340 /* net80211 ABI */