DPDK patches and discussions
 help / color / mirror / Atom feed
From: Guinan Sun <guinanx.sun@intel.com>
To: dev@dpdk.org
Cc: Guinan Sun <guinanx.sun@intel.com>,
	Jakub Chylkowski <jakubx.chylkowski@intel.com>
Subject: [dpdk-dev] [PATCH 12/21] net/ixgbe/base: create dedicated func to restart auto nego
Date: Fri, 12 Jun 2020 03:24:01 +0000	[thread overview]
Message-ID: <20200612032410.20864-13-guinanx.sun@intel.com> (raw)
In-Reply-To: <20200612032410.20864-1-guinanx.sun@intel.com>

Code to restart auto negotiation on PHY is already used in two places
and is needed in CORE repo of ixgben. This patch places it in dedicated
function for code clarity and makes it available outside the SHARED repo.

Testing Hints (required if no HSD):
Check if link goes up and traffic works.
Change speed on the uplink.

Signed-off-by: Jakub Chylkowski <jakubx.chylkowski@intel.com>
Signed-off-by: Guinan Sun <guinanx.sun@intel.com>
---
 drivers/net/ixgbe/base/ixgbe_phy.c | 48 ++++++++++++++----------------
 drivers/net/ixgbe/base/ixgbe_phy.h |  1 +
 2 files changed, 23 insertions(+), 26 deletions(-)

diff --git a/drivers/net/ixgbe/base/ixgbe_phy.c b/drivers/net/ixgbe/base/ixgbe_phy.c
index 823cf161e..620154a41 100644
--- a/drivers/net/ixgbe/base/ixgbe_phy.c
+++ b/drivers/net/ixgbe/base/ixgbe_phy.c
@@ -542,6 +542,26 @@ s32 ixgbe_reset_phy_generic(struct ixgbe_hw *hw)
 	return status;
 }
 
+/**
+ * ixgbe_restart_auto_neg - Restart auto negotiation on the PHY
+ * @hw: pointer to hardware structure
+ **/
+void ixgbe_restart_auto_neg(struct ixgbe_hw *hw)
+{
+	u16 autoneg_reg;
+
+	/* Check if PHY reset is blocked by MNG FW */
+	if (ixgbe_check_reset_blocked(hw))
+		return;
+
+	/* Restart PHY auto-negotiation. */
+	hw->phy.ops.read_reg(hw, IXGBE_MDIO_AUTO_NEG_CONTROL,
+				IXGBE_MDIO_AUTO_NEG_DEV_TYPE, &autoneg_reg);
+	autoneg_reg |= IXGBE_MII_RESTART;
+	hw->phy.ops.write_reg(hw, IXGBE_MDIO_AUTO_NEG_CONTROL,
+				IXGBE_MDIO_AUTO_NEG_DEV_TYPE, autoneg_reg);
+}
+
 /**
  * ixgbe_read_phy_mdi - Reads a value from a specified PHY register without
  * the SWFW lock
@@ -826,19 +846,7 @@ s32 ixgbe_setup_phy_link_generic(struct ixgbe_hw *hw)
 			      IXGBE_MDIO_AUTO_NEG_DEV_TYPE,
 			      autoneg_reg);
 
-	/* Blocked by MNG FW so don't reset PHY */
-	if (ixgbe_check_reset_blocked(hw))
-		return status;
-
-	/* Restart PHY auto-negotiation. */
-	hw->phy.ops.read_reg(hw, IXGBE_MDIO_AUTO_NEG_CONTROL,
-			     IXGBE_MDIO_AUTO_NEG_DEV_TYPE, &autoneg_reg);
-
-	autoneg_reg |= IXGBE_MII_RESTART;
-
-	hw->phy.ops.write_reg(hw, IXGBE_MDIO_AUTO_NEG_CONTROL,
-			      IXGBE_MDIO_AUTO_NEG_DEV_TYPE, autoneg_reg);
-
+	ixgbe_restart_auto_neg(hw);
 	return status;
 }
 
@@ -1062,19 +1070,7 @@ s32 ixgbe_setup_phy_link_tnx(struct ixgbe_hw *hw)
 				      autoneg_reg);
 	}
 
-	/* Blocked by MNG FW so don't reset PHY */
-	if (ixgbe_check_reset_blocked(hw))
-		return status;
-
-	/* Restart PHY auto-negotiation. */
-	hw->phy.ops.read_reg(hw, IXGBE_MDIO_AUTO_NEG_CONTROL,
-			     IXGBE_MDIO_AUTO_NEG_DEV_TYPE, &autoneg_reg);
-
-	autoneg_reg |= IXGBE_MII_RESTART;
-
-	hw->phy.ops.write_reg(hw, IXGBE_MDIO_AUTO_NEG_CONTROL,
-			      IXGBE_MDIO_AUTO_NEG_DEV_TYPE, autoneg_reg);
-
+	ixgbe_restart_auto_neg(hw);
 	return status;
 }
 
