Scott Feldman wrote:
I was going to say that eepro100's speedo_rx_link() does the same DMA
abuse as e100, but then I noticed one little detail: eepro100 sets both
EL (end of list) and S (suspend) bits in the RFD as it chains it to the
RFD list. e100 was only setting the EL bit. Hmmm, that's
interesting. That means that if HW reads a RFD with the S-bit set,
it'll process that RFD and then suspend the receive unit. The receive
unit will resume when SW clears the S-bit. There is no need for SW to
restart the receive unit. Which means a lot of the receive unit state
tracking code in the driver goes away.
So here's a patch against 2.6.14. (Sorry for inlining it; the mailer
I'm using now will mess with the word wrap). I can't test this on
XScale (unless someone has an e100 module for Gumstix :). It should be
doing exactly what eepro100 does with RFDs. I don't believe this
change will introduce a performance hit because the S-bit and EL-bit go
hand-in-hand meaning if we're going to suspend because of the S- bit,
we're on the last resource anyway, so we'll have to wait for SW to
replenish.
I applied this to the new "e100-sbit" branch of netdev-2.6.git, which
will auto-propagate to Andrew's -mm tree.
Let's see what testers think... eepro100 is growing mold, and I would
love to get rid of it at this point.
Any ARM testers out there?
Jeff
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html