Page MenuHomeFreeBSD

net80211: update ieee80211_output_seqno_assign() to 802.11-2020
ClosedPublic

Authored by adrian on Jun 4 2025, 9:50 PM.
Referenced Files
F126646940: D50691.diff
Fri, Aug 22, 2:00 AM
Unknown Object (File)
Fri, Aug 15, 12:18 AM
Unknown Object (File)
Thu, Aug 14, 11:24 PM
Unknown Object (File)
Thu, Aug 14, 4:48 AM
Unknown Object (File)
Sat, Aug 9, 5:13 PM
Unknown Object (File)
Mon, Aug 4, 12:24 AM
Unknown Object (File)
Jul 13 2025, 4:56 PM
Unknown Object (File)
Jul 10 2025, 4:25 PM

Details

Summary

Update ieee80211_output_seqno_assign() to support the transmitter
sequence number assignment outlined in 802.11-2020 10.3.2.14.2
(Transmitter Requirements).

Notably this correctly assigns the QoS NULL frames a seqno outside of
the TID seqno space.

Leave stub comments for the currently supported sequence
number decisions.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped
Build Status
Buildable 64708
Build 61592: arc lint + arc unit

Event Timeline

adrian requested review of this revision.Jun 4 2025, 9:50 PM

fix the seqno update routines to wrap things appropriately.
This bit me when doing some work on if_rsu

bz added inline comments.
sys/net80211/ieee80211_node.c
3153

This is not atomic. Is that okay?

sys/net80211/ieee80211_node.c
3153

Yup, it's either done under the net80211 TX lock or under the driver TX lock.

One big part of the deferred/offloaded seqno work is to migrate it to the driver and force the driver to do it under a serialising lock - since for devices that need all the encap work done, (a) seqno assignment needs to be serialised from multiple concurrent senders into a given destination/TID, (b) TX IV crypto needs to be serialised, same conditions, and (c) 802.11 seqno / TX IV crypto/encap need to be done together so they don't get out of order.

bz requested changes to this revision.Jun 8 2025, 11:19 PM
bz added inline comments.
sys/net80211/ieee80211_output.c
4256

&& !IEEE80211_IS_MULTICAST(wh->i_addr1)

This revision now requires changes to proceed.Jun 8 2025, 11:19 PM
sys/net80211/ieee80211_output.c
4256

WHOOPS :P good catch!

re-add missing multicast check, thanks bz!

bz added inline comments.
sys/net80211/ieee80211_output.c
4256

I like IPv6 working... :)

This revision is now accepted and ready to land.Jun 9 2025, 12:20 AM
adrian added inline comments.
sys/net80211/ieee80211_output.c
4248

Hm, I think I should just be able to do IEEE80211_IS_QOS_NULL() here. Hmm!