net/virtio: avoid unneeded link interrupt configuration
authorDavid Marchand <david.marchand@redhat.com>
Tue, 31 Aug 2021 15:54:10 +0000 (17:54 +0200)
committerMaxime Coquelin <maxime.coquelin@redhat.com>
Tue, 14 Sep 2021 11:21:57 +0000 (13:21 +0200)
There is no reason to re-register a interrupt handler for LSC if this
feature was not requested in the first place.
A simple use case is when asking for Rx interrupts without LSC interrupt.

Fixes: 26b683b4f7d0 ("net/virtio: setup Rx queue interrupts")
Cc: stable@dpdk.org
Signed-off-by: David Marchand <david.marchand@redhat.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
drivers/net/virtio/virtio_ethdev.c

index 9690eb4..061d02f 100644 (file)
@@ -1685,13 +1685,15 @@ virtio_configure_intr(struct rte_eth_dev *dev)
                }
        }
 
-       /* Re-register callback to update max_intr */
-       rte_intr_callback_unregister(dev->intr_handle,
-                                    virtio_interrupt_handler,
-                                    dev);
-       rte_intr_callback_register(dev->intr_handle,
-                                  virtio_interrupt_handler,
-                                  dev);
+       if (dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC) {
+               /* Re-register callback to update max_intr */
+               rte_intr_callback_unregister(dev->intr_handle,
+                                            virtio_interrupt_handler,
+                                            dev);
+               rte_intr_callback_register(dev->intr_handle,
+                                          virtio_interrupt_handler,
+                                          dev);
+       }
 
        /* DO NOT try to remove this! This function will enable msix, or QEMU
         * will encounter SIGSEGV when DRIVER_OK is sent.