Lines Matching full:merge
590 struct nfp_flower_merge_check *merge, in nfp_flower_update_merge_with_actions() argument
620 merge->tci = cpu_to_be16(0xffff); in nfp_flower_update_merge_with_actions()
623 merge->tci = cpu_to_be16(0); in nfp_flower_update_merge_with_actions()
627 eth_broadcast_addr(&merge->l2.mac_dst[0]); in nfp_flower_update_merge_with_actions()
628 eth_broadcast_addr(&merge->l2.mac_src[0]); in nfp_flower_update_merge_with_actions()
629 memset(&merge->l4, 0xff, in nfp_flower_update_merge_with_actions()
632 memset(&merge->ipv6, 0xff, in nfp_flower_update_merge_with_actions()
635 memset(&merge->ipv4, 0xff, in nfp_flower_update_merge_with_actions()
641 merge->l2.mac_dst[i] |= eth->eth_addr_mask[i]; in nfp_flower_update_merge_with_actions()
643 merge->l2.mac_src[i] |= in nfp_flower_update_merge_with_actions()
648 merge->ipv4.ipv4_src |= ipv4_add->ipv4_src_mask; in nfp_flower_update_merge_with_actions()
649 merge->ipv4.ipv4_dst |= ipv4_add->ipv4_dst_mask; in nfp_flower_update_merge_with_actions()
653 merge->ipv4.ip_ext.ttl |= ipv4_ttl_tos->ipv4_ttl_mask; in nfp_flower_update_merge_with_actions()
654 merge->ipv4.ip_ext.tos |= ipv4_ttl_tos->ipv4_tos_mask; in nfp_flower_update_merge_with_actions()
659 merge->ipv6.ipv6_src.in6_u.u6_addr32[i] |= in nfp_flower_update_merge_with_actions()
665 merge->ipv6.ipv6_dst.in6_u.u6_addr32[i] |= in nfp_flower_update_merge_with_actions()
670 merge->ipv6.ip_ext.ttl |= in nfp_flower_update_merge_with_actions()
672 merge->ipv6.ip_ext.tos |= ipv6_tc_hl_fl->ipv6_tc_mask; in nfp_flower_update_merge_with_actions()
673 merge->ipv6.ipv6_flow_label_exthdr |= in nfp_flower_update_merge_with_actions()
679 ports = (u8 *)&merge->l4.port_src; in nfp_flower_update_merge_with_actions()
706 struct nfp_flower_merge_check *merge, in nfp_flower_populate_merge_match() argument
713 memset(merge, 0, sizeof(struct nfp_flower_merge_check)); in nfp_flower_populate_merge_match()
721 merge->tci = meta_tci->tci; in nfp_flower_populate_merge_match()
731 memcpy(&merge->l2, mask, match_size); in nfp_flower_populate_merge_match()
737 memcpy(&merge->l4, mask, match_size); in nfp_flower_populate_merge_match()
743 memcpy(&merge->ipv4, mask, match_size); in nfp_flower_populate_merge_match()
748 memcpy(&merge->ipv6, mask, match_size); in nfp_flower_populate_merge_match()
786 /* Reject merge if sub_flow2 matches on something that is not matched in nfp_flower_can_merge()
889 /* The last action of sub_flow1 must be output - do not merge this. */ in nfp_flower_merge_action()
908 /* Copy any pre-actions to the start of merge flow action list. */ in nfp_flower_merge_action()
922 * valid merge. in nfp_flower_merge_action()
942 /* Update tunnel action in merge to include VLAN push. */ in nfp_flower_merge_action()
995 * nfp_flower_merge_offloaded_flows() - Merge 2 existing flows to single flow.
997 * @sub_flow1: Initial flow matched to produce merge hint
998 * @sub_flow2: Post recirculation flow matched in merge hint
1471 /* Re-add rule the merge had overwritten if it has not been deleted. */ in nfp_flower_remove_merge_flow()
1477 nfp_flower_cmsg_warn(app, "Metadata fail for merge flow delete.\n"); in nfp_flower_remove_merge_flow()
1493 nfp_flower_cmsg_warn(app, "Failed to revert merge flow.\n"); in nfp_flower_remove_merge_flow()
1532 /* Remove any merge flow formed from the deleted sub_flow. */ in nfp_flower_del_linked_merge_flows()
1647 /* Reset stats for the merge flow. */ in __nfp_flower_update_merge_stats()
1651 /* The merge flow has received stats updates from firmware. in __nfp_flower_update_merge_stats()
1652 * Distribute these stats to all subflows that form the merge. in __nfp_flower_update_merge_stats()
1671 /* Get merge flows that the subflow forms to distribute their stats. */ in nfp_flower_update_merge_stats()