net/failsafe: fix duplicate event registration
authorMatan Azrad <matan@mellanox.com>
Tue, 22 May 2018 12:38:47 +0000 (12:38 +0000)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 22 May 2018 22:35:01 +0000 (00:35 +0200)
When the fail-safe device is reconfigured, it attempts to register
again for the sub-devices LSC and RMV events.

Prevent an event registration if it is already done.

Fixes: 598fb8aec6f6 ("net/failsafe: support device removal")
Cc: stable@dpdk.org
Signed-off-by: Matan Azrad <matan@mellanox.com>
Acked-by: Gaetan Rivet <gaetan.rivet@6wind.com>
drivers/net/failsafe/failsafe_ops.c

index e0570b6..24e91c9 100644 (file)
@@ -138,7 +138,7 @@ fs_dev_configure(struct rte_eth_dev *dev)
                        fs_unlock(dev, 0);
                        return ret;
                }
-               if (rmv_interrupt) {
+               if (rmv_interrupt && sdev->rmv_callback == 0) {
                        ret = rte_eth_dev_callback_register(PORT_ID(sdev),
                                        RTE_ETH_EVENT_INTR_RMV,
                                        failsafe_eth_rmv_event_callback,
@@ -150,7 +150,7 @@ fs_dev_configure(struct rte_eth_dev *dev)
                                sdev->rmv_callback = 1;
                }
                dev->data->dev_conf.intr_conf.rmv = 0;
-               if (lsc_interrupt) {
+               if (lsc_interrupt && sdev->lsc_callback == 0) {
                        ret = rte_eth_dev_callback_register(PORT_ID(sdev),
                                                RTE_ETH_EVENT_INTR_LSC,
                                                failsafe_eth_lsc_event_callback,