<feed xmlns='http://www.w3.org/2005/Atom'>
<title>staging/stintel/package/utils, branch master</title>
<subtitle>Staging tree of Stijn Tintel</subtitle>
<id>https://git.openwrt.org/openwrt/staging/stintel/atom?h=master</id>
<link rel='self' href='https://git.openwrt.org/openwrt/staging/stintel/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/'/>
<updated>2026-07-20T08:43:36Z</updated>
<entry>
<title>ucode-mod-bpf: bump PKG_RELEASE</title>
<updated>2026-07-20T08:43:36Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-07-16T18:07:34Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=5b3b961f41e7d77242413d3e007336d94c445c82'/>
<id>urn:sha1:5b3b961f41e7d77242413d3e007336d94c445c82</id>
<content type='text'>
Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>ucode-mod-bpf: add map info method and map type constants</title>
<updated>2026-07-20T08:43:36Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-07-16T18:28:27Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=9565a9bd917df2837b0bf7c16844a22fa30a902d'/>
<id>urn:sha1:9565a9bd917df2837b0bf7c16844a22fa30a902d</id>
<content type='text'>
Scripts need the map type to know how to interact with a map, e.g.
per-CPU value handling or keyless queue/stack semantics. Add an
info() map method returning type, key/value size and max_entries,
along with BPF_MAP_TYPE constants for comparison.

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>ucode-mod-bpf: add ring buffer and perf event buffer support</title>
<updated>2026-07-20T08:43:36Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-07-16T18:27:46Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=a1489332142803a2347729290161d81df1b31277'/>
<id>urn:sha1:a1489332142803a2347729290161d81df1b31277</id>
<content type='text'>
Add consumer support for BPF_MAP_TYPE_RINGBUF and
BPF_MAP_TYPE_PERF_EVENT_ARRAY maps. ringbuf(callback) and
perf_buffer(callback, pages, lost_callback) map methods return a
buffer resource with fileno, poll and consume methods. The fileno
method exposes the epoll fd and matches the interface uloop.handle()
expects, so a buffer can be passed directly to uloop for event loop
integration.

The ring buffer callback receives the sample data and may return a
negative integer to stop consumption; the perf callbacks additionally
receive the CPU number.

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>ucode-mod-bpf: add map-in-map and prog array support</title>
<updated>2026-07-20T08:43:36Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-07-16T18:26:30Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=9b7ddbaef9a5f9da1e41f85431bb7c9b74aaae18'/>
<id>urn:sha1:9b7ddbaef9a5f9da1e41f85431bb7c9b74aaae18</id>
<content type='text'>
Updates on array/hash-of-maps and prog array maps take the fd of the
inner object as a 4-byte value. Accept bpf.map and bpf.program
resources as map values and convert them to their fd.

Lookups on map-in-map types return the inner map id; add open_map_id
and open_program_id to obtain a usable object from such an id.

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>ucode-mod-bpf: add support for keyless maps</title>
<updated>2026-07-20T08:43:36Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-07-16T18:25:50Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=ec06937a5ab4b45128d58d2e0d5cfb5c93df3ea3'/>
<id>urn:sha1:ec06937a5ab4b45128d58d2e0d5cfb5c93df3ea3</id>
<content type='text'>
Queue and stack maps have zero-sized keys and require a NULL key
pointer; the kernel rejects any non-NULL key with EINVAL, making
these maps unusable. Accept a null key argument on maps without a
key, mapping get() to peek, set() to push and delete() with return
to pop.

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>ucode-mod-bpf: add per-CPU map support</title>
<updated>2026-07-20T08:43:36Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-07-16T18:25:17Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=9070d0e6303154ed17d4f4bb3b76f6cf6ae2cf0d'/>
<id>urn:sha1:9070d0e6303154ed17d4f4bb3b76f6cf6ae2cf0d</id>
<content type='text'>
Lookup, update and lookup-and-delete on per-CPU maps use buffers of
roundup(value_size, 8) * num_possible_cpus bytes. The previous code
sized buffers for a single value, so get() on a per-CPU map made the
kernel overflow the stack buffer and set() passed undersized data.

Track the map type and size the buffers accordingly. get() and
delete() with return now yield an array with one value per CPU, set()
accepts either such an array or a single value replicated to all
CPUs.

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>ucode-mod-bpf: fix error reporting in tc hook setup</title>
<updated>2026-07-20T08:43:36Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-07-16T18:07:21Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=acc687da84c5177bcf46d3757cb97243ab3c91c0'/>
<id>urn:sha1:acc687da84c5177bcf46d3757cb97243ab3c91c0</id>
<content type='text'>
Failures in the detach path returned NULL without recording any error
state, so error() reported a stale or empty error. Attach failures
reported a hardcoded ENOENT regardless of the actual cause. Record
errno for all failures; if_nametoindex, bpf_tc_attach and
bpf_tc_detach all set it.

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>ucode-mod-bpf: fix stale errno when rodata map is missing</title>
<updated>2026-07-20T08:43:36Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-07-16T18:07:01Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=05208d9a7e9153867a028c0c5f198ad7590cca34'/>
<id>urn:sha1:05208d9a7e9153867a028c0c5f198ad7590cca34</id>
<content type='text'>
bpf_object__next_map does not set errno when it runs out of maps, so
the reported error code was whatever errno happened to hold. With
errno 0 the failure was invisible to error(). Report ENOENT instead.

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>ucode-mod-bpf: fix unaligned access in integer iterator</title>
<updated>2026-07-20T08:43:36Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-07-16T18:05:55Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=e04461835aaaf20bfd1609459af324b91c11e7e8'/>
<id>urn:sha1:e04461835aaaf20bfd1609459af324b91c11e7e8</id>
<content type='text'>
The iterator key buffer is a flexible array member placed directly
after a bool, leaving it without natural alignment for the u32/u64
loads in next_int. Copy the key via memcpy instead of dereferencing
a misaligned pointer, which traps on strict-alignment targets.

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
<entry>
<title>ucode-mod-bpf: fix key/value aliasing in map argument conversion</title>
<updated>2026-07-20T08:43:36Z</updated>
<author>
<name>Felix Fietkau</name>
</author>
<published>2026-07-16T18:05:28Z</published>
<link rel='alternate' type='text/html' href='https://git.openwrt.org/openwrt/staging/stintel/commit/?id=5c35e410fcea2cfee1b5841143a1a97ec4cb68f5'/>
<id>urn:sha1:5c35e410fcea2cfee1b5841143a1a97ec4cb68f5</id>
<content type='text'>
uc_bpf_map_arg converted integer arguments through a single static
buffer. When map set was called with both an integer key and an integer
value, the second conversion overwrote the first, so the element was
written at the wrong key. Convert into a caller-provided buffer
instead.

Signed-off-by: Felix Fietkau &lt;nbd@nbd.name&gt;
</content>
</entry>
</feed>
