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

Commit 7fa4762d authored by Tianyi Gou's avatar Tianyi Gou Committed by Matt Wagantall
Browse files

net: sched: export an api to enable/disable flow on sch



Export a function from sch_api.c that will look up
desired qdisc and call it's registered change function
to enable/disable flow.

Change-Id: I5b6dc7a6fd2b09b796c92b3770ba83423d19c864
CRs-Fixed: 355156
Acked-by: default avatarJimi Shah <jimis@qualcomm.com>
Signed-off-by: default avatarTianyi Gou <tgou@codeaurora.org>
(cherry picked from commit 60ba24a30eaa32db6e459e7f29eeb9060b85ffc0)
Signed-off-by: default avatarJosh Cartwright <joshc@codeaurora.org>
parent d7919316
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -113,7 +113,8 @@ int tc_classify_compat(struct sk_buff *skb, const struct tcf_proto *tp,
		       struct tcf_result *res);
int tc_classify(struct sk_buff *skb, const struct tcf_proto *tp,
		struct tcf_result *res);

void tc_qdisc_flow_control(struct net_device *dev, u32 tcm_handle,
			   int flow_enable);
/* Calculate maximal size of packet seen by hard_start_xmit
   routine of this device.
 */
+29 −0
Original line number Diff line number Diff line
@@ -1159,6 +1159,35 @@ static int tc_get_qdisc(struct sk_buff *skb, struct nlmsghdr *n)
	return 0;
}

/*
 * enable/disable flow on qdisc.
 */
void
tc_qdisc_flow_control(struct net_device *dev, u32 tcm_handle, int enable_flow)
{
	struct Qdisc *q;
	struct __qdisc_change_req {
		struct nlattr attr;
		struct tc_prio_qopt data;
	} req =	{
		.attr = {sizeof(struct __qdisc_change_req), TCA_OPTIONS},
		.data = {3, {1, 2, 2, 2, 1, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1}, 1}
		};

	/* override flow bit */
	req.data.enable_flow = enable_flow;

	/* look up using tcm handle */
	q = qdisc_lookup(dev, tcm_handle);

	/* call registered change function */
	if (q) {
		if (q->ops->change(q, &(req.attr)) != 0)
			pr_err("tc_qdisc_flow_control: qdisc change failed");
	}
}
EXPORT_SYMBOL(tc_qdisc_flow_control);

/*
 * Create/change qdisc.
 */