Merge tag 'v5.18' into rdma.git for-next
[platform/kernel/linux-starfive.git] / drivers / infiniband / sw / rxe / rxe_resp.c
index 9cd0eaf..f4f6ee5 100644 (file)
@@ -277,7 +277,6 @@ static enum resp_states check_op_valid(struct rxe_qp *qp,
                break;
 
        case IB_QPT_UD:
-       case IB_QPT_SMI:
        case IB_QPT_GSI:
                break;
 
@@ -577,8 +576,7 @@ static enum resp_states process_atomic(struct rxe_qp *qp,
 
        qp->resp.atomic_orig = *vaddr;
 
-       if (pkt->opcode == IB_OPCODE_RC_COMPARE_SWAP ||
-           pkt->opcode == IB_OPCODE_RD_COMPARE_SWAP) {
+       if (pkt->opcode == IB_OPCODE_RC_COMPARE_SWAP) {
                if (*vaddr == atmeth_comp(pkt))
                        *vaddr = atmeth_swap_add(pkt);
        } else {
@@ -834,7 +832,6 @@ static enum resp_states execute(struct rxe_qp *qp, struct rxe_pkt_info *pkt)
 
        if (pkt->mask & RXE_SEND_MASK) {
                if (qp_type(qp) == IB_QPT_UD ||
-                   qp_type(qp) == IB_QPT_SMI ||
                    qp_type(qp) == IB_QPT_GSI) {
                        if (skb->protocol == htons(ETH_P_IP)) {
                                memset(&hdr.reserved, 0,
@@ -1265,7 +1262,8 @@ int rxe_responder(void *arg)
        struct rxe_pkt_info *pkt = NULL;
        int ret = 0;
 
-       rxe_get(qp);
+       if (!rxe_get(qp))
+               return -EAGAIN;
 
        qp->resp.aeth_syndrome = AETH_ACK_UNLIMITED;