Add qdisc->ops->peek() support.
Subsystems (2)
cover Add qdisc->ops->peek() support.
[Subject: Re: [PATCH 00/14]: Killing qdisc->ops->requeue().] On Tue, Oct 14, 2008 at 10:44:13PM +0200, Patrick McHardy wrote:
...
Quoted 10 lines
I think we really need a peek operation since most qdiscs do have some internal priorization. The question is whether all qdiscs need it; I tend to think no. Plugging two non-work-conserving qdiscs together doesn't make much sense, so we could just prevent this. This means we would only need to add ->peek support to the work-conserving qdiscs, which looks pretty easy in all cases. We actually don't even have to prevent plugging two non-work-conserving qdiscs, the ones that need the peek operation could just check whether the inner qdisc supports it.
Quoted 5 lines
Just as a demonstration how easy adding a peek operation to the work-conserving qdiscs actually is. It doesn't need to keep or change any internal state in many cases thanks to the guarantee that the packet will either be dequeued or, if another packet arrives, the upper qdisc will immediately ->peek again to reevaluate the state.
So here is a re-try.
PATCH 6/6 adds my simple idea not to prevent even nonsense configs. It is optional.
This resend is redone against current net-next with slightly changed patches 3/6 (check added in register_qdisc()) and 4/6 (teql_peek() made nonfunctional), according to Patric's suggestions, I hope.
Thanks,
Jarek P.
PS: after this patchset only netem_enqueue() needs qdisc->requeue(), but this will be handled by a separate patch.
include/net/sch_generic.h | 29 +++++++++++++++++++++++++++++ net/sched/sch_api.c | 12 ++++++++++++ net/sched/sch_atm.c | 23 ++++++++++++++++++----- net/sched/sch_blackhole.c | 1 + net/sched/sch_cbq.c | 1 + net/sched/sch_dsmark.c | 10 ++++++++++ net/sched/sch_fifo.c | 2 ++ net/sched/sch_generic.c | 16 ++++++++++++++++ net/sched/sch_gred.c | 1 + net/sched/sch_hfsc.c | 15 ++++----------- net/sched/sch_htb.c | 1 + net/sched/sch_multiq.c | 29 +++++++++++++++++++++++++++++ net/sched/sch_netem.c | 15 +++++++-------- net/sched/sch_prio.c | 14 ++++++++++++++ net/sched/sch_red.c | 9 +++++++++ net/sched/sch_sfq.c | 12 ++++++++++++ net/sched/sch_tbf.c | 13 ++++++------- net/sched/sch_teql.c | 8 ++++++++ 18 files changed, 180 insertions(+), 31 deletions(-)
On Thu, Oct 30, 2008 at 01:05:18PM +0000, Jarek Poplawski wrote:
...
Quoted 2 lines
PATCH 6/6 adds my simple idea not to prevent even nonsense configs. It is optional.
Actually, after a below mentioned change in patch 3/6 this patch isn't optional anymore.
Quoted 3 lines
This resend is redone against current net-next with slightly changed patches 3/6 (check added in
register_qdisc()) and 4/6 (teql_peek()made nonfunctional), according to Patric's suggestions, I hope.
Sorry for misspelling.
Jarek P.
David Miller
maintainerFrom: Jarek Poplawski <[email protected]>
Date: Thu, 30 Oct 2008 13:05:18 +0000
Quoted 8 lines
So here is a re-try.
PATCH 6/6 adds my simple idea not to prevent even nonsense configs. It is optional.
This resend is redone against current net-next with slightly changed patches 3/6 (check added in
register_qdisc()) and 4/6 (teql_peek()made nonfunctional), according to Patric's suggestions, I hope.
All applied, thanks a lot Jarek.