kernel: remove out-of-tree patches for reducing qdisc truesize
authorFelix Fietkau <nbd@nbd.name>
Thu, 12 May 2016 18:51:51 +0000 (20:51 +0200)
committerFelix Fietkau <nbd@nbd.name>
Thu, 12 May 2016 18:51:55 +0000 (20:51 +0200)
The copy overhead can be quite expensive

Signed-off-by: Felix Fietkau <nbd@nbd.name>
target/linux/generic/patches-4.4/656-skb_reduce_truesize-helper.patch [deleted file]
target/linux/generic/patches-4.4/657-qdisc_reduce_truesize.patch [deleted file]
target/linux/generic/patches-4.4/660-fq_codel_defaults.patch
target/linux/generic/patches-4.4/661-fq_codel_keep_dropped_stats.patch
target/linux/generic/patches-4.4/662-use_fq_codel_by_default.patch
target/linux/generic/patches-4.4/721-phy_packets.patch
target/linux/generic/patches-4.4/834-ledtrig-libata.patch

diff --git a/target/linux/generic/patches-4.4/656-skb_reduce_truesize-helper.patch b/target/linux/generic/patches-4.4/656-skb_reduce_truesize-helper.patch
deleted file mode 100644 (file)
index dad7448..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-From 4593a806e31119c5bd3faa00c7210ad862d515af Mon Sep 17 00:00:00 2001
-From: Dave Taht <dave.taht@bufferbloat.net>
-Date: Mon, 31 Dec 2012 10:02:21 -0800
-Subject: [PATCH 3/7] skb_reduce_truesize: helper function for shrinking skbs
- whenever needed
-
-On embedded devices in particular, large queues of small packets from the rx
-path with a large truesize can exist. Reducing their size can reduce
-memory pressure. skb_reduce_truesize is a helper function for doing this,
-when needed.
----
- include/linux/skbuff.h |   18 ++++++++++++++++++
- 1 file changed, 18 insertions(+)
-
---- a/include/linux/skbuff.h
-+++ b/include/linux/skbuff.h
-@@ -2224,6 +2224,24 @@ static inline void pskb_trim_unique(stru
-       BUG_ON(err);
- }
-+/*
-+ * Caller wants to reduce memory needs before queueing skb
-+ * The (expensive) copy should not be be done in fast path.
-+ */
-+static inline struct sk_buff *skb_reduce_truesize(struct sk_buff *skb)
-+{
-+      if (skb->truesize > 2 * SKB_TRUESIZE(skb->len)) {
-+              struct sk_buff *nskb;
-+              nskb = skb_copy_expand(skb, skb_headroom(skb), 0,
-+                      GFP_ATOMIC | __GFP_NOWARN);
-+              if (nskb) {
-+                      __kfree_skb(skb);
-+                      skb = nskb;
-+              }
-+      }
-+      return skb;
-+}
-+
- /**
-  *    skb_orphan - orphan a buffer
-  *    @skb: buffer to orphan
diff --git a/target/linux/generic/patches-4.4/657-qdisc_reduce_truesize.patch b/target/linux/generic/patches-4.4/657-qdisc_reduce_truesize.patch
deleted file mode 100644 (file)
index d9f5b4f..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-From bc9fec2f87d57bdbff30d296605e24504513f65c Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Dave=20T=C3=A4ht?= <dave.taht@bufferbloat.net>
-Date: Mon, 17 Sep 2012 19:20:22 -0700
-Subject: [PATCH 4/7] net: add skb_reduce_truesize support to common qdiscs
-
-Reduce skb size under load when queues begin to fill on the
-commont qdiscs.
----
- net/sched/sch_codel.c    |    2 ++
- net/sched/sch_fifo.c     |   12 ++++++++----
- net/sched/sch_fq_codel.c |    2 ++
- 3 files changed, 12 insertions(+), 4 deletions(-)
-
---- a/net/sched/sch_codel.c
-+++ b/net/sched/sch_codel.c
-@@ -96,6 +96,8 @@ static int codel_qdisc_enqueue(struct sk
-       struct codel_sched_data *q;
-       if (likely(qdisc_qlen(sch) < sch->limit)) {
-+              if(qdisc_qlen(sch) > 128)
-+                      skb = skb_reduce_truesize(skb);
-               codel_set_enqueue_time(skb);
-               return qdisc_enqueue_tail(skb, sch);
-       }
---- a/net/sched/sch_fifo.c
-+++ b/net/sched/sch_fifo.c
-@@ -29,17 +29,21 @@ static int bfifo_enqueue(struct sk_buff
- static int pfifo_enqueue(struct sk_buff *skb, struct Qdisc *sch)
- {
--      if (likely(skb_queue_len(&sch->q) < sch->limit))
-+      if (likely(skb_queue_len(&sch->q) < sch->limit)) {
-+              if (skb_queue_len(&sch->q) > 128)
-+                      skb = skb_reduce_truesize(skb);
-               return qdisc_enqueue_tail(skb, sch);
--
-+      }
-       return qdisc_reshape_fail(skb, sch);
- }
- static int pfifo_tail_enqueue(struct sk_buff *skb, struct Qdisc *sch)
- {
--      if (likely(skb_queue_len(&sch->q) < sch->limit))
-+      if (likely(skb_queue_len(&sch->q) < sch->limit)) {
-+              if (skb_queue_len(&sch->q) > 128)
-+                      skb = skb_reduce_truesize(skb);
-               return qdisc_enqueue_tail(skb, sch);
--
-+      }
-       /* queue full, remove one skb to fulfill the limit */
-       __qdisc_queue_drop_head(sch, &sch->q);
-       qdisc_qstats_drop(sch);
---- a/net/sched/sch_fq_codel.c
-+++ b/net/sched/sch_fq_codel.c
-@@ -187,6 +187,8 @@ static int fq_codel_enqueue(struct sk_bu
-               return ret;
-       }
-       idx--;
-+      if (sch->q.qlen > 128)
-+              skb = skb_reduce_truesize(skb);
-       codel_set_enqueue_time(skb);
-       flow = &q->flows[idx];
index 5d99cd7fb4fd1fc9be25927f8ea251d1e367db71..bee4fcd86b5d891d041baf67f7dfcebb6d9d9bf8 100644 (file)
@@ -1,6 +1,6 @@
 --- a/net/sched/sch_fq_codel.c
 +++ b/net/sched/sch_fq_codel.c
