All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 net] ixgbe: set X550 MDIO speed before talking to PHY
@ 2021-11-02  1:39 ` Cyril Novikov
  0 siblings, 0 replies; 6+ messages in thread
From: Cyril Novikov @ 2021-11-02  1:39 UTC (permalink / raw)
  To: David S. Miller
  Cc: Jesse Brandeburg, Jakub Kicinski, intel-wired-lan, netdev, Tony Nguyen

The MDIO bus speed must be initialized before talking to the PHY the first
time in order to avoid talking to it using a speed that the PHY doesn't
support.

This fixes HW initialization error -17 (IXGBE_ERR_PHY_ADDR_INVALID) on
Denverton CPUs (a.k.a. the Atom C3000 family) on ports with a 10Gb network
plugged in. On those devices, HLREG0[MDCSPD] resets to 1, which combined
with the 10Gb network results in a 24MHz MDIO speed, which is apparently
too fast for the connected PHY. PHY register reads over MDIO bus return
garbage, leading to initialization failure.

Reproduced with Linux kernel 4.19 and 5.15-rc7. Can be reproduced using
the following setup:

* Use an Atom C3000 family system with at least one X552 LAN on the SoC
* Disable PXE or other BIOS network initialization if possible
  (the interface must not be initialized before Linux boots)
* Connect a live 10Gb Ethernet cable to an X550 port
* Power cycle (not reset, doesn't always work) the system and boot Linux
* Observe: ixgbe interfaces w/ 10GbE cables plugged in fail with error -17

Signed-off-by: Cyril Novikov <cnovikov@lynx.com>
Fixes: e84db7272798 ("ixgbe: Introduce function to control MDIO speed")
---
 drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c | 3 +++
 1 file changed, 3 insertions(+)

Patch v2 addresses review comments: add a Fixed line, move reproduction steps to the commit message. No changes to the code.

diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c
index 9724ffb16518..e4b50c7781ff 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c
@@ -3405,6 +3405,9 @@ static s32 ixgbe_reset_hw_X550em(struct ixgbe_hw *hw)
 	/* flush pending Tx transactions */
 	ixgbe_clear_tx_pending(hw);
 
+	/* set MDIO speed before talking to the PHY in case it's the 1st time */
+	ixgbe_set_mdio_speed(hw);
+
 	/* PHY ops must be identified and initialized prior to reset */
 	status = hw->phy.ops.init(hw);
 	if (status == IXGBE_ERR_SFP_NOT_SUPPORTED ||
-- 
2.19.1-412.replication

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [Intel-wired-lan] [PATCH v2 net] ixgbe: set X550 MDIO speed before talking to PHY
@ 2021-11-02  1:39 ` Cyril Novikov
  0 siblings, 0 replies; 6+ messages in thread
From: Cyril Novikov @ 2021-11-02  1:39 UTC (permalink / raw)
  To: intel-wired-lan

The MDIO bus speed must be initialized before talking to the PHY the first
time in order to avoid talking to it using a speed that the PHY doesn't
support.

This fixes HW initialization error -17 (IXGBE_ERR_PHY_ADDR_INVALID) on
Denverton CPUs (a.k.a. the Atom C3000 family) on ports with a 10Gb network
plugged in. On those devices, HLREG0[MDCSPD] resets to 1, which combined
with the 10Gb network results in a 24MHz MDIO speed, which is apparently
too fast for the connected PHY. PHY register reads over MDIO bus return
garbage, leading to initialization failure.

Reproduced with Linux kernel 4.19 and 5.15-rc7. Can be reproduced using
the following setup:

* Use an Atom C3000 family system with at least one X552 LAN on the SoC
* Disable PXE or other BIOS network initialization if possible
  (the interface must not be initialized before Linux boots)
