diff options
Diffstat (limited to 'drivers/net/ethernet/intel/i40e/i40e_ethtool.c')
| -rw-r--r-- | drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 25 | 
1 files changed, 17 insertions, 8 deletions
diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c index 610f00cbaff9..19704f5c8291 100644 --- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c +++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c @@ -2586,15 +2586,16 @@ static void i40e_diag_test(struct net_device *netdev,  		set_bit(__I40E_TESTING, pf->state); +		if (test_bit(__I40E_RESET_RECOVERY_PENDING, pf->state) || +		    test_bit(__I40E_RESET_INTR_RECEIVED, pf->state)) { +			dev_warn(&pf->pdev->dev, +				 "Cannot start offline testing when PF is in reset state.\n"); +			goto skip_ol_tests; +		} +  		if (i40e_active_vfs(pf) || i40e_active_vmdqs(pf)) {  			dev_warn(&pf->pdev->dev,  				 "Please take active VFs and Netqueues offline and restart the adapter before running NIC diagnostics\n"); -			data[I40E_ETH_TEST_REG]		= 1; -			data[I40E_ETH_TEST_EEPROM]	= 1; -			data[I40E_ETH_TEST_INTR]	= 1; -			data[I40E_ETH_TEST_LINK]	= 1; -			eth_test->flags |= ETH_TEST_FL_FAILED; -			clear_bit(__I40E_TESTING, pf->state);  			goto skip_ol_tests;  		} @@ -2641,9 +2642,17 @@ static void i40e_diag_test(struct net_device *netdev,  		data[I40E_ETH_TEST_INTR] = 0;  	} -skip_ol_tests: -  	netif_info(pf, drv, netdev, "testing finished\n"); +	return; + +skip_ol_tests: +	data[I40E_ETH_TEST_REG]		= 1; +	data[I40E_ETH_TEST_EEPROM]	= 1; +	data[I40E_ETH_TEST_INTR]	= 1; +	data[I40E_ETH_TEST_LINK]	= 1; +	eth_test->flags |= ETH_TEST_FL_FAILED; +	clear_bit(__I40E_TESTING, pf->state); +	netif_info(pf, drv, netdev, "testing failed\n");  }  static void i40e_get_wol(struct net_device *netdev,  |