-@@ -412,8 +412,8 @@ static int fq_codel_init(struct Qdisc *s
+@@ -410,8 +410,8 @@ static int fq_codel_init(struct Qdisc *s
        struct fq_codel_sched_data *q = qdisc_priv(sch);
        int i;
  
index 0efc61b1b0b3b22cf2c69ed567ab132c507a8259..45a8d6836792680af3d6e2e36a3696d4d76549c8 100644 (file)
@@ -1,6 +1,6 @@
 --- a/net/sched/sch_fq_codel.c
 +++ b/net/sched/sch_fq_codel.c
-@@ -200,7 +200,6 @@ static int fq_codel_enqueue(struct sk_bu
+@@ -198,7 +198,6 @@ static int fq_codel_enqueue(struct sk_bu
                list_add_tail(&flow->flowchain, &q->new_flows);
                q->new_flow_count++;
                flow->deficit = q->quantum;
index 096d2392385b9c249c21f2d28ee26c75e4cc16ef..6910cfa0e6435848d38dedfc1cac3cddd312585d 100644 (file)
@@ -13,7 +13,7 @@
          device, it has to decide which ones to send first, which ones to
 --- a/net/sched/sch_fq_codel.c
 +++ b/net/sched/sch_fq_codel.c
-@@ -623,7 +623,7 @@ static const struct Qdisc_class_ops fq_c
+@@ -621,7 +621,7 @@ static const struct Qdisc_class_ops fq_c
        .walk           =       fq_codel_walk,
  };
  
@@ -22,7 +22,7 @@
        .cl_ops         =       &fq_codel_class_ops,
        .id             =       "fq_codel",
        .priv_size      =       sizeof(struct fq_codel_sched_data),
-@@ -639,6 +639,7 @@ static struct Qdisc_ops fq_codel_qdisc_o
+@@ -637,6 +637,7 @@ static struct Qdisc_ops fq_codel_qdisc_o
        .dump_stats =   fq_codel_dump_stats,
        .owner          =       THIS_MODULE,
  };
index 79af5f91cd6bf3916f3f47951aac4dc8d6ef0c4e..e232c0f563c8de5a83f83fd352526a1f65ede0eb 100644 (file)
@@ -52,7 +52,7 @@
  /**
   *    pskb_trim_unique - remove end from a paged unique (not cloned) buffer
   *    @skb: buffer to alter
-@@ -2332,16 +2336,6 @@ static inline struct sk_buff *dev_alloc_
+@@ -2314,16 +2318,6 @@ static inline struct sk_buff *dev_alloc_
  }
  
  
index c60fc1a51510020f39aefedff9e7df333c46e994..9a9203b1403b9fffcd397561a7c6ae91335bf77e 100644 (file)
@@ -110,11 +110,11 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 +      for (i = 0; i < host->n_ports; i++) {
 +              if (unlikely(!host->ports[i]->ledtrig))
 +                      continue;
++
 +              snprintf(host->ports[i]->ledtrig_name,
 +                      sizeof(host->ports[i]->ledtrig_name), "ata%u",
 +                      host->ports[i]->print_id);
-+
 +              host->ports[i]->ledtrig->name = host->ports[i]->ledtrig_name;
 +
 +              if (led_trigger_register(host->ports[i]->ledtrig)) {