net/mlx5: fix VXLAN missing decap action Flows for E-Switch

Message ID 1548430175-11060-1-git-send-email-viacheslavo@mellanox.com
State Accepted, archived
Delegated to: Shahaf Shuler
Headers show
Series
  • net/mlx5: fix VXLAN missing decap action Flows for E-Switch
Related show

Checks

Context Check Description
ci/intel-Performance-Testing success Performance Testing PASS
ci/mellanox-Performance-Testing success Performance Testing PASS
ci/Intel-compilation success Compilation OK
ci/checkpatch success coding style OK

Commit Message

Viacheslav Ovsiienko Jan. 25, 2019, 3:29 p.m.
There is an intention to support VXLAN tunnel match without
hardware offloaded decapsulation, just to redirect ingress
tunnelled frame untouched. This small fix allows to specify
Flows with VXLAN VNI pattern and with or without following
decapsulation action.

Fixes: 251e8d02cf37 ("net/mlx5: add VXLAN to flow translate routine")
Cc: stable@dpdk.org

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
---
 drivers/net/mlx5/mlx5_flow_tcf.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

Shahaf Shuler Jan. 27, 2019, 11:36 a.m. | #1
Friday, January 25, 2019 5:30 PM, Viacheslav Ovsiienko:
> Subject: [PATCH] net/mlx5: fix VXLAN missing decap action Flows for E-
> Switch
> 
> There is an intention to support VXLAN tunnel match without hardware
> offloaded decapsulation, just to redirect ingress tunnelled frame untouched.
> This small fix allows to specify Flows with VXLAN VNI pattern and with or
> without following decapsulation action.
> 
> Fixes: 251e8d02cf37 ("net/mlx5: add VXLAN to flow translate routine")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>

Applied to next-net-mlx, thanks.

Patch

diff --git a/drivers/net/mlx5/mlx5_flow_tcf.c b/drivers/net/mlx5/mlx5_flow_tcf.c
index 916d3a0..87cca73 100644
--- a/drivers/net/mlx5/mlx5_flow_tcf.c
+++ b/drivers/net/mlx5/mlx5_flow_tcf.c
@@ -2689,7 +2689,7 @@  struct pedit_parser {
 			      uint64_t *action_flags)
 {
 	int size = 0;
-	uint64_t flags = 0;
+	uint64_t flags = *action_flags;
 
 	size += SZ_NLATTR_NEST; /* TCA_FLOWER_ACT. */
 	for (; actions->type != RTE_FLOW_ACTION_TYPE_END; actions++) {
@@ -3788,6 +3788,10 @@  struct pedit_parser {
 					mnl_attr_get_payload
 					(mnl_nlmsg_get_payload_tail
 						(nlh)))->ifindex;
+			} else if (decap.hdr) {
+				assert(dev_flow->tcf.tunnel);
+				dev_flow->tcf.tunnel->ifindex_ptr =
+					(unsigned int *)&tcm->tcm_ifindex;
 			}
 			mnl_attr_put(nlh, TCA_MIRRED_PARMS,
 				     sizeof(struct tc_mirred),