net/mlx5e: IPoIB, Set the netdevice sw mtu in ipoib enhanced flow
authorFeras Daoud <ferasda@mellanox.com>
Sun, 15 Jul 2018 10:59:36 +0000 (13:59 +0300)
committerSaeed Mahameed <saeedm@mellanox.com>
Tue, 31 Jul 2018 19:58:45 +0000 (12:58 -0700)
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>
drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c

index af3bb2f7a5048240d615344770f3c07ca250649b..b7c21eb21a218de91a9b053addbfb0813fa4f74b 100644 (file)
@@ -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);