diff --git a/drivers/net/ixgbe/base/ixgbe_phy.h b/drivers/net/ixgbe/base/ixgbe_phy.h
index a06c3be17..e28c52a7b 100644
--- a/drivers/net/ixgbe/base/ixgbe_phy.h
+++ b/drivers/net/ixgbe/base/ixgbe_phy.h
@@ -133,6 +133,7 @@ enum ixgbe_phy_type ixgbe_get_phy_type_from_id(u32 phy_id);
 s32 ixgbe_get_phy_id(struct ixgbe_hw *hw);
 s32 ixgbe_identify_phy_generic(struct ixgbe_hw *hw);
 s32 ixgbe_reset_phy_generic(struct ixgbe_hw *hw);
+void ixgbe_restart_auto_neg(struct ixgbe_hw *hw);
 s32 ixgbe_read_phy_reg_mdi(struct ixgbe_hw *hw, u32 reg_addr, u32 device_type,
 			   u16 *phy_data);
 s32 ixgbe_write_phy_reg_mdi(struct ixgbe_hw *hw, u32 reg_addr, u32 device_type,
-- 
2.17.1


  parent reply	other threads:[~2020-06-12  3:48 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-12  3:23 [dpdk-dev] [PATCH 00/21] update ixgbe base code Guinan Sun
2020-06-12  3:23 ` [dpdk-dev] [PATCH 01/21] net/ixgbe/base: clear VFMBMEM and toggle VF's Tx queues Guinan Sun
2020-06-22 11:58   ` Ferruh Yigit
2020-06-30  1:57     ` Sun, GuinanX
2020-06-12  3:23 ` [dpdk-dev] [PATCH 02/21] net/ixgbe/base: change in the condition for response HI Guinan Sun
2020-06-22 11:58   ` Ferruh Yigit
2020-06-29  9:27     ` Yang, Qiming
2020-06-30  2:17     ` Sun, GuinanX
2020-06-12  3:23 ` [dpdk-dev] [PATCH 03/21] net/ixgbe/base: hange flow for "Apply Update" command Guinan Sun
2020-06-22 11:58   ` Ferruh Yigit
2020-06-30  2:24     ` Sun, GuinanX
2020-06-12  3:23 ` [dpdk-dev] [PATCH 04/21] net/ixgbe/base: x550em 10G NIC driver issue Guinan Sun
2020-06-22 11:59   ` Ferruh Yigit
2020-07-01  2:54     ` Sun, GuinanX
2020-06-12  3:23 ` [dpdk-dev] [PATCH 05/21] net/ixgbe/base: added API for NVM update Guinan Sun
2020-06-22 11:59   ` Ferruh Yigit
2020-06-30  2:37     ` Sun, GuinanX
2020-06-12  3:23 ` [dpdk-dev] [PATCH 06/21] net/ixgbe/base: resolve infinite recursion on PCIe link down Guinan Sun
2020-06-12  3:23 ` [dpdk-dev] [PATCH 07/21] net/ixgbe/base: added register definitions for NVM update Guinan Sun
2020-06-12  3:23 ` [dpdk-dev] [PATCH 08/21] net/ixgbe/base: cleanup spelling mistakes in comments Guinan Sun
2020-06-12  3:23 ` [dpdk-dev] [PATCH 09/21] net/ixgbe/base: remove whitespace in function comments Guinan Sun
2020-06-12  3:23 ` [dpdk-dev] [PATCH 10/21] net/ixgbe/base: move increments after evaluations Guinan Sun
2020-06-22 11:59   ` Ferruh Yigit
2020-06-30  2:51     ` Sun, GuinanX
2020-06-12  3:24 ` [dpdk-dev] [PATCH 11/21] net/ixgbe/base: modify loop accounting for retries Guinan Sun
2020-06-22 11:59   ` Ferruh Yigit
2020-06-30  2:52     ` Sun, GuinanX
2020-06-12  3:24 ` Guinan Sun [this message]
2020-06-22 11:59   ` [dpdk-dev] [PATCH 12/21] net/ixgbe/base: create dedicated func to restart auto nego Ferruh Yigit
2020-06-12  3:24 ` [dpdk-dev] [PATCH 13/21] net/ixgbe/base: modify Klocwork hits for DDK 7.0 Guinan Sun
2020-06-22 12:00   ` Ferruh Yigit
2020-07-01  4:52     ` Sun, GuinanX
2020-06-12  3:24 ` [dpdk-dev] [PATCH 14/21] net/ixgbe/base: add defines for min rollback revision fields Guinan Sun
2020-06-22 12:00   ` Ferruh Yigit
2020-07-01  5:08     ` Sun, GuinanX
2020-06-12  3:24 ` [dpdk-dev] [PATCH 15/21] net/ixgbe/base: remove unnecessary log message FC autonego Guinan Sun
2020-06-12  3:24 ` [dpdk-dev] [PATCH 16/21] net/ixgbe/base: initialize data field in struct buffer Guinan Sun
2020-06-12  3:24 ` [dpdk-dev] [PATCH 17/21] net/ixgbe/base: improve log about autonego being disabled Guinan Sun
2020-06-22 12:00   ` Ferruh Yigit
2020-07-01  5:19     ` Sun, GuinanX
2020-06-12  3:24 ` [dpdk-dev] [PATCH 18/21] net/ixgbe/base: ipv6 Mask for purpose FDIR VLAN Port Feature Guinan Sun
2020-06-22 12:00   ` Ferruh Yigit
2020-07-01  5:21     ` Sun, GuinanX
2020-06-12  3:24 ` [dpdk-dev] [PATCH 19/21] net/ixgbe/base: remove default advertising for 2.5G and 5G Guinan Sun
2020-06-22 12:00   ` Ferruh Yigit
2020-07-01  6:24     ` Sun, GuinanX
2020-06-12  3:24 ` [dpdk-dev] [PATCH 20/21] net/ixgbe/base: check Host Interface Return Status Guinan Sun
2020-06-12  3:24 ` [dpdk-dev] [PATCH 21/21] net/ixgbe/base: update version Guinan Sun
2020-06-22 12:01   ` Ferruh Yigit
2020-07-01  6:27     ` Sun, GuinanX
2020-06-15  5:47 ` [dpdk-dev] [PATCH 00/21] update ixgbe base code Zhao1, Wei
2020-06-15  5:59   ` Sun, GuinanX
2020-06-22  2:42 ` Zhao1, Wei
2020-06-22  3:50   ` Zhang, Qi Z
2020-07-02  3:13 ` [dpdk-dev] [PATCH v2 00/20] " Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 01/20] net/ixgbe/base: toggle VF's Tx queues Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 02/20] net/ixgbe/base: add support to clear VFMBMEM Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 03/20] net/ixgbe/base: fix host interface shadow RAM read Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 04/20] net/ixgbe/base: change flow for "Apply Update" command Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 05/20] net/ixgbe/base: fix x550em 10G NIC link status report Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 06/20] net/ixgbe/base: resolve infinite recursion on PCIe link down Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 07/20] net/ixgbe/base: added register definitions for NVM update Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 08/20] net/ixgbe/base: cleanup spelling mistakes in comments Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 09/20] net/ixgbe/base: remove whitespace in function comments Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 10/20] net/ixgbe/base: move increments after evaluations Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 11/20] net/ixgbe/base: create dedicated func to restart auto nego Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 12/20] net/ixgbe/base: modify coding style Guinan Sun
2020-07-08 15:26     ` Ferruh Yigit
2020-07-09  7:58       ` Sun, GuinanX
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 13/20] net/ixgbe/base: remove unnecessary log message FC autonego Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 14/20] net/ixgbe/base: initialize data field in struct buffer Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 15/20] net/ixgbe/base: improve log about autonego being disabled Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 16/20] net/ixgbe/base: add ipv6 mask for FDIR feature Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 17/20] net/ixgbe/base: remove default advertising for x550 2.5G/5G Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 18/20] net/ixgbe/base: check host interface return status Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 19/20] net/ixgbe/base: cleanup pre-processor tags Guinan Sun
2020-07-02  3:13   ` [dpdk-dev] [PATCH v2 20/20] net/ixgbe/base: update version Guinan Sun
2020-07-08  0:50   ` [dpdk-dev] [PATCH v2 00/20] update ixgbe base code Zhang, Qi Z
2020-07-09  8:00   ` [dpdk-dev] [PATCH v3 00/19] " Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 01/19] net/ixgbe/base: fix host interface shadow RAM read Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 02/19] net/ixgbe/base: change flow for "Apply Update" command Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 03/19] net/ixgbe/base: fix x550em 10G NIC link status report Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 04/19] net/ixgbe/base: resolve infinite recursion on PCIe link down Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 05/19] net/ixgbe/base: added register definitions for NVM update Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 06/19] net/ixgbe/base: cleanup spelling mistakes in comments Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 07/19] net/ixgbe/base: remove whitespace in function comments Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 08/19] net/ixgbe/base: move increments after evaluations Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 09/19] net/ixgbe/base: create dedicated func to restart auto nego Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 10/19] net/ixgbe/base: add typecast for type mismatch Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 11/19] net/ixgbe/base: remove unnecessary return value check Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 12/19] net/ixgbe/base: remove unnecessary log message FC autonego Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 13/19] net/ixgbe/base: initialize data field in struct buffer Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 14/19] net/ixgbe/base: improve log about autonego being disabled Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 15/19] net/ixgbe/base: add ipv6 mask for FDIR feature Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 16/19] net/ixgbe/base: remove default advertising for x550 2.5G/5G Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 17/19] net/ixgbe/base: check host interface return status Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 18/19] net/ixgbe/base: cleanup pre-processor tags Guinan Sun
2020-07-09  8:00     ` [dpdk-dev] [PATCH v3 19/19] net/ixgbe/base: update version Guinan Sun
2020-07-09 10:46     ` [dpdk-dev] [PATCH v3 00/19] update ixgbe base code Zhang, Qi Z

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=20200612032410.20864-13-guinanx.sun@intel.com \
    --to=guinanx.sun@intel.com \
    --cc=dev@dpdk.org \
    --cc=jakubx.chylkowski@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).