virtio.go 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. package netlink
  2. // features for virtio net
  3. const (
  4. VIRTIO_NET_F_CSUM = 0 // Host handles pkts w/ partial csum
  5. VIRTIO_NET_F_GUEST_CSUM = 1 // Guest handles pkts w/ partial csum
  6. VIRTIO_NET_F_CTRL_GUEST_OFFLOADS = 2 // Dynamic offload configuration.
  7. VIRTIO_NET_F_MTU = 3 // Initial MTU advice
  8. VIRTIO_NET_F_MAC = 5 // Host has given MAC address.
  9. VIRTIO_NET_F_GUEST_TSO4 = 7 // Guest can handle TSOv4 in.
  10. VIRTIO_NET_F_GUEST_TSO6 = 8 // Guest can handle TSOv6 in.
  11. VIRTIO_NET_F_GUEST_ECN = 9 // Guest can handle TSO[6] w/ ECN in.
  12. VIRTIO_NET_F_GUEST_UFO = 10 // Guest can handle UFO in.
  13. VIRTIO_NET_F_HOST_TSO4 = 11 // Host can handle TSOv4 in.
  14. VIRTIO_NET_F_HOST_TSO6 = 12 // Host can handle TSOv6 in.
  15. VIRTIO_NET_F_HOST_ECN = 13 // Host can handle TSO[6] w/ ECN in.
  16. VIRTIO_NET_F_HOST_UFO = 14 // Host can handle UFO in.
  17. VIRTIO_NET_F_MRG_RXBUF = 15 // Host can merge receive buffers.
  18. VIRTIO_NET_F_STATUS = 16 // virtio_net_config.status available
  19. VIRTIO_NET_F_CTRL_VQ = 17 // Control channel available
  20. VIRTIO_NET_F_CTRL_RX = 18 // Control channel RX mode support
  21. VIRTIO_NET_F_CTRL_VLAN = 19 // Control channel VLAN filtering
  22. VIRTIO_NET_F_CTRL_RX_EXTRA = 20 // Extra RX mode control support
  23. VIRTIO_NET_F_GUEST_ANNOUNCE = 21 // Guest can announce device on the* network
  24. VIRTIO_NET_F_MQ = 22 // Device supports Receive Flow Steering
  25. VIRTIO_NET_F_CTRL_MAC_ADDR = 23 // Set MAC address
  26. VIRTIO_NET_F_VQ_NOTF_COAL = 52 // Device supports virtqueue notification coalescing
  27. VIRTIO_NET_F_NOTF_COAL = 53 // Device supports notifications coalescing
  28. VIRTIO_NET_F_GUEST_USO4 = 54 // Guest can handle USOv4 in.
  29. VIRTIO_NET_F_GUEST_USO6 = 55 // Guest can handle USOv6 in.
  30. VIRTIO_NET_F_HOST_USO = 56 // Host can handle USO in.
  31. VIRTIO_NET_F_HASH_REPORT = 57 // Supports hash report
  32. VIRTIO_NET_F_GUEST_HDRLEN = 59 // Guest provides the exact hdr_len value.
  33. VIRTIO_NET_F_RSS = 60 // Supports RSS RX steering
  34. VIRTIO_NET_F_RSC_EXT = 61 // extended coalescing info
  35. VIRTIO_NET_F_STANDBY = 62 // Act as standby for another device with the same MAC.
  36. VIRTIO_NET_F_SPEED_DUPLEX = 63 // Device set linkspeed and duplex
  37. VIRTIO_NET_F_GSO = 6 // Host handles pkts any GSO type
  38. )
  39. // virtio net status
  40. const (
  41. VIRTIO_NET_S_LINK_UP = 1 // Link is up
  42. VIRTIO_NET_S_ANNOUNCE = 2 // Announcement is needed
  43. )
  44. // virtio config
  45. const (
  46. // Do we get callbacks when the ring is completely used, even if we've
  47. // suppressed them?
  48. VIRTIO_F_NOTIFY_ON_EMPTY = 24
  49. // Can the device handle any descriptor layout?
  50. VIRTIO_F_ANY_LAYOUT = 27
  51. // v1.0 compliant
  52. VIRTIO_F_VERSION_1 = 32
  53. // If clear - device has the platform DMA (e.g. IOMMU) bypass quirk feature.
  54. // If set - use platform DMA tools to access the memory.
  55. // Note the reverse polarity (compared to most other features),
  56. // this is for compatibility with legacy systems.
  57. VIRTIO_F_ACCESS_PLATFORM = 33
  58. // Legacy name for VIRTIO_F_ACCESS_PLATFORM (for compatibility with old userspace)
  59. VIRTIO_F_IOMMU_PLATFORM = VIRTIO_F_ACCESS_PLATFORM
  60. // This feature indicates support for the packed virtqueue layout.
  61. VIRTIO_F_RING_PACKED = 34
  62. // Inorder feature indicates that all buffers are used by the device
  63. // in the same order in which they have been made available.
  64. VIRTIO_F_IN_ORDER = 35
  65. // This feature indicates that memory accesses by the driver and the
  66. // device are ordered in a way described by the platform.
  67. VIRTIO_F_ORDER_PLATFORM = 36
  68. // Does the device support Single Root I/O Virtualization?
  69. VIRTIO_F_SR_IOV = 37
  70. // This feature indicates that the driver passes extra data (besides
  71. // identifying the virtqueue) in its device notifications.
  72. VIRTIO_F_NOTIFICATION_DATA = 38
  73. // This feature indicates that the driver uses the data provided by the device
  74. // as a virtqueue identifier in available buffer notifications.
  75. VIRTIO_F_NOTIF_CONFIG_DATA = 39
  76. // This feature indicates that the driver can reset a queue individually.
  77. VIRTIO_F_RING_RESET = 40
  78. )
  79. // virtio device ids
  80. const (
  81. VIRTIO_ID_NET = 1 // virtio net
  82. VIRTIO_ID_BLOCK = 2 // virtio block
  83. VIRTIO_ID_CONSOLE = 3 // virtio console
  84. VIRTIO_ID_RNG = 4 // virtio rng
  85. VIRTIO_ID_BALLOON = 5 // virtio balloon
  86. VIRTIO_ID_IOMEM = 6 // virtio ioMemory
  87. VIRTIO_ID_RPMSG = 7 // virtio remote processor messaging
  88. VIRTIO_ID_SCSI = 8 // virtio scsi
  89. VIRTIO_ID_9P = 9 // 9p virtio console
  90. VIRTIO_ID_MAC80211_WLAN = 10 // virtio WLAN MAC
  91. VIRTIO_ID_RPROC_SERIAL = 11 // virtio remoteproc serial link
  92. VIRTIO_ID_CAIF = 12 // Virtio caif
  93. VIRTIO_ID_MEMORY_BALLOON = 13 // virtio memory balloon
  94. VIRTIO_ID_GPU = 16 // virtio GPU
  95. VIRTIO_ID_CLOCK = 17 // virtio clock/timer
  96. VIRTIO_ID_INPUT = 18 // virtio input
  97. VIRTIO_ID_VSOCK = 19 // virtio vsock transport
  98. VIRTIO_ID_CRYPTO = 20 // virtio crypto
  99. VIRTIO_ID_SIGNAL_DIST = 21 // virtio signal distribution device
  100. VIRTIO_ID_PSTORE = 22 // virtio pstore device
  101. VIRTIO_ID_IOMMU = 23 // virtio IOMMU
  102. VIRTIO_ID_MEM = 24 // virtio mem
  103. VIRTIO_ID_SOUND = 25 // virtio sound
  104. VIRTIO_ID_FS = 26 // virtio filesystem
  105. VIRTIO_ID_PMEM = 27 // virtio pmem
  106. VIRTIO_ID_RPMB = 28 // virtio rpmb
  107. VIRTIO_ID_MAC80211_HWSIM = 29 // virtio mac80211-hwsim
  108. VIRTIO_ID_VIDEO_ENCODER = 30 // virtio video encoder
  109. VIRTIO_ID_VIDEO_DECODER = 31 // virtio video decoder
  110. VIRTIO_ID_SCMI = 32 // virtio SCMI
  111. VIRTIO_ID_NITRO_SEC_MOD = 33 // virtio nitro secure module
  112. VIRTIO_ID_I2C_ADAPTER = 34 // virtio i2c adapter
  113. VIRTIO_ID_WATCHDOG = 35 // virtio watchdog
  114. VIRTIO_ID_CAN = 36 // virtio can
  115. VIRTIO_ID_DMABUF = 37 // virtio dmabuf
  116. VIRTIO_ID_PARAM_SERV = 38 // virtio parameter server
  117. VIRTIO_ID_AUDIO_POLICY = 39 // virtio audio policy
  118. VIRTIO_ID_BT = 40 // virtio bluetooth
  119. VIRTIO_ID_GPIO = 41 // virtio gpio
  120. // Virtio Transitional IDs
  121. VIRTIO_TRANS_ID_NET = 0x1000 // transitional virtio net
  122. VIRTIO_TRANS_ID_BLOCK = 0x1001 // transitional virtio block
  123. VIRTIO_TRANS_ID_BALLOON = 0x1002 // transitional virtio balloon
  124. VIRTIO_TRANS_ID_CONSOLE = 0x1003 // transitional virtio console
  125. VIRTIO_TRANS_ID_SCSI = 0x1004 // transitional virtio SCSI
  126. VIRTIO_TRANS_ID_RNG = 0x1005 // transitional virtio rng
  127. VIRTIO_TRANS_ID_9P = 0x1009 // transitional virtio 9p console
  128. )