Commit e9a7ff3a authored by Yishai Hadas's avatar Yishai Hadas Committed by Doug Ledford

net/mlx4_core: Return the admin alias GUID upon host view request

Return the admin alias GUID value upon a GET request via HOST. We do this so
that the GUID value requested by the admin is returned even if the SM has not
yet approved this GUID (e.g. the SM is down).

Note that this does not create a problem, since the virtual port will remain
down until the SM does ACK the requested GUID value.
Signed-off-by: default avatarYishai Hadas <yishaih@mellanox.com>
Signed-off-by: default avatarJack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent a0667a83
...@@ -939,21 +939,34 @@ static int mlx4_MAD_IFC_wrapper(struct mlx4_dev *dev, int slave, ...@@ -939,21 +939,34 @@ static int mlx4_MAD_IFC_wrapper(struct mlx4_dev *dev, int slave,
return err; return err;
} }
if (smp->attr_id == IB_SMP_ATTR_GUID_INFO) { if (smp->attr_id == IB_SMP_ATTR_GUID_INFO) {
/* compute slave's gid block */ __be64 guid = mlx4_get_admin_guid(dev, slave,
smp->attr_mod = cpu_to_be32(slave / 8); port);
/* execute cmd */
err = mlx4_cmd_box(dev, inbox->dma, outbox->dma, /* set the PF admin guid to the FW/HW burned
vhcr->in_modifier, opcode_modifier, * GUID, if it wasn't yet set
vhcr->op, MLX4_CMD_TIME_CLASS_C, MLX4_CMD_NATIVE); */
if (!err) { if (slave == 0 && guid == 0) {
/* if needed, move slave gid to index 0 */ smp->attr_mod = 0;
if (slave % 8) err = mlx4_cmd_box(dev,
memcpy(outsmp->data, inbox->dma,
outsmp->data + (slave % 8) * 8, 8); outbox->dma,
/* delete all other gids */ vhcr->in_modifier,
memset(outsmp->data + 8, 0, 56); opcode_modifier,
} vhcr->op,
MLX4_CMD_TIME_CLASS_C,
MLX4_CMD_NATIVE);
if (err)
return err; return err;
mlx4_set_admin_guid(dev,
*(__be64 *)outsmp->
data, slave, port);
} else {
memcpy(outsmp->data, &guid, 8);
}
/* clean all other gids */
memset(outsmp->data + 8, 0, 56);
return 0;
} }
if (smp->attr_id == IB_SMP_ATTR_NODE_INFO) { if (smp->attr_id == IB_SMP_ATTR_NODE_INFO) {
err = mlx4_cmd_box(dev, inbox->dma, outbox->dma, err = mlx4_cmd_box(dev, inbox->dma, outbox->dma,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment