Commit 4891f4fe authored by Bob Pearson's avatar Bob Pearson Committed by Jason Gunthorpe
Browse files

RDMA/rxe: Don't schedule rxe_completer from rxe_requester

Now that rxe_completer() is always called serially after rxe_requester()
there is no reason to schedule rxe_completer() from rxe_requester().

Link: https://lore.kernel.org/r/20240329145513.35381-9-rpearsonhpe@gmail.com


Signed-off-by: default avatarBob Pearson <rpearsonhpe@gmail.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
parent cd8aaddf
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -440,12 +440,6 @@ int rxe_xmit_packet(struct rxe_qp *qp, struct rxe_pkt_info *pkt,
		return err;
	}

	if ((qp_type(qp) != IB_QPT_RC) &&
	    (pkt->mask & RXE_END_MASK)) {
		pkt->wqe->state = wqe_state_done;
		rxe_sched_task(&qp->send_task);
	}

	rxe_counter_inc(rxe, RXE_CNT_SENT_PKTS);
	goto done;

+2 −7
Original line number Diff line number Diff line
@@ -545,6 +545,8 @@ static void update_wqe_state(struct rxe_qp *qp,
	if (pkt->mask & RXE_END_MASK) {
		if (qp_type(qp) == IB_QPT_RC)
			wqe->state = wqe_state_pending;
		else
			wqe->state = wqe_state_done;
	} else {
		wqe->state = wqe_state_processing;
	}
@@ -631,12 +633,6 @@ static int rxe_do_local_ops(struct rxe_qp *qp, struct rxe_send_wqe *wqe)
	wqe->status = IB_WC_SUCCESS;
	qp->req.wqe_index = queue_next_index(qp->sq.queue, qp->req.wqe_index);

	/* There is no ack coming for local work requests
	 * which can lead to a deadlock. So go ahead and complete
	 * it now.
	 */
	rxe_sched_task(&qp->send_task);

	return 0;
}

@@ -760,7 +756,6 @@ int rxe_requester(struct rxe_qp *qp)
						       qp->req.wqe_index);
			wqe->state = wqe_state_done;
			wqe->status = IB_WC_SUCCESS;
			rxe_sched_task(&qp->send_task);
			goto done;
		}
		payload = mtu;