From: Stephen Hemminger <shemminger@vyatta.com>
To: Jarek Poplawski <jarkao2@gmail.com>
Cc: David Miller <davem@davemloft.net>, netdev@vger.kernel.org
Subject: Re: [PATCH 04/14] sch_netem: Use requeue list instead of ops->requeue()
Date: Tue, 14 Oct 2008 08:22:35 -0700 [thread overview]
Message-ID: <20081014082235.10b46637@extreme> (raw)
In-Reply-To: <20081014095349.GE10804@ff.dom.local>
On Tue, 14 Oct 2008 09:53:49 +0000
Jarek Poplawski <jarkao2@gmail.com> wrote:
> -------- Original Message --------
> Subject: [PATCH 5/9]: sch_netem: Use requeue list instead of ops->requeue()
> Date: Mon, 18 Aug 2008 01:37:02 -0700 (PDT)
> From: David Miller <davem@davemloft.net>
>
> --------------->
> From: David Miller <davem@davemloft.net>
> sch_netem: Use requeue list instead of ops->requeue()
>
> This code just wants to make this packet the "front" one, and that's
> just as simply done by queueing to the ->requeue list.
>
> Signed-off-by: Jarek Poplawski <jarkao2@gmail.com>
> ---
> net/sched/sch_netem.c | 11 +++--------
> 1 files changed, 3 insertions(+), 8 deletions(-)
>
> diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c
> index cc4d057..5ca92d9 100644
> --- a/net/sched/sch_netem.c
> +++ b/net/sched/sch_netem.c
> @@ -233,7 +233,8 @@ 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);
> + __skb_queue_tail(&q->qdisc->requeue, skb);
> + ret = NET_XMIT_SUCCESS;
> }
>
> if (likely(ret == NET_XMIT_SUCCESS)) {
> @@ -295,13 +296,7 @@ static struct sk_buff *netem_dequeue(struct Qdisc *sch)
> return skb;
> }
>
> - if (unlikely(q->qdisc->ops->requeue(skb, q->qdisc) != NET_XMIT_SUCCESS)) {
> - qdisc_tree_decrease_qlen(q->qdisc, 1);
> - sch->qstats.drops++;
> - printk(KERN_ERR "netem: %s could not requeue\n",
> - q->qdisc->ops->id);
> - }
> -
> + __skb_queue_tail(&q->qdisc->requeue, skb);
> qdisc_watchdog_schedule(&q->watchdog, cb->time_to_send);
> }
>
This won't work for the case where time based reordering changes the packet
sent. The current code works like this:
Packet marked to be sent at some time (+101ms)
new packet is queued and the random delay computes smaller delta (+87ms)
new packet will go out in first.
This was done for compatibility with NISTnet, so research that wanted to reproduce
NISTnet results could use netem.
next prev parent reply other threads:[~2008-10-14 15:22 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <fe92ba9380e7da89b674cc58fcb5bc1dae69e0c6.1223973003.git.jarkao2@gmail.com>
2008-10-14 9:53 ` [PATCH 01/14] pkt_sched: Add qdisc_dequeue() helper Jarek Poplawski
2008-10-14 9:53 ` [PATCH 02/14] pkt_sched: Replace all explitic ->dequeue() calls with qdisc_dequeue() Jarek Poplawski
2008-10-14 10:35 ` Jarek Poplawski
2008-10-14 9:53 ` [PATCH 03/14] pkt_sched: Replace explitic ->dequeue() call with qdisc_dequeue() in sch_multiq Jarek Poplawski
2008-10-14 9:53 ` [PATCH 04/14] sch_netem: Use requeue list instead of ops->requeue() Jarek Poplawski
2008-10-14 15:22 ` Stephen Hemminger [this message]
2008-10-14 18:04 ` Jarek Poplawski
2008-10-14 9:54 ` [PATCH 05/14] sch_tbf: Use ->requeue queue instead of ops Jarek Poplawski
2008-10-14 9:54 ` [PATCH 06/14] sch_atm: " Jarek Poplawski
2008-10-14 9:54 ` [PATCH 07/14] sch_hfsc: " Jarek Poplawski
2008-10-14 9:54 ` [PATCH 08/14] pkt_sched: Kill qdisc->ops->requeue() Jarek Poplawski
2008-10-14 9:54 ` [PATCH 09/14] pkt_sched: Kill qdisc->ops->requeue() in sch_atm and sch_multiq Jarek Poplawski
2008-10-14 9:55 ` [PATCH 10/14] pkt_sched: Redo qdisc_dequeue() and bring back qdisc_requeue() Jarek Poplawski
2008-10-14 9:55 ` [PATCH 11/14] pkt_sched: Use qdisc_requeue() wrapper instead of open-coding Jarek Poplawski
2008-10-14 9:55 ` [PATCH 12/14] sch_htb: Fix a compiler warning in htb_enqueue() Jarek Poplawski
2008-10-14 9:55 ` [PATCH 13/14] sch_hfsc: Remove remains of the old requeue code Jarek Poplawski
2008-10-14 9:55 ` [PATCH 14/14] pkt_sched: sch_generic: Purge qdisc->requeue list in qdisc_reset() Jarek Poplawski
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=20081014082235.10b46637@extreme \
--to=shemminger@vyatta.com \
--cc=davem@davemloft.net \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).