From: Patrick McHardy <kaber@trash.net>
To: Jarek Poplawski <jarkao2@gmail.com>
Cc: David Miller <davem@davemloft.net>,
netdev@vger.kernel.org, Herbert Xu <herbert@gondor.apana.org.au>
Subject: Re: [PATCH 0/6] Add qdisc->ops->peek() support.
Date: Fri, 17 Oct 2008 16:12:03 +0200 [thread overview]
Message-ID: <48F89D33.9090809@trash.net> (raw)
In-Reply-To: <20081017130333.GA8297@ff.dom.local>
Jarek Poplawski wrote:
> On Fri, Oct 17, 2008 at 02:33:23PM +0200, Patrick McHardy wrote:
>>> @@ -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).
Yes, I misunderstood this, I though the intention was to get
rid of requeue entirely.
>> 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?
Some general thoughts ...
We've never had any systematic checks for useful and non-useful
combination of qdiscs, which is causing a lot of these complications.
Think of all the multiq work that was required to make it work
properly with non-work-conserving qdiscs - while at the same time,
using a non-work-conserving qdisc (which require a global view)
defeats basically all of the benefits.
So it would be really useful to come up with a systematic definition
of valid combinations instead of trying handling lots of purely
theoretical case that don't make sense. One more example - all the
qdiscs implement ->drop(), yet its only needed by CBQ and it doesn't
make any sense at all to use lets say HFSC as child of CBQ.
About this specific case - yes, it would break compatibility for
users using f.i. TBF as child of netem. But if you look at the
netem_enqueue() function, it in fact assumes that the inner qdisc
is a tfifo, so we'd be breaking an already broken case. We can
of course be nice and warn about it for a few releases, but I believe
there is some real potential for simplification that makes it
worth it.
next prev parent reply other threads:[~2008-10-17 14:12 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-16 9:46 [PATCH 0/6] Add qdisc->ops->peek() support Jarek Poplawski
2008-10-16 12:38 ` Patrick McHardy
2008-10-16 13:08 ` Jarek Poplawski
2008-10-16 22:09 ` Jarek Poplawski
2008-10-17 12:33 ` Patrick McHardy
2008-10-17 13:03 ` Jarek Poplawski
2008-10-17 14:12 ` Patrick McHardy [this message]
2008-10-17 20:12 ` [PATCH] pkt_sched: sch_netem: Limit packet re-ordering functionality to tfifo qdisc Jarek Poplawski
2008-10-21 23:36 ` David Miller
2008-10-21 23:51 ` Stephen Hemminger
2008-10-22 5:37 ` Jarek Poplawski
2008-10-22 16:00 ` Patrick McHardy
2008-10-22 16:49 ` Jarek Poplawski
2008-10-22 17:32 ` Patrick McHardy
2008-10-22 17:53 ` [RFC] " Jarek Poplawski
2008-10-22 15:57 ` [PATCH] " Patrick McHardy
2008-10-22 16:00 ` Patrick McHardy
2008-10-17 20:45 ` [PATCH 0/6] Add qdisc->ops->peek() support Jarek Poplawski
2008-10-21 23:43 ` David Miller
2008-10-22 16:01 ` Patrick McHardy
2008-10-22 16:04 ` Patrick McHardy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=48F89D33.9090809@trash.net \
--to=kaber@trash.net \
--cc=davem@davemloft.net \
--cc=herbert@gondor.apana.org.au \
--cc=jarkao2@gmail.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.