[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <466D6DF6.9060300@trash.net>
Date: Mon, 11 Jun 2007 17:44:54 +0200
From: Patrick McHardy <kaber@...sh.net>
To: hadi@...erus.ca
CC: "Waskiewicz Jr, Peter P" <peter.p.waskiewicz.jr@...el.com>,
davem@...emloft.net, netdev@...r.kernel.org, jeff@...zik.org,
"Kok, Auke-jan H" <auke-jan.h.kok@...el.com>
Subject: Re: [PATCH] NET: Multiqueue network device support.
jamal wrote:
> On Mon, 2007-11-06 at 17:12 +0200, Patrick McHardy wrote:
>
>>Worst cast is (n - 2) * (m - 1) + 1 full sized packet transmission
>>times.
>>
>>You can do the math yourself, but we're talking about potentially
>>a lot of packets.
>
>
> I agree if you use the strategy of "a ring shutdown down" implies
> "dont wake up until the ring that caused the shutdown opens up"
> What i am saying below is to make a change to that strategy.
Glad we agree on something. Now all I have to do is convince you that
a change to this strategy is not a good idea :)
>>>If you throw the burden to the driver (as i am recommending in all my
>>>arguements so far), it should open up sooner based on priorities.
>>>I didnt wanna bring this earlier because it may take the discussion in
>>>the wrong direction.
>>>So in your example if n-1 shuts down the driver, then it is upto to the
>>>driver to open it up if any higher prio packet makes it out.
>>
>>
>>How could it do that? n-1 is still completely full and you don't
>>know what the next packet is going to be. Are you proposing to
>>simply throw the packet away in the driver even though its within
>>the configured limits of the qdisc?
>
>
> No no Patrick - i am just saying the following:
> - 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?
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.
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists