mlx4_en: performing CLOSE_PORT at the end of tear-down process
authorYevgeny Petrilin <yevgenyp@mellanox.co.il>
Tue, 24 Aug 2010 03:45:45 +0000 (03:45 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 24 Aug 2010 21:54:48 +0000 (14:54 -0700)
All port's resources should be closed before we give the
CLOSE_PORT command to the firmware.

Signed-off-by: Yevgeny Petrilin <yevgenyp@mellanox.co.il>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/mlx4/en_netdev.c

index 4d6dac7617f74759bebd81e8f28d4622a5ab76db..985e6f83b31a610a7c6660b1b09ca8049856f573 100644 (file)
@@ -704,9 +704,8 @@ void mlx4_en_stop_port(struct net_device *dev)
        netif_tx_stop_all_queues(dev);
        netif_tx_unlock_bh(dev);
 
-       /* close port*/
+       /* Set port as not active */
        priv->port_up = false;
-       mlx4_CLOSE_PORT(mdev->dev, priv->port);
 
        /* Unregister Mac address for the port */
        mlx4_unregister_mac(mdev->dev, priv->port, priv->mac_index);
@@ -731,6 +730,9 @@ void mlx4_en_stop_port(struct net_device *dev)
                        msleep(1);
                mlx4_en_deactivate_cq(priv, &priv->rx_cq[i]);
        }
+
+       /* close port*/
+       mlx4_CLOSE_PORT(mdev->dev, priv->port);
 }
 
 static void mlx4_en_restart(struct work_struct *work)