mlxsw: core: Introduce flexible keys support
authorJiri Pirko <jiri@mellanox.com>
Fri, 3 Feb 2017 09:29:01 +0000 (10:29 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 3 Feb 2017 21:35:41 +0000 (16:35 -0500)
commit3f1a84e6962c7fd0703b9bb5db0355d1c28b201a
treec30098df0efe495629aa62c078b8c6282d54bf3f
parente3426e12fee11cb7949b65428955127ca3dcb433
mlxsw: core: Introduce flexible keys support

Hardware supports matching on so called "flexible keys". The idea is to
assemble an optimal key to use for matching according to the fields in
packet (elements) requested by user. Certain sets of elements are
combined into pre-defined blocks. There is a picker to find needed blocks.
Keys consist of 1..n blocks.

Alongside with that, an initial portion of elements is introduced in order
to be able to offload basic cls_flower rules.

Picked keys are cached so multiple rules could share them.

There is an encode function provided that takes care of encoding key and
mask values according to given key.

Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Reviewed-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/Makefile
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.c [new file with mode: 0644]
drivers/net/ethernet/mellanox/mlxsw/core_acl_flex_keys.h [new file with mode: 0644]