mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-27 21:03:32 +00:00
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 <tariqt@nvidia.com> Reviewed-by: Gal Pressman <gal@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
This commit is contained in:
parent
e2578b4f98
commit
c4fb94aa82
2 changed files with 24 additions and 11 deletions
|
@ -60,6 +60,7 @@
|
|||
#include "lib/clock.h"
|
||||
#include "en/rx_res.h"
|
||||
#include "en/selq.h"
|
||||
#include "lib/sd.h"
|
||||
|
||||
extern const struct net_device_ops mlx5e_netdev_ops;
|
||||
struct page_pool;
|
||||
|
|
|
@ -5988,22 +5988,29 @@ static int _mlx5e_resume(struct auxiliary_device *adev)
|
|||
struct mlx5e_priv *priv = mlx5e_dev->priv;
|
||||
struct net_device *netdev = priv->netdev;
|
||||
struct mlx5_core_dev *mdev = edev->mdev;
|
||||
int err;
|
||||
struct mlx5_core_dev *pos, *to;
|
||||
int err, i;
|
||||
|
||||
if (netif_device_present(netdev))
|
||||
return 0;
|
||||
|
||||
err = mlx5e_create_mdev_resources(mdev, true);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = mlx5e_attach_netdev(priv);
|
||||
if (err) {
|
||||
mlx5e_destroy_mdev_resources(mdev);
|
||||
return err;
|
||||
mlx5_sd_for_each_dev(i, mdev, pos) {
|
||||
err = mlx5e_create_mdev_resources(pos, true);
|
||||
if (err)
|
||||
goto err_destroy_mdev_res;
|
||||
}
|
||||
|
||||
err = mlx5e_attach_netdev(priv);
|
||||
if (err)
|
||||
goto err_destroy_mdev_res;
|
||||
|
||||
return 0;
|
||||
|
||||
err_destroy_mdev_res:
|
||||
to = pos;
|
||||
mlx5_sd_for_each_dev_to(i, mdev, to, pos)
|
||||
mlx5e_destroy_mdev_resources(pos);
|
||||
return err;
|
||||
}
|
||||
|
||||
static int mlx5e_resume(struct auxiliary_device *adev)
|
||||
|
@ -6029,15 +6036,20 @@ static int _mlx5e_suspend(struct auxiliary_device *adev)
|
|||
struct mlx5e_priv *priv = mlx5e_dev->priv;
|
||||
struct net_device *netdev = priv->netdev;
|
||||
struct mlx5_core_dev *mdev = priv->mdev;
|
||||
struct mlx5_core_dev *pos;
|
||||
int i;
|
||||
|
||||
if (!netif_device_present(netdev)) {
|
||||
if (test_bit(MLX5E_STATE_DESTROYING, &priv->state))
|
||||
mlx5e_destroy_mdev_resources(mdev);
|
||||
mlx5_sd_for_each_dev(i, mdev, pos)
|
||||
mlx5e_destroy_mdev_resources(pos);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
mlx5e_detach_netdev(priv);
|
||||
mlx5e_destroy_mdev_resources(mdev);
|
||||
mlx5_sd_for_each_dev(i, mdev, pos)
|
||||
mlx5e_destroy_mdev_resources(pos);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue