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
This commit is contained in:
Yoshinobu Inoue 2000-02-01 15:49:37 +00:00
parent 764d1fc491
commit 3411310dfb
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=56938

View File

@ -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);