2008-05-07 16:36:19 +04:00
/****************************************************************************
* Driver for Solarflare Solarstorm network controllers and boards
* Copyright 2005 - 2006 Fen Systems Ltd .
* Copyright 2006 - 2008 Solarflare Communications Inc .
*
* This program is free software ; you can redistribute it and / or modify it
* under the terms of the GNU General Public License version 2 as published
* by the Free Software Foundation , incorporated herein by reference .
*/
# ifndef EFX_SELFTEST_H
# define EFX_SELFTEST_H
# include "net_driver.h"
/*
* Self tests
*/
struct efx_loopback_self_tests {
2008-09-01 15:44:59 +04:00
int tx_sent [ EFX_TX_QUEUE_COUNT ] ;
int tx_done [ EFX_TX_QUEUE_COUNT ] ;
2008-05-07 16:36:19 +04:00
int rx_good ;
int rx_bad ;
} ;
2008-12-27 00:47:25 +03:00
# define EFX_MAX_PHY_TESTS 20
2008-05-07 16:36:19 +04:00
/* Efx self test results
* For fields which are not counters , 1 indicates success and - 1
* indicates failure .
*/
struct efx_self_tests {
2008-09-01 15:49:02 +04:00
/* online tests */
2009-04-29 12:05:08 +04:00
int mdio ;
2008-09-01 15:49:02 +04:00
int nvram ;
2008-05-07 16:36:19 +04:00
int interrupt ;
int eventq_dma [ EFX_MAX_CHANNELS ] ;
int eventq_int [ EFX_MAX_CHANNELS ] ;
int eventq_poll [ EFX_MAX_CHANNELS ] ;
2008-09-01 15:49:02 +04:00
/* offline tests */
int registers ;
2008-12-27 00:47:25 +03:00
int phy [ EFX_MAX_PHY_TESTS ] ;
2008-09-01 15:49:02 +04:00
struct efx_loopback_self_tests loopback [ LOOPBACK_TEST_MAX + 1 ] ;
2008-05-07 16:36:19 +04:00
} ;
extern void efx_loopback_rx_packet ( struct efx_nic * efx ,
const char * buf_ptr , int pkt_len ) ;
2008-12-27 00:47:04 +03:00
extern int efx_selftest ( struct efx_nic * efx ,
struct efx_self_tests * tests ,
unsigned flags ) ;
2008-05-07 16:36:19 +04:00
# endif /* EFX_SELFTEST_H */