diff options
Diffstat (limited to 'drivers/infiniband/hw/mthca/mthca_srq.c')
-rw-r--r-- | drivers/infiniband/hw/mthca/mthca_srq.c | 33 |
1 files changed, 7 insertions, 26 deletions
diff --git a/drivers/infiniband/hw/mthca/mthca_srq.c b/drivers/infiniband/hw/mthca/mthca_srq.c index 4fabe62aab8a..d22f970480c0 100644 --- a/drivers/infiniband/hw/mthca/mthca_srq.c +++ b/drivers/infiniband/hw/mthca/mthca_srq.c | |||
@@ -200,7 +200,6 @@ int mthca_alloc_srq(struct mthca_dev *dev, struct mthca_pd *pd, | |||
200 | struct ib_srq_attr *attr, struct mthca_srq *srq) | 200 | struct ib_srq_attr *attr, struct mthca_srq *srq) |
201 | { | 201 | { |
202 | struct mthca_mailbox *mailbox; | 202 | struct mthca_mailbox *mailbox; |
203 | u8 status; | ||
204 | int ds; | 203 | int ds; |
205 | int err; | 204 | int err; |
206 | 205 | ||
@@ -266,18 +265,12 @@ int mthca_alloc_srq(struct mthca_dev *dev, struct mthca_pd *pd, | |||
266 | else | 265 | else |
267 | mthca_tavor_init_srq_context(dev, pd, srq, mailbox->buf); | 266 | mthca_tavor_init_srq_context(dev, pd, srq, mailbox->buf); |
268 | 267 | ||
269 | err = mthca_SW2HW_SRQ(dev, mailbox, srq->srqn, &status); | 268 | err = mthca_SW2HW_SRQ(dev, mailbox, srq->srqn); |
270 | 269 | ||
271 | if (err) { | 270 | if (err) { |
272 | mthca_warn(dev, "SW2HW_SRQ failed (%d)\n", err); | 271 | mthca_warn(dev, "SW2HW_SRQ failed (%d)\n", err); |
273 | goto err_out_free_buf; | 272 | goto err_out_free_buf; |
274 | } | 273 | } |
275 | if (status) { | ||
276 | mthca_warn(dev, "SW2HW_SRQ returned status 0x%02x\n", | ||
277 | status); | ||
278 | err = -EINVAL; | ||
279 | goto err_out_free_buf; | ||
280 | } | ||
281 | 274 | ||
282 | spin_lock_irq(&dev->srq_table.lock); | 275 | spin_lock_irq(&dev->srq_table.lock); |
283 | if (mthca_array_set(&dev->srq_table.srq, | 276 | if (mthca_array_set(&dev->srq_table.srq, |
@@ -299,11 +292,9 @@ int mthca_alloc_srq(struct mthca_dev *dev, struct mthca_pd *pd, | |||
299 | return 0; | 292 | return 0; |
300 | 293 | ||
301 | err_out_free_srq: | 294 | err_out_free_srq: |
302 | err = mthca_HW2SW_SRQ(dev, mailbox, srq->srqn, &status); | 295 | err = mthca_HW2SW_SRQ(dev, mailbox, srq->srqn); |
303 | if (err) | 296 | if (err) |
304 | mthca_warn(dev, "HW2SW_SRQ failed (%d)\n", err); | 297 | mthca_warn(dev, "HW2SW_SRQ failed (%d)\n", err); |
305 | else if (status) | ||
306 | mthca_warn(dev, "HW2SW_SRQ returned status 0x%02x\n", status); | ||
307 | 298 | ||
308 | err_out_free_buf: | 299 | err_out_free_buf: |
309 | if (!pd->ibpd.uobject) | 300 | if (!pd->ibpd.uobject) |
@@ -340,7 +331,6 @@ void mthca_free_srq(struct mthca_dev *dev, struct mthca_srq *srq) | |||
340 | { | 331 | { |
341 | struct mthca_mailbox *mailbox; | 332 | struct mthca_mailbox *mailbox; |
342 | int err; | 333 | int err; |
343 | u8 status; | ||
344 | 334 | ||
345 | mailbox = mthca_alloc_mailbox(dev, GFP_KERNEL); | 335 | mailbox = mthca_alloc_mailbox(dev, GFP_KERNEL); |
346 | if (IS_ERR(mailbox)) { | 336 | if (IS_ERR(mailbox)) { |
@@ -348,11 +338,9 @@ void mthca_free_srq(struct mthca_dev *dev, struct mthca_srq *srq) | |||
348 | return; | 338 | return; |
349 | } | 339 | } |
350 | 340 | ||
351 | err = mthca_HW2SW_SRQ(dev, mailbox, srq->srqn, &status); | 341 | err = mthca_HW2SW_SRQ(dev, mailbox, srq->srqn); |
352 | if (err) | 342 | if (err) |
353 | mthca_warn(dev, "HW2SW_SRQ failed (%d)\n", err); | 343 | mthca_warn(dev, "HW2SW_SRQ failed (%d)\n", err); |
354 | else if (status) | ||
355 | mthca_warn(dev, "HW2SW_SRQ returned status 0x%02x\n", status); | ||
356 | 344 | ||
357 | spin_lock_irq(&dev->srq_table.lock); | 345 | spin_lock_irq(&dev->srq_table.lock); |
358 | mthca_array_clear(&dev->srq_table.srq, | 346 | mthca_array_clear(&dev->srq_table.srq, |
@@ -378,8 +366,7 @@ int mthca_modify_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr, | |||
378 | { | 366 | { |
379 | struct mthca_dev *dev = to_mdev(ibsrq->device); | 367 | struct mthca_dev *dev = to_mdev(ibsrq->device); |
380 | struct mthca_srq *srq = to_msrq(ibsrq); | 368 | struct mthca_srq *srq = to_msrq(ibsrq); |
381 | int ret; | 369 | int ret = 0; |
382 | u8 status; | ||
383 | 370 | ||
384 | /* We don't support resizing SRQs (yet?) */ | 371 | /* We don't support resizing SRQs (yet?) */ |
385 | if (attr_mask & IB_SRQ_MAX_WR) | 372 | if (attr_mask & IB_SRQ_MAX_WR) |
@@ -391,16 +378,11 @@ int mthca_modify_srq(struct ib_srq *ibsrq, struct ib_srq_attr *attr, | |||
391 | return -EINVAL; | 378 | return -EINVAL; |
392 | 379 | ||
393 | mutex_lock(&srq->mutex); | 380 | mutex_lock(&srq->mutex); |
394 | ret = mthca_ARM_SRQ(dev, srq->srqn, attr->srq_limit, &status); | 381 | ret = mthca_ARM_SRQ(dev, srq->srqn, attr->srq_limit); |
395 | mutex_unlock(&srq->mutex); | 382 | mutex_unlock(&srq->mutex); |
396 | |||
397 | if (ret) | ||
398 | return ret; | ||
399 | if (status) | ||
400 | return -EINVAL; | ||
401 | } | 383 | } |
402 | 384 | ||
403 | return 0; | 385 | return ret; |
404 | } | 386 | } |
405 | 387 | ||
406 | int mthca_query_srq(struct ib_srq *ibsrq, struct ib_srq_attr *srq_attr) | 388 | int mthca_query_srq(struct ib_srq *ibsrq, struct ib_srq_attr *srq_attr) |
@@ -410,14 +392,13 @@ int mthca_query_srq(struct ib_srq *ibsrq, struct ib_srq_attr *srq_attr) | |||
410 | struct mthca_mailbox *mailbox; | 392 | struct mthca_mailbox *mailbox; |
411 | struct mthca_arbel_srq_context *arbel_ctx; | 393 | struct mthca_arbel_srq_context *arbel_ctx; |
412 | struct mthca_tavor_srq_context *tavor_ctx; | 394 | struct mthca_tavor_srq_context *tavor_ctx; |
413 | u8 status; | ||
414 | int err; | 395 | int err; |
415 | 396 | ||
416 | mailbox = mthca_alloc_mailbox(dev, GFP_KERNEL); | 397 | mailbox = mthca_alloc_mailbox(dev, GFP_KERNEL); |
417 | if (IS_ERR(mailbox)) | 398 | if (IS_ERR(mailbox)) |
418 | return PTR_ERR(mailbox); | 399 | return PTR_ERR(mailbox); |
419 | 400 | ||
420 | err = mthca_QUERY_SRQ(dev, srq->srqn, mailbox, &status); | 401 | err = mthca_QUERY_SRQ(dev, srq->srqn, mailbox); |
421 | if (err) | 402 | if (err) |
422 | goto out; | 403 | goto out; |
423 | 404 | ||