From: Toke Høiland-Jørgensen <t...@redhat.com> Date: Thu, 25 Jun 2020 13:55:03 +0200
> From: Ilya Ponetayev <i.ponet...@ndmsystems.com> > > CAKE was using the return value of tc_skb_protocol() and expecting it to be > the IP protocol type. This can fail in the presence of QinQ VLAN tags, > making CAKE unable to handle ECN marking and diffserv parsing in this case. > Fix this by implementing our own version of tc_skb_protocol(), which will > use skb->protocol directly, but also parse and skip over any VLAN tags and > return the inner protocol number instead. > > Also fix CE marking by implementing a version of INET_ECN_set_ce() that > uses the same parsing routine. > > Fixes: ea82511518f4 ("sch_cake: Add NAT awareness to packet classifier") > Fixes: b2100cc56fca ("sch_cake: Use tc_skb_protocol() helper for getting > packet protocol") > Fixes: 046f6fd5daef ("sched: Add Common Applications Kept Enhanced (cake) > qdisc") > Signed-off-by: Ilya Ponetayev <i.ponet...@ndmsystems.com> > [ squash original two patches, rewrite commit message ] > Signed-off-by: Toke Høiland-Jørgensen <t...@redhat.com> First, this is a bug fix and should probably be steered to 'net'. Also, other users of tc_skb_protocol() are almost certainly hitting a similar problem aren't they? Maybe fix this generically.