From: Wei Dai <wei.dai@intel.com>
To: thomas@monjalon.net, wenzhuo.lu@intel.com,
konstantin.ananyev@intel.com, beilei.xing@intel.com,
jingjing.wu@intel.com, john.mcnamara@intel.com
Cc: dev@dpdk.org, Wei Dai <wei.dai@intel.com>
Subject: [dpdk-dev] [PATCH v8 3/5] net/i40e: add support of reset
Date: Mon, 17 Jul 2017 23:15:01 +0800 [thread overview]
Message-ID: <1500304503-41592-4-git-send-email-wei.dai@intel.com> (raw)
In-Reply-To: <1500304503-41592-1-git-send-email-wei.dai@intel.com>
Reset a NIC by calling dev_uninit() and then dev_init().
Go through the same way in NIC PCI remove without release
of ethdev resource and then NIC PCI probe function without
ethdev resource allocation.
Signed-off-by: Wei Dai <wei.dai@intel.com>
---
drivers/net/i40e/i40e_ethdev.c | 28 ++++++++++++++++++++++++++++
drivers/net/i40e/i40e_ethdev_vf.c | 19 +++++++++++++++++++
2 files changed, 47 insertions(+)
diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 97a73e1..4ed4cf0 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -250,6 +250,7 @@ static int i40e_dev_configure(struct rte_eth_dev *dev);
static int i40e_dev_start(struct rte_eth_dev *dev);
static void i40e_dev_stop(struct rte_eth_dev *dev);
static void i40e_dev_close(struct rte_eth_dev *dev);
+static int i40e_dev_reset(struct rte_eth_dev *dev);
static void i40e_dev_promiscuous_enable(struct rte_eth_dev *dev);
static void i40e_dev_promiscuous_disable(struct rte_eth_dev *dev);
static void i40e_dev_allmulticast_enable(struct rte_eth_dev *dev);
@@ -449,6 +450,7 @@ static const struct eth_dev_ops i40e_eth_dev_ops = {
.dev_start = i40e_dev_start,
.dev_stop = i40e_dev_stop,
.dev_close = i40e_dev_close,
+ .dev_reset = i40e_dev_reset,
.promiscuous_enable = i40e_dev_promiscuous_enable,
.promiscuous_disable = i40e_dev_promiscuous_disable,
.allmulticast_enable = i40e_dev_allmulticast_enable,
@@ -2151,6 +2153,32 @@ i40e_dev_close(struct rte_eth_dev *dev)
I40E_WRITE_FLUSH(hw);
}
+/*
+ * Reest PF device only to re-initialize resources in PMD layer
+ */
+static int
+i40e_dev_reset(struct rte_eth_dev *dev)
+{
+ int ret;
+
+ /* When a DPDK PMD PF begin to reset PF port, it should notify all
+ * its VF to make them align with it. The detailed notification
+ * mechanism is PMD specific. As to i40e PF, it is rather complex.
+ * To avoid unexpected behavior in VF, currently reset of PF with
+ * SR-IOV activation is not supported. It might be supported later.
+ */
+ if (dev->data->sriov.active)
+ return -ENOTSUP;
+
+ ret = eth_i40e_dev_uninit(dev);
+ if (ret)
+ return ret;
+
+ ret = eth_i40e_dev_init(dev);
+
+ return ret;
+}
+
static void
i40e_dev_promiscuous_enable(struct rte_eth_dev *dev)
{
diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c
index dc6c794..e0031d1 100644
--- a/drivers/net/i40e/i40e_ethdev_vf.c
+++ b/drivers/net/i40e/i40e_ethdev_vf.c
@@ -122,6 +122,7 @@ static void i40evf_vlan_offload_set(struct rte_eth_dev *dev, int mask);
static int i40evf_vlan_pvid_set(struct rte_eth_dev *dev, uint16_t pvid,
int on);
static void i40evf_dev_close(struct rte_eth_dev *dev);
+static int i40evf_dev_reset(struct rte_eth_dev *dev);
static void i40evf_dev_promiscuous_enable(struct rte_eth_dev *dev);
static void i40evf_dev_promiscuous_disable(struct rte_eth_dev *dev);
static void i40evf_dev_allmulticast_enable(struct rte_eth_dev *dev);
@@ -203,6 +204,7 @@ static const struct eth_dev_ops i40evf_eth_dev_ops = {
.xstats_get_names = i40evf_dev_xstats_get_names,
.xstats_reset = i40evf_dev_xstats_reset,
.dev_close = i40evf_dev_close,
+ .dev_reset = i40evf_dev_reset,
.dev_infos_get = i40evf_dev_info_get,
.dev_supported_ptypes_get = i40e_dev_supported_ptypes_get,
.vlan_filter_set = i40evf_vlan_filter_set,
@@ -2355,6 +2357,23 @@ i40evf_dev_close(struct rte_eth_dev *dev)
i40evf_disable_irq0(hw);
}
+/*
+ * Reest VF device only to re-initialize resources in PMD layer
+ */
+static int
+i40evf_dev_reset(struct rte_eth_dev *dev)
+{
+ int ret;
+
+ ret = i40evf_dev_uninit(dev);
+ if (ret)
+ return ret;
+
+ ret = i40evf_dev_init(dev);
+
+ return ret;
+}
+
static int
i40evf_get_rss_lut(struct i40e_vsi *vsi, uint8_t *lut, uint16_t lut_size)
{
--
2.7.5
next prev parent reply other threads:[~2017-07-17 15:26 UTC|newest]
Thread overview: 91+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-27 8:22 [dpdk-dev] [PATCH 0/7] NIC port restoration Wei Dai
2017-05-27 8:22 ` [dpdk-dev] [PATCH 1/7] ethdev: add support of NIC restoration Wei Dai
2017-05-27 8:22 ` [dpdk-dev] [PATCH 2/7] ethdev: add support of restoration of queue state Wei Dai
2017-05-27 8:22 ` [dpdk-dev] [PATCH 3/7] ethdev: add support of restoration of port status Wei Dai
2017-05-27 8:22 ` [dpdk-dev] [PATCH 4/7] ethdev: add support of MTU restoration Wei Dai
2017-05-27 8:22 ` [dpdk-dev] [PATCH 5/7] ethdev: add support of restoration of multicast addr Wei Dai
2017-05-27 8:22 ` [dpdk-dev] [PATCH 6/7] net/ixgbe: add support of restoration Wei Dai
2017-05-27 8:22 ` [dpdk-dev] [PATCH 7/7] net/i40e: " Wei Dai
2017-06-07 7:50 ` Wu, Jingjing
2017-06-20 7:55 ` Dai, Wei
2017-06-27 14:07 ` [dpdk-dev] [PATCH v2 0/5] Support NIC reset and keep same port id Wei Dai
2017-06-27 14:07 ` [dpdk-dev] [PATCH v2 1/5] ethdev: add support of NIC reset Wei Dai
2017-06-27 14:07 ` [dpdk-dev] [PATCH v2 2/5] net/ixgbe: add support of reset Wei Dai
2017-06-27 14:07 ` [dpdk-dev] [PATCH v2 3/5] net/i40e: " Wei Dai
2017-06-27 14:07 ` [dpdk-dev] [PATCH v2 4/5] app/testpmd: add command to test NIC reset Wei Dai
2017-06-28 9:10 ` Wu, Jingjing
2017-06-29 7:00 ` Dai, Wei
2017-06-27 14:07 ` [dpdk-dev] [PATCH v2 5/5] app/testpmd: add command to test NIC restoration Wei Dai
2017-06-28 9:05 ` Wu, Jingjing
2017-06-29 6:58 ` Dai, Wei
2017-06-29 3:51 ` [dpdk-dev] [PATCH v2 0/5] Support NIC reset and keep same port id Peng, Yuan
2017-06-29 6:29 ` Dai, Wei
2017-06-29 8:34 ` [dpdk-dev] [PATCH v3 0/4] " Wei Dai
2017-06-29 8:34 ` [dpdk-dev] [PATCH v3 1/4] ethdev: add support of NIC reset Wei Dai
2017-06-29 8:34 ` [dpdk-dev] [PATCH v3 2/4] net/ixgbe: add support of reset Wei Dai
2017-06-29 8:34 ` [dpdk-dev] [PATCH v3 3/4] net/i40e: " Wei Dai
2017-06-29 8:34 ` [dpdk-dev] [PATCH v3 4/4] app/testpmd: enhance command to test NIC reset Wei Dai
2017-06-29 14:57 ` [dpdk-dev] [PATCH v4 0/5] Support NIC reset and keep same port id Wei Dai
2017-06-29 14:57 ` [dpdk-dev] [PATCH v4 1/5] ethdev: add support of NIC reset Wei Dai
2017-06-29 14:57 ` [dpdk-dev] [PATCH v4 2/5] net/ixgbe: add support of reset Wei Dai
2017-06-29 14:58 ` [dpdk-dev] [PATCH v4 3/5] net/i40e: " Wei Dai
2017-06-30 8:54 ` Wu, Jingjing
2017-06-30 9:37 ` Dai, Wei
2017-06-29 14:58 ` [dpdk-dev] [PATCH v4 4/5] app/testpmd: display PCI address in port info Wei Dai
2017-06-30 9:07 ` Wu, Jingjing
2017-06-29 14:58 ` [dpdk-dev] [PATCH v4 5/5] app/testpmd: enhance command to test NIC reset Wei Dai
2017-06-30 5:13 ` Peng, Yuan
2017-06-30 8:57 ` Wu, Jingjing
2017-06-30 9:09 ` Wu, Jingjing
2017-06-30 9:15 ` Dai, Wei
2017-06-30 5:11 ` [dpdk-dev] [PATCH v4 0/5] Support NIC reset and keep same port id Peng, Yuan
2017-06-30 10:12 ` [dpdk-dev] [PATCH v5 0/4] " Wei Dai
2017-06-30 10:12 ` [dpdk-dev] [PATCH v5 1/4] ethdev: add support of NIC reset Wei Dai
2017-06-30 10:12 ` [dpdk-dev] [PATCH v5 2/4] net/ixgbe: add support of reset Wei Dai
2017-07-07 8:25 ` Thomas Monjalon
2017-07-07 8:36 ` Thomas Monjalon
2017-07-10 10:19 ` Dai, Wei
2017-06-30 10:12 ` [dpdk-dev] [PATCH v5 3/4] net/i40e: " Wei Dai
2017-06-30 10:12 ` [dpdk-dev] [PATCH v5 4/4] app/testpmd: enhance command to test NIC reset Wei Dai
2017-06-30 10:50 ` [dpdk-dev] [PATCH v5 0/4] Support NIC reset and keep same port id Wu, Jingjing
2017-07-05 5:48 ` Dai, Wei
2017-07-10 10:05 ` [dpdk-dev] [PATCH v6 " Wei Dai
2017-07-10 10:05 ` [dpdk-dev] [PATCH v6 1/4] ethdev: add support of NIC reset Wei Dai
2017-07-10 11:35 ` Jerin Jacob
2017-07-11 1:57 ` Dai, Wei
2017-07-11 5:17 ` Jerin Jacob
2017-07-11 14:36 ` Dai, Wei
2017-07-12 16:13 ` Jerin Jacob
2017-07-13 16:06 ` Dai, Wei
2017-07-10 10:05 ` [dpdk-dev] [PATCH v6 2/4] net/ixgbe: add support of reset Wei Dai
2017-07-10 10:05 ` [dpdk-dev] [PATCH v6 3/4] net/i40e: " Wei Dai
2017-07-10 10:05 ` [dpdk-dev] [PATCH v6 4/4] app/testpmd: enhance command to test NIC reset Wei Dai
2017-07-13 15:53 ` [dpdk-dev] [PATCH v7 0/5] Support NIC reset and keep same port id Wei Dai
2017-07-13 15:53 ` [dpdk-dev] [PATCH v7 1/5] ethdev: add support of NIC reset Wei Dai
2017-07-13 15:53 ` [dpdk-dev] [PATCH v7 2/5] net/ixgbe: add support of reset Wei Dai
2017-07-13 15:53 ` [dpdk-dev] [PATCH v7 3/5] net/i40e: " Wei Dai
2017-07-13 15:53 ` [dpdk-dev] [PATCH v7 4/5] app/testpmd: enhance command to test NIC reset Wei Dai
2017-07-13 15:53 ` [dpdk-dev] [PATCH v7 5/5] doc: add description of the NIC reset API Wei Dai
2017-07-16 19:25 ` [dpdk-dev] [PATCH v7 0/5] Support NIC reset and keep same port id Thomas Monjalon
2017-07-17 14:02 ` Dai, Wei
2017-07-19 14:36 ` Dai, Wei
2017-07-17 15:14 ` [dpdk-dev] [PATCH v8 0/5] Support of " Wei Dai
2017-07-17 15:14 ` [dpdk-dev] [PATCH v8 1/5] ethdev: add support of NIC reset Wei Dai
2017-07-20 13:21 ` Remy Horton
2017-07-23 13:45 ` Dai, Wei
2017-07-17 15:15 ` [dpdk-dev] [PATCH v8 2/5] net/ixgbe: add support of reset Wei Dai
2017-07-17 15:15 ` Wei Dai [this message]
2017-07-17 15:15 ` [dpdk-dev] [PATCH v8 4/5] app/testpmd: enhance command to test NIC reset Wei Dai
2017-07-17 15:15 ` [dpdk-dev] [PATCH v8 5/5] doc: add description of the NIC reset API Wei Dai
2017-07-20 13:22 ` Remy Horton
2017-07-23 9:15 ` [dpdk-dev] [PATCH v9 0/5] Support of NIC reset and keep same port id Wei Dai
2017-07-23 9:15 ` [dpdk-dev] [PATCH v9 1/5] ethdev: add support of NIC reset Wei Dai
2017-09-13 20:51 ` Thomas Monjalon
2017-09-14 18:16 ` Luca Boccassi
2017-07-23 9:15 ` [dpdk-dev] [PATCH v9 2/5] net/ixgbe: add support of reset Wei Dai
2017-09-13 20:53 ` Thomas Monjalon
2017-07-23 9:15 ` [dpdk-dev] [PATCH v9 3/5] net/i40e: " Wei Dai
2017-07-23 9:15 ` [dpdk-dev] [PATCH v9 4/5] app/testpmd: enhance command to test NIC reset Wei Dai
2017-07-23 9:15 ` [dpdk-dev] [PATCH v9 5/5] doc: add description of the NIC reset API Wei Dai
2017-09-13 21:02 ` [dpdk-dev] [PATCH v9 0/5] Support of NIC reset and keep same port id Thomas Monjalon
2017-09-14 1:32 ` Dai, Wei
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=1500304503-41592-4-git-send-email-wei.dai@intel.com \
--to=wei.dai@intel.com \
--cc=beilei.xing@intel.com \
--cc=dev@dpdk.org \
--cc=jingjing.wu@intel.com \
--cc=john.mcnamara@intel.com \
--cc=konstantin.ananyev@intel.com \
--cc=thomas@monjalon.net \
--cc=wenzhuo.lu@intel.com \
/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).