Deuna queue backing up?

Jim Reid jim at cs.strath.ac.uk
Wed Oct 1 20:36:28 AEST 1986


In article <3839 at brl-smoke.ARPA> craig at loki.bbn.COM (Craig Partridge) writes:
>We are frequently getting ENOBUFS error returns when trying to get out
>our Ethernet interface.  However, we still have free mbufs, so the error
>code must be when the ifp queue is filled (IF_QFULL on line 704).  The
>point is that once we start getting the error, it doesn't seem to go
>away (we've seen it last for as long as half an hour before we got fed
>up and rebooted).
>
>I suspect a concurrency bug that allows the queue to become permanently filled.
>(Our Ethernet sometimes runs near saturation).  But before I go digging, does
>this ring a bell  with anyone (is there a more recent version of the driver)?

There was a bug that caused the DEUNA to stop transmitting packets when
the transmit buffers are full. The fix is below. Perhaps this will cure
the problem?

>> From msdc!akgua!ihnp4!watmath!kwlalonde Fri Jul 11 01:03:30 1986
>> Posted-Date: Thu, 10 Jul 86 15:57:31 edt
>> Received: by ihnp4.ATT.COM id AA21232; 10 Jul 86 21:58:59 CDT (Thu)
>> Received: by watmath; Thu, 10 Jul 86 15:57:31 edt
>> Date: Thu, 10 Jul 86 15:57:31 edt
>> From: Ken Lalonde <ihnp4!watmath!kwlalonde>
>> Message-Id: <8607101957.AA07087 at watmath.uucp>
>> To: paul at msdc.UUCP
>> Subject: Re: 4.2 VAX TCP/IP or driver problem
>> Newsgroups: net.unix-wizards
>> In-Reply-To: <135 at msdc.msdc.UUCP>
>> Organization: U. of Waterloo, Ontario
>> Status: R
>> 
>> We're running Lou Salkind's deuna driver for 4.2BSD.  Occasionally
>> a deuna will just stop transmitting when it's transmit buffers are
>> full.  The following code will give it a poke in that case, to restart
>> transmission.  Context is near the end of function destart.  Hope this helps.
>> 
>> 	...
>> 	if (ds->ds_nxmit != nxmit) {
>> 		ds->ds_nxmit = nxmit;
>> 		if (ds->ds_if.if_flags & IFF_UP)
>> 			addr->pclow = PCSR0_INTE|CMD_PDMD;
>> 	}
>> 	/*
>> 	 * If the xmit ring is full, and we have something
>> 	 * to send, give it a poke.
>> 	 */
>> 	else if (ds->ds_nxmit == NXMT && (ds->ds_if.if_flags & IFF_UP))
>> 		addr->pclow = PCSR0_INTE|CMD_PDMD;
>> }

Hope this helps

		Jim

ARPA:	jim%cs.strath.ac.uk at ucl-cs.arpa, jim at cs.strath.ac.uk
UUCP:	jim at strath-cs.uucp, ...!seismo!mcvax!ukc!strath-cs!jim
JANET:	jim at uk.ac.strath.cs

"JANET domain ordering is swapped around so's there'd be some use for rev(1)!"



More information about the Comp.unix.wizards mailing list