Hi Herbert, On 2023-06-09 at 17:07:16 +0800, Herbert Xu wrote: > On Thu, Jun 01, 2023 at 11:13:40AM +0200, Damian Muszynski wrote: > > > > +static void timer_handler(struct timer_list *tl) > > +{ > > + struct adf_timer *timer_ctx = from_timer(timer_ctx, tl, timer); > > + unsigned long timeout_val = adf_get_next_timeout(); > > + > > + /* Schedule a work queue to send admin request */ > > + adf_misc_wq_queue_work(&timer_ctx->timer_bh); > > + > > + timer_ctx->cnt++; > > + mod_timer(tl, timeout_val); > > +} > > So the timer simply schedules a work. Could you use a delayed > work instead? We considered the usage of delayed work when implementing this, but it will break functionality. Apart from scheduling the work queue, timer_handler() is incrementing a counter which keeps track of how many times the timer was scheduled. This counter is then sent to the firmware in the WQ. For our usecase, the counter needs to be incremented at accurate intervals. > > Cheers, > -- > Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> > Home Page: http://gondor.apana.org.au/~herbert/ > PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt