Thread (21 messages) 21 messages, 4 authors, 2008-10-22

Re: [PATCH 0/6] Add qdisc->ops->peek() support.

From: Jarek Poplawski <hidden>
Date: 2008-10-17 13:03:40

On Fri, Oct 17, 2008 at 02:33:23PM +0200, Patrick McHardy wrote:
Jarek Poplawski wrote:
quoted
Patrick McHardy wrote, On 10/16/2008 02:38 PM:
quoted
Jarek Poplawski wrote:
...
quoted
quoted
PS: after this patchset only netem_enqueue() needs qdisc->requeue(),
but I hope this won't take too long.
Assuming work-conserving qdiscs are used with netem, the currently
code will always send out a reorder packet immediately. This behaviour
is trivial to implement without ->requeue. The problematic case is
non-work-conserving inner qdiscs, but that doesn't seem important
at all since you'd usually add it as parent of netem, which still
works.
How about something like this (example only)?
@@ -233,7 +233,9 @@ static int netem_enqueue(struct sk_buff *skb, struct Qdisc *sch)
 		 */
 		cb->time_to_send = psched_get_time();
 		q->counter = 0;
-		ret = q->qdisc->ops->requeue(skb, q->qdisc);
+		q->qdisc->flags |= TCQ_F_REQUEUE;
+		ret = qdisc_equeue(skb, q->qdisc);
+		q->qdisc->flags &= ~TCQ_F_REQUEUE;
Well, the inner qdisc would still need to logic to order packets
apprioriately.
I'm not sure I was understood: the idea is to do something like
in this example in tfifo_enqueue() in all leaf qdiscs like fifo
etc. too, so to redirect their ->enqueue() to their ->requeue()
which usually is qdisc_requeue() (or to it directly if needed).
Its probably not that hard, but as I said, I don't
think its necessary at all. It only makes a difference with a
non-work-conserving inner qdisc, but a lot of the functionality of
netem requires the inner tfifo anyways and rate-limiting is usually
done on top of netem. So I would suggest so either hard-wire the
tfifo qdisc or at least make the assumption that inner qdiscs are
work-conserving.
Of course, I can do it like this, but wouldn't it break backward
compatibility for some users?

Thanks,
Jarek P.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help