Skip to contentSkip to conversation

Add qdisc->ops->peek() support.

PATCH RESEND In review Jarek Poplawski 2 participants 3 messages Oct 30, 2008 – Oct 31, 2008

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

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(-)
#1 lore raw

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.

maintainer
#2 lore raw
In reply to Jarek Poplawski

From: 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.