mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-24 12:50:35 +07:00
i40e: Fix ethtool offline test
If the system administrator is requesting an offline diagnostic test using 'ethtool -t' then we should, you know, actually take the device offline before doing the testing. Change-ID: I6afa1cbfcc821c9ab6e6f47ed4d8dc2d8dd20e82 Signed-off-by: Greg Rose <gregory.v.rose@intel.com> Tested-by: Jim Young <james.m.young@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
088c4ee370
commit
5b86c5cf75
@ -1530,6 +1530,7 @@ static void i40e_diag_test(struct net_device *netdev,
|
|||||||
struct ethtool_test *eth_test, u64 *data)
|
struct ethtool_test *eth_test, u64 *data)
|
||||||
{
|
{
|
||||||
struct i40e_netdev_priv *np = netdev_priv(netdev);
|
struct i40e_netdev_priv *np = netdev_priv(netdev);
|
||||||
|
bool if_running = netif_running(netdev);
|
||||||
struct i40e_pf *pf = np->vsi->back;
|
struct i40e_pf *pf = np->vsi->back;
|
||||||
|
|
||||||
if (eth_test->flags == ETH_TEST_FL_OFFLINE) {
|
if (eth_test->flags == ETH_TEST_FL_OFFLINE) {
|
||||||
@ -1537,6 +1538,12 @@ static void i40e_diag_test(struct net_device *netdev,
|
|||||||
netif_info(pf, drv, netdev, "offline testing starting\n");
|
netif_info(pf, drv, netdev, "offline testing starting\n");
|
||||||
|
|
||||||
set_bit(__I40E_TESTING, &pf->state);
|
set_bit(__I40E_TESTING, &pf->state);
|
||||||
|
/* If the device is online then take it offline */
|
||||||
|
if (if_running)
|
||||||
|
/* indicate we're in test mode */
|
||||||
|
dev_close(netdev);
|
||||||
|
else
|
||||||
|
i40e_do_reset(pf, (1 << __I40E_PF_RESET_REQUESTED));
|
||||||
|
|
||||||
/* Link test performed before hardware reset
|
/* Link test performed before hardware reset
|
||||||
* so autoneg doesn't interfere with test result
|
* so autoneg doesn't interfere with test result
|
||||||
@ -1559,6 +1566,9 @@ static void i40e_diag_test(struct net_device *netdev,
|
|||||||
|
|
||||||
clear_bit(__I40E_TESTING, &pf->state);
|
clear_bit(__I40E_TESTING, &pf->state);
|
||||||
i40e_do_reset(pf, (1 << __I40E_PF_RESET_REQUESTED));
|
i40e_do_reset(pf, (1 << __I40E_PF_RESET_REQUESTED));
|
||||||
|
|
||||||
|
if (if_running)
|
||||||
|
dev_open(netdev);
|
||||||
} else {
|
} else {
|
||||||
/* Online tests */
|
/* Online tests */
|
||||||
netif_info(pf, drv, netdev, "online testing starting\n");
|
netif_info(pf, drv, netdev, "online testing starting\n");
|
||||||
|
Loading…
Reference in New Issue
Block a user