diff -r 9999ca1a1953 -r beca96e44f9f devices/e1000/e1000_ethtool-2.6.22-ethercat.c --- 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;