diff --git a/hostapd/Android.mk b/hostapd/Android.mk
index b3deedd..d9c4b97 100644
--- a/hostapd/Android.mk
+++ b/hostapd/Android.mk
@@ -998,6 +998,7 @@
 include $(CLEAR_VARS)
 LOCAL_MODULE := hostapd_cli
 LOCAL_MODULE_TAGS := debug
+LOCAL_PROPRIETARY_MODULE := true
 LOCAL_SHARED_LIBRARIES := libc libcutils liblog
 LOCAL_CFLAGS := $(L_CFLAGS)
 LOCAL_SRC_FILES := $(OBJS_c)
@@ -1008,6 +1009,7 @@
 include $(CLEAR_VARS)
 LOCAL_MODULE := hostapd
 LOCAL_MODULE_TAGS := optional
+LOCAL_PROPRIETARY_MODULE := true
 ifdef CONFIG_DRIVER_CUSTOM
 LOCAL_STATIC_LIBRARIES := libCustomWifi
 endif
diff --git a/hostapd/CleanSpec.mk b/hostapd/CleanSpec.mk
new file mode 100644
index 0000000..653aebb
--- /dev/null
+++ b/hostapd/CleanSpec.mk
@@ -0,0 +1,52 @@
+# -*- mode: makefile -*-
+#  Copyright (C) 2017 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+# If you don't need to do a full clean build but would like to touch
+# a file or delete some intermediate files, add a clean step to the end
+# of the list.  These steps will only be run once, if they haven't been
+# run before.
+#
+# E.g.:
+#     $(call add-clean-step, touch -c external/sqlite/sqlite3.h)
+#     $(call add-clean-step, rm -rf $(OUT_DIR)/obj/STATIC_LIBRARIES/libz_intermediates)
+#
+# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with
+# files that are missing or have been moved.
+#
+# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory.
+# Use $(OUT_DIR) to refer to the "out" directory.
+#
+# If you need to re-do something that's already mentioned, just copy
+# the command and add it to the bottom of the list.  E.g., if a change
+# that you made last week required touching a file and a change you
+# made today requires touching the same file, just copy the old
+# touch step and add it to the end of the list.
+#
+# ************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
+# ************************************************
+#
+# For example:
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates)
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates)
+#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
+#$(call add-clean-step, rm -rf $(OUT_DIR)/obj/SHARED_LIBRARIES/libdvm*)
+# ************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
+# ************************************************
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/bin/hostapd)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/bin/hostapd_cli)
diff --git a/hostapd/hostapd.android.rc b/hostapd/hostapd.android.rc
index 0ae27ca..672e188 100644
--- a/hostapd/hostapd.android.rc
+++ b/hostapd/hostapd.android.rc
@@ -9,12 +9,12 @@
 on post-fs-data
     mkdir /data/misc/wifi/hostapd 0770 wifi wifi
 
-service hostapd /system/bin/hostapd \
+service hostapd /vendor/bin/hostapd \
         -e /data/misc/wifi/entropy.bin \
         /data/misc/wifi/hostapd.conf
     class main
     user wifi
-    group wifi
+    group wifi net_raw net_admin
     writepid /data/misc/wifi/hostapd.pid
     disabled
     oneshot
diff --git a/wpa_supplicant/Android.mk b/wpa_supplicant/Android.mk
index 5bab1f1..867af85 100644
--- a/wpa_supplicant/Android.mk
+++ b/wpa_supplicant/Android.mk
@@ -1610,12 +1610,12 @@
 LOCAL_SHARED_LIBRARIES += $(LIB_SHARED_EAP_PROXY)
 endif
 ifeq ($(CONFIG_TLS), openssl)
-LOCAL_SHARED_LIBRARIES += libcrypto libssl libkeystore_binder
+LOCAL_SHARED_LIBRARIES += libcrypto libssl libkeystore-wifi-hidl
 endif
 
 # With BoringSSL we need libkeystore-engine in order to provide access to
 # keystore keys.
