• Alex Elder's avatar
    net: ipa: use state to determine channel command success · 6ffddf3b
    Alex Elder authored
    The result of issuing a channel control command should be that the
    channel changes state.  If enabled, a completion interrupt signals
    that the channel state has changed.  This interrupt is enabled by
    gsi_channel_command() and disabled again after the command has
    completed (or we time out).
    
    There is a window of time--after the completion interrupt is disabled
    but before the channel state is read--during which the command could
    complete successfully without interrupting.  This would cause the
    channel to transition to the desired new state.
    
    So whether a channel command ends via completion interrupt or
    timeout, we can consider the command successful if the channel
    has entered the desired state (and a failure if it has not,
    regardless of the cause).
    
    Fixes: d6c9e3f5 ("net: ipa: only enable generic command completion IRQ when needed");
    Signed-off-by: default avatarAlex Elder <elder@linaro.org>
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    6ffddf3b
gsi.c 63.7 KB