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

Commit 5b9a9ccf authored by Patrick McHardy's avatar Patrick McHardy Committed by David S. Miller
Browse files

net_sched: remove some unnecessary checks in classful schedulers



The class argument to the ->graft(), ->leaf(), ->dump(), ->dump_stats() all
originate from either ->get() or ->walk() and are always valid.

Remove unnecessary checks.

Signed-off-by: default avatarPatrick McHardy <kaber@trash.net>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent de6d5cdf
Loading
Loading
Loading
Loading
+17 −21
Original line number Diff line number Diff line
@@ -1621,11 +1621,9 @@ static int cbq_graft(struct Qdisc *sch, unsigned long arg, struct Qdisc *new,
{
	struct cbq_class *cl = (struct cbq_class*)arg;

	if (cl) {
	if (new == NULL) {
		new = qdisc_create_dflt(qdisc_dev(sch), sch->dev_queue,
						&pfifo_qdisc_ops,
						cl->common.classid);
					&pfifo_qdisc_ops, cl->common.classid);
		if (new == NULL)
			return -ENOBUFS;
	} else {
@@ -1643,15 +1641,13 @@ static int cbq_graft(struct Qdisc *sch, unsigned long arg, struct Qdisc *new,

	return 0;
}
	return -ENOENT;
}

static struct Qdisc *
cbq_leaf(struct Qdisc *sch, unsigned long arg)
{
	struct cbq_class *cl = (struct cbq_class*)arg;

	return cl ? cl->q : NULL;
	return cl->q;
}

static void cbq_qlen_notify(struct Qdisc *sch, unsigned long arg)
+1 −3
Original line number Diff line number Diff line
@@ -1203,8 +1203,6 @@ hfsc_graft_class(struct Qdisc *sch, unsigned long arg, struct Qdisc *new,
{
	struct hfsc_class *cl = (struct hfsc_class *)arg;

	if (cl == NULL)
		return -ENOENT;
	if (cl->level > 0)
		return -EINVAL;
	if (new == NULL) {
@@ -1228,7 +1226,7 @@ hfsc_class_leaf(struct Qdisc *sch, unsigned long arg)
{
	struct hfsc_class *cl = (struct hfsc_class *)arg;

	if (cl != NULL && cl->level == 0)
	if (cl->level == 0)
		return cl->qdisc;

	return NULL;
+17 −18
Original line number Diff line number Diff line
@@ -1117,13 +1117,14 @@ static int htb_graft(struct Qdisc *sch, unsigned long arg, struct Qdisc *new,
{
	struct htb_class *cl = (struct htb_class *)arg;

	if (cl && !cl->level) {
	if (cl->level)
		return -EINVAL;
	if (new == NULL &&
	    (new = qdisc_create_dflt(qdisc_dev(sch), sch->dev_queue,
				     &pfifo_qdisc_ops,
					     cl->common.classid))
		    == NULL)
				     cl->common.classid)) == NULL)
		return -ENOBUFS;

	sch_tree_lock(sch);
	*old = cl->un.leaf.q;
	cl->un.leaf.q = new;
@@ -1134,13 +1135,11 @@ static int htb_graft(struct Qdisc *sch, unsigned long arg, struct Qdisc *new,
	sch_tree_unlock(sch);
	return 0;
}
	return -ENOENT;
}

static struct Qdisc *htb_leaf(struct Qdisc *sch, unsigned long arg)
{
	struct htb_class *cl = (struct htb_class *)arg;
	return (cl && !cl->level) ? cl->un.leaf.q : NULL;
	return !cl->level ? cl->un.leaf.q : NULL;
}

static void htb_qlen_notify(struct Qdisc *sch, unsigned long arg)
+1 −10
Original line number Diff line number Diff line
@@ -298,9 +298,6 @@ static int multiq_graft(struct Qdisc *sch, unsigned long arg, struct Qdisc *new,
	struct multiq_sched_data *q = qdisc_priv(sch);
	unsigned long band = arg - 1;

	if (band >= q->bands)
		return -EINVAL;

	if (new == NULL)
		new = &noop_qdisc;

@@ -320,9 +317,6 @@ multiq_leaf(struct Qdisc *sch, unsigned long arg)
	struct multiq_sched_data *q = qdisc_priv(sch);
	unsigned long band = arg - 1;

	if (band >= q->bands)
		return NULL;

	return q->queues[band];
}

@@ -353,10 +347,7 @@ static int multiq_dump_class(struct Qdisc *sch, unsigned long cl,
{
	struct multiq_sched_data *q = qdisc_priv(sch);

	if (cl - 1 > q->bands)
		return -ENOENT;
	tcm->tcm_handle |= TC_H_MIN(cl);
	if (q->queues[cl-1])
	tcm->tcm_info = q->queues[cl-1]->handle;
	return 0;
}
+1 −10
Original line number Diff line number Diff line
@@ -262,9 +262,6 @@ static int prio_graft(struct Qdisc *sch, unsigned long arg, struct Qdisc *new,
	struct prio_sched_data *q = qdisc_priv(sch);
	unsigned long band = arg - 1;

	if (band >= q->bands)
		return -EINVAL;

	if (new == NULL)
		new = &noop_qdisc;

@@ -284,9 +281,6 @@ prio_leaf(struct Qdisc *sch, unsigned long arg)
	struct prio_sched_data *q = qdisc_priv(sch);
	unsigned long band = arg - 1;

	if (band >= q->bands)
		return NULL;

	return q->queues[band];
}

@@ -316,10 +310,7 @@ static int prio_dump_class(struct Qdisc *sch, unsigned long cl, struct sk_buff *
{
	struct prio_sched_data *q = qdisc_priv(sch);

	if (cl - 1 > q->bands)
		return -ENOENT;
	tcm->tcm_handle |= TC_H_MIN(cl);
	if (q->queues[cl-1])
	tcm->tcm_info = q->queues[cl-1]->handle;
	return 0;
}
Loading