소스 검색

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>
Yevgeny Petrilin 16 년 전
부모
커밋
3c05f5ef7c
2개의 변경된 파일2개의 추가작업 그리고 9개의 파일을 삭제
  1. 2 2
      drivers/net/mlx4/en_netdev.c
  2. 0 7
      drivers/net/mlx4/en_tx.c

+ 2 - 2
drivers/net/mlx4/en_netdev.c

@@ -700,14 +700,14 @@ void mlx4_en_stop_port(struct net_device *dev)
 		en_dbg(DRV, priv, "stop port called while port already down\n");
 		en_dbg(DRV, priv, "stop port called while port already down\n");
 		return;
 		return;
 	}
 	}
-	netif_tx_stop_all_queues(dev);
 
 
 	/* Synchronize with tx routine */
 	/* Synchronize with tx routine */
 	netif_tx_lock_bh(dev);
 	netif_tx_lock_bh(dev);
-	priv->port_up = false;
+	netif_tx_stop_all_queues(dev);
 	netif_tx_unlock_bh(dev);
 	netif_tx_unlock_bh(dev);
 
 
 	/* close port*/
 	/* close port*/
+	priv->port_up = false;
 	mlx4_CLOSE_PORT(mdev->dev, priv->port);
 	mlx4_CLOSE_PORT(mdev->dev, priv->port);
 
 
 	/* Unregister Mac address for the port */
 	/* Unregister Mac address for the port */

+ 0 - 7
drivers/net/mlx4/en_tx.c

@@ -646,13 +646,6 @@ int mlx4_en_xmit(struct sk_buff *skb, struct net_device *dev)
 		return NETDEV_TX_BUSY;
 		return NETDEV_TX_BUSY;
 	}
 	}
 
 
-	/* Now that we know what Tx ring to use */
-	if (unlikely(!priv->port_up)) {
-		if (netif_msg_tx_err(priv))
-			en_warn(priv, "xmit: port down!\n");
-		goto tx_drop;
-	}
-
 	/* Track current inflight packets for performance analysis */
 	/* Track current inflight packets for performance analysis */
 	AVG_PERF_COUNTER(priv->pstats.inflight_avg,
 	AVG_PERF_COUNTER(priv->pstats.inflight_avg,
 			 (u32) (ring->prod - ring->cons - 1));
 			 (u32) (ring->prod - ring->cons - 1));