diff --git a/airoha/base-files/lib/network/switch.sh b/airoha/base-files/lib/network/switch.sh
index 4844f4f9d2fb42a5f461d7ac3704cf6e5e078212..762cae131cdedc88ad7665c90d2d21dca56febc4 100644
--- a/airoha/base-files/lib/network/switch.sh
+++ b/airoha/base-files/lib/network/switch.sh
@@ -6,7 +6,8 @@ WANDEV=
 LANDEVS=
 
 tc3162_eth_portmap() {
-	wan_port="-1"
+	local wan_port="-1"
+	local portmap port i
 
 	case "$WANDEV" in
 		eth0.[0-9])
@@ -15,13 +16,10 @@ tc3162_eth_portmap() {
 	esac
 
 	portmap="${wan_port}"
-	j=1
-	for i in `seq 1 6`; do
-		iface="$(echo $LANDEVS | cut -d' ' -f$j)"
+	for i in $(seq 1 6); do
 		port="-1"
 		if [ "${i}" -ne "${wan_port}" ]; then
-			[ "${iface:0:5}" = "eth0." ] && port=${iface#eth0.}
-			j=$((j+1))
+			echo $LANDEVS | tr ' ' '\n' | grep -qxF "eth0.${i}" && port=$i
 		fi
 		portmap="${portmap} ${port}"
 	done