-
15/15 VM gates green - hfsc queues in the data path
released this
2026-11-12 03:20:35 -03:00 | 0 commits to main since this releaseNew gate: 15-queue (queue config loads, hfsc discipline attaches to the
interface, pfctl -s queue -v lists both classes with statistics, a 2 MB queued
flow completes and the class's packet counter advances).Fixed in this milestone:
- DIOCGETQSTATS EINVAL: kernel and pfctl now share OpenBSD's net/hfsc.h and
net/fq_codel.h (vendored) instead of hand-rolled structs; HFSC_ROOT_CLASS
corrected to 0x10000 (0x1 collided with odd pf queue ids, refusing every
root queue with EBUSY). - ifqop_enq return convention (packet to drop, not an error code).
- ifq_attach stored the scheduler state in ifq_softc while the BSD back ends
read ifq_q (NULL deref, killed the box mid-transfer). - ifq_deq_begin/commit dequeue cookie was being dropped.
- ifq_start now drains and transmits; pf_kifq_input hands outbound packets to
an attached scheduler. - pflog payload anchored at the network header (was starting at the transport
header after pf parsed it) - caught by the 12-pflog gate failing in a run. - PF_ASSERT_UNLOCKED in the purge path no longer calls BUG(): under rw-semas it
cannot tell which CPU holds the lock, so it is a rate-limited warning.
Not covered: a measured rate cap - OpenBSD 8.0 pf.conf exposes only 'bandwidth'
(HFSC linkshare, a guarantee under contention, not a limit on a lone flow);
there is no minimum/maximum keyword in this pfctl.Downloads
- DIOCGETQSTATS EINVAL: kernel and pfctl now share OpenBSD's net/hfsc.h and