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 | expand |
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
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
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(-)