/**************************************************************************** * Driver for Solarflare network controllers and boards * Copyright 2005-2006 Fen Systems Ltd. * Copyright 2006-2012 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 EF4_SELFTEST_H #define EF4_SELFTEST_H #include "net_driver.h" /* * Self tests */ struct ef4_loopback_self_tests { int tx_sent[EF4_TXQ_TYPES]; int tx_done[EF4_TXQ_TYPES]; int rx_good; int rx_bad; }; #define EF4_MAX_PHY_TESTS 20 /* Efx self test results * For fields which are not counters, 1 indicates success and -1 * indicates failure; 0 indicates test could not be run. */ struct ef4_self_tests { /* online tests */ int phy_alive; int nvram; int interrupt; int eventq_dma[EF4_MAX_CHANNELS]; int eventq_int[EF4_MAX_CHANNELS]; /* offline tests */ int memory; int registers; int phy_ext[EF4_MAX_PHY_TESTS]; struct ef4_loopback_self_tests loopback[LOOPBACK_TEST_MAX + 1]; }; void ef4_loopback_rx_packet(struct ef4_nic *efx, const char *buf_ptr, int pkt_len); int ef4_selftest(struct ef4_nic *efx, struct ef4_self_tests *tests, unsigned flags); void ef4_selftest_async_start(struct ef4_nic *efx); void ef4_selftest_async_cancel(struct ef4_nic *efx); void ef4_selftest_async_work(struct work_struct *data); #endif /* EF4_SELFTEST_H */