aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafał Miłecki <zajec5@gmail.com>2015-10-30 12:55:37 +0000
committerRafał Miłecki <zajec5@gmail.com>2015-10-30 12:55:37 +0000
commite6944a3490abca9626bbef1bdee1c9361e5212b7 (patch)
treefd2c81158c838665893949ed3c2715960a504484
parentbaa359f8e485d781fe01308f0bca7b769dc91491 (diff)
downloadupstream-e6944a3490abca9626bbef1bdee1c9361e5212b7.tar.gz
upstream-e6944a3490abca9626bbef1bdee1c9361e5212b7.tar.bz2
upstream-e6944a3490abca9626bbef1bdee1c9361e5212b7.zip
bcm53xx: add workaround for Netgear R8000 network
According to the info from NVRAM we should use port 8 for the CPU (and interface eth2). Unfortunately it doesn't work right now, so lets switch to the port 5. Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Forwardport of r46586 from 15.05 SVN-Revision: 47281
-rwxr-xr-xtarget/linux/bcm53xx/base-files/etc/board.d/02_network17
-rw-r--r--target/linux/bcm53xx/patches-4.1/710-b53-add-hacky-CPU-port-fixes-for-devices-not-using-p.patch9
-rw-r--r--target/linux/bcm53xx/patches-4.3/710-b53-add-hacky-CPU-port-fixes-for-devices-not-using-p.patch9
3 files changed, 33 insertions, 2 deletions
diff --git a/target/linux/bcm53xx/base-files/etc/board.d/02_network b/target/linux/bcm53xx/base-files/etc/board.d/02_network
index ad004d792c..a164251c6a 100755
--- a/target/linux/bcm53xx/base-files/etc/board.d/02_network
+++ b/target/linux/bcm53xx/base-files/etc/board.d/02_network
@@ -20,10 +20,27 @@ netgear,r8000)
;;
esac
+# Workaround for devices using eth2
+case "$board" in
+netgear,r8000)
+ ifname=eth0
+ ;;
+esac
+
ucidef_set_interface_loopback
ucidef_set_interfaces_lan_wan "$ifname.1" "$ifname.2"
ucidef_add_switch "switch0" "1" "1"
+# Workaround for devices using CPU port 8 (connected to eth2)
+case "$board" in
+netgear,r8000)
+ ucidef_add_switch_vlan "switch0" "1" "0 1 2 3 5t"
+ ucidef_add_switch_vlan "switch0" "2" "4 5t"
+ board_config_flush
+ exit 0
+ ;;
+esac
+
# NVRAM entries may contain unsorted ports, e.g. Netgear R6250 uses
# vlan1ports=3 2 1 0 5*
# vlan2ports=4 5u
diff --git a/target/linux/bcm53xx/patches-4.1/710-b53-add-hacky-CPU-port-fixes-for-devices-not-using-p.patch b/target/linux/bcm53xx/patches-4.1/710-b53-add-hacky-CPU-port-fixes-for-devices-not-using-p.patch
index 6015c4aaca..dfc422ee3e 100644
--- a/target/linux/bcm53xx/patches-4.1/710-b53-add-hacky-CPU-port-fixes-for-devices-not-using-p.patch
+++ b/target/linux/bcm53xx/patches-4.1/710-b53-add-hacky-CPU-port-fixes-for-devices-not-using-p.patch
@@ -21,7 +21,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
#include "b53_regs.h"
#include "b53_priv.h"
-@@ -1313,6 +1314,11 @@ static int b53_switch_init(struct b53_de
+@@ -1313,6 +1314,18 @@ static int b53_switch_init(struct b53_de
sw_dev->cpu_port = 5;
}
@@ -30,6 +30,13 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
+ else if (of_machine_is_compatible("netgear,r8000"))
+ sw_dev->cpu_port = 8;
+
++ /*
++ * Workaround for devices using port 8 (connected to the 3rd iface).
++ * For some reason it doesn't work (no packets on eth2).
++ */
++ if (of_machine_is_compatible("netgear,r8000"))
++ sw_dev->cpu_port = 5;
++
/* cpu port is always last */
sw_dev->ports = sw_dev->cpu_port + 1;
dev->enabled_ports |= BIT(sw_dev->cpu_port);
diff --git a/target/linux/bcm53xx/patches-4.3/710-b53-add-hacky-CPU-port-fixes-for-devices-not-using-p.patch b/target/linux/bcm53xx/patches-4.3/710-b53-add-hacky-CPU-port-fixes-for-devices-not-using-p.patch
index 6015c4aaca..dfc422ee3e 100644
--- a/target/linux/bcm53xx/patches-4.3/710-b53-add-hacky-CPU-port-fixes-for-devices-not-using-p.patch
+++ b/target/linux/bcm53xx/patches-4.3/710-b53-add-hacky-CPU-port-fixes-for-devices-not-using-p.patch
@@ -21,7 +21,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
#include "b53_regs.h"
#include "b53_priv.h"
-@@ -1313,6 +1314,11 @@ static int b53_switch_init(struct b53_de
+@@ -1313,6 +1314,18 @@ static int b53_switch_init(struct b53_de
sw_dev->cpu_port = 5;
}
@@ -30,6 +30,13 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
+ else if (of_machine_is_compatible("netgear,r8000"))
+ sw_dev->cpu_port = 8;
+
++ /*
++ * Workaround for devices using port 8 (connected to the 3rd iface).
++ * For some reason it doesn't work (no packets on eth2).
++ */
++ if (of_machine_is_compatible("netgear,r8000"))
++ sw_dev->cpu_port = 5;
++
/* cpu port is always last */
sw_dev->ports = sw_dev->cpu_port + 1;
dev->enabled_ports |= BIT(sw_dev->cpu_port);