-LOCAL_SHARED_LIBRARIES += libkeystore-engine
+LOCAL_SHARED_LIBRARIES += libkeystore-engine-wifi-hidl
 
 ifdef CONFIG_DRIVER_NL80211
 ifneq ($(wildcard external/libnl),)
@@ -1681,20 +1681,23 @@
 LOCAL_CPPFLAGS := $(L_CPPFLAGS)
 LOCAL_CFLAGS := $(L_CFLAGS)
 LOCAL_C_INCLUDES := $(INCLUDES)
+HIDL_INTERFACE_VERSION = 1.0
 LOCAL_SRC_FILES := \
-    hidl/hidl.cpp \
-    hidl/hidl_manager.cpp \
-    hidl/iface_config_utils.cpp \
-    hidl/p2p_iface.cpp \
-    hidl/p2p_network.cpp \
-    hidl/sta_iface.cpp \
-    hidl/sta_network.cpp \
-    hidl/supplicant.cpp
+    hidl/$(HIDL_INTERFACE_VERSION)/hidl.cpp \
+    hidl/$(HIDL_INTERFACE_VERSION)/hidl_manager.cpp \
+    hidl/$(HIDL_INTERFACE_VERSION)/iface_config_utils.cpp \
+    hidl/$(HIDL_INTERFACE_VERSION)/p2p_iface.cpp \
+    hidl/$(HIDL_INTERFACE_VERSION)/p2p_network.cpp \
+    hidl/$(HIDL_INTERFACE_VERSION)/sta_iface.cpp \
+    hidl/$(HIDL_INTERFACE_VERSION)/sta_network.cpp \
+    hidl/$(HIDL_INTERFACE_VERSION)/supplicant.cpp
 LOCAL_SHARED_LIBRARIES := \
-    android.hardware.wifi.supplicant@1.0 \
+    android.hardware.wifi.supplicant@$(HIDL_INTERFACE_VERSION) \
     libhidlbase \
     libhidltransport \
     libhwbinder \
     libutils
+LOCAL_EXPORT_C_INCLUDE_DIRS := \
+    $(LOCAL_PATH)/hidl/$(HIDL_INTERFACE_VERSION)
 include $(BUILD_STATIC_LIBRARY)
 endif # WPA_SUPPLICANT_USE_HIDL == y
