summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorshin <shin@FreeBSD.org>2000-02-01 15:49:37 +0000
committershin <shin@FreeBSD.org>2000-02-01 15:49:37 +0000
commit6f79c7e06bf635130575f20941730e8d7164a7c1 (patch)
treea7c23527cadeb976cea347e652b2af4cb455c6e2
parentaa62c35edd5242c433d321df4a93fd25b0a04643 (diff)
downloadFreeBSD-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.c4
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);
OpenPOWER on IntegriCloud