]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
RDMA/ocrdma: SQ and RQ doorbell offset clean up
authorDevesh Sharma <Devesh.Sharma@Emulex.Com>
Tue, 4 Feb 2014 06:26:55 +0000 (11:56 +0530)
committerRoland Dreier <roland@purestorage.com>
Thu, 3 Apr 2014 15:29:36 +0000 (08:29 -0700)
Introducing new macros to define SQ and RQ doorbell offset.

Signed-off-by: Devesh Sharma <devesh.sharma@emulex.com>
Signed-off-by: Selvin Xavier <selvin.xavier@emulex.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/infiniband/hw/ocrdma/ocrdma.h
drivers/infiniband/hw/ocrdma/ocrdma_sli.h
drivers/infiniband/hw/ocrdma/ocrdma_verbs.c

index 61f508e7482323a0c21d3df79543a55bc5b5cd1a..1b51e67a26d7eaedea09ca6905452bc9b5237afe 100644 (file)
@@ -386,13 +386,6 @@ static inline struct ocrdma_srq *get_ocrdma_srq(struct ib_srq *ibsrq)
        return container_of(ibsrq, struct ocrdma_srq, ibsrq);
 }
 
-
-static inline int ocrdma_get_num_posted_shift(struct ocrdma_qp *qp)
-{
-       return ((qp->dev->nic_info.dev_family == OCRDMA_GEN2_FAMILY &&
-                qp->id < 128) ? 24 : 16);
-}
-
 static inline int is_cqe_valid(struct ocrdma_cq *cq, struct ocrdma_cqe *cqe)
 {
        int cqe_valid;
index 60d5ac23ea803f47c61b2be0ed2bd31590eb97cb..e71685a7ffaed91e59e5e2e54aa04cd9cf38a6d2 100644 (file)
@@ -103,7 +103,10 @@ enum {
        OCRDMA_DB_GEN2_SRQ_OFFSET       = OCRDMA_DB_GEN2_RQ_OFFSET,
        OCRDMA_DB_CQ_OFFSET             = 0x120,
        OCRDMA_DB_EQ_OFFSET             = OCRDMA_DB_CQ_OFFSET,
-       OCRDMA_DB_MQ_OFFSET             = 0x140
+       OCRDMA_DB_MQ_OFFSET             = 0x140,
+
+       OCRDMA_DB_SQ_SHIFT              = 16,
+       OCRDMA_DB_RQ_SHIFT              = 24
 };
 
 #define OCRDMA_DB_CQ_RING_ID_MASK       0x3FF  /* bits 0 - 9 */
index 7d59ed340991b67f62cc595ebdaa06466d02e2dc..be75d2b1ea9fe18fc7eaf41d70066b06d5d9826b 100644 (file)
@@ -1127,15 +1127,9 @@ static int ocrdma_copy_qp_uresp(struct ocrdma_qp *qp,
        }
        uresp.db_page_addr = usr_db;
        uresp.db_page_size = dev->nic_info.db_page_size;
-       if (dev->nic_info.dev_family == OCRDMA_GEN2_FAMILY) {
-               uresp.db_sq_offset = OCRDMA_DB_GEN2_SQ_OFFSET;
-               uresp.db_rq_offset = OCRDMA_DB_GEN2_RQ_OFFSET;
-               uresp.db_shift = 24;
-       } else {
-               uresp.db_sq_offset = OCRDMA_DB_SQ_OFFSET;
-               uresp.db_rq_offset = OCRDMA_DB_RQ_OFFSET;
-               uresp.db_shift = 16;
-       }
+       uresp.db_sq_offset = OCRDMA_DB_GEN2_SQ_OFFSET;
+       uresp.db_rq_offset = OCRDMA_DB_GEN2_RQ_OFFSET;
+       uresp.db_shift = OCRDMA_DB_RQ_SHIFT;
 
        if (qp->dpp_enabled) {
                uresp.dpp_credit = dpp_credit_lmt;
@@ -1308,7 +1302,7 @@ static void ocrdma_flush_rq_db(struct ocrdma_qp *qp)
 {
        if (qp->db_cache) {
                u32 val = qp->rq.dbid | (qp->db_cache <<
-                               ocrdma_get_num_posted_shift(qp));
+                               OCRDMA_DB_RQ_SHIFT);
                iowrite32(val, qp->rq_db);
                qp->db_cache = 0;
        }
@@ -2052,7 +2046,7 @@ static int ocrdma_build_fr(struct ocrdma_qp *qp, struct ocrdma_hdr_wqe *hdr,
 
 static void ocrdma_ring_sq_db(struct ocrdma_qp *qp)
 {
-       u32 val = qp->sq.dbid | (1 << 16);
+       u32 val = qp->sq.dbid | (1 << OCRDMA_DB_SQ_SHIFT);
 
        iowrite32(val, qp->sq_db);
 }
@@ -2157,12 +2151,9 @@ int ocrdma_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
 
 static void ocrdma_ring_rq_db(struct ocrdma_qp *qp)
 {
-       u32 val = qp->rq.dbid | (1 << ocrdma_get_num_posted_shift(qp));
+       u32 val = qp->rq.dbid | (1 << OCRDMA_DB_RQ_SHIFT);
 
-       if (qp->state != OCRDMA_QPS_INIT)
-               iowrite32(val, qp->rq_db);
-       else
-               qp->db_cache++;
+       iowrite32(val, qp->rq_db);
 }
 
 static void ocrdma_build_rqe(struct ocrdma_hdr_wqe *rqe, struct ib_recv_wr *wr,