diff --git a/wpa_supplicant/hidl/hidl.cpp b/wpa_supplicant/hidl/1.0/hidl.cpp
similarity index 97%
rename from wpa_supplicant/hidl/hidl.cpp
rename to wpa_supplicant/hidl/1.0/hidl.cpp
index 753c87b..e5f5303 100644
--- a/wpa_supplicant/hidl/hidl.cpp
+++ b/wpa_supplicant/hidl/1.0/hidl.cpp
@@ -370,7 +370,7 @@
     const struct p2p_peer_info *info, const u8 *peer_wfd_device_info,
     u8 peer_wfd_device_info_len)
 {
-	if (!wpa_s || !addr || !info || !peer_wfd_device_info)
+	if (!wpa_s || !addr || !info)
 		return;
 
 	wpa_printf(
@@ -474,9 +474,9 @@
 
 void wpas_hidl_notify_p2p_group_started(
     struct wpa_supplicant *wpa_s, const struct wpa_ssid *ssid, int persistent,
-    int client, const u8 *ip)
+    int client)
 {
-	if (!wpa_s || !ssid || !ip)
+	if (!wpa_s || !ssid)
 		return;
 
 	wpa_printf(
@@ -487,8 +487,7 @@
 	if (!hidl_manager)
 		return;
 
-	hidl_manager->notifyP2pGroupStarted(
-	    wpa_s, ssid, persistent, client, ip);
+	hidl_manager->notifyP2pGroupStarted(wpa_s, ssid, persistent, client);
 }
 
 void wpas_hidl_notify_p2p_group_removed(
@@ -590,7 +589,7 @@
 void wpas_hidl_notify_ap_sta_authorized(
     struct wpa_supplicant *wpa_s, const u8 *sta, const u8 *p2p_dev_addr)
 {
-	if (!wpa_s || !sta || !p2p_dev_addr)
+	if (!wpa_s || !sta)
 		return;
 
 	wpa_printf(
@@ -608,7 +607,7 @@
 void wpas_hidl_notify_ap_sta_deauthorized(
     struct wpa_supplicant *wpa_s, const u8 *sta, const u8 *p2p_dev_addr)
 {
-	if (!wpa_s || !sta || !p2p_dev_addr)
+	if (!wpa_s || !sta)
 		return;
 
 	wpa_printf(
diff --git a/wpa_supplicant/hidl/hidl.h b/wpa_supplicant/hidl/1.0/hidl.h
similarity index 98%
rename from wpa_supplicant/hidl/hidl.h
rename to wpa_supplicant/hidl/1.0/hidl.h
index 9e2d650..96631f2 100644
--- a/wpa_supplicant/hidl/hidl.h
+++ b/wpa_supplicant/hidl/1.0/hidl.h
@@ -71,7 +71,7 @@
     struct wpa_supplicant *wpa_s, const char *reason);
 void wpas_hidl_notify_p2p_group_started(
     struct wpa_supplicant *wpa_s, const struct wpa_ssid *ssid, int persistent,
-    int client, const u8 *ip);
+    int client);
 void wpas_hidl_notify_p2p_group_removed(
     struct wpa_supplicant *wpa_s, const struct wpa_ssid *ssid,
     const char *role);
@@ -177,7 +177,7 @@
 }
 static void wpas_hidl_notify_p2p_group_started(
     struct wpa_supplicant *wpa_s, const struct wpa_ssid *ssid, int persistent,
-    int client, const u8 *ip)
+    int client)
 {
 }
 static void wpas_hidl_notify_p2p_group_removed(
diff --git a/wpa_supplicant/hidl/hidl_constants.h b/wpa_supplicant/hidl/1.0/hidl_constants.h
similarity index 100%
rename from wpa_supplicant/hidl/hidl_constants.h
rename to wpa_supplicant/hidl/1.0/hidl_constants.h
diff --git a/wpa_supplicant/hidl/hidl_i.h b/wpa_supplicant/hidl/1.0/hidl_i.h
similarity index 100%
rename from wpa_supplicant/hidl/hidl_i.h
rename to wpa_supplicant/hidl/1.0/hidl_i.h
diff --git a/wpa_supplicant/hidl/hidl_manager.cpp b/wpa_supplicant/hidl/1.0/hidl_manager.cpp
similarity index 97%
rename from wpa_supplicant/hidl/hidl_manager.cpp
rename to wpa_supplicant/hidl/1.0/hidl_manager.cpp
index a6749e8..72b53a4 100644
--- a/wpa_supplicant/hidl/hidl_manager.cpp
+++ b/wpa_supplicant/hidl/1.0/hidl_manager.cpp
@@ -30,7 +30,7 @@
 constexpr size_t kGsmRandLenBytes = GSM_RAND_LEN;
 constexpr size_t kUmtsRandLenBytes = EAP_AKA_RAND_LEN;
 constexpr size_t kUmtsAutnLenBytes = EAP_AKA_AUTN_LEN;
-
+constexpr u8 kZeroBssid[6] = {0, 0, 0, 0, 0, 0};
 /**
  * Check if the provided |wpa_supplicant| structure represents a P2P iface or
  * not.
@@ -1058,17 +1058,24 @@
     const struct p2p_peer_info *info, const u8 *peer_wfd_device_info,
     u8 peer_wfd_device_info_len)
 {
-	if (!wpa_s || !addr || !info || !peer_wfd_device_info)
+	if (!wpa_s || !addr || !info)
 		return;
 
 	if (p2p_iface_object_map_.find(wpa_s->ifname) ==
 	    p2p_iface_object_map_.end())
 		return;
 
-	if (peer_wfd_device_info_len != kWfdDeviceInfoLen) {
-		wpa_printf(
-		    MSG_ERROR, "Unexpected WFD device info len: %d",
-		    peer_wfd_device_info_len);
+	std::array<uint8_t, kWfdDeviceInfoLen> hidl_peer_wfd_device_info{};
+	if (peer_wfd_device_info) {
+		if (peer_wfd_device_info_len != kWfdDeviceInfoLen) {
+			wpa_printf(
+			    MSG_ERROR, "Unexpected WFD device info len: %d",
+			    peer_wfd_device_info_len);
+		} else {
+			os_memcpy(
+			    hidl_peer_wfd_device_info.data(),
+			    peer_wfd_device_info, kWfdDeviceInfoLen);
+		}
 	}
 
 	callWithEachP2pIfaceCallback(
@@ -1077,7 +1084,7 @@
 		&ISupplicantP2pIfaceCallback::onDeviceFound,
 		std::placeholders::_1, addr, info->p2p_device_addr,
 		info->pri_dev_type, info->device_name, info->config_methods,
-		info->dev_capab, info->group_capab, peer_wfd_device_info));
+		info->dev_capab, info->group_capab, hidl_peer_wfd_device_info));
 }
 
 void HidlManager::notifyP2pDeviceLost(
@@ -1168,10 +1175,9 @@
 }
 
 void HidlManager::notifyP2pGroupStarted(
-    struct wpa_supplicant *wpa_group_s, const struct wpa_ssid *ssid,
-    int persistent, int client, const u8 *ip)
+    struct wpa_supplicant *wpa_group_s, const struct wpa_ssid *ssid, int persistent, int client)
 {
-	if (!wpa_group_s || !wpa_group_s->parent || !ssid || !ip)
+	if (!wpa_group_s || !wpa_group_s->parent || !ssid)
 		return;
 
 	// For group notifications, need to use the parent iface for callbacks.
@@ -1317,33 +1323,30 @@
 void HidlManager::notifyApStaAuthorized(
     struct wpa_supplicant *wpa_s, const u8 *sta, const u8 *p2p_dev_addr)
 {
-	if (!wpa_s || !sta || !p2p_dev_addr)
+	if (!wpa_s || !wpa_s->parent || !sta)
 		return;
-
-	if (p2p_iface_object_map_.find(wpa_s->ifname) ==
+	if (p2p_iface_object_map_.find(wpa_s->parent->ifname) ==
 	    p2p_iface_object_map_.end())
 		return;
-
 	callWithEachP2pIfaceCallback(
-	    wpa_s->ifname, std::bind(
+	    wpa_s->parent->ifname, std::bind(
 			       &ISupplicantP2pIfaceCallback::onStaAuthorized,
-			       std::placeholders::_1, sta, p2p_dev_addr));
+			       std::placeholders::_1, sta, p2p_dev_addr ? p2p_dev_addr : kZeroBssid));
 }
 
 void HidlManager::notifyApStaDeauthorized(
     struct wpa_supplicant *wpa_s, const u8 *sta, const u8 *p2p_dev_addr)
 {
-	if (!wpa_s || !sta || !p2p_dev_addr)
+	if (!wpa_s || !wpa_s->parent || !sta)
 		return;
-
-	if (p2p_iface_object_map_.find(wpa_s->ifname) ==
+	if (p2p_iface_object_map_.find(wpa_s->parent->ifname) ==
 	    p2p_iface_object_map_.end())
 		return;
 
 	callWithEachP2pIfaceCallback(
-	    wpa_s->ifname, std::bind(
+	    wpa_s->parent->ifname, std::bind(
 			       &ISupplicantP2pIfaceCallback::onStaDeauthorized,
-			       std::placeholders::_1, sta, p2p_dev_addr));
+			       std::placeholders::_1, sta, p2p_dev_addr ? p2p_dev_addr : kZeroBssid));
 }
 
 void HidlManager::notifyExtRadioWorkStart(
diff --git a/wpa_supplicant/hidl/hidl_manager.h b/wpa_supplicant/hidl/1.0/hidl_manager.h
similarity index 99%
rename from wpa_supplicant/hidl/hidl_manager.h
rename to wpa_supplicant/hidl/1.0/hidl_manager.h
index ada9324..9d9527c 100644
--- a/wpa_supplicant/hidl/hidl_manager.h
+++ b/wpa_supplicant/hidl/1.0/hidl_manager.h
@@ -99,7 +99,7 @@
 	    struct wpa_supplicant *wpa_s, const char *reason);
 	void notifyP2pGroupStarted(
 	    struct wpa_supplicant *wpa_group_s, const struct wpa_ssid *ssid,
-	    int persistent, int client, const u8 *ip);
+	    int persistent, int client);
 	void notifyP2pGroupRemoved(
 	    struct wpa_supplicant *wpa_group_s, const struct wpa_ssid *ssid,
 	    const char *role);
diff --git a/wpa_supplicant/hidl/hidl_return_util.h b/wpa_supplicant/hidl/1.0/hidl_return_util.h
similarity index 100%
rename from wpa_supplicant/hidl/hidl_return_util.h
rename to wpa_supplicant/hidl/1.0/hidl_return_util.h
diff --git a/wpa_supplicant/hidl/iface_config_utils.cpp b/wpa_supplicant/hidl/1.0/iface_config_utils.cpp
similarity index 97%
rename from wpa_supplicant/hidl/iface_config_utils.cpp
rename to wpa_supplicant/hidl/1.0/iface_config_utils.cpp
index b6bd3d8..7dc5a6c 100644
--- a/wpa_supplicant/hidl/iface_config_utils.cpp
+++ b/wpa_supplicant/hidl/1.0/iface_config_utils.cpp
@@ -62,7 +62,10 @@
 	      {WpsConfigMethods::P2PS, "p2ps"},
 	      {WpsConfigMethods::VIRT_DISPLAY, "virtual_display"},
 	      {WpsConfigMethods::PHY_DISPLAY, "physical_display"}}) {
-		if (config_methods & flag_and_name.first) {
+		const auto flag =
+		    static_cast<std::underlying_type<WpsConfigMethods>::type>(
+			flag_and_name.first);
+		if ((config_methods & flag) == flag) {
 			config_methods_str += flag_and_name.second;
 			config_methods_str += " ";
 		}
diff --git a/wpa_supplicant/hidl/iface_config_utils.h b/wpa_supplicant/hidl/1.0/iface_config_utils.h
similarity index 100%
rename from wpa_supplicant/hidl/iface_config_utils.h
rename to wpa_supplicant/hidl/1.0/iface_config_utils.h
diff --git a/wpa_supplicant/hidl/misc_utils.h b/wpa_supplicant/hidl/1.0/misc_utils.h
similarity index 100%
rename from wpa_supplicant/hidl/misc_utils.h
rename to wpa_supplicant/hidl/1.0/misc_utils.h
diff --git a/wpa_supplicant/hidl/p2p_iface.cpp b/wpa_supplicant/hidl/1.0/p2p_iface.cpp
similarity index 95%
rename from wpa_supplicant/hidl/p2p_iface.cpp
rename to wpa_supplicant/hidl/1.0/p2p_iface.cpp
index 195c6b9..ab4014d 100644
--- a/wpa_supplicant/hidl/p2p_iface.cpp
+++ b/wpa_supplicant/hidl/1.0/p2p_iface.cpp
@@ -2,6 +2,7 @@
  * hidl interface for wpa_supplicant daemon
  * Copyright (c) 2004-2016, Jouni Malinen <j@w1.fi>
  * Copyright (c) 2004-2016, Roshan Pius <rpius@google.com>
+ * Copyright (C) 2017 Sony Mobile Communications Inc.
  *
  * This software may be distributed under the terms of the BSD license.
  * See README for more details.
@@ -14,6 +15,7 @@
 #include "p2p_iface.h"
 
 extern "C" {
+#include "ap.h"
 #include "wps_supplicant.h"
 #include "wifi_display.h"
 }
@@ -24,6 +26,7 @@
 const char kConfigMethodStrKeypad[] = "keypad";
 constexpr char kSetMiracastMode[] = "MIRACAST ";
 constexpr uint8_t kWfdDeviceInfoSubelemId = 0;
+constexpr char kWfdDeviceInfoSubelemLenHexStr[] = "0006";
 
 using android::hardware::wifi::supplicant::V1_0::ISupplicantP2pIface;
 uint8_t convertHidlMiracastModeToInternal(
@@ -681,6 +684,7 @@
 	if (go_intent > 15) {
 		return {{SupplicantStatusCode::FAILURE_ARGS_INVALID, ""}, {}};
 	}
+	int go_intent_signed = join_existing_group ? -1 : go_intent;
 	p2p_wps_method wps_method = {};
 	switch (provision_method) {
 	case WpsProvisionMethod::PBC:
@@ -693,9 +697,10 @@
 		wps_method = WPS_PIN_KEYPAD;
 		break;
 	}
+	const char* pin = pre_selected_pin.length() > 0 ? pre_selected_pin.data() : nullptr;
 	int new_pin = wpas_p2p_connect(
-	    wpa_s, peer_address.data(), pre_selected_pin.data(), wps_method,
-	    persistent, false, join_existing_group, false, go_intent, 0, 0, -1,
+	    wpa_s, peer_address.data(), pin, wps_method,
+	    persistent, false, join_existing_group, false, go_intent_signed, 0, 0, -1,
 	    false, false, false, VHT_CHANWIDTH_USE_HT, nullptr, 0);
 	if (new_pin < 0) {
 		return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, {}};
@@ -856,21 +861,22 @@
 SupplicantStatus P2pIface::setDisallowedFrequenciesInternal(
     const std::vector<FreqRange>& ranges)
 {
-	if (ranges.size() == 0) {
-		return {SupplicantStatusCode::FAILURE_ARGS_INVALID, ""};
-	}
 	struct wpa_supplicant* wpa_s = retrieveIfacePtr();
 	using DestT = struct wpa_freq_range_list::wpa_freq_range;
-	DestT* freq_ranges =
-	    static_cast<DestT*>(os_malloc(sizeof(DestT) * ranges.size()));
-	if (!freq_ranges) {
-		return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
-	}
-	uint32_t i = 0;
-	for (const auto& range : ranges) {
-		freq_ranges[i].min = range.min;
-		freq_ranges[i].max = range.max;
-		i++;
+	DestT* freq_ranges = nullptr;
+	// Empty ranges is used to enable all frequencies.
+	if (ranges.size() != 0) {
+		freq_ranges =
+		    static_cast<DestT*>(os_malloc(sizeof(DestT) * ranges.size()));
+		if (!freq_ranges) {
+			return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
+		}
+		uint32_t i = 0;
+		for (const auto& range : ranges) {
+			freq_ranges[i].min = range.min;
+			freq_ranges[i].max = range.max;
+			i++;
+		}
 	}
 
 	os_free(wpa_s->global->p2p_disallow_freq.range);
@@ -983,8 +989,11 @@
 	if (!query_buf) {
 		return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, {}};
 	}
+	const uint8_t* dst_addr = is_zero_ether_addr(peer_address.data())
+				      ? nullptr
+				      : peer_address.data();
 	uint64_t identifier =
-	    wpas_p2p_sd_request(wpa_s, peer_address.data(), query_buf.get());
+	    wpas_p2p_sd_request(wpa_s, dst_addr, query_buf.get());
 	if (identifier == 0) {
 		return {{SupplicantStatusCode::FAILURE_UNKNOWN, ""}, {}};
 	}
@@ -1028,6 +1037,14 @@
 	}
 	const uint8_t* bssid_addr =
 	    is_zero_ether_addr(bssid.data()) ? nullptr : bssid.data();
+#ifdef CONFIG_AP
+	if (wpa_group_s->ap_iface) {
+		if (wpa_supplicant_ap_wps_pbc(wpa_group_s, bssid_addr, NULL)) {
+			return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
+		}
+		return {SupplicantStatusCode::SUCCESS, ""};
+	}
+#endif /* CONFIG_AP */
 	if (wpas_wps_start_pbc(wpa_group_s, bssid_addr, 0)) {
 		return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
 	}
@@ -1042,6 +1059,15 @@
 	if (!wpa_group_s) {
 		return {SupplicantStatusCode::FAILURE_IFACE_UNKNOWN, ""};
 	}
+#ifdef CONFIG_AP
+	if (wpa_group_s->ap_iface) {
+		if (wpa_supplicant_ap_wps_pin(
+				wpa_group_s, nullptr, pin.c_str(), nullptr, 0, 0) < 0) {
+			return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
+		}
+		return {SupplicantStatusCode::SUCCESS, ""};
+	}
+#endif /* CONFIG_AP */
 	if (wpas_wps_start_pin(
 		wpa_group_s, nullptr, pin.c_str(), 0, DEV_PW_DEFAULT)) {
 		return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
@@ -1137,14 +1163,16 @@
     const std::array<uint8_t, 6>& info)
 {
 	struct wpa_supplicant* wpa_s = retrieveIfacePtr();
-	uint32_t wfd_device_info_hex_len = info.size() * 2 + 1;
-	std::vector<char> wfd_device_info_hex(wfd_device_info_hex_len);
+	std::vector<char> wfd_device_info_hex(info.size() * 2 + 1);
 	wpa_snprintf_hex(
 	    wfd_device_info_hex.data(), wfd_device_info_hex.size(), info.data(),
 	    info.size());
+	// |wifi_display_subelem_set| expects the first 2 bytes
+	// to hold the lenght of the subelement. In this case it's
+	// fixed to 6, so prepend that.
 	std::string wfd_device_info_set_cmd_str =
 	    std::to_string(kWfdDeviceInfoSubelemId) + " " +
-	    wfd_device_info_hex.data();
+	    kWfdDeviceInfoSubelemLenHexStr + wfd_device_info_hex.data();
 	std::vector<char> wfd_device_info_set_cmd(
 	    wfd_device_info_set_cmd_str.c_str(),
 	    wfd_device_info_set_cmd_str.c_str() +
diff --git a/wpa_supplicant/hidl/p2p_iface.h b/wpa_supplicant/hidl/1.0/p2p_iface.h
similarity index 100%
rename from wpa_supplicant/hidl/p2p_iface.h
rename to wpa_supplicant/hidl/1.0/p2p_iface.h
diff --git a/wpa_supplicant/hidl/p2p_network.cpp b/wpa_supplicant/hidl/1.0/p2p_network.cpp
similarity index 100%
rename from wpa_supplicant/hidl/p2p_network.cpp
rename to wpa_supplicant/hidl/1.0/p2p_network.cpp
diff --git a/wpa_supplicant/hidl/p2p_network.h b/wpa_supplicant/hidl/1.0/p2p_network.h
similarity index 100%
rename from wpa_supplicant/hidl/p2p_network.h
rename to wpa_supplicant/hidl/1.0/p2p_network.h
diff --git a/wpa_supplicant/hidl/sta_iface.cpp b/wpa_supplicant/hidl/1.0/sta_iface.cpp
similarity index 99%
rename from wpa_supplicant/hidl/sta_iface.cpp
rename to wpa_supplicant/hidl/1.0/sta_iface.cpp
index d3a430f..8498e69 100644
--- a/wpa_supplicant/hidl/sta_iface.cpp
+++ b/wpa_supplicant/hidl/1.0/sta_iface.cpp
@@ -638,7 +638,7 @@
 		ret = wpa_drv_tdls_oper(wpa_s, TDLS_DISCOVERY_REQ, peer);
 	}
 	if (ret) {
-		return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
+		wpa_printf(MSG_INFO, "StaIface: TDLS discover failed: %d", ret);
 	}
 	return {SupplicantStatusCode::SUCCESS, ""};
 }
@@ -657,7 +657,7 @@
 		ret = wpa_drv_tdls_oper(wpa_s, TDLS_SETUP, peer);
 	}
 	if (ret) {
-		return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
+		wpa_printf(MSG_INFO, "StaIface: TDLS setup failed: %d", ret);
 	}
 	return {SupplicantStatusCode::SUCCESS, ""};
 }
@@ -676,7 +676,7 @@
 		ret = wpa_drv_tdls_oper(wpa_s, TDLS_TEARDOWN, peer);
 	}
 	if (ret) {
-		return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
+		wpa_printf(MSG_INFO, "StaIface: TDLS teardown failed: %d", ret);
 	}
 	return {SupplicantStatusCode::SUCCESS, ""};
 }
