cls_flower: Support multiple masks per priority
authorPaul Blakey <paulb@mellanox.com>
Mon, 30 Apr 2018 11:28:30 +0000 (14:28 +0300)
committerDavid S. Miller <davem@davemloft.net>
Tue, 1 May 2018 18:14:15 +0000 (14:14 -0400)
commit05cd271fd61a0bb64fc20c46c9c87b8272fb980c
tree4980aa913dc74d863b5bca843e6139030a188a23
parent9908b3630f203e983ea02caf5f680ff18d8d82c4
cls_flower: Support multiple masks per priority

Currently flower doesn't support inserting filters with different masks
on a single priority, even if the actual flows (key + mask) inserted
aren't overlapping, as with the use case of offloading openvswitch
datapath flows. Instead one must go up one level, and assign different
priorities for each mask, which will create a different flower
instances.

This patch opens flower to support more than one mask per priority,
and a single flower instance. It does so by adding another hash table
on top of the existing one which will store the different masks,
and the filters that share it.

The user is left with the responsibility of ensuring non overlapping
flows, otherwise precedence is not guaranteed.

Signed-off-by: Paul Blakey <paulb@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/cls_flower.c