diff --git a/src/miracled-link.c b/src/miracled-link.c index 8ad6712..c77f8ae 100644 --- a/src/miracled-link.c +++ b/src/miracled-link.c @@ -184,7 +184,7 @@ static int link_wifi_startup_fn(sd_event_source *source, r = link_wifi_start(l); if (r < 0) { - if (wifi_is_open(l->w)) { + if (wifi_is_open(l->w) || ++l->wpa_startup_attempts >= 5) { log_error("cannot start wifi on link %s", l->name); link_free(l); return 0; diff --git a/src/miracled.h b/src/miracled.h index 6cf2bb6..486b799 100644 --- a/src/miracled.h +++ b/src/miracled.h @@ -97,6 +97,7 @@ struct link { struct wifi *w; sd_event_source *wpa_child_source; sd_event_source *wpa_startup_source; + unsigned int wpa_startup_attempts; bool running : 1; };