diff options
Diffstat (limited to 'drivers/infiniband/hw/mthca/mthca_cmd.c')
-rw-r--r-- | drivers/infiniband/hw/mthca/mthca_cmd.c | 276 |
1 files changed, 152 insertions, 124 deletions
diff --git a/drivers/infiniband/hw/mthca/mthca_cmd.c b/drivers/infiniband/hw/mthca/mthca_cmd.c index 7bfa2a16495..3082b3b3d62 100644 --- a/drivers/infiniband/hw/mthca/mthca_cmd.c +++ b/drivers/infiniband/hw/mthca/mthca_cmd.c | |||
@@ -301,6 +301,38 @@ static int mthca_cmd_post(struct mthca_dev *dev, | |||
301 | return err; | 301 | return err; |
302 | } | 302 | } |
303 | 303 | ||
304 | |||
305 | static int mthca_status_to_errno(u8 status) | ||
306 | { | ||
307 | static const int trans_table[] = { | ||
308 | [MTHCA_CMD_STAT_INTERNAL_ERR] = -EIO, | ||
309 | [MTHCA_CMD_STAT_BAD_OP] = -EPERM, | ||
310 | [MTHCA_CMD_STAT_BAD_PARAM] = -EINVAL, | ||
311 | [MTHCA_CMD_STAT_BAD_SYS_STATE] = -ENXIO, | ||
312 | [MTHCA_CMD_STAT_BAD_RESOURCE] = -EBADF, | ||
313 | [MTHCA_CMD_STAT_RESOURCE_BUSY] = -EBUSY, | ||
314 | [MTHCA_CMD_STAT_DDR_MEM_ERR] = -ENOMEM, | ||
315 | [MTHCA_CMD_STAT_EXCEED_LIM] = -ENOMEM, | ||
316 | [MTHCA_CMD_STAT_BAD_RES_STATE] = -EBADF, | ||
317 | [MTHCA_CMD_STAT_BAD_INDEX] = -EBADF, | ||
318 | [MTHCA_CMD_STAT_BAD_NVMEM] = -EFAULT, | ||
319 | [MTHCA_CMD_STAT_BAD_QPEE_STATE] = -EINVAL, | ||
320 | [MTHCA_CMD_STAT_BAD_SEG_PARAM] = -EFAULT, | ||
321 | [MTHCA_CMD_STAT_REG_BOUND] = -EBUSY, | ||
322 | [MTHCA_CMD_STAT_LAM_NOT_PRE] = -EAGAIN, | ||
323 | [MTHCA_CMD_STAT_BAD_PKT] = -EBADMSG, | ||
324 | [MTHCA_CMD_STAT_BAD_SIZE] = -ENOMEM, | ||
325 | }; | ||
326 | |||
327 | if (status >= ARRAY_SIZE(trans_table) || | ||
328 | (status != MTHCA_CMD_STAT_OK | ||
329 | && trans_table[status] == 0)) | ||
330 | return -EINVAL; | ||
331 | |||
332 | return trans_table[status]; | ||
333 | } | ||
334 | |||
335 | |||
304 | static int mthca_cmd_poll(struct mthca_dev *dev, | 336 | static int mthca_cmd_poll(struct mthca_dev *dev, |
305 | u64 in_param, | 337 | u64 in_param, |
306 | u64 *out_param, | 338 | u64 *out_param, |
@@ -308,11 +340,11 @@ static int mthca_cmd_poll(struct mthca_dev *dev, | |||
308 | u32 in_modifier, | 340 | u32 in_modifier, |
309 | u8 op_modifier, | 341 | u8 op_modifier, |
310 | u16 op, | 342 | u16 op, |
311 | unsigned long timeout, | 343 | unsigned long timeout) |
312 | u8 *status) | ||
313 | { | 344 | { |
314 | int err = 0; | 345 | int err = 0; |
315 | unsigned long end; | 346 | unsigned long end; |
347 | u8 status; | ||
316 | 348 | ||
317 | down(&dev->cmd.poll_sem); | 349 | down(&dev->cmd.poll_sem); |
318 | 350 | ||
@@ -341,7 +373,12 @@ static int mthca_cmd_poll(struct mthca_dev *dev, | |||
341 | (u64) be32_to_cpu((__force __be32) | 373 | (u64) be32_to_cpu((__force __be32) |
342 | __raw_readl(dev->hcr + HCR_OUT_PARAM_OFFSET + 4)); | 374 | __raw_readl(dev->hcr + HCR_OUT_PARAM_OFFSET + 4)); |
343 | 375 | ||
344 | *status = be32_to_cpu((__force __be32) __raw_readl(dev->hcr + HCR_STATUS_OFFSET)) >> 24; | 376 | status = be32_to_cpu((__force __be32) __raw_readl(dev->hcr + HCR_STATUS_OFFSET)) >> 24; |
377 | if (status) { | ||
378 | mthca_dbg(dev, "Command %02x completed with status %02x\n", | ||
379 | op, status); | ||
380 | err = mthca_status_to_errno(status); | ||
381 | } | ||
345 | 382 | ||
346 | out: | 383 | out: |
347 | up(&dev->cmd.poll_sem); | 384 | up(&dev->cmd.poll_sem); |
@@ -374,8 +411,7 @@ static int mthca_cmd_wait(struct mthca_dev *dev, | |||
374 | u32 in_modifier, | 411 | u32 in_modifier, |
375 | u8 op_modifier, | 412 | u8 op_modifier, |
376 | u16 op, | 413 | u16 op, |
377 | unsigned long timeout, | 414 | unsigned long timeout) |
378 | u8 *status) | ||
379 | { | 415 | { |
380 | int err = 0; | 416 | int err = 0; |
381 | struct mthca_cmd_context *context; | 417 | struct mthca_cmd_context *context; |
@@ -407,10 +443,11 @@ static int mthca_cmd_wait(struct mthca_dev *dev, | |||
407 | if (err) | 443 | if (err) |
408 | goto out; | 444 | goto out; |
409 | 445 | ||
410 | *status = context->status; | 446 | if (context->status) { |
411 | if (*status) | ||
412 | mthca_dbg(dev, "Command %02x completed with status %02x\n", | 447 | mthca_dbg(dev, "Command %02x completed with status %02x\n", |
413 | op, *status); | 448 | op, context->status); |
449 | err = mthca_status_to_errno(context->status); | ||
450 | } | ||
414 | 451 | ||
415 | if (out_is_imm) | 452 | if (out_is_imm) |
416 | *out_param = context->out_param; | 453 | *out_param = context->out_param; |
@@ -432,17 +469,16 @@ static int mthca_cmd_box(struct mthca_dev *dev, | |||
432 | u32 in_modifier, | 469 | u32 in_modifier, |
433 | u8 op_modifier, | 470 | u8 op_modifier, |
434 | u16 op, | 471 | u16 op, |
435 | unsigned long timeout, | 472 | unsigned long timeout) |
436 | u8 *status) | ||
437 | { | 473 | { |
438 | if (dev->cmd.flags & MTHCA_CMD_USE_EVENTS) | 474 | if (dev->cmd.flags & MTHCA_CMD_USE_EVENTS) |
439 | return mthca_cmd_wait(dev, in_param, &out_param, 0, | 475 | return mthca_cmd_wait(dev, in_param, &out_param, 0, |
440 | in_modifier, op_modifier, op, | 476 | in_modifier, op_modifier, op, |
441 | timeout, status); | 477 | timeout); |
442 | else | 478 | else |
443 | return mthca_cmd_poll(dev, in_param, &out_param, 0, | 479 | return mthca_cmd_poll(dev, in_param, &out_param, 0, |
444 | in_modifier, op_modifier, op, | 480 | in_modifier, op_modifier, op, |
445 | timeout, status); | 481 | timeout); |
446 | } | 482 | } |
447 | 483 | ||
448 | /* Invoke a command with no output parameter */ | 484 | /* Invoke a command with no output parameter */ |
@@ -451,11 +487,10 @@ static int mthca_cmd(struct mthca_dev *dev, | |||
451 | u32 in_modifier, | 487 | u32 in_modifier, |
452 | u8 op_modifier, | 488 | u8 op_modifier, |
453 | u16 op, | 489 | u16 op, |
454 | unsigned long timeout, | 490 | unsigned long timeout) |
455 | u8 *status) | ||
456 | { | 491 | { |
457 | return mthca_cmd_box(dev, in_param, 0, in_modifier, | 492 | return mthca_cmd_box(dev, in_param, 0, in_modifier, |
458 | op_modifier, op, timeout, status); | 493 | op_modifier, op, timeout); |
459 | } | 494 | } |
460 | 495 | ||
461 | /* | 496 | /* |
@@ -469,17 +504,16 @@ static int mthca_cmd_imm(struct mthca_dev *dev, | |||
469 | u32 in_modifier, | 504 | u32 in_modifier, |
470 | u8 op_modifier, | 505 | u8 op_modifier, |
471 | u16 op, | 506 | u16 op, |
472 | unsigned long timeout, | 507 | unsigned long timeout) |
473 | u8 *status) | ||
474 | { | 508 | { |
475 | if (dev->cmd.flags & MTHCA_CMD_USE_EVENTS) | 509 | if (dev->cmd.flags & MTHCA_CMD_USE_EVENTS) |
476 | return mthca_cmd_wait(dev, in_param, out_param, 1, | 510 | return mthca_cmd_wait(dev, in_param, out_param, 1, |
477 | in_modifier, op_modifier, op, | 511 | in_modifier, op_modifier, op, |
478 | timeout, status); | 512 | timeout); |
479 | else | 513 | else |
480 | return mthca_cmd_poll(dev, in_param, out_param, 1, | 514 | return mthca_cmd_poll(dev, in_param, out_param, 1, |
481 | in_modifier, op_modifier, op, | 515 | in_modifier, op_modifier, op, |
482 | timeout, status); | 516 | timeout); |
483 | } | 517 | } |
484 | 518 | ||
485 | int mthca_cmd_init(struct mthca_dev *dev) | 519 | int mthca_cmd_init(struct mthca_dev *dev) |
@@ -596,14 +630,14 @@ void mthca_free_mailbox(struct mthca_dev *dev, struct mthca_mailbox *mailbox) | |||
596 | kfree(mailbox); | 630 | kfree(mailbox); |
597 | } | 631 | } |
598 | 632 | ||
599 | int mthca_SYS_EN(struct mthca_dev *dev, u8 *status) | 633 | int mthca_SYS_EN(struct mthca_dev *dev) |
600 | { | 634 | { |
601 | u64 out; | 635 | u64 out; |
602 | int ret; | 636 | int ret; |
603 | 637 | ||
604 | ret = mthca_cmd_imm(dev, 0, &out, 0, 0, CMD_SYS_EN, CMD_TIME_CLASS_D, status); | 638 | ret = mthca_cmd_imm(dev, 0, &out, 0, 0, CMD_SYS_EN, CMD_TIME_CLASS_D); |
605 | 639 | ||
606 | if (*status == MTHCA_CMD_STAT_DDR_MEM_ERR) | 640 | if (ret == -ENOMEM) |
607 | mthca_warn(dev, "SYS_EN DDR error: syn=%x, sock=%d, " | 641 | mthca_warn(dev, "SYS_EN DDR error: syn=%x, sock=%d, " |
608 | "sladdr=%d, SPD source=%s\n", | 642 | "sladdr=%d, SPD source=%s\n", |
609 | (int) (out >> 6) & 0xf, (int) (out >> 4) & 3, | 643 | (int) (out >> 6) & 0xf, (int) (out >> 4) & 3, |
@@ -612,13 +646,13 @@ int mthca_SYS_EN(struct mthca_dev *dev, u8 *status) | |||
612 | return ret; | 646 | return ret; |
613 | } | 647 | } |
614 | 648 | ||
615 | int mthca_SYS_DIS(struct mthca_dev *dev, u8 *status) | 649 | int mthca_SYS_DIS(struct mthca_dev *dev) |
616 | { | 650 | { |
617 | return mthca_cmd(dev, 0, 0, 0, CMD_SYS_DIS, CMD_TIME_CLASS_C, status); | 651 | return mthca_cmd(dev, 0, 0, 0, CMD_SYS_DIS, CMD_TIME_CLASS_C); |
618 | } | 652 | } |
619 | 653 | ||
620 | static int mthca_map_cmd(struct mthca_dev *dev, u16 op, struct mthca_icm *icm, | 654 | static int mthca_map_cmd(struct mthca_dev *dev, u16 op, struct mthca_icm *icm, |
621 | u64 virt, u8 *status) | 655 | u64 virt) |
622 | { | 656 | { |
623 | struct mthca_mailbox *mailbox; | 657 | struct mthca_mailbox *mailbox; |
624 | struct mthca_icm_iter iter; | 658 | struct mthca_icm_iter iter; |
@@ -666,8 +700,8 @@ static int mthca_map_cmd(struct mthca_dev *dev, u16 op, struct mthca_icm *icm, | |||
666 | 700 | ||
667 | if (++nent == MTHCA_MAILBOX_SIZE / 16) { | 701 | if (++nent == MTHCA_MAILBOX_SIZE / 16) { |
668 | err = mthca_cmd(dev, mailbox->dma, nent, 0, op, | 702 | err = mthca_cmd(dev, mailbox->dma, nent, 0, op, |
669 | CMD_TIME_CLASS_B, status); | 703 | CMD_TIME_CLASS_B); |
670 | if (err || *status) | 704 | if (err) |
671 | goto out; | 705 | goto out; |
672 | nent = 0; | 706 | nent = 0; |
673 | } | 707 | } |
@@ -676,7 +710,7 @@ static int mthca_map_cmd(struct mthca_dev *dev, u16 op, struct mthca_icm *icm, | |||
676 | 710 | ||
677 | if (nent) | 711 | if (nent) |
678 | err = mthca_cmd(dev, mailbox->dma, nent, 0, op, | 712 | err = mthca_cmd(dev, mailbox->dma, nent, 0, op, |
679 | CMD_TIME_CLASS_B, status); | 713 | CMD_TIME_CLASS_B); |
680 | 714 | ||
681 | switch (op) { | 715 | switch (op) { |
682 | case CMD_MAP_FA: | 716 | case CMD_MAP_FA: |
@@ -696,19 +730,19 @@ out: | |||
696 | return err; | 730 | return err; |
697 | } | 731 | } |
698 | 732 | ||
699 | int mthca_MAP_FA(struct mthca_dev *dev, struct mthca_icm *icm, u8 *status) | 733 | int mthca_MAP_FA(struct mthca_dev *dev, struct mthca_icm *icm) |
700 | { | 734 | { |
701 | return mthca_map_cmd(dev, CMD_MAP_FA, icm, -1, status); | 735 | return mthca_map_cmd(dev, CMD_MAP_FA, icm, -1); |
702 | } | 736 | } |
703 | 737 | ||
704 | int mthca_UNMAP_FA(struct mthca_dev *dev, u8 *status) | 738 | int mthca_UNMAP_FA(struct mthca_dev *dev) |
705 | { | 739 | { |
706 | return mthca_cmd(dev, 0, 0, 0, CMD_UNMAP_FA, CMD_TIME_CLASS_B, status); | 740 | return mthca_cmd(dev, 0, 0, 0, CMD_UNMAP_FA, CMD_TIME_CLASS_B); |
707 | } | 741 | } |
708 | 742 | ||
709 | int mthca_RUN_FW(struct mthca_dev *dev, u8 *status) | 743 | int mthca_RUN_FW(struct mthca_dev *dev) |
710 | { | 744 | { |
711 | return mthca_cmd(dev, 0, 0, 0, CMD_RUN_FW, CMD_TIME_CLASS_A, status); | 745 | return mthca_cmd(dev, 0, 0, 0, CMD_RUN_FW, CMD_TIME_CLASS_A); |
712 | } | 746 | } |
713 | 747 | ||
714 | static void mthca_setup_cmd_doorbells(struct mthca_dev *dev, u64 base) | 748 | static void mthca_setup_cmd_doorbells(struct mthca_dev *dev, u64 base) |
@@ -737,7 +771,7 @@ static void mthca_setup_cmd_doorbells(struct mthca_dev *dev, u64 base) | |||
737 | mthca_dbg(dev, "Mapped doorbell page for posting FW commands\n"); | 771 | mthca_dbg(dev, "Mapped doorbell page for posting FW commands\n"); |
738 | } | 772 | } |
739 | 773 | ||
740 | int mthca_QUERY_FW(struct mthca_dev *dev, u8 *status) | 774 | int mthca_QUERY_FW(struct mthca_dev *dev) |
741 | { | 775 | { |
742 | struct mthca_mailbox *mailbox; | 776 | struct mthca_mailbox *mailbox; |
743 | u32 *outbox; | 777 | u32 *outbox; |
@@ -771,7 +805,7 @@ int mthca_QUERY_FW(struct mthca_dev *dev, u8 *status) | |||
771 | outbox = mailbox->buf; | 805 | outbox = mailbox->buf; |
772 | 806 | ||
773 | err = mthca_cmd_box(dev, 0, mailbox->dma, 0, 0, CMD_QUERY_FW, | 807 | err = mthca_cmd_box(dev, 0, mailbox->dma, 0, 0, CMD_QUERY_FW, |
774 | CMD_TIME_CLASS_A, status); | 808 | CMD_TIME_CLASS_A); |
775 | 809 | ||
776 | if (err) | 810 | if (err) |
777 | goto out; | 811 | goto out; |
@@ -843,7 +877,7 @@ out: | |||
843 | return err; | 877 | return err; |
844 | } | 878 | } |
845 | 879 | ||
846 | int mthca_ENABLE_LAM(struct mthca_dev *dev, u8 *status) | 880 | int mthca_ENABLE_LAM(struct mthca_dev *dev) |
847 | { | 881 | { |
848 | struct mthca_mailbox *mailbox; | 882 | struct mthca_mailbox *mailbox; |
849 | u8 info; | 883 | u8 info; |
@@ -864,14 +898,11 @@ int mthca_ENABLE_LAM(struct mthca_dev *dev, u8 *status) | |||
864 | outbox = mailbox->buf; | 898 | outbox = mailbox->buf; |
865 | 899 | ||
866 | err = mthca_cmd_box(dev, 0, mailbox->dma, 0, 0, CMD_ENABLE_LAM, | 900 | err = mthca_cmd_box(dev, 0, mailbox->dma, 0, 0, CMD_ENABLE_LAM, |
867 | CMD_TIME_CLASS_C, status); | 901 | CMD_TIME_CLASS_C); |
868 | 902 | ||
869 | if (err) | 903 | if (err) |
870 | goto out; | 904 | goto out; |
871 | 905 | ||
872 | if (*status == MTHCA_CMD_STAT_LAM_NOT_PRE) | ||
873 | goto out; | ||
874 | |||
875 | MTHCA_GET(dev->ddr_start, outbox, ENABLE_LAM_START_OFFSET); | 906 | MTHCA_GET(dev->ddr_start, outbox, ENABLE_LAM_START_OFFSET); |
876 | MTHCA_GET(dev->ddr_end, outbox, ENABLE_LAM_END_OFFSET); | 907 | MTHCA_GET(dev->ddr_end, outbox, ENABLE_LAM_END_OFFSET); |
877 | MTHCA_GET(info, outbox, ENABLE_LAM_INFO_OFFSET); | 908 | MTHCA_GET(info, outbox, ENABLE_LAM_INFO_OFFSET); |
@@ -896,12 +927,12 @@ out: | |||
896 | return err; | 927 | return err; |
897 | } | 928 | } |
898 | 929 | ||
899 | int mthca_DISABLE_LAM(struct mthca_dev *dev, u8 *status) | 930 | int mthca_DISABLE_LAM(struct mthca_dev *dev) |
900 | { | 931 | { |
901 | return mthca_cmd(dev, 0, 0, 0, CMD_SYS_DIS, CMD_TIME_CLASS_C, status); | 932 | return mthca_cmd(dev, 0, 0, 0, CMD_SYS_DIS, CMD_TIME_CLASS_C); |
902 | } | 933 | } |
903 | 934 | ||
904 | int mthca_QUERY_DDR(struct mthca_dev *dev, u8 *status) | 935 | int mthca_QUERY_DDR(struct mthca_dev *dev) |
905 | { | 936 | { |
906 | struct mthca_mailbox *mailbox; | 937 | struct mthca_mailbox *mailbox; |
907 | u8 info; | 938 | u8 info; |
@@ -922,7 +953,7 @@ int mthca_QUERY_DDR(struct mthca_dev *dev, u8 *status) | |||
922 | outbox = mailbox->buf; | 953 | outbox = mailbox->buf; |
923 | 954 | ||
924 | err = mthca_cmd_box(dev, 0, mailbox->dma, 0, 0, CMD_QUERY_DDR, | 955 | err = mthca_cmd_box(dev, 0, mailbox->dma, 0, 0, CMD_QUERY_DDR, |
925 | CMD_TIME_CLASS_A, status); | 956 | CMD_TIME_CLASS_A); |
926 | 957 | ||
927 | if (err) | 958 | if (err) |
928 | goto out; | 959 | goto out; |
@@ -952,7 +983,7 @@ out: | |||
952 | } | 983 | } |
953 | 984 | ||
954 | int mthca_QUERY_DEV_LIM(struct mthca_dev *dev, | 985 | int mthca_QUERY_DEV_LIM(struct mthca_dev *dev, |
955 | struct mthca_dev_lim *dev_lim, u8 *status) | 986 | struct mthca_dev_lim *dev_lim) |
956 | { | 987 | { |
957 | struct mthca_mailbox *mailbox; | 988 | struct mthca_mailbox *mailbox; |
958 | u32 *outbox; | 989 | u32 *outbox; |
@@ -1028,7 +1059,7 @@ int mthca_QUERY_DEV_LIM(struct mthca_dev *dev, | |||
1028 | outbox = mailbox->buf; | 1059 | outbox = mailbox->buf; |
1029 | 1060 | ||
1030 | err = mthca_cmd_box(dev, 0, mailbox->dma, 0, 0, CMD_QUERY_DEV_LIM, | 1061 | err = mthca_cmd_box(dev, 0, mailbox->dma, 0, 0, CMD_QUERY_DEV_LIM, |
1031 | CMD_TIME_CLASS_A, status); | 1062 | CMD_TIME_CLASS_A); |
1032 | 1063 | ||
1033 | if (err) | 1064 | if (err) |
1034 | goto out; | 1065 | goto out; |
@@ -1232,7 +1263,7 @@ static void get_board_id(void *vsd, char *board_id) | |||
1232 | } | 1263 | } |
1233 | 1264 | ||
1234 | int mthca_QUERY_ADAPTER(struct mthca_dev *dev, | 1265 | int mthca_QUERY_ADAPTER(struct mthca_dev *dev, |
1235 | struct mthca_adapter *adapter, u8 *status) | 1266 | struct mthca_adapter *adapter) |
1236 | { | 1267 | { |
1237 | struct mthca_mailbox *mailbox; | 1268 | struct mthca_mailbox *mailbox; |
1238 | u32 *outbox; | 1269 | u32 *outbox; |
@@ -1251,7 +1282,7 @@ int mthca_QUERY_ADAPTER(struct mthca_dev *dev, | |||
1251 | outbox = mailbox->buf; | 1282 | outbox = mailbox->buf; |
1252 | 1283 | ||
1253 | err = mthca_cmd_box(dev, 0, mailbox->dma, 0, 0, CMD_QUERY_ADAPTER, | 1284 | err = mthca_cmd_box(dev, 0, mailbox->dma, 0, 0, CMD_QUERY_ADAPTER, |
1254 | CMD_TIME_CLASS_A, status); | 1285 | CMD_TIME_CLASS_A); |
1255 | 1286 | ||
1256 | if (err) | 1287 | if (err) |
1257 | goto out; | 1288 | goto out; |
@@ -1275,8 +1306,7 @@ out: | |||
1275 | } | 1306 | } |
1276 | 1307 | ||
1277 | int mthca_INIT_HCA(struct mthca_dev *dev, | 1308 | int mthca_INIT_HCA(struct mthca_dev *dev, |
1278 | struct mthca_init_hca_param *param, | 1309 | struct mthca_init_hca_param *param) |
1279 | u8 *status) | ||
1280 | { | 1310 | { |
1281 | struct mthca_mailbox *mailbox; | 1311 | struct mthca_mailbox *mailbox; |
1282 | __be32 *inbox; | 1312 | __be32 *inbox; |
@@ -1393,7 +1423,8 @@ int mthca_INIT_HCA(struct mthca_dev *dev, | |||
1393 | MTHCA_PUT(inbox, param->uarc_base, INIT_HCA_UAR_CTX_BASE_OFFSET); | 1423 | MTHCA_PUT(inbox, param->uarc_base, INIT_HCA_UAR_CTX_BASE_OFFSET); |
1394 | } | 1424 | } |
1395 | 1425 | ||
1396 | err = mthca_cmd(dev, mailbox->dma, 0, 0, CMD_INIT_HCA, CMD_TIME_CLASS_D, status); | 1426 | err = mthca_cmd(dev, mailbox->dma, 0, 0, |
1427 | CMD_INIT_HCA, CMD_TIME_CLASS_D); | ||
1397 | 1428 | ||
1398 | mthca_free_mailbox(dev, mailbox); | 1429 | mthca_free_mailbox(dev, mailbox); |
1399 | return err; | 1430 | return err; |
@@ -1401,7 +1432,7 @@ int mthca_INIT_HCA(struct mthca_dev *dev, | |||
1401 | 1432 | ||
1402 | int mthca_INIT_IB(struct mthca_dev *dev, | 1433 | int mthca_INIT_IB(struct mthca_dev *dev, |
1403 | struct mthca_init_ib_param *param, | 1434 | struct mthca_init_ib_param *param, |
1404 | int port, u8 *status) | 1435 | int port) |
1405 | { | 1436 | { |
1406 | struct mthca_mailbox *mailbox; | 1437 | struct mthca_mailbox *mailbox; |
1407 | u32 *inbox; | 1438 | u32 *inbox; |
@@ -1445,24 +1476,24 @@ int mthca_INIT_IB(struct mthca_dev *dev, | |||
1445 | MTHCA_PUT(inbox, param->si_guid, INIT_IB_SI_GUID_OFFSET); | 1476 | MTHCA_PUT(inbox, param->si_guid, INIT_IB_SI_GUID_OFFSET); |
1446 | 1477 | ||
1447 | err = mthca_cmd(dev, mailbox->dma, port, 0, CMD_INIT_IB, | 1478 | err = mthca_cmd(dev, mailbox->dma, port, 0, CMD_INIT_IB, |
1448 | CMD_TIME_CLASS_A, status); | 1479 | CMD_TIME_CLASS_A); |
1449 | 1480 | ||
1450 | mthca_free_mailbox(dev, mailbox); | 1481 | mthca_free_mailbox(dev, mailbox); |
1451 | return err; | 1482 | return err; |
1452 | } | 1483 | } |
1453 | 1484 | ||
1454 | int mthca_CLOSE_IB(struct mthca_dev *dev, int port, u8 *status) | 1485 | int mthca_CLOSE_IB(struct mthca_dev *dev, int port) |
1455 | { | 1486 | { |
1456 | return mthca_cmd(dev, 0, port, 0, CMD_CLOSE_IB, CMD_TIME_CLASS_A, status); | 1487 | return mthca_cmd(dev, 0, port, 0, CMD_CLOSE_IB, CMD_TIME_CLASS_A); |
1457 | } | 1488 | } |
1458 | 1489 | ||
1459 | int mthca_CLOSE_HCA(struct mthca_dev *dev, int panic, u8 *status) | 1490 | int mthca_CLOSE_HCA(struct mthca_dev *dev, int panic) |
1460 | { | 1491 | { |
1461 | return mthca_cmd(dev, 0, 0, panic, CMD_CLOSE_HCA, CMD_TIME_CLASS_C, status); | 1492 | return mthca_cmd(dev, 0, 0, panic, CMD_CLOSE_HCA, CMD_TIME_CLASS_C); |
1462 | } | 1493 | } |
1463 | 1494 | ||
1464 | int mthca_SET_IB(struct mthca_dev *dev, struct mthca_set_ib_param *param, | 1495 | int mthca_SET_IB(struct mthca_dev *dev, struct mthca_set_ib_param *param, |
1465 | int port, u8 *status) | 1496 | int port) |
1466 | { | 1497 | { |
1467 | struct mthca_mailbox *mailbox; | 1498 | struct mthca_mailbox *mailbox; |
1468 | u32 *inbox; | 1499 | u32 *inbox; |
@@ -1491,18 +1522,18 @@ int mthca_SET_IB(struct mthca_dev *dev, struct mthca_set_ib_param *param, | |||
1491 | MTHCA_PUT(inbox, param->si_guid, SET_IB_SI_GUID_OFFSET); | 1522 | MTHCA_PUT(inbox, param->si_guid, SET_IB_SI_GUID_OFFSET); |
1492 | 1523 | ||
1493 | err = mthca_cmd(dev, mailbox->dma, port, 0, CMD_SET_IB, | 1524 | err = mthca_cmd(dev, mailbox->dma, port, 0, CMD_SET_IB, |
1494 | CMD_TIME_CLASS_B, status); | 1525 | CMD_TIME_CLASS_B); |
1495 | 1526 | ||
1496 | mthca_free_mailbox(dev, mailbox); | 1527 | mthca_free_mailbox(dev, mailbox); |
1497 | return err; | 1528 | return err; |
1498 | } | 1529 | } |
1499 | 1530 | ||
1500 | int mthca_MAP_ICM(struct mthca_dev *dev, struct mthca_icm *icm, u64 virt, u8 *status) | 1531 | int mthca_MAP_ICM(struct mthca_dev *dev, struct mthca_icm *icm, u64 virt) |
1501 | { | 1532 | { |
1502 | return mthca_map_cmd(dev, CMD_MAP_ICM, icm, virt, status); | 1533 | return mthca_map_cmd(dev, CMD_MAP_ICM, icm, virt); |
1503 | } | 1534 | } |
1504 | 1535 | ||
1505 | int mthca_MAP_ICM_page(struct mthca_dev *dev, u64 dma_addr, u64 virt, u8 *status) | 1536 | int mthca_MAP_ICM_page(struct mthca_dev *dev, u64 dma_addr, u64 virt) |
1506 | { | 1537 | { |
1507 | struct mthca_mailbox *mailbox; | 1538 | struct mthca_mailbox *mailbox; |
1508 | __be64 *inbox; | 1539 | __be64 *inbox; |
@@ -1517,7 +1548,7 @@ int mthca_MAP_ICM_page(struct mthca_dev *dev, u64 dma_addr, u64 virt, u8 *status | |||
1517 | inbox[1] = cpu_to_be64(dma_addr); | 1548 | inbox[1] = cpu_to_be64(dma_addr); |
1518 | 1549 | ||
1519 | err = mthca_cmd(dev, mailbox->dma, 1, 0, CMD_MAP_ICM, | 1550 | err = mthca_cmd(dev, mailbox->dma, 1, 0, CMD_MAP_ICM, |
1520 | CMD_TIME_CLASS_B, status); | 1551 | CMD_TIME_CLASS_B); |
1521 | 1552 | ||
1522 | mthca_free_mailbox(dev, mailbox); | 1553 | mthca_free_mailbox(dev, mailbox); |
1523 | 1554 | ||
@@ -1528,31 +1559,31 @@ int mthca_MAP_ICM_page(struct mthca_dev *dev, u64 dma_addr, u64 virt, u8 *status | |||
1528 | return err; | 1559 | return err; |
1529 | } | 1560 | } |
1530 | 1561 | ||
1531 | int mthca_UNMAP_ICM(struct mthca_dev *dev, u64 virt, u32 page_count, u8 *status) | 1562 | int mthca_UNMAP_ICM(struct mthca_dev *dev, u64 virt, u32 page_count) |
1532 | { | 1563 | { |
1533 | mthca_dbg(dev, "Unmapping %d pages at %llx from ICM.\n", | 1564 | mthca_dbg(dev, "Unmapping %d pages at %llx from ICM.\n", |
1534 | page_count, (unsigned long long) virt); | 1565 | page_count, (unsigned long long) virt); |
1535 | 1566 | ||
1536 | return mthca_cmd(dev, virt, page_count, 0, CMD_UNMAP_ICM, CMD_TIME_CLASS_B, status); | 1567 | return mthca_cmd(dev, virt, page_count, 0, |
1568 | CMD_UNMAP_ICM, CMD_TIME_CLASS_B); | ||
1537 | } | 1569 | } |
1538 | 1570 | ||
1539 | int mthca_MAP_ICM_AUX(struct mthca_dev *dev, struct mthca_icm *icm, u8 *status) | 1571 | int mthca_MAP_ICM_AUX(struct mthca_dev *dev, struct mthca_icm *icm) |
1540 | { | 1572 | { |
1541 | return mthca_map_cmd(dev, CMD_MAP_ICM_AUX, icm, -1, status); | 1573 | return mthca_map_cmd(dev, CMD_MAP_ICM_AUX, icm, -1); |
1542 | } | 1574 | } |
1543 | 1575 | ||
1544 | int mthca_UNMAP_ICM_AUX(struct mthca_dev *dev, u8 *status) | 1576 | int mthca_UNMAP_ICM_AUX(struct mthca_dev *dev) |
1545 | { | 1577 | { |
1546 | return mthca_cmd(dev, 0, 0, 0, CMD_UNMAP_ICM_AUX, CMD_TIME_CLASS_B, status); | 1578 | return mthca_cmd(dev, 0, 0, 0, CMD_UNMAP_ICM_AUX, CMD_TIME_CLASS_B); |
1547 | } | 1579 | } |
1548 | 1580 | ||
1549 | int mthca_SET_ICM_SIZE(struct mthca_dev *dev, u64 icm_size, u64 *aux_pages, | 1581 | int mthca_SET_ICM_SIZE(struct mthca_dev *dev, u64 icm_size, u64 *aux_pages) |
1550 | u8 *status) | ||
1551 | { | 1582 | { |
1552 | int ret = mthca_cmd_imm(dev, icm_size, aux_pages, 0, 0, CMD_SET_ICM_SIZE, | 1583 | int ret = mthca_cmd_imm(dev, icm_size, aux_pages, 0, |
1553 | CMD_TIME_CLASS_A, status); | 1584 | 0, CMD_SET_ICM_SIZE, CMD_TIME_CLASS_A); |
1554 | 1585 | ||
1555 | if (ret || status) | 1586 | if (ret) |
1556 | return ret; | 1587 | return ret; |
1557 | 1588 | ||
1558 | /* | 1589 | /* |
@@ -1566,74 +1597,73 @@ int mthca_SET_ICM_SIZE(struct mthca_dev *dev, u64 icm_size, u64 *aux_pages, | |||
1566 | } | 1597 | } |
1567 | 1598 | ||
1568 | int mthca_SW2HW_MPT(struct mthca_dev *dev, struct mthca_mailbox *mailbox, | 1599 | int mthca_SW2HW_MPT(struct mthca_dev *dev, struct mthca_mailbox *mailbox, |
1569 | int mpt_index, u8 *status) | 1600 | int mpt_index) |
1570 | { | 1601 | { |
1571 | return mthca_cmd(dev, mailbox->dma, mpt_index, 0, CMD_SW2HW_MPT, | 1602 | return mthca_cmd(dev, mailbox->dma, mpt_index, 0, CMD_SW2HW_MPT, |
1572 | CMD_TIME_CLASS_B, status); | 1603 | CMD_TIME_CLASS_B); |
1573 | } | 1604 | } |
1574 | 1605 | ||
1575 | int mthca_HW2SW_MPT(struct mthca_dev *dev, struct mthca_mailbox *mailbox, | 1606 | int mthca_HW2SW_MPT(struct mthca_dev *dev, struct mthca_mailbox *mailbox, |
1576 | int mpt_index, u8 *status) | 1607 | int mpt_index) |
1577 | { | 1608 | { |
1578 | return mthca_cmd_box(dev, 0, mailbox ? mailbox->dma : 0, mpt_index, | 1609 | return mthca_cmd_box(dev, 0, mailbox ? mailbox->dma : 0, mpt_index, |
1579 | !mailbox, CMD_HW2SW_MPT, | 1610 | !mailbox, CMD_HW2SW_MPT, |
1580 | CMD_TIME_CLASS_B, status); | 1611 | CMD_TIME_CLASS_B); |
1581 | } | 1612 | } |
1582 | 1613 | ||
1583 | int mthca_WRITE_MTT(struct mthca_dev *dev, struct mthca_mailbox *mailbox, | 1614 | int mthca_WRITE_MTT(struct mthca_dev *dev, struct mthca_mailbox *mailbox, |
1584 | int num_mtt, u8 *status) | 1615 | int num_mtt) |
1585 | { | 1616 | { |
1586 | return mthca_cmd(dev, mailbox->dma, num_mtt, 0, CMD_WRITE_MTT, | 1617 | return mthca_cmd(dev, mailbox->dma, num_mtt, 0, CMD_WRITE_MTT, |
1587 | CMD_TIME_CLASS_B, status); | 1618 | CMD_TIME_CLASS_B); |
1588 | } | 1619 | } |
1589 | 1620 | ||
1590 | int mthca_SYNC_TPT(struct mthca_dev *dev, u8 *status) | 1621 | int mthca_SYNC_TPT(struct mthca_dev *dev) |
1591 | { | 1622 | { |
1592 | return mthca_cmd(dev, 0, 0, 0, CMD_SYNC_TPT, CMD_TIME_CLASS_B, status); | 1623 | return mthca_cmd(dev, 0, 0, 0, CMD_SYNC_TPT, CMD_TIME_CLASS_B); |
1593 | } | 1624 | } |
1594 | 1625 | ||
1595 | int mthca_MAP_EQ(struct mthca_dev *dev, u64 event_mask, int unmap, | 1626 | int mthca_MAP_EQ(struct mthca_dev *dev, u64 event_mask, int unmap, |
1596 | int eq_num, u8 *status) | 1627 | int eq_num) |
1597 | { | 1628 | { |
1598 | mthca_dbg(dev, "%s mask %016llx for eqn %d\n", | 1629 | mthca_dbg(dev, "%s mask %016llx for eqn %d\n", |
1599 | unmap ? "Clearing" : "Setting", | 1630 | unmap ? "Clearing" : "Setting", |
1600 | (unsigned long long) event_mask, eq_num); | 1631 | (unsigned long long) event_mask, eq_num); |
1601 | return mthca_cmd(dev, event_mask, (unmap << 31) | eq_num, | 1632 | return mthca_cmd(dev, event_mask, (unmap << 31) | eq_num, |
1602 | 0, CMD_MAP_EQ, CMD_TIME_CLASS_B, status); | 1633 | 0, CMD_MAP_EQ, CMD_TIME_CLASS_B); |
1603 | } | 1634 | } |
1604 | 1635 | ||
1605 | int mthca_SW2HW_EQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox, | 1636 | int mthca_SW2HW_EQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox, |
1606 | int eq_num, u8 *status) | 1637 | int eq_num) |
1607 | { | 1638 | { |
1608 | return mthca_cmd(dev, mailbox->dma, eq_num, 0, CMD_SW2HW_EQ, | 1639 | return mthca_cmd(dev, mailbox->dma, eq_num, 0, CMD_SW2HW_EQ, |
1609 | CMD_TIME_CLASS_A, status); | 1640 | CMD_TIME_CLASS_A); |
1610 | } | 1641 | } |
1611 | 1642 | ||
1612 | int mthca_HW2SW_EQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox, | 1643 | int mthca_HW2SW_EQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox, |
1613 | int eq_num, u8 *status) | 1644 | int eq_num) |
1614 | { | 1645 | { |
1615 | return mthca_cmd_box(dev, 0, mailbox->dma, eq_num, 0, | 1646 | return mthca_cmd_box(dev, 0, mailbox->dma, eq_num, 0, |
1616 | CMD_HW2SW_EQ, | 1647 | CMD_HW2SW_EQ, |
1617 | CMD_TIME_CLASS_A, status); | 1648 | CMD_TIME_CLASS_A); |
1618 | } | 1649 | } |
1619 | 1650 | ||
1620 | int mthca_SW2HW_CQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox, | 1651 | int mthca_SW2HW_CQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox, |
1621 | int cq_num, u8 *status) | 1652 | int cq_num) |
1622 | { | 1653 | { |
1623 | return mthca_cmd(dev, mailbox->dma, cq_num, 0, CMD_SW2HW_CQ, | 1654 | return mthca_cmd(dev, mailbox->dma, cq_num, 0, CMD_SW2HW_CQ, |
1624 | CMD_TIME_CLASS_A, status); | 1655 | CMD_TIME_CLASS_A); |
1625 | } | 1656 | } |
1626 | 1657 | ||
1627 | int mthca_HW2SW_CQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox, | 1658 | int mthca_HW2SW_CQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox, |
1628 | int cq_num, u8 *status) | 1659 | int cq_num) |
1629 | { | 1660 | { |
1630 | return mthca_cmd_box(dev, 0, mailbox->dma, cq_num, 0, | 1661 | return mthca_cmd_box(dev, 0, mailbox->dma, cq_num, 0, |
1631 | CMD_HW2SW_CQ, | 1662 | CMD_HW2SW_CQ, |
1632 | CMD_TIME_CLASS_A, status); | 1663 | CMD_TIME_CLASS_A); |
1633 | } | 1664 | } |
1634 | 1665 | ||
1635 | int mthca_RESIZE_CQ(struct mthca_dev *dev, int cq_num, u32 lkey, u8 log_size, | 1666 | int mthca_RESIZE_CQ(struct mthca_dev *dev, int cq_num, u32 lkey, u8 log_size) |
1636 | u8 *status) | ||
1637 | { | 1667 | { |
1638 | struct mthca_mailbox *mailbox; | 1668 | struct mthca_mailbox *mailbox; |
1639 | __be32 *inbox; | 1669 | __be32 *inbox; |
@@ -1657,44 +1687,43 @@ int mthca_RESIZE_CQ(struct mthca_dev *dev, int cq_num, u32 lkey, u8 log_size, | |||
1657 | MTHCA_PUT(inbox, lkey, RESIZE_CQ_LKEY_OFFSET); | 1687 | MTHCA_PUT(inbox, lkey, RESIZE_CQ_LKEY_OFFSET); |
1658 | 1688 | ||
1659 | err = mthca_cmd(dev, mailbox->dma, cq_num, 1, CMD_RESIZE_CQ, | 1689 | err = mthca_cmd(dev, mailbox->dma, cq_num, 1, CMD_RESIZE_CQ, |
1660 | CMD_TIME_CLASS_B, status); | 1690 | CMD_TIME_CLASS_B); |
1661 | 1691 | ||
1662 | mthca_free_mailbox(dev, mailbox); | 1692 | mthca_free_mailbox(dev, mailbox); |
1663 | return err; | 1693 | return err; |
1664 | } | 1694 | } |
1665 | 1695 | ||
1666 | int mthca_SW2HW_SRQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox, | 1696 | int mthca_SW2HW_SRQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox, |
1667 | int srq_num, u8 *status) | 1697 | int srq_num) |
1668 | { | 1698 | { |
1669 | return mthca_cmd(dev, mailbox->dma, srq_num, 0, CMD_SW2HW_SRQ, | 1699 | return mthca_cmd(dev, mailbox->dma, srq_num, 0, CMD_SW2HW_SRQ, |
1670 | CMD_TIME_CLASS_A, status); | 1700 | CMD_TIME_CLASS_A); |
1671 | } | 1701 | } |
1672 | 1702 | ||
1673 | int mthca_HW2SW_SRQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox, | 1703 | int mthca_HW2SW_SRQ(struct mthca_dev *dev, struct mthca_mailbox *mailbox, |
1674 | int srq_num, u8 *status) | 1704 | int srq_num) |
1675 | { | 1705 | { |
1676 | return mthca_cmd_box(dev, 0, mailbox->dma, srq_num, 0, | 1706 | return mthca_cmd_box(dev, 0, mailbox->dma, srq_num, 0, |
1677 | CMD_HW2SW_SRQ, | 1707 | CMD_HW2SW_SRQ, |
1678 | CMD_TIME_CLASS_A, status); | 1708 | CMD_TIME_CLASS_A); |
1679 | } | 1709 | } |
1680 | 1710 | ||
1681 | int mthca_QUERY_SRQ(struct mthca_dev *dev, u32 num, | 1711 | int mthca_QUERY_SRQ(struct mthca_dev *dev, u32 num, |
1682 | struct mthca_mailbox *mailbox, u8 *status) | 1712 | struct mthca_mailbox *mailbox) |
1683 | { | 1713 | { |
1684 | return mthca_cmd_box(dev, 0, mailbox->dma, num, 0, | 1714 | return mthca_cmd_box(dev, 0, mailbox->dma, num, 0, |
1685 | CMD_QUERY_SRQ, CMD_TIME_CLASS_A, status); | 1715 | CMD_QUERY_SRQ, CMD_TIME_CLASS_A); |
1686 | } | 1716 | } |
1687 | 1717 | ||
1688 | int mthca_ARM_SRQ(struct mthca_dev *dev, int srq_num, int limit, u8 *status) | 1718 | int mthca_ARM_SRQ(struct mthca_dev *dev, int srq_num, int limit) |
1689 | { | 1719 | { |
1690 | return mthca_cmd(dev, limit, srq_num, 0, CMD_ARM_SRQ, | 1720 | return mthca_cmd(dev, limit, srq_num, 0, CMD_ARM_SRQ, |
1691 | CMD_TIME_CLASS_B, status); | 1721 | CMD_TIME_CLASS_B); |
1692 | } | 1722 | } |
1693 | 1723 | ||
1694 | int mthca_MODIFY_QP(struct mthca_dev *dev, enum ib_qp_state cur, | 1724 | int mthca_MODIFY_QP(struct mthca_dev *dev, enum ib_qp_state cur, |
1695 | enum ib_qp_state next, u32 num, int is_ee, | 1725 | enum ib_qp_state next, u32 num, int is_ee, |
1696 | struct mthca_mailbox *mailbox, u32 optmask, | 1726 | struct mthca_mailbox *mailbox, u32 optmask) |
1697 | u8 *status) | ||
1698 | { | 1727 | { |
1699 | static const u16 op[IB_QPS_ERR + 1][IB_QPS_ERR + 1] = { | 1728 | static const u16 op[IB_QPS_ERR + 1][IB_QPS_ERR + 1] = { |
1700 | [IB_QPS_RESET] = { | 1729 | [IB_QPS_RESET] = { |
@@ -1755,7 +1784,7 @@ int mthca_MODIFY_QP(struct mthca_dev *dev, enum ib_qp_state cur, | |||
1755 | 1784 | ||
1756 | err = mthca_cmd_box(dev, 0, mailbox ? mailbox->dma : 0, | 1785 | err = mthca_cmd_box(dev, 0, mailbox ? mailbox->dma : 0, |
1757 | (!!is_ee << 24) | num, op_mod, | 1786 | (!!is_ee << 24) | num, op_mod, |
1758 | op[cur][next], CMD_TIME_CLASS_C, status); | 1787 | op[cur][next], CMD_TIME_CLASS_C); |
1759 | 1788 | ||
1760 | if (0 && mailbox) { | 1789 | if (0 && mailbox) { |
1761 | int i; | 1790 | int i; |
@@ -1789,21 +1818,20 @@ int mthca_MODIFY_QP(struct mthca_dev *dev, enum ib_qp_state cur, | |||
1789 | } | 1818 | } |
1790 | 1819 | ||
1791 | err = mthca_cmd(dev, mailbox->dma, optmask | (!!is_ee << 24) | num, | 1820 | err = mthca_cmd(dev, mailbox->dma, optmask | (!!is_ee << 24) | num, |
1792 | op_mod, op[cur][next], CMD_TIME_CLASS_C, status); | 1821 | op_mod, op[cur][next], CMD_TIME_CLASS_C); |
1793 | } | 1822 | } |
1794 | 1823 | ||
1795 | return err; | 1824 | return err; |
1796 | } | 1825 | } |
1797 | 1826 | ||
1798 | int mthca_QUERY_QP(struct mthca_dev *dev, u32 num, int is_ee, | 1827 | int mthca_QUERY_QP(struct mthca_dev *dev, u32 num, int is_ee, |
1799 | struct mthca_mailbox *mailbox, u8 *status) | 1828 | struct mthca_mailbox *mailbox) |
1800 | { | 1829 | { |
1801 | return mthca_cmd_box(dev, 0, mailbox->dma, (!!is_ee << 24) | num, 0, | 1830 | return mthca_cmd_box(dev, 0, mailbox->dma, (!!is_ee << 24) | num, 0, |
1802 | CMD_QUERY_QPEE, CMD_TIME_CLASS_A, status); | 1831 | CMD_QUERY_QPEE, CMD_TIME_CLASS_A); |
1803 | } | 1832 | } |
1804 | 1833 | ||
1805 | int mthca_CONF_SPECIAL_QP(struct mthca_dev *dev, int type, u32 qpn, | 1834 | int mthca_CONF_SPECIAL_QP(struct mthca_dev *dev, int type, u32 qpn) |
1806 | u8 *status) | ||
1807 | { | 1835 | { |
1808 | u8 op_mod; | 1836 | u8 op_mod; |
1809 | 1837 | ||
@@ -1825,12 +1853,12 @@ int mthca_CONF_SPECIAL_QP(struct mthca_dev *dev, int type, u32 qpn, | |||
1825 | } | 1853 | } |
1826 | 1854 | ||
1827 | return mthca_cmd(dev, 0, qpn, op_mod, CMD_CONF_SPECIAL_QP, | 1855 | return mthca_cmd(dev, 0, qpn, op_mod, CMD_CONF_SPECIAL_QP, |
1828 | CMD_TIME_CLASS_B, status); | 1856 | CMD_TIME_CLASS_B); |
1829 | } | 1857 | } |
1830 | 1858 | ||
1831 | int mthca_MAD_IFC(struct mthca_dev *dev, int ignore_mkey, int ignore_bkey, | 1859 | int mthca_MAD_IFC(struct mthca_dev *dev, int ignore_mkey, int ignore_bkey, |
1832 | int port, struct ib_wc *in_wc, struct ib_grh *in_grh, | 1860 | int port, struct ib_wc *in_wc, struct ib_grh *in_grh, |
1833 | void *in_mad, void *response_mad, u8 *status) | 1861 | void *in_mad, void *response_mad) |
1834 | { | 1862 | { |
1835 | struct mthca_mailbox *inmailbox, *outmailbox; | 1863 | struct mthca_mailbox *inmailbox, *outmailbox; |
1836 | void *inbox; | 1864 | void *inbox; |
@@ -1897,9 +1925,9 @@ int mthca_MAD_IFC(struct mthca_dev *dev, int ignore_mkey, int ignore_bkey, | |||
1897 | 1925 | ||
1898 | err = mthca_cmd_box(dev, inmailbox->dma, outmailbox->dma, | 1926 | err = mthca_cmd_box(dev, inmailbox->dma, outmailbox->dma, |
1899 | in_modifier, op_modifier, | 1927 | in_modifier, op_modifier, |
1900 | CMD_MAD_IFC, CMD_TIME_CLASS_C, status); | 1928 | CMD_MAD_IFC, CMD_TIME_CLASS_C); |
1901 | 1929 | ||
1902 | if (!err && !*status) | 1930 | if (!err) |
1903 | memcpy(response_mad, outmailbox->buf, 256); | 1931 | memcpy(response_mad, outmailbox->buf, 256); |
1904 | 1932 | ||
1905 | mthca_free_mailbox(dev, inmailbox); | 1933 | mthca_free_mailbox(dev, inmailbox); |
@@ -1908,33 +1936,33 @@ int mthca_MAD_IFC(struct mthca_dev *dev, int ignore_mkey, int ignore_bkey, | |||
1908 | } | 1936 | } |
1909 | 1937 | ||
1910 | int mthca_READ_MGM(struct mthca_dev *dev, int index, | 1938 | int mthca_READ_MGM(struct mthca_dev *dev, int index, |
1911 | struct mthca_mailbox *mailbox, u8 *status) | 1939 | struct mthca_mailbox *mailbox) |
1912 | { | 1940 | { |
1913 | return mthca_cmd_box(dev, 0, mailbox->dma, index, 0, | 1941 | return mthca_cmd_box(dev, 0, mailbox->dma, index, 0, |
1914 | CMD_READ_MGM, CMD_TIME_CLASS_A, status); | 1942 | CMD_READ_MGM, CMD_TIME_CLASS_A); |
1915 | } | 1943 | } |
1916 | 1944 | ||
1917 | int mthca_WRITE_MGM(struct mthca_dev *dev, int index, | 1945 | int mthca_WRITE_MGM(struct mthca_dev *dev, int index, |
1918 | struct mthca_mailbox *mailbox, u8 *status) | 1946 | struct mthca_mailbox *mailbox) |
1919 | { | 1947 | { |
1920 | return mthca_cmd(dev, mailbox->dma, index, 0, CMD_WRITE_MGM, | 1948 | return mthca_cmd(dev, mailbox->dma, index, 0, CMD_WRITE_MGM, |
1921 | CMD_TIME_CLASS_A, status); | 1949 | CMD_TIME_CLASS_A); |
1922 | } | 1950 | } |
1923 | 1951 | ||
1924 | int mthca_MGID_HASH(struct mthca_dev *dev, struct mthca_mailbox *mailbox, | 1952 | int mthca_MGID_HASH(struct mthca_dev *dev, struct mthca_mailbox *mailbox, |
1925 | u16 *hash, u8 *status) | 1953 | u16 *hash) |
1926 | { | 1954 | { |
1927 | u64 imm; | 1955 | u64 imm; |
1928 | int err; | 1956 | int err; |
1929 | 1957 | ||
1930 | err = mthca_cmd_imm(dev, mailbox->dma, &imm, 0, 0, CMD_MGID_HASH, | 1958 | err = mthca_cmd_imm(dev, mailbox->dma, &imm, 0, 0, CMD_MGID_HASH, |
1931 | CMD_TIME_CLASS_A, status); | 1959 | CMD_TIME_CLASS_A); |
1932 | 1960 | ||
1933 | *hash = imm; | 1961 | *hash = imm; |
1934 | return err; | 1962 | return err; |
1935 | } | 1963 | } |
1936 | 1964 | ||
1937 | int mthca_NOP(struct mthca_dev *dev, u8 *status) | 1965 | int mthca_NOP(struct mthca_dev *dev) |
1938 | { | 1966 | { |
1939 | return mthca_cmd(dev, 0, 0x1f, 0, CMD_NOP, msecs_to_jiffies(100), status); | 1967 | return mthca_cmd(dev, 0, 0x1f, 0, CMD_NOP, msecs_to_jiffies(100)); |
1940 | } | 1968 | } |