diff --git a/wpa_supplicant/hidl/sta_iface.h b/wpa_supplicant/hidl/1.0/sta_iface.h
similarity index 100%
rename from wpa_supplicant/hidl/sta_iface.h
rename to wpa_supplicant/hidl/1.0/sta_iface.h
diff --git a/wpa_supplicant/hidl/sta_network.cpp b/wpa_supplicant/hidl/1.0/sta_network.cpp
similarity index 99%
rename from wpa_supplicant/hidl/sta_network.cpp
rename to wpa_supplicant/hidl/1.0/sta_network.cpp
index a2d0126..72185b3 100644
--- a/wpa_supplicant/hidl/sta_network.cpp
+++ b/wpa_supplicant/hidl/1.0/sta_network.cpp
@@ -527,7 +527,7 @@
 {
 	return validateAndCall(
 	    this, SupplicantStatusCode::FAILURE_NETWORK_INVALID,
-	    &StaNetwork::getEapSubjectMatchInternal, _hidl_cb);
+	    &StaNetwork::getEapAltSubjectMatchInternal, _hidl_cb);
 }
 
 Return<void> StaNetwork::getEapEngine(getEapEngine_cb _hidl_cb)
diff --git a/wpa_supplicant/hidl/sta_network.h b/wpa_supplicant/hidl/1.0/sta_network.h
similarity index 100%
rename from wpa_supplicant/hidl/sta_network.h
rename to wpa_supplicant/hidl/1.0/sta_network.h
diff --git a/wpa_supplicant/hidl/supplicant.cpp b/wpa_supplicant/hidl/1.0/supplicant.cpp
similarity index 100%
rename from wpa_supplicant/hidl/supplicant.cpp
rename to wpa_supplicant/hidl/1.0/supplicant.cpp
diff --git a/wpa_supplicant/hidl/supplicant.h b/wpa_supplicant/hidl/1.0/supplicant.h
similarity index 100%
rename from wpa_supplicant/hidl/supplicant.h
rename to wpa_supplicant/hidl/1.0/supplicant.h
diff --git a/wpa_supplicant/notify.c b/wpa_supplicant/notify.c
index d7adaa0..9464c4b 100644
--- a/wpa_supplicant/notify.c
+++ b/wpa_supplicant/notify.c
@@ -23,7 +23,7 @@
 #include "p2p_supplicant.h"
 #include "sme.h"
 #include "notify.h"
