On Thu, Nov 20, 2014 at 11:38 AM, Ryota Ozaki <ozak...@netbsd.org> wrote:
> Actually FreeBSD seems to have a callout for each interface. Even more
> they killed the common if_watchdog facility and each driver has its own.

What happens if many (e.g. 1,000) virtual ifs are present?

> Anyway here is a patch:
> http://www.netbsd.org/~ozaki-r/watchdog-callout-per-if.diff
> (it's on top of -current HEAD).

        if (ifp->if_timer != 0 && --ifp->if_timer != 0)
                (*ifp->if_watchdog)(ifp);

If I read correctly, if_watchdog needs to be called only when if_timer
becomes 1 -> 0.  So this should be:

        if (ifp->if_timer != 0 && --ifp->if_timer == 0)
                (*ifp->if_watchdog)(ifp);

Reply via email to