aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafał Miłecki <rafal@milecki.pl>2020-04-03 15:55:01 +0200
committerRafał Miłecki <rafal@milecki.pl>2020-04-03 17:59:56 +0200
commitb51ea43f900191bc8ce7411dad39239fac6df4f8 (patch)
treeb34cb2711ba433e22c8a0072962e032b5515c3e4
parent3ec70052c5d82ffbc8d13e597f2833a1c30bec54 (diff)
downloadupstream-b51ea43f900191bc8ce7411dad39239fac6df4f8.tar.gz
upstream-b51ea43f900191bc8ce7411dad39239fac6df4f8.tar.bz2
upstream-b51ea43f900191bc8ce7411dad39239fac6df4f8.zip
bcm53xx: refactor board.d code in 02_network
1. Use functions for cleaner code 2. Always execute WAN interface generic code Before this change WAN interface code wasn't executed on all devices due to an early "exit 0". Acked-by: Adrian Schmutzler <freifunk@adrianschmutzler.de> Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
-rwxr-xr-xtarget/linux/bcm53xx/base-files/etc/board.d/02_network189
1 files changed, 95 insertions, 94 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 9fd26e72f4..f86f12407f 100755
--- a/target/linux/bcm53xx/base-files/etc/board.d/02_network
+++ b/target/linux/bcm53xx/base-files/etc/board.d/02_network
@@ -6,108 +6,109 @@
. /lib/functions/system.sh
. /lib/functions/uci-defaults.sh
-board_config_update
+bcm53xx_setup_interfaces()
+{
+ local board="$1"
-board=$(board_name)
+ # On BCM4708 / BCM4709(4) there are 3 Ethernet interfaces connected to 3 switch
+ # ports. It's up to vendor which to use.
+ case "$board" in
+ tenda,ac9)
+ ucidef_add_switch "switch0" \
+ "1:lan" "2:lan" "3:lan" "4:lan" "8@eth0" "0:wan" "5@eth1"
+ ;;
+ buffalo,wxr-1900dhp| \
+ buffalo,wzr-1750dhp)
+ ucidef_add_switch "switch0" \
+ "0:lan:1" "1:lan:2" "2:lan:3" "3:lan:4" "4:wan:5" "5@eth0"
+ ;;
+ dlink,dir-885l | \
+ netgear,r7900 | \
+ netgear,r8000 | \
+ netgear,r8500)
+ # NVRAM specifies port 8 (eth2) - unsupported by OpenWrt b53
+ # Use port 5 (eth0) as workaround
+ ucidef_add_switch "switch0" \
+ "0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "5t@eth0"
+ ;;
+ luxul,abr-4500-v1|\
+ luxul,xbr-4500-v1)
+ ucidef_add_switch "switch0" \
+ "0:wan" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "5@eth0"
+ ;;
+ phicomm,k3)
+ ucidef_add_switch "switch0" \
+ "0:lan" "1:lan" "2:lan" "3:wan" "5@eth0"
+ ;;
+ *)
+ # NVRAM entries may contain unsorted ports, e.g. Netgear R6250 uses
+ # vlan1ports=3 2 1 0 5*
+ # vlan2ports=4 5u
+ # and early Netgear R8000 was using
+ # vlan1ports=3 2 1 0 5 7 8*
+ vlan1ports="$(echo $(nvram get vlan1ports | tr " " "\n" | sort))"
+ vlan2ports="$(echo $(nvram get vlan2ports | tr " " "\n" | sort))"
+ if echo "$vlan1ports" | egrep -q "^1 2 3 4 5" && \
+ echo "$vlan2ports" | egrep -q "^0 5"; then
+ ucidef_add_switch "switch0" \
+ "1:lan" "2:lan" "3:lan" "4:lan" "0:wan" "5t@eth0"
+ elif echo "$vlan1ports" | egrep -q "^1 2 3 5 7" && \
+ echo "$vlan2ports" | egrep -q "^0 7"; then
+ ucidef_add_switch "switch0" \
+ "1:lan" "2:lan" "3:lan" "5:lan" "0:wan" "7t@eth1"
+ elif echo "$vlan1ports" | egrep -q "^0 1 2 3 5 7 8" && \
+ echo "$vlan2ports" | egrep -q "^4 8"; then
+ ucidef_add_switch "switch0" \
+ "0:lan" "1:lan" "2:lan" "3:lan" "5:lan" "7:lan" "4:wan" "8t@eth2"
+ else
+ ucidef_add_switch "switch0" \
+ "0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "5t@eth0"
+ fi
+ ;;
+ esac
+}
-case "$board" in
-tenda,ac9)
- ucidef_add_switch "switch0" \
- "1:lan" "2:lan" "3:lan" "4:lan" "8@eth0" "0:wan" "5@eth1"
- board_config_flush
- exit 0
- ;;
-buffalo,wxr-1900dhp| \
-buffalo,wzr-1750dhp)
- ucidef_add_switch "switch0" \
- "0:lan:1" "1:lan:2" "2:lan:3" "3:lan:4" "4:wan:5" "5@eth0"
- board_config_flush
- exit 0
- ;;
-luxul,abr-4500-v1|\
-luxul,xbr-4500-v1)
- ucidef_add_switch "switch0" \
- "0:wan" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "5@eth0"
- board_config_flush
- exit 0
- ;;
-phicomm,k3)
- ucidef_add_switch "switch0" \
- "0:lan" "1:lan" "2:lan" "3:wan" "5@eth0"
- board_config_flush
- exit 0
- ;;
-esac
+bcm53xx_setup_macs()
+{
+ local board="$1"
-wan_macaddr="$(nvram get wan_hwaddr)"
-case "$board" in
-asus,rt-ac87u)
- ifname=eth1
- etXmacaddr=$(nvram get et1macaddr)
- ;;
-dlink,dir-885l | \
-netgear,r7900 | \
-netgear,r8000 | \
-netgear,r8500)
- ifname=eth2
- etXmacaddr=$(nvram get et2macaddr)
- ;;
-*)
- ifname=eth0
- etXmacaddr=$(nvram get et0macaddr)
- ;;
-esac
+ case "$board" in
+ dlink,dir-885l | \
+ netgear,r7900 | \
+ netgear,r8000 | \
+ netgear,r8500)
+ # As vendor doesn't use eth0 its MAC may be missing. Use one from eth2.
+ et2macaddr="$(nvram get et2macaddr)"
+ [ -n "$et2macaddr" ] && ucidef_set_interface_macaddr "lan" "$et2macaddr"
+ ;;
+ esac
-# If WAN MAC isn't explicitly set, calculate it using base MAC as reference.
-[ -z "$wan_macaddr" -a -n "$etXmacaddr" ] && wan_macaddr=$(macaddr_add "$etXmacaddr" 1)
+ wan_macaddr="$(nvram get wan_hwaddr)"
+ case "$board" in
+ asus,rt-ac87u)
+ etXmacaddr=$(nvram get et1macaddr)
+ ;;
+ dlink,dir-885l | \
+ netgear,r7900 | \
+ netgear,r8000 | \
+ netgear,r8500)
+ etXmacaddr=$(nvram get et2macaddr)
+ ;;
+ *)
+ etXmacaddr=$(nvram get et0macaddr)
+ ;;
+ esac
-# Workaround for devices using eth2 connected to (CPU) switch port 8
-case "$board" in
-dlink,dir-885l | \
-netgear,r7900 | \
-netgear,r8000 | \
-netgear,r8500)
- ifname=eth0
- ucidef_add_switch "switch0" \
- "0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "5t@$ifname"
+ # If WAN MAC isn't explicitly set, calculate it using base MAC as reference.
+ [ -z "$wan_macaddr" -a -n "$etXmacaddr" ] && wan_macaddr=$(macaddr_add "$etXmacaddr" 1)
- # These devices should use eth2 so their eth0 interface often has no MAC
- # assigned. Manually assign eth2's MAC to the LAN.
- et2macaddr="$(nvram get et2macaddr)"
- [ -n "$et2macaddr" ] && ucidef_set_interface_macaddr "lan" "$et2macaddr"
[ -n "$wan_macaddr" ] && ucidef_set_interface_macaddr "wan" "$wan_macaddr"
+}
- 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
-# and early Netgear R8000 was using
-# vlan1ports=3 2 1 0 5 7 8*
-vlan1ports="$(echo $(nvram get vlan1ports | tr " " "\n" | sort))"
-vlan2ports="$(echo $(nvram get vlan2ports | tr " " "\n" | sort))"
-if echo "$vlan1ports" | egrep -q "^1 2 3 4 5" && \
- echo "$vlan2ports" | egrep -q "^0 5"; then
- ucidef_add_switch "switch0" \
- "1:lan" "2:lan" "3:lan" "4:lan" "0:wan" "5t@$ifname"
-elif echo "$vlan1ports" | egrep -q "^1 2 3 5 7" && \
- echo "$vlan2ports" | egrep -q "^0 7"; then
- ucidef_add_switch "switch0" \
- "1:lan" "2:lan" "3:lan" "5:lan" "0:wan" "7t@$ifname"
-elif echo "$vlan1ports" | egrep -q "^0 1 2 3 5 7 8" && \
- echo "$vlan2ports" | egrep -q "^4 8"; then
- ucidef_add_switch "switch0" \
- "0:lan" "1:lan" "2:lan" "3:lan" "5:lan" "7:lan" "4:wan" "8t@$ifname"
-else
- ucidef_add_switch "switch0" \
- "0:lan" "1:lan" "2:lan" "3:lan" "4:wan" "5t@$ifname"
-fi
-
-[ -n "$wan_macaddr" ] && ucidef_set_interface_macaddr "wan" "$wan_macaddr"
-
+board_config_update
+board=$(board_name)
+bcm53xx_setup_interfaces "$board"
+bcm53xx_setup_macs "$board"
board_config_flush
exit 0