From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id C74257CBC for ; Fri, 24 Aug 2018 18:22:54 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Aug 2018 09:22:53 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.53,283,1531810800"; d="scan'208";a="67614176" Received: from fyigit-mobl.ger.corp.intel.com (HELO [10.237.221.56]) ([10.237.221.56]) by orsmga007.jf.intel.com with ESMTP; 24 Aug 2018 09:22:48 -0700 To: Jeff Guo , stephen@networkplumber.org, bruce.richardson@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, helin.zhang@intel.com References: <1530787185-5915-1-git-send-email-jia.guo@intel.com> <1531309887-12104-1-git-send-email-jia.guo@intel.com> <1531309887-12104-3-git-send-email-jia.guo@intel.com> From: Ferruh Yigit Openpgp: preference=signencrypt Message-ID: <39060144-950b-2527-47da-c37d8e84f40a@intel.com> Date: Fri, 24 Aug 2018 17:22:48 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <1531309887-12104-3-git-send-email-jia.guo@intel.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH v5 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: , X-List-Received-Date: Fri, 24 Aug 2018 16:22:55 -0000 On 7/11/2018 12:51 PM, Jeff Guo wrote: > 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 > Acked-by: Wenzhuo Lu > --- > v5->v4: > no change. > --- > 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 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) > 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, Instead of each driver explicitly install/uninstall handler, can it be possible to do this in a common code for drivers that report RTE_PCI_DRV_INTR_RMV support? With this you may not need helper functions but implement them as static functions in common code. Also should registered_callback remove eth_dev? (after calling user registered callbacks) And what is the relation of RTE_ETH_DEV_REMOVED state, which is to say device removed and remove callback? Lastly, do you think can there be cases driver specific actions needs to be taken, so should driver provide a callback for removal?