aboutsummaryrefslogtreecommitdiff
path: root/sys/net/if.c
diff options
context:
space:
mode:
authorYoshinobu Inoue <shin@FreeBSD.org>2000-02-01 15:49:37 +0000
committerYoshinobu Inoue <shin@FreeBSD.org>2000-02-01 15:49:37 +0000
commit3411310dfb8dd352c3313ebf8898fe1735a26b81 (patch)
treee60a04d601ff82a810d8fd25a3d2dda5420cd3d4 /sys/net/if.c
parent764d1fc491c5961c77d10ef876e2a721adb51fd0 (diff)
downloadsrc-3411310dfb8dd352c3313ebf8898fe1735a26b81.tar.gz
src-3411310dfb8dd352c3313ebf8898fe1735a26b81.zip
Add workaround for fxp issue at interface initialization with IPv6.
Some LAN card chip for fxp is known to cause problem at interface initialization with IPv6 enabled. It happens at some delicate timing. And also, just adding some DELAY before IPv6 address autoconfiguration is known to avoid the problem. Complete fix is changing the driver not to use interrupt at multicast filter initialization, but trying such change in this stage will be dangerous. So I add some DELAY() only inside #ifdef INET6 part, as temporal workaround only for 4.0. Approbed by: jkh Noticed by: Mattias Pantzare <pantzer@ludd.luth.se> Obtained from: openbsd-tech mailing list
Notes
Notes: svn path=/head/; revision=56938
Diffstat (limited to 'sys/net/if.c')
-rw-r--r--sys/net/if.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/net/if.c b/sys/net/if.c
index a2834adc7e10..6a47951c7b08 100644
--- a/sys/net/if.c
+++ b/sys/net/if.c
@@ -60,6 +60,9 @@
/*XXX*/
#include <netinet/in.h>
#include <netinet/in_var.h>
+#ifdef INET6
+#include <machine/clock.h> /* XXX: temporal workaround for fxp issue */
+#endif
#endif
/*
@@ -972,6 +975,7 @@ ifioctl(so, cmd, data, p)
if ((oif_flags ^ ifp->if_flags) & IFF_UP) {
#ifdef INET6
+ DELAY(100);/* XXX: temporal workaround for fxp issue*/
if (ifp->if_flags & IFF_UP) {
int s = splimp();
in6_if_up(ifp);