aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/ppbus
diff options
context:
space:
mode:
authorAndre Oppermann <andre@FreeBSD.org>2004-08-27 18:33:08 +0000
committerAndre Oppermann <andre@FreeBSD.org>2004-08-27 18:33:08 +0000
commit3161f583cab80c7b985abc00c709427f05f0acba (patch)
tree5e40bb2ff1fccfd1425f4b8ada947f22f8df6605 /sys/dev/ppbus
parent3713458b993a312e8739a204a2a7eaa1d711b9f8 (diff)
downloadsrc-3161f583cab80c7b985abc00c709427f05f0acba.tar.gz
src-3161f583cab80c7b985abc00c709427f05f0acba.zip
Apply error and success logic consistently to the function netisr_queue() and
its users. netisr_queue() now returns (0) on success and ERRNO on failure. At the moment ENXIO (netisr queue not functional) and ENOBUFS (netisr queue full) are supported. Previously it would return (1) on success but the return value of IF_HANDOFF() was interpreted wrongly and (0) was actually returned on success. Due to this schednetisr() was never called to kick the scheduling of the isr. However this was masked by other normal packets coming through netisr_dispatch() causing the dequeueing of waiting packets. PR: kern/70988 Found by: MOROHOSHI Akihiko <moro@remus.dti.ne.jp> MFC after: 3 days
Notes
Notes: svn path=/head/; revision=134391
Diffstat (limited to 'sys/dev/ppbus')
-rw-r--r--sys/dev/ppbus/if_plip.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/dev/ppbus/if_plip.c b/sys/dev/ppbus/if_plip.c
index 67d8be9ffd25..5b05812ed551 100644
--- a/sys/dev/ppbus/if_plip.c
+++ b/sys/dev/ppbus/if_plip.c
@@ -510,7 +510,7 @@ lp_intr (void *arg)
if (top) {
if (sc->sc_if.if_bpf)
lptap(&sc->sc_if, top);
- netisr_queue(NETISR_IP, top);
+ netisr_queue(NETISR_IP, top); /* mbuf is free'd on failure. */
}
goto done;
}
@@ -555,7 +555,7 @@ lp_intr (void *arg)
if (top) {
if (sc->sc_if.if_bpf)
lptap(&sc->sc_if, top);
- netisr_queue(NETISR_IP, top);
+ netisr_queue(NETISR_IP, top); /* mbuf is free'd on failure. */
}
}
goto done;