diff --git a/src/ap/sta_info.c b/src/ap/sta_info.c index 3eca82d59..bb4321892 100644 --- a/src/ap/sta_info.c +++ b/src/ap/sta_info.c @@ -370,6 +370,13 @@ void ap_handle_timer(void *eloop_ctx, void *timeout_ctx) * but do not disconnect the station now. */ next_time = hapd->conf->ap_max_inactivity + fuzz; + } else if (inactive_sec == -ENOENT) { + wpa_msg(hapd->msg_ctx, MSG_DEBUG, + "Station " MACSTR " has lost its driver entry", + MAC2STR(sta->addr)); + + if (hapd->conf->skip_inactivity_poll) + sta->timeout_next = STA_DISASSOC; } else if (inactive_sec < hapd->conf->ap_max_inactivity) { /* station activity detected; reset timeout state */ wpa_msg(hapd->msg_ctx, MSG_DEBUG, diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index c180f15d8..e278c87a5 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -5219,6 +5219,8 @@ static int i802_get_inact_sec(void *priv, const u8 *addr) data.inactive_msec = (unsigned long) -1; ret = i802_read_sta_data(priv, &data, addr); + if (ret == -ENOENT) + return -ENOENT; if (ret || data.inactive_msec == (unsigned long) -1) return -1; return data.inactive_msec / 1000;