Fix invalid registers dump from ethtool -d ethX after adapter self test
by ethtool -t ethY. It causes invalid data display.
The problem was caused by overwriting i40e_reg_list[].elements
which is common for ethtool self test and dump.
Fixes: 22dd9ae8af
("i40e: Rework register diagnostic")
Signed-off-by: Radoslaw Tyl <radoslawx.tyl@intel.com>
Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
Tested-by: Arpana Arland <arpanax.arland@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
Link: https://lore.kernel.org/r/20230328172659.3906413-1-anthony.l.nguyen@intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
28 lines
754 B
C
28 lines
754 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/* Copyright(c) 2013 - 2018 Intel Corporation. */
|
|
|
|
#ifndef _I40E_DIAG_H_
|
|
#define _I40E_DIAG_H_
|
|
|
|
#include "i40e_type.h"
|
|
|
|
enum i40e_lb_mode {
|
|
I40E_LB_MODE_NONE = 0x0,
|
|
I40E_LB_MODE_PHY_LOCAL = I40E_AQ_LB_PHY_LOCAL,
|
|
I40E_LB_MODE_PHY_REMOTE = I40E_AQ_LB_PHY_REMOTE,
|
|
I40E_LB_MODE_MAC_LOCAL = I40E_AQ_LB_MAC_LOCAL,
|
|
};
|
|
|
|
struct i40e_diag_reg_test_info {
|
|
u32 offset; /* the base register */
|
|
u32 mask; /* bits that can be tested */
|
|
u32 elements; /* number of elements if array */
|
|
u32 stride; /* bytes between each element */
|
|
};
|
|
|
|
extern const struct i40e_diag_reg_test_info i40e_reg_list[];
|
|
|
|
int i40e_diag_reg_test(struct i40e_hw *hw);
|
|
int i40e_diag_eeprom_test(struct i40e_hw *hw);
|
|
|
|
#endif /* _I40E_DIAG_H_ */
|