diff options
author | Alex Elder <elder@linaro.org> | 2020-11-05 12:14:01 -0600 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2020-11-07 15:39:16 -0800 |
commit | b054d4f9eb4b34c2187b89afb56e25b588618a9c (patch) | |
tree | 959078b85f0ad45adb765dcf29d8273f6f5161fb /drivers/net/ipa/ipa_mem.h | |
parent | 3ca97ffd984c477e6bba26a71ebba188b99f1a4c (diff) | |
download | linux-b054d4f9eb4b34c2187b89afb56e25b588618a9c.tar.bz2 |
net: ipa: only enable GSI channel control IRQs when needed
A GSI channel causes a channel control interrupt to fire whenever
its state changes (between NOT_ALLOCATED, ALLOCATED, STARTED, etc.).
We do not support inter-EE channel commands (initiated by other EEs),
so no channel should ever change state except when we request it to.
Currently, we permit *all* channels to generate channel control
interrupts--even those that are never used. And we enable channel
control interrupts essentially at all times, from setup to teardown.
Instead, disable all channel control interrupts initially in
gsi_irq_setup(), and only enable the channel control interrupt
type for the duration of a channel command. When doing so, only
allow the channel being operated upon to cause the interrupt to
fire.
Because a channel's interrupt is now enabled only when needed (one
channel at a time), there is no longer any need to zero the channel
mask in gsi_irq_disable().
Add new gsi_irq_type_enable() and gsi_irq_type_disable() as helper
functions to control whether a given GSI interrupt type is enabled.
Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'drivers/net/ipa/ipa_mem.h')
0 files changed, 0 insertions, 0 deletions