On Fri, 2007-11-05 at 10:52 +0530, Krishna Kumar2 wrote: > I didn't try to optimize the driver to take any real advantage, I coded it > as simply as : > > top: > next = skb->skb_flink; > Original driver code here, or another option is to remove the locking > and put it before the "top:" above, no other changes. > skb = next; > if (skb) > goto top; > This way, the diffs are minimal. However, driver experts might know of some > tricks to optimize this, since most drivers have a hundred checks before > sending one skb, and whether some optimization to avoid that for each skb > is possible. >
You will need to at some point, no big deal in order to get things in place first- the simple example of DMA i talked about yesterday is a simple example. i.e you avoid kicking the DMA until you have queued all in the ring (as Gagan pointed out, kicking the DMA is a PCI IO write) I am sure there are gazillion others. > This is a good idea, I will look at your slides to see what this exactly > is. I will try to post my patches updated to the latest net-2.6 kernel before you come back on monday. > However, even with this check, drivers will return error, eg trylock failed > or, like the e1000 has - fifo_workaround failures. But I still think it > will significantly reduce the failures. Yes, this is what i refered to as the "many tunables" and led to the claim that you may have to re-write the whole tx path in my posting. > Right now, I get a lot of requeue's. requeues are a good sign ;-> cheers, jamal - 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