forked from luck/tmp_suning_uos_patched
mlx4_core: Handle multi-physical function devices
MT26468 (PCI ID 0x6764) devices can expose multiple physical functions. The current driver only handles the primary physical function. For other functions, the QUERY_FW firmware command will fail with the CMD_STAT_MULTI_FUNC_REQ error code. Don't try to drive such devices, but print a message saying the driver is skipping those devices rather than just "QUERY_FW command failed." Signed-off-by: Yevgeny Petrilin <yevgenyp@mellanox.co.il> [ Rather than keeping unsupported devices bound to the driver, simply print a more informative error message and exit - Roland ] Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
parent
626f380d0b
commit
cc4ac2e7fb
@ -80,7 +80,9 @@ enum {
|
|||||||
/* Bad management packet (silently discarded): */
|
/* Bad management packet (silently discarded): */
|
||||||
CMD_STAT_BAD_PKT = 0x30,
|
CMD_STAT_BAD_PKT = 0x30,
|
||||||
/* More outstanding CQEs in CQ than new CQ size: */
|
/* More outstanding CQEs in CQ than new CQ size: */
|
||||||
CMD_STAT_BAD_SIZE = 0x40
|
CMD_STAT_BAD_SIZE = 0x40,
|
||||||
|
/* Multi Function device support required: */
|
||||||
|
CMD_STAT_MULTI_FUNC_REQ = 0x50,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
@ -128,6 +130,7 @@ static int mlx4_status_to_errno(u8 status)
|
|||||||
[CMD_STAT_LAM_NOT_PRE] = -EAGAIN,
|
[CMD_STAT_LAM_NOT_PRE] = -EAGAIN,
|
||||||
[CMD_STAT_BAD_PKT] = -EINVAL,
|
[CMD_STAT_BAD_PKT] = -EINVAL,
|
||||||
[CMD_STAT_BAD_SIZE] = -ENOMEM,
|
[CMD_STAT_BAD_SIZE] = -ENOMEM,
|
||||||
|
[CMD_STAT_MULTI_FUNC_REQ] = -EACCES,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (status >= ARRAY_SIZE(trans_table) ||
|
if (status >= ARRAY_SIZE(trans_table) ||
|
||||||
|
@ -729,7 +729,10 @@ static int mlx4_init_hca(struct mlx4_dev *dev)
|
|||||||
|
|
||||||
err = mlx4_QUERY_FW(dev);
|
err = mlx4_QUERY_FW(dev);
|
||||||
if (err) {
|
if (err) {
|
||||||
mlx4_err(dev, "QUERY_FW command failed, aborting.\n");
|
if (err == -EACCES)
|
||||||
|
mlx4_info(dev, "non-primary physical function, skipping.\n");
|
||||||
|
else
|
||||||
|
mlx4_err(dev, "QUERY_FW command failed, aborting.\n");
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user