diff mbox series

[v4,2/4] net/ixgbe: install ethdev hotplug handler in ixgbe

Message ID 1531227098-29564-3-git-send-email-jia.guo@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers show
Series Enable eal hotplug event handler in ethdev | expand


Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation fail Compilation issues

Commit Message

Guo, Jia July 10, 2018, 12:51 p.m. UTC
This patch aim to enable hotplug detect in ixgbe PMD. Firstly it
set the flags RTE_PCI_DRV_INTR_RMV in drv_flags to announce the hotplug
ability, and then use rte_eth_dev_event_handler_install to install
the hotplug event handler for ethdev. When eal detect the hotplug event,
it will call the ethdev callback to process it. If the event is hotplug
removal, it will trigger the RTE_ETH_EVENT_INTR_RMV event into ethdev
callback to let app process the hotplug for this ethdev.

This is an example for other driver, that if any driver support hotplug
feature could be use this way to install hotplug handler.

Signed-off-by: Jeff Guo <jia.guo@intel.com>
change to use eal device event handler install api
 drivers/net/ixgbe/ixgbe_ethdev.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
diff mbox series


diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index 87d2ad0..e7ae9bf 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -1678,6 +1678,9 @@  eth_ixgbevf_dev_init(struct rte_eth_dev *eth_dev)
+	/* install the dev event handler for ethdev. */
+	rte_eth_dev_event_handler_install(eth_dev);
 	PMD_INIT_LOG(DEBUG, "port %d vendorID=0x%x deviceID=0x%x mac.type=%s",
 		     eth_dev->data->port_id, pci_dev->id.vendor_id,
 		     pci_dev->id.device_id, "ixgbe_mac_82599_vf");
@@ -1718,6 +1721,9 @@  eth_ixgbevf_dev_uninit(struct rte_eth_dev *eth_dev)
 				     ixgbevf_dev_interrupt_handler, eth_dev);
+	/* uninstall the dev event handler for ethdev. */
+	rte_eth_dev_event_handler_uninstall(eth_dev);
 	return 0;
@@ -1801,7 +1807,7 @@  static int eth_ixgbe_pci_remove(struct rte_pci_device *pci_dev)
 static struct rte_pci_driver rte_ixgbe_pmd = {
 	.id_table = pci_id_ixgbe_map,
 	.probe = eth_ixgbe_pci_probe,
 	.remove = eth_ixgbe_pci_remove,