diff --git a/mooncake-transfer-engine/src/transport/rdma_transport/rdma_endpoint.cpp b/mooncake-transfer-engine/src/transport/rdma_transport/rdma_endpoint.cpp index daa660038..a784b9bec 100644 --- a/mooncake-transfer-engine/src/transport/rdma_transport/rdma_endpoint.cpp +++ b/mooncake-transfer-engine/src/transport/rdma_transport/rdma_endpoint.cpp @@ -355,17 +355,12 @@ int RdmaEndPoint::doSetupConnection(int qp_index, const std::string &peer_gid, return ERR_INVALID_ARGUMENT; auto &qp = qp_list_[qp_index]; - // Any state -> RESET + // Any state -> RESET (removed) + // Modifying the QP to RESET is not necessary here, as it is already in the + // RESET state. This avoids the 'invalid argument' issue on some RDMA + // devices, such as the Intel E810. ibv_qp_attr attr; - memset(&attr, 0, sizeof(attr)); - attr.qp_state = IBV_QPS_RESET; - int ret = ibv_modify_qp(qp, &attr, IBV_QP_STATE); - if (ret) { - std::string message = "Failed to modify QP to RESET"; - PLOG(ERROR) << "[Handshake] " << message; - if (reply_msg) *reply_msg = message + ": " + strerror(errno); - return ERR_ENDPOINT; - } + int ret; // RESET -> INIT memset(&attr, 0, sizeof(attr));