net/mlx4_core: Initialize IB port capabilities for all slaves
With IB SR-IOV, each slave has its own separate copy of the port capabilities flags. For example, the master can run a subnet manager (which causes the IsSM bit to be set in the master's port capabilities) without affecting the port capabilities seen by the slaves (the IsSM bit will be seen as cleared in the slaves). Also add a static inline mlx4_master_func_num() to enhance readability of the code. Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il> Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
parent
00f5ce99dc
commit
2aca1172c2
|
@ -1477,6 +1477,17 @@ static int mlx4_setup_hca(struct mlx4_dev *dev)
|
|||
"with caps = 0\n", port, err);
|
||||
dev->caps.ib_port_def_cap[port] = ib_port_default_caps;
|
||||
|
||||
/* initialize per-slave default ib port capabilities */
|
||||
if (mlx4_is_master(dev)) {
|
||||
int i;
|
||||
for (i = 0; i < dev->num_slaves; i++) {
|
||||
if (i == mlx4_master_func_num(dev))
|
||||
continue;
|
||||
priv->mfunc.master.slave_state[i].ib_cap_mask[port] =
|
||||
ib_port_default_caps;
|
||||
}
|
||||
}
|
||||
|
||||
if (mlx4_is_mfunc(dev))
|
||||
dev->caps.port_ib_mtu[port] = IB_MTU_2048;
|
||||
else
|
||||
|
|
|
@ -633,6 +633,11 @@ struct mlx4_init_port_param {
|
|||
|
||||
void handle_port_mgmt_change_event(struct work_struct *work);
|
||||
|
||||
static inline int mlx4_master_func_num(struct mlx4_dev *dev)
|
||||
{
|
||||
return dev->caps.function;
|
||||
}
|
||||
|
||||
static inline int mlx4_is_master(struct mlx4_dev *dev)
|
||||
{
|
||||
return dev->flags & MLX4_FLAG_MASTER;
|
||||
|
|
Loading…
Reference in a new issue