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

Reply via email to