Date: Wed, 4 Nov 2009 18:20:31 +0000 (UTC) From: Pyun YongHyeon <yongari@FreeBSD.org> To: cvs-src-old@freebsd.org Subject: cvs commit: src/sys/dev/fxp if_fxp.c if_fxpvar.h Message-ID: <200911041820.nA4IKl8l071789@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
yongari 2009-11-04 18:20:31 UTC
FreeBSD src repository
Modified files: (Branch: RELENG_7)
sys/dev/fxp if_fxp.c if_fxpvar.h
Log:
SVN rev 198917 on 2009-11-04 18:20:31Z by yongari
MFC r194573:
Overhaul fxp(4) multicast filter programming. fxp(4) hardwares do
not allow multicast filter programming when controller is busy to
send/receive frames. So it used to mark need_mcsetup bit and defer
multicast filter programming until controller becomes idle state.
To detect when the controller is idle fxp(4) relied on Tx
completion interrupt with NOP command and fxp_start_body and
fxp_intr_body had to see whether pending multicast filter
programming was requested. This resulted in very complex logic and
sometimes it did not work as expected.
Since the controller should be in idle state before any multicast
filter modifications I changed it to reinitialize the controller
whenever multicast filter programming is required. This is the same
way what OpenBSD and NetBSD does. Also I added IFF_DRV_RUNNING
check in ioctl handler so controller would be reinitialized only if
it is absolutely needed.
With this change I guess we can remove fxp(4) DELAY hack in ifioctl
for IPv6 case.
Revision Changes Path
1.266.2.21 +37 -132 src/sys/dev/fxp/if_fxp.c
1.40.2.8 +1 -2 src/sys/dev/fxp/if_fxpvar.h
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200911041820.nA4IKl8l071789>
