net/mlx5e: Enable napi in channel's activation stage
The channel's napi is first needed upon activation, not creation. Minimize its enabled scope by moving it from the channel's open/close stage into the activate/deactivate stage. Signed-off-by: Tariq Toukan <tariqt@mellanox.com> Reviewed-by: Maxim Mikityanskiy <maximmi@mellanox.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
This commit is contained in:
parent
6b424e13b0
commit
7637e499e2
|
@ -428,16 +428,13 @@ static int mlx5e_ptp_open_queues(struct mlx5e_port_ptp *c,
|
|||
if (err)
|
||||
return err;
|
||||
|
||||
napi_enable(&c->napi);
|
||||
|
||||
err = mlx5e_ptp_open_txqsqs(c, cparams);
|
||||
if (err)
|
||||
goto disable_napi;
|
||||
goto close_cqs;
|
||||
|
||||
return 0;
|
||||
|
||||
disable_napi:
|
||||
napi_disable(&c->napi);
|
||||
close_cqs:
|
||||
mlx5e_ptp_close_cqs(c);
|
||||
|
||||
return err;
|
||||
|
@ -446,7 +443,6 @@ disable_napi:
|
|||
static void mlx5e_ptp_close_queues(struct mlx5e_port_ptp *c)
|
||||
{
|
||||
mlx5e_ptp_close_txqsqs(c);
|
||||
napi_disable(&c->napi);
|
||||
mlx5e_ptp_close_cqs(c);
|
||||
}
|
||||
|
||||
|
@ -515,6 +511,8 @@ void mlx5e_ptp_activate_channel(struct mlx5e_port_ptp *c)
|
|||
{
|
||||
int tc;
|
||||
|
||||
napi_enable(&c->napi);
|
||||
|
||||
for (tc = 0; tc < c->num_tc; tc++)
|
||||
mlx5e_activate_txqsq(&c->ptpsq[tc].txqsq);
|
||||
}
|
||||
|
@ -525,4 +523,6 @@ void mlx5e_ptp_deactivate_channel(struct mlx5e_port_ptp *c)
|
|||
|
||||
for (tc = 0; tc < c->num_tc; tc++)
|
||||
mlx5e_deactivate_txqsq(&c->ptpsq[tc].txqsq);
|
||||
|
||||
napi_disable(&c->napi);
|
||||
}
|
||||
|
|
|
@ -1892,13 +1892,11 @@ static int mlx5e_open_queues(struct mlx5e_channel *c,
|
|||
if (err)
|
||||
goto err_close_rx_cq;
|
||||
|
||||
napi_enable(&c->napi);
|
||||
|
||||
spin_lock_init(&c->async_icosq_lock);
|
||||
|
||||
err = mlx5e_open_icosq(c, params, &cparam->async_icosq, &c->async_icosq);
|
||||
if (err)
|
||||
goto err_disable_napi;
|
||||
goto err_close_xdpsq_cq;
|
||||
|
||||
err = mlx5e_open_icosq(c, params, &cparam->icosq, &c->icosq);
|
||||
if (err)
|
||||
|
@ -1941,9 +1939,7 @@ err_close_icosq:
|
|||
err_close_async_icosq:
|
||||
mlx5e_close_icosq(&c->async_icosq);
|
||||
|
||||
err_disable_napi:
|
||||
napi_disable(&c->napi);
|
||||
|
||||
err_close_xdpsq_cq:
|
||||
if (c->xdp)
|
||||
mlx5e_close_cq(&c->rq_xdpsq.cq);
|
||||
|
||||
|
@ -1974,7 +1970,6 @@ static void mlx5e_close_queues(struct mlx5e_channel *c)
|
|||
mlx5e_close_sqs(c);
|
||||
mlx5e_close_icosq(&c->icosq);
|
||||
mlx5e_close_icosq(&c->async_icosq);
|
||||
napi_disable(&c->napi);
|
||||
if (c->xdp)
|
||||
mlx5e_close_cq(&c->rq_xdpsq.cq);
|
||||
mlx5e_close_cq(&c->rq.cq);
|
||||
|
@ -2059,6 +2054,8 @@ static void mlx5e_activate_channel(struct mlx5e_channel *c)
|
|||
{
|
||||
int tc;
|
||||
|
||||
napi_enable(&c->napi);
|
||||
|
||||
for (tc = 0; tc < c->num_tc; tc++)
|
||||
mlx5e_activate_txqsq(&c->sq[tc]);
|
||||
mlx5e_activate_icosq(&c->icosq);
|
||||
|
@ -2081,8 +2078,9 @@ static void mlx5e_deactivate_channel(struct mlx5e_channel *c)
|
|||
mlx5e_deactivate_icosq(&c->icosq);
|
||||
for (tc = 0; tc < c->num_tc; tc++)
|
||||
mlx5e_deactivate_txqsq(&c->sq[tc]);
|
||||
|
||||
mlx5e_qos_deactivate_queues(c);
|
||||
|
||||
napi_disable(&c->napi);
|
||||
}
|
||||
|
||||
static void mlx5e_close_channel(struct mlx5e_channel *c)
|
||||
|
|
Loading…
Reference in New Issue