Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e061a819 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "net: sched: Schedule PRIO qdisc when flow control released"

parents 171e5847 fe6344bd
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@
#include <linux/string.h>
#include <linux/errno.h>
#include <linux/skbuff.h>
#include <linux/netdevice.h>
#include <net/netlink.h>
#include <net/pkt_sched.h>

@@ -164,6 +165,7 @@ static int prio_tune(struct Qdisc *sch, struct nlattr *opt)
	struct Qdisc *queues[TCQ_PRIO_BANDS];
	int oldbands = q->bands, i;
	struct tc_prio_qopt *qopt;
	int flow_change = 0;

	if (nla_len(opt) < sizeof(*qopt))
		return -EINVAL;
@@ -189,7 +191,10 @@ static int prio_tune(struct Qdisc *sch, struct nlattr *opt)
	}

	sch_tree_lock(sch);
	if (q->enable_flow != qopt->enable_flow) {
		q->enable_flow = qopt->enable_flow;
		flow_change = 1;
	}
	q->bands = qopt->bands;
	memcpy(q->prio2band, qopt->priomap, TC_PRIO_MAX+1);

@@ -205,6 +210,12 @@ static int prio_tune(struct Qdisc *sch, struct nlattr *opt)
		q->queues[i] = queues[i];

	sch_tree_unlock(sch);

	/* Schedule qdisc when flow re-enabled */
	if (flow_change && q->enable_flow) {
		if (!test_bit(__QDISC_STATE_DEACTIVATED, &sch->state))
			__netif_schedule(qdisc_root(sch));
	}
	return 0;
}