You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

intelxlvf.h 2.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #ifndef _INTELXLVF_H
  2. #define _INTELXLVF_H
  3. /** @file
  4. *
  5. * Intel 40 Gigabit Ethernet virtual function network card driver
  6. *
  7. */
  8. FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
  9. #include "intelxl.h"
  10. /** BAR size */
  11. #define INTELXLVF_BAR_SIZE 0x10000
  12. /** Transmit Queue Tail Register */
  13. #define INTELXLVF_QTX_TAIL 0x00000
  14. /** Receive Queue Tail Register */
  15. #define INTELXLVF_QRX_TAIL 0x02000
  16. /** VF Interrupt Zero Dynamic Control Register */
  17. #define INTELXLVF_VFINT_DYN_CTL0 0x5c00
  18. /** VF Admin Queue register block */
  19. #define INTELXLVF_ADMIN 0x6000
  20. /** Admin Command Queue Base Address Low Register (offset) */
  21. #define INTELXLVF_ADMIN_CMD_BAL 0x1c00
  22. /** Admin Command Queue Base Address High Register (offset) */
  23. #define INTELXLVF_ADMIN_CMD_BAH 0x1800
  24. /** Admin Command Queue Length Register (offset) */
  25. #define INTELXLVF_ADMIN_CMD_LEN 0x0800
  26. /** Admin Command Queue Head Register (offset) */
  27. #define INTELXLVF_ADMIN_CMD_HEAD 0x0400
  28. /** Admin Command Queue Tail Register (offset) */
  29. #define INTELXLVF_ADMIN_CMD_TAIL 0x2400
  30. /** Admin Event Queue Base Address Low Register (offset) */
  31. #define INTELXLVF_ADMIN_EVT_BAL 0x0c00
  32. /** Admin Event Queue Base Address High Register (offset) */
  33. #define INTELXLVF_ADMIN_EVT_BAH 0x0000
  34. /** Admin Event Queue Length Register (offset) */
  35. #define INTELXLVF_ADMIN_EVT_LEN 0x2000
  36. /** Admin Event Queue Head Register (offset) */
  37. #define INTELXLVF_ADMIN_EVT_HEAD 0x1400
  38. /** Admin Event Queue Tail Register (offset) */
  39. #define INTELXLVF_ADMIN_EVT_TAIL 0x1000
  40. /** Maximum time to wait for a VF admin request to complete */
  41. #define INTELXLVF_ADMIN_MAX_WAIT_MS 2000
  42. /** VF Reset Status Register */
  43. #define INTELXLVF_VFGEN_RSTAT 0x8800
  44. #define INTELXLVF_VFGEN_RSTAT_VFR_STATE(x) ( (x) & 0x3 )
  45. #define INTELXLVF_VFGEN_RSTAT_VFR_STATE_ACTIVE 0x2
  46. /** Maximum time to wait for reset to complete */
  47. #define INTELXLVF_RESET_MAX_WAIT_MS 1000
  48. /**
  49. * Initialise descriptor ring
  50. *
  51. * @v ring Descriptor ring
  52. * @v count Number of descriptors
  53. * @v len Length of a single descriptor
  54. * @v tail Tail register offset
  55. */
  56. static inline __attribute__ (( always_inline)) void
  57. intelxlvf_init_ring ( struct intelxl_ring *ring, unsigned int count,
  58. size_t len, unsigned int tail ) {
  59. ring->len = ( count * len );
  60. ring->tail = tail;
  61. }
  62. #endif /* _INTELXLVF_H */