vhost: advertise support in-order feature
If devices always use descriptors in the same order in which they have been made available. These devices can offer the VIRTIO_F_IN_ORDER feature. If negotiated, this knowledge allows devices to notify the use of a batch of buffers to virtio driver by only writing used ring index. Vhost user device has supported this feature by default. If vhost dequeue zero is enabled, should disable VIRTIO_F_IN_ORDER as vhost can’t assure that descriptors returned from NIC are in order. Signed-off-by: Marvin Liu <yong.liu@intel.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
This commit is contained in:
parent
246c5cc5f0
commit
22d2e78840
@ -853,6 +853,12 @@ rte_vhost_driver_register(const char *path, uint64_t flags)
|
||||
vsocket->supported_features = VIRTIO_NET_SUPPORTED_FEATURES;
|
||||
vsocket->features = VIRTIO_NET_SUPPORTED_FEATURES;
|
||||
|
||||
/* Dequeue zero copy can't assure descriptors returned in order */
|
||||
if (vsocket->dequeue_zero_copy) {
|
||||
vsocket->supported_features &= ~(1ULL << VIRTIO_F_IN_ORDER);
|
||||
vsocket->features &= ~(1ULL << VIRTIO_F_IN_ORDER);
|
||||
}
|
||||
|
||||
if (!(flags & RTE_VHOST_USER_IOMMU_SUPPORT)) {
|
||||
vsocket->supported_features &= ~(1ULL << VIRTIO_F_IOMMU_PLATFORM);
|
||||
vsocket->features &= ~(1ULL << VIRTIO_F_IOMMU_PLATFORM);
|
||||
|
@ -191,6 +191,13 @@ struct vhost_msg {
|
||||
#define VIRTIO_F_VERSION_1 32
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Available and used descs are in same order
|
||||
*/
|
||||
#ifndef VIRTIO_F_IN_ORDER
|
||||
#define VIRTIO_F_IN_ORDER 35
|
||||
#endif
|
||||
|
||||
/* Features supported by this builtin vhost-user net driver. */
|
||||
#define VIRTIO_NET_SUPPORTED_FEATURES ((1ULL << VIRTIO_NET_F_MRG_RXBUF) | \
|
||||
(1ULL << VIRTIO_F_ANY_LAYOUT) | \
|
||||
@ -214,7 +221,8 @@ struct vhost_msg {
|
||||
(1ULL << VIRTIO_NET_F_GUEST_ECN) | \
|
||||
(1ULL << VIRTIO_RING_F_INDIRECT_DESC) | \
|
||||
(1ULL << VIRTIO_RING_F_EVENT_IDX) | \
|
||||
(1ULL << VIRTIO_NET_F_MTU) | \
|
||||
(1ULL << VIRTIO_NET_F_MTU) | \
|
||||
(1ULL << VIRTIO_F_IN_ORDER) | \
|
||||
(1ULL << VIRTIO_F_IOMMU_PLATFORM))
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user