IB/hfi1,IB/qib: Use new send completion helper
authorMike Marciniszyn <mike.marciniszyn@intel.com>
Thu, 8 Dec 2016 03:34:12 +0000 (19:34 -0800)
committerDoug Ledford <dledford@redhat.com>
Sun, 11 Dec 2016 20:29:42 +0000 (15:29 -0500)
Convert cq completion returns in both rdmavt drivers
to use the new helper.

Reviewed-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/hfi1/rc.c
drivers/infiniband/hw/hfi1/ruc.c
drivers/infiniband/hw/hfi1/verbs.c
drivers/infiniband/hw/qib/qib_rc.c
drivers/infiniband/hw/qib/qib_ruc.c
drivers/infiniband/hw/qib/qib_verbs.c

index c996a373837ecbdd2d9d3f0cd034a41394645621..3df1c06505716dcde042b196aae29221504de25f 100644 (file)
@@ -1146,7 +1146,6 @@ void hfi1_rc_send_complete(struct rvt_qp *qp, struct ib_header *hdr)
 {
        struct ib_other_headers *ohdr;
        struct rvt_swqe *wqe;
-       struct ib_wc wc;
        unsigned i;
        u32 opcode;
        u32 psn;
@@ -1200,17 +1199,7 @@ void hfi1_rc_send_complete(struct rvt_qp *qp, struct ib_header *hdr)
 
                        rvt_put_mr(sge->mr);
                }
-               /* Post a send completion queue entry if requested. */
-               if (!(qp->s_flags & RVT_S_SIGNAL_REQ_WR) ||
-                   (wqe->wr.send_flags & IB_SEND_SIGNALED)) {
-                       memset(&wc, 0, sizeof(wc));
-                       wc.wr_id = wqe->wr.wr_id;
-                       wc.status = IB_WC_SUCCESS;
-                       wc.opcode = ib_hfi1_wc_opcode[wqe->wr.opcode];
-                       wc.byte_len = wqe->length;
-                       wc.qp = &qp->ibqp;
-                       rvt_cq_enter(ibcq_to_rvtcq(qp->ibqp.send_cq), &wc, 0);
-               }
+               rvt_qp_swqe_complete(qp, wqe, IB_WC_SUCCESS);
        }
        /*
         * If we were waiting for sends to complete before re-sending,
@@ -1240,7 +1229,6 @@ static struct rvt_swqe *do_rc_completion(struct rvt_qp *qp,
                                         struct rvt_swqe *wqe,
                                         struct hfi1_ibport *ibp)
 {
-       struct ib_wc wc;
        unsigned i;
 
        lockdep_assert_held(&qp->s_lock);
@@ -1264,17 +1252,7 @@ static struct rvt_swqe *do_rc_completion(struct rvt_qp *qp,
                qp->s_last = s_last;
                /* see post_send() */
                barrier();
