nfp: remove incorrect mask check for vlan matching
authorPieter Jansen van Vuuren <pieter.jansenvanvuuren@netronome.com>
Fri, 25 Aug 2017 17:31:03 +0000 (19:31 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 28 Aug 2017 22:20:24 +0000 (15:20 -0700)
Previously the vlan tci field was incorrectly exact matched. This patch
fixes this by using the flow dissector to populate the vlan tci field.

Fixes: 5571e8c9f241 ("nfp: extend flower matching capabilities")
Signed-off-by: Pieter Jansen van Vuuren <pieter.jansenvanvuuren@netronome.com>
Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Simon Horman <simon.horman@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/netronome/nfp/flower/match.c

index b36511063a25d438752a39b54ed244e2c1cdd48b..d25b5038c3a269c316611512d3880597f534550f 100644 (file)
@@ -42,6 +42,7 @@ nfp_flower_compile_meta_tci(struct nfp_flower_meta_two *frame,
                            struct tc_cls_flower_offload *flow, u8 key_type,
                            bool mask_version)
 {
+       struct fl_flow_key *target = mask_version ? flow->mask : flow->key;
        struct flow_dissector_key_vlan *flow_vlan;
        u16 tmp_tci;
 
@@ -50,15 +51,10 @@ nfp_flower_compile_meta_tci(struct nfp_flower_meta_two *frame,
        frame->nfp_flow_key_layer = key_type;
        frame->mask_id = ~0;
 
-       if (mask_version) {
-               frame->tci = cpu_to_be16(~0);
-               return;
-       }
-
        if (dissector_uses_key(flow->dissector, FLOW_DISSECTOR_KEY_VLAN)) {
                flow_vlan = skb_flow_dissector_target(flow->dissector,
                                                      FLOW_DISSECTOR_KEY_VLAN,
-                                                     flow->key);
+                                                     target);
                /* Populate the tci field. */
                if (flow_vlan->vlan_id) {
                        tmp_tci = FIELD_PREP(NFP_FLOWER_MASK_VLAN_PRIO,