Date: Tue, 4 Jun 2002 11:44:51 -0700 From: Luigi Rizzo <rizzo@icir.org> To: Lars Eggert <larse@ISI.EDU> Cc: net@FreeBSD.ORG Subject: Re: Dummynet WFQ Message-ID: <20020604114451.A89759@iguana.icir.org> In-Reply-To: <3CFCEF1A.8090807@isi.edu>; from larse@ISI.EDU on Tue, Jun 04, 2002 at 09:47:22AM -0700 References: <3CFB9BC4.9080506@isi.edu> <20020603122913.A78688@iguana.icir.org> <3CFCE101.3040108@isi.edu> <3CFCE1CF.2070001@isi.edu> <20020604090719.A88701@iguana.icir.org> <3CFCE935.8090603@isi.edu> <20020604092547.B88852@iguana.icir.org> <3CFCEF1A.8090807@isi.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Jun 04, 2002 at 09:47:22AM -0700, Lars Eggert wrote: > Luigi Rizzo wrote: > >>> BTW if you use polling, you have to be careful in the place > >>> where you put the call to if_tx_rdy() to make sure that it > >>> catches the tx queue becoming empty only once and not at every > >>> polling cycle. > >> > >> How about at the very end of sis_intr(), as a new "else" branch of > >> the queue length check, like this: > > > > except that sis_intr is never called when you use polling :( > > Doh. You're right, of course. > > A new "else" branch of the corresponding "if" in sis_poll() would fire > on each poll while the queue is empty, so I guess I'll put the call at > the end of the "while" loop in sis_txeof(), after the mbuf is freed. and _if_ the mbuf is freed. In any case it is more a matter of efficiency than of correctness. Even if you call repeatedly if_tx_rdy() when the device queue is empty (and the pipe is idle, otherwise at the first occurrence it will transmit a packet making the transmit queue not empty anymore) the pipe will not 'accumulate' credits. cheers luigi To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020604114451.A89759>