bcm53xx: add workaround for Netgear R8000 network
authorrmilecki <rmilecki@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Wed, 12 Aug 2015 15:26:18 +0000 (15:26 +0000)
committerrmilecki <rmilecki@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Wed, 12 Aug 2015 15:26:18 +0000 (15:26 +0000)
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>
git-svn-id: svn://svn.openwrt.org/openwrt/branches/chaos_calmer@46586 3c298f89-4303-0410-b956-a3cf2f4a3e73

target/linux/bcm53xx/base-files/etc/board.d/02_network
target/linux/bcm53xx/patches-3.18/710-b53-add-hacky-CPU-port-fixes-for-devices-not-using-p.patch

index ad004d7..a164251 100755 (executable)
@@ -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
index 6015c4a..dfc422e 100644 (file)
@@ -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);