The DSP subsystems are star-connected through the application
processor: each has a qrtr link to us but none to each other. Incoming
packets whose dst_node is neither the local node nor broadcast are
currently delivered to a *local* port matching dst_port (usually
nothing) and dropped, so two remote DSPs can never exchange QMI
messages.
On the FP6 (SM7635, AudioReach) the modem's voice stack needs exactly
that: it must reach the ADSP's service-registry notifier / audio
service to attach the vocoder to a VCPM voice session. Without
forwarding, every voice graph starts cleanly but the modem never
streams a single mailbox packet - calls stay silent both ways (see
journal/calls.md 2026-07-07/08).
Forward DATA and RESUME_TX packets destined to another known node onto
that node's endpoint, re-using qrtr_node_enqueue for per-hop flow
control. RESUME_TX additionally releases this hop's flow token on the
arrival link; per-hop counters stay in lockstep with end-to-end ones
because every packet of a forwarded flow transits this node. Control
packets keep flowing to the local ns, which already redistributes
service announcements mesh-wide.
Prototype for the milos carry; needs discussion (loop prevention,
broadcast handling, flow-control semantics) before any upstream
attempt.
Assisted-by: Claude:claude-fable-5
Signed-off-by: Jorijn van der Graaf <jorijnvdgraaf@catcrafts.net>