vhost: fix features definition location

Message ID 1592507300-442031-1-git-send-email-matan@mellanox.com (mailing list archive)
State Accepted, archived
Delegated to: Maxime Coquelin
Headers
Series vhost: fix features definition location |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-nxp-Performance success Performance Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/travis-robot success Travis build: passed
ci/Intel-compilation success Compilation OK
ci/iol-testing success Testing PASS

Commit Message

Matan Azrad June 18, 2020, 7:08 p.m. UTC
The vhost library provide an infrastructure in order to help the DPDK
users to manage vhost devices.

One of the infrastructure parts is the features enablement APIs.

Some features bits may be defined only in the internal file vhost.h in
case the kernel version doesn't include them.

Hence, user running on old kernel may not be able to manage thus
features.

Move all the feature bits definitions to the API file rte_vhost.h.

Fixes: db69be54b6ff ("vhost: hide internal code")
Fixes: 8d286dbeb8d7 ("vhost: fix multiple queue not enabled for old kernels")
Fixes: 3d3c6590b58c ("vhost: enable virtio MTU feature")
Fixes: 704098fc478c ("vhost: fix build with old kernels")
Cc: stable@dpdk.org

Signed-off-by: Matan Azrad <matan@mellanox.com>
---
 lib/librte_vhost/rte_vhost.h | 17 +++++++++++++++++
 lib/librte_vhost/vhost.h     | 17 -----------------
 2 files changed, 17 insertions(+), 17 deletions(-)
  

Comments

Chenbo Xia June 23, 2020, 5:20 a.m. UTC | #1
> -----Original Message-----
> From: stable <stable-bounces@dpdk.org> On Behalf Of Matan Azrad
> Sent: Friday, June 19, 2020 3:08 AM
> To: Maxime Coquelin <maxime.coquelin@redhat.com>
> Cc: dev@dpdk.org; stable@dpdk.org
> Subject: [dpdk-stable] [PATCH] vhost: fix features definition location
> 
> The vhost library provide an infrastructure in order to help the DPDK users to
> manage vhost devices.
> 
> One of the infrastructure parts is the features enablement APIs.
> 
> Some features bits may be defined only in the internal file vhost.h in case the
> kernel version doesn't include them.
> 
> Hence, user running on old kernel may not be able to manage thus features.
> 
> Move all the feature bits definitions to the API file rte_vhost.h.
> 
> Fixes: db69be54b6ff ("vhost: hide internal code")
> Fixes: 8d286dbeb8d7 ("vhost: fix multiple queue not enabled for old kernels")
> Fixes: 3d3c6590b58c ("vhost: enable virtio MTU feature")
> Fixes: 704098fc478c ("vhost: fix build with old kernels")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Matan Azrad <matan@mellanox.com>
> ---
>  lib/librte_vhost/rte_vhost.h | 17 +++++++++++++++++
>  lib/librte_vhost/vhost.h     | 17 -----------------
>  2 files changed, 17 insertions(+), 17 deletions(-)
> 
> diff --git a/lib/librte_vhost/rte_vhost.h b/lib/librte_vhost/rte_vhost.h index
> d43669f..329ed8a 100644
> --- a/lib/librte_vhost/rte_vhost.h
> +++ b/lib/librte_vhost/rte_vhost.h
> @@ -36,6 +36,23 @@
>  /* support only linear buffers (no chained mbufs) */
>  #define RTE_VHOST_USER_LINEARBUF_SUPPORT	(1ULL << 6)
> 
> +/* Features. */
> +#ifndef VIRTIO_NET_F_GUEST_ANNOUNCE
> + #define VIRTIO_NET_F_GUEST_ANNOUNCE 21 #endif
> +
> +#ifndef VIRTIO_NET_F_MQ
> + #define VIRTIO_NET_F_MQ		22
> +#endif
> +
> +#ifndef VIRTIO_NET_F_MTU
> + #define VIRTIO_NET_F_MTU 3
> +#endif
> +
> +#ifndef VIRTIO_F_ANY_LAYOUT
> + #define VIRTIO_F_ANY_LAYOUT		27
> +#endif
> +
>  /** Protocol features. */
>  #ifndef VHOST_USER_PROTOCOL_F_MQ
>  #define VHOST_USER_PROTOCOL_F_MQ	0
> diff --git a/lib/librte_vhost/vhost.h b/lib/librte_vhost/vhost.h index
> df98d15..17f1e9a 100644
> --- a/lib/librte_vhost/vhost.h
> +++ b/lib/librte_vhost/vhost.h
> @@ -202,26 +202,9 @@ struct vhost_virtqueue {
>  	TAILQ_HEAD(, vhost_iotlb_entry) iotlb_pending_list;  }
> __rte_cache_aligned;
> 
> -/* Old kernels have no such macros defined */ -#ifndef
> VIRTIO_NET_F_GUEST_ANNOUNCE
> - #define VIRTIO_NET_F_GUEST_ANNOUNCE 21 -#endif
> -
> -#ifndef VIRTIO_NET_F_MQ
> - #define VIRTIO_NET_F_MQ		22
> -#endif
> -
>  #define VHOST_MAX_VRING			0x100
>  #define VHOST_MAX_QUEUE_PAIRS		0x80
> 
> -#ifndef VIRTIO_NET_F_MTU
> - #define VIRTIO_NET_F_MTU 3
> -#endif
> -
> -#ifndef VIRTIO_F_ANY_LAYOUT
> - #define VIRTIO_F_ANY_LAYOUT		27
> -#endif
> -
>  /* Declare IOMMU related bits for older kernels */  #ifndef
> VIRTIO_F_IOMMU_PLATFORM
> 
> --
> 1.8.3.1

Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
  
