linux-rdma/perftest

Compile error: ‘IBV_ODP_SUPPORT_SRQ_RECV’ undeclared

smichnowicz opened this issue · 4 comments

Dear Developers,
I went to compile perftest but got the following compile errors


/usr/include/infiniband/verbs.h:78: note: this is the location of the previous definition
   78 | #define container_of(ptr, type, member) \
      | 
src/perftest_resources.c: In function ‘check_odp_transport_caps’:
src/perftest_resources.c:1398:40: error: ‘IBV_ODP_SUPPORT_SRQ_RECV’ undeclared (first use in this function); did you mean ‘IBV_EXP_ODP_SUPPORT_SRQ_RECV’?
 1398 |   if (!(caps & (IBV_ODP_SUPPORT_RECV | IBV_ODP_SUPPORT_SRQ_RECV))) {
      |                                        ^~~~~~~~~~~~~~~~~~~~~~~~
      |                                        IBV_EXP_ODP_SUPPORT_SRQ_RECV
src/perftest_resources.c:1398:40: note: each undeclared identifier is reported only once for each function it appears in
src/perftest_resources.c: In function ‘check_odp_support’:
src/perftest_resources.c:1456:52: error: ‘struct ibv_device_attr_ex’ has no member named ‘xrc_odp_caps’; did you mean ‘odp_caps’?
 1456 |   if ( !check_odp_transport_caps(user_param, dattr.xrc_odp_caps) )
      |                                                    ^~~~~~~~~~~~
      |                                                    odp_caps

The file /usr/include/infiniband/verbs.h exists. Does the program depend upon the version of this file?

It is a Centos 7.9 system and I have the following packages installed:

yum list installed | grep verb
libibverbs.x86_64                 41mlnx1-OFED.4.9.3.0.0.49510         installed
libibverbs-devel.x86_64           41mlnx1-OFED.4.9.3.0.0.49510         installed
libibverbs-devel-static.x86_64    41mlnx1-OFED.4.9.3.0.0.49510         installed
libibverbs-utils.x86_64           41mlnx1-OFED.4.9.3.0.0.49510         installe

thanks
Simon

Hi,

It seems that your ofed uses legacy verbs, you need to use the legacy branch of perftest
https://github.com/linux-rdma/perftest/tree/legacy_verbs_support

Please reopen if the issue continues

Hi, I have used the legacy branch of perftest but I also encountered the same error:

src/perftest_resources.c: In function ‘check_odp_transport_caps’:
src/perftest_resources.c:1428:40: error: ‘IBV_ODP_SUPPORT_SRQ_RECV’ undeclared (first use in this function); did you mean ‘IBV_EXP_ODP_SUPPORT_SRQ_RECV’?
if (!(caps & (IBV_ODP_SUPPORT_RECV | IBV_ODP_SUPPORT_SRQ_RECV))) {
^~~~~~~~~~~~~~~~~~~~~~~~
IBV_EXP_ODP_SUPPORT_SRQ_RECV
src/perftest_resources.c:1428:40: note: each undeclared identifier is reported only once for each function it appears in
src/perftest_resources.c: In function ‘check_odp_support’:
src/perftest_resources.c:1486:52: error: ‘struct ibv_device_attr_ex’ has no member named ‘xrc_odp_caps’; did you mean ‘odp_caps’?
if ( !check_odp_transport_caps(user_param, dattr.xrc_odp_caps) )
^~~~~~~~~~~~
odp_caps

Here is my environment:
Ubuntu18.04
Linux 4.15.0-46-generic
MLNX_OFED_LINUX-4.9-3.1.5.0
Ethernet controller: Mellanox Technologies MT27700 Family [ConnectX-4]

As for MLNX_OFED_LINUX-4.9-3.1.5.0, I checked the relevant documentation:
https://docs.nvidia.com/networking/display/ofedv490170/release+notes

The corresponding perftest version found is
perftest | 4.4-0.23.g89e176a.49017

I downloaded the version perftest-4.4-0.23 in releases and compiled it correctly.