sch_cake: Interpret fwmark parameter as a bitmask
authorToke Høiland-Jørgensen <toke@redhat.com>
Thu, 14 Mar 2019 22:08:22 +0000 (23:08 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 15 Mar 2019 18:57:14 +0000 (11:57 -0700)
commiteab2fc822af38f31fd5f4e731b5d10b94904d919
tree6b8b8647fe7b4967ed604c5b982154e312a8b387
parent5bf7295fe34a5251b1d241b9736af4697b590670
sch_cake: Interpret fwmark parameter as a bitmask

We initially interpreted the fwmark parameter as a flag that simply turned
on the feature, using the whole skb->mark field as the index into the CAKE
tin_order array. However, it is quite common for different applications to
use different parts of the mask field for their own purposes, each using a
different mask.

Support this use of subsets of the mark by interpreting the TCA_CAKE_FWMARK
parameter as a bitmask to apply to the fwmark field when reading it. The
result will be right-shifted by the number of unset lower bits of the mask
before looking up the tin.

In the original commit message we also failed to credit Felix Resch with
originally suggesting the fwmark feature back in 2017; so the Suggested-By
in this commit covers the whole fwmark feature.

Fixes: 0b5c7efdfc6e ("sch_cake: Permit use of connmarks as tin classifiers")
Suggested-by: Felix Resch <fuller@beif.de>
Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/sch_cake.c