Skip to content

Commit

Permalink
mlx5e: add add missing BH locking around napi_schdule()
Browse files Browse the repository at this point in the history
It's not correct to call napi_schedule() in pure process
context. Because we use __raise_softirq_irqoff() we require
callers to be in a context which will eventually lead to
softirq handling (hardirq, bh disabled, etc.).

With code as is users will see:

 NOHZ tick-stop error: Non-RCU local softirq work is pending, handler Rust-for-Linux#8!!!

Fixes: a8dd7ac ("net/mlx5e: Generalize RQ activation")
Signed-off-by: Jakub Kicinski <[email protected]>
Signed-off-by: Saeed Mahameed <[email protected]>
  • Loading branch information
kuba-moo authored and Saeed Mahameed committed May 19, 2021
1 parent 6ff51ab commit e63052a
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions drivers/net/ethernet/mellanox/mlx5/core/en_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -889,10 +889,13 @@ int mlx5e_open_rq(struct mlx5e_params *params, struct mlx5e_rq_param *param,
void mlx5e_activate_rq(struct mlx5e_rq *rq)
{
set_bit(MLX5E_RQ_STATE_ENABLED, &rq->state);
if (rq->icosq)
if (rq->icosq) {
mlx5e_trigger_irq(rq->icosq);
else
} else {
local_bh_disable();
napi_schedule(rq->cq.napi);
local_bh_enable();
}
}

void mlx5e_deactivate_rq(struct mlx5e_rq *rq)
Expand Down

0 comments on commit e63052a

Please sign in to comment.