aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2016-06-13 12:43:34 +0200
committerFelix Fietkau <nbd@nbd.name>2016-06-13 17:58:07 +0200
commit1beb5bec6453abb220c5be4ddb9e6dc02d08d735 (patch)
tree74c0e6e3d43abff47fba600fa85830456b2d16ec /target/linux
parentc536da365b2101afcd2516650ce58d4d511ddc85 (diff)
downloadupstream-1beb5bec6453abb220c5be4ddb9e6dc02d08d735.tar.gz
upstream-1beb5bec6453abb220c5be4ddb9e6dc02d08d735.tar.bz2
upstream-1beb5bec6453abb220c5be4ddb9e6dc02d08d735.zip
ar71xx: enable flow control for ethernet MACs with built-in switch
Should fix LAN speed issues on some devices Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'target/linux')
-rw-r--r--target/linux/ar71xx/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c10
1 files changed, 9 insertions, 1 deletions
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);