Date: Thu, 23 Aug 2012 13:50:43 -0700 From: YongHyeon PYUN <pyunyh@gmail.com> To: Peter Jeremy <peter@rulingia.com> Cc: freebsd-current@freebsd.org Subject: Re: dhclient cause up/down cycle after 239356 ? Message-ID: <20120823205043.GC3270@michelle.cdnetworks.com> In-Reply-To: <20120823013534.GA31015@server.rulingia.com> References: <20120821095527.GA33206@hell.ukr.net> <20120822171253.GB3300@michelle.cdnetworks.com> <20120822172822.GA52909@hell.ukr.net> <201208221535.01598.jhb@freebsd.org> <20120823013534.GA31015@server.rulingia.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Aug 23, 2012 at 11:35:34AM +1000, Peter Jeremy wrote: > On 2012-Aug-22 15:35:01 -0400, John Baldwin <jhb@freebsd.org> wrote: > >Hmm. Perhaps we could use a debouncer to ignore "short" link flaps? Kind of > >gross (and OpenBSD doesn't do this). For now this change basically ignores > >link up events if they occur with 5 seconds of the link down event. The 5 is > >hardcoded which is kind of yuck. > > I'm also a bit concerned about this for similar reasons to adrian@. > We need to distinguish between short link outages caused by (eg) a > switch admin reconfiguring the switch (which needs the lease to be > re-checked) and those caused by broken NICs which report link status > changes when they are touched. Maybe an alternative is to just ignore > link flaps when they occur within a few seconds of a script_go(). > (And/or make the ignore timeout configurable). > > Apart from fxp(4), does anyone know how many NICs are similarly > broken? FreeBSD used to blindly call driver's if_init() in ether_ioctl() whenever an IP address is assigned to interface. This results in calling foo_init in a driver such that controller/link reset happens after IP address assignment. I tried to fix many ethernet drivers in tree to ignore redundant foo_init() call by checking whether this foo_init() call is the very first time initialization of interface. Both NetBSD/OpenBSD seems to not call if_init() if the driver is already running. Because some controllers(e.g. fxp(4)) may require full controller reset to make multicast work, I couldn't follow their approach. I still don't know what other drivers except fxp(4) require full controller reset. There are too many old ethernet drivers I don't have access. Another reason why fxp(4) requires redundant controller reset is flow control support of the driver. Due to hardware limitation, MAC configuration for negotiated link's flow control parameters also requires controller reset. > > Does anyone know why this issue doesn't bite OpenBSD? Does it have I guess OpenBSD's fxp(4) has to reset controller to update multicast filter but it does not support flow control for fxp(4) yet so OpenBSD may see less number of link flips than that of FreeBSD. > a work-around to avoid resetting the link, not report link status > changes or just no-one has noticed the issue? > > BTW to jhb: Can you check your mailer's list configuration. You > appear to be adding <freebsd-current@freebsd.org> and leaving > <current@freebsd.org> in the Cc list. > > -- > Peter Jeremy
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120823205043.GC3270>