FAILED: patch "[PATCH] nfp: flower: add hardware offload check for post ct entry" failed to apply to 5.15-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 5.15-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.15.y
git checkout FETCH_HEAD
git cherry-pick -x cefa98e806fd4e2a5e2047457a11ae5f17b8f621
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2024021957-battering-gallows-35b2@gregkh' --subject-prefix 'PATCH 5.15.y' HEAD^..
Possible dependencies:
cefa98e806fd ("nfp: flower: add hardware offload check for post ct entry") 3e44d19934b9 ("nfp: flower: add goto_chain_index for ct entry")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From cefa98e806fd4e2a5e2047457a11ae5f17b8f621 Mon Sep 17 00:00:00 2001
From: Hui Zhou <[email protected]>
Date: Wed, 24 Jan 2024 17:19:08 +0200
Subject: [PATCH] nfp: flower: add hardware offload check for post ct entry
The nfp offload flow pay will not allocate a mask id when the out port is openvswitch internal port. This is because these flows are used to configure the pre_tun table and are never actually send to the firmware as an add-flow message. When a tc rule which action contains ct and the post ct entry's out port is openvswitch internal port, the merge offload flow pay with the wrong mask id of 0 will be send to the firmware. Actually, the nfp can not support hardware offload for this situation, so return EOPNOTSUPP.
drivers/net/ethernet/netronome/nfp/flower/conntrack.c +21 -1
@@ -1864,10 +1864,30 @@ int nfp_fl_ct_handle_post_ct(struct nfp_flower_priv *priv, {struct flow_rule *rule =flow_cls_offload_flow_rule (flow);struct nfp_fl_ct_flow_entry *ct_entry; +struct flow_action_entry *ct_goto;struct nfp_fl_ct_zone_entry *zt; +struct flow_action_entry *act;bool wildcarded = false;struct flow_match_ct ct; -struct flow_action_entry *ct_goto; +int i; + +flow_action_for_each (i, act, &rule->action) { +switch (act->id) { +case FLOW_ACTION_REDIRECT : +case FLOW_ACTION_REDIRECT_INGRESS : +case FLOW_ACTION_MIRRED : +case FLOW_ACTION_MIRRED_INGRESS : +if (act->dev->rtnl_link_ops && + !strcmp (act->dev->rtnl_link_ops->kind,"openvswitch" )) { +NL_SET_ERR_MSG_MOD (extack, +"unsupported offload: out port is openvswitch internal port" ); +return -EOPNOTSUPP ; + } +break ; +default : +break ; + } + }flow_rule_match_ct (rule, &ct);if (!ct.mask->ct_zone) {