AGENTS.md: document linux-kpi + redbear-iwlwifi C exemption (operator-approved)

The linux-kpi C headers and legacy C transport are an operator-approved
exemption to the Rust-only policy. C headers = firmware ABI contract
(match Linux fw/api/*.h byte-for-byte). C transport = inherited legacy.
Rust modules = driver logic. C MLD helpers = thin transport bridge.
Documented with full architectural justification.
This commit is contained in:
2026-07-25 16:53:18 +09:00
parent 98ac1af883
commit 4aa492d06a
+19
View File
@@ -411,6 +411,25 @@ by size. The `local/reference/` directory is **NOT** optional.
**Enforcement:** Any new file ending in `.c` under `local/recipes/*/source/` or `local/sources/*/` must justify its existence with an operator-approved exemption. The default answer is Rust.
### linux-kpi + redbear-iwlwifi exemption (operator-approved 2026-07-24)
The linux-kpi C headers (`mac80211.h`, `ieee80211.h`, `cfg80211.h`, etc.) and the
legacy C transport layer (`linux_port.c`, `linux_mvm.c`) are an **exemption** to the
Rust-only policy. This subsystem is a C-to-Redox driver shim that talks directly to
Intel Wi-Fi firmware via PCI DMA rings. The C headers are the firmware ABI contract
(must match Linux `fw/api/*.h` struct layouts byte-for-byte). The C transport handles
DMA ring management, TFD queues, and firmware command submission.
**Architecture:** C headers = ABI contract (match Linux source 1:1). C transport =
inherited legacy (proven working, untouched). Rust modules (`mld.rs`, `mac80211.rs`) =
driver logic, state management, callback dispatch. C MLD helpers (`linux_mld.c/h`) =
thin transport bridge between C transport types and Rust MLD logic.
This exemption exists because rewriting the 2635-line proven C transport in Rust would
duplicate working code with zero functional gain, and the firmware expects `#[repr(C,
packed)]` struct layouts that are most reliably defined in C headers matching the Linux
source.
## DURABILITY POLICY
Every change to an upstream-owned source tree (anything under `recipes/*/source/`) **must** be