tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: struct ifnet and ifaddr handling [was: Re: Making global variables of if.c MPSAFE]



On Thu, Nov 20, 2014 at 11:51 AM, Masao Uebayashi <uebayasi%gmail.com@localhost> wrote:
> On Thu, Nov 20, 2014 at 11:38 AM, Ryota Ozaki <ozaki-r%netbsd.org@localhost> 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?

AFAIK, there is no virtual (pseudo) ifs that use watchdog for now.
If there will be, that's the time to move the if_watchdog facility
to each driver and let each driver has just one callout that
serve theirs.

>
>> 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);

You're right, it's my fault.

Fixed: http://www.netbsd.org/~ozaki-r/watchdog-callout-per-if.diff

Thanks,
  ozaki-r


Home | Main Index | Thread Index | Old Index