Lines Matching full:match
230 match->value._field = fm.key->_tcfield; \
231 match->mask._field = fm.mask->_tcfield; \
240 struct efx_tc_match *match, in efx_tc_flower_parse_match() argument
243 struct flow_dissector *dissector = rule->match.dissector; in efx_tc_flower_parse_match()
269 match->value.ip_frag = fm.key->flags & FLOW_DIS_IS_FRAGMENT; in efx_tc_flower_parse_match()
270 match->mask.ip_frag = true; in efx_tc_flower_parse_match()
273 match->value.ip_firstfrag = fm.key->flags & FLOW_DIS_FIRST_FRAG; in efx_tc_flower_parse_match()
274 match->mask.ip_firstfrag = true; in efx_tc_flower_parse_match()
277 NL_SET_ERR_MSG_FMT_MOD(extack, "Unsupported match on control.flags %#x", in efx_tc_flower_parse_match()
307 if (!IS_ALL_ONES(match->mask.eth_proto) || in efx_tc_flower_parse_match()
308 !(match->value.eth_proto == htons(ETH_P_IP) || in efx_tc_flower_parse_match()
309 match->value.eth_proto == htons(ETH_P_IPV6))) in efx_tc_flower_parse_match()
327 match->value.vlan_proto[0] = fm.key->vlan_tpid; in efx_tc_flower_parse_match()
328 match->mask.vlan_proto[0] = fm.mask->vlan_tpid; in efx_tc_flower_parse_match()
329 match->value.vlan_tci[0] = cpu_to_be16(fm.key->vlan_priority << 13 | in efx_tc_flower_parse_match()
331 match->mask.vlan_tci[0] = cpu_to_be16(fm.mask->vlan_priority << 13 | in efx_tc_flower_parse_match()
341 match->value.vlan_proto[1] = fm.key->vlan_tpid; in efx_tc_flower_parse_match()
342 match->mask.vlan_proto[1] = fm.mask->vlan_tpid; in efx_tc_flower_parse_match()
343 match->value.vlan_tci[1] = cpu_to_be16(fm.key->vlan_priority << 13 | in efx_tc_flower_parse_match()
345 match->mask.vlan_tci[1] = cpu_to_be16(fm.mask->vlan_priority << 13 | in efx_tc_flower_parse_match()
354 ether_addr_copy(match->value.eth_saddr, fm.key->src); in efx_tc_flower_parse_match()
355 ether_addr_copy(match->value.eth_daddr, fm.key->dst); in efx_tc_flower_parse_match()
356 ether_addr_copy(match->mask.eth_saddr, fm.mask->src); in efx_tc_flower_parse_match()
357 ether_addr_copy(match->mask.eth_daddr, fm.mask->dst); in efx_tc_flower_parse_match()
362 if ((match->value.ip_proto != IPPROTO_UDP && in efx_tc_flower_parse_match()
363 match->value.ip_proto != IPPROTO_TCP) || !IS_ALL_ONES(match->mask.ip_proto)) in efx_tc_flower_parse_match()
392 NL_SET_ERR_MSG_FMT_MOD(extack, "Unsupported match on enc_control.flags %#x", in efx_tc_flower_parse_match()
443 match->value.ct_state_trk = !!(fm.key->ct_state & TCA_FLOWER_KEY_CT_FLAGS_TRACKED); in efx_tc_flower_parse_match()
444 match->mask.ct_state_trk = !!(fm.mask->ct_state & TCA_FLOWER_KEY_CT_FLAGS_TRACKED); in efx_tc_flower_parse_match()
445 match->value.ct_state_est = !!(fm.key->ct_state & TCA_FLOWER_KEY_CT_FLAGS_ESTABLISHED); in efx_tc_flower_parse_match()
446 match->mask.ct_state_est = !!(fm.mask->ct_state & TCA_FLOWER_KEY_CT_FLAGS_ESTABLISHED); in efx_tc_flower_parse_match()
450 "Unsupported ct_state match %#x", in efx_tc_flower_parse_match()
454 match->value.ct_mark = fm.key->ct_mark; in efx_tc_flower_parse_match()
455 match->mask.ct_mark = fm.mask->ct_mark; in efx_tc_flower_parse_match()
456 match->value.ct_zone = fm.key->ct_zone; in efx_tc_flower_parse_match()
457 match->mask.ct_zone = fm.mask->ct_zone; in efx_tc_flower_parse_match()
483 "Failed to release encap match %#x, rc %d\n", in efx_tc_flower_release_encap_match()
494 struct efx_tc_match *match, in efx_tc_flower_record_encap_match() argument
506 * port) are present and exact-match. Other fields may only be used in efx_tc_flower_record_encap_match()
511 if (match->mask.enc_dst_ip | match->mask.enc_src_ip) { in efx_tc_flower_record_encap_match()
512 if (!IS_ALL_ONES(match->mask.enc_dst_ip)) { in efx_tc_flower_record_encap_match()
514 "Egress encap match is not exact on dst IP address"); in efx_tc_flower_record_encap_match()
517 if (!IS_ALL_ONES(match->mask.enc_src_ip)) { in efx_tc_flower_record_encap_match()
519 "Egress encap match is not exact on src IP address"); in efx_tc_flower_record_encap_match()
523 if (!ipv6_addr_any(&match->mask.enc_dst_ip6) || in efx_tc_flower_record_encap_match()
524 !ipv6_addr_any(&match->mask.enc_src_ip6)) { in efx_tc_flower_record_encap_match()
526 "Egress encap match on both IPv4 and IPv6, don't understand"); in efx_tc_flower_record_encap_match()
531 if (!efx_ipv6_addr_all_ones(&match->mask.enc_dst_ip6)) { in efx_tc_flower_record_encap_match()
533 "Egress encap match is not exact on dst IP address"); in efx_tc_flower_record_encap_match()
536 if (!efx_ipv6_addr_all_ones(&match->mask.enc_src_ip6)) { in efx_tc_flower_record_encap_match()
538 "Egress encap match is not exact on src IP address"); in efx_tc_flower_record_encap_match()
543 if (!IS_ALL_ONES(match->mask.enc_dport)) { in efx_tc_flower_record_encap_match()
544 NL_SET_ERR_MSG_MOD(extack, "Egress encap match is not exact on dst UDP port"); in efx_tc_flower_record_encap_match()
547 if (match->mask.enc_sport || match->mask.enc_ip_tos) { in efx_tc_flower_record_encap_match()
548 struct efx_tc_match pmatch = *match; in efx_tc_flower_record_encap_match()
551 NL_SET_ERR_MSG_MOD(extack, "Bad recursion in egress encap match handler"); in efx_tc_flower_record_encap_match()
560 match->mask.enc_ip_tos, in efx_tc_flower_record_encap_match()
561 match->mask.enc_sport, in efx_tc_flower_record_encap_match()
567 if (match->mask.enc_ip_ttl) { in efx_tc_flower_record_encap_match()
568 NL_SET_ERR_MSG_MOD(extack, "Egress encap match on IP TTL not supported"); in efx_tc_flower_record_encap_match()
573 rc = efx_mae_check_encap_match_caps(efx, ipv6, match->mask.enc_ip_tos, in efx_tc_flower_record_encap_match()
574 match->mask.enc_sport, extack); in efx_tc_flower_record_encap_match()
583 encap->src_ip = match->value.enc_src_ip; in efx_tc_flower_record_encap_match()
584 encap->dst_ip = match->value.enc_dst_ip; in efx_tc_flower_record_encap_match()
586 encap->src_ip6 = match->value.enc_src_ip6; in efx_tc_flower_record_encap_match()
587 encap->dst_ip6 = match->value.enc_dst_ip6; in efx_tc_flower_record_encap_match()
589 encap->udp_dport = match->value.enc_dport; in efx_tc_flower_record_encap_match()
591 encap->ip_tos = match->value.enc_ip_tos; in efx_tc_flower_record_encap_match()
592 encap->ip_tos_mask = match->mask.enc_ip_tos; in efx_tc_flower_record_encap_match()
594 encap->udp_sport = match->value.enc_sport; in efx_tc_flower_record_encap_match()
595 encap->udp_sport_mask = match->mask.enc_sport; in efx_tc_flower_record_encap_match()
617 NL_SET_ERR_MSG_MOD(extack, "Pseudo encap match conflicts with existing direct entry"); in efx_tc_flower_record_encap_match()
626 "%s encap match conflicts with existing pseudo(MASK) entry", in efx_tc_flower_record_encap_match()
632 "Pseudo encap match for TOS mask %#04x conflicts with existing mask %#04x", in efx_tc_flower_record_encap_match()
639 "Pseudo encap match for UDP src port mask %#x conflicts with existing mask %#x", in efx_tc_flower_record_encap_match()
651 "%s encap match conflicts with existing pseudo(OR) entry", in efx_tc_flower_record_encap_match()
656 "%s encap match conflicts with existing pseudo(%d) entry", in efx_tc_flower_record_encap_match()
664 "Egress encap match with conflicting tun_type %u != %u", in efx_tc_flower_record_encap_match()
676 NL_SET_ERR_MSG_MOD(extack, "Failed to record egress encap match in HW"); in efx_tc_flower_record_encap_match()
682 match->encap = encap; in efx_tc_flower_record_encap_match()
753 if (rule->match.rid) in efx_tc_delete_rule()
754 efx_tc_put_recirc_id(efx, rule->match.rid); in efx_tc_delete_rule()
755 if (rule->match.encap) in efx_tc_delete_rule()
756 efx_tc_flower_release_encap_match(efx, rule->match.encap); in efx_tc_delete_rule()
847 * chain N, which typically match on +trk+est, and may perform ct(nat) actions.
858 struct efx_tc_match *match) in efx_tc_rule_is_lhs_rule() argument
874 if (!match->mask.ct_state_trk || !match->value.ct_state_trk) in efx_tc_rule_is_lhs_rule()
885 * implied match on enc_ip_proto UDP). Translate these into non-enc_ keys,
897 static int efx_tc_flower_translate_flhs_match(struct efx_tc_match *match) in efx_tc_flower_translate_flhs_match() argument
902 if (match->mask._key) { \ in efx_tc_flower_translate_flhs_match()
905 match->mask._key = match->mask._ekey; \ in efx_tc_flower_translate_flhs_match()
906 match->mask._ekey = 0; \ in efx_tc_flower_translate_flhs_match()
907 match->value._key = match->value._ekey; \ in efx_tc_flower_translate_flhs_match()
908 match->value._ekey = 0; \ in efx_tc_flower_translate_flhs_match()
913 if (match->mask.ip_proto) in efx_tc_flower_translate_flhs_match()
915 match->mask.ip_proto = ~0; in efx_tc_flower_translate_flhs_match()
916 match->value.ip_proto = IPPROTO_UDP; in efx_tc_flower_translate_flhs_match()
920 if (!ipv6_addr_any(&match->mask.src_ip6)) in efx_tc_flower_translate_flhs_match()
922 match->mask.src_ip6 = match->mask.enc_src_ip6; in efx_tc_flower_translate_flhs_match()
923 memset(&match->mask.enc_src_ip6, 0, sizeof(struct in6_addr)); in efx_tc_flower_translate_flhs_match()
924 if (!ipv6_addr_any(&match->mask.dst_ip6)) in efx_tc_flower_translate_flhs_match()
926 match->mask.dst_ip6 = match->mask.enc_dst_ip6; in efx_tc_flower_translate_flhs_match()
927 memset(&match->mask.enc_dst_ip6, 0, sizeof(struct in6_addr)); in efx_tc_flower_translate_flhs_match()
942 /* If a foreign LHS rule wants to match on keys that are only available after
947 * Return true iff the passed match requires this.
949 static bool efx_tc_flower_flhs_needs_ar(struct efx_tc_match *match) in efx_tc_flower_flhs_needs_ar() argument
952 return match->mask.eth_proto || in efx_tc_flower_flhs_needs_ar()
953 match->mask.vlan_tci[0] || match->mask.vlan_tci[1] || in efx_tc_flower_flhs_needs_ar()
954 match->mask.vlan_proto[0] || match->mask.vlan_proto[1] || in efx_tc_flower_flhs_needs_ar()
955 memchr_inv(match->mask.eth_saddr, 0, ETH_ALEN) || in efx_tc_flower_flhs_needs_ar()
956 memchr_inv(match->mask.eth_daddr, 0, ETH_ALEN) || in efx_tc_flower_flhs_needs_ar()
957 match->mask.ip_proto || in efx_tc_flower_flhs_needs_ar()
958 match->mask.ip_tos || match->mask.ip_ttl || in efx_tc_flower_flhs_needs_ar()
959 match->mask.src_ip || match->mask.dst_ip || in efx_tc_flower_flhs_needs_ar()
961 !ipv6_addr_any(&match->mask.src_ip6) || in efx_tc_flower_flhs_needs_ar()
962 !ipv6_addr_any(&match->mask.dst_ip6) || in efx_tc_flower_flhs_needs_ar()
964 match->mask.ip_frag || match->mask.ip_firstfrag || in efx_tc_flower_flhs_needs_ar()
965 match->mask.l4_sport || match->mask.l4_dport || in efx_tc_flower_flhs_needs_ar()
966 match->mask.tcp_flags || in efx_tc_flower_flhs_needs_ar()
968 match->mask.enc_keyid; in efx_tc_flower_flhs_needs_ar()
1235 * @match: original match used along with the mangle action
1247 struct efx_tc_match *match) in efx_tc_mangle() argument
1325 * exact match on the ttl field in efx_tc_mangle()
1327 if (match->mask.ip_ttl != U8_MAX) { in efx_tc_mangle()
1329 "only support mangle ttl when we have an exact match, current mask (%#x)", in efx_tc_mangle()
1330 match->mask.ip_ttl); in efx_tc_mangle()
1337 if (match->value.ip_ttl == 0) { in efx_tc_mangle()
1352 tr_ttl = match->value.ip_ttl - 1; in efx_tc_mangle()
1384 * exact match on the ttl field in efx_tc_mangle()
1386 if (match->mask.ip_ttl != U8_MAX) { in efx_tc_mangle()
1388 "only support hop_limit when we have an exact match, current mask (%#x)", in efx_tc_mangle()
1389 match->mask.ip_ttl); in efx_tc_mangle()
1396 if (match->value.ip_ttl == 0) { in efx_tc_mangle()
1411 tr_ttl = match->value.ip_ttl - 1; in efx_tc_mangle()
1459 struct efx_tc_match *match, in efx_tc_flower_replace_foreign_lhs_ar() argument
1469 NL_SET_ERR_MSG_MOD(extack, "Egress encap match on unsupported tunnel device"); in efx_tc_flower_replace_foreign_lhs_ar()
1476 "Firmware reports no support for %s encap match", in efx_tc_flower_replace_foreign_lhs_ar()
1480 /* This is an Action Rule, so it needs a separate Encap Match in the in efx_tc_flower_replace_foreign_lhs_ar()
1483 rc = efx_tc_flower_record_encap_match(efx, match, type, in efx_tc_flower_replace_foreign_lhs_ar()
1488 match->mask.recirc_id = 0xff; in efx_tc_flower_replace_foreign_lhs_ar()
1489 if (match->mask.ct_state_trk && match->value.ct_state_trk) { in efx_tc_flower_replace_foreign_lhs_ar()
1490 NL_SET_ERR_MSG_MOD(extack, "LHS rule can never match +trk"); in efx_tc_flower_replace_foreign_lhs_ar()
1494 /* LHS rules are always -trk, so we don't need to match on that */ in efx_tc_flower_replace_foreign_lhs_ar()
1495 match->mask.ct_state_trk = 0; in efx_tc_flower_replace_foreign_lhs_ar()
1496 match->value.ct_state_trk = 0; in efx_tc_flower_replace_foreign_lhs_ar()
1497 /* We must inhibit match on TCP SYN/FIN/RST, so that SW can see in efx_tc_flower_replace_foreign_lhs_ar()
1506 match->mask.tcp_syn_fin_rst = true; in efx_tc_flower_replace_foreign_lhs_ar()
1508 rc = efx_mae_match_check_caps(efx, &match->mask, extack); in efx_tc_flower_replace_foreign_lhs_ar()
1535 rule->match = *match; in efx_tc_flower_replace_foreign_lhs_ar()
1555 if (match->encap) in efx_tc_flower_replace_foreign_lhs_ar()
1556 efx_tc_flower_release_encap_match(efx, match->encap); in efx_tc_flower_replace_foreign_lhs_ar()
1563 struct efx_tc_match *match, in efx_tc_flower_replace_foreign_lhs() argument
1576 if (!efx_tc_match_is_encap(&match->mask)) { in efx_tc_flower_replace_foreign_lhs()
1578 netif_dbg(efx, drv, efx->net_dev, "Ignoring foreign LHS filter without encap match\n"); in efx_tc_flower_replace_foreign_lhs()
1582 if (efx_tc_flower_flhs_needs_ar(match)) in efx_tc_flower_replace_foreign_lhs()
1583 return efx_tc_flower_replace_foreign_lhs_ar(efx, tc, fr, match, in efx_tc_flower_replace_foreign_lhs()
1588 NL_SET_ERR_MSG_MOD(extack, "Egress encap match on unsupported tunnel device\n"); in efx_tc_flower_replace_foreign_lhs()
1595 "Firmware reports no support for %s encap match", in efx_tc_flower_replace_foreign_lhs()
1599 /* Reserve the outer tuple with a pseudo Encap Match */ in efx_tc_flower_replace_foreign_lhs()
1600 rc = efx_tc_flower_record_encap_match(efx, match, type, in efx_tc_flower_replace_foreign_lhs()
1606 if (match->mask.ct_state_trk && match->value.ct_state_trk) { in efx_tc_flower_replace_foreign_lhs()
1607 NL_SET_ERR_MSG_MOD(extack, "LHS rule can never match +trk"); in efx_tc_flower_replace_foreign_lhs()
1611 /* LHS rules are always -trk, so we don't need to match on that */ in efx_tc_flower_replace_foreign_lhs()
1612 match->mask.ct_state_trk = 0; in efx_tc_flower_replace_foreign_lhs()
1613 match->value.ct_state_trk = 0; in efx_tc_flower_replace_foreign_lhs()
1615 rc = efx_tc_flower_translate_flhs_match(match); in efx_tc_flower_replace_foreign_lhs()
1617 NL_SET_ERR_MSG_MOD(extack, "LHS rule cannot match on inner fields"); in efx_tc_flower_replace_foreign_lhs()
1621 rc = efx_mae_match_check_caps_lhs(efx, &match->mask, extack); in efx_tc_flower_replace_foreign_lhs()
1647 rule->match = *match; in efx_tc_flower_replace_foreign_lhs()
1667 if (match->encap) in efx_tc_flower_replace_foreign_lhs()
1668 efx_tc_flower_release_encap_match(efx, match->encap); in efx_tc_flower_replace_foreign_lhs()
1682 struct efx_tc_match match; in efx_tc_flower_replace_foreign() local
1687 /* Parse match */ in efx_tc_flower_replace_foreign()
1688 memset(&match, 0, sizeof(match)); in efx_tc_flower_replace_foreign()
1689 rc = efx_tc_flower_parse_match(efx, fr, &match, extack); in efx_tc_flower_replace_foreign()
1693 * But, determining whether packets from a VF should match it is in efx_tc_flower_replace_foreign()
1702 match.value.ingress_port = rc; in efx_tc_flower_replace_foreign()
1703 match.mask.ingress_port = ~0; in efx_tc_flower_replace_foreign()
1705 if (efx_tc_rule_is_lhs_rule(fr, &match)) in efx_tc_flower_replace_foreign()
1706 return efx_tc_flower_replace_foreign_lhs(efx, tc, fr, &match, in efx_tc_flower_replace_foreign()
1719 match.rid = rid; in efx_tc_flower_replace_foreign()
1720 match.value.recirc_id = rid->fw_id; in efx_tc_flower_replace_foreign()
1722 match.mask.recirc_id = 0xff; in efx_tc_flower_replace_foreign()
1724 /* AR table can't match on DO_CT (+trk). But a commonly used pattern is in efx_tc_flower_replace_foreign()
1727 if (match.mask.ct_state_trk && match.value.ct_state_trk && in efx_tc_flower_replace_foreign()
1728 match.mask.ct_state_est && match.value.ct_state_est) in efx_tc_flower_replace_foreign()
1729 match.mask.ct_state_trk = 0; in efx_tc_flower_replace_foreign()
1731 * match +trk-est (CT_HIT=0) despite being on an established connection. in efx_tc_flower_replace_foreign()
1732 * So make -est imply -tcp_syn_fin_rst match to ensure these packets in efx_tc_flower_replace_foreign()
1735 if (match.mask.ct_state_est && !match.value.ct_state_est) { in efx_tc_flower_replace_foreign()
1736 if (match.value.tcp_syn_fin_rst) { in efx_tc_flower_replace_foreign()
1742 match.mask.tcp_syn_fin_rst = true; in efx_tc_flower_replace_foreign()
1765 rc = efx_mae_match_check_caps(efx, &match.mask, extack); in efx_tc_flower_replace_foreign()
1769 if (efx_tc_match_is_encap(&match.mask)) { in efx_tc_flower_replace_foreign()
1775 "Egress encap match on unsupported tunnel device"); in efx_tc_flower_replace_foreign()
1783 "Firmware reports no support for %s encap match", in efx_tc_flower_replace_foreign()
1788 rc = efx_tc_flower_record_encap_match(efx, &match, type, in efx_tc_flower_replace_foreign()
1796 "Ignoring foreign filter without encap match\n"); in efx_tc_flower_replace_foreign()
1953 rule->match = match; in efx_tc_flower_replace_foreign()
1964 rc = efx_mae_insert_rule(efx, &rule->match, EFX_TC_PRIO_TC, in efx_tc_flower_replace_foreign()
1978 if (match.rid) in efx_tc_flower_replace_foreign()
1979 efx_tc_put_recirc_id(efx, match.rid); in efx_tc_flower_replace_foreign()
1990 if (match.encap) in efx_tc_flower_replace_foreign()
1991 efx_tc_flower_release_encap_match(efx, match.encap); in efx_tc_flower_replace_foreign()
1998 struct efx_tc_match *match, in efx_tc_flower_replace_lhs() argument
2011 if (match->mask.ct_state_trk && match->value.ct_state_trk) { in efx_tc_flower_replace_lhs()
2012 NL_SET_ERR_MSG_MOD(extack, "LHS rule can never match +trk"); in efx_tc_flower_replace_lhs()
2015 /* LHS rules are always -trk, so we don't need to match on that */ in efx_tc_flower_replace_lhs()
2016 match->mask.ct_state_trk = 0; in efx_tc_flower_replace_lhs()
2017 match->value.ct_state_trk = 0; in efx_tc_flower_replace_lhs()
2019 rc = efx_mae_match_check_caps_lhs(efx, &match->mask, extack); in efx_tc_flower_replace_lhs()
2049 rule->match = *match; in efx_tc_flower_replace_lhs()
2083 struct efx_tc_match match; in efx_tc_flower_replace() local
2109 /* Parse match */ in efx_tc_flower_replace()
2110 memset(&match, 0, sizeof(match)); in efx_tc_flower_replace()
2116 match.value.ingress_port = rc; in efx_tc_flower_replace()
2117 match.mask.ingress_port = ~0; in efx_tc_flower_replace()
2118 rc = efx_tc_flower_parse_match(efx, fr, &match, extack); in efx_tc_flower_replace()
2121 if (efx_tc_match_is_encap(&match.mask)) { in efx_tc_flower_replace()
2126 if (efx_tc_rule_is_lhs_rule(fr, &match)) in efx_tc_flower_replace()
2127 return efx_tc_flower_replace_lhs(efx, tc, fr, &match, efv, in efx_tc_flower_replace()
2131 * Conveniently, match.rid == NULL and match.value.recirc_id == 0 owing in efx_tc_flower_replace()
2155 match.rid = rid; in efx_tc_flower_replace()
2156 match.value.recirc_id = rid->fw_id; in efx_tc_flower_replace()
2158 match.mask.recirc_id = 0xff; in efx_tc_flower_replace()
2160 /* AR table can't match on DO_CT (+trk). But a commonly used pattern is in efx_tc_flower_replace()
2163 if (match.mask.ct_state_trk && match.value.ct_state_trk && in efx_tc_flower_replace()
2164 match.mask.ct_state_est && match.value.ct_state_est) in efx_tc_flower_replace()
2165 match.mask.ct_state_trk = 0; in efx_tc_flower_replace()
2167 * match +trk-est (CT_HIT=0) despite being on an established connection. in efx_tc_flower_replace()
2168 * So make -est imply -tcp_syn_fin_rst match to ensure these packets in efx_tc_flower_replace()
2171 if (match.mask.ct_state_est && !match.value.ct_state_est) { in efx_tc_flower_replace()
2172 if (match.value.tcp_syn_fin_rst) { in efx_tc_flower_replace()
2177 match.mask.tcp_syn_fin_rst = true; in efx_tc_flower_replace()
2180 rc = efx_mae_match_check_caps(efx, &match.mask, extack); in efx_tc_flower_replace()
2425 rc = efx_tc_mangle(efx, act, fa, &mung, extack, &match); in efx_tc_flower_replace()
2507 rule->match = match; in efx_tc_flower_replace()
2527 rc = efx_mae_insert_rule(efx, &rule->match, EFX_TC_PRIO_TC, in efx_tc_flower_replace()
2541 if (match.rid) in efx_tc_flower_replace()
2542 efx_tc_put_recirc_id(efx, match.rid); in efx_tc_flower_replace()
2573 if (lhs_rule->match.encap) in efx_tc_flower_destroy()
2574 efx_tc_flower_release_encap_match(efx, lhs_rule->match.encap); in efx_tc_flower_destroy()
2673 struct efx_tc_match *match = &rule->match; in efx_tc_configure_default_rule() local
2677 match->value.ingress_port = ing_port; in efx_tc_configure_default_rule()
2678 match->mask.ingress_port = ~0; in efx_tc_configure_default_rule()
2692 rc = efx_mae_insert_rule(efx, match, EFX_TC_PRIO_DFLT, in efx_tc_configure_default_rule()
2868 /* Firmware supports some match fields the driver doesn't know in efx_init_tc()
2873 "FW reports additional match fields %u\n", in efx_init_tc()