aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/mellanox/mlx4/main.c
diff options
context:
space:
mode:
authorEugenia Emantayev <eugenia@mellanox.co.il>2011-12-12 23:16:02 -0500
committerDavid S. Miller <davem@davemloft.net>2011-12-13 13:56:07 -0500
commit0ec2c0f86d31ab36547307f133b0016006bdc6b5 (patch)
treeba799abcd07816fc7ca17b1f1b1f22e2dec31848 /drivers/net/ethernet/mellanox/mlx4/main.c
parent8e59d254feb3826230d19fb643691c89eabd71f8 (diff)
mlx4: Traffic steering management support for SRIOV
Let multicast/unicast attaching flow go through resource tracker. The PF is the one responsible for managing all the steering entries. Define and use module parameter that determines the number of qps per multicast group. Minor changes in function calls according to changed prototype. Signed-off-by: Eugenia Emantayev <eugenia@mellanox.co.il> Signed-off-by: Yevgeny Petrilin <yevgenyp@mellanox.co.il> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/mellanox/mlx4/main.c')
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/main.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c
index 64d03f8b23ab..8be56326b04a 100644
--- a/drivers/net/ethernet/mellanox/mlx4/main.c
+++ b/drivers/net/ethernet/mellanox/mlx4/main.c
@@ -75,6 +75,14 @@ MODULE_PARM_DESC(msi_x, "attempt to use MSI-X if nonzero");
75 75
76#endif /* CONFIG_PCI_MSI */ 76#endif /* CONFIG_PCI_MSI */
77 77
78int mlx4_log_num_mgm_entry_size = 10;
79module_param_named(log_num_mgm_entry_size,
80 mlx4_log_num_mgm_entry_size, int, 0444);
81MODULE_PARM_DESC(log_num_mgm_entry_size, "log mgm size, that defines the num"
82 " of qp per mcg, for example:"
83 " 10 gives 248.range: 9<="
84 " log_num_mgm_entry_size <= 12");
85
78static char mlx4_version[] __devinitdata = 86static char mlx4_version[] __devinitdata =
79 DRV_NAME ": Mellanox ConnectX core driver v" 87 DRV_NAME ": Mellanox ConnectX core driver v"
80 DRV_VERSION " (" DRV_RELDATE ")\n"; 88 DRV_VERSION " (" DRV_RELDATE ")\n";
@@ -205,7 +213,7 @@ static int mlx4_dev_cap(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
205 dev->caps.reserved_srqs = dev_cap->reserved_srqs; 213 dev->caps.reserved_srqs = dev_cap->reserved_srqs;
206 dev->caps.max_sq_desc_sz = dev_cap->max_sq_desc_sz; 214 dev->caps.max_sq_desc_sz = dev_cap->max_sq_desc_sz;
207 dev->caps.max_rq_desc_sz = dev_cap->max_rq_desc_sz; 215 dev->caps.max_rq_desc_sz = dev_cap->max_rq_desc_sz;
208 dev->caps.num_qp_per_mgm = MLX4_QP_PER_MGM; 216 dev->caps.num_qp_per_mgm = mlx4_get_qp_per_mgm(dev);
209 /* 217 /*
210 * Subtract 1 from the limit because we need to allocate a 218 * Subtract 1 from the limit because we need to allocate a
211 * spare CQE so the HCA HW can tell the difference between an 219 * spare CQE so the HCA HW can tell the difference between an
@@ -648,7 +656,8 @@ static int mlx4_init_icm(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap,
648 * and it's a lot easier than trying to track ref counts. 656 * and it's a lot easier than trying to track ref counts.
649 */ 657 */
650 err = mlx4_init_icm_table(dev, &priv->mcg_table.table, 658 err = mlx4_init_icm_table(dev, &priv->mcg_table.table,
651 init_hca->mc_base, MLX4_MGM_ENTRY_SIZE, 659 init_hca->mc_base,
660 mlx4_get_mgm_entry_size(dev),
652 dev->caps.num_mgms + dev->caps.num_amgms, 661 dev->caps.num_mgms + dev->caps.num_amgms,
653 dev->caps.num_mgms + dev->caps.num_amgms, 662 dev->caps.num_mgms + dev->caps.num_amgms,
654 0, 0); 663 0, 0);