On Tue, 28 May 2024 21:41:15 +0800, Heng Qi <hengqi@xxxxxxxxxxxxxxxxx> wrote: > When the dim worker is scheduled, if it no longer needs to issue > commands, dim may not be able to return to the working state later. > > For example, the following single queue scenario: > 1. The dim worker of rxq0 is scheduled, and the dim status is > changed to DIM_APPLY_NEW_PROFILE; > 2. dim is disabled or parameters have not been modified; > 3. virtnet_rx_dim_work exits directly; > > Then, even if net_dim is invoked again, it cannot work because the > state is not restored to DIM_START_MEASURE. > > Fixes: 6208799553a8 ("virtio-net: support rx netdim") > Signed-off-by: Heng Qi <hengqi@xxxxxxxxxxxxxxxxx> > Reviewed-by: Jiri Pirko <jiri@xxxxxxxxxx> Reviewed-by: Xuan Zhuo <xuanzhuo@xxxxxxxxxxxxxxxxx> > --- > drivers/net/virtio_net.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c > index 4a802c0ea2cb..4f828a9e5889 100644 > --- a/drivers/net/virtio_net.c > +++ b/drivers/net/virtio_net.c > @@ -4417,9 +4417,9 @@ static void virtnet_rx_dim_work(struct work_struct *work) > if (err) > pr_debug("%s: Failed to send dim parameters on rxq%d\n", > dev->name, qnum); > - dim->state = DIM_START_MEASURE; > } > out: > + dim->state = DIM_START_MEASURE; > mutex_unlock(&rq->dim_lock); > } > > -- > 2.32.0.3.g01195cf9f >