• v0.8.0 90c51f43fc

    15/15 VM gates green - hfsc queues in the data path

    lgcosta released this 2026-11-12 03:20:35 -03:00 | 0 commits to main since this release

    New 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