diff --git a/package/mac80211/files/lib/wifi/mac80211.sh b/package/mac80211/files/lib/wifi/mac80211.sh
index 974fe5f99..13390b866 100644
--- a/package/mac80211/files/lib/wifi/mac80211.sh
+++ b/package/mac80211/files/lib/wifi/mac80211.sh
@@ -425,8 +425,7 @@ enable_mac80211() {
 	for vif in $vifs; do
 		config_get mode "$vif" mode
 		config_get ifname "$vif" ifname
-		[ ! "$mode" = "ap" ] || continue
-		ifconfig "$ifname" up
+		[ "$mode" = "ap" ] || ifconfig "$ifname" up
 
 		config_get vif_txpower "$vif" txpower
 		# use vif_txpower (from wifi-iface) to override txpower (from
@@ -434,82 +433,79 @@ enable_mac80211() {
 		txpower="${txpower:-$vif_txpower}"
 		[ -z "$txpower" ] || iw dev "$ifname" set txpower fixed "${txpower%%.*}00"
 
-		if [ ! "$mode" = "ap" ]; then
-			ifconfig "$ifname" up
-			case "$mode" in
-				adhoc)
-					config_get bssid "$vif" bssid
-					config_get ssid "$vif" ssid
-					config_get beacon_int "$device" beacon_int
-					config_get basic_rate_list "$device" basic_rate
-					config_get encryption "$vif" encryption
-					config_get key "$vif" key 1
-					config_get mcast_rate "$vif" mcast_rate
+		case "$mode" in
+			adhoc)
+				config_get bssid "$vif" bssid
+				config_get ssid "$vif" ssid
+				config_get beacon_int "$device" beacon_int
+				config_get basic_rate_list "$device" basic_rate
+				config_get encryption "$vif" encryption
+				config_get key "$vif" key 1
+				config_get mcast_rate "$vif" mcast_rate
 
-					local keyspec=""
-					[ "$encryption" == "wep" ] && {
-						case "$key" in
-							[1234])
-								local idx
-								for idx in 1 2 3 4; do
-									local ikey
-									config_get ikey "$vif" "key$idx"
+				local keyspec=""
+				[ "$encryption" == "wep" ] && {
+					case "$key" in
+						[1234])
+							local idx
+							for idx in 1 2 3 4; do
+								local ikey
+								config_get ikey "$vif" "key$idx"
 
-									[ -n "$ikey" ] && {
-										ikey="$(($idx - 1)):$(prepare_key_wep "$ikey")"
-										[ $idx -eq $key ] && ikey="d:$ikey"
-										append keyspec "$ikey"
-									}
-								done
-							;;
-							*) append keyspec "d:0:$(prepare_key_wep "$key")" ;;
-						esac
-					}
-
-					local br brval brsub brstr
-					[ -n "$basic_rate_list" ] && {
-						for br in $basic_rate_list; do
-							brval="$(($br / 1000))"
-							brsub="$((($br / 100) % 10))"
-							[ "$brsub" -gt 0 ] && brval="$brval.$brsub"
-							[ -n "$brstr" ] && brstr="$brstr,"
-							brstr="$brstr$brval"
-						done
-					}
-
-					local mcval=""
-					[ -n "$mcast_rate" ] && {
-						mcval="$(($mcast_rate / 1000))"
-						mcsub="$(( ($mcast_rate / 100) % 10 ))"
-						[ "$mcsub" -gt 0 ] && mcval="$mcval.$mcsub"
-					}
-
-					config_get htmode "$device" htmode
-					case "$htmode" in
-						HT20|HT40+|HT40-) ;;
-						*) htmode= ;;
+								[ -n "$ikey" ] && {
+									ikey="$(($idx - 1)):$(prepare_key_wep "$ikey")"
+									[ $idx -eq $key ] && ikey="d:$ikey"
+									append keyspec "$ikey"
+								}
+							done
+						;;
+						*) append keyspec "d:0:$(prepare_key_wep "$key")" ;;
 					esac
+				}
 
-					iw dev "$ifname" ibss join "$ssid" $freq $htmode \
-						${fixed:+fixed-freq} $bssid \
-						${beacon_int:+beacon-interval $beacon_int} \
-						${brstr:+basic-rates $brstr} \
-						${mcval:+mcast-rate $mcval} \
-						${keyspec:+keys $keyspec}
-				;;
-				sta)
-					if eval "type wpa_supplicant_setup_vif" 2>/dev/null >/dev/null; then
-						wpa_supplicant_setup_vif "$vif" nl80211 "${hostapd_ctrl:+-H $hostapd_ctrl}" || {
-							echo "enable_mac80211($device): Failed to set up wpa_supplicant for interface $ifname" >&2
-							# make sure this wifi interface won't accidentally stay open without encryption
-							ifconfig "$ifname" down
-							continue
-						}
-					fi
-				;;
-			esac
-			mac80211_start_vif "$vif" "$ifname"
-		fi
+				local br brval brsub brstr
+				[ -n "$basic_rate_list" ] && {
+					for br in $basic_rate_list; do
+						brval="$(($br / 1000))"
+						brsub="$((($br / 100) % 10))"
+						[ "$brsub" -gt 0 ] && brval="$brval.$brsub"
+						[ -n "$brstr" ] && brstr="$brstr,"
+						brstr="$brstr$brval"
+					done
+				}
+
+				local mcval=""
+				[ -n "$mcast_rate" ] && {
+					mcval="$(($mcast_rate / 1000))"
+					mcsub="$(( ($mcast_rate / 100) % 10 ))"
+					[ "$mcsub" -gt 0 ] && mcval="$mcval.$mcsub"
+				}
+
+				config_get htmode "$device" htmode
+				case "$htmode" in
+					HT20|HT40+|HT40-) ;;
+					*) htmode= ;;
+				esac
+
+				iw dev "$ifname" ibss join "$ssid" $freq $htmode \
+					${fixed:+fixed-freq} $bssid \
+					${beacon_int:+beacon-interval $beacon_int} \
+					${brstr:+basic-rates $brstr} \
+					${mcval:+mcast-rate $mcval} \
+					${keyspec:+keys $keyspec}
+			;;
+			sta)
+				if eval "type wpa_supplicant_setup_vif" 2>/dev/null >/dev/null; then
+					wpa_supplicant_setup_vif "$vif" nl80211 "${hostapd_ctrl:+-H $hostapd_ctrl}" || {
+						echo "enable_mac80211($device): Failed to set up wpa_supplicant for interface $ifname" >&2
+						# make sure this wifi interface won't accidentally stay open without encryption
+						ifconfig "$ifname" down
+						continue
+					}
+				fi
+			;;
+		esac
+		[ "$mode" = "ap" ] || mac80211_start_vif "$vif" "$ifname"
 	done
 
 }