Use kpause() instead of DELAY() and sleep a minimum of 1 tick.

This is possible now since softints have a thread context.  It's
also not a very frequent code path.  Addresses ABI issue with delay
(kern/40505).

I'm not entire sure what this delay is meant to accomplish, though.
This commit is contained in:
pooka 2010-08-11 09:36:44 +00:00
parent db61e8e25d
commit 57ec5229b9
1 changed files with 8 additions and 4 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: ip_carp.c,v 1.42 2010/08/10 21:46:12 pooka Exp $ */
/* $NetBSD: ip_carp.c,v 1.43 2010/08/11 09:36:44 pooka Exp $ */
/* $OpenBSD: ip_carp.c,v 1.113 2005/11/04 08:11:54 mcbride Exp $ */
/*
@ -30,7 +30,7 @@
#include "opt_inet.h"
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: ip_carp.c,v 1.42 2010/08/10 21:46:12 pooka Exp $");
__KERNEL_RCSID(0, "$NetBSD: ip_carp.c,v 1.43 2010/08/11 09:36:44 pooka Exp $");
/*
* TODO:
@ -1149,7 +1149,9 @@ carp_send_arp(struct carp_softc *sc)
in = &ifatoia(ifa)->ia_addr.sin_addr;
arprequest(sc->sc_carpdev, in, in, CLLADDR(sc->sc_if.if_sadl));
DELAY(1000); /* XXX */
/* XXX: why does this need to delay? */
kpause("carpdel", false, MIN(1, mstohz(1)), NULL);
}
splx(s);
}
@ -1171,7 +1173,9 @@ carp_send_na(struct carp_softc *sc)
in6 = &ifatoia6(ifa)->ia_addr.sin6_addr;
nd6_na_output(sc->sc_carpdev, &mcast, in6,
ND_NA_FLAG_OVERRIDE, 1, NULL);
DELAY(1000); /* XXX */
/* XXX: why does this need to delay? */
kpause("carpdel6", false, MIN(1, mstohz(1)), NULL);
}
splx(s);
}