diff --git a/target/linux/kirkwood/base-files/etc/uci-defaults/02_network b/target/linux/kirkwood/base-files/etc/uci-defaults/02_network
index bc7e793db59d27bfba2717ff7022c70502a2c09a..5b79687784012d0bdf41d0bba3ae5f44dab5458e 100644
--- a/target/linux/kirkwood/base-files/etc/uci-defaults/02_network
+++ b/target/linux/kirkwood/base-files/etc/uci-defaults/02_network
@@ -20,6 +20,19 @@ set network.lan6.reqprefix='no'
 EOF
 }
 
+add_port_based_vlan() {
+	local device=$1
+	local vlan=$2
+	local ports=$3
+	uci batch <<EOF
+add network switch_vlan
+set network.@switch_vlan[-1].device='$device'
+set network.@switch_vlan[-1].vlan='$vlan'
+set network.@switch_vlan[-1].ports='$ports'
+set network.@switch_vlan[-1].port_based='1'
+EOF
+}
+
 . /lib/functions/uci-defaults.sh
 . /lib/kirkwood.sh
 
@@ -45,6 +58,9 @@ case "$board" in
 	;;
 "ea4500")
 	ucidef_set_interfaces_lan_wan "eth0" "eth1"
+	ucidef_add_switch "switch0" "1" "0"
+	add_port_based_vlan "switch0" "1" "0 1 2 3 5"
+	add_port_based_vlan "switch0" "2" "4 6"
 	;;
 *)
 	ucidef_set_interface_lan "eth0"