ramips: allow to set switchdev by board in ramips_set_preinit_iface
[openwrt/openwrt.git] / target / linux / ramips / base-files / lib / preinit / 07_set_preinit_iface_ramips
index 003a4dda7b60ef31abd27a4932913a24c03bafb1..68c1285eb479fa9fdecc902c19fa91b5467f2f4d 100644 (file)
@@ -3,27 +3,54 @@
 # Copyright (C) 2013 OpenWrt.org
 #
 
+. /lib/functions.sh
+
+ramips_switchdev_from_soc() {
+       # The ethernet switch driver enables VLAN by default, but
+       # failsafe uses eth0, making the device unreachable:
+       # https://dev.openwrt.org/ticket/18768
+
+       local switchdev
+       local RT3X5X=$(grep -E "(RT3.5|RT5350|MT7628|MT7688|MT7620|MT7621)" /proc/cpuinfo)
+
+       [ -n "$RT3X5X" ] || return 1
+
+       case "$RT3X5X" in
+       *MT7620*)
+               switchdev=mt7620
+               ;;
+       *MT7621*)
+               switchdev=mt7530
+               ;;
+       *)
+               switchdev=rt305x
+               ;;
+       esac
+
+       echo "$switchdev"
+}
+
+ramips_switchdev_from_board() {
+       # For these devices, external ethernet switch should be used
+       # instead of the SoC internal switch.
+
+       local switchdev
+       local board=$(board_name)
+
+       case "$board" in
+       esac
+
+       echo "$switchdev"
+}
+
 ramips_set_preinit_iface() {
-       RT3X5X=$(grep -E "(RT3.5|RT5350|MT7628|MT7688|MT7620|MT7621)" /proc/cpuinfo)
-
-       if [ -n "${RT3X5X}" ]; then
-               # The ethernet switch driver enables VLAN by default, but
-               # failsafe uses eth0, making the device unreachable:
-               # https://dev.openwrt.org/ticket/18768
-               case "${RT3X5X}" in
-               *MT7620*)
-                       ralink_switchdev=mt7620
-                       ;;
-               *MT7621*)
-                       ralink_switchdev=mt7530
-                       ;;
-               *)
-                       ralink_switchdev=rt305x
-                       ;;
-               esac
-               swconfig dev $ralink_switchdev set reset 1
-               swconfig dev $ralink_switchdev set enable_vlan 0
-               swconfig dev $ralink_switchdev set apply 1
+       local switchdev=$(ramips_switchdev_from_board)
+       [ -n "$switchdev" ] || switchdev=$(ramips_switchdev_from_soc)
+
+       if [ -n "$switchdev" ]; then
+               swconfig dev $switchdev set reset 1
+               swconfig dev $switchdev set enable_vlan 0
+               swconfig dev $switchdev set apply 1
        fi
 
        ifname=eth0