--- 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;