ice: refactor ICE_TC_FLWR_FIELD_ENC_OPTS
authorMarcin Szycik <marcin.szycik@linux.intel.com>
Wed, 27 Mar 2024 15:23:57 +0000 (16:23 +0100)
committerDavid S. Miller <davem@davemloft.net>
Mon, 1 Apr 2024 09:49:29 +0000 (10:49 +0100)
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.szycik@linux.intel.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: Alexander Lobakin <aleksander.lobakin@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/intel/ice/ice_tc_lib.c
drivers/net/ethernet/intel/ice/ice_tc_lib.h

index b890410a2bc0bacd27eab5acd6f87cd8b0110939..80797db9f2b9b4ec8e5b219fd40978161b538a23 100644 (file)
@@ -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;
index 65d387163a46baa34763b5291faf95d9198f6404..5d188ad7517adc68ab9d05885875ac37996bb1a4 100644 (file)
@@ -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)