From: Felix Fietkau Date: Mon, 13 Jun 2016 10:43:34 +0000 (+0200) Subject: ar71xx: enable flow control for ethernet MACs with built-in switch X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=1beb5bec6453abb220c5be4ddb9e6dc02d08d735;p=librecmc%2Flibrecmc.git ar71xx: enable flow control for ethernet MACs with built-in switch Should fix LAN speed issues on some devices Signed-off-by: Felix Fietkau --- diff --git a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c index 38226cf22e..d5253609cd 100644 --- a/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c +++ b/target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c @@ -453,9 +453,17 @@ static void ag71xx_hw_stop(struct ag71xx *ag) static void ag71xx_hw_setup(struct ag71xx *ag) { struct ag71xx_platform_data *pdata = ag71xx_get_pdata(ag); + struct ag71xx_mdio_platform_data *mpdata; + u32 init = MAC_CFG1_INIT; + + if (pdata->mii_bus_dev && ag->pdev->id == 0) { + mpdata = pdata->mii_bus_dev->platform_data; + if (mpdata && mpdata->builtin_switch) + init |= MAC_CFG1_TFC | MAC_CFG1_RFC; + } /* setup MAC configuration registers */ - ag71xx_wr(ag, AG71XX_REG_MAC_CFG1, MAC_CFG1_INIT); + ag71xx_wr(ag, AG71XX_REG_MAC_CFG1, init); ag71xx_sb(ag, AG71XX_REG_MAC_CFG2, MAC_CFG2_PAD_CRC_EN | MAC_CFG2_LEN_CHECK);