diff --git a/wpa_supplicant/Android.mk b/wpa_supplicant/Android.mk
index 31f017b..b778607 100644
--- a/wpa_supplicant/Android.mk
+++ b/wpa_supplicant/Android.mk
@@ -50,7 +50,7 @@
 endif
 
 # C++ flags for hidl interface
-L_CPPFLAGS := -std=c++11 -Wall -Werror
+L_CPPFLAGS := -Wall -Werror
 # TODO: Remove these allowed warnings later.
 L_CPPFLAGS += -Wno-unused-variable -Wno-unused-parameter
 L_CPPFLAGS += -Wno-unused-private-field
diff --git a/wpa_supplicant/hidl/hidl_manager.h b/wpa_supplicant/hidl/hidl_manager.h
index 0678b10..5f1c7b6 100644
--- a/wpa_supplicant/hidl/hidl_manager.h
+++ b/wpa_supplicant/hidl/hidl_manager.h
@@ -191,6 +191,7 @@
 	    std::vector<android::sp<ISupplicantStaNetworkCallback>>>
 	    sta_network_callbacks_map_;
 
+#if 0  // TODO(b/31632518): HIDL object death notifications.
 	/**
 	 * Helper class used to deregister the callback object reference from
 	 * our callback list on the death of the hidl object.
@@ -222,6 +223,7 @@
 		const std::function<void(const android::sp<CallbackType> &)>
 		    on_hidl_died_;
 	};
+#endif
 };
 
 // The hidl interface uses some values which are the same as internal ones to
diff --git a/wpa_supplicant/hidl/p2p_iface.cpp b/wpa_supplicant/hidl/p2p_iface.cpp
index 47f3cc5..9c0b3f4 100644
--- a/wpa_supplicant/hidl/p2p_iface.cpp
+++ b/wpa_supplicant/hidl/p2p_iface.cpp
@@ -196,8 +196,8 @@
 {
 	return validateAndCall(
 	    this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
-	    &P2pIface::inviteInternal, _hidl_cb, go_device_address,
-	    peer_address);
+	    &P2pIface::inviteInternal, _hidl_cb, group_ifname,
+	    go_device_address, peer_address);
 }
 
 Return<void> P2pIface::reinvoke(
@@ -296,8 +296,8 @@
 {
 	return validateAndCall(
 	    this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
-	    &P2pIface::requestServiceDiscoveryInternal, _hidl_cb, version,
-	    peer_address, query);
+	    &P2pIface::requestServiceDiscoveryInternal, _hidl_cb, peer_address,
+	    query);
 }
 
 Return<void> P2pIface::cancelServiceDiscovery(
@@ -435,9 +435,9 @@
 }
 
 std::pair<SupplicantStatus, std::vector<uint8_t>> P2pIface::connectInternal(
-    const hidl_array<uint8_t, 6>& peer_address,
+    const std::array<uint8_t, 6>& peer_address,
     ISupplicantP2pIface::WpsProvisionMethod provision_method,
-    const hidl_vec<uint8_t>& pre_selected_pin, bool join_existing_group,
+    const std::vector<uint8_t>& pre_selected_pin, bool join_existing_group,
     bool persistent, uint32_t go_intent)
 {
 	// TODO: Add implementation.
@@ -451,7 +451,7 @@
 }
 
 SupplicantStatus P2pIface::provisionDiscoveryInternal(
-    const hidl_array<uint8_t, 6>& peer_address,
+    const std::array<uint8_t, 6>& peer_address,
     ISupplicantP2pIface::WpsProvisionMethod provision_method)
 {
 	// TODO: Add implementation.
@@ -472,7 +472,7 @@
 }
 
 SupplicantStatus P2pIface::rejectInternal(
-    const hidl_array<uint8_t, 6>& peer_address)
+    const std::array<uint8_t, 6>& peer_address)
 {
 	// TODO: Add implementation.
 	return {SupplicantStatusCode::SUCCESS, ""};
@@ -480,15 +480,15 @@
 
 SupplicantStatus P2pIface::inviteInternal(
     const hidl_string& group_ifname,
-    const hidl_array<uint8_t, 6>& go_device_address,
-    const hidl_array<uint8_t, 6>& peer_address)
+    const std::array<uint8_t, 6>& go_device_address,
+    const std::array<uint8_t, 6>& peer_address)
 {
 	// TODO: Add implementation.
 	return {SupplicantStatusCode::SUCCESS, ""};
 }
 
 SupplicantStatus P2pIface::reinvokeInternal(
-    uint32_t persistent_network_id, const hidl_array<uint8_t, 6>& peer_address)
+    uint32_t persistent_network_id, const std::array<uint8_t, 6>& peer_address)
 {
 	// TODO: Add implementation.
 	return {SupplicantStatusCode::SUCCESS, ""};
@@ -509,28 +509,28 @@
 }
 
 std::pair<SupplicantStatus, std::vector<uint8_t>> P2pIface::getSsidInternal(
-    const hidl_array<uint8_t, 6>& peer_address)
+    const std::array<uint8_t, 6>& peer_address)
 {
 	// TODO: Add implementation.
 	return {{SupplicantStatusCode::SUCCESS, ""}, {}};
 }
 
 std::pair<SupplicantStatus, uint32_t> P2pIface::getGroupCapabilityInternal(
-    const hidl_array<uint8_t, 6>& peer_address)
+    const std::array<uint8_t, 6>& peer_address)
 {
 	// TODO: Add implementation.
 	return {{SupplicantStatusCode::SUCCESS, ""}, 0};
 }
 
 SupplicantStatus P2pIface::addBonjourServiceInternal(
-    const hidl_vec<uint8_t>& query, const hidl_vec<uint8_t>& response)
+    const std::vector<uint8_t>& query, const std::vector<uint8_t>& response)
 {
 	// TODO: Add implementation.
 	return {SupplicantStatusCode::SUCCESS, ""};
 }
 
 SupplicantStatus P2pIface::removeBonjourServiceInternal(
-    const hidl_vec<uint8_t>& query)
+    const std::vector<uint8_t>& query)
 {
 	// TODO: Add implementation.
 	return {SupplicantStatusCode::SUCCESS, ""};
@@ -558,7 +558,8 @@
 }
 
 std::pair<SupplicantStatus, uint64_t> P2pIface::requestServiceDiscoveryInternal(
-    const hidl_array<uint8_t, 6>& peer_address, const hidl_vec<uint8_t>& query)
+    const std::array<uint8_t, 6>& peer_address,
+    const std::vector<uint8_t>& query)
 {
 	// TODO: Add implementation.
 	return {{SupplicantStatusCode::SUCCESS, ""}, 0};
diff --git a/wpa_supplicant/hidl/p2p_iface.h b/wpa_supplicant/hidl/p2p_iface.h
index f4992c3..d340b08 100644
--- a/wpa_supplicant/hidl/p2p_iface.h
+++ b/wpa_supplicant/hidl/p2p_iface.h
@@ -154,39 +154,40 @@
 	SupplicantStatus stopFindInternal();
 	SupplicantStatus flushInternal();
 	std::pair<SupplicantStatus, std::vector<uint8_t>> connectInternal(
-	    const hidl_array<uint8_t, 6>& peer_address,
+	    const std::array<uint8_t, 6>& peer_address,
 	    ISupplicantP2pIface::WpsProvisionMethod provision_method,
-	    const hidl_vec<uint8_t>& pre_selected_pin, bool join_existing_group,
-	    bool persistent, uint32_t go_intent);
+	    const std::vector<uint8_t>& pre_selected_pin,
+	    bool join_existing_group, bool persistent, uint32_t go_intent);
 	SupplicantStatus cancelConnectInternal();
 	SupplicantStatus provisionDiscoveryInternal(
-	    const hidl_array<uint8_t, 6>& peer_address,
+	    const std::array<uint8_t, 6>& peer_address,
 	    ISupplicantP2pIface::WpsProvisionMethod provision_method);
 	SupplicantStatus addGroupInternal(
 	    bool persistent, uint32_t persistent_network_id);
 	SupplicantStatus removeGroupInternal(const hidl_string& group_ifname);
 	SupplicantStatus rejectInternal(
-	    const hidl_array<uint8_t, 6>& peer_address);
+	    const std::array<uint8_t, 6>& peer_address);
 	SupplicantStatus inviteInternal(
 	    const hidl_string& group_ifname,
-	    const hidl_array<uint8_t, 6>& go_device_address,
-	    const hidl_array<uint8_t, 6>& peer_address);
+	    const std::array<uint8_t, 6>& go_device_address,
+	    const std::array<uint8_t, 6>& peer_address);
 	SupplicantStatus reinvokeInternal(
 	    uint32_t persistent_network_id,
-	    const hidl_array<uint8_t, 6>& peer_address);
+	    const std::array<uint8_t, 6>& peer_address);
 	SupplicantStatus configureExtListenInternal(
 	    bool enable, uint32_t period_in_millis,
 	    uint32_t interval_in_millis);
 	SupplicantStatus setListenChannelInternal(
 	    uint32_t channel, uint32_t operating_class);
 	std::pair<SupplicantStatus, std::vector<uint8_t>> getSsidInternal(
-	    const hidl_array<uint8_t, 6>& peer_address);
+	    const std::array<uint8_t, 6>& peer_address);
 	std::pair<SupplicantStatus, uint32_t> getGroupCapabilityInternal(
-	    const hidl_array<uint8_t, 6>& peer_address);
+	    const std::array<uint8_t, 6>& peer_address);
 	SupplicantStatus addBonjourServiceInternal(
-	    const hidl_vec<uint8_t>& query, const hidl_vec<uint8_t>& response);
+	    const std::vector<uint8_t>& query,
+	    const std::vector<uint8_t>& response);
 	SupplicantStatus removeBonjourServiceInternal(
-	    const hidl_vec<uint8_t>& query);
+	    const std::vector<uint8_t>& query);
 	SupplicantStatus addUpnpServiceInternal(
 	    uint32_t version, const hidl_string& service_name);
 	SupplicantStatus removeUpnpServiceInternal(
@@ -194,8 +195,8 @@
 	SupplicantStatus flushServicesInternal(
 	    uint32_t version, const hidl_string& service_name);
 	std::pair<SupplicantStatus, uint64_t> requestServiceDiscoveryInternal(
-	    const hidl_array<uint8_t, 6>& peer_address,
-	    const hidl_vec<uint8_t>& query);
+	    const std::array<uint8_t, 6>& peer_address,
+	    const std::vector<uint8_t>& query);
 	SupplicantStatus cancelServiceDiscoveryInternal(uint64_t identifier);
 
 	struct wpa_supplicant* retrieveIfacePtr();
