net/mlx5: fix event handler uninstall
authorViacheslav Ovsiienko <viacheslavo@mellanox.com>
Mon, 27 May 2019 04:58:32 +0000 (04:58 +0000)
committerFerruh Yigit <ferruh.yigit@intel.com>
Thu, 6 Jun 2019 11:21:20 +0000 (20:21 +0900)
commit5897ac139355e2d6602c89b0a1d28e609d6f6ebc
tree8f37960856152ec3c1a559304885ad4c1065e558
parent0d51a5ec26ccca4582f4762854ac3b28208c4a04
net/mlx5: fix event handler uninstall

When device is being closed and tries to unregister interrupt callback,
there is a chance the handler is still active (called in context of
eal_intr_thread_main thread). If so the rte_intr_callback_unregister
returns -EAGAIN and keeps the handler registered, causing crash when
underlaying resourse is gone away.

This race condition may happen if event handling in application takes
a long time. We should check the return code of unregistering routine
and try again to unregister the handler. The diagnostic messages are
shown once a second, while trying to unregister.

Fixes: 028b2a28c3cb ("net/mlx5: update event handler for multiport IB devices")
Cc: stable@dpdk.org
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
drivers/net/mlx5/mlx5.c
drivers/net/mlx5/mlx5.h
drivers/net/mlx5/mlx5_ethdev.c