Lines Matching full:merge
586 struct nfp_flower_merge_check *merge, in nfp_flower_update_merge_with_actions() argument
616 merge->tci = cpu_to_be16(0xffff); in nfp_flower_update_merge_with_actions()
619 merge->tci = cpu_to_be16(0); in nfp_flower_update_merge_with_actions()
623 eth_broadcast_addr(&merge->l2.mac_dst[0]); in nfp_flower_update_merge_with_actions()
624 eth_broadcast_addr(&merge->l2.mac_src[0]); in nfp_flower_update_merge_with_actions()
625 memset(&merge->l4, 0xff, in nfp_flower_update_merge_with_actions()
628 memset(&merge->ipv6, 0xff, in nfp_flower_update_merge_with_actions()
631 memset(&merge->ipv4, 0xff, in nfp_flower_update_merge_with_actions()
637 merge->l2.mac_dst[i] |= eth->eth_addr_mask[i]; in nfp_flower_update_merge_with_actions()
639 merge->l2.mac_src[i] |= in nfp_flower_update_merge_with_actions()
644 merge->ipv4.ipv4_src |= ipv4_add->ipv4_src_mask; in nfp_flower_update_merge_with_actions()
645 merge->ipv4.ipv4_dst |= ipv4_add->ipv4_dst_mask; in nfp_flower_update_merge_with_actions()
649 merge->ipv4.ip_ext.ttl |= ipv4_ttl_tos->ipv4_ttl_mask; in nfp_flower_update_merge_with_actions()
650 merge->ipv4.ip_ext.tos |= ipv4_ttl_tos->ipv4_tos_mask; in nfp_flower_update_merge_with_actions()
655 merge->ipv6.ipv6_src.in6_u.u6_addr32[i] |= in nfp_flower_update_merge_with_actions()
661 merge->ipv6.ipv6_dst.in6_u.u6_addr32[i] |= in nfp_flower_update_merge_with_actions()
666 merge->ipv6.ip_ext.ttl |= in nfp_flower_update_merge_with_actions()
668 merge->ipv6.ip_ext.tos |= ipv6_tc_hl_fl->ipv6_tc_mask; in nfp_flower_update_merge_with_actions()
669 merge->ipv6.ipv6_flow_label_exthdr |= in nfp_flower_update_merge_with_actions()
675 ports = (u8 *)&merge->l4.port_src; in nfp_flower_update_merge_with_actions()
702 struct nfp_flower_merge_check *merge, in nfp_flower_populate_merge_match() argument
709 memset(merge, 0, sizeof(struct nfp_flower_merge_check)); in nfp_flower_populate_merge_match()
717 merge->tci = meta_tci->tci; in nfp_flower_populate_merge_match()
727 memcpy(&merge->l2, mask, match_size); in nfp_flower_populate_merge_match()
733 memcpy(&merge->l4, mask, match_size); in nfp_flower_populate_merge_match()
739 memcpy(&merge->ipv4, mask, match_size); in nfp_flower_populate_merge_match()
744 memcpy(&merge->ipv6, mask, match_size); in nfp_flower_populate_merge_match()
782 /* Reject merge if sub_flow2 matches on something that is not matched in nfp_flower_can_merge()
885 /* The last action of sub_flow1 must be output - do not merge this. */ in nfp_flower_merge_action()
904 /* Copy any pre-actions to the start of merge flow action list. */ in nfp_flower_merge_action()
918 * valid merge. in nfp_flower_merge_action()
938 /* Update tunnel action in merge to include VLAN push. */ in nfp_flower_merge_action()
991 * nfp_flower_merge_offloaded_flows() - Merge 2 existing flows to single flow.
993 * @sub_flow1: Initial flow matched to produce merge hint
994 * @sub_flow2: Post recirculation flow matched in merge hint
1469 /* Re-add rule the merge had overwritten if it has not been deleted. */ in nfp_flower_remove_merge_flow()
1475 nfp_flower_cmsg_warn(app, "Metadata fail for merge flow delete.\n"); in nfp_flower_remove_merge_flow()
1491 nfp_flower_cmsg_warn(app, "Failed to revert merge flow.\n"); in nfp_flower_remove_merge_flow()
1530 /* Remove any merge flow formed from the deleted sub_flow. */ in nfp_flower_del_linked_merge_flows()
1645 /* Reset stats for the merge flow. */ in __nfp_flower_update_merge_stats()
1649 /* The merge flow has received stats updates from firmware. in __nfp_flower_update_merge_stats()
1650 * Distribute these stats to all subflows that form the merge. in __nfp_flower_update_merge_stats()
1669 /* Get merge flows that the subflow forms to distribute their stats. */ in nfp_flower_update_merge_stats()