Message ID | 20141001203604.3321.91746.stgit@dragon |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Wed, 2014-10-01 at 22:36 +0200, Jesper Dangaard Brouer wrote: > The TSO and GSO segmented packets already benefit from bulking > on their own. > > > Signed-off-by: Florian Westphal <fw@strlen.de> > Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> > Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org> > Signed-off-by: Daniel Borkmann <dborkman@redhat.com> > --- > > net/sched/sch_generic.c | 12 +++--------- > 1 files changed, 3 insertions(+), 9 deletions(-) > > diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c > index c2e87e6..797ebef 100644 > --- a/net/sched/sch_generic.c > +++ b/net/sched/sch_generic.c > @@ -63,10 +63,6 @@ static struct sk_buff *try_bulk_dequeue_skb(struct Qdisc *q, > struct sk_buff *skb, *tail_skb = head_skb; > > while (bytelimit > 0) { > - /* For now, don't bulk dequeue GSO (or GSO segmented) pkts */ > - if (tail_skb->next || skb_is_gso(tail_skb)) > - break; > - > skb = q->dequeue(q); > if (!skb) > break; > @@ -76,11 +72,9 @@ static struct sk_buff *try_bulk_dequeue_skb(struct Qdisc *q, > if (!skb) > break; > > - /* "skb" can be a skb list after validate call above > - * (GSO segmented), but it is okay to append it to > - * current tail_skb->next, because next round will exit > - * in-case "tail_skb->next" is a skb list. > - */ > + while (tail_skb->next) /* GSO list goto tail */ > + tail_skb = tail_skb->next; > + > tail_skb->next = skb; > tail_skb = skb; Thanks a lot guys. I am testing this patch set today. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 10/02/2014 04:35 PM, Eric Dumazet wrote:
...
> Thanks a lot guys. I am testing this patch set today.
That's great, thanks!
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
diff of 0.12ms corrosponding to 1500 bytes at 100Mbit/s. Bulking several GSOs together, result in a stable high-prio queue delay of 2.23ms. Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org> Signed-off-by: Daniel Borkmann <dborkman@redhat.com> --- net/sched/sch_generic.c | 12 +++--------- 1 files changed, 3 insertions(+), 9 deletions(-) diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c index c2e87e6..797ebef 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c @@ -63,10 +63,6 @@ static struct sk_buff *try_bulk_dequeue_skb(struct Qdisc *q, struct sk_buff *skb, *tail_skb = head_skb; while (bytelimit > 0) { - /* For now, don't bulk dequeue GSO (or GSO segmented) pkts */ - if (tail_skb->next || skb_is_gso(tail_skb)) - break; - skb = q->dequeue(q); if (!skb) break; @@ -76,11 +72,9 @@ static struct sk_buff *try_bulk_dequeue_skb(struct Qdisc *q, if (!skb) break; - /* "skb" can be a skb list after validate call above - * (GSO segmented), but it is okay to append it to - * current tail_skb->next, because next round will exit - * in-case "tail_skb->next" is a skb list. - */ + while (tail_skb->next) /* GSO list goto tail */ + tail_skb = tail_skb->next; + tail_skb->next = skb; tail_skb = skb; }