Thomas Bogendoerfer d8ed44
From: Maor Dickman <maord@nvidia.com>
Thomas Bogendoerfer d8ed44
Date: Mon, 3 Jan 2022 15:04:18 +0200
Thomas Bogendoerfer d8ed44
Subject: net/mlx5e: Sync VXLAN udp ports during uplink representor profile
Thomas Bogendoerfer d8ed44
 change
Thomas Bogendoerfer d8ed44
Patch-mainline: v5.17-rc1
Thomas Bogendoerfer d8ed44
Git-commit: 07f6dc4024ea1d2314b9c8b81fd4e492864fcca1
Thomas Bogendoerfer d8ed44
References: git-fixes
Thomas Bogendoerfer d8ed44
Thomas Bogendoerfer d8ed44
Currently during NIC profile disablement all VXLAN udp ports offloaded to the
Thomas Bogendoerfer d8ed44
HW are flushed and during its enablement the driver send notification to
Thomas Bogendoerfer d8ed44
the stack to inform the core that the entire UDP tunnel port state has been
Thomas Bogendoerfer d8ed44
lost, uplink representor doesn't have the same behavior which can cause
Thomas Bogendoerfer d8ed44
VXLAN udp ports offload to be in bad state while moving between modes while
Thomas Bogendoerfer d8ed44
VXLAN interface exist.
Thomas Bogendoerfer d8ed44
Thomas Bogendoerfer d8ed44
Fixed by aligning the uplink representor profile behavior to the NIC behavior.
Thomas Bogendoerfer d8ed44
Thomas Bogendoerfer d8ed44
Fixes: 84db66124714 ("net/mlx5e: Move set vxlan nic info to profile init")
Thomas Bogendoerfer d8ed44
Signed-off-by: Maor Dickman <maord@nvidia.com>
Thomas Bogendoerfer d8ed44
Reviewed-by: Roi Dayan <roid@nvidia.com>
Thomas Bogendoerfer d8ed44
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Thomas Bogendoerfer d8ed44
Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
Thomas Bogendoerfer d8ed44
---
Thomas Bogendoerfer d8ed44
 drivers/net/ethernet/mellanox/mlx5/core/en_rep.c |    3 +++
Thomas Bogendoerfer d8ed44
 1 file changed, 3 insertions(+)
Thomas Bogendoerfer d8ed44
Thomas Bogendoerfer d8ed44
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
Thomas Bogendoerfer d8ed44
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c
Thomas Bogendoerfer d8ed44
@@ -50,6 +50,7 @@
Thomas Bogendoerfer d8ed44
 #include "fs_core.h"
Thomas Bogendoerfer d8ed44
 #include "lib/mlx5.h"
Thomas Bogendoerfer d8ed44
 #include "lib/devcom.h"
Thomas Bogendoerfer d8ed44
+#include "lib/vxlan.h"
Thomas Bogendoerfer d8ed44
 #define CREATE_TRACE_POINTS
Thomas Bogendoerfer d8ed44
 #include "diag/en_rep_tracepoint.h"
Thomas Bogendoerfer d8ed44
 #include "en_accel/ipsec.h"
Thomas Bogendoerfer d8ed44
@@ -1027,6 +1028,7 @@ static void mlx5e_uplink_rep_enable(stru
Thomas Bogendoerfer d8ed44
 	rtnl_lock();
Thomas Bogendoerfer d8ed44
 	if (netif_running(netdev))
Thomas Bogendoerfer d8ed44
 		mlx5e_open(netdev);
Thomas Bogendoerfer d8ed44
+	udp_tunnel_nic_reset_ntf(priv->netdev);
Thomas Bogendoerfer d8ed44
 	netif_device_attach(netdev);
Thomas Bogendoerfer d8ed44
 	rtnl_unlock();
Thomas Bogendoerfer d8ed44
 }
Thomas Bogendoerfer d8ed44
@@ -1048,6 +1050,7 @@ static void mlx5e_uplink_rep_disable(str
Thomas Bogendoerfer d8ed44
 	mlx5_notifier_unregister(mdev, &priv->events_nb);
Thomas Bogendoerfer d8ed44
 	mlx5e_rep_tc_disable(priv);
Thomas Bogendoerfer d8ed44
 	mlx5_lag_remove_netdev(mdev, priv->netdev);
Thomas Bogendoerfer d8ed44
+	mlx5_vxlan_reset_to_default(mdev->vxlan);
Thomas Bogendoerfer d8ed44
 }
Thomas Bogendoerfer d8ed44
 
Thomas Bogendoerfer d8ed44
 static MLX5E_DEFINE_STATS_GRP(sw_rep, 0);