DPDK patches and discussions
 help / color / mirror / Atom feed
From: Jeff Guo <jia.guo@intel.com>
To: Ferruh Yigit <ferruh.yigit@intel.com>,
	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
Subject: Re: [dpdk-dev] [PATCH v5 2/4] net/ixgbe: install ethdev hotplug handler in ixgbe
Date: Wed, 12 Sep 2018 16:47:58 +0800	[thread overview]
Message-ID: <5ac64caf-4a27-0b04-671b-fa3ac7845329@intel.com> (raw)
In-Reply-To: <39060144-950b-2527-47da-c37d8e84f40a@intel.com>

hi, ferruh


On 8/25/2018 12:22 AM, Ferruh Yigit wrote:
> 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 <jia.guo@intel.com>
>> Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
>> ---
>> 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.

make sense, I think offload the install/uninstall to step into the 
device class helper should be a better option, since we could check if 
the driver support
hotplug by RTE_PCI_DRV_INTR_RMV.

> Also should registered_callback remove eth_dev? (after calling user registered
> callbacks)

The eth_dev should be remove as any other device user space resources, 
the process should be include in the currently user registered callback.

> And what is the relation of RTE_ETH_DEV_REMOVED state, which is to say device
> removed and remove callback?

The state of RTE_ETH_DEV_REMOVED means that ether device have already 
been removed, it should be use to let to check and stop any request from 
the app.
that is device class interface layer event, just manage by the layer and 
app.

> Lastly, do you think can there be cases driver specific actions needs to be
> taken, so should driver provide a callback for removal?

