If bonding Infiniband device is found the unified E-Switch
is supposed and the extra rdma-core/kernel support is needed
to retrieve vport indices. The patch introduces this feature
defines, bonding support check is added to probe routine.

Signed-off-by: Viacheslav Ovsiienko <viachesl...@mellanox.com>
---
 drivers/net/mlx5/Makefile    |  5 +++++
 drivers/net/mlx5/meson.build |  2 ++
 drivers/net/mlx5/mlx5.c      | 13 +++++++++++++
 3 files changed, 20 insertions(+)

diff --git a/drivers/net/mlx5/Makefile b/drivers/net/mlx5/Makefile
index 6c9d4b5..04de93a 100644
--- a/drivers/net/mlx5/Makefile
+++ b/drivers/net/mlx5/Makefile
@@ -170,6 +170,11 @@ mlx5_autoconf.h.new: $(RTE_SDK)/buildtools/auto-config-h.sh
                func mlx5dv_dr_action_create_push_vlan \
                $(AUTOCONF_OUTPUT)
        $Q sh -- '$<' '$@' \
+               HAVE_MLX5DV_DR_DEVX_PORT \
+               infiniband/mlx5dv.h \
+               func mlx5dv_query_devx_port \
+               $(AUTOCONF_OUTPUT)
+       $Q sh -- '$<' '$@' \
                HAVE_IBV_DEVX_OBJ \
                infiniband/mlx5dv.h \
                func mlx5dv_devx_obj_create \
diff --git a/drivers/net/mlx5/meson.build b/drivers/net/mlx5/meson.build
index fa68b54..f8e3cce 100644
--- a/drivers/net/mlx5/meson.build
+++ b/drivers/net/mlx5/meson.build
@@ -120,6 +120,8 @@ if build
                'IBV_WQ_FLAGS_PCI_WRITE_END_PADDING' ],
                [ 'HAVE_IBV_WQ_FLAG_RX_END_PADDING', 'infiniband/verbs.h',
                'IBV_WQ_FLAG_RX_END_PADDING' ],
+               [ 'HAVE_MLX5DV_DR_DEVX_PORT', 'infiniband/mlx5dv.h',
+               'mlx5dv_query_devx_port' ],
                [ 'HAVE_IBV_DEVX_OBJ', 'infiniband/mlx5dv.h',
                'mlx5dv_devx_obj_create' ],
                [ 'HAVE_IBV_FLOW_DEVX_COUNTERS', 'infiniband/mlx5dv.h',
diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index 7c9fd54..25d1530 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -2373,6 +2373,19 @@ struct mlx5_dev_spawn_data {
                        goto exit;
                }
        }
+#ifndef HAVE_MLX5DV_DR_DEVX_PORT
+       if (bd >= 0) {
+               /*
+                * This may happen if there is VF LAG kernel support and
+                * application is compiled with older rdma_core library.
+                */
+               DRV_LOG(ERR,
+                       "No kernel/verbs support for VF LAG bonding found.");
+               rte_errno = ENOTSUP;
+               ret = -rte_errno;
+               goto exit;
+       }
+#endif
        /*
         * Now we can determine the maximal
         * amount of devices to be spawned.
-- 
1.8.3.1

Reply via email to