diff options
author | Goldwyn Rodrigues <rgoldwyn@suse.de> | 2011-07-07 13:20:40 -0400 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2011-07-15 16:33:20 -0400 |
commit | cdb73db0b6bf7a1bcf5c788f0c8f803facb6e517 (patch) | |
tree | 3ed4a3b8eb06b63d29643920db97054b0db43051 /drivers/infiniband/hw/mthca/mthca_cq.c | |
parent | 620917de59eeb934b9f8cf35cc2d95c1ac8ed0fc (diff) |
IB/mthca: Stop returning separate error and status from FW commands
Instead of having firmware command functions return an error and also
a status, leading to code like:
err = mthca_FW_COMMAND(..., &status);
if (err)
goto out;
if (status) {
err = -E...;
goto out;
}
all over the place, just handle the FW status inside the FW command
handling code (the way mlx4 does it), so we can simply write:
err = mthca_FW_COMMAND(...);
if (err)
goto out;
In addition to simplifying the source code, this also saves a healthy
chunk of text:
add/remove: 0/0 grow/shrink: 10/88 up/down: 510/-3357 (-2847)
function old new delta
static.trans_table 324 584 +260
mthca_cmd_poll 352 477 +125
mthca_cmd_wait 511 567 +56
mthca_table_put 213 240 +27
mthca_cleanup_db_tab 372 387 +15
__mthca_remove_one 314 323 +9
mthca_cleanup_user_db_tab 275 283 +8
__mthca_init_one 1738 1746 +8
mthca_cleanup 20 21 +1
mthca_MAD_IFC 1081 1082 +1
mthca_MGID_HASH 43 40 -3
mthca_MAP_ICM_AUX 23 20 -3
mthca_MAP_ICM 19 16 -3
mthca_MAP_FA 23 20 -3
mthca_READ_MGM 43 38 -5
mthca_QUERY_SRQ 43 38 -5
mthca_QUERY_QP 59 54 -5
mthca_HW2SW_SRQ 43 38 -5
mthca_HW2SW_MPT 60 55 -5
mthca_HW2SW_EQ 43 38 -5
mthca_HW2SW_CQ 43 38 -5
mthca_free_icm_table 120 114 -6
mthca_query_srq 214 206 -8
mthca_free_qp 662 654 -8
mthca_cmd 38 28 -10
mthca_alloc_db 1321 1311 -10
mthca_setup_hca 1067 1055 -12
mthca_WRITE_MTT 35 22 -13
mthca_WRITE_MGM 40 27 -13
mthca_UNMAP_ICM_AUX 36 23 -13
mthca_UNMAP_FA 36 23 -13
mthca_SYS_DIS 36 23 -13
mthca_SYNC_TPT 36 23 -13
mthca_SW2HW_SRQ 35 22 -13
mthca_SW2HW_MPT 35 22 -13
mthca_SW2HW_EQ 35 22 -13
mthca_SW2HW_CQ 35 22 -13
mthca_RUN_FW 36 23 -13
mthca_DISABLE_LAM 36 23 -13
mthca_CLOSE_IB 36 23 -13
mthca_CLOSE_HCA 38 25 -13
mthca_ARM_SRQ 39 26 -13
mthca_free_icms 178 164 -14
mthca_QUERY_DDR 389 375 -14
mthca_resize_cq 1063 1048 -15
mthca_unmap_eq_icm 123 107 -16
mthca_map_eq_icm 396 380 -16
mthca_cmd_box 90 74 -16
mthca_SET_IB 433 417 -16
mthca_RESIZE_CQ 369 353 -16
mthca_MAP_ICM_page 240 224 -16
mthca_MAP_EQ 183 167 -16
mthca_INIT_IB 473 457 -16
mthca_INIT_HCA 745 729 -16
mthca_map_user_db 816 798 -18
mthca_SYS_EN 157 139 -18
mthca_cleanup_qp_table 78 59 -19
mthca_cleanup_eq_table 168 149 -19
mthca_UNMAP_ICM 143 121 -22
mthca_modify_srq 172 149 -23
mthca_unmap_fmr 198 174 -24
mthca_query_qp 814 790 -24
mthca_query_pkey 343 319 -24
mthca_SET_ICM_SIZE 34 10 -24
mthca_QUERY_DEV_LIM 1870 1846 -24
mthca_map_cmd 1130 1105 -25
mthca_ENABLE_LAM 401 375 -26
mthca_modify_port 247 220 -27
mthca_query_device 884 850 -34
mthca_NOP 75 41 -34
mthca_table_get 287 249 -38
mthca_init_qp_table 333 293 -40
mthca_MODIFY_QP 348 308 -40
mthca_close_hca 131 89 -42
mthca_free_eq 435 390 -45
mthca_query_port 755 705 -50
mthca_free_cq 581 528 -53
mthca_alloc_icm_table 578 524 -54
mthca_multicast_attach 1041 986 -55
mthca_init_hca 326 271 -55
mthca_query_gid 487 431 -56
mthca_free_srq 524 468 -56
mthca_free_mr 168 111 -57
mthca_create_eq 1560 1501 -59
mthca_multicast_detach 790 728 -62
mthca_write_mtt 918 854 -64
mthca_register_device 1406 1342 -64
mthca_fmr_alloc 947 883 -64
mthca_mr_alloc 652 582 -70
mthca_process_mad 1242 1164 -78
mthca_dev_lim 910 830 -80
find_mgm 482 400 -82
mthca_modify_qp 3852 3753 -99
mthca_init_cq 1281 1181 -100
mthca_alloc_srq 1719 1610 -109
mthca_init_eq_table 1807 1679 -128
mthca_init_tavor 761 491 -270
mthca_init_arbel 2617 2098 -519
Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.de>
Diffstat (limited to 'drivers/infiniband/hw/mthca/mthca_cq.c')
-rw-r--r-- | drivers/infiniband/hw/mthca/mthca_cq.c | 15 |
1 files changed, 2 insertions, 13 deletions
diff --git a/drivers/infiniband/hw/mthca/mthca_cq.c b/drivers/infiniband/hw/mthca/mthca_cq.c index 18ee3fa4b88c..53157b86a1ba 100644 --- a/drivers/infiniband/hw/mthca/mthca_cq.c +++ b/drivers/infiniband/hw/mthca/mthca_cq.c | |||
@@ -779,7 +779,6 @@ int mthca_init_cq(struct mthca_dev *dev, int nent, | |||
779 | struct mthca_mailbox *mailbox; | 779 | struct mthca_mailbox *mailbox; |
780 | struct mthca_cq_context *cq_context; | 780 | struct mthca_cq_context *cq_context; |
781 | int err = -ENOMEM; | 781 | int err = -ENOMEM; |
782 | u8 status; | ||
783 | 782 | ||
784 | cq->ibcq.cqe = nent - 1; | 783 | cq->ibcq.cqe = nent - 1; |
785 | cq->is_kernel = !ctx; | 784 | cq->is_kernel = !ctx; |
@@ -847,19 +846,12 @@ int mthca_init_cq(struct mthca_dev *dev, int nent, | |||
847 | cq_context->state_db = cpu_to_be32(cq->arm_db_index); | 846 | cq_context->state_db = cpu_to_be32(cq->arm_db_index); |
848 | } | 847 | } |
849 | 848 | ||
850 | err = mthca_SW2HW_CQ(dev, mailbox, cq->cqn, &status); | 849 | err = mthca_SW2HW_CQ(dev, mailbox, cq->cqn); |
851 | if (err) { | 850 | if (err) { |
852 | mthca_warn(dev, "SW2HW_CQ failed (%d)\n", err); | 851 | mthca_warn(dev, "SW2HW_CQ failed (%d)\n", err); |
853 | goto err_out_free_mr; | 852 | goto err_out_free_mr; |
854 | } | 853 | } |
855 | 854 | ||
856 | if (status) { | ||
857 | mthca_warn(dev, "SW2HW_CQ returned status 0x%02x\n", | ||
858 | status); | ||
859 | err = -EINVAL; | ||
860 | goto err_out_free_mr; | ||
861 | } | ||
862 | |||
863 | spin_lock_irq(&dev->cq_table.lock); | 855 | spin_lock_irq(&dev->cq_table.lock); |
864 | if (mthca_array_set(&dev->cq_table.cq, | 856 | if (mthca_array_set(&dev->cq_table.cq, |
865 | cq->cqn & (dev->limits.num_cqs - 1), | 857 | cq->cqn & (dev->limits.num_cqs - 1), |
@@ -915,7 +907,6 @@ void mthca_free_cq(struct mthca_dev *dev, | |||
915 | { | 907 | { |
916 | struct mthca_mailbox *mailbox; | 908 | struct mthca_mailbox *mailbox; |
917 | int err; | 909 | int err; |
918 | u8 status; | ||
919 | 910 | ||
920 | mailbox = mthca_alloc_mailbox(dev, GFP_KERNEL); | 911 | mailbox = mthca_alloc_mailbox(dev, GFP_KERNEL); |
921 | if (IS_ERR(mailbox)) { | 912 | if (IS_ERR(mailbox)) { |
@@ -923,11 +914,9 @@ void mthca_free_cq(struct mthca_dev *dev, | |||
923 | return; | 914 | return; |
924 | } | 915 | } |
925 | 916 | ||
926 | err = mthca_HW2SW_CQ(dev, mailbox, cq->cqn, &status); | 917 | err = mthca_HW2SW_CQ(dev, mailbox, cq->cqn); |
927 | if (err) | 918 | if (err) |
928 | mthca_warn(dev, "HW2SW_CQ failed (%d)\n", err); | 919 | mthca_warn(dev, "HW2SW_CQ failed (%d)\n", err); |
929 | else if (status) | ||
930 | mthca_warn(dev, "HW2SW_CQ returned status 0x%02x\n", status); | ||
931 | 920 | ||
932 | if (0) { | 921 | if (0) { |
933 | __be32 *ctx = mailbox->buf; | 922 | __be32 *ctx = mailbox->buf; |