so far, i think the callback should be the same functional for hotplug, 
so the answer is there can be but no needs to taken other specific 
actions, just let it handler by bus layer but not driver.

  reply	other threads:[~2018-09-12  8:48 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-05 10:39 [dpdk-dev] [PATCH 0/2] Enable eal event hotplug for i40e Jeff Guo
2018-07-05 10:39 ` [dpdk-dev] [PATCH 1/2] net/i40e: enable hotplug in i40e Jeff Guo
2018-07-05 10:39 ` [dpdk-dev] [PATCH 2/2] testpmd: remove the dev event callback register Jeff Guo
2018-07-09  6:56 ` [dpdk-dev] [PATCH v2 0/3] Enable eal hotplug event detect for i40e/ixgbe Jeff Guo
2018-07-09  6:56   ` [dpdk-dev] [PATCH v2 1/3] net/ixgbe: enable hotplug detect in ixgbe Jeff Guo
2018-07-09  7:38     ` Lu, Wenzhuo
2018-07-09  7:51       ` Matan Azrad
2018-07-09  8:57         ` Jeff Guo
2018-07-09  9:04           ` Matan Azrad
2018-07-09  9:54             ` Jeff Guo
2018-07-09 10:01               ` Matan Azrad
2018-07-09 10:14                 ` Jeff Guo
2018-07-09  8:13     ` Andrew Rybchenko
2018-07-09  8:46       ` Jeff Guo
2018-07-09  6:56   ` [dpdk-dev] [PATCH v2 2/3] net/i40e: enable hotplug detect in i40e Jeff Guo
2018-07-09  7:47     ` Matan Azrad
2018-07-09  8:54       ` Jeff Guo
2018-07-09  6:56   ` [dpdk-dev] [PATCH v2 3/3] testpmd: remove the dev event callback register Jeff Guo
2018-07-09  7:39     ` Lu, Wenzhuo
2018-07-09  8:16     ` Andrew Rybchenko
2018-07-09  8:23       ` Jeff Guo
2018-07-09 11:46 ` [dpdk-dev] [PATCH v3 0/4] Enable eal hotplug event detect for i40e/ixgbe Jeff Guo
2018-07-09 11:46   ` [dpdk-dev] [PATCH v3 1/4] ethdev: Add eal device event callback Jeff Guo
2018-07-09 13:14     ` Andrew Rybchenko
2018-07-10  7:06       ` Jeff Guo
2018-07-10  9:10     ` Zhang, Qi Z
2018-07-09 11:46   ` [dpdk-dev] [PATCH v3 2/4] net/ixgbe: enable hotplug detect in ixgbe Jeff Guo
2018-07-10  8:19     ` Lu, Wenzhuo
2018-07-09 11:46   ` [dpdk-dev] [PATCH v3 3/4] net/i40e: enable hotplug detect in i40e Jeff Guo
2018-07-09 11:46   ` [dpdk-dev] [PATCH v3 4/4] testpmd: remove the dev event callback register Jeff Guo
2018-07-10 12:51 ` [dpdk-dev] [PATCH v4 0/4] Enable eal hotplug event handler in ethdev Jeff Guo
2018-07-10 12:51   ` [dpdk-dev] [PATCH v4 1/4] ethdev: Add API to enable device event handler Jeff Guo
2018-07-10 13:24     ` Zhang, Qi Z
2018-07-11  8:49     ` Andrew Rybchenko
2018-07-11 11:17       ` Jeff Guo
2018-07-10 12:51   ` [dpdk-dev] [PATCH v4 2/4] net/ixgbe: install ethdev hotplug handler in ixgbe Jeff Guo
2018-07-10 12:51   ` [dpdk-dev] [PATCH v4 3/4] net/i40e: install hotplug handler in i40e Jeff Guo
2018-07-10 13:26     ` Zhang, Qi Z
2018-07-10 12:51   ` [dpdk-dev] [PATCH v4 4/4] testpmd: remove the dev event callback register Jeff Guo
2018-07-11 11:51 ` [dpdk-dev] [PATCH v5 0/4] Install eal hotplug event handler in i40e/ixgbe Jeff Guo
2018-07-11 11:51   ` [dpdk-dev] [PATCH v5 1/4] ethdev: Add eal device event callback Jeff Guo
2018-07-11 11:51   ` [dpdk-dev] [PATCH v5 2/4] net/ixgbe: install ethdev hotplug handler in ixgbe Jeff Guo
2018-08-24 16:22     ` Ferruh Yigit
2018-09-12  8:47       ` Jeff Guo [this message]
2018-07-11 11:51   ` [dpdk-dev] [PATCH v5 3/4] net/i40e: install hotplug handler in i40e Jeff Guo
2018-07-11 11:51   ` [dpdk-dev] [PATCH v5 4/4] testpmd: remove the dev event callback register Jeff Guo
2018-07-11 11:58 ` [dpdk-dev] [PATCH v5 0/4] Install eal hotplug event handler in i40e/ixgbe Jeff Guo
2018-07-11 11:58   ` [dpdk-dev] [PATCH v5 1/4] ethdev: Add eal device event handler APIs Jeff Guo
2018-07-11 11:58   ` [dpdk-dev] [PATCH v5 2/4] net/ixgbe: install ethdev hotplug handler in ixgbe Jeff Guo
2018-07-11 11:58   ` [dpdk-dev] [PATCH v5 3/4] net/i40e: install hotplug handler in i40e Jeff Guo
2018-07-11 11:58   ` [dpdk-dev] [PATCH v5 4/4] testpmd: remove the dev event callback register Jeff Guo
2018-08-17 10:50 ` [dpdk-dev] [PATCH v6 0/4] Install eal event handler in i40e/ixgbe Jeff Guo
2018-08-17 10:50   ` [dpdk-dev] [PATCH v6 1/4] ethdev: Add eal device event callback Jeff Guo
2018-08-17 10:50   ` [dpdk-dev] [PATCH v6 2/4] net/ixgbe: install ethdev hotplug handler in ixgbe Jeff Guo
2018-08-17 10:50   ` [dpdk-dev] [PATCH v6 3/4] net/i40e: install hotplug handler in i40e Jeff Guo
2018-08-17 10:50   ` [dpdk-dev] [PATCH v6 4/4] testpmd: remove the dev event callback register Jeff Guo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5ac64caf-4a27-0b04-671b-fa3ac7845329@intel.com \
    --to=jia.guo@intel.com \
    --cc=arybchenko@solarflare.com \
    --cc=bernard.iremonger@intel.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=gaetan.rivet@6wind.com \
    --cc=harry.van.haaren@intel.com \
    --cc=helin.zhang@intel.com \
    --cc=jblunck@infradead.org \
    --cc=jingjing.wu@intel.com \
    --cc=konstantin.ananyev@intel.com \
    --cc=matan@mellanox.com \
    --cc=motih@mellanox.com \
    --cc=qi.z.zhang@intel.com \
    --cc=shaopeng.he@intel.com \
    --cc=shreyansh.jain@nxp.com \
    --cc=stephen@networkplumber.org \
    --cc=thomas@monjalon.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).