summaryrefslogtreecommitdiffstats
path: root/net/sched/sch_cake.c
diff options
context:
space:
mode:
authorToke Høiland-Jørgensen2018-07-16 16:45:09 +0200
committerDavid S. Miller2018-07-16 23:47:45 +0200
commit301f935be9e09a1bf188bd8262a4db0aeeac2b50 (patch)
treeca06d86900743f3a81214b3d245dc96582441f70 /net/sched/sch_cake.c
parentcxgb4: collect ASIC LA dumps from ULP TX (diff)
downloadkernel-qcow2-linux-301f935be9e09a1bf188bd8262a4db0aeeac2b50.tar.gz
kernel-qcow2-linux-301f935be9e09a1bf188bd8262a4db0aeeac2b50.tar.xz
kernel-qcow2-linux-301f935be9e09a1bf188bd8262a4db0aeeac2b50.zip
sch_cake: Fix tin order when set through skb->priority
In diffserv mode, CAKE stores tins in a different order internally than the logical order exposed to userspace. The order remapping was missing in the handling of 'tc filter' priority mappings through skb->priority, resulting in bulk and best effort mappings being reversed relative to how they are displayed. Fix this by adding the missing mapping when reading skb->priority. Fixes: 83f8fd69af4f ("sch_cake: Add DiffServ handling") Signed-off-by: Toke Høiland-Jørgensen <toke@toke.dk> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sched/sch_cake.c')
-rw-r--r--net/sched/sch_cake.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/sched/sch_cake.c b/net/sched/sch_cake.c
index 30695691e9ff..539c9490c308 100644
--- a/net/sched/sch_cake.c
+++ b/net/sched/sch_cake.c
@@ -1546,7 +1546,7 @@ static struct cake_tin_data *cake_select_tin(struct Qdisc *sch,
if (TC_H_MAJ(skb->priority) == sch->handle &&
TC_H_MIN(skb->priority) > 0 &&
TC_H_MIN(skb->priority) <= q->tin_cnt) {
- tin = TC_H_MIN(skb->priority) - 1;
+ tin = q->tin_order[TC_H_MIN(skb->priority) - 1];
if (q->rate_flags & CAKE_FLAG_WASH)
cake_wash_diffserv(skb);