net/mlx5: spawn rdma-core dependency plug-in
authorAdrien Mazarguil <adrien.mazarguil@6wind.com>
Tue, 30 Jan 2018 15:34:58 +0000 (16:34 +0100)
committerFerruh Yigit <ferruh.yigit@intel.com>
Wed, 31 Jan 2018 19:57:29 +0000 (20:57 +0100)
commit59b91bec12c602d040150973de3ce0566f47bd75
tree98bf2506e9677692d83bcc435130d7ef604efc79
parent0e83b8e536c1be056f8afc698e03f3c06ed29200
net/mlx5: spawn rdma-core dependency plug-in

When mlx5 is not compiled directly as an independent shared object (e.g.
CONFIG_RTE_BUILD_SHARED_LIB not enabled for performance reasons), DPDK
applications inherit its dependencies on libibverbs and libmlx5 through
rte.app.mk.

This is an issue both when DPDK is delivered as a binary package (Linux
distributions) and for end users because rdma-core then propagates as a
mandatory dependency for everything.

Application writers relying on binary DPDK packages are not necessarily
aware of this fact and may end up delivering packages with broken
dependencies.

This patch therefore introduces an intermediate internal plug-in
hard-linked with rdma-core (to preserve symbol versioning) loaded by the
PMD through dlopen(), so that a missing rdma-core does not cause unresolved
symbols, allowing applications to start normally.

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
config/common_base
doc/guides/nics/mlx5.rst
drivers/net/mlx5/Makefile
drivers/net/mlx5/mlx5.c
mk/rte.app.mk