-#include "hidl/hidl.h"
+#include "hidl.h"
 
 int wpas_notify_supplicant_initialized(struct wpa_global *global)
 {
@@ -364,6 +364,7 @@
 {
 #ifdef CONFIG_P2P
 	wpas_dbus_register_persistent_group(wpa_s, ssid);
+	wpas_hidl_register_network(wpa_s, ssid);
 #endif /* CONFIG_P2P */
 }
 
@@ -373,6 +374,7 @@
 {
 #ifdef CONFIG_P2P
 	wpas_dbus_unregister_persistent_group(wpa_s, ssid->id);
+	wpas_hidl_unregister_network(wpa_s, ssid);
 #endif /* CONFIG_P2P */
 }
 
@@ -735,7 +737,7 @@
 
 	wpas_dbus_signal_p2p_group_started(wpa_s, client, persistent, ip);
 
-	wpas_hidl_notify_p2p_group_started(wpa_s, ssid, persistent, client, ip);
+	wpas_hidl_notify_p2p_group_started(wpa_s, ssid, persistent, client);
 }
 
 
diff --git a/wpa_supplicant/wpa_supplicant_conf.mk b/wpa_supplicant/wpa_supplicant_conf.mk
index 74986ea..4293976 100644
--- a/wpa_supplicant/wpa_supplicant_conf.mk
+++ b/wpa_supplicant/wpa_supplicant_conf.mk
@@ -16,7 +16,7 @@
 LOCAL_MODULE := wpa_supplicant.conf
 LOCAL_MODULE_CLASS := ETC
 LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/wifi
+LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/wifi
 
 include $(BUILD_SYSTEM)/base_rules.mk
 
