net/mlx5: Use own workqueue for lag netdev events processing

Instead of using the system workqueue, allocate our own workqueue.
This workqueue will be used to handle more work in the next patch.

This patch doesn't change functionality.

Signed-off-by: Roi Dayan <roid@mellanox.com>
Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
This commit is contained in:
Roi Dayan 2019-02-25 10:09:05 +02:00 committed by Saeed Mahameed
parent 10a193ed78
commit e6ee5e7166
2 changed files with 9 additions and 1 deletions

View File

@ -346,7 +346,7 @@ static void mlx5_do_bond(struct mlx5_lag *ldev)
static void mlx5_queue_bond_work(struct mlx5_lag *ldev, unsigned long delay) static void mlx5_queue_bond_work(struct mlx5_lag *ldev, unsigned long delay)
{ {
schedule_delayed_work(&ldev->bond_work, delay); queue_delayed_work(ldev->wq, &ldev->bond_work, delay);
} }
static void mlx5_do_bond_work(struct work_struct *work) static void mlx5_do_bond_work(struct work_struct *work)
@ -498,6 +498,12 @@ static struct mlx5_lag *mlx5_lag_dev_alloc(void)
if (!ldev) if (!ldev)
return NULL; return NULL;
ldev->wq = create_singlethread_workqueue("mlx5_lag");
if (!ldev->wq) {
kfree(ldev);
return NULL;
}
INIT_DELAYED_WORK(&ldev->bond_work, mlx5_do_bond_work); INIT_DELAYED_WORK(&ldev->bond_work, mlx5_do_bond_work);
return ldev; return ldev;
@ -505,6 +511,7 @@ static struct mlx5_lag *mlx5_lag_dev_alloc(void)
static void mlx5_lag_dev_free(struct mlx5_lag *ldev) static void mlx5_lag_dev_free(struct mlx5_lag *ldev)
{ {
destroy_workqueue(ldev->wq);
kfree(ldev); kfree(ldev);
} }

View File

@ -33,6 +33,7 @@ struct mlx5_lag {
u8 v2p_map[MLX5_MAX_PORTS]; u8 v2p_map[MLX5_MAX_PORTS];
struct lag_func pf[MLX5_MAX_PORTS]; struct lag_func pf[MLX5_MAX_PORTS];
struct lag_tracker tracker; struct lag_tracker tracker;
struct workqueue_struct *wq;
struct delayed_work bond_work; struct delayed_work bond_work;
struct notifier_block nb; struct notifier_block nb;
}; };