[PATCH] Fix BSS age underflow

Krishna Chaitanya chaitanya.mgit at gmail.com
Tue Jan 10 09:13:51 PST 2023

On Tue, Jan 10, 2023 at 10:28 PM Johannes Berg
<johannes at sipsolutions.net> wrote:
> On Tue, 2023-01-10 at 01:39 +0530, chaitanya.mgit at gmail.com wrote:
> > From: Krishna T <krishna.t at nordicsemi.no>
> >
> > While checking for stale BSSes, the current time is used as a basis and
> > then based on age the stale check time is calculated, but if this is
> > done too early in the boot and if either BOOTTIME/MONOTONIC (the one
> > Zephyr uses by default) are used then the stale check time underflows
> > and goes to future causing active BSS entries in the scan to be treated
> > as stale and flushed.
> >
> > Fix this by adding a check before calculating stale time and ignore this
> > check till the system reaches the BSS expiration time (this would never
> > happen with REALTIME clock).
> >
> Makes sense, the REALTIME mention kind of threw me off at first though.
:), I was trying to convey that in the case of REALTIME, as we use absolute time
-180seconds is still in the past, assuming there are no jumps.

> But I think there are probably more cases? Maybe we need some kind of
> helper for the actual check, something like "check_age(item_ts, now_ts,
> age)"?
Sure, but this patch should work with most clock_id's, only case I can think
of is, time jumps in the case of REALTIME, but I guess that affects most callers
that use os_reltime_before?

In which case I would suggest using MONOTONIC os_get_rel_time or adding a
new APIs os_get_montime or passing clock_id to os_get_rel_time?

More information about the Hostap mailing list