diff options
Diffstat (limited to 'drivers/net/ethernet/mellanox/mlx4/profile.c')
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/profile.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/profile.c b/drivers/net/ethernet/mellanox/mlx4/profile.c index b83bc928d52a..9ee4725363d5 100644 --- a/drivers/net/ethernet/mellanox/mlx4/profile.c +++ b/drivers/net/ethernet/mellanox/mlx4/profile.c | |||
@@ -237,13 +237,19 @@ u64 mlx4_make_profile(struct mlx4_dev *dev, | |||
237 | init_hca->mtt_base = profile[i].start; | 237 | init_hca->mtt_base = profile[i].start; |
238 | break; | 238 | break; |
239 | case MLX4_RES_MCG: | 239 | case MLX4_RES_MCG: |
240 | dev->caps.num_mgms = profile[i].num >> 1; | ||
241 | dev->caps.num_amgms = profile[i].num >> 1; | ||
242 | init_hca->mc_base = profile[i].start; | 240 | init_hca->mc_base = profile[i].start; |
243 | init_hca->log_mc_entry_sz = | 241 | init_hca->log_mc_entry_sz = |
244 | ilog2(mlx4_get_mgm_entry_size(dev)); | 242 | ilog2(mlx4_get_mgm_entry_size(dev)); |
245 | init_hca->log_mc_table_sz = profile[i].log_num; | 243 | init_hca->log_mc_table_sz = profile[i].log_num; |
246 | init_hca->log_mc_hash_sz = profile[i].log_num - 1; | 244 | if (dev->caps.steering_mode == |
245 | MLX4_STEERING_MODE_DEVICE_MANAGED) { | ||
246 | dev->caps.num_mgms = profile[i].num; | ||
247 | } else { | ||
248 | init_hca->log_mc_hash_sz = | ||
249 | profile[i].log_num - 1; | ||
250 | dev->caps.num_mgms = profile[i].num >> 1; | ||
251 | dev->caps.num_amgms = profile[i].num >> 1; | ||
252 | } | ||
247 | break; | 253 | break; |
248 | default: | 254 | default: |
249 | break; | 255 | break; |