RDMA/cxgb3: MEM_MGT_EXTENSIONS support
- set IB_DEVICE_MEM_MGT_EXTENSIONS capability bit if fw supports it. - set max_fast_reg_page_list_len device attribute. - add iwch_alloc_fast_reg_mr function. - add iwch_alloc_fastreg_pbl - add iwch_free_fastreg_pbl - adjust the WQ depth for kernel mode work queues to account for fastreg possibly taking 2 WR slots. - add fastreg_mr work request support. - add local_inv work request support. - add send_with_inv and send_with_se_inv work request support. - removed useless duplicate enums/defines for TPT/MW/MR stuff. Signed-off-by: Steve Wise <swise@opengridcomputing.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:

committed by
Roland Dreier

parent
00f7ec36c9
commit
e7e5582999
@@ -145,7 +145,9 @@ static int cxio_hal_clear_qp_ctx(struct cxio_rdev *rdev_p, u32 qpid)
|
||||
}
|
||||
wqe = (struct t3_modify_qp_wr *) skb_put(skb, sizeof(*wqe));
|
||||
memset(wqe, 0, sizeof(*wqe));
|
||||
build_fw_riwrh((struct fw_riwrh *) wqe, T3_WR_QP_MOD, 3, 0, qpid, 7);
|
||||
build_fw_riwrh((struct fw_riwrh *) wqe, T3_WR_QP_MOD,
|
||||
T3_COMPLETION_FLAG | T3_NOTIFY_FLAG, 0, qpid, 7,
|
||||
T3_SOPEOP);
|
||||
wqe->flags = cpu_to_be32(MODQP_WRITE_EC);
|
||||
sge_cmd = qpid << 8 | 3;
|
||||
wqe->sge_cmd = cpu_to_be64(sge_cmd);
|
||||
@@ -558,7 +560,7 @@ static int cxio_hal_init_ctrl_qp(struct cxio_rdev *rdev_p)
|
||||
wqe = (struct t3_modify_qp_wr *) skb_put(skb, sizeof(*wqe));
|
||||
memset(wqe, 0, sizeof(*wqe));
|
||||
build_fw_riwrh((struct fw_riwrh *) wqe, T3_WR_QP_MOD, 0, 0,
|
||||
T3_CTL_QP_TID, 7);
|
||||
T3_CTL_QP_TID, 7, T3_SOPEOP);
|
||||
wqe->flags = cpu_to_be32(MODQP_WRITE_EC);
|
||||
sge_cmd = (3ULL << 56) | FW_RI_SGEEC_START << 8 | 3;
|
||||
wqe->sge_cmd = cpu_to_be64(sge_cmd);
|
||||
@@ -674,7 +676,7 @@ static int cxio_hal_ctrl_qp_write_mem(struct cxio_rdev *rdev_p, u32 addr,
|
||||
build_fw_riwrh((struct fw_riwrh *) wqe, T3_WR_BP, flag,
|
||||
Q_GENBIT(rdev_p->ctrl_qp.wptr,
|
||||
T3_CTRL_QP_SIZE_LOG2), T3_CTRL_QP_ID,
|
||||
wr_len);
|
||||
wr_len, T3_SOPEOP);
|
||||
if (flag == T3_COMPLETION_FLAG)
|
||||
ring_doorbell(rdev_p->ctrl_qp.doorbell, T3_CTRL_QP_ID);
|
||||
len -= 96;
|
||||
@@ -816,6 +818,13 @@ int cxio_deallocate_window(struct cxio_rdev *rdev_p, u32 stag)
|
||||
0, 0);
|
||||
}
|
||||
|
||||
int cxio_allocate_stag(struct cxio_rdev *rdev_p, u32 *stag, u32 pdid, u32 pbl_size, u32 pbl_addr)
|
||||
{
|
||||
*stag = T3_STAG_UNSET;
|
||||
return __cxio_tpt_op(rdev_p, 0, stag, 0, pdid, TPT_NON_SHARED_MR,
|
||||
0, 0, 0ULL, 0, 0, pbl_size, pbl_addr);
|
||||
}
|
||||
|
||||
int cxio_rdma_init(struct cxio_rdev *rdev_p, struct t3_rdma_init_attr *attr)
|
||||
{
|
||||
struct t3_rdma_init_wr *wqe;
|
||||
|
Reference in New Issue
Block a user