Maxime Coquelin June 30, 2020, 7:34 a.m. UTC | #2
On 6/18/20 9:08 PM, Matan Azrad wrote:
> The vhost library provide an infrastructure in order to help the DPDK
> users to manage vhost devices.
> 
> One of the infrastructure parts is the features enablement APIs.
> 
> Some features bits may be defined only in the internal file vhost.h in
> case the kernel version doesn't include them.
> 
> Hence, user running on old kernel may not be able to manage thus
> features.
> 
> Move all the feature bits definitions to the API file rte_vhost.h.
> 
> Fixes: db69be54b6ff ("vhost: hide internal code")
> Fixes: 8d286dbeb8d7 ("vhost: fix multiple queue not enabled for old kernels")
> Fixes: 3d3c6590b58c ("vhost: enable virtio MTU feature")
> Fixes: 704098fc478c ("vhost: fix build with old kernels")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Matan Azrad <matan@mellanox.com>
> ---
>  lib/librte_vhost/rte_vhost.h | 17 +++++++++++++++++
>  lib/librte_vhost/vhost.h     | 17 -----------------
>  2 files changed, 17 insertions(+), 17 deletions(-)
> 

Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>

Thanks,
Maxime
  
Maxime Coquelin June 30, 2020, 7:41 a.m. UTC | #3
On 6/30/20 9:34 AM, Maxime Coquelin wrote:
> 
> 
> On 6/18/20 9:08 PM, Matan Azrad wrote:
>> The vhost library provide an infrastructure in order to help the DPDK
>> users to manage vhost devices.
>>
>> One of the infrastructure parts is the features enablement APIs.
>>
>> Some features bits may be defined only in the internal file vhost.h in
>> case the kernel version doesn't include them.
>>
>> Hence, user running on old kernel may not be able to manage thus
>> features.
>>
>> Move all the feature bits definitions to the API file rte_vhost.h.
>>
>> Fixes: db69be54b6ff ("vhost: hide internal code")
>> Fixes: 8d286dbeb8d7 ("vhost: fix multiple queue not enabled for old kernels")
>> Fixes: 3d3c6590b58c ("vhost: enable virtio MTU feature")
>> Fixes: 704098fc478c ("vhost: fix build with old kernels")
>> Cc: stable@dpdk.org
>>
>> Signed-off-by: Matan Azrad <matan@mellanox.com>
>> ---
>>  lib/librte_vhost/rte_vhost.h | 17 +++++++++++++++++
>>  lib/librte_vhost/vhost.h     | 17 -----------------
>>  2 files changed, 17 insertions(+), 17 deletions(-)
>>
> 
> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
> 
> Thanks,
> Maxime
> 
Applied to dpdk-next-virtio/master

Thanks,
Maxime
  

Patch

diff --git a/lib/librte_vhost/rte_vhost.h b/lib/librte_vhost/rte_vhost.h
index d43669f..329ed8a 100644
--- a/lib/librte_vhost/rte_vhost.h
+++ b/lib/librte_vhost/rte_vhost.h
@@ -36,6 +36,23 @@ 
 /* support only linear buffers (no chained mbufs) */
 #define RTE_VHOST_USER_LINEARBUF_SUPPORT	(1ULL << 6)
 
+/* Features. */
+#ifndef VIRTIO_NET_F_GUEST_ANNOUNCE
+ #define VIRTIO_NET_F_GUEST_ANNOUNCE 21
+#endif
+
+#ifndef VIRTIO_NET_F_MQ
+ #define VIRTIO_NET_F_MQ		22
+#endif
+
+#ifndef VIRTIO_NET_F_MTU
+ #define VIRTIO_NET_F_MTU 3
+#endif
+
+#ifndef VIRTIO_F_ANY_LAYOUT
+ #define VIRTIO_F_ANY_LAYOUT		27
+#endif
+
 /** Protocol features. */
 #ifndef VHOST_USER_PROTOCOL_F_MQ
 #define VHOST_USER_PROTOCOL_F_MQ	0
diff --git a/lib/librte_vhost/vhost.h b/lib/librte_vhost/vhost.h
index df98d15..17f1e9a 100644
--- a/lib/librte_vhost/vhost.h
+++ b/lib/librte_vhost/vhost.h
@@ -202,26 +202,9 @@  struct vhost_virtqueue {
 	TAILQ_HEAD(, vhost_iotlb_entry) iotlb_pending_list;
 } __rte_cache_aligned;
 
-/* Old kernels have no such macros defined */
-#ifndef VIRTIO_NET_F_GUEST_ANNOUNCE
- #define VIRTIO_NET_F_GUEST_ANNOUNCE 21
-#endif
-
-#ifndef VIRTIO_NET_F_MQ
- #define VIRTIO_NET_F_MQ		22
-#endif
-
 #define VHOST_MAX_VRING			0x100
 #define VHOST_MAX_QUEUE_PAIRS		0x80
 
-#ifndef VIRTIO_NET_F_MTU
- #define VIRTIO_NET_F_MTU 3
-#endif
-
-#ifndef VIRTIO_F_ANY_LAYOUT
- #define VIRTIO_F_ANY_LAYOUT		27
-#endif
-
 /* Declare IOMMU related bits for older kernels */
 #ifndef VIRTIO_F_IOMMU_PLATFORM