summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFeras Daoud <ferasda@mellanox.com>2018-07-15 13:59:36 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-08-06 16:18:19 +0200
commit1c83fc5eeecc322cb7e1b3c05703a3c0f88cfed6 (patch)
treeb158a690ab7fffaaf2c90cae955cdac2ccc74bb9
parente4cecd1c061143d090ad39cdf06784c36bafd69d (diff)
downloadlinux-stable-1c83fc5eeecc322cb7e1b3c05703a3c0f88cfed6.tar.gz
linux-stable-1c83fc5eeecc322cb7e1b3c05703a3c0f88cfed6.tar.bz2
linux-stable-1c83fc5eeecc322cb7e1b3c05703a3c0f88cfed6.zip
net/mlx5e: IPoIB, Set the netdevice sw mtu in ipoib enhanced flow
[ Upstream commit 8e1d162d8e81838119de18b4ca1e302ce906f2a6 ] After introduction of the cited commit, mlx5e_build_nic_params receives the netdevice mtu in order to set the sw_mtu of mlx5e_params. For enhanced IPoIB, the netdevice mtu is not set in this stage, therefore, the initial sw_mtu equals zero. As a result, the hw_mtu of the receive queue will be calculated incorrectly causing traffic issues. To fix this issue, query for port mtu before building the nic params. Fixes: 472a1e44b349 ("net/mlx5e: Save MTU in channels params") Signed-off-by: Feras Daoud <ferasda@mellanox.com> Reviewed-by: Tariq Toukan <tariqt@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c b/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
index af3bb2f7a504..b7c21eb21a21 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
@@ -76,6 +76,7 @@ void mlx5i_init(struct mlx5_core_dev *mdev,
void *ppriv)
{
struct mlx5e_priv *priv = mlx5i_epriv(netdev);
+ u16 max_mtu;
/* priv init */
priv->mdev = mdev;
@@ -84,6 +85,9 @@ void mlx5i_init(struct mlx5_core_dev *mdev,
priv->ppriv = ppriv;
mutex_init(&priv->state_lock);
+ mlx5_query_port_max_mtu(mdev, &max_mtu, 1);
+ netdev->mtu = max_mtu;
+
mlx5e_build_nic_params(mdev, &priv->channels.params,
profile->max_nch(mdev), netdev->mtu);
mlx5i_build_nic_params(mdev, &priv->channels.params);