devices/e1000/e1000_ethtool-2.6.22-ethercat.c
changeset 789 beca96e44f9f
parent 788 9999ca1a1953
--- a/devices/e1000/e1000_ethtool-2.6.22-ethercat.c	Tue Feb 12 14:20:56 2008 +0000
+++ b/devices/e1000/e1000_ethtool-2.6.22-ethercat.c	Tue Feb 12 15:18:29 2008 +0000
@@ -195,6 +195,9 @@
 	struct e1000_adapter *adapter = netdev_priv(netdev);
 	struct e1000_hw *hw = &adapter->hw;
 
+	if (adapter->ecdev)
+		return -EBUSY;
+
 	/* When SoL/IDER sessions are active, autoneg/speed/duplex
 	 * cannot be changed */
 	if (e1000_check_phy_reset_block(hw)) {
@@ -263,6 +266,9 @@
 	struct e1000_hw *hw = &adapter->hw;
 	int retval = 0;
 
+	if (adapter->ecdev)
+		return -EBUSY;
+
 	adapter->fc_autoneg = pause->autoneg;
 
 	while (test_and_set_bit(__E1000_RESETTING, &adapter->flags))
@@ -304,6 +310,10 @@
 e1000_set_rx_csum(struct net_device *netdev, uint32_t data)
 {
 	struct e1000_adapter *adapter = netdev_priv(netdev);
+
+	if (adapter->ecdev)
+		return -EBUSY;
+
 	adapter->rx_csum = data;
 
 	if (netif_running(netdev))
@@ -656,6 +666,9 @@
 	struct e1000_rx_ring *rxdr, *rx_old;
 	int i, err;
 
+    if (adapter->ecdev)
+        return -EBUSY;
+
 	if ((ring->rx_mini_pending) || (ring->rx_jumbo_pending))
 		return -EINVAL;
 
@@ -1624,7 +1637,12 @@
 		   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;
+
+	if (adapter->ecdev)
+		return;
+	
+	if_running = netif_running(netdev);
 
 	set_bit(__E1000_TESTING, &adapter->flags);
 	if (eth_test->flags == ETH_TEST_FL_OFFLINE) {
@@ -1891,6 +1909,10 @@
 e1000_nway_reset(struct net_device *netdev)
 {
 	struct e1000_adapter *adapter = netdev_priv(netdev);
+
+	if (adapter->ecdev)
+		return -EBUSY;
+
 	if (netif_running(netdev))
 		e1000_reinit_locked(adapter);
 	return 0;