diff options
Diffstat (limited to 'drivers/infiniband/hw/cxgb3/iwch_provider.c')
-rw-r--r-- | drivers/infiniband/hw/cxgb3/iwch_provider.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/infiniband/hw/cxgb3/iwch_provider.c b/drivers/infiniband/hw/cxgb3/iwch_provider.c index af28a317016d..a891493fd340 100644 --- a/drivers/infiniband/hw/cxgb3/iwch_provider.c +++ b/drivers/infiniband/hw/cxgb3/iwch_provider.c | |||
@@ -139,7 +139,7 @@ static int iwch_destroy_cq(struct ib_cq *ib_cq) | |||
139 | return 0; | 139 | return 0; |
140 | } | 140 | } |
141 | 141 | ||
142 | static struct ib_cq *iwch_create_cq(struct ib_device *ibdev, int entries, | 142 | static struct ib_cq *iwch_create_cq(struct ib_device *ibdev, int entries, int vector, |
143 | struct ib_ucontext *ib_context, | 143 | struct ib_ucontext *ib_context, |
144 | struct ib_udata *udata) | 144 | struct ib_udata *udata) |
145 | { | 145 | { |
@@ -292,7 +292,7 @@ static int iwch_resize_cq(struct ib_cq *cq, int cqe, struct ib_udata *udata) | |||
292 | #endif | 292 | #endif |
293 | } | 293 | } |
294 | 294 | ||
295 | static int iwch_arm_cq(struct ib_cq *ibcq, enum ib_cq_notify notify) | 295 | static int iwch_arm_cq(struct ib_cq *ibcq, enum ib_cq_notify_flags flags) |
296 | { | 296 | { |
297 | struct iwch_dev *rhp; | 297 | struct iwch_dev *rhp; |
298 | struct iwch_cq *chp; | 298 | struct iwch_cq *chp; |
@@ -303,7 +303,7 @@ static int iwch_arm_cq(struct ib_cq *ibcq, enum ib_cq_notify notify) | |||
303 | 303 | ||
304 | chp = to_iwch_cq(ibcq); | 304 | chp = to_iwch_cq(ibcq); |
305 | rhp = chp->rhp; | 305 | rhp = chp->rhp; |
306 | if (notify == IB_CQ_SOLICITED) | 306 | if ((flags & IB_CQ_SOLICITED_MASK) == IB_CQ_SOLICITED) |
307 | cq_op = CQ_ARM_SE; | 307 | cq_op = CQ_ARM_SE; |
308 | else | 308 | else |
309 | cq_op = CQ_ARM_AN; | 309 | cq_op = CQ_ARM_AN; |
@@ -317,9 +317,11 @@ static int iwch_arm_cq(struct ib_cq *ibcq, enum ib_cq_notify notify) | |||
317 | PDBG("%s rptr 0x%x\n", __FUNCTION__, chp->cq.rptr); | 317 | PDBG("%s rptr 0x%x\n", __FUNCTION__, chp->cq.rptr); |
318 | err = cxio_hal_cq_op(&rhp->rdev, &chp->cq, cq_op, 0); | 318 | err = cxio_hal_cq_op(&rhp->rdev, &chp->cq, cq_op, 0); |
319 | spin_unlock_irqrestore(&chp->lock, flag); | 319 | spin_unlock_irqrestore(&chp->lock, flag); |
320 | if (err) | 320 | if (err < 0) |
321 | printk(KERN_ERR MOD "Error %d rearming CQID 0x%x\n", err, | 321 | printk(KERN_ERR MOD "Error %d rearming CQID 0x%x\n", err, |
322 | chp->cq.cqid); | 322 | chp->cq.cqid); |
323 | if (err > 0 && !(flags & IB_CQ_REPORT_MISSED_EVENTS)) | ||
324 | err = 0; | ||
323 | return err; | 325 | return err; |
324 | } | 326 | } |
325 | 327 | ||
@@ -780,6 +782,9 @@ static struct ib_qp *iwch_create_qp(struct ib_pd *pd, | |||
780 | if (rqsize > T3_MAX_RQ_SIZE) | 782 | if (rqsize > T3_MAX_RQ_SIZE) |
781 | return ERR_PTR(-EINVAL); | 783 | return ERR_PTR(-EINVAL); |
782 | 784 | ||
785 | if (attrs->cap.max_inline_data > T3_MAX_INLINE) | ||
786 | return ERR_PTR(-EINVAL); | ||
787 | |||
783 | /* | 788 | /* |
784 | * NOTE: The SQ and total WQ sizes don't need to be | 789 | * NOTE: The SQ and total WQ sizes don't need to be |
785 | * a power of two. However, all the code assumes | 790 | * a power of two. However, all the code assumes |
@@ -1107,6 +1112,7 @@ int iwch_register_device(struct iwch_dev *dev) | |||
1107 | dev->ibdev.node_type = RDMA_NODE_RNIC; | 1112 | dev->ibdev.node_type = RDMA_NODE_RNIC; |
1108 | memcpy(dev->ibdev.node_desc, IWCH_NODE_DESC, sizeof(IWCH_NODE_DESC)); | 1113 | memcpy(dev->ibdev.node_desc, IWCH_NODE_DESC, sizeof(IWCH_NODE_DESC)); |
1109 | dev->ibdev.phys_port_cnt = dev->rdev.port_info.nports; | 1114 | dev->ibdev.phys_port_cnt = dev->rdev.port_info.nports; |
1115 | dev->ibdev.num_comp_vectors = 1; | ||
1110 | dev->ibdev.dma_device = &(dev->rdev.rnic_info.pdev->dev); | 1116 | dev->ibdev.dma_device = &(dev->rdev.rnic_info.pdev->dev); |
1111 | dev->ibdev.query_device = iwch_query_device; | 1117 | dev->ibdev.query_device = iwch_query_device; |
1112 | dev->ibdev.query_port = iwch_query_port; | 1118 | dev->ibdev.query_port = iwch_query_port; |