From patchwork Fri Aug 17 10:50:13 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Guo, Jia" X-Patchwork-Id: 43772 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id DE0692A62; Fri, 17 Aug 2018 12:53:24 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id E825D98 for ; Fri, 17 Aug 2018 12:53:21 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 17 Aug 2018 03:53:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.53,250,1531810800"; d="scan'208";a="76129646" Received: from jeffguo-z170x-ud5.sh.intel.com (HELO localhost.localdomain) ([10.67.104.10]) by orsmga003.jf.intel.com with ESMTP; 17 Aug 2018 03:53:00 -0700 From: Jeff Guo To: stephen@networkplumber.org, bruce.richardson@intel.com, ferruh.yigit@intel.com, konstantin.ananyev@intel.com, gaetan.rivet@6wind.com, jingjing.wu@intel.com, thomas@monjalon.net, motih@mellanox.com, matan@mellanox.com, harry.van.haaren@intel.com, qi.z.zhang@intel.com, shaopeng.he@intel.com, bernard.iremonger@intel.com, arybchenko@solarflare.com Cc: jblunck@infradead.org, shreyansh.jain@nxp.com, dev@dpdk.org, jia.guo@intel.com, helin.zhang@intel.com Date: Fri, 17 Aug 2018 18:50:13 +0800 Message-Id: <1534503016-31805-2-git-send-email-jia.guo@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1534503016-31805-1-git-send-email-jia.guo@intel.com> References: <1530787185-5915-1-git-send-email-jia.guo@intel.com> <1534503016-31805-1-git-send-email-jia.guo@intel.com> Subject: [dpdk-dev] [PATCH v6 1/4] ethdev: Add eal device event callback X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Implement a couple of eal device event handler install/unintall APIs in Ethdev as below: - rte_eth_dev_event_handler_install - rte_eth_dev_event_handler_uninstall Each ethdev could call these APIs to install eal event handler in the PMDs, with each callback corresponding to one port, and process the eal device event for the specific port. Especially, it could use for process the hotplug event. Signed-off-by: Jeff Guo Reviewed-by: Qi Zhang --- v6->v5: refine commit log --- doc/guides/rel_notes/release_18_08.rst | 12 +++++++ lib/librte_ethdev/rte_ethdev.c | 61 ++++++++++++++++++++++++++++++++ lib/librte_ethdev/rte_ethdev_driver.h | 32 +++++++++++++++++ lib/librte_ethdev/rte_ethdev_version.map | 2 ++ 4 files changed, 107 insertions(+) diff --git a/doc/guides/rel_notes/release_18_08.rst b/doc/guides/rel_notes/release_18_08.rst index 95dc1e0..90478cf 100644 --- a/doc/guides/rel_notes/release_18_08.rst +++ b/doc/guides/rel_notes/release_18_08.rst @@ -122,6 +122,18 @@ New Features ``rte_dev_hotplug_handle_enable`` and ``rte_dev_hotplug_handle_disable`` are for enable or disable failure handle mechanism for hotplug. +* **Added eal device event process helper in ethdev.** + + Implement a couple of eal device event handler install/uninstall APIs in + ethdev, these helper could let PMDs have chance to manage the eal device + event, such as register device event callback, then monitor and process + hotplug event. + + * ``rte_eth_dev_event_handler_install`` for PMDs use to install the device + event handler. + * ``rte_eth_dev_event_handler_uninstall`` for PMDs use to uninstall the device + event handler. + API Changes ----------- diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c index 4c32025..d68bd4c 100644 --- a/lib/librte_ethdev/rte_ethdev.c +++ b/lib/librte_ethdev/rte_ethdev.c @@ -4417,6 +4417,67 @@ rte_eth_devargs_parse(const char *dargs, struct rte_eth_devargs *eth_da) return result; } +static void __rte_experimental +eth_dev_event_callback(char *device_name, enum rte_dev_event_type type, + void *arg) +{ + struct rte_eth_dev *eth_dev = (struct rte_eth_dev *)arg; + + switch (type) { + case RTE_DEV_EVENT_REMOVE: + RTE_ETHDEV_LOG(INFO, "The device %s has been removed!\n", + device_name); + + if (!device_name || !eth_dev) + return; + + if (!(eth_dev->data->dev_flags & RTE_ETH_DEV_INTR_RMV)) + return; + + if (!strcmp(device_name, eth_dev->device->name)) + _rte_eth_dev_callback_process(eth_dev, + RTE_ETH_EVENT_INTR_RMV, + NULL); + break; + case RTE_DEV_EVENT_ADD: + RTE_ETHDEV_LOG(INFO, "The device %s has been added!\n", + device_name); + break; + default: + break; + } +} + +int __rte_experimental +rte_eth_dev_event_handler_install(struct rte_eth_dev *eth_dev) +{ + int result = 0; + + result = rte_dev_event_callback_register(eth_dev->device->name, + eth_dev_event_callback, + eth_dev); + if (result) + RTE_ETHDEV_LOG(ERR, "device event callback register failed " + "for device:%s!\n", eth_dev->device->name); + + return result; +} + +int __rte_experimental +rte_eth_dev_event_handler_uninstall(struct rte_eth_dev *eth_dev) +{ + int result = 0; + + result = rte_dev_event_callback_unregister(eth_dev->device->name, + eth_dev_event_callback, + eth_dev); + if (result) + RTE_ETHDEV_LOG(ERR, "device event callback unregister failed " + "for device:%s!\n", eth_dev->device->name); + + return result; +} + RTE_INIT(ethdev_init_log) { rte_eth_dev_logtype = rte_log_register("lib.ethdev"); diff --git a/lib/librte_ethdev/rte_ethdev_driver.h b/lib/librte_ethdev/rte_ethdev_driver.h index c6d9bc1..7e3d085 100644 --- a/lib/librte_ethdev/rte_ethdev_driver.h +++ b/lib/librte_ethdev/rte_ethdev_driver.h @@ -81,6 +81,38 @@ int rte_eth_dev_release_port(struct rte_eth_dev *eth_dev); void _rte_eth_dev_reset(struct rte_eth_dev *dev); /** + * @warning + * @b EXPERIMENTAL: this API may change without prior notice. + * + * Implement a helper to install the device event handler for the specific + * ether device. + * + * @param dev + * Pointer to struct rte_eth_dev. + * + * @return + * - 0 on success, negative on error + */ +int __rte_experimental +rte_eth_dev_event_handler_install(struct rte_eth_dev *dev); + +/** + * @warning + * @b EXPERIMENTAL: this API may change without prior notice. + * + * Implement a helper to uninstall the device event handler for the specific + * ether device. + * + * @param dev + * Pointer to struct rte_eth_dev. + * + * @return + * - 0 on success, negative on error + */ +int __rte_experimental +rte_eth_dev_event_handler_uninstall(struct rte_eth_dev *dev); + +/** * @internal Executes all the user application registered callbacks for * the specific device. It is for DPDK internal user only. User * application should not call it directly. diff --git a/lib/librte_ethdev/rte_ethdev_version.map b/lib/librte_ethdev/rte_ethdev_version.map index 38f117f..3cc02b6 100644 --- a/lib/librte_ethdev/rte_ethdev_version.map +++ b/lib/librte_ethdev/rte_ethdev_version.map @@ -227,6 +227,8 @@ EXPERIMENTAL { rte_eth_dev_count_total; rte_eth_dev_create; rte_eth_dev_destroy; + rte_eth_dev_event_handler_install; + rte_eth_dev_event_handler_uninstall; rte_eth_dev_get_module_eeprom; rte_eth_dev_get_module_info; rte_eth_dev_is_removed; From patchwork Fri Aug 17 10:50:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Guo, Jia" X-Patchwork-Id: 43774 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id AA7A74C72; Fri, 17 Aug 2018 12:53:31 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id 6977E2A62 for ; Fri, 17 Aug 2018 12:53:22 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 17 Aug 2018 03:53:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.53,250,1531810800"; d="scan'208";a="76129679" Received: from jeffguo-z170x-ud5.sh.intel.com (HELO localhost.localdomain) ([10.67.104.10]) by orsmga003.jf.intel.com with ESMTP; 17 Aug 2018 03:53:04 -0700 From: Jeff Guo To: stephen@networkplumber.org, bruce.richardson@intel.com, ferruh.yigit@intel.com, konstantin.ananyev@intel.com, gaetan.rivet@6wind.com, jingjing.wu@intel.com, thomas@monjalon.net, motih@mellanox.com, matan@mellanox.com, harry.van.haaren@intel.com, qi.z.zhang@intel.com, shaopeng.he@intel.com, bernard.iremonger@intel.com, arybchenko@solarflare.com Cc: jblunck@infradead.org, shreyansh.jain@nxp.com, dev@dpdk.org, jia.guo@intel.com, helin.zhang@intel.com Date: Fri, 17 Aug 2018 18:50:14 +0800 Message-Id: <1534503016-31805-3-git-send-email-jia.guo@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1534503016-31805-1-git-send-email-jia.guo@intel.com> References: <1530787185-5915-1-git-send-email-jia.guo@intel.com> <1534503016-31805-1-git-send-email-jia.guo@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v6 2/4] net/ixgbe: install ethdev hotplug handler in ixgbe X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This patch aims to enable hotplug detection in ixgbe PMD. First, it sets the “RTE_PCI_DRV_INTR_RMV” flag in drv_flags to announce the ability of hotplug processing. Then, it calls the “rte_eth_dev_event_handler_install” API to install the device event handler for ethdev. When the eal device event be detected, it calls the ethdev callback to process it. If the event is the hotplug-out event, it will trigger the “RTE_ETH_EVENT_INTR_RMV” event into the ethdev callback to allow the application's callback to process hotplug for this ethdev. Signed-off-by: Jeff Guo Acked-by: Wenzhuo Lu --- v6->v5: refine commit log --- drivers/net/ixgbe/ixgbe_ethdev.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index 26b1927..37404cf 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) rte_intr_enable(intr_handle); ixgbevf_intr_enable(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) rte_intr_callback_unregister(intr_handle, 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, .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC | - RTE_PCI_DRV_IOVA_AS_VA, + RTE_PCI_DRV_IOVA_AS_VA | RTE_PCI_DRV_INTR_RMV, .probe = eth_ixgbe_pci_probe, .remove = eth_ixgbe_pci_remove, }; From patchwork Fri Aug 17 10:50:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Guo, Jia" X-Patchwork-Id: 43773 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 8BE3B374E; Fri, 17 Aug 2018 12:53:27 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id A6F8C98 for ; Fri, 17 Aug 2018 12:53:22 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 17 Aug 2018 03:53:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.53,250,1531810800"; d="scan'208";a="76129682" Received: from jeffguo-z170x-ud5.sh.intel.com (HELO localhost.localdomain) ([10.67.104.10]) by orsmga003.jf.intel.com with ESMTP; 17 Aug 2018 03:53:08 -0700 From: Jeff Guo To: stephen@networkplumber.org, bruce.richardson@intel.com, ferruh.yigit@intel.com, konstantin.ananyev@intel.com, gaetan.rivet@6wind.com, jingjing.wu@intel.com, thomas@monjalon.net, motih@mellanox.com, matan@mellanox.com, harry.van.haaren@intel.com, qi.z.zhang@intel.com, shaopeng.he@intel.com, bernard.iremonger@intel.com, arybchenko@solarflare.com Cc: jblunck@infradead.org, shreyansh.jain@nxp.com, dev@dpdk.org, jia.guo@intel.com, helin.zhang@intel.com Date: Fri, 17 Aug 2018 18:50:15 +0800 Message-Id: <1534503016-31805-4-git-send-email-jia.guo@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1534503016-31805-1-git-send-email-jia.guo@intel.com> References: <1530787185-5915-1-git-send-email-jia.guo@intel.com> <1534503016-31805-1-git-send-email-jia.guo@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v6 3/4] net/i40e: install hotplug handler in i40e X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This patch aims to enable hotplug detection in i40e PMD. First, it sets the “RTE_PCI_DRV_INTR_RMV” flag in drv_flags to announce the ability of hotplug processing. Then, it calls the “rte_eth_dev_event_handler_install” API to install the device event handler for ethdev. When the eal device event be detected, it calls the ethdev callback to process it. If the event is the hotplug-out event, it will trigger the “RTE_ETH_EVENT_INTR_RMV” event into the ethdev callback to allow the application's callback to process hotplug for this ethdev. Signed-off-by: Jeff Guo Acked-by: Qi Zhang --- v6->v5: refine commit log --- drivers/net/i40e/i40e_ethdev.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c index 85a6a86..bd9b3ce 100644 --- a/drivers/net/i40e/i40e_ethdev.c +++ b/drivers/net/i40e/i40e_ethdev.c @@ -697,7 +697,7 @@ static int eth_i40e_pci_remove(struct rte_pci_device *pci_dev) static struct rte_pci_driver rte_i40e_pmd = { .id_table = pci_id_i40e_map, .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC | - RTE_PCI_DRV_IOVA_AS_VA, + RTE_PCI_DRV_IOVA_AS_VA | RTE_PCI_DRV_INTR_RMV, .probe = eth_i40e_pci_probe, .remove = eth_i40e_pci_remove, }; @@ -1466,6 +1466,9 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused) rte_intr_callback_register(intr_handle, i40e_dev_interrupt_handler, dev); + /* install the dev event handler for ethdev. */ + rte_eth_dev_event_handler_install(dev); + /* configure and enable device interrupt */ i40e_pf_config_irq0(hw, TRUE); i40e_pf_enable_irq0(hw); @@ -1697,6 +1700,9 @@ eth_i40e_dev_uninit(struct rte_eth_dev *dev) /* Remove all Traffic Manager configuration */ i40e_tm_conf_uninit(dev); + /* uninstall the dev event handler for ethdev. */ + rte_eth_dev_event_handler_uninstall(dev); + return 0; } From patchwork Fri Aug 17 10:50:16 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Guo, Jia" X-Patchwork-Id: 43775 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 941A04C7B; Fri, 17 Aug 2018 12:53:34 +0200 (CEST) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id 28F8C2674 for ; Fri, 17 Aug 2018 12:53:23 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 17 Aug 2018 03:53:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.53,250,1531810800"; d="scan'208";a="76129684" Received: from jeffguo-z170x-ud5.sh.intel.com (HELO localhost.localdomain) ([10.67.104.10]) by orsmga003.jf.intel.com with ESMTP; 17 Aug 2018 03:53:12 -0700 From: Jeff Guo To: stephen@networkplumber.org, bruce.richardson@intel.com, ferruh.yigit@intel.com, konstantin.ananyev@intel.com, gaetan.rivet@6wind.com, jingjing.wu@intel.com, thomas@monjalon.net, motih@mellanox.com, matan@mellanox.com, harry.van.haaren@intel.com, qi.z.zhang@intel.com, shaopeng.he@intel.com, bernard.iremonger@intel.com, arybchenko@solarflare.com Cc: jblunck@infradead.org, shreyansh.jain@nxp.com, dev@dpdk.org, jia.guo@intel.com, helin.zhang@intel.com Date: Fri, 17 Aug 2018 18:50:16 +0800 Message-Id: <1534503016-31805-5-git-send-email-jia.guo@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1534503016-31805-1-git-send-email-jia.guo@intel.com> References: <1530787185-5915-1-git-send-email-jia.guo@intel.com> <1534503016-31805-1-git-send-email-jia.guo@intel.com> Subject: [dpdk-dev] [PATCH v6 4/4] testpmd: remove the dev event callback register X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Since we can now use the PMDs to manage the eal event for hotplug, we no longer need to register the device event callback in the application anymore. This patch removes the redundant code. Signed-off-by: Jeff Guo Acked-by: Wenzhuo Lu --- v6->v5: refine commit log --- app/test-pmd/testpmd.c | 78 -------------------------------------------------- 1 file changed, 78 deletions(-) diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index 12fc497..0e2c744 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -432,12 +432,6 @@ static void check_all_ports_link_status(uint32_t port_mask); static int eth_event_callback(portid_t port_id, enum rte_eth_event_type type, void *param, void *ret_param); -static void eth_dev_event_callback(char *device_name, - enum rte_dev_event_type type, - void *param); -static int eth_dev_event_callback_register(void); -static int eth_dev_event_callback_unregister(void); - /* * Check if all the ports are started. @@ -1959,39 +1953,6 @@ reset_port(portid_t pid) printf("Done\n"); } -static int -eth_dev_event_callback_register(void) -{ - int ret; - - /* register the device event callback */ - ret = rte_dev_event_callback_register(NULL, - eth_dev_event_callback, NULL); - if (ret) { - printf("Failed to register device event callback\n"); - return -1; - } - - return 0; -} - - -static int -eth_dev_event_callback_unregister(void) -{ - int ret; - - /* unregister the device event callback */ - ret = rte_dev_event_callback_unregister(NULL, - eth_dev_event_callback, NULL); - if (ret < 0) { - printf("Failed to unregister device event callback\n"); - return -1; - } - - return 0; -} - void attach_port(char *identifier) { @@ -2104,10 +2065,6 @@ pmd_test_exit(void) return; } - ret = eth_dev_event_callback_unregister(); - if (ret) - return; - ret = rte_dev_hotplug_handle_disable(); if (ret) { RTE_LOG(ERR, EAL, @@ -2252,37 +2209,6 @@ eth_event_callback(portid_t port_id, enum rte_eth_event_type type, void *param, return 0; } -/* This function is used by the interrupt thread */ -static void -eth_dev_event_callback(char *device_name, enum rte_dev_event_type type, - __rte_unused void *arg) -{ - if (type >= RTE_DEV_EVENT_MAX) { - fprintf(stderr, "%s called upon invalid event %d\n", - __func__, type); - fflush(stderr); - } - - switch (type) { - case RTE_DEV_EVENT_REMOVE: - RTE_LOG(ERR, EAL, "The device: %s has been removed!\n", - device_name); - /* TODO: After finish failure handle, begin to stop - * packet forward, stop port, close port, detach port. - */ - break; - case RTE_DEV_EVENT_ADD: - RTE_LOG(ERR, EAL, "The device: %s has been added!\n", - device_name); - /* TODO: After finish kernel driver binding, - * begin to attach port. - */ - break; - default: - break; - } -} - static int set_tx_queue_stats_mapping_registers(portid_t port_id, struct rte_port *port) { @@ -2805,10 +2731,6 @@ main(int argc, char** argv) "fail to start device event monitoring."); return -1; } - - ret = eth_dev_event_callback_register(); - if (ret) - return -1; } if (start_port(RTE_PORT_ALL) != 0)