]> git.baikalelectronics.ru Git - kernel.git/commit
net: ipa: do not clear interrupt in gsi_channel_start()
authorAlex Elder <elder@linaro.org>
Fri, 15 May 2020 20:07:31 +0000 (15:07 -0500)
committerDavid S. Miller <davem@davemloft.net>
Sat, 16 May 2020 23:47:19 +0000 (16:47 -0700)
commit7b494102ef365f268bed228f9b64b9222f208d71
tree3c6810b70db8a6f32da3d0ff199785135fcc921c
parent85d2eef618e3c165d82f0c82d389e99d7fdfa67b
net: ipa: do not clear interrupt in gsi_channel_start()

In gsi_channel_start() there is harmless-looking comment "Clear the
channel's event ring interrupt in case it's pending".  The intent
was to avoid getting spurious interrupts when first bringing up a
channel.

However we now use channel stop/start to implement suspend and
resume, and an interrupt pending at the time we resume is actually
something we don't want to ignore.

The very first time we bring up the channel we do not expect an
interrupt to be pending, and even if it were, the effect would
simply be to schedule NAPI on that channel, which would find nothing
to do, which is not a problem.

Stop clearing any pending IEOB interrupt in gsi_channel_start().
That leaves one caller of the trivial function gsi_isr_ieob_clear().
Get rid of that function and just open-code it in gsi_isr_ieob()
instead.

This fixes a problem where suspend/resume IPA v4.2 would get stuck
when resuming after a suspend.

Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ipa/gsi.c