From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id DCD79A00BE for ; Tue, 19 May 2020 15:10:34 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 55C291D6EC; Tue, 19 May 2020 15:10:34 +0200 (CEST) Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) by dpdk.org (Postfix) with ESMTP id 4906F1D6DF for ; Tue, 19 May 2020 15:10:33 +0200 (CEST) Received: by mail-wm1-f66.google.com with SMTP id m185so3490654wme.3 for ; Tue, 19 May 2020 06:10:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=K5qg0kq1uuFyw81VZwuLPoIkEa2Bxh3HMZNN8iYZyVA=; b=gEwydW2pUFwSdNI51sRCZ9IvroeIHtW53bzkaYhX7fTBfAMuqYe66wGhDuddnf7lS4 Pif3dLeur9+f6VoZKHBKKApUuwId6oYs9CpUN6hOJoRp9Q/8epH1RDUTMWqPBhcgoWBp lTYdToW3KBjRu7YSRUCGn3+z9h+y2b09VSPL+BqZ8oFpBs1inQqXeVKFwYU0hxTBAbyK zqDezB7WInb32uNulwE7rywtRGqrxOCuNOOvZBAJa9KjykES/nhoCnshbu4xl2IhBtCC AVNxl9hvP6qfbXMU/a4eXLkC/QhmHJE+gfsa+6edXBWzm+POktaKYVzQ1qeJzJAfzWLw jPMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=K5qg0kq1uuFyw81VZwuLPoIkEa2Bxh3HMZNN8iYZyVA=; b=uUjhJ8JRzXuRpwpZ1uYFqoBUufmA34XpLFKwXMkXywEqKvthK8jqmN8onLZSweZumm oChZtFFIXE+Mvi+WaxXzUUFICGuIAuE2xubh88kzFHWwGOF30Xpzp1sU+tpyda+av6/H KLu1Wd30jrB5z8vhBpOhGzBVZPAvrwxdwDhBxz0s5z461nQrwE/DLehjtZha+/LTJBqd TPf+PoX8xTtohJIHThtHg6dqQv0jmL8B5HNhs5n0E8Ep+RaKY6+1RD6q7+dy6xXlJ0ba xP3ppQmJZ2n0Hw6iU1ZSpk7WPBAOGZuOwhuzcEx8gtD18/pTwc3i1vLAd1d4PCMK60vp f6+Q== X-Gm-Message-State: AOAM532elZJtFkFWMaDQ/C2p696n7rUO2ltGO7IL4RoBKlQxCpjfwCSs j1/vN+bg4S9/y0/JmWQJh+c= X-Google-Smtp-Source: ABdhPJye2uRKCv5zqtSOK5SNHptXCjVrYI5R5W7oM5Oo/jeu2ETWNlhrB6rUPXkhWtDeBCC+eqE/IQ== X-Received: by 2002:a05:600c:34c:: with SMTP id u12mr5446463wmd.4.1589893832878; Tue, 19 May 2020 06:10:32 -0700 (PDT) Received: from localhost ([88.98.246.218]) by smtp.gmail.com with ESMTPSA id v20sm24342681wrd.9.2020.05.19.06.10.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 May 2020 06:10:32 -0700 (PDT) From: luca.boccassi@gmail.com To: Hyong Youb Kim Cc: John Daley , dpdk stable Date: Tue, 19 May 2020 14:03:45 +0100 Message-Id: <20200519130549.112823-90-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200519130549.112823-1-luca.boccassi@gmail.com> References: <20200519125804.104349-1-luca.boccassi@gmail.com> <20200519130549.112823-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'net/enic: fix flow action reordering' has been queued to stable release 19.11.3 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" Hi, FYI, your patch has been queued to stable release 19.11.3 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 05/21/20. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Thanks. Luca Boccassi --- >From 1603ade39cffc542a9ab9f2fc77e02baf33a78cf Mon Sep 17 00:00:00 2001 From: Hyong Youb Kim Date: Tue, 14 Apr 2020 18:06:37 -0700 Subject: [PATCH] net/enic: fix flow action reordering [ upstream commit 4bcbbb430fc999c3980f07d4490b2a0dfabb059c ] The current implementation produces wrong ordering for several cases like these: 1. mark, decap, steer Current: steer, mark, decap Correct: mark, steer, decap 2. decap, steer, steer Current: steer, steer, decap Correct: steer, decap, steer Simplify the logic and swap 1st steer and decap. Also, allow just one decap action per flow. Fixes: ea7768b5bba8 ("net/enic: add flow implementation based on Flow Manager API") Signed-off-by: Hyong Youb Kim Signed-off-by: John Daley --- drivers/net/enic/enic_fm_flow.c | 61 +++++++++++++++------------------ 1 file changed, 28 insertions(+), 33 deletions(-) diff --git a/drivers/net/enic/enic_fm_flow.c b/drivers/net/enic/enic_fm_flow.c index e3e3d737bc..e8d5927674 100644 --- a/drivers/net/enic/enic_fm_flow.c +++ b/drivers/net/enic/enic_fm_flow.c @@ -869,46 +869,36 @@ enic_fm_append_action_op(struct enic_flowman *fm, return 0; } -/* Steer operations need to appear before other ops */ +/* NIC requires that 1st steer appear before decap. + * Correct example: steer, decap, steer, steer, ... + */ static void enic_fm_reorder_action_op(struct enic_flowman *fm) { - struct fm_action_op *dst, *dst_head, *src, *src_head; + struct fm_action_op *op, *steer, *decap; + struct fm_action_op tmp_op; ENICPMD_FUNC_TRACE(); - /* Move steer ops to the front. */ - src = fm->action.fma_action_ops; - src_head = src; - dst = fm->action_tmp.fma_action_ops; - dst_head = dst; - /* Copy steer ops to tmp */ - while (src->fa_op != FMOP_END) { - if (src->fa_op == FMOP_RQ_STEER) { - ENICPMD_LOG(DEBUG, "move op: %ld -> dst %ld", - (long)(src - src_head), - (long)(dst - dst_head)); - *dst = *src; - dst++; - } - src++; + /* Find 1st steer and decap */ + op = fm->action.fma_action_ops; + steer = NULL; + decap = NULL; + while (op->fa_op != FMOP_END) { + if (!decap && op->fa_op == FMOP_DECAP_NOSTRIP) + decap = op; + else if (!steer && op->fa_op == FMOP_RQ_STEER) + steer = op; + op++; } - /* Then append non-steer ops */ - src = src_head; - while (src->fa_op != FMOP_END) { - if (src->fa_op != FMOP_RQ_STEER) { - ENICPMD_LOG(DEBUG, "move op: %ld -> dst %ld", - (long)(src - src_head), - (long)(dst - dst_head)); - *dst = *src; - dst++; - } - src++; + /* If decap is before steer, swap */ + if (steer && decap && decap < steer) { + op = fm->action.fma_action_ops; + ENICPMD_LOG(DEBUG, "swap decap %ld <-> steer %ld", + (long)(decap - op), (long)(steer - op)); + tmp_op = *decap; + *decap = *steer; + *steer = tmp_op; } - /* Copy END */ - *dst = *src; - /* Finally replace the original action with the reordered one */ - memcpy(fm->action.fma_action_ops, fm->action_tmp.fma_action_ops, - sizeof(fm->action.fma_action_ops)); } /* VXLAN decap is done via flowman compound action */ @@ -1099,6 +1089,7 @@ enic_fm_copy_action(struct enic_flowman *fm, PASSTHRU = 1 << 2, COUNT = 1 << 3, ENCAP = 1 << 4, + DECAP = 1 << 5, }; struct fm_tcam_match_entry *fmt; struct fm_action_op fm_op; @@ -1281,6 +1272,10 @@ enic_fm_copy_action(struct enic_flowman *fm, break; } case RTE_FLOW_ACTION_TYPE_VXLAN_DECAP: { + if (overlap & DECAP) + goto unsupported; + overlap |= DECAP; + ret = enic_fm_copy_vxlan_decap(fm, fmt, actions, error); if (ret != 0) -- 2.20.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2020-05-19 14:04:48.140851170 +0100 +++ 0090-net-enic-fix-flow-action-reordering.patch 2020-05-19 14:04:44.288649678 +0100 @@ -1,8 +1,10 @@ -From 4bcbbb430fc999c3980f07d4490b2a0dfabb059c Mon Sep 17 00:00:00 2001 +From 1603ade39cffc542a9ab9f2fc77e02baf33a78cf Mon Sep 17 00:00:00 2001 From: Hyong Youb Kim Date: Tue, 14 Apr 2020 18:06:37 -0700 Subject: [PATCH] net/enic: fix flow action reordering +[ upstream commit 4bcbbb430fc999c3980f07d4490b2a0dfabb059c ] + The current implementation produces wrong ordering for several cases like these: @@ -18,7 +20,6 @@ Also, allow just one decap action per flow. Fixes: ea7768b5bba8 ("net/enic: add flow implementation based on Flow Manager API") -Cc: stable@dpdk.org Signed-off-by: Hyong Youb Kim Signed-off-by: John Daley @@ -27,10 +28,10 @@ 1 file changed, 28 insertions(+), 33 deletions(-) diff --git a/drivers/net/enic/enic_fm_flow.c b/drivers/net/enic/enic_fm_flow.c -index d815f369ed..8d715fc436 100644 +index e3e3d737bc..e8d5927674 100644 --- a/drivers/net/enic/enic_fm_flow.c +++ b/drivers/net/enic/enic_fm_flow.c -@@ -870,46 +870,36 @@ enic_fm_append_action_op(struct enic_flowman *fm, +@@ -869,46 +869,36 @@ enic_fm_append_action_op(struct enic_flowman *fm, return 0; } @@ -100,7 +101,7 @@ } /* VXLAN decap is done via flowman compound action */ -@@ -1100,6 +1090,7 @@ enic_fm_copy_action(struct enic_flowman *fm, +@@ -1099,6 +1089,7 @@ enic_fm_copy_action(struct enic_flowman *fm, PASSTHRU = 1 << 2, COUNT = 1 << 3, ENCAP = 1 << 4, @@ -108,7 +109,7 @@ }; struct fm_tcam_match_entry *fmt; struct fm_action_op fm_op; -@@ -1282,6 +1273,10 @@ enic_fm_copy_action(struct enic_flowman *fm, +@@ -1281,6 +1272,10 @@ enic_fm_copy_action(struct enic_flowman *fm, break; } case RTE_FLOW_ACTION_TYPE_VXLAN_DECAP: {