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