devices/e1000/e1000_ethtool-2.6.18-ethercat.c
changeset 671 2223549df36c
parent 667 9feff35c9617
--- a/devices/e1000/e1000_ethtool-2.6.18-ethercat.c	Wed Jul 25 12:52:06 2007 +0000
+++ b/devices/e1000/e1000_ethtool-2.6.18-ethercat.c	Wed Jul 25 12:53:01 2007 +0000
@@ -146,7 +146,8 @@
 			ecmd->transceiver = XCVR_EXTERNAL;
 	}
 
-	if (netif_carrier_ok(adapter->netdev)) {
+	if ((adapter->ecdev && ecdev_get_link(adapter->ecdev))
+            || (!adapter->ecdev && netif_carrier_ok(adapter->netdev))) {
 
 		e1000_get_speed_and_duplex(hw, &adapter->link_speed,
 		                                   &adapter->link_duplex);
@@ -204,7 +205,7 @@
 
 	/* reset the link */
 
-	if (netif_running(adapter->netdev))
+	if (adapter->ecdev || netif_running(adapter->netdev))
 		e1000_reinit_locked(adapter);
 	else
 		e1000_reset(adapter);
@@ -253,7 +254,7 @@
 	hw->original_fc = hw->fc;
 
 	if (adapter->fc_autoneg == AUTONEG_ENABLE) {
-		if (netif_running(adapter->netdev))
+		if (adapter->ecdev || netif_running(adapter->netdev))
 			e1000_reinit_locked(adapter);
 		else
 			e1000_reset(adapter);
@@ -277,7 +278,7 @@
 	struct e1000_adapter *adapter = netdev_priv(netdev);
 	adapter->rx_csum = data;
 
-	if (netif_running(netdev))
+	if (adapter->ecdev || netif_running(netdev))
 		e1000_reinit_locked(adapter);
 	else
 		e1000_reset(adapter);
@@ -623,6 +624,9 @@
 	struct e1000_rx_ring *rxdr, *rx_old, *rx_new;
 	int i, err, tx_ring_size, rx_ring_size;
 
+    if (adapter->ecdev)
+        return -EBUSY;
+
 	if ((ring->rx_mini_pending) || (ring->rx_jumbo_pending))
 		return -EINVAL;
 
@@ -1595,7 +1599,7 @@
 		   struct ethtool_test *eth_test, uint64_t *data)
 {
 	struct e1000_adapter *adapter = netdev_priv(netdev);
-	boolean_t if_running = netif_running(netdev);
+	boolean_t if_running = adapter->ecdev || netif_running(netdev);
 
 	set_bit(__E1000_DRIVER_TESTING, &adapter->flags);
 	if (eth_test->flags == ETH_TEST_FL_OFFLINE) {
@@ -1838,7 +1842,7 @@
 e1000_nway_reset(struct net_device *netdev)
 {
 	struct e1000_adapter *adapter = netdev_priv(netdev);
-	if (netif_running(netdev))
+	if (adapter->ecdev || netif_running(netdev))
 		e1000_reinit_locked(adapter);
 	return 0;
 }