From b3c4d367ce8cf40cf511e6eaa6023279d705aac0 Mon Sep 17 00:00:00 2001 From: nbd Date: Wed, 16 May 2012 15:23:03 +0000 Subject: =?UTF-8?q?kernel:=20add=20codel=20and=20fq=5Fcodel=20to=20generic?= =?UTF-8?q?=203.3=20patch=20set=20(based=20on=20patch=20by=20Dave=20T?= =?UTF-8?q?=C3=A4ht)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Codel is a new AQM algorithm and RED replacement designed by Kathie Nichols and Van Jacobson, and published in ACM queue: http://queue.acm.org/detail.cfm?id=2209336 Codel stands for "Controlled Delay", and needs no knobs in the general case, twiddled, for optimum results. It aims for 5ms of delay, at most, when in use. Additionally, fq_codel (by eric dumazet) builds on codel to provide fair queuing superior to what could be had with SFQ, and drop behavior saner than RED, BLUE, or choke. These patches are backported from net-next and are known to work on Linux 3.3.4 and later. Includes updates to codel for better portability and speed git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31756 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../044-net-codel-fix-build-errors.patch | 49 ++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 target/linux/generic/patches-3.3/044-net-codel-fix-build-errors.patch (limited to 'target/linux/generic/patches-3.3/044-net-codel-fix-build-errors.patch') diff --git a/target/linux/generic/patches-3.3/044-net-codel-fix-build-errors.patch b/target/linux/generic/patches-3.3/044-net-codel-fix-build-errors.patch new file mode 100644 index 000000000..36f16d2bf --- /dev/null +++ b/target/linux/generic/patches-3.3/044-net-codel-fix-build-errors.patch @@ -0,0 +1,49 @@ +From 669d67bf777def468970f2dcba1537edf3b2d329 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Mon, 14 May 2012 11:57:06 +0000 +Subject: [PATCH 45/50] net: codel: fix build errors + +Fix the following build error: + +net/sched/sch_fq_codel.c: In function 'fq_codel_dump_stats': +net/sched/sch_fq_codel.c:464:3: error: unknown field 'qdisc_stats' specified in initializer +net/sched/sch_fq_codel.c:464:3: warning: missing braces around initializer +net/sched/sch_fq_codel.c:464:3: warning: (near initialization for 'st.') +net/sched/sch_fq_codel.c:465:3: error: unknown field 'qdisc_stats' specified in initializer +net/sched/sch_fq_codel.c:465:3: warning: excess elements in struct initializer +net/sched/sch_fq_codel.c:465:3: warning: (near initialization for 'st') +net/sched/sch_fq_codel.c:466:3: error: unknown field 'qdisc_stats' specified in initializer +net/sched/sch_fq_codel.c:466:3: warning: excess elements in struct initializer +net/sched/sch_fq_codel.c:466:3: warning: (near initialization for 'st') +net/sched/sch_fq_codel.c:467:3: error: unknown field 'qdisc_stats' specified in initializer +net/sched/sch_fq_codel.c:467:3: warning: excess elements in struct initializer +net/sched/sch_fq_codel.c:467:3: warning: (near initialization for 'st') +make[1]: *** [net/sched/sch_fq_codel.o] Error 1 + +Signed-off-by: Sasha Levin +Signed-off-by: David S. Miller +--- + net/sched/sch_fq_codel.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +--- a/net/sched/sch_fq_codel.c ++++ b/net/sched/sch_fq_codel.c +@@ -461,13 +461,14 @@ static int fq_codel_dump_stats(struct Qd + struct fq_codel_sched_data *q = qdisc_priv(sch); + struct tc_fq_codel_xstats st = { + .type = TCA_FQ_CODEL_XSTATS_QDISC, +- .qdisc_stats.maxpacket = q->cstats.maxpacket, +- .qdisc_stats.drop_overlimit = q->drop_overlimit, +- .qdisc_stats.ecn_mark = q->cstats.ecn_mark, +- .qdisc_stats.new_flow_count = q->new_flow_count, + }; + struct list_head *pos; + ++ st.qdisc_stats.maxpacket = q->cstats.maxpacket; ++ st.qdisc_stats.drop_overlimit = q->drop_overlimit; ++ st.qdisc_stats.ecn_mark = q->cstats.ecn_mark; ++ st.qdisc_stats.new_flow_count = q->new_flow_count; ++ + list_for_each(pos, &q->new_flows) + st.qdisc_stats.new_flows_len++; + -- cgit v1.2.3