On Thu, 11 Jun 2026 at 17:50, Maxime Leroy <[email protected]> wrote: > > Some interrupt users have several vectors backed by the same eventfd > (e.g. several Rx queues behind one DPAA2 portal eventfd). Adding the > second vector to the same epoll instance then fails with EEXIST. > > Upper layers such as ethdev and bbdev already treat -EEXIST as a > non-fatal duplicate registration (if (ret && ret != -EEXIST)), but > rte_intr_rx_ctl() lost that information: rte_epoll_ctl() returned -1 and > rte_intr_rx_ctl() flattened every failure to -EPERM. > > Return the negative errno from rte_epoll_ctl() (its documented contract > is already "a negative value") and stop rte_intr_rx_ctl() from > flattening errors to -EPERM, so EEXIST reaches the upper layers that > already handle it; other failures carry their real errno. > > Fixes: 9efe9c6cdcac ("eal/linux: add epoll wrappers") > Fixes: c9f3ec1a0f3f ("eal/linux: add Rx interrupt control function") > Cc: [email protected] > Signed-off-by: Maxime Leroy <[email protected]>
Reviewed-by: David Marchand <[email protected]> Nit: the eal/ prefix is only for OS specific / arch specific changes. The title prefix should be interrupt: -- David Marchand

