summaryrefslogtreecommitdiff
path: root/target/mips/mikrotik-rb4xx/patches/3.14.45/0028-ag71xx-workaround-some-link-state-bug.patch
blob: 4dbac11ee1cf0a003cbf19fafbb3a172ae543896 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
From 02dc26588275d19a49d47abf2210c41b071cd796 Mon Sep 17 00:00:00 2001
From: Phil Sutter <phil@nwl.cc>
Date: Sat, 28 Jun 2014 17:07:52 +0200
Subject: [PATCH] ag71xx: workaround some link state bug

This happens when routing 100mbit/s traffic with masquerading, link
supposedly drops to 10HD for a few seconds leading to the driver
reinitialising the NIC and therefore causing a throughput drop. Ignoring
those link changes allows for constant bandwidth, therefore this seems
not to be a real problem of the hardware but one of an overreacting
driver.
---
 drivers/net/ethernet/atheros/ag71xx/ag71xx_phy.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/atheros/ag71xx/ag71xx_phy.c b/drivers/net/ethernet/atheros/ag71xx/ag71xx_phy.c
index 9de77e9..a83707e 100644
--- a/drivers/net/ethernet/atheros/ag71xx/ag71xx_phy.c
+++ b/drivers/net/ethernet/atheros/ag71xx/ag71xx_phy.c
@@ -25,7 +25,15 @@ static void ag71xx_phy_link_adjust(struct net_device *dev)
 	if (phydev->link) {
 		if (ag->duplex != phydev->duplex
 		    || ag->speed != phydev->speed) {
-			status_change = 1;
+			/* Completely ignore speed/duplex changes as long
+			 * as the link stays up as they're probably spurious
+			 * (the internal link should not change any way).
+			 *
+			 * This is actually a workaround, as the link seems to
+			 * drop to 10HD from 1000FD under routing load when at
+			 * least masquerading is also in use.
+			 */
+			//status_change = 1;
 		}
 	}
 
-- 
1.8.5.3