sfc: Add efx_nic_type operation for register self-test
Subsystems (2)
PATCH 9/12 sfc: Add efx_nic_type operation for register self-test
Signed-off-by Ben Hutchings <[email protected]>
--- drivers/net/sfc/falcon.c | 3 ++- drivers/net/sfc/falcon.h | 1 - drivers/net/sfc/net_driver.h | 2 ++ drivers/net/sfc/selftest.c | 12 ++++++------ 4 files changed, 10 insertions(+), 8 deletions(-)
drivers/net/sfc/falcon.c +2 -1
@@ -2458,7 +2458,7 @@ static bool efx_masked_compare_oword(const efx_oword_t *a, const efx_oword_t *b, ((a->u64[1 ] ^ b->u64[1 ]) & mask->u64[1 ]); } -int falcon_test_registers (struct efx_nic *efx) +static int falcon_b0_test_registers (struct efx_nic *efx) {unsigned address =0 , i, j;efx_oword_t mask, imask, original, reg, buf;
@@ -3327,6 +3327,7 @@ struct efx_nic_type falcon_b0_nic_type = { .get_wol = falcon_get_wol, .set_wol = falcon_set_wol, .resume_wol = efx_port_dummy_op_void, + .test_registers = falcon_b0_test_registers, .default_mac_ops = &falcon_xmac_operations, .revision = EFX_REV_FALCON_B0,
drivers/net/sfc/falcon.h +0 -1
@@ -154,7 +154,6 @@ extern int falcon_reset_xaui(struct efx_nic *efx);struct falcon_nvconfig ;extern int falcon_read_nvram (struct efx_nic *efx,struct falcon_nvconfig *nvconfig); -extern int falcon_test_registers (struct efx_nic *efx);/************************************************************************** *
drivers/net/sfc/net_driver.h +2 -0
@@ -864,6 +864,7 @@ static inline const char *efx_dev_name(struct efx_nic *efx)* @get_wol: Get WoL configuration from driver state * @set_wol: Push WoL configuration to the NIC * @resume_wol: Synchronise WoL state between driver and MC (e.g. after resume) +* @test_registers: Test read/write functionality of control registers * @default_mac_ops: efx_mac_operations to set at startup * @revision: Hardware architecture revision * @mem_map_size: Memory BAR mapped size
@@ -902,6 +903,7 @@ struct efx_nic_type {void (*get_wol)(struct efx_nic *efx,struct ethtool_wolinfo *wol);int (*set_wol)(struct efx_nic *efx,u32 type);void (*resume_wol)(struct efx_nic *efx); +int (*test_registers)(struct efx_nic *efx);struct efx_mac_operations *default_mac_ops;int revision;
drivers/net/sfc/selftest.c +6 -6
@@ -122,14 +122,14 @@ static int efx_test_nvram(struct efx_nic *efx, struct efx_self_tests *tests)static int efx_test_chip (struct efx_nic *efx,struct efx_self_tests *tests) { -int rc; +int rc =0 ; -/* Not supported on A-series silicon */ -if (efx_nic_rev (efx) <EFX_REV_FALCON_B0 ) -return 0 ; +/* Test register access */ +if (efx->type->test_registers) { + rc = efx->type->test_registers (efx); + tests->registers = rc ?-1 :1 ; + } - rc =falcon_test_registers (efx); - tests->registers = rc ?-1 :1 ;return rc; }
Signature · 9 lines
1.6.5.3 -- Ben Hutchings, Senior Software Engineer, Solarflare Communications Not speaking for my employer; that's the marketing department's job. They asked us to note that Solarflare product names are trademarked.
From: Ben Hutchings <[email protected]>
Date: Sun, 29 Nov 2009 13:43:23 +0000
Quoted 1 line
Signed-off-by Ben Hutchings <[email protected]>
Applied.