static void ixgbevf_diag_test(struct net_device *netdev, struct ethtool_test *eth_test, u64 *data) { struct ixgbevf_adapter *adapter = netdev_priv(netdev); bool if_running = netif_running(netdev); set_bit(__IXGBEVF_TESTING, &adapter->state); if (eth_test->flags == ETH_TEST_FL_OFFLINE) { /* Offline tests */ hw_dbg(&adapter->hw, "offline testing starting\n"); /* Link test performed before hardware reset so autoneg doesn't * interfere with test result */ if (ixgbevf_link_test(adapter, &data[1])) eth_test->flags |= ETH_TEST_FL_FAILED; if (if_running) /* indicate we're in test mode */ dev_close(netdev); else ixgbevf_reset(adapter); hw_dbg(&adapter->hw, "register testing starting\n"); if (ixgbevf_reg_test(adapter, &data[0])) eth_test->flags |= ETH_TEST_FL_FAILED; ixgbevf_reset(adapter); clear_bit(__IXGBEVF_TESTING, &adapter->state); if (if_running) dev_open(netdev); } else { hw_dbg(&adapter->hw, "online testing starting\n"); /* Online tests */ if (ixgbevf_link_test(adapter, &data[1])) eth_test->flags |= ETH_TEST_FL_FAILED; /* Online tests aren't run; pass by default */ data[0] = 0; clear_bit(__IXGBEVF_TESTING, &adapter->state); } msleep_interruptible(4 * 1000); }
static void ixgbevf_diag_test(struct net_device *netdev, struct ethtool_test *eth_test, u64 *data) { struct ixgbevf_adapter *adapter = netdev_priv(netdev); bool if_running = netif_running(netdev); set_bit(__IXGBEVF_TESTING, &adapter->state); if (eth_test->flags == ETH_TEST_FL_OFFLINE) { /* */ hw_dbg(&adapter->hw, "offline testing starting\n"); /* */ if (ixgbevf_link_test(adapter, &data[1])) eth_test->flags |= ETH_TEST_FL_FAILED; if (if_running) /* */ dev_close(netdev); else ixgbevf_reset(adapter); hw_dbg(&adapter->hw, "register testing starting\n"); if (ixgbevf_reg_test(adapter, &data[0])) eth_test->flags |= ETH_TEST_FL_FAILED; ixgbevf_reset(adapter); clear_bit(__IXGBEVF_TESTING, &adapter->state); if (if_running) dev_open(netdev); } else { hw_dbg(&adapter->hw, "online testing starting\n"); /* */ if (ixgbevf_link_test(adapter, &data[1])) eth_test->flags |= ETH_TEST_FL_FAILED; /* */ data[0] = 0; clear_bit(__IXGBEVF_TESTING, &adapter->state); } msleep_interruptible(4 * 1000); }
static int ixgbevf_set_rx_csum(struct net_device *netdev, u32 data) { struct ixgbevf_adapter *adapter = netdev_priv(netdev); if (data) adapter->flags |= IXGBE_FLAG_RX_CSUM_ENABLED; else adapter->flags &= ~IXGBE_FLAG_RX_CSUM_ENABLED; if (netif_running(netdev)) { if (!adapter->dev_closed) ixgbevf_reinit_locked(adapter); } else { ixgbevf_reset(adapter); } return 0; }