DPDK patches and discussions
 help / color / mirror / Atom feed
From: Jeff Guo <jia.guo@intel.com>
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
Cc: jblunck@infradead.org, shreyansh.jain@nxp.com, dev@dpdk.org,
	jia.guo@intel.com, helin.zhang@intel.com
Subject: [dpdk-dev] [PATCH 1/2] net/i40e: enable hotplug in i40e
Date: Thu,  5 Jul 2018 18:39:44 +0800	[thread overview]
Message-ID: <1530787185-5915-2-git-send-email-jia.guo@intel.com> (raw)
In-Reply-To: <1530787185-5915-1-git-send-email-jia.guo@intel.com>

This patch aim to enable hotplug in i40e pmd driver. Firstly it set
the flags RTE_PCI_DRV_INTR_RMV in drv_flags to announce the hotplug
ability, and then use rte_dev_event_callback_register to register
the hotplug event callback to eal, when eal detect the hotplug event,
will call the callback to process it, if the event is hotplug remove,
it will trigger the RTE_ETH_EVENT_INTR_RMV event into ethdev callback
to letapp process the hotplug for the ethdev.

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

Signed-off-by: Jeff Guo <jia.guo@intel.com>
---
 drivers/net/i40e/i40e_ethdev.c | 46 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 45 insertions(+), 1 deletion(-)

diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 13c5d32..ad4231f 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,
 };
@@ -1183,6 +1183,47 @@ i40e_aq_debug_write_global_register(struct i40e_hw *hw,
 	return i40e_aq_debug_write_register(hw, reg_addr, reg_val, cmd_details);
 }
 
+static void
+eth_dev_event_callback(char *device_name, enum rte_dev_event_type type,
+		       __rte_unused void *arg)
+{
+	uint32_t pid;
+
+	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:
+		PMD_DRV_LOG(INFO, "The device: %s has been removed!\n",
+			    device_name);
+
+		if (!device_name)
+			return;
+
+		for (pid = 0; pid < RTE_MAX_ETHPORTS; pid++) {
+			if (rte_eth_devices[pid].device) {
+				if (!strcmp(device_name,
+				    rte_eth_devices[pid].device->name)) {
+					_rte_eth_dev_callback_process(
+						&rte_eth_devices[pid],
+						RTE_ETH_EVENT_INTR_RMV, NULL);
+					continue;
+				}
+			}
+		}
+		break;
+	case RTE_DEV_EVENT_ADD:
+		RTE_LOG(INFO, EAL, "The device: %s has been added!\n",
+			device_name);
+		break;
+	default:
+		break;
+	}
+}
+
 static int
 eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused)
 {
@@ -1442,6 +1483,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);
 
+	/* register the device event callback */
+	rte_dev_event_callback_register(NULL, eth_dev_event_callback, NULL);
+
 	/* configure and enable device interrupt */
 	i40e_pf_config_irq0(hw, TRUE);
 	i40e_pf_enable_irq0(hw);
-- 
2.7.4

  reply	other threads:[~2018-07-05 10:41 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 ` Jeff Guo [this message]
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
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=1530787185-5915-2-git-send-email-jia.guo@intel.com \
    --to=jia.guo@intel.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).