IB/rdmavt, IB/qib, IB/hfi1: Use new QP put get routines
authorMike Marciniszyn <mike.marciniszyn@intel.com>
Tue, 6 Sep 2016 11:34:35 +0000 (04:34 -0700)
committerDoug Ledford <dledford@redhat.com>
Fri, 16 Sep 2016 18:35:27 +0000 (14:35 -0400)
This improves readability and hides the reference count
mechanism from the client drivers.

Reviewed-by: Dennis Dalessandro <dennis.dalessandro@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/qp.c
drivers/infiniband/hw/hfi1/rc.c
drivers/infiniband/hw/hfi1/verbs.c
drivers/infiniband/hw/hfi1/verbs_txreq.c
drivers/infiniband/hw/qib/qib_driver.c
drivers/infiniband/hw/qib/qib_rc.c
drivers/infiniband/sw/rdmavt/qp.c

index 4e4d8317c281cde45278c34104e29aca00b284f2..63f56a8bb33210cc3574b8e2193ddf38ae84863a 100644 (file)
@@ -202,8 +202,7 @@ static void flush_iowait(struct rvt_qp *qp)
        write_seqlock_irqsave(&dev->iowait_lock, flags);
        if (!list_empty(&priv->s_iowait.list)) {
                list_del_init(&priv->s_iowait.list);
-               if (atomic_dec_and_test(&qp->refcount))
-                       wake_up(&qp->wait);
+               rvt_put_qp(qp);
        }
        write_sequnlock_irqrestore(&dev->iowait_lock, flags);
 }
@@ -503,8 +502,7 @@ void hfi1_qp_wakeup(struct rvt_qp *qp, u32 flag)
        }
        spin_unlock_irqrestore(&qp->s_lock, flags);
        /* Notify hfi1_destroy_qp() if it is waiting. */
-       if (atomic_dec_and_test(&qp->refcount))
-               wake_up(&qp->wait);
+       rvt_put_qp(qp);
 }
 
 static int iowait_sleep(
@@ -544,7 +542,7 @@ static int iowait_sleep(
                        qp->s_flags |= RVT_S_WAIT_DMA_DESC;
                        list_add_tail(&priv->s_iowait.list, &sde->dmawait);
                        trace_hfi1_qpsleep(qp, RVT_S_WAIT_DMA_DESC);
-                       atomic_inc(&qp->refcount);
+                       rvt_get_qp(qp);
                }
                write_sequnlock(&dev->iowait_lock);
                qp->s_flags &= ~RVT_S_BUSY;
@@ -963,8 +961,7 @@ void notify_error_qp(struct rvt_qp *qp)
        if (!list_empty(&priv->s_iowait.list) && !(qp->s_flags & RVT_S_BUSY)) {
                qp->s_flags &= ~RVT_S_ANY_WAIT_IO;
                list_del_init(&priv->s_iowait.list);
-               if (atomic_dec_and_test(&qp->refcount))
-                       wake_up(&qp->wait);
+               rvt_put_qp(qp);
        }
        write_sequnlock(&dev->iowait_lock);
 
index 5da190e6011b1390f7861b2bd89a5a09e7976c14..acf0eb87ed2a4c1a127fd77c201a79c156a068c2 100644 (file)
@@ -1389,7 +1389,7 @@ static int do_rc_ack(struct rvt_qp *qp, u32 aeth, u32 psn, int opcode,
                                restart_rc(qp, qp->s_last_psn + 1, 0);
                                if (list_empty(&qp->rspwait)) {
                                        qp->r_flags |= RVT_R_RSP_SEND;
-                                       atomic_inc(&qp->refcount);
+                                       rvt_get_qp(qp);
                                        list_add_tail(&qp->rspwait,
                                                      &rcd->qp_wait_list);
                                }
@@ -1573,7 +1573,7 @@ static void rdma_seq_err(struct rvt_qp *qp, struct hfi1_ibport *ibp, u32 psn,
        restart_rc(qp, qp->s_last_psn + 1, 0);
        if (list_empty(&qp->rspwait)) {
                qp->r_flags |= RVT_R_RSP_SEND;
-               atomic_inc(&qp->refcount);
+               rvt_get_qp(qp);
                list_add_tail(&qp->rspwait, &rcd->qp_wait_list);
        }
 }
@@ -1782,7 +1782,7 @@ static inline void rc_defered_ack(struct hfi1_ctxtdata *rcd,
 {
        if (list_empty(&qp->rspwait)) {
                qp->r_flags |= RVT_R_RSP_NAK;
-               atomic_inc(&qp->refcount);
+               rvt_get_qp(qp);
                list_add_tail(&qp->rspwait, &rcd->qp_wait_list);
        }
 }
@@ -1796,8 +1796,7 @@ static inline void rc_cancel_ack(struct rvt_qp *qp)
                return;
        list_del_init(&qp->rspwait);
        qp->r_flags &= ~RVT_R_RSP_NAK;
-       if (atomic_dec_and_test(&qp->refcount))
-               wake_up(&qp->wait);
+       rvt_put_qp(qp);
 }
 
 /**
index 2b359540901db3dd4c42cad718cc938ff7139d6a..92a61c47dedcfbd56c37c95077075d1757708497 100644 (file)
@@ -748,7 +748,7 @@ static int wait_kmem(struct hfi1_ibdev *dev,
                        qp->s_flags |= RVT_S_WAIT_KMEM;
                        list_add_tail(&priv->s_iowait.list, &dev->memwait);
                        trace_hfi1_qpsleep(qp, RVT_S_WAIT_KMEM);
-                       atomic_inc(&qp->refcount);
+                       rvt_get_qp(qp);
                }
                write_sequnlock(&dev->iowait_lock);
                qp->s_flags &= ~RVT_S_BUSY;
@@ -959,7 +959,7 @@ static int pio_wait(struct rvt_qp *qp,
                        was_empty = list_empty(&sc->piowait);
                        list_add_tail(&priv->s_iowait.list, &sc->piowait);
                        trace_hfi1_qpsleep(qp, RVT_S_WAIT_PIO);
-                       atomic_inc(&qp->refcount);
+                       rvt_get_qp(qp);
                        /* counting: only call wantpiobuf_intr if first user */
                        if (was_empty)
                                hfi1_sc_wantpiobuf_intr(sc, 1);
index d8fb056526f8ba079bc7f57feffa63fd0ffa3415..094ab829ec42fdf8ae75a720fbd2a97500cf9994 100644 (file)
@@ -109,7 +109,7 @@ struct verbs_txreq *__get_txreq(struct hfi1_ibdev *dev,
                        qp->s_flags |= RVT_S_WAIT_TX;
                        list_add_tail(&priv->s_iowait.list, &dev->txwait);
                        trace_hfi1_qpsleep(qp, RVT_S_WAIT_TX);
-                       atomic_inc(&qp->refcount);
+                       rvt_get_qp(qp);
                }
                qp->s_flags &= ~RVT_S_BUSY;
        }
index 67ee6438cf59c3f7cc72de2b955d4e850f62a5a6..df77d5f6bb3a737454fa1debc914aaa7d20c7496 100644 (file)
@@ -588,8 +588,7 @@ move_along:
                                qib_schedule_send(qp);
                        spin_unlock_irqrestore(&qp->s_lock, flags);
                }
