generic: add linux 4.1 support
[openwrt/svn-archive/archive.git] / target / linux / generic / patches-4.1 / 662-use_fq_codel_by_default.patch
diff --git a/target/linux/generic/patches-4.1/662-use_fq_codel_by_default.patch b/target/linux/generic/patches-4.1/662-use_fq_codel_by_default.patch
new file mode 100644 (file)
index 0000000..e7b781b
--- /dev/null
@@ -0,0 +1,75 @@
+--- a/net/sched/Kconfig
++++ b/net/sched/Kconfig
+@@ -3,8 +3,9 @@
+ # 
+ menuconfig NET_SCHED
+-      bool "QoS and/or fair queueing"
++      def_bool y
+       select NET_SCH_FIFO
++      select NET_SCH_FQ_CODEL
+       ---help---
+         When the kernel has several packets to send out over a network
+         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
+@@ -592,7 +592,7 @@ static const struct Qdisc_class_ops fq_c
+       .walk           =       fq_codel_walk,
+ };
+-static struct Qdisc_ops fq_codel_qdisc_ops __read_mostly = {
++struct Qdisc_ops fq_codel_qdisc_ops __read_mostly = {
+       .cl_ops         =       &fq_codel_class_ops,
+       .id             =       "fq_codel",
+       .priv_size      =       sizeof(struct fq_codel_sched_data),
+@@ -608,6 +608,7 @@ static struct Qdisc_ops fq_codel_qdisc_o
+       .dump_stats =   fq_codel_dump_stats,
+       .owner          =       THIS_MODULE,
+ };
++EXPORT_SYMBOL(fq_codel_qdisc_ops);
+ static int __init fq_codel_module_init(void)
+ {
+--- a/include/net/sch_generic.h
++++ b/include/net/sch_generic.h
+@@ -340,6 +340,7 @@ extern struct Qdisc noop_qdisc;
+ extern struct Qdisc_ops noop_qdisc_ops;
+ extern struct Qdisc_ops pfifo_fast_ops;
+ extern struct Qdisc_ops mq_qdisc_ops;
++extern struct Qdisc_ops fq_codel_qdisc_ops;
+ extern const struct Qdisc_ops *default_qdisc_ops;
+ struct Qdisc_class_common {
+--- a/net/sched/sch_generic.c
++++ b/net/sched/sch_generic.c
+@@ -737,7 +737,7 @@ static void attach_one_default_qdisc(str
+       if (dev->tx_queue_len) {
+               qdisc = qdisc_create_dflt(dev_queue,
+-                                        default_qdisc_ops, TC_H_ROOT);
++                                        &fq_codel_qdisc_ops, TC_H_ROOT);
+               if (!qdisc) {
+                       netdev_info(dev, "activation failed\n");
+                       return;
+--- a/net/sched/sch_mq.c
++++ b/net/sched/sch_mq.c
+@@ -57,7 +57,7 @@ static int mq_init(struct Qdisc *sch, st
+       for (ntx = 0; ntx < dev->num_tx_queues; ntx++) {
+               dev_queue = netdev_get_tx_queue(dev, ntx);
+-              qdisc = qdisc_create_dflt(dev_queue, default_qdisc_ops,
++              qdisc = qdisc_create_dflt(dev_queue, &fq_codel_qdisc_ops,
+                                         TC_H_MAKE(TC_H_MAJ(sch->handle),
+                                                   TC_H_MIN(ntx + 1)));
+               if (qdisc == NULL)
+--- a/net/sched/sch_mqprio.c
++++ b/net/sched/sch_mqprio.c
+@@ -124,7 +124,7 @@ static int mqprio_init(struct Qdisc *sch
+       for (i = 0; i < dev->num_tx_queues; i++) {
+               dev_queue = netdev_get_tx_queue(dev, i);
+-              qdisc = qdisc_create_dflt(dev_queue, default_qdisc_ops,
++              qdisc = qdisc_create_dflt(dev_queue, &fq_codel_qdisc_ops,
+                                         TC_H_MAKE(TC_H_MAJ(sch->handle),
+                                                   TC_H_MIN(i + 1)));
+               if (qdisc == NULL) {