mlx5e: add add missing BH locking around napi_schdule()
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 #08!!!
Fixes: a8dd7ac12f
("net/mlx5e: Generalize RQ activation")
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
This commit is contained in:
parent
6ff51ab8aa
commit
e63052a5dd
1 changed files with 5 additions and 2 deletions
|
@ -889,10 +889,13 @@ err_free_rq:
|
||||||
void mlx5e_activate_rq(struct mlx5e_rq *rq)
|
void mlx5e_activate_rq(struct mlx5e_rq *rq)
|
||||||
{
|
{
|
||||||
set_bit(MLX5E_RQ_STATE_ENABLED, &rq->state);
|
set_bit(MLX5E_RQ_STATE_ENABLED, &rq->state);
|
||||||
if (rq->icosq)
|
if (rq->icosq) {
|
||||||
mlx5e_trigger_irq(rq->icosq);
|
mlx5e_trigger_irq(rq->icosq);
|
||||||
else
|
} else {
|
||||||
|
local_bh_disable();
|
||||||
napi_schedule(rq->cq.napi);
|
napi_schedule(rq->cq.napi);
|
||||||
|
local_bh_enable();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void mlx5e_deactivate_rq(struct mlx5e_rq *rq)
|
void mlx5e_deactivate_rq(struct mlx5e_rq *rq)
|
||||||
|
|
Loading…
Add table
Reference in a new issue