Skip to content

Commit c4fb94a

Browse files
Tariq ToukanSaeed Mahameed
authored andcommitted
net/mlx5e: Create EN core HW resources for all secondary devices
Traffic queues will be created on all devices, including the secondaries. Create the needed core layer resources for them as well. Signed-off-by: Tariq Toukan <[email protected]> Reviewed-by: Gal Pressman <[email protected]> Signed-off-by: Saeed Mahameed <[email protected]>
1 parent e2578b4 commit c4fb94a

File tree

2 files changed

+23
-10
lines changed

2 files changed

+23
-10
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@
6060
#include "lib/clock.h"
6161
#include "en/rx_res.h"
6262
#include "en/selq.h"
63+
#include "lib/sd.h"
6364

6465
extern const struct net_device_ops mlx5e_netdev_ops;
6566
struct page_pool;

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

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5988,22 +5988,29 @@ static int _mlx5e_resume(struct auxiliary_device *adev)
59885988
struct mlx5e_priv *priv = mlx5e_dev->priv;
59895989
struct net_device *netdev = priv->netdev;
59905990
struct mlx5_core_dev *mdev = edev->mdev;
5991-
int err;
5991+
struct mlx5_core_dev *pos, *to;
5992+
int err, i;
59925993

59935994
if (netif_device_present(netdev))
59945995
return 0;
59955996

5996-
err = mlx5e_create_mdev_resources(mdev, true);
5997-
if (err)
5998-
return err;
5997+
mlx5_sd_for_each_dev(i, mdev, pos) {
5998+
err = mlx5e_create_mdev_resources(pos, true);
5999+
if (err)
6000+
goto err_destroy_mdev_res;
6001+
}
59996002

60006003
err = mlx5e_attach_netdev(priv);
6001-
if (err) {
6002-
mlx5e_destroy_mdev_resources(mdev);
6003-
return err;
6004-
}
6004+
if (err)
6005+
goto err_destroy_mdev_res;
60056006

60066007
return 0;
6008+
6009+
err_destroy_mdev_res:
6010+
to = pos;
6011+
mlx5_sd_for_each_dev_to(i, mdev, to, pos)
6012+
mlx5e_destroy_mdev_resources(pos);
6013+
return err;
60076014
}
60086015

60096016
static int mlx5e_resume(struct auxiliary_device *adev)
@@ -6029,15 +6036,20 @@ static int _mlx5e_suspend(struct auxiliary_device *adev)
60296036
struct mlx5e_priv *priv = mlx5e_dev->priv;
60306037
struct net_device *netdev = priv->netdev;
60316038
struct mlx5_core_dev *mdev = priv->mdev;
6039+
struct mlx5_core_dev *pos;
6040+
int i;
60326041

60336042
if (!netif_device_present(netdev)) {
60346043
if (test_bit(MLX5E_STATE_DESTROYING, &priv->state))
6035-
mlx5e_destroy_mdev_resources(mdev);
6044+
mlx5_sd_for_each_dev(i, mdev, pos)
6045+
mlx5e_destroy_mdev_resources(pos);
60366046
return -ENODEV;
60376047
}
60386048

60396049
mlx5e_detach_netdev(priv);
6040-
mlx5e_destroy_mdev_resources(mdev);
6050+
mlx5_sd_for_each_dev(i, mdev, pos)
6051+
mlx5e_destroy_mdev_resources(pos);
6052+
60416053
return 0;
60426054
}
60436055

0 commit comments

Comments
 (0)