Skip to content

Commit 6d7ee2e

Browse files
Tariq ToukanSaeed Mahameed
authored andcommitted
net/mlx5e: Unify logic of MTU boundaries
Expose a new helper that wraps the logic for setting the netdevice's MTU boundaries. Use it for the different components (Eth, rep, IPoIB). Set the netdevice min MTU to ETH_MIN_MTU, and the max according to both the FW capability and the kernel definition. Signed-off-by: Tariq Toukan <tariqt@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
1 parent 0b77f23 commit 6d7ee2e

File tree

4 files changed

+20
-15
lines changed

4 files changed

+20
-15
lines changed

drivers/net/ethernet/mellanox/mlx5/core/en.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1086,6 +1086,7 @@ mlx5e_create_netdev(struct mlx5_core_dev *mdev, const struct mlx5e_profile *prof
10861086
int mlx5e_attach_netdev(struct mlx5e_priv *priv);
10871087
void mlx5e_detach_netdev(struct mlx5e_priv *priv);
10881088
void mlx5e_destroy_netdev(struct mlx5e_priv *priv);
1089+
void mlx5e_set_netdev_mtu_boundaries(struct mlx5e_priv *priv);
10891090
void mlx5e_build_nic_params(struct mlx5_core_dev *mdev,
10901091
struct mlx5e_rss_params *rss_params,
10911092
struct mlx5e_params *params,

drivers/net/ethernet/mellanox/mlx5/core/en_main.c

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2811,6 +2811,21 @@ int mlx5e_set_dev_port_mtu(struct mlx5e_priv *priv)
28112811
return 0;
28122812
}
28132813

2814+
void mlx5e_set_netdev_mtu_boundaries(struct mlx5e_priv *priv)
2815+
{
2816+
struct mlx5e_params *params = &priv->channels.params;
2817+
struct net_device *netdev = priv->netdev;
2818+
struct mlx5_core_dev *mdev = priv->mdev;
2819+
u16 max_mtu;
2820+
2821+
/* MTU range: 68 - hw-specific max */
2822+
netdev->min_mtu = ETH_MIN_MTU;
2823+
2824+
mlx5_query_port_max_mtu(mdev, &max_mtu, 1);
2825+
netdev->max_mtu = min_t(unsigned int, MLX5E_HW2SW_MTU(params, max_mtu),
2826+
ETH_MAX_MTU);
2827+
}
2828+
28142829
static void mlx5e_netdev_set_tcs(struct net_device *netdev)
28152830
{
28162831
struct mlx5e_priv *priv = netdev_priv(netdev);
@@ -4912,18 +4927,14 @@ static void mlx5e_nic_enable(struct mlx5e_priv *priv)
49124927
{
49134928
struct net_device *netdev = priv->netdev;
49144929
struct mlx5_core_dev *mdev = priv->mdev;
4915-
u16 max_mtu;
49164930

49174931
mlx5e_init_l2_addr(priv);
49184932

49194933
/* Marking the link as currently not needed by the Driver */
49204934
if (!netif_running(netdev))
49214935
mlx5_set_port_admin_status(mdev, MLX5_PORT_DOWN);
49224936

4923-
/* MTU range: 68 - hw-specific max */
4924-
netdev->min_mtu = ETH_MIN_MTU;
4925-
mlx5_query_port_max_mtu(priv->mdev, &max_mtu, 1);
4926-
netdev->max_mtu = MLX5E_HW2SW_MTU(&priv->channels.params, max_mtu);
4937+
mlx5e_set_netdev_mtu_boundaries(priv);
49274938
mlx5e_set_dev_port_mtu(priv);
49284939

49294940
mlx5_lag_add(mdev, netdev);

drivers/net/ethernet/mellanox/mlx5/core/en_rep.c

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1624,13 +1624,7 @@ static void mlx5e_cleanup_rep_tx(struct mlx5e_priv *priv)
16241624

16251625
static void mlx5e_vf_rep_enable(struct mlx5e_priv *priv)
16261626
{
1627-
struct net_device *netdev = priv->netdev;
1628-
struct mlx5_core_dev *mdev = priv->mdev;
1629-
u16 max_mtu;
1630-
1631-
netdev->min_mtu = ETH_MIN_MTU;
1632-
mlx5_query_port_max_mtu(mdev, &max_mtu, 1);
1633-
netdev->max_mtu = MLX5E_HW2SW_MTU(&priv->channels.params, max_mtu);
1627+
mlx5e_set_netdev_mtu_boundaries(priv);
16341628
}
16351629

16361630
static int uplink_rep_async_event(struct notifier_block *nb, unsigned long event, void *data)

drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,15 +77,14 @@ int mlx5i_init(struct mlx5_core_dev *mdev,
7777
void *ppriv)
7878
{
7979
struct mlx5e_priv *priv = mlx5i_epriv(netdev);
80-
u16 max_mtu;
8180
int err;
8281

8382
err = mlx5e_netdev_init(netdev, priv, mdev, profile, ppriv);
8483
if (err)
8584
return err;
8685

87-
mlx5_query_port_max_mtu(mdev, &max_mtu, 1);
88-
netdev->mtu = max_mtu;
86+
mlx5e_set_netdev_mtu_boundaries(priv);
87+
netdev->mtu = netdev->max_mtu;
8988

9089
mlx5e_build_nic_params(mdev, &priv->rss_params, &priv->channels.params,
9190
mlx5e_get_netdev_max_channels(netdev),

0 commit comments

Comments
 (0)