aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorYevgeny Petrilin <yevgenyp@mellanox.co.il>2009-06-20 18:15:52 -0400
committerDavid S. Miller <davem@davemloft.net>2009-06-21 22:18:05 -0400
commit3c05f5ef7c09291e51ae327e854bf43cb8e55a55 (patch)
tree0751a4e0e7834f0d3cffbaf8d9cda7ff731db18f /drivers
parenta11faac79fdbf771ed1ab310f6ef44b389423fe7 (diff)
mlx4_en: Cancel port_up check in transmit function
When closing the port, we stop all transmit queues under the transmit lock. It ensures that we will not attempt to transmit new packets after the physical port was closed. Signed-off-by: Yevgeny Petrilin <yevgenyp@mellanox.co.il> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/mlx4/en_netdev.c4
-rw-r--r--drivers/net/mlx4/en_tx.c7
2 files changed, 2 insertions, 9 deletions
diff --git a/drivers/net/mlx4/en_netdev.c b/drivers/net/mlx4/en_netdev.c
index 20a34cb6392e..03a557cc3b7a 100644
--- a/drivers/net/mlx4/en_netdev.c
+++ b/drivers/net/mlx4/en_netdev.c
@@ -700,14 +700,14 @@ void mlx4_en_stop_port(struct net_device *dev)
700 en_dbg(DRV, priv, "stop port called while port already down\n"); 700 en_dbg(DRV, priv, "stop port called while port already down\n");
701 return; 701 return;
702 } 702 }
703 netif_tx_stop_all_queues(dev);
704 703
705 /* Synchronize with tx routine */ 704 /* Synchronize with tx routine */
706 netif_tx_lock_bh(dev); 705 netif_tx_lock_bh(dev);
707 priv->port_up = false; 706 netif_tx_stop_all_queues(dev);
708 netif_tx_unlock_bh(dev); 707 netif_tx_unlock_bh(dev);
709 708
710 /* close port*/ 709 /* close port*/
710 priv->port_up = false;
711 mlx4_CLOSE_PORT(mdev->dev, priv->port); 711 mlx4_CLOSE_PORT(mdev->dev, priv->port);
712 712
713 /* Unregister Mac address for the port */ 713 /* Unregister Mac address for the port */
diff --git a/drivers/net/mlx4/en_tx.c b/drivers/net/mlx4/en_tx.c
index e63132361a94..99a6a36dc27b 100644
--- a/drivers/net/mlx4/en_tx.c
+++ b/drivers/net/mlx4/en_tx.c
@@ -646,13 +646,6 @@ int mlx4_en_xmit(struct sk_buff *skb, struct net_device *dev)
646 return NETDEV_TX_BUSY; 646 return NETDEV_TX_BUSY;
647 } 647 }
648 648
649 /* Now that we know what Tx ring to use */
650 if (unlikely(!priv->port_up)) {
651 if (netif_msg_tx_err(priv))
652 en_warn(priv, "xmit: port down!\n");
653 goto tx_drop;
654 }
655
656 /* Track current inflight packets for performance analysis */ 649 /* Track current inflight packets for performance analysis */
657 AVG_PERF_COUNTER(priv->pstats.inflight_avg, 650 AVG_PERF_COUNTER(priv->pstats.inflight_avg,
658 (u32) (ring->prod - ring->cons - 1)); 651 (u32) (ring->prod - ring->cons - 1));