net/mlx5: fix VXLAN device rollback if rule apply fails

Message ID 1541844105-32135-1-git-send-email-viacheslavo@mellanox.com (mailing list archive)
State Accepted, archived
Delegated to: Shahaf Shuler
Headers
Series net/mlx5: fix VXLAN device rollback if rule apply fails |

Checks

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

Commit Message

Slava Ovsiienko Nov. 10, 2018, 10:01 a.m. UTC
  If rule contains tunneling action (like VXLAN encapsulation)
the VTEP (Virtual Tunneling EndPoint) device is preconfigured
before appying the rule. If kernel returnsan error this
VTEP configuration should be rolled back to the origin state.
The patch adds the missing VTEP configuration restoration.

Fixes: 95a464cecc21 ("net/mlx5: add E-switch VXLAN tunnel devices management")

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

Comments

Yongseok Koh Nov. 11, 2018, 11:34 a.m. UTC | #1
> On Nov 10, 2018, at 2:01 AM, Slava Ovsiienko <viacheslavo@mellanox.com> wrote:
> 
> If rule contains tunneling action (like VXLAN encapsulation)
> the VTEP (Virtual Tunneling EndPoint) device is preconfigured
> before appying the rule. If kernel returnsan error this
> VTEP configuration should be rolled back to the origin state.
> The patch adds the missing VTEP configuration restoration.
> 
> Fixes: 95a464cecc21 ("net/mlx5: add E-switch VXLAN tunnel devices management")
> 
> Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
> ---
Acked-by: Yongseok Koh <yskoh@mellanox.com>
 
Thanks

> drivers/net/mlx5/mlx5_flow_tcf.c | 7 +++++++
> 1 file changed, 7 insertions(+)
> 
> diff --git a/drivers/net/mlx5/mlx5_flow_tcf.c b/drivers/net/mlx5/mlx5_flow_tcf.c
> index 21eb99e..7dd3a64 100644
> --- a/drivers/net/mlx5/mlx5_flow_tcf.c
> +++ b/drivers/net/mlx5/mlx5_flow_tcf.c
> @@ -5124,6 +5124,13 @@ struct tcf_nlcb_context {
> 		dev_flow->tcf.applied = 1;
> 		return 0;
> 	}
> +	if (dev_flow->tcf.tunnel) {
> +		/* Rollback the VTEP configuration if rule aplly failed. */
> +		assert(dev_flow->tcf.tunnel->vtep);
> +		flow_tcf_vtep_release(ctx, dev_flow->tcf.tunnel->vtep,
> +				      dev_flow);
> +		dev_flow->tcf.tunnel->vtep = NULL;
> +	}
> 	return rte_flow_error_set(error, rte_errno,
> 				  RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL,
> 				  "netlink: failed to create TC flow rule");
> -- 
> 1.8.3.1
>
  
Shahaf Shuler Nov. 11, 2018, 12:42 p.m. UTC | #2
Sunday, November 11, 2018 1:34 PM, Yongseok Koh:
> Subject: Re: [PATCH] net/mlx5: fix VXLAN device rollback if rule apply fails
> > On Nov 10, 2018, at 2:01 AM, Slava Ovsiienko <viacheslavo@mellanox.com>
> wrote:
> >
> > If rule contains tunneling action (like VXLAN encapsulation) the VTEP
> > (Virtual Tunneling EndPoint) device is preconfigured before appying
> > the rule. If kernel returnsan error this VTEP configuration should be
> > rolled back to the origin state.
> > The patch adds the missing VTEP configuration restoration.
> >
> > Fixes: 95a464cecc21 ("net/mlx5: add E-switch VXLAN tunnel devices
> > management")
> >
> > Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
> > ---
> Acked-by: Yongseok Koh <yskoh@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 21eb99e..7dd3a64 100644
--- a/drivers/net/mlx5/mlx5_flow_tcf.c
+++ b/drivers/net/mlx5/mlx5_flow_tcf.c
@@ -5124,6 +5124,13 @@  struct tcf_nlcb_context {
 		dev_flow->tcf.applied = 1;
 		return 0;
 	}
+	if (dev_flow->tcf.tunnel) {
+		/* Rollback the VTEP configuration if rule aplly failed. */
+		assert(dev_flow->tcf.tunnel->vtep);
+		flow_tcf_vtep_release(ctx, dev_flow->tcf.tunnel->vtep,
+				      dev_flow);
+		dev_flow->tcf.tunnel->vtep = NULL;
+	}
 	return rte_flow_error_set(error, rte_errno,
 				  RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL,
 				  "netlink: failed to create TC flow rule");