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:
parent
764d1fc491
commit
3411310dfb
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue