• Hariprasad S's avatar
    RDMA/iw_cxgb4: Handle ULP accept/reject during ABORTING · e8667a9b
    Hariprasad S authored
    c4iw_reject() and c4iw_accept() need to handle the case where the
    endpoint has timed out and is in the middle of ABORTING the connection.
    
    Here is the flow that causes the BUG_ON() to fire on the server side:
    
    1) offload connection setup and endpoint timer started
    
    2) MPA_START request received from peer, CONNECT_REQUEST passed to ULP
    
    3) endpoint timer fires, and process_timeout() aborts the connection,
    this moves the endpoint state to ABORTING until HW sends up the
    ABORT_RPL_RSS.
    
    4) application exits closing the CONNECT_REQUEST cm_id.  The IWCM calls
    c4iw_reject_cr() to destroy this connection request.
    
    5) WHAMO: BUG_ON() because the state is ABORTING.
    
    The fix is to change c4iw_reject_cr() and c4iw_accept_cr() to fail the
    operation if the state is not in MPA_REQ_RCVD vs in DEAD.
    Signed-off-by: default avatarSteve Wise <swise@opengridcomputing.com>
    Signed-off-by: default avatarHariprasad Shenai <hariprasad@chelsio.com>
    Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
    e8667a9b
cm.c 115 KB