net/mlx5: fix VXLAN device rollback if rule apply fails
Checks
Commit Message
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
> 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
>
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.
@@ -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");