| From foo@baz Wed Apr 11 10:26:56 CEST 2018 |
| From: Shahar Klein <shahark@mellanox.com> |
| Date: Tue, 20 Mar 2018 14:44:40 +0200 |
| Subject: net/mlx5e: Sync netdev vxlan ports at open |
| |
| From: Shahar Klein <shahark@mellanox.com> |
| |
| |
| [ Upstream commit a117f73dc2430443f23e18367fa545981129c1a6 ] |
| |
| When mlx5_core is loaded it is expected to sync ports |
| with all vxlan devices so it can support vxlan encap/decap. |
| This is done via udp_tunnel_get_rx_info(). Currently this |
| call is set in mlx5e_nic_enable() and if the netdev is not in |
| NETREG_REGISTERED state it will not be called. |
| |
| Normally on load the netdev state is not NETREG_REGISTERED |
| so udp_tunnel_get_rx_info() will not be called. |
| |
| Moving udp_tunnel_get_rx_info() to mlx5e_open() so |
| it will be called on netdev UP event and allow encap/decap. |
| |
| Fixes: 610e89e05c3f ("net/mlx5e: Don't sync netdev state when not registered") |
| Signed-off-by: Shahar Klein <shahark@mellanox.com> |
| Reviewed-by: Roi Dayan <roid@mellanox.com> |
| Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 10 +++------- |
| 1 file changed, 3 insertions(+), 7 deletions(-) |
| |
| --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c |
| +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c |
| @@ -2741,6 +2741,9 @@ static int set_feature_lro(struct net_de |
| |
| mutex_unlock(&priv->state_lock); |
| |
| + if (mlx5e_vxlan_allowed(priv->mdev)) |
| + udp_tunnel_get_rx_info(netdev); |
| + |
| return err; |
| } |
| |
| @@ -3785,13 +3788,6 @@ static void mlx5e_nic_enable(struct mlx5 |
| if (netdev->reg_state != NETREG_REGISTERED) |
| return; |
| |
| - /* Device already registered: sync netdev system state */ |
| - if (mlx5e_vxlan_allowed(mdev)) { |
| - rtnl_lock(); |
| - udp_tunnel_get_rx_info(netdev); |
| - rtnl_unlock(); |
| - } |
| - |
| queue_work(priv->wq, &priv->set_rx_mode_work); |
| } |
| |