All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wei Dai <wei.dai@intel.com>
To: thomas@monjalon.net, wenzhuo.lu@intel.com,
	konstantin.ananyev@intel.com, jingjing.wu@intel.com,
	beilei.xing@intel.com
Cc: dev@dpdk.org, Wei Dai <wei.dai@intel.com>
Subject: [PATCH v6 2/4] net/ixgbe: add support of reset
Date: Mon, 10 Jul 2017 18:05:42 +0800	[thread overview]
Message-ID: <1499681144-26031-3-git-send-email-wei.dai@intel.com> (raw)
In-Reply-To: <1499681144-26031-1-git-send-email-wei.dai@intel.com>

Reset a NIC by calling dev_uninit and then dev_init.
Go through 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/ixgbe/ixgbe_ethdev.c | 47 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index a0ae089..280f4bb 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -170,6 +170,7 @@ static void ixgbe_dev_stop(struct rte_eth_dev *dev);
 static int  ixgbe_dev_set_link_up(struct rte_eth_dev *dev);
 static int  ixgbe_dev_set_link_down(struct rte_eth_dev *dev);
 static void ixgbe_dev_close(struct rte_eth_dev *dev);
+static int  ixgbe_dev_reset(struct rte_eth_dev *dev);
 static void ixgbe_dev_promiscuous_enable(struct rte_eth_dev *dev);
 static void ixgbe_dev_promiscuous_disable(struct rte_eth_dev *dev);
 static void ixgbe_dev_allmulticast_enable(struct rte_eth_dev *dev);
@@ -266,6 +267,7 @@ static int ixgbevf_dev_link_update(struct rte_eth_dev *dev,
 				   int wait_to_complete);
 static void ixgbevf_dev_stop(struct rte_eth_dev *dev);
 static void ixgbevf_dev_close(struct rte_eth_dev *dev);
