diff options
Diffstat (limited to 'drivers/net/ixgbe/ixgbe_ethtool.c')
| -rw-r--r-- | drivers/net/ixgbe/ixgbe_ethtool.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/net/ixgbe/ixgbe_ethtool.c b/drivers/net/ixgbe/ixgbe_ethtool.c index 7949a446e4c7..1959ef76c962 100644 --- a/drivers/net/ixgbe/ixgbe_ethtool.c +++ b/drivers/net/ixgbe/ixgbe_ethtool.c | |||
| @@ -1853,6 +1853,26 @@ static void ixgbe_diag_test(struct net_device *netdev, | |||
| 1853 | if (ixgbe_link_test(adapter, &data[4])) | 1853 | if (ixgbe_link_test(adapter, &data[4])) |
| 1854 | eth_test->flags |= ETH_TEST_FL_FAILED; | 1854 | eth_test->flags |= ETH_TEST_FL_FAILED; |
| 1855 | 1855 | ||
| 1856 | if (adapter->flags & IXGBE_FLAG_SRIOV_ENABLED) { | ||
| 1857 | int i; | ||
| 1858 | for (i = 0; i < adapter->num_vfs; i++) { | ||
| 1859 | if (adapter->vfinfo[i].clear_to_send) { | ||
| 1860 | netdev_warn(netdev, "%s", | ||
| 1861 | "offline diagnostic is not " | ||
| 1862 | "supported when VFs are " | ||
| 1863 | "present\n"); | ||
| 1864 | data[0] = 1; | ||
| 1865 | data[1] = 1; | ||
| 1866 | data[2] = 1; | ||
| 1867 | data[3] = 1; | ||
| 1868 | eth_test->flags |= ETH_TEST_FL_FAILED; | ||
| 1869 | clear_bit(__IXGBE_TESTING, | ||
| 1870 | &adapter->state); | ||
| 1871 | goto skip_ol_tests; | ||
| 1872 | } | ||
| 1873 | } | ||
| 1874 | } | ||
| 1875 | |||
| 1856 | if (if_running) | 1876 | if (if_running) |
| 1857 | /* indicate we're in test mode */ | 1877 | /* indicate we're in test mode */ |
| 1858 | dev_close(netdev); | 1878 | dev_close(netdev); |
| @@ -1908,6 +1928,7 @@ skip_loopback: | |||
| 1908 | 1928 | ||
| 1909 | clear_bit(__IXGBE_TESTING, &adapter->state); | 1929 | clear_bit(__IXGBE_TESTING, &adapter->state); |
| 1910 | } | 1930 | } |
| 1931 | skip_ol_tests: | ||
| 1911 | msleep_interruptible(4 * 1000); | 1932 | msleep_interruptible(4 * 1000); |
| 1912 | } | 1933 | } |
| 1913 | 1934 | ||
