From ca22169e3e7df44eddaf4848d594a417232ea170 Mon Sep 17 00:00:00 2001 From: Scott Pettit Date: Tue, 29 Sep 2026 08:04:17 +1300 Subject: [PATCH] fix stream RX in RX threads on LAG member interfaces Stream packets received on a LAG member with RX threads enabled were dropped without being counted if the frame was larger than 4074 bytes, so the stream was reported as never received even though the frames arrived on the interface. This affects, for example, downstream jumbo streams to access sessions on a LAG, which can be configured since jumbo-frames support was added (#385). bbl_rx_thread() looked up the network and access interfaces on the receiving member, but these are bound to the LAG interface. The lookup failed, so every stream packet was redirected to the main thread through the TXQ, whose slots hold at most BBL_TXQ_BUFFER_LEN (4074) bytes; larger frames were rejected by redirect() without a counter. Resolve a LAG member to its LAG interface, as bbl_rx_handler() already does on the main thread. Stream packets on LAG members are then handled in the RX threads instead of all going through the main thread. Co-Authored-By: Claude Opus 5.5 --- code/bngblaster/src/bbl_rx.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/bngblaster/src/bbl_rx.c b/code/bngblaster/src/bbl_rx.c index 774e3c94..245f3ef0 100644 --- a/code/bngblaster/src/bbl_rx.c +++ b/code/bngblaster/src/bbl_rx.c @@ -85,6 +85,10 @@ bbl_rx_thread(bbl_interface_s *interface, if(interface->state == INTERFACE_DISABLED) { return true; } + if(interface->type == LAG_MEMBER_INTERFACE) { + /* Access and network interfaces are bound to the LAG. */ + interface = interface->lag->interface; + } network_interface = interface->network_vlan[eth->vlan_outer]; if(network_interface) { return bbl_rx_stream_network(network_interface, eth);