From owner-freebsd-stable Wed Feb 6 12: 5:41 2002 Delivered-To: freebsd-stable@freebsd.org Received: from vega.dhis.co.it.pt (a213-22-99-40.netcabo.pt [213.22.99.40]) by hub.freebsd.org (Postfix) with ESMTP id 7467A37B41D; Wed, 6 Feb 2002 12:05:26 -0800 (PST) Received: (from nsubtil@localhost) by vega.dhis.co.it.pt (8.11.3/8.11.3) id g16K5Ob15233; Wed, 6 Feb 2002 20:05:24 GMT (envelope-from nsubtil) Date: Wed, 6 Feb 2002 20:05:24 +0000 From: Nuno Subtil To: freebsd-hackers@freebsd.org, freebsd-stable@freebsd.org Subject: Re: Whats with this -> sendto: No buffer space available Message-ID: <20020206200524.A14992@vega.dhis.co.it.pt> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i Sender: owner-freebsd-stable@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG Karl Dietz asked for this to be forwarded to the lists, so here it is. ----- Forwarded message from Karl Dietz ----- From: "Karl Dietz" Date: Wed, 6 Feb 2002 19:02:51 +0100 To: "Jonathan Hanna" , Subject: Re: Whats with this -> sendto: No buffer space available X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.50.4807.1700 X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4910.0300 Meanwhile I have browsed through the code of ep and vx. > 3) in ep_intr: > > rescan: > > while ((status = inw(BASE + EP_STATUS)) & S_5_INTS) { > > /* first acknowledge all interrupt sources */ > outw(BASE + EP_COMMAND, ACK_INTR | (status & S_MASK)); > > if (status & (S_RX_COMPLETE | S_RX_EARLY)) { > old_status = status; > epread(sc); > continue; > } > > It seems that if an RX is done then any TX conditions are lost as an ack of all > sources has been done. I have verified that on the next look after the epread > TX conditions have disappeared without being handled. If OACTIVE is set, the vx driver (which is to be folded back into ep) has a more verbose comment on the code in question: /* * Acknowledge any interrupts. It's important that we do this * first, since there would otherwise be a race condition. * Due to the i386 interrupt queueing, we may get spurious * interrupts occasionally. */ But the handler is written in a way that tx interupts get lost only if a card failure occurs. Anyway the modified driver has transfered more than 4 million packets already without a problem (two interfaces, some flood pings, and the whole internet traffic) Regards, Karl PS: Can one of you forward this to the list? ----- End forwarded message ----- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-stable" in the body of the message