mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-30 08:02:30 +00:00
nfp: add whitelist of supported flow dissector
Previously we did not check the flow dissector against a list of allowed
and supported flow key dissectors. This patch introduces such a list and
correctly rejects unsupported flow keys.
Fixes: 43f84b72c5
("nfp: add metadata to each flow offload")
Signed-off-by: Pieter Jansen van Vuuren <pieter.jansenvanvuuren@netronome.com>
Reviewed-by: Simon Horman <simon.horman@netronome.com>
Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
255cd50f20
commit
b95a2d831b
1 changed files with 13 additions and 0 deletions
|
@ -44,6 +44,16 @@
|
||||||
#include "../nfp_net.h"
|
#include "../nfp_net.h"
|
||||||
#include "../nfp_port.h"
|
#include "../nfp_port.h"
|
||||||
|
|
||||||
|
#define NFP_FLOWER_WHITELIST_DISSECTOR \
|
||||||
|
(BIT(FLOW_DISSECTOR_KEY_CONTROL) | \
|
||||||
|
BIT(FLOW_DISSECTOR_KEY_BASIC) | \
|
||||||
|
BIT(FLOW_DISSECTOR_KEY_IPV4_ADDRS) | \
|
||||||
|
BIT(FLOW_DISSECTOR_KEY_IPV6_ADDRS) | \
|
||||||
|
BIT(FLOW_DISSECTOR_KEY_PORTS) | \
|
||||||
|
BIT(FLOW_DISSECTOR_KEY_ETH_ADDRS) | \
|
||||||
|
BIT(FLOW_DISSECTOR_KEY_VLAN) | \
|
||||||
|
BIT(FLOW_DISSECTOR_KEY_IP))
|
||||||
|
|
||||||
static int
|
static int
|
||||||
nfp_flower_xmit_flow(struct net_device *netdev,
|
nfp_flower_xmit_flow(struct net_device *netdev,
|
||||||
struct nfp_fl_payload *nfp_flow, u8 mtype)
|
struct nfp_fl_payload *nfp_flow, u8 mtype)
|
||||||
|
@ -112,6 +122,9 @@ nfp_flower_calculate_key_layers(struct nfp_fl_key_ls *ret_key_ls,
|
||||||
u8 key_layer;
|
u8 key_layer;
|
||||||
int key_size;
|
int key_size;
|
||||||
|
|
||||||
|
if (flow->dissector->used_keys & ~NFP_FLOWER_WHITELIST_DISSECTOR)
|
||||||
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
if (dissector_uses_key(flow->dissector,
|
if (dissector_uses_key(flow->dissector,
|
||||||
FLOW_DISSECTOR_KEY_ENC_CONTROL)) {
|
FLOW_DISSECTOR_KEY_ENC_CONTROL)) {
|
||||||
struct flow_dissector_key_control *mask_enc_ctl =
|
struct flow_dissector_key_control *mask_enc_ctl =
|
||||||
|
|
Loading…
Reference in a new issue