Commit 846122b1 authored by Tariq Toukan's avatar Tariq Toukan Committed by Saeed Mahameed
Browse files

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: default avatarTariq Toukan <tariqt@nvidia.com>
Reviewed-by: default avatarGal Pressman <gal@nvidia.com>
Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
parent 381978d2
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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;
+22 −10
Original line number Diff line number Diff line
@@ -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);
	mlx5_sd_for_each_dev(i, mdev, pos) {
		err = mlx5e_create_mdev_resources(pos, true);
		if (err)
		return err;
			goto err_destroy_mdev_res;
	}

	err = mlx5e_attach_netdev(priv);
	if (err) {
		mlx5e_destroy_mdev_resources(mdev);
		return err;
	}
	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;
}