+static int  ixgbevf_dev_reset(struct rte_eth_dev *dev);
 static void ixgbevf_intr_disable(struct ixgbe_hw *hw);
 static void ixgbevf_intr_enable(struct ixgbe_hw *hw);
 static void ixgbevf_dev_stats_get(struct rte_eth_dev *dev,
@@ -527,6 +529,7 @@ static const struct eth_dev_ops ixgbe_eth_dev_ops = {
 	.dev_set_link_up    = ixgbe_dev_set_link_up,
 	.dev_set_link_down  = ixgbe_dev_set_link_down,
 	.dev_close            = ixgbe_dev_close,
+	.dev_reset	      = ixgbe_dev_reset,
 	.promiscuous_enable   = ixgbe_dev_promiscuous_enable,
 	.promiscuous_disable  = ixgbe_dev_promiscuous_disable,
 	.allmulticast_enable  = ixgbe_dev_allmulticast_enable,
@@ -616,6 +619,7 @@ static const struct eth_dev_ops ixgbevf_eth_dev_ops = {
 	.xstats_reset         = ixgbevf_dev_stats_reset,
 	.xstats_get_names     = ixgbevf_dev_xstats_get_names,
 	.dev_close            = ixgbevf_dev_close,
+	.dev_reset	      = ixgbevf_dev_reset,
 	.allmulticast_enable  = ixgbevf_dev_allmulticast_enable,
 	.allmulticast_disable = ixgbevf_dev_allmulticast_disable,
 	.dev_infos_get        = ixgbevf_dev_info_get,
@@ -2840,6 +2844,32 @@ ixgbe_dev_close(struct rte_eth_dev *dev)
 	ixgbe_set_rar(hw, 0, hw->mac.addr, 0, IXGBE_RAH_AV);
 }
 
+/*
+ * Reest PF device.
+ */
+static int
+ixgbe_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 ixgbe 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_ixgbe_dev_uninit(dev);
+	if (ret)
+		return ret;
+
+	ret = eth_ixgbe_dev_init(dev);
+
+	return ret;
+}
+
 static void
 ixgbe_read_stats_registers(struct ixgbe_hw *hw,
 			   struct ixgbe_hw_stats *hw_stats,
@@ -5036,6 +5066,23 @@ ixgbevf_dev_close(struct rte_eth_dev *dev)
 	ixgbevf_remove_mac_addr(dev, 0);
 }
 
+/*
+ * Reset VF device
+ */
+static int
+ixgbevf_dev_reset(struct rte_eth_dev *dev)
+{
+	int ret;
+
+	ret = eth_ixgbevf_dev_uninit(dev);
+	if (ret)
+		return ret;
+
+	ret = eth_ixgbevf_dev_init(dev);
+
+	return ret;
+}
+
 static void ixgbevf_set_vfta_all(struct rte_eth_dev *dev, bool on)
 {
 	struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-- 
2.7.5

  parent reply	other threads:[~2017-07-10 10:16 UTC|newest]

Thread overview: 91+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-27  8:22 [PATCH 0/7] NIC port restoration Wei Dai
2017-05-27  8:22 ` [PATCH 1/7] ethdev: add support of NIC restoration Wei Dai
2017-05-27  8:22 ` [PATCH 2/7] ethdev: add support of restoration of queue state Wei Dai
2017-05-27  8:22 ` [PATCH 3/7] ethdev: add support of restoration of port status Wei Dai
2017-05-27  8:22 ` [PATCH 4/7] ethdev: add support of MTU restoration Wei Dai
2017-05-27  8:22 ` [PATCH 5/7] ethdev: add support of restoration of multicast addr Wei Dai
2017-05-27  8:22 ` [PATCH 6/7] net/ixgbe: add support of restoration Wei Dai
2017-05-27  8:22 ` [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 ` [PATCH v2 0/5] Support NIC reset and keep same port id Wei Dai
2017-06-27 14:07   ` [PATCH v2 1/5] ethdev: add support of NIC reset Wei Dai
2017-06-27 14:07   ` [PATCH v2 2/5] net/ixgbe: add support of reset Wei Dai
2017-06-27 14:07   ` [PATCH v2 3/5] net/i40e: " Wei Dai
2017-06-27 14:07   ` [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   ` [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   ` [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   ` [PATCH v3 0/4] " Wei Dai
2017-06-29  8:34     ` [PATCH v3 1/4] ethdev: add support of NIC reset Wei Dai
2017-06-29  8:34     ` [PATCH v3 2/4] net/ixgbe: add support of reset Wei Dai
2017-06-29  8:34     ` [PATCH v3 3/4] net/i40e: " Wei Dai
2017-06-29  8:34     ` [PATCH v3 4/4] app/testpmd: enhance command to test NIC reset Wei Dai
2017-06-29 14:57     ` [PATCH v4 0/5] Support NIC reset and keep same port id Wei Dai
2017-06-29 14:57       ` [PATCH v4 1/5] ethdev: add support of NIC reset Wei Dai
2017-06-29 14:57       ` [PATCH v4 2/5] net/ixgbe: add support of reset Wei Dai
2017-06-29 14:58       ` [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       ` [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       ` [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       ` [PATCH v4 0/5] Support NIC reset and keep same port id Peng, Yuan
2017-06-30 10:12       ` [PATCH v5 0/4] " Wei Dai
2017-06-30 10:12         ` [PATCH v5 1/4] ethdev: add support of NIC reset Wei Dai
2017-06-30 10:12         ` [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         ` [PATCH v5 3/4] net/i40e: " Wei Dai
2017-06-30 10:12         ` [PATCH v5 4/4] app/testpmd: enhance command to test NIC reset Wei Dai
2017-06-30 10:50         ` [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         ` [PATCH v6 " Wei Dai
2017-07-10 10:05           ` [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           ` Wei Dai [this message]
2017-07-10 10:05           ` [PATCH v6 3/4] net/i40e: add support of reset Wei Dai
2017-07-10 10:05           ` [PATCH v6 4/4] app/testpmd: enhance command to test NIC reset Wei Dai
2017-07-13 15:53           ` [PATCH v7 0/5] Support NIC reset and keep same port id Wei Dai
2017-07-13 15:53             ` [PATCH v7 1/5] ethdev: add support of NIC reset Wei Dai
2017-07-13 15:53             ` [PATCH v7 2/5] net/ixgbe: add support of reset Wei Dai
2017-07-13 15:53             ` [PATCH v7 3/5] net/i40e: " Wei Dai
2017-07-13 15:53             ` [PATCH v7 4/5] app/testpmd: enhance command to test NIC reset Wei Dai
2017-07-13 15:53             ` [PATCH v7 5/5] doc: add description of the NIC reset API Wei Dai
2017-07-16 19:25             ` [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             ` [PATCH v8 0/5] Support of " Wei Dai
2017-07-17 15:14               ` [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               ` [PATCH v8 2/5] net/ixgbe: add support of reset Wei Dai
2017-07-17 15:15               ` [PATCH v8 3/5] net/i40e: " Wei Dai
2017-07-17 15:15               ` [PATCH v8 4/5] app/testpmd: enhance command to test NIC reset Wei Dai
2017-07-17 15:15               ` [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               ` [PATCH v9 0/5] Support of NIC reset and keep same port id Wei Dai
2017-07-23  9:15                 ` [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                 ` [PATCH v9 2/5] net/ixgbe: add support of reset Wei Dai
2017-09-13 20:53                   ` Thomas Monjalon
2017-07-23  9:15                 ` [PATCH v9 3/5] net/i40e: " Wei Dai
2017-07-23  9:15                 ` [PATCH v9 4/5] app/testpmd: enhance command to test NIC reset Wei Dai
2017-07-23  9:15                 ` [PATCH v9 5/5] doc: add description of the NIC reset API Wei Dai
2017-09-13 21:02                 ` [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=1499681144-26031-3-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=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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.