[net] atl1c: improve reliability of mdio ops on Mikrotik 10/25G NIC

Message ID 20210617122553.2970190-1-gatis@mikrotik.com
State New
Headers show
Series
  • [net] atl1c: improve reliability of mdio ops on Mikrotik 10/25G NIC
Related show

Commit Message

Gatis Peisenieks June 17, 2021, 12:25 p.m.
MDIO ops on Mikrotik 10/25G NIC can occasionally take longer
to complete. This increases the timeout from 1.2 to 12ms.

Signed-off-by: Gatis Peisenieks <gatis@mikrotik.com>
---
 drivers/net/ethernet/atheros/atl1c/atl1c_hw.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Andrew Lunn June 17, 2021, 2:35 p.m. | #1
On Thu, Jun 17, 2021 at 03:25:53PM +0300, Gatis Peisenieks wrote:
> MDIO ops on Mikrotik 10/25G NIC can occasionally take longer
> to complete. This increases the timeout from 1.2 to 12ms.

That seems a very long time. A C22 transaction is 64 bits, and it is
clocked out at 2.5MHz. So it should take (1/2.5*1000*1000)*64 =
0.0000256s, i.e. 0.0256ms. 1.2ms is already 50 times longer than
needed, and now you are suggesting to make it 500 times longer than
needed?

Are you sure there is not something else going on here?  I notice
atl1c_stop_phy_polling() does not check the return from
atl1c_wait_mdio_idle(). Maybe this is your problem, you are not
waiting long enough for the MAC to stop directly accessing the PHY?

	Andrew

Patch

diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_hw.h b/drivers/net/ethernet/atheros/atl1c/atl1c_hw.h
index c567c920628f..15523077490f 100644
--- a/drivers/net/ethernet/atheros/atl1c/atl1c_hw.h
+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_hw.h
@@ -290,7 +290,7 @@  void atl1c_post_phy_linkchg(struct atl1c_hw *hw, u16 link_speed);
 #define MDIO_CTRL_REG_SHIFT		16
 #define MDIO_CTRL_DATA_MASK		0xFFFFUL
 #define MDIO_CTRL_DATA_SHIFT		0
-#define MDIO_MAX_AC_TO			120	/* 1.2ms timeout for slow clk */
+#define MDIO_MAX_AC_TO			1200	/* 12ms timeout for slow clk */
 
 /* for extension reg access */
 #define REG_MDIO_EXTN			0x1448