net/mlx5e: IPoIB, Set the netdevice sw mtu in ipoib enhanced flow
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: 472a1e44b3
("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>
This commit is contained in:
parent
eacecf2760
commit
8e1d162d8e
|
@ -76,6 +76,7 @@ void mlx5i_init(struct mlx5_core_dev *mdev,
|
||||||
void *ppriv)
|
void *ppriv)
|
||||||
{
|
{
|
||||||
struct mlx5e_priv *priv = mlx5i_epriv(netdev);
|
struct mlx5e_priv *priv = mlx5i_epriv(netdev);
|
||||||
|
u16 max_mtu;
|
||||||
|
|
||||||
/* priv init */
|
/* priv init */
|
||||||
priv->mdev = mdev;
|
priv->mdev = mdev;
|
||||||
|
@ -84,6 +85,9 @@ void mlx5i_init(struct mlx5_core_dev *mdev,
|
||||||
priv->ppriv = ppriv;
|
priv->ppriv = ppriv;
|
||||||
mutex_init(&priv->state_lock);
|
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,
|
mlx5e_build_nic_params(mdev, &priv->channels.params,
|
||||||
profile->max_nch(mdev), netdev->mtu);
|
profile->max_nch(mdev), netdev->mtu);
|
||||||
mlx5i_build_nic_params(mdev, &priv->channels.params);
|
mlx5i_build_nic_params(mdev, &priv->channels.params);
|
||||||
|
|
Loading…
Reference in New Issue