Merge "Prepares hostapd for use by a wifi HAL vendor APEX" am: 43a56c115d am: 03d8601ae6 am: b445d690c6

Original change: https://android-review.googlesource.com/c/platform/external/wpa_supplicant_8/+/1908051

Change-Id: Ic2e06cc6dbe7ebeea7aa21fb191cb660b939ec7b
diff --git a/hostapd/hidl/1.3/hostapd.cpp b/hostapd/hidl/1.3/hostapd.cpp
index f9d2647..72efd3f 100644
--- a/hostapd/hidl/1.3/hostapd.cpp
+++ b/hostapd/hidl/1.3/hostapd.cpp
@@ -919,7 +919,15 @@
 				iface_hapd->own_addr);
 		    }
 		}
-	    };
+		else if (os_strncmp(txt, AP_EVENT_DISABLED,
+			 strlen(AP_EVENT_DISABLED)) == 0) {
+		    // Invoke the failure callback on all registered clients.
+		    for (const auto& callback : callbacks_) {
+			    callback->onFailure(strlen(iface_hapd->conf->bridge) > 0 ?
+			        iface_hapd->conf->bridge : iface_hapd->conf->iface);
+		    }
+		}
+	};
 
 	// Setup callback
 	iface_hapd->setup_complete_cb = onAsyncSetupCompleteCb;
diff --git a/src/ap/drv_callbacks.c b/src/ap/drv_callbacks.c
index 53082f5..de51772 100644
--- a/src/ap/drv_callbacks.c
+++ b/src/ap/drv_callbacks.c
@@ -1673,6 +1673,9 @@
 		hostapd_switch_channel_fallback(hapd->iface,
 						&hapd->cs_freq_params);
 	}
+
+	// inform framework that interface is unavailable
+	hostapd_disable_iface(hapd->iface);
 }
 
 
diff --git a/wpa_supplicant/hidl/1.4/supplicant.cpp b/wpa_supplicant/hidl/1.4/supplicant.cpp
index a65b70e..d8b18bb 100644
--- a/wpa_supplicant/hidl/1.4/supplicant.cpp
+++ b/wpa_supplicant/hidl/1.4/supplicant.cpp
@@ -365,6 +365,10 @@
 		if (!wpa_s) {
 			return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, {}};
 		}
+		//Request the current scan results from the driver and updates
+		//the local BSS list wpa_s->bss. This is to avoid a full scan
+		//while processing the connect request on newly created interface.
+		wpa_supplicant_update_scan_results(wpa_s);
 	}
 	// The supplicant core creates a corresponding hidl object via
 	// HidlManager when |wpa_supplicant_add_iface| is called.
diff --git a/wpa_supplicant/hidl/1.4/supplicant.h b/wpa_supplicant/hidl/1.4/supplicant.h
index 2944c50..c2b172c 100644
--- a/wpa_supplicant/hidl/1.4/supplicant.h
+++ b/wpa_supplicant/hidl/1.4/supplicant.h
@@ -23,6 +23,7 @@
 #include "utils/includes.h"
 #include "utils/wpa_debug.h"
 #include "wpa_supplicant_i.h"
+#include "scan.h"
 }
 
 namespace android {