selftest.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /****************************************************************************
  2. * Driver for Solarflare Solarstorm network controllers and boards
  3. * Copyright 2005-2006 Fen Systems Ltd.
  4. * Copyright 2006-2008 Solarflare Communications Inc.
  5. *
  6. * This program is free software; you can redistribute it and/or modify it
  7. * under the terms of the GNU General Public License version 2 as published
  8. * by the Free Software Foundation, incorporated herein by reference.
  9. */
  10. #ifndef EFX_SELFTEST_H
  11. #define EFX_SELFTEST_H
  12. #include "net_driver.h"
  13. /*
  14. * Self tests
  15. */
  16. struct efx_loopback_self_tests {
  17. int tx_sent[EFX_TX_QUEUE_COUNT];
  18. int tx_done[EFX_TX_QUEUE_COUNT];
  19. int rx_good;
  20. int rx_bad;
  21. };
  22. #define EFX_MAX_PHY_TESTS 20
  23. /* Efx self test results
  24. * For fields which are not counters, 1 indicates success and -1
  25. * indicates failure.
  26. */
  27. struct efx_self_tests {
  28. /* online tests */
  29. int mdio;
  30. int nvram;
  31. int interrupt;
  32. int eventq_dma[EFX_MAX_CHANNELS];
  33. int eventq_int[EFX_MAX_CHANNELS];
  34. int eventq_poll[EFX_MAX_CHANNELS];
  35. /* offline tests */
  36. int registers;
  37. int phy[EFX_MAX_PHY_TESTS];
  38. struct efx_loopback_self_tests loopback[LOOPBACK_TEST_MAX + 1];
  39. };
  40. extern void efx_loopback_rx_packet(struct efx_nic *efx,
  41. const char *buf_ptr, int pkt_len);
  42. extern int efx_selftest(struct efx_nic *efx,
  43. struct efx_self_tests *tests,
  44. unsigned flags);
  45. #endif /* EFX_SELFTEST_H */