[1/3] common/mlx5: fix relaxed ordering support detection

Message ID 1589286106-23411-2-git-send-email-shirik@mellanox.com (mailing list archive)
State Accepted, archived
Delegated to: Raslan Darawsheh
Headers
Series mlx5: relaxed ordering fixes |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-nxp-Performance success Performance Testing PASS
ci/Intel-compilation success Compilation OK
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-testing fail Testing issues

Commit Message

Shiri Kuzin May 12, 2020, 12:21 p.m. UTC
  Relaxed ordering is a PCI optimization that allows reordering
of reads/writes in order to improve performance.

In order to enable this optimization only when relaxed ordering
is supported, it is checked if IBV_ACCESS_RELAXED_ORDERING is
defined in verbs.h.

Since IBV_ACCESS_RELAXED_ORDERING is an enum and not
defined relaxed ordering wasn't enabled even when supported.

This issue is fixed by using AUTOCONF to check if relaxed
ordering is supported and disabling only if it isn't.

Fixes: 53ac93f71ad1 ("net/mlx5: create relaxed ordering memory regions")

Signed-off-by: Shiri Kuzin <shirik@mellanox.com>
---
 drivers/common/mlx5/Makefile    | 5 +++++
 drivers/common/mlx5/meson.build | 2 ++
 drivers/common/mlx5/mlx5_glue.h | 2 +-
 3 files changed, 8 insertions(+), 1 deletion(-)
  

Patch

diff --git a/drivers/common/mlx5/Makefile b/drivers/common/mlx5/Makefile
index 8b663ef..0d8cc1b 100644
--- a/drivers/common/mlx5/Makefile
+++ b/drivers/common/mlx5/Makefile
@@ -68,6 +68,11 @@  mlx5_autoconf.h.new: FORCE
 mlx5_autoconf.h.new: $(RTE_SDK)/buildtools/auto-config-h.sh
 	$Q $(RM) -f -- '$@'
 	$Q sh -- '$<' '$@' \
+		HAVE_IBV_RELAXED_ORDERING \
+		infiniband/verbs.h \
+		enum IBV_ACCESS_RELAXED_ORDERING \
+		$(AUTOCONF_OUTPUT)
+	$Q sh -- '$<' '$@' \
 		HAVE_IBV_DEVICE_STRIDING_RQ_SUPPORT \
 		infiniband/mlx5dv.h \
 		enum MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX \
diff --git a/drivers/common/mlx5/meson.build b/drivers/common/mlx5/meson.build
index 165aa25..5a802ba 100644
--- a/drivers/common/mlx5/meson.build
+++ b/drivers/common/mlx5/meson.build
@@ -94,6 +94,8 @@  has_member_args = [
 # [ "MACRO to define if found", "header for the search",
 #   "symbol to search" ]
 has_sym_args = [
+	[ 'HAVE_IBV_RELAXED_ORDERING', 'infiniband/verbs.h',
+	'IBV_ACCESS_RELAXED_ORDERING ' ],
 	[ 'HAVE_IBV_DEVICE_STRIDING_RQ_SUPPORT', 'infiniband/mlx5dv.h',
 	'MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX' ],
 	[ 'HAVE_IBV_DEVICE_TUNNEL_SUPPORT', 'infiniband/mlx5dv.h',
diff --git a/drivers/common/mlx5/mlx5_glue.h b/drivers/common/mlx5/mlx5_glue.h
index 184c410..81d6a22 100644
--- a/drivers/common/mlx5/mlx5_glue.h
+++ b/drivers/common/mlx5/mlx5_glue.h
@@ -98,7 +98,7 @@ 
 			uint64_t comp_mask; };
 #endif
 
-#ifndef IBV_ACCESS_RELAXED_ORDERING
+#ifndef HAVE_IBV_RELAXED_ORDERING
 #define IBV_ACCESS_RELAXED_ORDERING 0
 #endif