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

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/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/mellanox-Performance-Testing success Performance Testing PASS
ci/intel-Performance-Testing success Performance Testing PASS

Commit Message

Viacheslav Ovsiienko Jan. 25, 2019, 3:29 p.m. UTC
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. UTC | #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 mbox series

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),