• Alex Elder's avatar
    net: ipa: introduce channel flow control · 4c9d631a
    Alex Elder authored
    One quirk for certain versions of IPA is that endpoint DELAY mode
    does not work properly.  IPA DELAY mode prevents any packets from
    being delivered to the IPA core for processing on a TX endpoint.
    The AP uses DELAY mode when the modem crashes, to prevent modem TX
    endpoints from generating traffic during crash recovery.  Without
    this, there is a chance the hardware will stall during recovery from
    a modem crash.
    
    To achieve a similar effect, a GSI FLOW_CONTROLLED channel state
    was created.  A STARTED TX channel can be placed in FLOW_CONTROLLED
    state, which prevents the transfer of any more packets.  A channel
    in FLOW_CONTROLLED state can be either returned to STARTED state, or
    can be transitioned to STOPPED state.
    
    Because this operates on GSI channels, two generic commands were
    added to allow the AP to control this state for modem channels
    (similar to the ALLOCATE and HALT channel commands).
    
    Previously the code assumed this quirk only applied to IPA v4.2.
    In fact, channel flow control (rather than endpoint DELAY mode)
    should be used for all versions *starting* with IPA v4.2.
    Signed-off-by: default avatarAlex Elder <elder@linaro.org>
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    4c9d631a
ipa_endpoint.c 53.2 KB