summaryrefslogtreecommitdiff
path: root/target/linux/generic-2.6/patches-2.6.29/200-sched_esfq.patch
diff options
context:
space:
mode:
authorhauke <hauke@3c298f89-4303-0410-b956-a3cf2f4a3e73>2009-05-11 20:20:41 +0000
committerhauke <hauke@3c298f89-4303-0410-b956-a3cf2f4a3e73>2009-05-11 20:20:41 +0000
commitc8264fa9ccec81a09a2127512603706d2f0ccbf7 (patch)
tree416f190adee2a15f65000d484a6a409889a39436 /target/linux/generic-2.6/patches-2.6.29/200-sched_esfq.patch
parentd4b7ac8825aacb38fd8280f1e84ac384a52e820a (diff)
[kernel] Compile fixes for kernel 2.6.29.
The 200-sched_esfq.patch is based on http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/~checkout~/SOURCES.old/kernel-esfq.patch?rev=1.4;content-type=text%2Fplain git-svn-id: svn://svn.openwrt.org/openwrt/trunk@15775 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/generic-2.6/patches-2.6.29/200-sched_esfq.patch')
-rw-r--r--target/linux/generic-2.6/patches-2.6.29/200-sched_esfq.patch44
1 files changed, 21 insertions, 23 deletions
diff --git a/target/linux/generic-2.6/patches-2.6.29/200-sched_esfq.patch b/target/linux/generic-2.6/patches-2.6.29/200-sched_esfq.patch
index 7c80fbbb54..f72c0e3705 100644
--- a/target/linux/generic-2.6/patches-2.6.29/200-sched_esfq.patch
+++ b/target/linux/generic-2.6/patches-2.6.29/200-sched_esfq.patch
@@ -90,7 +90,7 @@
obj-$(CONFIG_NET_SCH_PRIO) += sch_prio.o
--- /dev/null
+++ b/net/sched/sch_esfq.c
-@@ -0,0 +1,702 @@
+@@ -0,0 +1,700 @@
+/*
+ * net/sched/sch_esfq.c Extended Stochastic Fairness Queueing discipline.
+ *
@@ -137,6 +137,7 @@
+#include <linux/notifier.h>
+#include <linux/init.h>
+#include <net/ip.h>
++#include <net/netlink.h>
+#include <linux/ipv6.h>
+#include <net/route.h>
+#include <linux/skbuff.h>
@@ -464,20 +465,17 @@
+ 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)
@@ -602,13 +600,13 @@
+ }
+}
+
-+static int esfq_q_init(struct esfq_sched_data *q, struct rtattr *opt)
++static int esfq_q_init(struct esfq_sched_data *q, struct nlattr *opt)
+{
-+ struct tc_esfq_qopt *ctl = RTA_DATA(opt);
++ struct tc_esfq_qopt *ctl = nla_data(opt);
+ esfq_index p = ~0U/2;
+ int i;
+
-+ if (opt && opt->rta_len < RTA_LENGTH(sizeof(*ctl)))
++ if (opt && opt->nla_len < nla_attr_size(sizeof(*ctl)))
+ return -EINVAL;
+
+ q->perturbation = 0;
@@ -620,7 +618,7 @@
+ q->tail = q->limit = q->depth = 128;
+
+ } else {
-+ struct tc_esfq_qopt *ctl = RTA_DATA(opt);
++ struct tc_esfq_qopt *ctl = nla_data(opt);
+ if (ctl->quantum)
+ q->quantum = ctl->quantum;
+ q->perturb_period = ctl->perturb_period*HZ;
@@ -673,7 +671,7 @@
+ return -ENOBUFS;
+}
+
-+static int esfq_init(struct Qdisc *sch, struct rtattr *opt)
++static int esfq_init(struct Qdisc *sch, struct nlattr *opt)
+{
+ struct esfq_sched_data *q = qdisc_priv(sch);
+ int err;
@@ -693,7 +691,7 @@
+ return 0;
+}
+
-+static int esfq_change(struct Qdisc *sch, struct rtattr *opt)
++static int esfq_change(struct Qdisc *sch, struct nlattr *opt)
+{
+ struct esfq_sched_data *q = qdisc_priv(sch);
+ struct esfq_sched_data new;
@@ -744,7 +742,7 @@
+static int esfq_dump(struct Qdisc *sch, struct sk_buff *skb)
+{
+ struct esfq_sched_data *q = qdisc_priv(sch);
-+ unsigned char *b = skb->tail;
++ unsigned char *b = skb_tail_pointer(skb);
+ struct tc_esfq_qopt opt;
+
+ opt.quantum = q->quantum;
@@ -755,12 +753,12 @@
+ opt.flows = q->depth;
+ opt.hash_kind = q->hash_kind;
+
-+ RTA_PUT(skb, TCA_OPTIONS, sizeof(opt), &opt);
++ NLA_PUT(skb, TCA_OPTIONS, sizeof(opt), &opt);
+
+ return skb->len;
+
-+rtattr_failure:
-+ skb_trim(skb, b - skb->data);
++nla_put_failure:
++ nlmsg_trim(skb, b);
+ return -1;
+}
+
@@ -772,7 +770,7 @@
+ .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,