From: Marcin Szycik <marcin.szy...@linux.intel.com>

FLOW_DISSECTOR_KEY_ENC_OPTS can be used for multiple headers, but currently
it is treated as GTP-exclusive in ice. Rename ICE_TC_FLWR_FIELD_ENC_OPTS to
ICE_TC_FLWR_FIELD_GTP_OPTS and check for tunnel type earlier. After this
refactor, it is easier to add new headers using FLOW_DISSECTOR_KEY_ENC_OPTS
- instead of checking tunnel type in ice_tc_count_lkups() and
ice_tc_fill_tunnel_outer(), it needs to be checked only once, in
ice_parse_tunnel_attr().

Signed-off-by: Marcin Szycik <marcin.szy...@linux.intel.com>
Reviewed-by: Simon Horman <simon.hor...@corigine.com>
Signed-off-by: Alexander Lobakin <aleksander.loba...@intel.com>
---
 drivers/net/ethernet/intel/ice/ice_tc_lib.h |  2 +-
 drivers/net/ethernet/intel/ice/ice_tc_lib.c | 10 +++++-----
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_tc_lib.h 
b/drivers/net/ethernet/intel/ice/ice_tc_lib.h
index 65d387163a46..5d188ad7517a 100644
--- a/drivers/net/ethernet/intel/ice/ice_tc_lib.h
+++ b/drivers/net/ethernet/intel/ice/ice_tc_lib.h
@@ -22,7 +22,7 @@
 #define ICE_TC_FLWR_FIELD_ENC_SRC_L4_PORT      BIT(15)
 #define ICE_TC_FLWR_FIELD_ENC_DST_MAC          BIT(16)
 #define ICE_TC_FLWR_FIELD_ETH_TYPE_ID          BIT(17)
-#define ICE_TC_FLWR_FIELD_ENC_OPTS             BIT(18)
+#define ICE_TC_FLWR_FIELD_GTP_OPTS             BIT(18)
 #define ICE_TC_FLWR_FIELD_CVLAN                        BIT(19)
 #define ICE_TC_FLWR_FIELD_PPPOE_SESSID         BIT(20)
 #define ICE_TC_FLWR_FIELD_PPP_PROTO            BIT(21)
diff --git a/drivers/net/ethernet/intel/ice/ice_tc_lib.c 
b/drivers/net/ethernet/intel/ice/ice_tc_lib.c
index b890410a2bc0..80797db9f2b9 100644
--- a/drivers/net/ethernet/intel/ice/ice_tc_lib.c
+++ b/drivers/net/ethernet/intel/ice/ice_tc_lib.c
@@ -35,7 +35,7 @@ ice_tc_count_lkups(u32 flags, struct 
ice_tc_flower_lyr_2_4_hdrs *headers,
        if (flags & ICE_TC_FLWR_FIELD_ENC_DST_MAC)
                lkups_cnt++;
 
-       if (flags & ICE_TC_FLWR_FIELD_ENC_OPTS)
+       if (flags & ICE_TC_FLWR_FIELD_GTP_OPTS)
                lkups_cnt++;
 
        if (flags & (ICE_TC_FLWR_FIELD_ENC_SRC_IPV4 |
@@ -219,8 +219,7 @@ ice_tc_fill_tunnel_outer(u32 flags, struct 
ice_tc_flower_fltr *fltr,
                i++;
        }
 
-       if (flags & ICE_TC_FLWR_FIELD_ENC_OPTS &&
-           (fltr->tunnel_type == TNL_GTPU || fltr->tunnel_type == TNL_GTPC)) {
+       if (flags & ICE_TC_FLWR_FIELD_GTP_OPTS) {
                list[i].type = ice_proto_type_from_tunnel(fltr->tunnel_type);
 
                if (fltr->gtp_pdu_info_masks.pdu_type) {
@@ -1401,7 +1400,8 @@ ice_parse_tunnel_attr(struct net_device *dev, struct 
flow_rule *rule,
                }
        }
 
-       if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_OPTS)) {
+       if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ENC_OPTS) &&
+           (fltr->tunnel_type == TNL_GTPU || fltr->tunnel_type == TNL_GTPC)) {
                struct flow_match_enc_opts match;
 
                flow_rule_match_enc_opts(rule, &match);
@@ -1412,7 +1412,7 @@ ice_parse_tunnel_attr(struct net_device *dev, struct 
flow_rule *rule,
                memcpy(&fltr->gtp_pdu_info_masks, &match.mask->data[0],
                       sizeof(struct gtp_pdu_session_info));
 
-               fltr->flags |= ICE_TC_FLWR_FIELD_ENC_OPTS;
+               fltr->flags |= ICE_TC_FLWR_FIELD_GTP_OPTS;
        }
 
        return 0;
-- 
2.43.0

Reply via email to