net: sched: register noqueue qdisc
[firefly-linux-kernel-4.4.55.git] / net / sched / sch_generic.c
index f501b7409320a7e3f9199abaaefeabd211c097da..d5c7c0d887864ec2d4d819efc44dcac4fe111b80 100644 (file)
@@ -416,9 +416,19 @@ struct Qdisc noop_qdisc = {
 };
 EXPORT_SYMBOL(noop_qdisc);
 
-static struct Qdisc_ops noqueue_qdisc_ops __read_mostly = {
+static int noqueue_init(struct Qdisc *qdisc, struct nlattr *opt)
+{
+       /* register_qdisc() assigns a default of noop_enqueue if unset,
+        * but __dev_queue_xmit() treats noqueue only as such
+        * if this is NULL - so clear it here. */
+       qdisc->enqueue = NULL;
+       return 0;
+}
+
+struct Qdisc_ops noqueue_qdisc_ops __read_mostly = {
        .id             =       "noqueue",
        .priv_size      =       0,
+       .init           =       noqueue_init,
        .enqueue        =       noop_enqueue,
        .dequeue        =       noop_dequeue,
        .peek           =       noop_dequeue,