Subject: Re: [PATCH] NET: Multiqueue network device support.

From: jamal <[email-masked]>
Date: Mon, 11 Jun 2007 17:35:18 -0400

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