]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
RDMA/ocrdma: Code clean-up
authorDevesh Sharma <Devesh.Sharma@Emulex.Com>
Tue, 4 Feb 2014 06:27:10 +0000 (11:57 +0530)
committerRoland Dreier <roland@purestorage.com>
Thu, 3 Apr 2014 15:30:06 +0000 (08:30 -0700)
Clean up code.  Also modifying GSI QP to error during ocrdma_close is fixed.

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_abi.h
drivers/infiniband/hw/ocrdma/ocrdma_ah.c
drivers/infiniband/hw/ocrdma/ocrdma_hw.c
drivers/infiniband/hw/ocrdma/ocrdma_main.c
drivers/infiniband/hw/ocrdma/ocrdma_sli.h
drivers/infiniband/hw/ocrdma/ocrdma_verbs.c

index 3042c87a74ba14b129691c1726a5d9a4689de35b..19011dbb930fb38d899c6f365bd981ce94a70174 100644 (file)
@@ -35,6 +35,7 @@
 
 #include <rdma/ib_verbs.h>
 #include <rdma/ib_user_verbs.h>
+#include <rdma/ib_addr.h>
 
 #include <be_roce.h>
 #include "ocrdma_sli.h"
@@ -234,7 +235,7 @@ struct ocrdma_dev {
        struct list_head entry;
        struct rcu_head rcu;
        int id;
-       struct ocrdma_mr *stag_arr[OCRDMA_MAX_STAG];
+       u64 stag_arr[OCRDMA_MAX_STAG];
        u16 pvid;
        u32 asic_id;
 
@@ -287,7 +288,6 @@ struct ocrdma_cq {
 
 struct ocrdma_pd {
        struct ib_pd ibpd;
-       struct ocrdma_dev *dev;
        struct ocrdma_ucontext *uctx;
        u32 id;
        int num_dpp_qp;
@@ -372,10 +372,8 @@ struct ocrdma_qp {
        bool dpp_enabled;
        u8 *ird_q_va;
        bool signaled;
-       u16 db_cache;
 };
 
-
 struct ocrdma_ucontext {
        struct ib_ucontext ibucontext;
 
index 5a82ce53518185eb7588a4926a3f796a2a8dd7bf..1554cca5712aafd5659d1cfb80bafff7095f67ca 100644 (file)
@@ -108,9 +108,7 @@ struct ocrdma_create_qp_uresp {
        u32 db_sq_offset;
        u32 db_rq_offset;
        u32 db_shift;
-       u64 rsvd1;
-       u64 rsvd2;
-       u64 rsvd3;
+       u64 rsvd[11];
 } __packed;
 
 struct ocrdma_create_srq_uresp {
index 34071143006ed17124fc15b7be8218b935319720..d4cc01f10c015654f966000ef28c6b7a82435232 100644 (file)
@@ -100,7 +100,7 @@ struct ib_ah *ocrdma_create_ah(struct ib_pd *ibpd, struct ib_ah_attr *attr)
        if (!(attr->ah_flags & IB_AH_GRH))
                return ERR_PTR(-EINVAL);
 
-       ah = kzalloc(sizeof *ah, GFP_ATOMIC);
+       ah = kzalloc(sizeof(*ah), GFP_ATOMIC);
        if (!ah)
                return ERR_PTR(-ENOMEM);
 
index 5d3485846d8770542ecbeea3fd6e752a9d5a2386..3bbf2010a82180e1f178e2af168dfd9aa20b195c 100644 (file)
@@ -32,7 +32,6 @@
 
 #include <rdma/ib_verbs.h>
 #include <rdma/ib_user_verbs.h>
-#include <rdma/ib_addr.h>
 
 #include "ocrdma.h"
 #include "ocrdma_hw.h"
@@ -386,8 +385,8 @@ static void ocrdma_build_q_pages(struct ocrdma_pa *q_pa, int cnt,
        }
 }
 
-static int ocrdma_mbx_delete_q(struct ocrdma_dev *dev, struct ocrdma_queue_info *q,
-                              int queue_type)
+static int ocrdma_mbx_delete_q(struct ocrdma_dev *dev,
+                              struct ocrdma_queue_info *q, int queue_type)
 {
        u8 opcode = 0;
        int status;
@@ -778,7 +777,6 @@ static void ocrdma_process_grp5_aync(struct ocrdma_dev *dev,
        }
 }
 
-
 static void ocrdma_process_acqe(struct ocrdma_dev *dev, void *ae_cqe)
 {
        /* async CQE processing */
@@ -825,8 +823,6 @@ static int ocrdma_mq_cq_handler(struct ocrdma_dev *dev, u16 cq_id)
                        ocrdma_process_acqe(dev, cqe);
                else if (cqe->valid_ae_cmpl_cons & OCRDMA_MCQE_CMPL_MASK)
                        ocrdma_process_mcqe(dev, cqe);
-               else
-                       pr_err("%s() cqe->compl is not set.\n", __func__);
                memset(cqe, 0, sizeof(struct ocrdma_mcqe));
                ocrdma_mcq_inc_tail(dev);
        }
@@ -1050,6 +1046,9 @@ static void ocrdma_get_attr(struct ocrdma_dev *dev,
        attr->max_qp =
            (rsp->qp_srq_cq_ird_ord & OCRDMA_MBX_QUERY_CFG_MAX_QP_MASK) >>
            OCRDMA_MBX_QUERY_CFG_MAX_QP_SHIFT;
+       attr->max_srq =
+               (rsp->max_srq_rpir_qps & OCRDMA_MBX_QUERY_CFG_MAX_SRQ_MASK) >>
+               OCRDMA_MBX_QUERY_CFG_MAX_SRQ_OFFSET;
        attr->max_send_sge = ((rsp->max_write_send_sge &
                               OCRDMA_MBX_QUERY_CFG_MAX_SEND_SGE_MASK) >>
                              OCRDMA_MBX_QUERY_CFG_MAX_SEND_SGE_SHIFT);
@@ -1065,9 +1064,6 @@ static void ocrdma_get_attr(struct ocrdma_dev *dev,
        attr->max_ord_per_qp = (rsp->max_ird_ord_per_qp &
                                OCRDMA_MBX_QUERY_CFG_MAX_ORD_PER_QP_MASK) >>
            OCRDMA_MBX_QUERY_CFG_MAX_ORD_PER_QP_SHIFT;
-       attr->max_srq =
-               (rsp->max_srq_rpir_qps & OCRDMA_MBX_QUERY_CFG_MAX_SRQ_MASK) >>
-               OCRDMA_MBX_QUERY_CFG_MAX_SRQ_OFFSET;
        attr->max_ird_per_qp = (rsp->max_ird_ord_per_qp &
                                OCRDMA_MBX_QUERY_CFG_MAX_IRD_PER_QP_MASK) >>
            OCRDMA_MBX_QUERY_CFG_MAX_IRD_PER_QP_SHIFT;
@@ -1411,7 +1407,7 @@ static int ocrdma_build_q_conf(u32 *num_entries, int entry_size,
 
 static int ocrdma_mbx_create_ah_tbl(struct ocrdma_dev *dev)
 {
-       int i ;
+       int i;
        int status = 0;
        int max_ah;
        struct ocrdma_create_ah_tbl *cmd;
@@ -2279,7 +2275,7 @@ static int ocrdma_set_av_params(struct ocrdma_qp *qp,
        memcpy(&cmd->params.dgid[0], &ah_attr->grh.dgid.raw[0],
               sizeof(cmd->params.dgid));
        status = ocrdma_query_gid(&qp->dev->ibdev, 1,
-                        ah_attr->grh.sgid_index, &sgid);
+                       ah_attr->grh.sgid_index, &sgid);
        if (status)
                return status;
 
@@ -2666,7 +2662,7 @@ static int ocrdma_create_eqs(struct ocrdma_dev *dev)
 
        for (i = 0; i < num_eq; i++) {
                status = ocrdma_create_eq(dev, &dev->eq_tbl[i],
-                                         OCRDMA_EQ_LEN);
+                                       OCRDMA_EQ_LEN);
                if (status) {
                        status = -EINVAL;
                        break;
index 61248b99f98f1da0894d9088d5f089709a10cc92..8bd9db689b2f89de191ec8e3c4cf7bd5abfef313 100644 (file)
@@ -488,7 +488,7 @@ static int ocrdma_close(struct ocrdma_dev *dev)
                cur_qp = dev->qp_tbl;
                for (i = 0; i < OCRDMA_MAX_QP; i++) {
                        qp = cur_qp[i];
-                       if (qp) {
+                       if (qp && qp->ibqp.qp_type != IB_QPT_GSI) {
                                /* change the QP state to ERROR */
                                _ocrdma_modify_qp(&qp->ibqp, &attrs, attr_mask);
 
index 6e048b7283c4b34217e3738869a733e97c0378f1..96c9ee602ba49bead98ba33ef2fbd37478abe830 100644 (file)
@@ -152,11 +152,10 @@ enum {
 #define OCRDMA_MIN_Q_PAGE_SIZE (4096)
 #define OCRDMA_MAX_Q_PAGES     (8)
 
-#define OCRDMA_SLI_ASIC_ID_OFFSET      0x9C
-#define OCRDMA_SLI_ASIC_REV_MASK       0x000000FF
-#define OCRDMA_SLI_ASIC_GEN_NUM_MASK   0x0000FF00
-#define OCRDMA_SLI_ASIC_GEN_NUM_SHIFT  0x08
-
+#define OCRDMA_SLI_ASIC_ID_OFFSET      0x9C
+#define OCRDMA_SLI_ASIC_REV_MASK       0x000000FF
+#define OCRDMA_SLI_ASIC_GEN_NUM_MASK   0x0000FF00
+#define OCRDMA_SLI_ASIC_GEN_NUM_SHIFT  0x08
 /*
 # 0: 4K Bytes
 # 1: 8K Bytes
@@ -633,7 +632,7 @@ enum {
 
 enum {
        OCRDMA_CREATE_CQ_VER2                   = 2,
-       OCRDMA_CREATE_CQ_VER3                   = 3,
+       OCRDMA_CREATE_CQ_VER3                   = 3,
 
        OCRDMA_CREATE_CQ_PAGE_CNT_MASK          = 0xFFFF,
        OCRDMA_CREATE_CQ_PAGE_SIZE_SHIFT        = 16,
@@ -1093,6 +1092,7 @@ enum {
        OCRDMA_MODIFY_QP_RSP_MAX_ORD_MASK       = 0xFFFF <<
                                        OCRDMA_MODIFY_QP_RSP_MAX_ORD_SHIFT
 };
+
 struct ocrdma_modify_qp_rsp {
        struct ocrdma_mqe_hdr hdr;
        struct ocrdma_mbx_rsp rsp;
@@ -1105,8 +1105,8 @@ struct ocrdma_query_qp {
        struct ocrdma_mqe_hdr hdr;
        struct ocrdma_mbx_hdr req;
 
-#define OCRDMA_QUERY_UP_QP_ID_SHIFT 0
-#define OCRDMA_QUERY_UP_QP_ID_MASK   0xFFFFFF
+#define OCRDMA_QUERY_UP_QP_ID_SHIFT    0
+#define OCRDMA_QUERY_UP_QP_ID_MASK     0xFFFFFF
        u32 qp_id;
 };
 
index 95eeeeb1251b0778827485a8f5f7b789223935b2..6d3990f28772f2fef56c8c9e3f096cedde3b2a3a 100644 (file)
@@ -53,7 +53,7 @@ int ocrdma_query_gid(struct ib_device *ibdev, u8 port,
 
        dev = get_ocrdma_dev(ibdev);
        memset(sgid, 0, sizeof(*sgid));
-       if (index >= OCRDMA_MAX_SGID)
+       if (index > OCRDMA_MAX_SGID)
                return -EINVAL;
 
        memcpy(sgid, &dev->sgid_tbl[index], sizeof(*sgid));
@@ -144,7 +144,6 @@ static inline void get_link_speed_and_width(struct ocrdma_dev *dev,
        }
 }
 
-
 int ocrdma_query_port(struct ib_device *ibdev,
                      u8 port, struct ib_port_attr *props)
 {
@@ -1210,7 +1209,6 @@ static void ocrdma_set_qp_init_params(struct ocrdma_qp *qp,
        qp->signaled = (attrs->sq_sig_type == IB_SIGNAL_ALL_WR) ? true : false;
 }
 
-
 static void ocrdma_store_gsi_qp_cq(struct ocrdma_dev *dev,
                                   struct ib_qp_init_attr *attrs)
 {
@@ -1296,17 +1294,6 @@ gen_err:
        return ERR_PTR(status);
 }
 
-
-static void ocrdma_flush_rq_db(struct ocrdma_qp *qp)
-{
-       if (qp->db_cache) {
-               u32 val = qp->rq.dbid | (qp->db_cache <<
-                               OCRDMA_DB_RQ_SHIFT);
-               iowrite32(val, qp->rq_db);
-               qp->db_cache = 0;
-       }
-}
-
 int _ocrdma_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
                      int attr_mask)
 {
@@ -1325,8 +1312,6 @@ int _ocrdma_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
        if (status < 0)
                return status;
        status = ocrdma_mbx_modify_qp(dev, qp, attr, attr_mask);
-       if (!status && attr_mask & IB_QP_STATE && attr->qp_state == IB_QPS_RTR)
-               ocrdma_flush_rq_db(qp);
 
        return status;
 }
@@ -2042,7 +2027,7 @@ static int ocrdma_build_fr(struct ocrdma_qp *qp, struct ocrdma_hdr_wqe *hdr,
        fast_reg->num_sges = wr->wr.fast_reg.page_list_len;
        fast_reg->size_sge =
                get_encoded_page_size(1 << wr->wr.fast_reg.page_shift);
-       mr = (struct ocrdma_mr *) (unsigned long) qp->dev->stag_arr[(hdr->lkey >> 8) &
+       mr = (struct ocrdma_mr *)qp->dev->stag_arr[(hdr->lkey >> 8) &
                (OCRDMA_MAX_STAG - 1)];
        build_frmr_pbes(wr, mr->hwmr.pbl_table, &mr->hwmr);
        return 0;
@@ -2877,7 +2862,7 @@ struct ib_mr *ocrdma_alloc_frmr(struct ib_pd *ibpd, int max_page_list_len)
                goto mbx_err;
        mr->ibmr.rkey = mr->hwmr.lkey;
        mr->ibmr.lkey = mr->hwmr.lkey;
-       dev->stag_arr[(mr->hwmr.lkey >> 8) & (OCRDMA_MAX_STAG - 1)] = mr;
+       dev->stag_arr[(mr->hwmr.lkey >> 8) & (OCRDMA_MAX_STAG - 1)] = (u64)mr;
        return &mr->ibmr;
 mbx_err:
        ocrdma_free_mr_pbl_tbl(dev, &mr->hwmr);