diff options
Diffstat (limited to 'drivers/net/sfc/selftest.c')
| -rw-r--r-- | drivers/net/sfc/selftest.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/sfc/selftest.c b/drivers/net/sfc/selftest.c index dba0d64d50cd..0a598084c513 100644 --- a/drivers/net/sfc/selftest.c +++ b/drivers/net/sfc/selftest.c | |||
| @@ -665,6 +665,7 @@ int efx_selftest(struct efx_nic *efx, struct efx_self_tests *tests, | |||
| 665 | { | 665 | { |
| 666 | enum efx_loopback_mode loopback_mode = efx->loopback_mode; | 666 | enum efx_loopback_mode loopback_mode = efx->loopback_mode; |
| 667 | int phy_mode = efx->phy_mode; | 667 | int phy_mode = efx->phy_mode; |
| 668 | enum reset_type reset_method = RESET_TYPE_INVISIBLE; | ||
| 668 | struct ethtool_cmd ecmd; | 669 | struct ethtool_cmd ecmd; |
| 669 | struct efx_channel *channel; | 670 | struct efx_channel *channel; |
| 670 | int rc_test = 0, rc_reset = 0, rc; | 671 | int rc_test = 0, rc_reset = 0, rc; |
| @@ -718,21 +719,21 @@ int efx_selftest(struct efx_nic *efx, struct efx_self_tests *tests, | |||
| 718 | mutex_unlock(&efx->mac_lock); | 719 | mutex_unlock(&efx->mac_lock); |
| 719 | 720 | ||
| 720 | /* free up all consumers of SRAM (including all the queues) */ | 721 | /* free up all consumers of SRAM (including all the queues) */ |
| 721 | efx_reset_down(efx, &ecmd); | 722 | efx_reset_down(efx, reset_method, &ecmd); |
| 722 | 723 | ||
| 723 | rc = efx_test_chip(efx, tests); | 724 | rc = efx_test_chip(efx, tests); |
| 724 | if (rc && !rc_test) | 725 | if (rc && !rc_test) |
| 725 | rc_test = rc; | 726 | rc_test = rc; |
| 726 | 727 | ||
| 727 | /* reset the chip to recover from the register test */ | 728 | /* reset the chip to recover from the register test */ |
| 728 | rc_reset = falcon_reset_hw(efx, RESET_TYPE_ALL); | 729 | rc_reset = falcon_reset_hw(efx, reset_method); |
| 729 | 730 | ||
| 730 | /* Ensure that the phy is powered and out of loopback | 731 | /* Ensure that the phy is powered and out of loopback |
| 731 | * for the bist and loopback tests */ | 732 | * for the bist and loopback tests */ |
| 732 | efx->phy_mode &= ~PHY_MODE_LOW_POWER; | 733 | efx->phy_mode &= ~PHY_MODE_LOW_POWER; |
| 733 | efx->loopback_mode = LOOPBACK_NONE; | 734 | efx->loopback_mode = LOOPBACK_NONE; |
| 734 | 735 | ||
| 735 | rc = efx_reset_up(efx, &ecmd, rc_reset == 0); | 736 | rc = efx_reset_up(efx, reset_method, &ecmd, rc_reset == 0); |
| 736 | if (rc && !rc_reset) | 737 | if (rc && !rc_reset) |
| 737 | rc_reset = rc; | 738 | rc_reset = rc; |
| 738 | 739 | ||
