@@ -5509,6 +5509,16 @@ int wpas_dpp_ca_set(struct wpa_supplicant *wpa_s, const char *cmd)
static int wpas_dpp_pb_announce(struct wpa_supplicant *wpa_s, int freq);
static void wpas_dpp_pb_next(void *eloop_ctx, void *timeout_ctx);
+void wpas_dpp_push_button_tx_wait_expire(struct wpa_supplicant *wpa_s)
+{
+ if (!wpa_s->dpp_pb_announcement || wpa_s->dpp_pb_discovery_done)
+ return;
+
+ wpa_printf(MSG_DEBUG, "DPP: Failed to send push button announcement");
+ if (eloop_register_timeout(0, 0, wpas_dpp_pb_next, wpa_s, NULL) < 0)
+ wpas_dpp_push_button_stop(wpa_s);
+}
+
static void wpas_dpp_pb_tx_status(struct wpa_supplicant *wpa_s,
unsigned int freq, const u8 *dst,
@@ -46,5 +46,6 @@ int wpas_dpp_ca_set(struct wpa_supplicant *wpa_s, const char *cmd);
int wpas_dpp_conf_set(struct wpa_supplicant *wpa_s, const char *cmd);
int wpas_dpp_push_button(struct wpa_supplicant *wpa_s, const char *cmd);
void wpas_dpp_push_button_stop(struct wpa_supplicant *wpa_s);
+void wpas_dpp_push_button_tx_wait_expire(struct wpa_supplicant *wpa_s);
#endif /* DPP_SUPPLICANT_H */
@@ -7082,6 +7082,9 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
#ifdef CONFIG_DPP
wpas_dpp_tx_wait_expire(wpa_s);
#endif /* CONFIG_DPP */
+#ifdef CONFIG_DPP3
+ wpas_dpp_push_button_tx_wait_expire(wpa_s);
+#endif /* CONFIG_DPP3 */
#ifdef CONFIG_NAN_USD
wpas_nan_usd_tx_wait_expire(wpa_s);
#endif /* CONFIG_NAN_USD */