From 5a779cdbb3359c65959679efdfa3db668db4b046 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Tue, 11 Oct 2016 23:58:12 +0200 Subject: ar71xx: enable flow control for ethernet MACs with built-in switch Should fix LAN speed issues on some devices. This is an updated version of the previously reverted commit with the same name. It improves the check for MACs connected to a built-in switch Signed-off-by: Felix Fietkau --- target/linux/ar71xx/files/arch/mips/ath79/dev-eth.c | 6 ++++++ .../ar71xx/files/arch/mips/include/asm/mach-ath79/ag71xx_platform.h | 1 + 2 files changed, 7 insertions(+) (limited to 'target/linux/ar71xx/files/arch/mips') diff --git a/target/linux/ar71xx/files/arch/mips/ath79/dev-eth.c b/target/linux/ar71xx/files/arch/mips/ath79/dev-eth.c index 17dd3ac6b1..7d641d4f09 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/dev-eth.c +++ b/target/linux/ar71xx/files/arch/mips/ath79/dev-eth.c @@ -907,6 +907,7 @@ void __init ath79_register_eth(unsigned int id) pdata->speed = SPEED_1000; pdata->duplex = DUPLEX_FULL; pdata->switch_data = &ath79_switch_data; + pdata->builtin_switch = 1; ath79_switch_data.phy_poll_mask |= BIT(4); } @@ -951,6 +952,7 @@ void __init ath79_register_eth(unsigned int id) pdata->has_gbit = 1; pdata->duplex = DUPLEX_FULL; pdata->switch_data = &ath79_switch_data; + pdata->builtin_switch = 1; ath79_switch_data.phy_poll_mask |= BIT(4); } @@ -979,6 +981,7 @@ void __init ath79_register_eth(unsigned int id) pdata->set_speed = ath79_set_speed_dummy; pdata->switch_data = &ath79_switch_data; + pdata->builtin_switch = 1; /* reset the built-in switch */ ath79_device_reset_set(AR934X_RESET_ETH_SWITCH); @@ -1015,6 +1018,7 @@ void __init ath79_register_eth(unsigned int id) pdata->speed = SPEED_1000; pdata->duplex = DUPLEX_FULL; pdata->switch_data = &ath79_switch_data; + pdata->builtin_switch = 1; ath79_switch_data.phy_poll_mask |= BIT(4); } @@ -1040,6 +1044,7 @@ void __init ath79_register_eth(unsigned int id) pdata->reset_bit = QCA955X_RESET_GE1_MAC | QCA955X_RESET_GE1_MDIO; pdata->set_speed = qca955x_set_speed_sgmii; + pdata->builtin_switch = 1; } pdata->has_gbit = 1; @@ -1083,6 +1088,7 @@ void __init ath79_register_eth(unsigned int id) pdata->speed = SPEED_1000; pdata->duplex = DUPLEX_FULL; + pdata->builtin_switch = 1; /* reset the built-in switch */ ath79_device_reset_set(AR934X_RESET_ETH_SWITCH); diff --git a/target/linux/ar71xx/files/arch/mips/include/asm/mach-ath79/ag71xx_platform.h b/target/linux/ar71xx/files/arch/mips/include/asm/mach-ath79/ag71xx_platform.h index d46dc4e317..e494cdfc0f 100644 --- a/target/linux/ar71xx/files/arch/mips/include/asm/mach-ath79/ag71xx_platform.h +++ b/target/linux/ar71xx/files/arch/mips/include/asm/mach-ath79/ag71xx_platform.h @@ -36,6 +36,7 @@ struct ag71xx_platform_data { u8 is_ar7240:1; u8 is_ar724x:1; u8 has_ar8216:1; + u8 builtin_switch:1; struct ag71xx_switch_platform_data *switch_data; -- cgit v1.2.3