(I think people generally agreed on this approach, but please submit a new series, with separate patches) On Mon, May 23, 2022 at 12:27 PM <duoming@xxxxxxxxxx> wrote: > What's more, I move the operations that may sleep into a work item and use > schedule_work() to call a kernel thread to do the operations that may sleep. You end up with a timer that just exists to kick a work item. Eric suggested you just use a delayed_work, and then you don't need both a timer and a work struct. Brian