On Mon, 2007-11-06 at 17:44 +0200, Patrick McHardy wrote: > jamal wrote: [..] > > - let the driver shutdown whenever a ring is full. Remember which ring X > > shut it down. > > - when you get a tx interupt or prun tx descriptors, if a ring <= X has > > transmitted a packet (or threshold of packets), then wake up the driver > > (i.e open up). > > > At this point the qdisc might send new packets. What do you do when a > packet for a full ring arrives? >
Hrm... ok, is this a trick question or i am missing the obvious?;-> What is wrong with what any driver would do today - which is: netif_stop and return BUSY; core requeues the packet? > I see three choices: > > - drop it, even though its still within the qdiscs configured limits > - requeue it, which does not work because the qdisc is still active > and might just hand you the same packet over and over again in a > busy loop, until the ring has more room (which has the same worst > case, just that we're sitting in a busy loop now). > - requeue and stop the queue: we're back to where we started since > now higher priority packets will not get passed to the driver. Refer to choice #4 above. The patches are trivial - really; as soon as Peter posts the e1000 change for his version i should be able to cutnpaste and produce one that will work with what i am saying. I am going to try my best to do that this week - i am going to be a little busy and have a few outstanding items (like the pktgen thing) that i want to get out of the way... 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