]> git.pld-linux.org Git - packages/kernel.git/blobdiff - kernel-esfq.patch
- bigger CMA size (some discussion in https://bugzilla.redhat.com/show_bug.cgi?id...
[packages/kernel.git] / kernel-esfq.patch
index 4f5457daa3fd720b977a01a0e37804f5e423daa6..355a6444148e712c6ec3484bc91eb6e854d886fd 100644 (file)
@@ -1,6 +1,6 @@
-diff -Naur linux-2.6.24.orig/include/linux/pkt_sched.h linux-2.6.24/include/linux/pkt_sched.h
---- linux-2.6.24.orig/include/linux/pkt_sched.h        2008-01-24 14:58:37.000000000 -0800
-+++ linux-2.6.24/include/linux/pkt_sched.h     2008-01-28 00:27:12.000000000 -0800
+diff -Naur linux-2.6.24.orig/include/uapi/linux/pkt_sched.h linux-2.6.24/include/uapi/linux/pkt_sched.h
+--- linux-2.6.24.orig/include/uapi/linux/pkt_sched.h   2008-01-24 14:58:37.000000000 -0800
++++ linux-2.6.24/include/uapi/linux/pkt_sched.h        2008-01-28 00:27:12.000000000 -0800
 @@ -157,6 +157,33 @@
   *    to change these parameters in compile time.
   */
@@ -90,7 +90,7 @@ diff -Naur linux-2.6.24.orig/net/sched/Makefile linux-2.6.24/net/sched/Makefile
 diff -Naur linux-2.6.24.orig/net/sched/sch_esfq.c linux-2.6.24/net/sched/sch_esfq.c
 --- linux-2.6.24.orig/net/sched/sch_esfq.c     1969-12-31 16:00:00.000000000 -0800
 +++ linux-2.6.24/net/sched/sch_esfq.c  2008-01-28 00:27:22.000000000 -0800
-@@ -0,0 +1,703 @@
+@@ -0,0 +1,700 @@
 +/*
 + * net/sched/sch_esfq.c       Extended Stochastic Fairness Queueing discipline.
 + *
@@ -118,7 +118,7 @@ diff -Naur linux-2.6.24.orig/net/sched/sch_esfq.c linux-2.6.24/net/sched/sch_esf
 +
 +#include <linux/module.h>
 +#include <asm/uaccess.h>
-+#include <asm/system.h>
++
 +#include <linux/bitops.h>
 +#include <linux/types.h>
 +#include <linux/kernel.h>
@@ -268,7 +268,7 @@ diff -Naur linux-2.6.24.orig/net/sched/sch_esfq.c linux-2.6.24/net/sched/sch_esf
 +              break;
 +      }
 +      default:
-+              info.dst   = (u32)(unsigned long)skb->dst;
++              info.dst   = (u32)(unsigned long)skb_dst(skb);
 +              info.src   = (u32)(unsigned long)skb->sk;
 +              info.proto = skb->protocol;
 +      }
@@ -465,20 +465,17 @@ diff -Naur linux-2.6.24.orig/net/sched/sch_esfq.c linux-2.6.24/net/sched/sch_esf
 +      return NET_XMIT_CN;
 +}
 +
-+
-+static int esfq_requeue(struct sk_buff *skb, struct Qdisc* sch)
++static struct sk_buff *esfq_peek(struct Qdisc* sch)
 +{
 +      struct esfq_sched_data *q = qdisc_priv(sch);
-+      esfq_q_enqueue(skb, q, ESFQ_HEAD);
-+      sch->qstats.backlog += skb->len;
-+      if (++sch->q.qlen < q->limit - 1) {
-+              sch->qstats.requeues++;
-+              return 0;
-+      }
++      esfq_index a;
 +
-+      sch->qstats.drops++;
-+      esfq_drop(sch);
-+      return NET_XMIT_CN;
++      /* No active slots */
++      if (q->tail == q->depth)
++              return NULL;
++
++      a = q->next[q->tail];
++      return skb_peek(&q->qs[a]);
 +}
 +
 +static struct sk_buff *esfq_q_dequeue(struct esfq_sched_data *q)
@@ -566,7 +563,7 @@ diff -Naur linux-2.6.24.orig/net/sched/sch_esfq.c linux-2.6.24/net/sched/sch_esf
 +      struct Qdisc *sch = (struct Qdisc*)arg;
 +      struct esfq_sched_data *q = qdisc_priv(sch);
 +
-+      q->perturbation = net_random()&0x1F;
++      q->perturbation = prandom_u32() & 0x1F;
 +
 +      if (q->perturb_period) {
 +              q->perturb_timer.expires = jiffies + q->perturb_period;
@@ -756,8 +753,8 @@ diff -Naur linux-2.6.24.orig/net/sched/sch_esfq.c linux-2.6.24/net/sched/sch_esf
 +      opt.flows = q->depth;
 +      opt.hash_kind = q->hash_kind;
 +
-+      NLA_PUT(skb, TCA_OPTIONS, sizeof(opt), &opt);
-+
++      if (nla_put(skb, TCA_OPTIONS, sizeof(opt), &opt))
++              goto nla_put_failure;
 +      return skb->len;
 +
 +nla_put_failure:
@@ -773,7 +770,7 @@ diff -Naur linux-2.6.24.orig/net/sched/sch_esfq.c linux-2.6.24/net/sched/sch_esf
 +      .priv_size      =       sizeof(struct esfq_sched_data),
 +      .enqueue        =       esfq_enqueue,
 +      .dequeue        =       esfq_dequeue,
-+      .requeue        =       esfq_requeue,
++      .peek           =       esfq_peek,
 +      .drop           =       esfq_drop,
 +      .init           =       esfq_init,
 +      .reset          =       esfq_reset,
This page took 0.036077 seconds and 4 git commands to generate.