mlx4_en: performing CLOSE_PORT at the end of tear-down process
Yevgeny Petrilin [Tue, 24 Aug 2010 03:45:45 +0000 (03:45 +0000)]
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 4d6dac7..985e6f8 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)