Merge branch 'for-3.18/core' of git://git.kernel.dk/linux-block
[firefly-linux-kernel-4.4.55.git] / net / sched / sch_qfq.c
index 602ea01a4ddde1cdd9c400aaa91f53aae0af5441..3ec7e88a43cab2df5e012d3c5216bc31b75eafe3 100644 (file)
@@ -459,7 +459,8 @@ static int qfq_change_class(struct Qdisc *sch, u32 classid, u32 parentid,
 
        if (cl != NULL) { /* modify existing class */
                if (tca[TCA_RATE]) {
-                       err = gen_replace_estimator(&cl->bstats, &cl->rate_est,
+                       err = gen_replace_estimator(&cl->bstats, NULL,
+                                                   &cl->rate_est,
                                                    qdisc_root_sleeping_lock(sch),
                                                    tca[TCA_RATE]);
                        if (err)
@@ -484,7 +485,8 @@ static int qfq_change_class(struct Qdisc *sch, u32 classid, u32 parentid,
                cl->qdisc = &noop_qdisc;
 
        if (tca[TCA_RATE]) {
-               err = gen_new_estimator(&cl->bstats, &cl->rate_est,
+               err = gen_new_estimator(&cl->bstats, NULL,
+                                       &cl->rate_est,
                                        qdisc_root_sleeping_lock(sch),
                                        tca[TCA_RATE]);
                if (err)
@@ -662,14 +664,14 @@ static int qfq_dump_class_stats(struct Qdisc *sch, unsigned long arg,
        struct tc_qfq_stats xstats;
 
        memset(&xstats, 0, sizeof(xstats));
-       cl->qdisc->qstats.qlen = cl->qdisc->q.qlen;
 
        xstats.weight = cl->agg->class_weight;
        xstats.lmax = cl->agg->lmax;
 
-       if (gnet_stats_copy_basic(d, &cl->bstats) < 0 ||
+       if (gnet_stats_copy_basic(d, NULL, &cl->bstats) < 0 ||
            gnet_stats_copy_rate_est(d, &cl->bstats, &cl->rate_est) < 0 ||
-           gnet_stats_copy_queue(d, &cl->qdisc->qstats) < 0)
+           gnet_stats_copy_queue(d, NULL,
+                                 &cl->qdisc->qstats, cl->qdisc->q.qlen) < 0)
                return -1;
 
        return gnet_stats_copy_app(d, &xstats, sizeof(xstats));
@@ -1227,7 +1229,7 @@ static int qfq_enqueue(struct sk_buff *skb, struct Qdisc *sch)
        cl = qfq_classify(skb, sch, &err);
        if (cl == NULL) {
                if (err & __NET_XMIT_BYPASS)
-                       sch->qstats.drops++;
+                       qdisc_qstats_drop(sch);
                kfree_skb(skb);
                return err;
        }
@@ -1247,7 +1249,7 @@ static int qfq_enqueue(struct sk_buff *skb, struct Qdisc *sch)
                pr_debug("qfq_enqueue: enqueue failed %d\n", err);
                if (net_xmit_drop_count(err)) {
                        cl->qstats.drops++;
-                       sch->qstats.drops++;
+                       qdisc_qstats_drop(sch);
                }
                return err;
        }