diff options
author | shin <shin@FreeBSD.org> | 2000-02-01 15:49:37 +0000 |
---|---|---|
committer | shin <shin@FreeBSD.org> | 2000-02-01 15:49:37 +0000 |
commit | 6f79c7e06bf635130575f20941730e8d7164a7c1 (patch) | |
tree | a7c23527cadeb976cea347e652b2af4cb455c6e2 | |
parent | aa62c35edd5242c433d321df4a93fd25b0a04643 (diff) | |
download | FreeBSD-src-6f79c7e06bf635130575f20941730e8d7164a7c1.zip FreeBSD-src-6f79c7e06bf635130575f20941730e8d7164a7c1.tar.gz |
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
-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 a2834ad..6a47951c 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); |