FT pull
harisha ja
harisha.ja at gmail.com
Sat Aug 26 11:22:33 PDT 2023
Hi team,
With current code I see that as soon as we receive ft auth, if the
pmkr1 entry is not present we send the pull request and start the
timer like below.
tsecs = sm->wpa_auth->conf.rkh_pull_timeout / 1000;
tusecs = (sm->wpa_auth->conf.rkh_pull_timeout % 1000) * 1000;
eloop_register_timeout(tsecs, tusecs, wpa_ft_expire_pull, sm, NULL);
And we do this again if we receive the auth message again and we do
this till ft_pending_pull_left_retries is 0 or less than 0.
And when a timeout happens we cancel all the timers like below.
static void wpa_ft_expire_pull(void *eloop_ctx, void *timeout_ctx)
{
struct wpa_state_machine *sm = eloop_ctx;
wpa_printf(MSG_DEBUG, "FT: Timeout pending pull request for " MACSTR,
MAC2STR(sm->addr));
if (sm->ft_pending_pull_left_retries <= 0)
wpa_ft_block_r0kh(sm->wpa_auth, sm->r0kh_id, sm->r0kh_id_len);
/* cancel multiple timeouts */
eloop_cancel_timeout(wpa_ft_expire_pull, sm, NULL);
ft_finish_pull(sm);
}
My questions are
a) Why for the same client we run multiple timers ?
b) Why are we stopping all the timers in case of first timeout only ?
Thanks & Regards,
Harisha J A
More information about the Hostap
mailing list