Hi Damjan, I can try these steps on my environment and report back.
More importantly, I have done step 1 already (the DPDK part) and while VPP builds fine, the DPDK plugin does not load anymore (error: 'load_one_plugin:147: /usr/lib/vpp_plugins/dpdk_plugin.so: undefined symbol: ibv_fork_init') . Would step 2 or 3 solve that? Probably not. I actually build it with MLX5 support on only, and I still get the same error. There seems to be a 'libibverbs' library issue. Could it be related to DPDK separation in a plugin? Thanks, Mircea -----Original Message----- From: Damjan Marion (damarion) [mailto:damar...@cisco.com] Sent: Tuesday, April 18, 2017 4:45 AM To: Mircea Orban <mior...@hotmail.com> Cc: vpp-dev@lists.fd.io Subject: Re: [vpp-dev] is MLX4 PMD supported ? Hi Mircea, MLX4 devices are not supported today mainly because we don’t have any device to test with. To make it work, following changes are needed: 1. dpdk/Makefile Here you will need to add 2 lines similar to MLX5. Just search for MLX5 and duplicate matching lines so they refer to MLX4 - After this is done you will be able to compile dpdk development packages with “make dpdk-install-dev DPDK_MLX4_PMD=y” 2. when compiling VPP you need to set "vpp_uses_dpdk_mlx5_pmd=yes”, i.e. “make vpp_uses_dpdk_mlx5_pmd=yes pkg-deb” Both mlx4 and mlx5 are using same libs so using existing mlx5 know should be fine, if that bugs you you can modify build-data/packages/vpp.mk, src/configure.ac and src/plugins/dpdk.am (either remove “5” or duplicate lines so you have both “4” and “5”) 3. Finally most demanding part is to modify dpdk init code so it recognizes those NICs properly. You will likely need to search for MLX5 in following files and create simlar code for mlx4. Files are: src/plugins/dpdk/device/dpdk.h src/plugins/dpdk/device/format.c src/plugins/dpdk/device/init.c I can help with this if somebody provides access to ubuntu computer with mlx4 card installed. Hope this helps, Damjan > On 17 Apr 2017, at 18:23, Mircea Orban <mior...@hotmail.com> wrote: > > Hello, > > I am trying to build VPP for an environment with Mellanox ConnectX-3 Pro > NICs, and I encounter issues when I try to run VPP (see dpdk plugin undefined > symbol error): > > vlib_plugin_early_init:360: plugin path /usr/lib/vpp_plugins > load_one_plugin:188: Loaded plugin: acl_plugin.so (Access Control > Lists) > load_one_plugin:147: /usr/lib/vpp_plugins/dpdk_plugin.so: undefined > symbol: ibv_fork_init > load_one_plugin:188: Loaded plugin: flowperpkt_plugin.so (Flow per > Packet) > load_one_plugin:188: Loaded plugin: ila_plugin.so (Identifier-locator > addressing for IPv6) > load_one_plugin:188: Loaded plugin: ioam_plugin.so (Inbound OAM) > load_one_plugin:114: Plugin disabled (default): ixge_plugin.so > load_one_plugin:188: Loaded plugin: lb_plugin.so (Load Balancer) > load_one_plugin:188: Loaded plugin: libsixrd_plugin.so (IPv6 Rapid > Deployment on IPv4 Infrastructure (RFC5969)) > load_one_plugin:188: Loaded plugin: memif_plugin.so (Packet Memory > Interface (experimetal)) > load_one_plugin:188: Loaded plugin: snat_plugin.so (Network Address > Translation) Segmentation fault (core dumped) > > I added these lines to the DPDK Makefile (and it builds with no errors): > > DPDK_MLX4_PMD ?= y > DPDK_MLX4_DEBUG ?= n > DPDK_MLX4_SGE_WR_N ?= 1 > DPDK_MLX4_MAX_INLINE ?= 0 > DPDK_MLX4_TX_MP_CACHE ?= 8 > DPDK_MLX4_SOFT_COUNTERS ?= 1 > > $(call set,RTE_LIBRTE_MLX4_PMD,$(DPDK_MLX4_PMD)) > $(call set,RTE_LIBRTE_MLX4_DEBUG,$(DPDK_MLX4_DEBUG)) > $(call set,RTE_LIBRTE_MLX4_SGE_WR_N,$(DPDK_MLX4_SGE_WR_N)) > $(call set,RTE_LIBRTE_MLX4_MAX_INLINE,$(DPDK_MLX4_MAX_INLINE)) > $(call set,RTE_LIBRTE_MLX4_TX_MP_CACHE,$(DPDK_MLX4_TX_MP_CACHE)) > $(call set,RTE_LIBRTE_MLX4_SOFT_COUNTERS,$(DPDK_MLX4_SOFT_COUNTERS)) > > > > Thanks, > Mircea > > _______________________________________________ > vpp-dev mailing list > vpp-dev@lists.fd.io > https://lists.fd.io/mailman/listinfo/vpp-dev _______________________________________________ vpp-dev mailing list vpp-dev@lists.fd.io https://lists.fd.io/mailman/listinfo/vpp-dev