rte_eth_dev_count() always returns 0

I’m trying to get DPDK working on a ConnectX-3 but only get 0 returned from rte_eth_dev_count().

My system in Ubuntu 16.04.2 server

I have downloaded, built and installed MLMX_DPDK_16.11_1.5

with the --dpdk flag

and downloaded and installed MLNX_OFED-4.0-1.0.1.0

Running ibstat gives me:

CA ‘mlx4_0’

CA type: MT4099

Number of ports: 2

Firmware version: 2.40.5030

Hardware version: 1

Node GUID: 0xe41d2d03000b2240

System image GUID: 0xe41d2d03000b2240

Port 1:

State: Down

Physical state: Disabled

Rate: 10

Base lid: 0

LMC: 0

SM lid: 0

Capability mask: 0x04010000

Port GUID: 0xe61d2dfffe0b2240

Link layer: Ethernet

Port 2:

State: Active

Physical state: LinkUp

Rate: 10

Base lid: 0

LMC: 0

SM lid: 0

Capability mask: 0x04010000

Port GUID: 0xe61d2dfffe0b2241

Link layer: Ethernet

and mst status -v

gives me

MST modules:


MST PCI module is not loaded

MST PCI configuration module is not loaded

PCI devices:


DEVICE_TYPE MST PCI RDMA NET NUMA

ConnectX3(rev:1) NA 01:00.0 mlx4_0 net-enp1s0d1,net-enp1s0 0

but, in a very simple test program, that just calls rte_eal_init(…) followed by rte_eth_dev_count().

I only ever get 0 back from rte_eth_dev_count();

EAL: Detected 40 lcore(s)

EAL: Probing VFIO support…

rte_eth_dev_count returned 0

Can anyone help? Why do I only get 0 back from the eth_dev_count() call?

I’m I missing some additional configuration?

Andrew

Found the problem. In case anyone else has this issue the libraries have to be linked with --whole-archive