Просмотр исходного кода

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 <[email protected]>

Forwardport of r46586 from 15.05

SVN-Revision: 47281
Rafał Miłecki 10 лет назад
Родитель
Сommit
e6944a3490

+ 17 - 0
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

+ 8 - 1
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 <[email protected]>
  
  #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;
  	}
  
@@ -29,6 +29,13 @@ Signed-off-by: Rafał Miłecki <[email protected]>
 +		sw_dev->cpu_port = 7;
 +	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;

+ 8 - 1
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 <[email protected]>
  
  #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;
  	}
  
@@ -29,6 +29,13 @@ Signed-off-by: Rafał Miłecki <[email protected]>
 +		sw_dev->cpu_port = 7;
 +	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;