Message ID | 20180716144509.31121-1-toke@toke.dk |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Series | [net-next] sch_cake: Fix tin order when set through skb->priority | expand |
From: Toke Høiland-Jørgensen <toke@toke.dk> Date: Mon, 16 Jul 2018 16:45:09 +0200 > 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> Applied, thanks.
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);
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> --- net/sched/sch_cake.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)