提交 fad51b7d 编写于 作者: D Devesh Sharma 提交者: Roland Dreier

RDMA/ocrdma: Code clean-up

Clean up code.  Also modifying GSI QP to error during ocrdma_close is fixed.
Signed-off-by: NDevesh Sharma <devesh.sharma@emulex.com>
Signed-off-by: NSelvin Xavier <selvin.xavier@emulex.com>
Signed-off-by: NRoland Dreier <roland@purestorage.com>
上级 334b8db3
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#include <rdma/ib_verbs.h> #include <rdma/ib_verbs.h>
#include <rdma/ib_user_verbs.h> #include <rdma/ib_user_verbs.h>
#include <rdma/ib_addr.h>
#include <be_roce.h> #include <be_roce.h>
#include "ocrdma_sli.h" #include "ocrdma_sli.h"
...@@ -234,7 +235,7 @@ struct ocrdma_dev { ...@@ -234,7 +235,7 @@ struct ocrdma_dev {
struct list_head entry; struct list_head entry;
struct rcu_head rcu; struct rcu_head rcu;
int id; int id;
struct ocrdma_mr *stag_arr[OCRDMA_MAX_STAG]; u64 stag_arr[OCRDMA_MAX_STAG];
u16 pvid; u16 pvid;
u32 asic_id; u32 asic_id;
...@@ -287,7 +288,6 @@ struct ocrdma_cq { ...@@ -287,7 +288,6 @@ struct ocrdma_cq {
struct ocrdma_pd { struct ocrdma_pd {
struct ib_pd ibpd; struct ib_pd ibpd;
struct ocrdma_dev *dev;
struct ocrdma_ucontext *uctx; struct ocrdma_ucontext *uctx;
u32 id; u32 id;
int num_dpp_qp; int num_dpp_qp;
...@@ -372,10 +372,8 @@ struct ocrdma_qp { ...@@ -372,10 +372,8 @@ struct ocrdma_qp {
bool dpp_enabled; bool dpp_enabled;
u8 *ird_q_va; u8 *ird_q_va;
bool signaled; bool signaled;
u16 db_cache;
}; };
struct ocrdma_ucontext { struct ocrdma_ucontext {
struct ib_ucontext ibucontext; struct ib_ucontext ibucontext;
......
...@@ -108,9 +108,7 @@ struct ocrdma_create_qp_uresp { ...@@ -108,9 +108,7 @@ struct ocrdma_create_qp_uresp {
u32 db_sq_offset; u32 db_sq_offset;
u32 db_rq_offset; u32 db_rq_offset;
u32 db_shift; u32 db_shift;
u64 rsvd1; u64 rsvd[11];
u64 rsvd2;
u64 rsvd3;
} __packed; } __packed;
struct ocrdma_create_srq_uresp { struct ocrdma_create_srq_uresp {
......
...@@ -100,7 +100,7 @@ struct ib_ah *ocrdma_create_ah(struct ib_pd *ibpd, struct ib_ah_attr *attr) ...@@ -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)) if (!(attr->ah_flags & IB_AH_GRH))
return ERR_PTR(-EINVAL); return ERR_PTR(-EINVAL);
ah = kzalloc(sizeof *ah, GFP_ATOMIC); ah = kzalloc(sizeof(*ah), GFP_ATOMIC);
if (!ah) if (!ah)
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
......
...@@ -32,7 +32,6 @@ ...@@ -32,7 +32,6 @@
#include <rdma/ib_verbs.h> #include <rdma/ib_verbs.h>
#include <rdma/ib_user_verbs.h> #include <rdma/ib_user_verbs.h>
#include <rdma/ib_addr.h>
#include "ocrdma.h" #include "ocrdma.h"
#include "ocrdma_hw.h" #include "ocrdma_hw.h"
...@@ -386,8 +385,8 @@ static void ocrdma_build_q_pages(struct ocrdma_pa *q_pa, int cnt, ...@@ -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, static int ocrdma_mbx_delete_q(struct ocrdma_dev *dev,
int queue_type) struct ocrdma_queue_info *q, int queue_type)
{ {
u8 opcode = 0; u8 opcode = 0;
int status; int status;
...@@ -778,7 +777,6 @@ static void ocrdma_process_grp5_aync(struct ocrdma_dev *dev, ...@@ -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) static void ocrdma_process_acqe(struct ocrdma_dev *dev, void *ae_cqe)
{ {
/* async CQE processing */ /* async CQE processing */
...@@ -825,8 +823,6 @@ static int ocrdma_mq_cq_handler(struct ocrdma_dev *dev, u16 cq_id) ...@@ -825,8 +823,6 @@ static int ocrdma_mq_cq_handler(struct ocrdma_dev *dev, u16 cq_id)
ocrdma_process_acqe(dev, cqe); ocrdma_process_acqe(dev, cqe);
else if (cqe->valid_ae_cmpl_cons & OCRDMA_MCQE_CMPL_MASK) else if (cqe->valid_ae_cmpl_cons & OCRDMA_MCQE_CMPL_MASK)
ocrdma_process_mcqe(dev, cqe); ocrdma_process_mcqe(dev, cqe);
else
pr_err("%s() cqe->compl is not set.\n", __func__);
memset(cqe, 0, sizeof(struct ocrdma_mcqe)); memset(cqe, 0, sizeof(struct ocrdma_mcqe));
ocrdma_mcq_inc_tail(dev); ocrdma_mcq_inc_tail(dev);
} }
...@@ -1050,6 +1046,9 @@ static void ocrdma_get_attr(struct ocrdma_dev *dev, ...@@ -1050,6 +1046,9 @@ static void ocrdma_get_attr(struct ocrdma_dev *dev,
attr->max_qp = attr->max_qp =
(rsp->qp_srq_cq_ird_ord & OCRDMA_MBX_QUERY_CFG_MAX_QP_MASK) >> (rsp->qp_srq_cq_ird_ord & OCRDMA_MBX_QUERY_CFG_MAX_QP_MASK) >>
OCRDMA_MBX_QUERY_CFG_MAX_QP_SHIFT; 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 & attr->max_send_sge = ((rsp->max_write_send_sge &
OCRDMA_MBX_QUERY_CFG_MAX_SEND_SGE_MASK) >> OCRDMA_MBX_QUERY_CFG_MAX_SEND_SGE_MASK) >>
OCRDMA_MBX_QUERY_CFG_MAX_SEND_SGE_SHIFT); OCRDMA_MBX_QUERY_CFG_MAX_SEND_SGE_SHIFT);
...@@ -1065,9 +1064,6 @@ static void ocrdma_get_attr(struct ocrdma_dev *dev, ...@@ -1065,9 +1064,6 @@ static void ocrdma_get_attr(struct ocrdma_dev *dev,
attr->max_ord_per_qp = (rsp->max_ird_ord_per_qp & 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_MASK) >>
OCRDMA_MBX_QUERY_CFG_MAX_ORD_PER_QP_SHIFT; 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 & 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_MASK) >>
OCRDMA_MBX_QUERY_CFG_MAX_IRD_PER_QP_SHIFT; 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, ...@@ -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) static int ocrdma_mbx_create_ah_tbl(struct ocrdma_dev *dev)
{ {
int i ; int i;
int status = 0; int status = 0;
int max_ah; int max_ah;
struct ocrdma_create_ah_tbl *cmd; struct ocrdma_create_ah_tbl *cmd;
...@@ -2279,7 +2275,7 @@ static int ocrdma_set_av_params(struct ocrdma_qp *qp, ...@@ -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], memcpy(&cmd->params.dgid[0], &ah_attr->grh.dgid.raw[0],
sizeof(cmd->params.dgid)); sizeof(cmd->params.dgid));
status = ocrdma_query_gid(&qp->dev->ibdev, 1, status = ocrdma_query_gid(&qp->dev->ibdev, 1,
ah_attr->grh.sgid_index, &sgid); ah_attr->grh.sgid_index, &sgid);
if (status) if (status)
return status; return status;
...@@ -2666,7 +2662,7 @@ static int ocrdma_create_eqs(struct ocrdma_dev *dev) ...@@ -2666,7 +2662,7 @@ static int ocrdma_create_eqs(struct ocrdma_dev *dev)
for (i = 0; i < num_eq; i++) { for (i = 0; i < num_eq; i++) {
status = ocrdma_create_eq(dev, &dev->eq_tbl[i], status = ocrdma_create_eq(dev, &dev->eq_tbl[i],
OCRDMA_EQ_LEN); OCRDMA_EQ_LEN);
if (status) { if (status) {
status = -EINVAL; status = -EINVAL;
break; break;
......
...@@ -488,7 +488,7 @@ static int ocrdma_close(struct ocrdma_dev *dev) ...@@ -488,7 +488,7 @@ static int ocrdma_close(struct ocrdma_dev *dev)
cur_qp = dev->qp_tbl; cur_qp = dev->qp_tbl;
for (i = 0; i < OCRDMA_MAX_QP; i++) { for (i = 0; i < OCRDMA_MAX_QP; i++) {
qp = cur_qp[i]; qp = cur_qp[i];
if (qp) { if (qp && qp->ibqp.qp_type != IB_QPT_GSI) {
/* change the QP state to ERROR */ /* change the QP state to ERROR */
_ocrdma_modify_qp(&qp->ibqp, &attrs, attr_mask); _ocrdma_modify_qp(&qp->ibqp, &attrs, attr_mask);
......
...@@ -152,11 +152,10 @@ enum { ...@@ -152,11 +152,10 @@ enum {
#define OCRDMA_MIN_Q_PAGE_SIZE (4096) #define OCRDMA_MIN_Q_PAGE_SIZE (4096)
#define OCRDMA_MAX_Q_PAGES (8) #define OCRDMA_MAX_Q_PAGES (8)
#define OCRDMA_SLI_ASIC_ID_OFFSET 0x9C #define OCRDMA_SLI_ASIC_ID_OFFSET 0x9C
#define OCRDMA_SLI_ASIC_REV_MASK 0x000000FF #define OCRDMA_SLI_ASIC_REV_MASK 0x000000FF
#define OCRDMA_SLI_ASIC_GEN_NUM_MASK 0x0000FF00 #define OCRDMA_SLI_ASIC_GEN_NUM_MASK 0x0000FF00
#define OCRDMA_SLI_ASIC_GEN_NUM_SHIFT 0x08 #define OCRDMA_SLI_ASIC_GEN_NUM_SHIFT 0x08
/* /*
# 0: 4K Bytes # 0: 4K Bytes
# 1: 8K Bytes # 1: 8K Bytes
...@@ -633,7 +632,7 @@ enum { ...@@ -633,7 +632,7 @@ enum {
enum { enum {
OCRDMA_CREATE_CQ_VER2 = 2, 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_CNT_MASK = 0xFFFF,
OCRDMA_CREATE_CQ_PAGE_SIZE_SHIFT = 16, OCRDMA_CREATE_CQ_PAGE_SIZE_SHIFT = 16,
...@@ -1093,6 +1092,7 @@ enum { ...@@ -1093,6 +1092,7 @@ enum {
OCRDMA_MODIFY_QP_RSP_MAX_ORD_MASK = 0xFFFF << OCRDMA_MODIFY_QP_RSP_MAX_ORD_MASK = 0xFFFF <<
OCRDMA_MODIFY_QP_RSP_MAX_ORD_SHIFT OCRDMA_MODIFY_QP_RSP_MAX_ORD_SHIFT
}; };
struct ocrdma_modify_qp_rsp { struct ocrdma_modify_qp_rsp {
struct ocrdma_mqe_hdr hdr; struct ocrdma_mqe_hdr hdr;
struct ocrdma_mbx_rsp rsp; struct ocrdma_mbx_rsp rsp;
...@@ -1105,8 +1105,8 @@ struct ocrdma_query_qp { ...@@ -1105,8 +1105,8 @@ struct ocrdma_query_qp {
struct ocrdma_mqe_hdr hdr; struct ocrdma_mqe_hdr hdr;
struct ocrdma_mbx_hdr req; struct ocrdma_mbx_hdr req;
#define OCRDMA_QUERY_UP_QP_ID_SHIFT 0 #define OCRDMA_QUERY_UP_QP_ID_SHIFT 0
#define OCRDMA_QUERY_UP_QP_ID_MASK 0xFFFFFF #define OCRDMA_QUERY_UP_QP_ID_MASK 0xFFFFFF
u32 qp_id; u32 qp_id;
}; };
......
...@@ -53,7 +53,7 @@ int ocrdma_query_gid(struct ib_device *ibdev, u8 port, ...@@ -53,7 +53,7 @@ int ocrdma_query_gid(struct ib_device *ibdev, u8 port,
dev = get_ocrdma_dev(ibdev); dev = get_ocrdma_dev(ibdev);
memset(sgid, 0, sizeof(*sgid)); memset(sgid, 0, sizeof(*sgid));
if (index >= OCRDMA_MAX_SGID) if (index > OCRDMA_MAX_SGID)
return -EINVAL; return -EINVAL;
memcpy(sgid, &dev->sgid_tbl[index], sizeof(*sgid)); memcpy(sgid, &dev->sgid_tbl[index], sizeof(*sgid));
...@@ -144,7 +144,6 @@ static inline void get_link_speed_and_width(struct ocrdma_dev *dev, ...@@ -144,7 +144,6 @@ static inline void get_link_speed_and_width(struct ocrdma_dev *dev,
} }
} }
int ocrdma_query_port(struct ib_device *ibdev, int ocrdma_query_port(struct ib_device *ibdev,
u8 port, struct ib_port_attr *props) u8 port, struct ib_port_attr *props)
{ {
...@@ -1210,7 +1209,6 @@ static void ocrdma_set_qp_init_params(struct ocrdma_qp *qp, ...@@ -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; qp->signaled = (attrs->sq_sig_type == IB_SIGNAL_ALL_WR) ? true : false;
} }
static void ocrdma_store_gsi_qp_cq(struct ocrdma_dev *dev, static void ocrdma_store_gsi_qp_cq(struct ocrdma_dev *dev,
struct ib_qp_init_attr *attrs) struct ib_qp_init_attr *attrs)
{ {
...@@ -1296,17 +1294,6 @@ struct ib_qp *ocrdma_create_qp(struct ib_pd *ibpd, ...@@ -1296,17 +1294,6 @@ struct ib_qp *ocrdma_create_qp(struct ib_pd *ibpd,
return ERR_PTR(status); 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 _ocrdma_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
int attr_mask) int attr_mask)
{ {
...@@ -1325,8 +1312,6 @@ int _ocrdma_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, ...@@ -1325,8 +1312,6 @@ int _ocrdma_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
if (status < 0) if (status < 0)
return status; return status;
status = ocrdma_mbx_modify_qp(dev, qp, attr, attr_mask); 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; return status;
} }
...@@ -2042,7 +2027,7 @@ static int ocrdma_build_fr(struct ocrdma_qp *qp, struct ocrdma_hdr_wqe *hdr, ...@@ -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->num_sges = wr->wr.fast_reg.page_list_len;
fast_reg->size_sge = fast_reg->size_sge =
get_encoded_page_size(1 << wr->wr.fast_reg.page_shift); 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)]; (OCRDMA_MAX_STAG - 1)];
build_frmr_pbes(wr, mr->hwmr.pbl_table, &mr->hwmr); build_frmr_pbes(wr, mr->hwmr.pbl_table, &mr->hwmr);
return 0; return 0;
...@@ -2877,7 +2862,7 @@ struct ib_mr *ocrdma_alloc_frmr(struct ib_pd *ibpd, int max_page_list_len) ...@@ -2877,7 +2862,7 @@ struct ib_mr *ocrdma_alloc_frmr(struct ib_pd *ibpd, int max_page_list_len)
goto mbx_err; goto mbx_err;
mr->ibmr.rkey = mr->hwmr.lkey; mr->ibmr.rkey = mr->hwmr.lkey;
mr->ibmr.lkey = 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; return &mr->ibmr;
mbx_err: mbx_err:
ocrdma_free_mr_pbl_tbl(dev, &mr->hwmr); ocrdma_free_mr_pbl_tbl(dev, &mr->hwmr);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册