selftest.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. /* Efx self test results
  23. * For fields which are not counters, 1 indicates success and -1
  24. * indicates failure.
  25. */
  26. struct efx_self_tests {
  27. /* online tests */
  28. int mii;
  29. int nvram;
  30. int interrupt;
  31. int eventq_dma[EFX_MAX_CHANNELS];
  32. int eventq_int[EFX_MAX_CHANNELS];
  33. int eventq_poll[EFX_MAX_CHANNELS];
  34. /* offline tests */
  35. int registers;
  36. int phy;
  37. int loopback_speed;
  38. int loopback_full_duplex;
  39. struct efx_loopback_self_tests loopback[LOOPBACK_TEST_MAX + 1];
  40. };
  41. extern void efx_loopback_rx_packet(struct efx_nic *efx,
  42. const char *buf_ptr, int pkt_len);
  43. extern int efx_online_test(struct efx_nic *efx,
  44. struct efx_self_tests *tests);
  45. extern int efx_offline_test(struct efx_nic *efx,
  46. struct efx_self_tests *tests,
  47. unsigned int loopback_modes);
  48. #endif /* EFX_SELFTEST_H */