Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 18 Jun 2006 12:40:44 -0700
From:      John-Mark Gurney <gurney_j@resnet.uoregon.edu>
To:        John Polstra <jdp@polstra.com>
Cc:        freebsd-net@FreeBSD.org, Robert Watson <rwatson@FreeBSD.org>
Subject:   Re: IF_HANDOFF vs. IFQ_HANDOFF
Message-ID:  <20060618194044.GC1142@funkthat.com>
In-Reply-To: <XFMail.20060615091807.jdp@polstra.com>
References:  <20060615115738.J2512@fledge.watson.org> <XFMail.20060615091807.jdp@polstra.com>

next in thread | previous in thread | raw e-mail | index | archive | help
John Polstra wrote this message on Thu, Jun 15, 2006 at 09:18 -0700:
> in the HW but have not yet completed.  When the completion interrupt
> comes in, the driver is supposed to check the if_snd queue for more
> mbufs and process them.  Only when the transmit side of the HW goes
> totally idle should IFF_OACTIVE be cleared again.  Most of our drivers
> set the flag only when they run out of transmit descriptors (i.e.,
> practically never), which is just plain wrong.

But the problem is that for small packets, this can mean that there
will be a delay in handling the ring if we wait to process packets
once the tx ring is empty.. if we ever want to max out gige w/ 64byte
packets, we have to clear OACTIVE whenever tx approches running out
of packets before we can send this.. In most cases we don't know how
long that is (since we don't keep track of packet sizes, etc), so it's
easiest/best to clear it whenever the tx ring is not full...

Please read the archive of when I changed if_re to use this "correct"
intereptation of OACTIVE and the fall out because of it first...

-- 
  John-Mark Gurney				Voice: +1 415 225 5579

     "All that I will do, has been done, All that I have, has not."



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060618194044.GC1142>