mlx4_core: Multiple port type support
Multi-protocol adapters support different port types. Each consumer of mlx4_core queries for supported port types; in particular mlx4_ib can no longer assume that all physical ports belong to it. Port type is configured through a sysfs interface. When the type of a port is changed, all mlx4 interfaces are unregistered, and then registered again with the new port types. Signed-off-by: Yevgeny Petrilin <yevgenyp@mellanox.co.il> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
committed by
Roland Dreier
parent
2a2336f822
commit
7ff93f8b7e
@@ -88,6 +88,7 @@ static void dump_dev_cap_flags(struct mlx4_dev *dev, u32 flags)
|
||||
[ 8] = "P_Key violation counter",
|
||||
[ 9] = "Q_Key violation counter",
|
||||
[10] = "VMM",
|
||||
[12] = "DPDP",
|
||||
[16] = "MW support",
|
||||
[17] = "APM support",
|
||||
[18] = "Atomic ops support",
|
||||
@@ -354,6 +355,7 @@ int mlx4_QUERY_DEV_CAP(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
|
||||
dev_cap->max_pkeys[i] = 1 << (field & 0xf);
|
||||
}
|
||||
} else {
|
||||
#define QUERY_PORT_SUPPORTED_TYPE_OFFSET 0x00
|
||||
#define QUERY_PORT_MTU_OFFSET 0x01
|
||||
#define QUERY_PORT_ETH_MTU_OFFSET 0x02
|
||||
#define QUERY_PORT_WIDTH_OFFSET 0x06
|
||||
@@ -368,6 +370,8 @@ int mlx4_QUERY_DEV_CAP(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
|
||||
if (err)
|
||||
goto out;
|
||||
|
||||
MLX4_GET(field, outbox, QUERY_PORT_SUPPORTED_TYPE_OFFSET);
|
||||
dev_cap->supported_port_types[i] = field & 3;
|
||||
MLX4_GET(field, outbox, QUERY_PORT_MTU_OFFSET);
|
||||
dev_cap->ib_mtu[i] = field & 0xf;
|
||||
MLX4_GET(field, outbox, QUERY_PORT_WIDTH_OFFSET);
|
||||
|
Reference in New Issue
Block a user