mirror of
https://github.com/Ysurac/openmptcprouter.git
synced 2025-03-09 15:40:20 +00:00
46 lines
1.9 KiB
Diff
46 lines
1.9 KiB
Diff
From 4dddd08b571d73e9acb87b4b7fff763ba3e6d6cd Mon Sep 17 00:00:00 2001
|
|
From: Mark Zhang <markz@mellanox.com>
|
|
Date: Tue, 9 Jul 2019 05:37:12 +0300
|
|
Subject: [PATCH 792/826] net/mlx5: Use reversed order when unregister devices
|
|
|
|
[ Upstream commit 08aa5e7da6bce1a1963f63cf32c2e7ad434ad578 ]
|
|
|
|
When lag is active, which is controlled by the bonded mlx5e netdev, mlx5
|
|
interface unregestering must happen in the reverse order where rdma is
|
|
unregistered (unloaded) first, to guarantee all references to the lag
|
|
context in hardware is removed, then remove mlx5e netdev interface which
|
|
will cleanup the lag context from hardware.
|
|
|
|
Without this fix during destroy of LAG interface, we observed following
|
|
errors:
|
|
* mlx5_cmd_check:752:(pid 12556): DESTROY_LAG(0x843) op_mod(0x0) failed,
|
|
status bad parameter(0x3), syndrome (0xe4ac33)
|
|
* mlx5_cmd_check:752:(pid 12556): DESTROY_LAG(0x843) op_mod(0x0) failed,
|
|
status bad parameter(0x3), syndrome (0xa5aee8).
|
|
|
|
Fixes: a31208b1e11d ("net/mlx5_core: New init and exit flow for mlx5_core")
|
|
Reviewed-by: Parav Pandit <parav@mellanox.com>
|
|
Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
|
|
Signed-off-by: Mark Zhang <markz@mellanox.com>
|
|
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
|
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
---
|
|
drivers/net/ethernet/mellanox/mlx5/core/dev.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/dev.c b/drivers/net/ethernet/mellanox/mlx5/core/dev.c
|
|
index 1c225be9c7db..3692d6a1cce8 100644
|
|
--- a/drivers/net/ethernet/mellanox/mlx5/core/dev.c
|
|
+++ b/drivers/net/ethernet/mellanox/mlx5/core/dev.c
|
|
@@ -307,7 +307,7 @@ void mlx5_unregister_device(struct mlx5_core_dev *dev)
|
|
struct mlx5_interface *intf;
|
|
|
|
mutex_lock(&mlx5_intf_mutex);
|
|
- list_for_each_entry(intf, &intf_list, list)
|
|
+ list_for_each_entry_reverse(intf, &intf_list, list)
|
|
mlx5_remove_device(intf, priv);
|
|
list_del(&priv->dev_list);
|
|
mutex_unlock(&mlx5_intf_mutex);
|
|
--
|
|
2.22.0
|
|
|