mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-09 07:23:14 +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
381978d283
commit
846122b126
@ -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;
|
||||
|
@ -5995,22 +5995,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)
|
||||
@ -6036,15 +6043,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 New Issue
Block a user