From 3161f583cab80c7b985abc00c709427f05f0acba Mon Sep 17 00:00:00 2001 From: Andre Oppermann Date: Fri, 27 Aug 2004 18:33:08 +0000 Subject: 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 MFC after: 3 days --- sys/dev/hfa/fore_receive.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'sys/dev/hfa') diff --git a/sys/dev/hfa/fore_receive.c b/sys/dev/hfa/fore_receive.c index 5d89522908d3b..c07eee5e9600e 100644 --- a/sys/dev/hfa/fore_receive.c +++ b/sys/dev/hfa/fore_receive.c @@ -480,7 +480,7 @@ retry: /* * Schedule callback */ - if (! netisr_queue(NETISR_ATM, mhead)) { + if (netisr_queue(NETISR_ATM, mhead)) { /* (0) on success. */ fup->fu_stats->st_drv.drv_rv_ifull++; goto free_ent; } -- cgit v1.3