ice: refactor ICE_TC_FLWR_FIELD_ENC_OPTS
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>
This commit is contained in:
parent
6dd514f481
commit
2312dfdfab
@ -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)
|
if (flags & ICE_TC_FLWR_FIELD_ENC_DST_MAC)
|
||||||
lkups_cnt++;
|
lkups_cnt++;
|
||||||
|
|
||||||
if (flags & ICE_TC_FLWR_FIELD_ENC_OPTS)
|
if (flags & ICE_TC_FLWR_FIELD_GTP_OPTS)
|
||||||
lkups_cnt++;
|
lkups_cnt++;
|
||||||
|
|
||||||
if (flags & (ICE_TC_FLWR_FIELD_ENC_SRC_IPV4 |
|
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++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags & ICE_TC_FLWR_FIELD_ENC_OPTS &&
|
if (flags & ICE_TC_FLWR_FIELD_GTP_OPTS) {
|
||||||
(fltr->tunnel_type == TNL_GTPU || fltr->tunnel_type == TNL_GTPC)) {
|
|
||||||
list[i].type = ice_proto_type_from_tunnel(fltr->tunnel_type);
|
list[i].type = ice_proto_type_from_tunnel(fltr->tunnel_type);
|
||||||
|
|
||||||
if (fltr->gtp_pdu_info_masks.pdu_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;
|
struct flow_match_enc_opts match;
|
||||||
|
|
||||||
flow_rule_match_enc_opts(rule, &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],
|
memcpy(&fltr->gtp_pdu_info_masks, &match.mask->data[0],
|
||||||
sizeof(struct gtp_pdu_session_info));
|
sizeof(struct gtp_pdu_session_info));
|
||||||
|
|
||||||
fltr->flags |= ICE_TC_FLWR_FIELD_ENC_OPTS;
|
fltr->flags |= ICE_TC_FLWR_FIELD_GTP_OPTS;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
#define ICE_TC_FLWR_FIELD_ENC_SRC_L4_PORT BIT(15)
|
#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_ENC_DST_MAC BIT(16)
|
||||||
#define ICE_TC_FLWR_FIELD_ETH_TYPE_ID BIT(17)
|
#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_CVLAN BIT(19)
|
||||||
#define ICE_TC_FLWR_FIELD_PPPOE_SESSID BIT(20)
|
#define ICE_TC_FLWR_FIELD_PPPOE_SESSID BIT(20)
|
||||||
#define ICE_TC_FLWR_FIELD_PPP_PROTO BIT(21)
|
#define ICE_TC_FLWR_FIELD_PPP_PROTO BIT(21)
|
||||||
|
Loading…
Reference in New Issue
Block a user