Hi Anatoly, hi Sivaprasad, On Mon, Jul 20, 2026 at 10:00 AM Maxime Leroy <[email protected]> wrote: > > l3fwd-power's Rx interrupt (one-shot) mode was written around NICs whose > interrupt fd is assigned per queue at setup, stays fixed and is > level-triggered, as on MSI-X hardware. PMDs that do not fit that model > never sleep on interrupts: they either fail to arm, watch an unbound fd, > or miss the wake, and the 10 ms poll timeout hides all of it. > > dpaa2 is the motivating example: it delivers Rx interrupts through one > QBMan portal per lcore, so the queues of a lcore share a single fd that > is bound when the interrupt is enabled, not at queue setup; the > notification is edge-triggered on an empty to non-empty transition; and > arming a queue that already holds traffic returns -EAGAIN with the queue > left unarmed. > > This series makes the interrupt and legacy loops handle those cases > while leaving MSI-X NICs unchanged: > > 1/6 factor the duplicated arm/sleep/disarm block into a helper. > 2/6 check the arm return: on -EAGAIN poll and retry, on any other > error drop interrupt mode for the lcore instead of sleeping on > unarmed queues. > 3/6 register the fd in the epoll set after arming, not before, so a > fd bound at enable time is watched only once it exists. > 4/6 accept -EEXIST when several queues share one fd. > 5/6 recheck the queues before sleeping so a packet that arrived during > the arm window is not missed under edge-triggered interrupts. > 6/6 block indefinitely instead of on a 10 ms timeout, and wake the > workers through an eventfd on exit, so a broken interrupt path no > longer hides behind periodic polling. > > Maxime Leroy (6): > examples/l3fwd-power: factor out Rx interrupt sleep path > examples/l3fwd-power: check Rx interrupt enable errors > examples/l3fwd-power: enable Rx interrupt before epoll add > examples/l3fwd-power: accept shared Rx interrupt FD > examples/l3fwd-power: recheck Rx queues before sleeping > examples/l3fwd-power: block until Rx interrupt or exit > > examples/l3fwd-power/main.c | 184 +++++++++++++++++++++++++++++------- > 1 file changed, 150 insertions(+), 34 deletions(-) > > -- > 2.43.0 >
Gentle ping on this series. Thanks, Maxime