* Connect a live 10Gb Ethernet cable to an X550 port
* Power cycle (not reset, doesn't always work) the system and boot Linux
* Observe: ixgbe interfaces w/ 10GbE cables plugged in fail with error -17

Signed-off-by: Cyril Novikov <cnovikov@lynx.com>
Fixes: e84db7272798 ("ixgbe: Introduce function to control MDIO speed")
---
 drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c | 3 +++
 1 file changed, 3 insertions(+)

Patch v2 addresses review comments: add a Fixed line, move reproduction steps to the commit message. No changes to the code.

diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c
index 9724ffb16518..e4b50c7781ff 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c
@@ -3405,6 +3405,9 @@ static s32 ixgbe_reset_hw_X550em(struct ixgbe_hw *hw)
 	/* flush pending Tx transactions */
 	ixgbe_clear_tx_pending(hw);
 
+	/* set MDIO speed before talking to the PHY in case it's the 1st time */
+	ixgbe_set_mdio_speed(hw);
+
 	/* PHY ops must be identified and initialized prior to reset */
 	status = hw->phy.ops.init(hw);
 	if (status == IXGBE_ERR_SFP_NOT_SUPPORTED ||
-- 
2.19.1-412.replication

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 net] ixgbe: set X550 MDIO speed before talking to PHY
  2021-11-02  1:39 ` [Intel-wired-lan] " Cyril Novikov
@ 2021-11-03  0:48   ` Andrew Lunn
  -1 siblings, 0 replies; 6+ messages in thread
From: Andrew Lunn @ 2021-11-03  0:48 UTC (permalink / raw)
  To: Cyril Novikov
  Cc: David S. Miller, Jesse Brandeburg, Jakub Kicinski,
	intel-wired-lan, netdev, Tony Nguyen

On Mon, Nov 01, 2021 at 06:39:36PM -0700, Cyril Novikov wrote:
> The MDIO bus speed must be initialized before talking to the PHY the first
> time in order to avoid talking to it using a speed that the PHY doesn't
> support.
> 
> This fixes HW initialization error -17 (IXGBE_ERR_PHY_ADDR_INVALID) on
> Denverton CPUs (a.k.a. the Atom C3000 family) on ports with a 10Gb network
> plugged in. On those devices, HLREG0[MDCSPD] resets to 1, which combined
> with the 10Gb network results in a 24MHz MDIO speed, which is apparently
> too fast for the connected PHY. PHY register reads over MDIO bus return
> garbage, leading to initialization failure.
> 
> Reproduced with Linux kernel 4.19 and 5.15-rc7. Can be reproduced using
> the following setup:
> 
> * Use an Atom C3000 family system with at least one X552 LAN on the SoC
> * Disable PXE or other BIOS network initialization if possible
>   (the interface must not be initialized before Linux boots)
> * Connect a live 10Gb Ethernet cable to an X550 port
> * Power cycle (not reset, doesn't always work) the system and boot Linux
> * Observe: ixgbe interfaces w/ 10GbE cables plugged in fail with error -17
> 
> Signed-off-by: Cyril Novikov <cnovikov@lynx.com>
> Fixes: e84db7272798 ("ixgbe: Introduce function to control MDIO speed")

Reviewed-by: Andrew Lunn <andrew@lunn.ch>

    Andrew

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Intel-wired-lan] [PATCH v2 net] ixgbe: set X550 MDIO speed before talking to PHY
@ 2021-11-03  0:48   ` Andrew Lunn
  0 siblings, 0 replies; 6+ messages in thread
From: Andrew Lunn @ 2021-11-03  0:48 UTC (permalink / raw)
  To: intel-wired-lan

On Mon, Nov 01, 2021 at 06:39:36PM -0700, Cyril Novikov wrote:
> The MDIO bus speed must be initialized before talking to the PHY the first
> time in order to avoid talking to it using a speed that the PHY doesn't
> support.
> 
> This fixes HW initialization error -17 (IXGBE_ERR_PHY_ADDR_INVALID) on
> Denverton CPUs (a.k.a. the Atom C3000 family) on ports with a 10Gb network
> plugged in. On those devices, HLREG0[MDCSPD] resets to 1, which combined
> with the 10Gb network results in a 24MHz MDIO speed, which is apparently
> too fast for the connected PHY. PHY register reads over MDIO bus return
> garbage, leading to initialization failure.
> 
> Reproduced with Linux kernel 4.19 and 5.15-rc7. Can be reproduced using
> the following setup:
> 
> * Use an Atom C3000 family system with at least one X552 LAN on the SoC
> * Disable PXE or other BIOS network initialization if possible
>   (the interface must not be initialized before Linux boots)
> * Connect a live 10Gb Ethernet cable to an X550 port
> * Power cycle (not reset, doesn't always work) the system and boot Linux
> * Observe: ixgbe interfaces w/ 10GbE cables plugged in fail with error -17
> 
> Signed-off-by: Cyril Novikov <cnovikov@lynx.com>
> Fixes: e84db7272798 ("ixgbe: Introduce function to control MDIO speed")

Reviewed-by: Andrew Lunn <andrew@lunn.ch>

    Andrew

^ permalink raw reply	[flat|nested] 6+ messages in thread

* RE: [Intel-wired-lan] [PATCH v2 net] ixgbe: set X550 MDIO speed before talking to PHY
  2021-11-02  1:39 ` [Intel-wired-lan] " Cyril Novikov
@ 2021-12-24  0:23   ` Brelinski, Tony
  -1 siblings, 0 replies; 6+ messages in thread
From: Brelinski, Tony @ 2021-12-24  0:23 UTC (permalink / raw)
  To: Cyril Novikov, David S. Miller; +Cc: Jakub Kicinski, intel-wired-lan, netdev

> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Cyril Novikov
> Sent: Monday, November 1, 2021 6:40 PM
> To: David S. Miller <davem@davemloft.net>
> Cc: Jakub Kicinski <kuba@kernel.org>; intel-wired-lan@lists.osuosl.org;
> netdev@vger.kernel.org
> Subject: [Intel-wired-lan] [PATCH v2 net] ixgbe: set X550 MDIO speed before
> talking to PHY
> 
> The MDIO bus speed must be initialized before talking to the PHY the first
> time in order to avoid talking to it using a speed that the PHY doesn't support.
> 
> This fixes HW initialization error -17 (IXGBE_ERR_PHY_ADDR_INVALID) on
> Denverton CPUs (a.k.a. the Atom C3000 family) on ports with a 10Gb
> network plugged in. On those devices, HLREG0[MDCSPD] resets to 1, which
> combined with the 10Gb network results in a 24MHz MDIO speed, which is
> apparently too fast for the connected PHY. PHY register reads over MDIO bus
> return garbage, leading to initialization failure.
> 
> Reproduced with Linux kernel 4.19 and 5.15-rc7. Can be reproduced using the
> following setup:
> 
> * Use an Atom C3000 family system with at least one X552 LAN on the SoC
> * Disable PXE or other BIOS network initialization if possible
>   (the interface must not be initialized before Linux boots)
> * Connect a live 10Gb Ethernet cable to an X550 port
> * Power cycle (not reset, doesn't always work) the system and boot Linux
> * Observe: ixgbe interfaces w/ 10GbE cables plugged in fail with error -17
> 
> Signed-off-by: Cyril Novikov <cnovikov@lynx.com>
> Fixes: e84db7272798 ("ixgbe: Introduce function to control MDIO speed")
> ---
>  drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> Patch v2 addresses review comments: add a Fixed line, move reproduction
> steps to the commit message. No changes to the code.

Tested-by: Tony Brelinski <tony.brelinski@intel.com>



^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Intel-wired-lan] [PATCH v2 net] ixgbe: set X550 MDIO speed before talking to PHY
@ 2021-12-24  0:23   ` Brelinski, Tony
  0 siblings, 0 replies; 6+ messages in thread
From: Brelinski, Tony @ 2021-12-24  0:23 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Cyril Novikov
> Sent: Monday, November 1, 2021 6:40 PM
> To: David S. Miller <davem@davemloft.net>
> Cc: Jakub Kicinski <kuba@kernel.org>; intel-wired-lan at lists.osuosl.org;
> netdev at vger.kernel.org
> Subject: [Intel-wired-lan] [PATCH v2 net] ixgbe: set X550 MDIO speed before
> talking to PHY
> 
> The MDIO bus speed must be initialized before talking to the PHY the first
> time in order to avoid talking to it using a speed that the PHY doesn't support.
> 
> This fixes HW initialization error -17 (IXGBE_ERR_PHY_ADDR_INVALID) on
> Denverton CPUs (a.k.a. the Atom C3000 family) on ports with a 10Gb
> network plugged in. On those devices, HLREG0[MDCSPD] resets to 1, which
> combined with the 10Gb network results in a 24MHz MDIO speed, which is
> apparently too fast for the connected PHY. PHY register reads over MDIO bus
> return garbage, leading to initialization failure.
> 
> Reproduced with Linux kernel 4.19 and 5.15-rc7. Can be reproduced using the
> following setup:
> 
> * Use an Atom C3000 family system with at least one X552 LAN on the SoC
> * Disable PXE or other BIOS network initialization if possible
>   (the interface must not be initialized before Linux boots)
> * Connect a live 10Gb Ethernet cable to an X550 port
> * Power cycle (not reset, doesn't always work) the system and boot Linux
> * Observe: ixgbe interfaces w/ 10GbE cables plugged in fail with error -17
> 
> Signed-off-by: Cyril Novikov <cnovikov@lynx.com>
> Fixes: e84db7272798 ("ixgbe: Introduce function to control MDIO speed")
> ---
>  drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> Patch v2 addresses review comments: add a Fixed line, move reproduction
> steps to the commit message. No changes to the code.

Tested-by: Tony Brelinski <tony.brelinski@intel.com>



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-12-24  0:23 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-02  1:39 [PATCH v2 net] ixgbe: set X550 MDIO speed before talking to PHY Cyril Novikov
2021-11-02  1:39 ` [Intel-wired-lan] " Cyril Novikov
2021-11-03  0:48 ` Andrew Lunn
2021-11-03  0:48   ` [Intel-wired-lan] " Andrew Lunn
2021-12-24  0:23 ` Brelinski, Tony
2021-12-24  0:23   ` Brelinski, Tony

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.