• Sergey Gorenko's avatar
    IB/iser: Fix login with authentication · d6d142cb
    Sergey Gorenko authored
    The iSER Initiator uses two types of receive buffers:
    
      - one big login buffer posted by iser_post_recvl();
      - several small message buffers posted by iser_post_recvm().
    
    The login buffer is used at the login phase and full feature phase in
    the discovery session. It may take a few requests and responses to
    complete the login phase. The message buffers are only used in the
    normal operational session at the full feature phase.
    
    After the commit referred in the fixes line, the login operation fails
    if the authentication is enabled. That happens because the Initiator
    posts a small receive buffer after the first response from Target. So,
    the next send operation fails because Target's second response does not
    fit into the small receive buffer.
    
    This commit adds additional checks to prevent posting small receive
    buffers until the full feature phase.
    
    Fixes: 39b169ea ("IB/iser: Fix RNR errors")
    Link: https://lore.kernel.org/r/20220805060135.18493-1-sergeygo@nvidia.comSigned-off-by: default avatarSergey Gorenko <sergeygo@nvidia.com>
    Reviewed-by: default avatarMax Gurtovoy <mgurtovoy@nvidia.com>
    Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
    d6d142cb
iser_initiator.c 20.5 KB