diff options
author | Yoshinobu Inoue <shin@FreeBSD.org> | 2000-02-01 15:49:37 +0000 |
---|---|---|
committer | Yoshinobu Inoue <shin@FreeBSD.org> | 2000-02-01 15:49:37 +0000 |
commit | 3411310dfb8dd352c3313ebf8898fe1735a26b81 (patch) | |
tree | e60a04d601ff82a810d8fd25a3d2dda5420cd3d4 /sys/net/if.c | |
parent | 764d1fc491c5961c77d10ef876e2a721adb51fd0 (diff) | |
download | src-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.c | 4 |
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); |