mirror of
https://github.com/torvalds/linux.git
synced 2024-11-15 00:21:59 +00:00
i40e: refactor ethtool tests
Put the print and reset statements in the actual test functions to make them more self-contained, and only run the reset for tests that need it. Change-Id: Ic70f49b11bf8bae82e59d8fd25b46215c90c4510 Signed-off-by: Shannon Nelson <shannon.nelson@intel.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
c140c17b98
commit
7b0863977f
@ -706,8 +706,12 @@ static int i40e_get_ts_info(struct net_device *dev,
|
||||
return ethtool_op_get_ts_info(dev, info);
|
||||
}
|
||||
|
||||
static int i40e_link_test(struct i40e_pf *pf, u64 *data)
|
||||
static int i40e_link_test(struct net_device *netdev, u64 *data)
|
||||
{
|
||||
struct i40e_netdev_priv *np = netdev_priv(netdev);
|
||||
struct i40e_pf *pf = np->vsi->back;
|
||||
|
||||
netdev_info(netdev, "link test\n");
|
||||
if (i40e_get_link_status(&pf->hw))
|
||||
*data = 0;
|
||||
else
|
||||
@ -716,30 +720,36 @@ static int i40e_link_test(struct i40e_pf *pf, u64 *data)
|
||||
return *data;
|
||||
}
|
||||
|
||||
static int i40e_reg_test(struct i40e_pf *pf, u64 *data)
|
||||
static int i40e_reg_test(struct net_device *netdev, u64 *data)
|
||||
{
|
||||
i40e_status ret;
|
||||
struct i40e_netdev_priv *np = netdev_priv(netdev);
|
||||
struct i40e_pf *pf = np->vsi->back;
|
||||
|
||||
ret = i40e_diag_reg_test(&pf->hw);
|
||||
*data = ret;
|
||||
netdev_info(netdev, "register test\n");
|
||||
*data = i40e_diag_reg_test(&pf->hw);
|
||||
|
||||
return ret;
|
||||
i40e_do_reset(pf, (1 << __I40E_PF_RESET_REQUESTED));
|
||||
return *data;
|
||||
}
|
||||
|
||||
static int i40e_eeprom_test(struct i40e_pf *pf, u64 *data)
|
||||
static int i40e_eeprom_test(struct net_device *netdev, u64 *data)
|
||||
{
|
||||
i40e_status ret;
|
||||
struct i40e_netdev_priv *np = netdev_priv(netdev);
|
||||
struct i40e_pf *pf = np->vsi->back;
|
||||
|
||||
ret = i40e_diag_eeprom_test(&pf->hw);
|
||||
*data = ret;
|
||||
netdev_info(netdev, "eeprom test\n");
|
||||
*data = i40e_diag_eeprom_test(&pf->hw);
|
||||
|
||||
return ret;
|
||||
return *data;
|
||||
}
|
||||
|
||||
static int i40e_intr_test(struct i40e_pf *pf, u64 *data)
|
||||
static int i40e_intr_test(struct net_device *netdev, u64 *data)
|
||||
{
|
||||
struct i40e_netdev_priv *np = netdev_priv(netdev);
|
||||
struct i40e_pf *pf = np->vsi->back;
|
||||
u16 swc_old = pf->sw_int_count;
|
||||
|
||||
netdev_info(netdev, "interrupt test\n");
|
||||
wr32(&pf->hw, I40E_PFINT_DYN_CTL0,
|
||||
(I40E_PFINT_DYN_CTL0_INTENA_MASK |
|
||||
I40E_PFINT_DYN_CTL0_SWINT_TRIG_MASK));
|
||||
@ -749,8 +759,9 @@ static int i40e_intr_test(struct i40e_pf *pf, u64 *data)
|
||||
return *data;
|
||||
}
|
||||
|
||||
static int i40e_loopback_test(struct i40e_pf *pf, u64 *data)
|
||||
static int i40e_loopback_test(struct net_device *netdev, u64 *data)
|
||||
{
|
||||
netdev_info(netdev, "loopback test not implemented\n");
|
||||
*data = 0;
|
||||
|
||||
return *data;
|
||||
@ -771,33 +782,25 @@ static void i40e_diag_test(struct net_device *netdev,
|
||||
/* Link test performed before hardware reset
|
||||
* so autoneg doesn't interfere with test result
|
||||
*/
|
||||
netdev_info(netdev, "link test starting\n");
|
||||
if (i40e_link_test(pf, &data[I40E_ETH_TEST_LINK]))
|
||||
if (i40e_link_test(netdev, &data[I40E_ETH_TEST_LINK]))
|
||||
eth_test->flags |= ETH_TEST_FL_FAILED;
|
||||
|
||||
netdev_info(netdev, "register test starting\n");
|
||||
if (i40e_reg_test(pf, &data[I40E_ETH_TEST_REG]))
|
||||
if (i40e_reg_test(netdev, &data[I40E_ETH_TEST_REG]))
|
||||
eth_test->flags |= ETH_TEST_FL_FAILED;
|
||||
|
||||
i40e_do_reset(pf, (1 << __I40E_PF_RESET_REQUESTED));
|
||||
netdev_info(netdev, "eeprom test starting\n");
|
||||
if (i40e_eeprom_test(pf, &data[I40E_ETH_TEST_EEPROM]))
|
||||
if (i40e_eeprom_test(netdev, &data[I40E_ETH_TEST_EEPROM]))
|
||||
eth_test->flags |= ETH_TEST_FL_FAILED;
|
||||
|
||||
i40e_do_reset(pf, (1 << __I40E_PF_RESET_REQUESTED));
|
||||
netdev_info(netdev, "interrupt test starting\n");
|
||||
if (i40e_intr_test(pf, &data[I40E_ETH_TEST_INTR]))
|
||||
if (i40e_intr_test(netdev, &data[I40E_ETH_TEST_INTR]))
|
||||
eth_test->flags |= ETH_TEST_FL_FAILED;
|
||||
|
||||
i40e_do_reset(pf, (1 << __I40E_PF_RESET_REQUESTED));
|
||||
netdev_info(netdev, "loopback test starting\n");
|
||||
if (i40e_loopback_test(pf, &data[I40E_ETH_TEST_LOOPBACK]))
|
||||
if (i40e_loopback_test(netdev, &data[I40E_ETH_TEST_LOOPBACK]))
|
||||
eth_test->flags |= ETH_TEST_FL_FAILED;
|
||||
|
||||
} else {
|
||||
netdev_info(netdev, "online test starting\n");
|
||||
/* Online tests */
|
||||
if (i40e_link_test(pf, &data[I40E_ETH_TEST_LINK]))
|
||||
if (i40e_link_test(netdev, &data[I40E_ETH_TEST_LINK]))
|
||||
eth_test->flags |= ETH_TEST_FL_FAILED;
|
||||
|
||||
/* Offline only tests, not run in online; pass by default */
|
||||
|
Loading…
Reference in New Issue
Block a user