On Mon, Jun 04, 2018 at 11:06:40AM -0400, David Miller wrote: > From: Tejaswi Tanikella <tejas...@codeaurora.org> > Date: Fri, 1 Jun 2018 19:35:41 +0530 > > > On receiving a IGMPv2/v3 query, based on max_delay set in the header a > > timer is started to send out a response after a random time within > > max_delay. If the system then moves into suspend state, Report is > > delayed until system wakes up. > > > > In one reported scenario, on arm64 devices, max_delay was set to 10s, > > Reports were consistantly delayed if the timer is scheduled after 5 plus > > seconds. > > > > Hold wakelock while starting the timer to prevent moving into suspend > > state. > > > > Signed-off-by: Tejaswi Tanikella <tejas...@codeaurora.org> > > As Florian stated, this won't be the only networking facility to hit > a problem like this. So, if we go down this route, we probably want > to generically solve this. > > But I have a deeper concern. > > Do we really want every timer based querying mechanism to prevent a > system from being able to suspend? > > We get to the point where external entities can generate traffic which > can prevent a remote system from entering suspend state.
Like you suggested maybe aquiring a wakelock will unnecessarily stop the system from suspending. Would using alarmtimer be better? It seems similar to a hrtimer but can wake the system up from suspend. This should allow the system to suspend till the timer expires. But might cause repeated wake-ups and suspends.