IF_HANDOFF vs. IFQ_HANDOFF
John-Mark Gurney
gurney_j at resnet.uoregon.edu
Sun Jun 18 19:40:50 UTC 2006
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."
More information about the freebsd-net
mailing list