diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c
index 338fd5f63..ec8c8a1e4 100644
--- a/wpa_supplicant/ctrl_iface.c
+++ b/wpa_supplicant/ctrl_iface.c
@@ -3891,6 +3891,8 @@ static int wpa_supplicant_ctrl_iface_autoscan(struct wpa_supplicant *wpa_s,
 		autoscan_deinit(wpa_s);
 	else if (state == WPA_DISCONNECTED || state == WPA_INACTIVE)
 		autoscan_init(wpa_s, 1);
+	else if (state == WPA_SCANNING)
+		wpa_supplicant_reinit_autoscan(wpa_s);
 
 	return 0;
 }
diff --git a/wpa_supplicant/dbus/dbus_new_handlers.c b/wpa_supplicant/dbus/dbus_new_handlers.c
index eb902f6bc..bde2aff27 100644
--- a/wpa_supplicant/dbus/dbus_new_handlers.c
+++ b/wpa_supplicant/dbus/dbus_new_handlers.c
@@ -1842,6 +1842,8 @@ DBusMessage * wpas_dbus_handler_autoscan(DBusMessage *message,
 			wpa_s->conf->autoscan = tmp;
 			if (state == WPA_DISCONNECTED || state == WPA_INACTIVE)
 				autoscan_init(wpa_s, 1);
+			else if (state == WPA_SCANNING)
+				wpa_supplicant_reinit_autoscan(wpa_s);
 		}
 	} else if (arg != NULL && os_strlen(arg) == 0) {
 		os_free(wpa_s->conf->autoscan);