diff --git a/wpa_supplicant/hidl/p2p_iface.cpp b/wpa_supplicant/hidl/p2p_iface.cpp
index 6251339..857fe1a 100644
--- a/wpa_supplicant/hidl/p2p_iface.cpp
+++ b/wpa_supplicant/hidl/p2p_iface.cpp
@@ -237,13 +237,13 @@
 }
 
 Return<void> P2pIface::configureExtListen(
-    bool enable, uint32_t period_in_millis, uint32_t interval_in_millis,
+    uint32_t period_in_millis, uint32_t interval_in_millis,
     configureExtListen_cb _hidl_cb)
 {
 	return validateAndCall(
 	    this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
-	    &P2pIface::configureExtListenInternal, _hidl_cb, enable,
-	    period_in_millis, interval_in_millis);
+	    &P2pIface::configureExtListenInternal, _hidl_cb, period_in_millis,
+	    interval_in_millis);
 }
 
 Return<void> P2pIface::setListenChannel(
@@ -315,13 +315,11 @@
 	    service_name);
 }
 
-Return<void> P2pIface::flushServices(
-    uint32_t version, const hidl_string& service_name,
-    flushServices_cb _hidl_cb)
+Return<void> P2pIface::flushServices(flushServices_cb _hidl_cb)
 {
 	return validateAndCall(
 	    this, SupplicantStatusCode::FAILURE_IFACE_INVALID,
-	    &P2pIface::flushServicesInternal, _hidl_cb, version, service_name);
+	    &P2pIface::flushServicesInternal, _hidl_cb);
 }
 
 Return<void> P2pIface::requestServiceDiscovery(
@@ -682,7 +680,7 @@
 }
 
 SupplicantStatus P2pIface::configureExtListenInternal(
-    bool enable, uint32_t period_in_millis, uint32_t interval_in_millis)
+    uint32_t period_in_millis, uint32_t interval_in_millis)
 {
 	struct wpa_supplicant* wpa_s = retrieveIfacePtr();
 	if (wpas_p2p_ext_listen(wpa_s, period_in_millis, interval_in_millis)) {
@@ -825,8 +823,7 @@
 	return {SupplicantStatusCode::SUCCESS, ""};
 }
 
-SupplicantStatus P2pIface::flushServicesInternal(
-    uint32_t version, const std::string& service_name)
+SupplicantStatus P2pIface::flushServicesInternal()
 {
 	struct wpa_supplicant* wpa_s = retrieveIfacePtr();
 	wpas_p2p_service_flush(wpa_s);
diff --git a/wpa_supplicant/hidl/p2p_iface.h b/wpa_supplicant/hidl/p2p_iface.h
index c83f43b..5c814ae 100644
--- a/wpa_supplicant/hidl/p2p_iface.h
+++ b/wpa_supplicant/hidl/p2p_iface.h
@@ -104,7 +104,7 @@
 	    const hidl_array<uint8_t, 6>& peer_address,
 	    reinvoke_cb _hidl_cb) override;
 	Return<void> configureExtListen(
-	    bool enable, uint32_t period_in_millis, uint32_t interval_in_millis,
+	    uint32_t period_in_millis, uint32_t interval_in_millis,
 	    configureExtListen_cb _hidl_cb) override;
 	Return<void> setListenChannel(
 	    uint32_t channel, uint32_t operating_class,
@@ -130,9 +130,7 @@
 	Return<void> removeUpnpService(
 	    uint32_t version, const hidl_string& service_name,
 	    removeUpnpService_cb _hidl_cb) override;
-	Return<void> flushServices(
-	    uint32_t version, const hidl_string& service_name,
-	    flushServices_cb _hidl_cb) override;
+	Return<void> flushServices(flushServices_cb _hidl_cb) override;
 	Return<void> requestServiceDiscovery(
 	    const hidl_array<uint8_t, 6>& peer_address,
 	    const hidl_vec<uint8_t>& query,
@@ -189,8 +187,7 @@
 	    SupplicantNetworkId persistent_network_id,
 	    const std::array<uint8_t, 6>& peer_address);
 	SupplicantStatus configureExtListenInternal(
-	    bool enable, uint32_t period_in_millis,
-	    uint32_t interval_in_millis);
+	    uint32_t period_in_millis, uint32_t interval_in_millis);
 	SupplicantStatus setListenChannelInternal(
 	    uint32_t channel, uint32_t operating_class);
 	SupplicantStatus setDisallowedFrequenciesInternal(
@@ -208,8 +205,7 @@
 	    uint32_t version, const std::string& service_name);
 	SupplicantStatus removeUpnpServiceInternal(
 	    uint32_t version, const std::string& service_name);
-	SupplicantStatus flushServicesInternal(
-	    uint32_t version, const std::string& service_name);
+	SupplicantStatus flushServicesInternal();
 	std::pair<SupplicantStatus, uint64_t> requestServiceDiscoveryInternal(
 	    const std::array<uint8_t, 6>& peer_address,
 	    const std::vector<uint8_t>& query);
