# 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