-               if (atomic_dec_and_test(&qp->refcount))
-                       wake_up(&qp->wait);
+               rvt_put_qp(qp);
        }
 
 bail:
index 444028a3582a3898f2ddcedcdb69614904ab6f0d..38cd87135b1906cfd1786e5bd0072aa37119ebf9 100644 (file)
@@ -1177,7 +1177,7 @@ static int do_rc_ack(struct rvt_qp *qp, u32 aeth, u32 psn, int opcode,
                                qib_restart_rc(qp, qp->s_last_psn + 1, 0);
                                if (list_empty(&qp->rspwait)) {
                                        qp->r_flags |= RVT_R_RSP_SEND;
-                                       atomic_inc(&qp->refcount);
+                                       rvt_get_qp(qp);
                                        list_add_tail(&qp->rspwait,
                                                      &rcd->qp_wait_list);
                                }
@@ -1361,7 +1361,7 @@ static void rdma_seq_err(struct rvt_qp *qp, struct qib_ibport *ibp, u32 psn,
        qib_restart_rc(qp, qp->s_last_psn + 1, 0);
        if (list_empty(&qp->rspwait)) {
                qp->r_flags |= RVT_R_RSP_SEND;
-               atomic_inc(&qp->refcount);
+               rvt_get_qp(qp);
                list_add_tail(&qp->rspwait, &rcd->qp_wait_list);
        }
 }
@@ -1640,7 +1640,7 @@ static int qib_rc_rcv_error(struct qib_other_headers *ohdr,
                         */
                        if (list_empty(&qp->rspwait)) {
                                qp->r_flags |= RVT_R_RSP_NAK;
-                               atomic_inc(&qp->refcount);
+                               rvt_get_qp(qp);
                                list_add_tail(&qp->rspwait, &rcd->qp_wait_list);
                        }
                }
@@ -2233,7 +2233,7 @@ rnr_nak:
        /* Queue RNR NAK for later */
        if (list_empty(&qp->rspwait)) {
                qp->r_flags |= RVT_R_RSP_NAK;
-               atomic_inc(&qp->refcount);
+               rvt_get_qp(qp);
                list_add_tail(&qp->rspwait, &rcd->qp_wait_list);
        }
        return;
@@ -2245,7 +2245,7 @@ nack_op_err:
        /* Queue NAK for later */
        if (list_empty(&qp->rspwait)) {
                qp->r_flags |= RVT_R_RSP_NAK;
-               atomic_inc(&qp->refcount);
+               rvt_get_qp(qp);
                list_add_tail(&qp->rspwait, &rcd->qp_wait_list);
        }
        return;
@@ -2259,7 +2259,7 @@ nack_inv:
        /* Queue NAK for later */
        if (list_empty(&qp->rspwait)) {
                qp->r_flags |= RVT_R_RSP_NAK;
-               atomic_inc(&qp->refcount);
+               rvt_get_qp(qp);
                list_add_tail(&qp->rspwait, &rcd->qp_wait_list);
        }
        return;
index 870b4f212fbcfde8e09031897105614532eee244..da5c8d6eed9981fa2a7572ceedcb378bb72e7130 100644 (file)
@@ -488,8 +488,7 @@ static void rvt_remove_qp(struct rvt_dev_info *rdi, struct rvt_qp *qp)
        spin_unlock_irqrestore(&rdi->qp_dev->qpt_lock, flags);
        if (removed) {
                synchronize_rcu();
-               if (atomic_dec_and_test(&qp->refcount))
-                       wake_up(&qp->wait);
+               rvt_put_qp(qp);
        }
 }
 
@@ -980,7 +979,7 @@ static void rvt_insert_qp(struct rvt_dev_info *rdi, struct rvt_qp *qp)
        struct rvt_ibport *rvp = rdi->ports[qp->port_num - 1];
        unsigned long flags;
 
-       atomic_inc(&qp->refcount);
+       rvt_get_qp(qp);
        spin_lock_irqsave(&rdi->qp_dev->qpt_lock, flags);
 
        if (qp->ibqp.qp_num <= 1) {