diff mbox series

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

Message ID 20210617122553.2970190-1-gatis@mikrotik.com (mailing list archive)
State Changes Requested
Delegated to: Netdev Maintainers
Headers show
Series [net] atl1c: improve reliability of mdio ops on Mikrotik 10/25G NIC | expand

Checks

Context Check Description
netdev/cover_letter success Link
netdev/fixes_present fail Series targets non-next tree, but doesn't contain any Fixes tags
netdev/patch_count success Link
netdev/tree_selection success Clearly marked for net
netdev/subject_prefix success Link
netdev/cc_maintainers success CCed 5 of 5 maintainers
netdev/source_inline success Was 0 now: 0
netdev/verify_signedoff success Link
netdev/module_param success Was 0 now: 0
netdev/build_32bit success Errors and warnings before: 33 this patch: 33
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/verify_fixes success Link
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 8 lines checked
netdev/build_allmodconfig_warn success Errors and warnings before: 33 this patch: 33
netdev/header_inline success Link

Commit Message

Gatis Peisenieks June 17, 2021, 12:25 p.m. UTC
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. UTC | #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
diff mbox series

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