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

When mlx4 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 libmlx4 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/mlx4.rst
drivers/net/mlx4/Makefile
drivers/net/mlx4/mlx4.c
mk/rte.app.mk