mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-25 03:55:09 +08:00
mlx4: trigger IB events needed by SMC
The mlx4 driver does not trigger an IB_EVENT_PORT_ACTIVE when the RoCE network interface is activated. When SMC determines the RoCE device port to be used, it checks the port states. This patch triggers IB events for NETDEV_UP and NETDEV_DOWN. Signed-off-by: Ursula Braun <ubraun@linux.ibm.com> Acked-by: Leon Romanovsky <leonro@mellanox.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
parent
9828ca654b
commit
fc6526fba1
@ -2352,6 +2352,32 @@ static void mlx4_ib_scan_netdevs(struct mlx4_ib_dev *ibdev,
|
||||
event == NETDEV_UP || event == NETDEV_CHANGE))
|
||||
update_qps_port = port;
|
||||
|
||||
if (dev == iboe->netdevs[port - 1] &&
|
||||
(event == NETDEV_UP || event == NETDEV_DOWN)) {
|
||||
enum ib_port_state port_state;
|
||||
struct ib_event ibev = { };
|
||||
|
||||
if (ib_get_cached_port_state(&ibdev->ib_dev, port,
|
||||
&port_state))
|
||||
continue;
|
||||
|
||||
if (event == NETDEV_UP &&
|
||||
(port_state != IB_PORT_ACTIVE ||
|
||||
iboe->last_port_state[port - 1] != IB_PORT_DOWN))
|
||||
continue;
|
||||
if (event == NETDEV_DOWN &&
|
||||
(port_state != IB_PORT_DOWN ||
|
||||
iboe->last_port_state[port - 1] != IB_PORT_ACTIVE))
|
||||
continue;
|
||||
iboe->last_port_state[port - 1] = port_state;
|
||||
|
||||
ibev.device = &ibdev->ib_dev;
|
||||
ibev.element.port_num = port;
|
||||
ibev.event = event == NETDEV_UP ? IB_EVENT_PORT_ACTIVE :
|
||||
IB_EVENT_PORT_ERR;
|
||||
ib_dispatch_event(&ibev);
|
||||
}
|
||||
|
||||
}
|
||||
spin_unlock_bh(&iboe->lock);
|
||||
|
||||
@ -2710,6 +2736,7 @@ static void *mlx4_ib_add(struct mlx4_dev *dev)
|
||||
for (i = 0; i < ibdev->num_ports; ++i) {
|
||||
mutex_init(&ibdev->counters_table[i].mutex);
|
||||
INIT_LIST_HEAD(&ibdev->counters_table[i].counters_list);
|
||||
iboe->last_port_state[i] = IB_PORT_DOWN;
|
||||
}
|
||||
|
||||
num_req_counters = mlx4_is_bonded(dev) ? 1 : ibdev->num_ports;
|
||||
|
@ -519,6 +519,7 @@ struct mlx4_ib_iboe {
|
||||
atomic64_t mac[MLX4_MAX_PORTS];
|
||||
struct notifier_block nb;
|
||||
struct mlx4_port_gid_table gids[MLX4_MAX_PORTS];
|
||||
enum ib_port_state last_port_state[MLX4_MAX_PORTS];
|
||||
};
|
||||
|
||||
struct pkey_mgt {
|
||||
|
Loading…
Reference in New Issue
Block a user