IB/qib, staging/rdma/hfi1: add s_hlock for use in post send
This patch adds an additional lock to reduce contention on the s_lock. This lock is used in post_send() so that the post_send is not serialized with the send engine and other send related processing. To do this the s_next_psn is now maintained on post_send() while post_send() related fields are moved to a new cache line. There is an s_avail maintained for the post_send() to mitigate trading cache lines with the send engine. The lock is released/acquired around releasing the just built packet to the egress mechanism. Reviewed-by: Jubin John <jubin.john@intel.com> Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Dean Luick <dean.luick@intel.com> Signed-off-by: Harish Chegondi <harish.chegondi@intel.com> Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com> Signed-off-by: Ira Weiny <ira.weiny@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:

committed by
Doug Ledford

parent
20f333b613
commit
46a80d62e6
@@ -298,9 +298,7 @@ static inline int qib_send_ok(struct rvt_qp *qp)
|
||||
!(qp->s_flags & RVT_S_ANY_WAIT_SEND));
|
||||
}
|
||||
|
||||
/*
|
||||
* This must be called with s_lock held.
|
||||
*/
|
||||
void _qib_schedule_send(struct rvt_qp *qp);
|
||||
void qib_schedule_send(struct rvt_qp *qp);
|
||||
|
||||
static inline int qib_pkey_ok(u16 pkey1, u16 pkey2)
|
||||
@@ -392,6 +390,8 @@ void qib_rc_rcv(struct qib_ctxtdata *rcd, struct qib_ib_header *hdr,
|
||||
|
||||
int qib_check_ah(struct ib_device *ibdev, struct ib_ah_attr *ah_attr);
|
||||
|
||||
int qib_check_send_wqe(struct rvt_qp *qp, struct rvt_swqe *wqe);
|
||||
|
||||
struct ib_ah *qib_create_qp0_ah(struct qib_ibport *ibp, u16 dlid);
|
||||
|
||||
void qib_rc_rnr_retry(unsigned long arg);
|
||||
|
Reference in New Issue
Block a user