Apparent fxp regression in FreeBSD 8.4-RC3
YongHyeon PYUN
pyunyh at gmail.com
Mon May 27 04:39:38 UTC 2013
On Sun, May 26, 2013 at 08:38:41PM +0900, YongHyeon PYUN wrote:
> On Fri, May 24, 2013 at 04:36:46PM +0900, Hiroki Sato wrote:
> > Hiroki Sato <hrs at FreeBSD.org> wrote
> > in <20130524.162926.395058052118975996.hrs at allbsd.org>:
> >
> > hr> YongHyeon PYUN <pyunyh at gmail.com> wrote
> > hr> in <20130524054720.GA1496 at michelle.cdnetworks.com>:
> > hr>
> > hr> A workaround is specifying the following line in rc.conf:
> > hr>
> > hr> ifconfig_fxp0="DHCP media 100baseTX mediaopt full-duplex"
> >
> > Hmm, I guess this can happen on other NICs when the link negotiation
> > causes a link-state flap. Is it true?
>
> Probably not. AFAIK fxp(4) is the only controller that requires two
> full resets to support flow control. Multicast programming for
> fxp(4) also requires full controller reset so trying to renew its
> existing lease for fxp(4) looks wrong to me.
>
After reading code again, I think the dhclient change may affect
all controllers that don't have protection against multiple
initialization of upper stack. if_init() of driver is called
whenever an IP address is assigned to an interface. The stack could
be changed to call if_init() only when IFF_DRV_RUNNING flag is not
set but that would break old drivers which may require full
controller reset for multicast filter reprogramming. I also guess
there may be several drivers that do not implement reinitialization
protection in arm/mips.
It seems fxp(4)'s simple protection against unnecessary controller
initialization does not work well due to the limitation of
controller. We may be able to improve fxp(4) case but other
old/buggy drivers should be fixed too.
More information about the freebsd-stable
mailing list