aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOr Gerlitz <ogerlitz@mellanox.com>2014-12-14 09:18:05 -0500
committerDavid S. Miller <davem@davemloft.net>2014-12-15 11:34:54 -0500
commitc78e25edbf3ed87b23709c9b0732be5fa00d5f9f (patch)
treed585c494c1abfbc156da51e5872930542128667a
parentda315679e80635021e98de1306ff4eee0759ba57 (diff)
net/mlx4_core: Avoid double dumping of the PF device capabilities
To support asymmetric EQ allocations, we should query the device capabilities prior to enabling SRIOV. As a side effect of adding that, we are dumping the PF device capabilities twice. Avoid that by moving the printing into a helper function which is called once. Fixes: 7ae0e400cd93 ('net/mlx4_core: Flexible (asymmetric) allocation of EQs and MSI-X vectors for PF/VFs') Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/fw.c26
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/fw.h1
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/main.c1
3 files changed, 17 insertions, 11 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/fw.c b/drivers/net/ethernet/mellanox/mlx4/fw.c
index ef3b95bac2ad..51807bb7546e 100644
--- a/drivers/net/ethernet/mellanox/mlx4/fw.c
+++ b/drivers/net/ethernet/mellanox/mlx4/fw.c
@@ -787,11 +787,8 @@ int mlx4_QUERY_DEV_CAP(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
787 if ((1 << (field & 0x3f)) > (PAGE_SIZE / dev_cap->bf_reg_size)) 787 if ((1 << (field & 0x3f)) > (PAGE_SIZE / dev_cap->bf_reg_size))
788 field = 3; 788 field = 3;
789 dev_cap->bf_regs_per_page = 1 << (field & 0x3f); 789 dev_cap->bf_regs_per_page = 1 << (field & 0x3f);
790 mlx4_dbg(dev, "BlueFlame available (reg size %d, regs/page %d)\n",
791 dev_cap->bf_reg_size, dev_cap->bf_regs_per_page);
792 } else { 790 } else {
793 dev_cap->bf_reg_size = 0; 791 dev_cap->bf_reg_size = 0;
794 mlx4_dbg(dev, "BlueFlame not available\n");
795 } 792 }
796 793
797 MLX4_GET(field, outbox, QUERY_DEV_CAP_MAX_SG_SQ_OFFSET); 794 MLX4_GET(field, outbox, QUERY_DEV_CAP_MAX_SG_SQ_OFFSET);
@@ -902,9 +899,6 @@ int mlx4_QUERY_DEV_CAP(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
902 goto out; 899 goto out;
903 } 900 }
904 901
905 mlx4_dbg(dev, "Base MM extensions: flags %08x, rsvd L_Key %08x\n",
906 dev_cap->bmme_flags, dev_cap->reserved_lkey);
907
908 /* 902 /*
909 * Each UAR has 4 EQ doorbells; so if a UAR is reserved, then 903 * Each UAR has 4 EQ doorbells; so if a UAR is reserved, then
910 * we can't use any EQs whose doorbell falls on that page, 904 * we can't use any EQs whose doorbell falls on that page,
@@ -916,6 +910,21 @@ int mlx4_QUERY_DEV_CAP(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
916 else 910 else
917 dev_cap->flags2 |= MLX4_DEV_CAP_FLAG2_SYS_EQS; 911 dev_cap->flags2 |= MLX4_DEV_CAP_FLAG2_SYS_EQS;
918 912
913out:
914 mlx4_free_cmd_mailbox(dev, mailbox);
915 return err;
916}
917
918void mlx4_dev_cap_dump(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
919{
920 if (dev_cap->bf_reg_size > 0)
921 mlx4_dbg(dev, "BlueFlame available (reg size %d, regs/page %d)\n",
922 dev_cap->bf_reg_size, dev_cap->bf_regs_per_page);
923 else
924 mlx4_dbg(dev, "BlueFlame not available\n");
925
926 mlx4_dbg(dev, "Base MM extensions: flags %08x, rsvd L_Key %08x\n",
927 dev_cap->bmme_flags, dev_cap->reserved_lkey);
919 mlx4_dbg(dev, "Max ICM size %lld MB\n", 928 mlx4_dbg(dev, "Max ICM size %lld MB\n",
920 (unsigned long long) dev_cap->max_icm_sz >> 20); 929 (unsigned long long) dev_cap->max_icm_sz >> 20);
921 mlx4_dbg(dev, "Max QPs: %d, reserved QPs: %d, entry size: %d\n", 930 mlx4_dbg(dev, "Max QPs: %d, reserved QPs: %d, entry size: %d\n",
@@ -949,13 +958,8 @@ int mlx4_QUERY_DEV_CAP(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
949 dev_cap->dmfs_high_rate_qpn_base); 958 dev_cap->dmfs_high_rate_qpn_base);
950 mlx4_dbg(dev, "DMFS high rate steer QPn range: %d\n", 959 mlx4_dbg(dev, "DMFS high rate steer QPn range: %d\n",
951 dev_cap->dmfs_high_rate_qpn_range); 960 dev_cap->dmfs_high_rate_qpn_range);
952
953 dump_dev_cap_flags(dev, dev_cap->flags); 961 dump_dev_cap_flags(dev, dev_cap->flags);
954 dump_dev_cap_flags2(dev, dev_cap->flags2); 962 dump_dev_cap_flags2(dev, dev_cap->flags2);
955
956out:
957 mlx4_free_cmd_mailbox(dev, mailbox);
958 return err;
959} 963}
960 964
961int mlx4_QUERY_PORT(struct mlx4_dev *dev, int port, struct mlx4_port_cap *port_cap) 965int mlx4_QUERY_PORT(struct mlx4_dev *dev, int port, struct mlx4_port_cap *port_cap)
diff --git a/drivers/net/ethernet/mellanox/mlx4/fw.h b/drivers/net/ethernet/mellanox/mlx4/fw.h
index 794e2826609a..62562b60fa87 100644
--- a/drivers/net/ethernet/mellanox/mlx4/fw.h
+++ b/drivers/net/ethernet/mellanox/mlx4/fw.h
@@ -224,6 +224,7 @@ struct mlx4_set_ib_param {
224 u32 cap_mask; 224 u32 cap_mask;
225}; 225};
226 226
227void mlx4_dev_cap_dump(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap);
227int mlx4_QUERY_DEV_CAP(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap); 228int mlx4_QUERY_DEV_CAP(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap);
228int mlx4_QUERY_PORT(struct mlx4_dev *dev, int port, struct mlx4_port_cap *port_cap); 229int mlx4_QUERY_PORT(struct mlx4_dev *dev, int port, struct mlx4_port_cap *port_cap);
229int mlx4_QUERY_FUNC_CAP(struct mlx4_dev *dev, u8 gen_or_port, 230int mlx4_QUERY_FUNC_CAP(struct mlx4_dev *dev, u8 gen_or_port,
diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c
index c2ef266ad7c1..b935bf3d0bb3 100644
--- a/drivers/net/ethernet/mellanox/mlx4/main.c
+++ b/drivers/net/ethernet/mellanox/mlx4/main.c
@@ -305,6 +305,7 @@ static int mlx4_dev_cap(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
305 mlx4_err(dev, "QUERY_DEV_CAP command failed, aborting\n"); 305 mlx4_err(dev, "QUERY_DEV_CAP command failed, aborting\n");
306 return err; 306 return err;
307 } 307 }
308 mlx4_dev_cap_dump(dev, dev_cap);
308 309
309 if (dev_cap->min_page_sz > PAGE_SIZE) { 310 if (dev_cap->min_page_sz > PAGE_SIZE) {
310 mlx4_err(dev, "HCA minimum page size of %d bigger than kernel PAGE_SIZE of %ld, aborting\n", 311 mlx4_err(dev, "HCA minimum page size of %d bigger than kernel PAGE_SIZE of %ld, aborting\n",