From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id A20161B53A for ; Wed, 11 Jul 2018 13:53:53 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Jul 2018 04:53:53 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,338,1526367600"; d="scan'208";a="53568342" Received: from jeffguo-z170x-ud5.sh.intel.com (HELO localhost.localdomain) ([10.67.104.10]) by fmsmga007.fm.intel.com with ESMTP; 11 Jul 2018 04:53:50 -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: Wed, 11 Jul 2018 19:51:26 +0800 Message-Id: <1531309887-12104-4-git-send-email-jia.guo@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1531309887-12104-1-git-send-email-jia.guo@intel.com> References: <1530787185-5915-1-git-send-email-jia.guo@intel.com> <1531309887-12104-1-git-send-email-jia.guo@intel.com> Subject: [dpdk-dev] [PATCH v5 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: , X-List-Received-Date: Wed, 11 Jul 2018 11:53:54 -0000 This patch aim to enable hotplug detect in i40e 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 Acked-by: Qi Zhang --- v5->v4: no change. --- 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 13c5d32..8fccf04 100644 --- a/drivers/net/i40e/i40e_ethdev.c +++ b/drivers/net/i40e/i40e_ethdev.c @@ -688,7 +688,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, }; @@ -1442,6 +1442,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); @@ -1674,6 +1677,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; } -- 2.7.4