On 11/22/18 7:23 PM, Ferruh Yigit wrote:
On 11/22/2018 5:09 PM, Maxime Coquelin wrote:
The packed ring defines were declared only if kernel
header does not declare them.
The problem is that they are not applied in upstream kernel,
and some changes in the names have been required.

This patch declares the defines unconditionally, which
fixes potential build issues.

+1 to address possible build issues.


Fixes: 297b1e7350f6 ("vhost: add virtio packed virtqueue defines")
Cc: sta...@dpdk.org

Signed-off-by: Maxime Coquelin <maxime.coque...@redhat.com>
---
  lib/librte_vhost/vhost.h | 22 +++++++++++-----------
  1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/lib/librte_vhost/vhost.h b/lib/librte_vhost/vhost.h
index 760f42192..5218f1b12 100644
--- a/lib/librte_vhost/vhost.h
+++ b/lib/librte_vhost/vhost.h
@@ -219,13 +219,6 @@ struct vhost_msg {
#define VIRTIO_F_RING_PACKED 34 -#define VRING_DESC_F_NEXT 1
-#define VRING_DESC_F_WRITE     2
-#define VRING_DESC_F_INDIRECT  4

Why these are not re-defined below? Not used?

These defines are in kernel headers since the beginning of virtio
support, so there are no reasons to keep them (and they aren't packed-
ring specific).

I can let them if you prefer, it does not hurt but shouldn't be here.

-
-#define VRING_DESC_F_AVAIL     (1ULL << 7)
-#define VRING_DESC_F_USED      (1ULL << 15)
-
  struct vring_packed_desc {
        uint64_t addr;
        uint32_t len;
@@ -233,16 +226,23 @@ struct vring_packed_desc {
        uint16_t flags;
  };
-#define VRING_EVENT_F_ENABLE 0x0
-#define VRING_EVENT_F_DISABLE 0x1
-#define VRING_EVENT_F_DESC 0x2
-
  struct vring_packed_desc_event {
        uint16_t off_wrap;
        uint16_t flags;
  };
  #endif
+/*
+ * Declare below packed ring defines unconditionally
+ * as Kernel header might use different names.
+ */
+#define VRING_DESC_F_AVAIL     (1ULL << 7)
+#define VRING_DESC_F_USED      (1ULL << 15)
+
+#define VRING_EVENT_F_ENABLE 0x0
+#define VRING_EVENT_F_DISABLE 0x1
+#define VRING_EVENT_F_DESC 0x2

What if Linux changes mind and uses old names again, build will fail again. If
related part in Linux is not released yet, what do you think being on safe side
and adding these defines with "#ifndef" wrap?

There are the "old" ones.
In any case it will work (I tested it).

In a future release, I plan to get rid of this dependency with Kernel
which only causes problems.

There was a benefit at the beginning when all needed declarations where
in the Kernel headers. But now, every time we add a new virtio feature,
we have to check kernel supports it and if not define it.

Thanks,
Maxime
+
  /*
   * Available and used descs are in same order
   */


Reply via email to