+ wpa_supplicant_prepare_interface "$ifname" nl80211 || {
+ iw dev "$ifname" del
+ return 1
+ }
+ if [ "$mode" = "sta" ]; then
+ wpa_supplicant_add_network "$ifname"
+ else
+ wpa_supplicant_add_network "$ifname" "$freq" "$htmode" "$noscan"
+ fi
+
+ NEWSPLIST="${NEWSPLIST}$ifname "
+
+ if [ "${NEWAPLIST%% *}" != "${OLDAPLIST%% *}" ]; then
+ [ "$spobj" ] && ubus call wpa_supplicant.${phy} config_del "{\"iface\":\"$ifname\"}"
+ add_sp=1
+ fi
+ [ "$enable" = 0 ] && {
+ ubus call wpa_supplicant.${phy} config_del "{\"iface\":\"$ifname\"}"
+ ip link set dev "$ifname" down
+ return 0
+ }
+ [ -z "$spobj" ] && add_sp=1
+
+ if [ "$add_sp" = "1" ]; then
+ wpa_supplicant_run "$ifname" "$hostapd_ctrl"
+ else
+ ubus call $spobj reload
+ fi
+}
+
+mac80211_setup_supplicant_noctl() {
+ local enable=$1
+ local spobj="$(ubus -S list | grep wpa_supplicant.${ifname})"
+ wpa_supplicant_prepare_interface "$ifname" nl80211 || {
+ iw dev "$ifname" del
+ return 1
+ }
+
+ wpa_supplicant_add_network "$ifname" "$freq" "$htmode" "$noscan"
+
+ NEWSPLIST="${NEWSPLIST}$ifname "
+ [ "$enable" = 0 ] && {
+ ubus call wpa_supplicant.${phy} config_del "{\"iface\":\"$ifname\"}"
+ ip link set dev "$ifname" down
+ return 0
+ }
+ if [ -z "$spobj" ]; then
+ wpa_supplicant_run "$ifname"
+ else
+ ubus call $spobj reload
+ fi
+}
+
+mac80211_prepare_iw_htmode() {
+ case "$htmode" in
+ VHT20|HT20) iw_htmode=HT20;;
+ HT40*|VHT40|VHT160)
+ case "$hwmode" in
+ a)
+ case "$(( ($channel / 4) % 2 ))" in
+ 1) iw_htmode="HT40+" ;;
+ 0) iw_htmode="HT40-";;
+ esac
+ ;;
+ *)
+ case "$htmode" in
+ HT40+) iw_htmode="HT40+";;
+ HT40-) iw_htmode="HT40-";;
+ *)
+ if [ "$channel" -lt 7 ]; then
+ iw_htmode="HT40+"
+ else
+ iw_htmode="HT40-"
+ fi
+ ;;
+ esac
+ ;;
+ esac
+ [ "$auto_channel" -gt 0 ] && iw_htmode="HT40+"
+ ;;
+ VHT80)
+ iw_htmode="80MHZ"
+ ;;
+ NONE|NOHT)
+ iw_htmode="NOHT"
+ ;;
+ *) iw_htmode="" ;;
+ esac