nfp: flower: fix vlan match by checking both vlan id and vlan pcp
Previously we only checked if the vlan id field is present when trying
to match a vlan tag. The vlan id and vlan pcp field should be treated
independently.
Fixes: 5571e8c9f2
("nfp: extend flower matching capabilities")
Signed-off-by: Pieter Jansen van Vuuren <pieter.jansenvanvuuren@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
12a78b026f
commit
db191db813
@ -70,6 +70,7 @@ struct nfp_app;
|
||||
#define NFP_FL_FEATS_GENEVE BIT(0)
|
||||
#define NFP_FL_NBI_MTU_SETTING BIT(1)
|
||||
#define NFP_FL_FEATS_GENEVE_OPT BIT(2)
|
||||
#define NFP_FL_FEATS_VLAN_PCP BIT(3)
|
||||
#define NFP_FL_FEATS_LAG BIT(31)
|
||||
|
||||
struct nfp_fl_mask_id {
|
||||
|
@ -56,7 +56,7 @@ nfp_flower_compile_meta_tci(struct nfp_flower_meta_tci *frame,
|
||||
FLOW_DISSECTOR_KEY_VLAN,
|
||||
target);
|
||||
/* Populate the tci field. */
|
||||
if (flow_vlan->vlan_id) {
|
||||
if (flow_vlan->vlan_id || flow_vlan->vlan_priority) {
|
||||
tmp_tci = FIELD_PREP(NFP_FLOWER_MASK_VLAN_PRIO,
|
||||
flow_vlan->vlan_priority) |
|
||||
FIELD_PREP(NFP_FLOWER_MASK_VLAN_VID,
|
||||
|
@ -192,6 +192,17 @@ nfp_flower_calculate_key_layers(struct nfp_app *app,
|
||||
key_size += sizeof(struct nfp_flower_mac_mpls);
|
||||
}
|
||||
|
||||
if (dissector_uses_key(flow->dissector, FLOW_DISSECTOR_KEY_VLAN)) {
|
||||
struct flow_dissector_key_vlan *flow_vlan;
|
||||
|
||||
flow_vlan = skb_flow_dissector_target(flow->dissector,
|
||||
FLOW_DISSECTOR_KEY_VLAN,
|
||||
flow->mask);
|
||||
if (!(priv->flower_ext_feats & NFP_FL_FEATS_VLAN_PCP) &&
|
||||
flow_vlan->vlan_priority)
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
if (dissector_uses_key(flow->dissector,
|
||||
FLOW_DISSECTOR_KEY_ENC_CONTROL)) {
|
||||
struct flow_dissector_key_ipv4_addrs *mask_ipv4 = NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user