Skip to content

Commit 2fc8d11

Browse files
committed
Merge branch 'mlx4-fixes'
Tariq Toukan says: ==================== mlx4 bug fixes for 4.9 This patchset includes 2 bug fixes: * In patch 1 we revert the commit that avoids invoking unregister_netdev in shutdown flow, as it introduces netdev presence issues where it can be accessed unsafely by ndo operations during the flow. * Patch 2 is a simple fix for a variable uninitialization issue. Series generated against net commit: 6998cc6 tipc: resolve connection flow control compatibility problem ==================== Signed-off-by: David S. Miller <[email protected]>
2 parents faa1fa5 + 44b911e commit 2fc8d11

File tree

4 files changed

+9
-21
lines changed

4 files changed

+9
-21
lines changed

drivers/net/ethernet/mellanox/mlx4/en_netdev.c

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2079,13 +2079,6 @@ static int mlx4_en_alloc_resources(struct mlx4_en_priv *priv)
20792079
return -ENOMEM;
20802080
}
20812081

2082-
static void mlx4_en_shutdown(struct net_device *dev)
2083-
{
2084-
rtnl_lock();
2085-
netif_device_detach(dev);
2086-
mlx4_en_close(dev);
2087-
rtnl_unlock();
2088-
}
20892082

20902083
static int mlx4_en_copy_priv(struct mlx4_en_priv *dst,
20912084
struct mlx4_en_priv *src,
@@ -2162,19 +2155,14 @@ void mlx4_en_destroy_netdev(struct net_device *dev)
21622155
{
21632156
struct mlx4_en_priv *priv = netdev_priv(dev);
21642157
struct mlx4_en_dev *mdev = priv->mdev;
2165-
bool shutdown = mdev->dev->persist->interface_state &
2166-
MLX4_INTERFACE_STATE_SHUTDOWN;
21672158

21682159
en_dbg(DRV, priv, "Destroying netdev on port:%d\n", priv->port);
21692160

21702161
/* Unregister device - this will close the port if it was up */
21712162
if (priv->registered) {
21722163
devlink_port_type_clear(mlx4_get_devlink_port(mdev->dev,
21732164
priv->port));
2174-
if (shutdown)
2175-
mlx4_en_shutdown(dev);
2176-
else
2177-
unregister_netdev(dev);
2165+
unregister_netdev(dev);
21782166
}
21792167

21802168
if (priv->allocated)
@@ -2203,8 +2191,7 @@ void mlx4_en_destroy_netdev(struct net_device *dev)
22032191
kfree(priv->tx_ring);
22042192
kfree(priv->tx_cq);
22052193

2206-
if (!shutdown)
2207-
free_netdev(dev);
2194+
free_netdev(dev);
22082195
}
22092196

22102197
static int mlx4_en_change_mtu(struct net_device *dev, int new_mtu)

drivers/net/ethernet/mellanox/mlx4/main.c

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4147,11 +4147,8 @@ static void mlx4_shutdown(struct pci_dev *pdev)
41474147

41484148
mlx4_info(persist->dev, "mlx4_shutdown was called\n");
41494149
mutex_lock(&persist->interface_state_mutex);
4150-
if (persist->interface_state & MLX4_INTERFACE_STATE_UP) {
4151-
/* Notify mlx4 clients that the kernel is being shut down */
4152-
persist->interface_state |= MLX4_INTERFACE_STATE_SHUTDOWN;
4150+
if (persist->interface_state & MLX4_INTERFACE_STATE_UP)
41534151
mlx4_unload_one(pdev);
4154-
}
41554152
mutex_unlock(&persist->interface_state_mutex);
41564153
}
41574154

drivers/net/ethernet/mellanox/mlx4/mcg.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1457,7 +1457,12 @@ EXPORT_SYMBOL_GPL(mlx4_multicast_detach);
14571457
int mlx4_flow_steer_promisc_add(struct mlx4_dev *dev, u8 port,
14581458
u32 qpn, enum mlx4_net_trans_promisc_mode mode)
14591459
{
1460-
struct mlx4_net_trans_rule rule;
1460+
struct mlx4_net_trans_rule rule = {
1461+
.queue_mode = MLX4_NET_TRANS_Q_FIFO,
1462+
.exclusive = 0,
1463+
.allow_loopback = 1,
1464+
};
1465+
14611466
u64 *regid_p;
14621467

14631468
switch (mode) {

include/linux/mlx4/device.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,6 @@ enum {
476476
enum {
477477
MLX4_INTERFACE_STATE_UP = 1 << 0,
478478
MLX4_INTERFACE_STATE_DELETION = 1 << 1,
479-
MLX4_INTERFACE_STATE_SHUTDOWN = 1 << 2,
480479
};
481480

482481
#define MSTR_SM_CHANGE_MASK (MLX4_EQ_PORT_INFO_MSTR_SM_SL_CHANGE_MASK | \

0 commit comments

Comments
 (0)