-               /* Post a send completion queue entry if requested. */
-               if (!(qp->s_flags & RVT_S_SIGNAL_REQ_WR) ||
-                   (wqe->wr.send_flags & IB_SEND_SIGNALED)) {
-                       memset(&wc, 0, sizeof(wc));
-                       wc.wr_id = wqe->wr.wr_id;
-                       wc.status = IB_WC_SUCCESS;
-                       wc.opcode = ib_hfi1_wc_opcode[wqe->wr.opcode];
-                       wc.byte_len = wqe->length;
-                       wc.qp = &qp->ibqp;
-                       rvt_cq_enter(ibcq_to_rvtcq(qp->ibqp.send_cq), &wc, 0);
-               }
+               rvt_qp_swqe_complete(qp, wqe, IB_WC_SUCCESS);
        } else {
                struct hfi1_pportdata *ppd = ppd_from_ibp(ibp);
 
index 2ec3e908691bf69c6b6248945b9c08ef90e0d73a..03c89315f1c71f441adfa7e1ba5969029a49bd2a 100644 (file)
@@ -964,22 +964,7 @@ void hfi1_send_complete(struct rvt_qp *qp, struct rvt_swqe *wqe,
            qp->ibqp.qp_type == IB_QPT_GSI)
                atomic_dec(&ibah_to_rvtah(wqe->ud_wr.ah)->refcount);
 
-       /* See ch. 11.2.4.1 and 10.7.3.1 */
-       if (!(qp->s_flags & RVT_S_SIGNAL_REQ_WR) ||
-           (wqe->wr.send_flags & IB_SEND_SIGNALED) ||
-           status != IB_WC_SUCCESS) {
-               struct ib_wc wc;
-
-               memset(&wc, 0, sizeof(wc));
-               wc.wr_id = wqe->wr.wr_id;
-               wc.status = status;
-               wc.opcode = ib_hfi1_wc_opcode[wqe->wr.opcode];
-               wc.qp = &qp->ibqp;
-               if (status == IB_WC_SUCCESS)
-                       wc.byte_len = wqe->length;
-               rvt_cq_enter(ibcq_to_rvtcq(qp->ibqp.send_cq), &wc,
-                            status != IB_WC_SUCCESS);
-       }
+       rvt_qp_swqe_complete(qp, wqe, status);
 
        if (qp->s_acked == old_last)
                qp->s_acked = last;
index 3b7bfd817647666ec28357668d31e4ded536e3e6..95ed4d6da510c474fce19f92fcdda8098fd926b1 100644 (file)
@@ -296,22 +296,6 @@ static inline int wss_exceeds_threshold(void)
        return atomic_read(&wss.total_count) >= wss.threshold;
 }
 
-/*
- * Translate ib_wr_opcode into ib_wc_opcode.
- */
-const enum ib_wc_opcode ib_hfi1_wc_opcode[] = {
-       [IB_WR_RDMA_WRITE] = IB_WC_RDMA_WRITE,
-       [IB_WR_RDMA_WRITE_WITH_IMM] = IB_WC_RDMA_WRITE,
-       [IB_WR_SEND] = IB_WC_SEND,
-       [IB_WR_SEND_WITH_IMM] = IB_WC_SEND,
-       [IB_WR_RDMA_READ] = IB_WC_RDMA_READ,
-       [IB_WR_ATOMIC_CMP_AND_SWP] = IB_WC_COMP_SWAP,
-       [IB_WR_ATOMIC_FETCH_AND_ADD] = IB_WC_FETCH_ADD,
-       [IB_WR_SEND_WITH_INV] = IB_WC_SEND,
-       [IB_WR_LOCAL_INV] = IB_WC_LOCAL_INV,
-       [IB_WR_REG_MR] = IB_WC_REG_MR
-};
-
 /*
  * Length of header by opcode, 0 --> not supported
  */
index 2097512e75aa01b7ba7beade1011429a54465518..d549905147304d5fcdc734581f180d6aa5a7e4f6 100644 (file)
@@ -941,7 +941,6 @@ void qib_rc_send_complete(struct rvt_qp *qp, struct ib_header *hdr)
 {
        struct ib_other_headers *ohdr;
        struct rvt_swqe *wqe;
-       struct ib_wc wc;
        unsigned i;
        u32 opcode;
        u32 psn;
@@ -993,17 +992,7 @@ void qib_rc_send_complete(struct rvt_qp *qp, struct ib_header *hdr)
 
                        rvt_put_mr(sge->mr);
                }
-               /* Post a send completion queue entry if requested. */
-               if (!(qp->s_flags & RVT_S_SIGNAL_REQ_WR) ||
-                   (wqe->wr.send_flags & IB_SEND_SIGNALED)) {
-                       memset(&wc, 0, sizeof(wc));
-                       wc.wr_id = wqe->wr.wr_id;
-                       wc.status = IB_WC_SUCCESS;
-                       wc.opcode = ib_qib_wc_opcode[wqe->wr.opcode];
-                       wc.byte_len = wqe->length;
-                       wc.qp = &qp->ibqp;
-                       rvt_cq_enter(ibcq_to_rvtcq(qp->ibqp.send_cq), &wc, 0);
-               }
+               rvt_qp_swqe_complete(qp, wqe, IB_WC_SUCCESS);
        }
        /*
         * If we were waiting for sends to complete before resending,
@@ -1032,7 +1021,6 @@ static struct rvt_swqe *do_rc_completion(struct rvt_qp *qp,
                                         struct rvt_swqe *wqe,
                                         struct qib_ibport *ibp)
 {
-       struct ib_wc wc;
        unsigned i;
 
        /*
@@ -1055,17 +1043,7 @@ static struct rvt_swqe *do_rc_completion(struct rvt_qp *qp,
                qp->s_last = s_last;
                /* see post_send() */
                barrier();
