diff options
Diffstat (limited to 'drivers/infiniband/hw/ocrdma/ocrdma_verbs.c')
-rw-r--r-- | drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c index 9e1d8c6bde52..3e80f65f42a3 100644 --- a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c +++ b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | |||
@@ -82,7 +82,8 @@ int ocrdma_query_device(struct ib_device *ibdev, struct ib_device_attr *attr) | |||
82 | IB_DEVICE_RC_RNR_NAK_GEN | | 82 | IB_DEVICE_RC_RNR_NAK_GEN | |
83 | IB_DEVICE_SHUTDOWN_PORT | | 83 | IB_DEVICE_SHUTDOWN_PORT | |
84 | IB_DEVICE_SYS_IMAGE_GUID | | 84 | IB_DEVICE_SYS_IMAGE_GUID | |
85 | IB_DEVICE_LOCAL_DMA_LKEY; | 85 | IB_DEVICE_LOCAL_DMA_LKEY | |
86 | IB_DEVICE_MEM_MGT_EXTENSIONS; | ||
86 | attr->max_sge = min(dev->attr.max_send_sge, dev->attr.max_srq_sge); | 87 | attr->max_sge = min(dev->attr.max_send_sge, dev->attr.max_srq_sge); |
87 | attr->max_sge_rd = dev->attr.max_rdma_sge; | 88 | attr->max_sge_rd = dev->attr.max_rdma_sge; |
88 | attr->max_cq = dev->attr.max_cq; | 89 | attr->max_cq = dev->attr.max_cq; |
@@ -1015,6 +1016,7 @@ static void ocrdma_set_qp_init_params(struct ocrdma_qp *qp, | |||
1015 | qp->sq.max_sges = attrs->cap.max_send_sge; | 1016 | qp->sq.max_sges = attrs->cap.max_send_sge; |
1016 | qp->rq.max_sges = attrs->cap.max_recv_sge; | 1017 | qp->rq.max_sges = attrs->cap.max_recv_sge; |
1017 | qp->state = OCRDMA_QPS_RST; | 1018 | qp->state = OCRDMA_QPS_RST; |
1019 | qp->signaled = (attrs->sq_sig_type == IB_SIGNAL_ALL_WR) ? true : false; | ||
1018 | } | 1020 | } |
1019 | 1021 | ||
1020 | 1022 | ||
@@ -1864,7 +1866,7 @@ int ocrdma_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, | |||
1864 | } | 1866 | } |
1865 | hdr = ocrdma_hwq_head(&qp->sq); | 1867 | hdr = ocrdma_hwq_head(&qp->sq); |
1866 | hdr->cw = 0; | 1868 | hdr->cw = 0; |
1867 | if (wr->send_flags & IB_SEND_SIGNALED) | 1869 | if (wr->send_flags & IB_SEND_SIGNALED || qp->signaled) |
1868 | hdr->cw |= (OCRDMA_FLAG_SIG << OCRDMA_WQE_FLAGS_SHIFT); | 1870 | hdr->cw |= (OCRDMA_FLAG_SIG << OCRDMA_WQE_FLAGS_SHIFT); |
1869 | if (wr->send_flags & IB_SEND_FENCE) | 1871 | if (wr->send_flags & IB_SEND_FENCE) |
1870 | hdr->cw |= | 1872 | hdr->cw |= |
@@ -1918,7 +1920,7 @@ int ocrdma_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, | |||
1918 | *bad_wr = wr; | 1920 | *bad_wr = wr; |
1919 | break; | 1921 | break; |
1920 | } | 1922 | } |
1921 | if (wr->send_flags & IB_SEND_SIGNALED) | 1923 | if (wr->send_flags & IB_SEND_SIGNALED || qp->signaled) |
1922 | qp->wqe_wr_id_tbl[qp->sq.head].signaled = 1; | 1924 | qp->wqe_wr_id_tbl[qp->sq.head].signaled = 1; |
1923 | else | 1925 | else |
1924 | qp->wqe_wr_id_tbl[qp->sq.head].signaled = 0; | 1926 | qp->wqe_wr_id_tbl[qp->sq.head].signaled = 0; |