Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!mcvax!ukc!dcl-cs!strath-cs!jim From: jim@cs.strath.ac.uk (Jim Reid) Newsgroups: net.unix-wizards Subject: Re: Deuna queue backing up? Message-ID: <277@stracs.cs.strath.ac.uk> Date: Wed, 1-Oct-86 06:36:28 EDT Article-I.D.: stracs.277 Posted: Wed Oct 1 06:36:28 1986 Date-Received: Tue, 7-Oct-86 23:07:52 EDT References: <3839@brl-smoke.ARPA> Reply-To: jim@cs.strath.ac.uk (Jim Reid) Organization: Department of Computer Science at Strathclyde University, UK. Lines: 58 In article <3839@brl-smoke.ARPA> craig@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 >> Message-Id: <8607101957.AA07087@watmath.uucp> >> To: paul@msdc.UUCP >> Subject: Re: 4.2 VAX TCP/IP or driver problem >> Newsgroups: net.unix-wizards >> In-Reply-To: <135@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@ucl-cs.arpa, jim@cs.strath.ac.uk UUCP: jim@strath-cs.uucp, ...!seismo!mcvax!ukc!strath-cs!jim JANET: jim@uk.ac.strath.cs "JANET domain ordering is swapped around so's there'd be some use for rev(1)!"