-               /* Post a send completion queue entry if requested. */
-               if (!(qp->s_flags & RVT_S_SIGNAL_REQ_WR) ||
-                   (wqe->wr.send_flags & IB_SEND_SIGNALED)) {
-                       memset(&wc, 0, sizeof(wc));
-                       wc.wr_id = wqe->wr.wr_id;
-                       wc.status = IB_WC_SUCCESS;
-                       wc.opcode = ib_qib_wc_opcode[wqe->wr.opcode];
-                       wc.byte_len = wqe->length;
-                       wc.qp = &qp->ibqp;
-                       rvt_cq_enter(ibcq_to_rvtcq(qp->ibqp.send_cq), &wc, 0);
-               }
+               rvt_qp_swqe_complete(qp, wqe, IB_WC_SUCCESS);
        } else
                this_cpu_inc(*ibp->rvp.rc_delayed_comp);
 
index de1bde5950f5e33423bd60cafaf55c34001c44c9..87e3eb5a836b4dccbfee4604ab239573e8cd0be6 100644 (file)
@@ -815,22 +815,7 @@ void qib_send_complete(struct rvt_qp *qp, struct rvt_swqe *wqe,
            qp->ibqp.qp_type == IB_QPT_GSI)
                atomic_dec(&ibah_to_rvtah(wqe->ud_wr.ah)->refcount);
 
-       /* See ch. 11.2.4.1 and 10.7.3.1 */
-       if (!(qp->s_flags & RVT_S_SIGNAL_REQ_WR) ||
-           (wqe->wr.send_flags & IB_SEND_SIGNALED) ||
-           status != IB_WC_SUCCESS) {
-               struct ib_wc wc;
-
-               memset(&wc, 0, sizeof(wc));
-               wc.wr_id = wqe->wr.wr_id;
-               wc.status = status;
-               wc.opcode = ib_qib_wc_opcode[wqe->wr.opcode];
-               wc.qp = &qp->ibqp;
-               if (status == IB_WC_SUCCESS)
-                       wc.byte_len = wqe->length;
-               rvt_cq_enter(ibcq_to_rvtcq(qp->ibqp.send_cq), &wc,
-                            status != IB_WC_SUCCESS);
-       }
+       rvt_qp_swqe_complete(qp, wqe, status);
 
        if (qp->s_acked == old_last)
                qp->s_acked = last;
index 2044824689530577d57e0e5d5eafb64695deb5ce..4b54c0ddd08ae7c431a5c0f32aeb46d225004204 100644 (file)
@@ -113,19 +113,6 @@ static unsigned int ib_qib_disable_sma;
 module_param_named(disable_sma, ib_qib_disable_sma, uint, S_IWUSR | S_IRUGO);
 MODULE_PARM_DESC(disable_sma, "Disable the SMA");
 
-/*
- * Translate ib_wr_opcode into ib_wc_opcode.
- */
-const enum ib_wc_opcode ib_qib_wc_opcode[] = {
-       [IB_WR_RDMA_WRITE] = IB_WC_RDMA_WRITE,
-       [IB_WR_RDMA_WRITE_WITH_IMM] = IB_WC_RDMA_WRITE,
-       [IB_WR_SEND] = IB_WC_SEND,
-       [IB_WR_SEND_WITH_IMM] = IB_WC_SEND,
-       [IB_WR_RDMA_READ] = IB_WC_RDMA_READ,
-       [IB_WR_ATOMIC_CMP_AND_SWP] = IB_WC_COMP_SWAP,
-       [IB_WR_ATOMIC_FETCH_AND_ADD] = IB_WC_FETCH_ADD
-};
-
 /*
  * System image GUID.
  */