common/mlx5: move glue files under Linux directory

The glue file mlx5_glue.c is based on Linux specifics APIs.
Move it (including file mlx5_glue.h) to common/mlx5/linux directory.

Signed-off-by: Ophir Munk <ophirmu@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
This commit is contained in:
Ophir Munk 2020-06-01 05:50:45 +00:00 committed by Ferruh Yigit
parent 6e8bdf7266
commit 72f7566056
7 changed files with 221 additions and 206 deletions

View File

@ -12,7 +12,7 @@ LIB_GLUE_VERSION = 20.02.0
# Sources.
ifeq ($(findstring y,$(CONFIG_RTE_LIBRTE_MLX5_PMD)$(CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD)),y)
ifneq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y)
SRCS-y += mlx5_glue.c
SRCS-y += linux/mlx5_glue.c
endif
SRCS-y += mlx5_devx_cmds.c
SRCS-y += mlx5_common.c
@ -29,6 +29,8 @@ CFLAGS += -O3
CFLAGS += -std=c11 -Wall -Wextra
CFLAGS += -g
CFLAGS += -I.
CFLAGS += -I$(SRCDIR)
CFLAGS += -I$(SRCDIR)/linux
CFLAGS += -D_BSD_SOURCE
CFLAGS += -D_DEFAULT_SOURCE
CFLAGS += -D_XOPEN_SOURCE=600
@ -37,7 +39,7 @@ CFLAGS += -Wno-strict-prototypes
ifeq ($(CONFIG_RTE_IBVERBS_LINK_DLOPEN),y)
CFLAGS += -DMLX5_GLUE='"$(LIB_GLUE)"'
CFLAGS += -DMLX5_GLUE_VERSION='"$(LIB_GLUE_VERSION)"'
CFLAGS_mlx5_glue.o += -fPIC
CFLAGS_linux/mlx5_glue.o += -fPIC
LDLIBS += -ldl
else ifeq ($(CONFIG_RTE_IBVERBS_LINK_STATIC),y)
LDLIBS += $(shell $(RTE_SDK)/buildtools/options-ibverbs-static.sh)
@ -346,17 +348,17 @@ GLUE_LDFLAGS := $(call linkerprefix,$(LDFLAGS))
else
GLUE_LDFLAGS := $(LDFLAGS)
endif
$(LIB_GLUE): mlx5_glue.o
$(LIB_GLUE): linux/mlx5_glue.o
$Q $(LD) $(GLUE_LDFLAGS) $(EXTRA_LDFLAGS) \
-Wl,-h,$(LIB_GLUE) \
-shared -o $@ $< -libverbs -lmlx5
mlx5_glue.o: mlx5_autoconf.h
linux/mlx5_glue.o: mlx5_autoconf.h
endif
clean_mlx5: FORCE
$Q rm -f -- mlx5_autoconf.h mlx5_autoconf.h.new
$Q rm -f -- mlx5_glue.o $(LIB_GLUE_BASE)*
$Q rm -f -- linux/mlx5_glue.o $(LIB_GLUE_BASE)*
clean: clean_mlx5

View File

@ -0,0 +1,199 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright 2020 Mellanox Technologies, Ltd
includes += include_directories('.')
static_ibverbs = (get_option('ibverbs_link') == 'static')
dlopen_ibverbs = (get_option('ibverbs_link') == 'dlopen')
LIB_GLUE_BASE = 'librte_pmd_mlx5_glue.so'
LIB_GLUE_VERSION = '20.02.0'
LIB_GLUE = LIB_GLUE_BASE + '.' + LIB_GLUE_VERSION
if dlopen_ibverbs
dpdk_conf.set('RTE_IBVERBS_LINK_DLOPEN', 1)
cflags += [
'-DMLX5_GLUE="@0@"'.format(LIB_GLUE),
'-DMLX5_GLUE_VERSION="@0@"'.format(LIB_GLUE_VERSION),
]
endif
libnames = [ 'mlx5', 'ibverbs' ]
libs = []
foreach libname:libnames
lib = dependency('lib' + libname, static:static_ibverbs, required:false)
if not lib.found() and not static_ibverbs
lib = cc.find_library(libname, required:false)
endif
if lib.found()
libs += lib
if not static_ibverbs and not dlopen_ibverbs
ext_deps += lib
endif
else
build = false
reason = 'missing dependency, "' + libname + '"'
subdir_done()
endif
endforeach
if static_ibverbs or dlopen_ibverbs
# Build without adding shared libs to Requires.private
ibv_cflags = run_command(pkgconf, '--cflags', 'libibverbs').stdout()
ext_deps += declare_dependency(compile_args: ibv_cflags.split())
endif
if static_ibverbs
# Add static deps ldflags to internal apps and Libs.private
ibv_ldflags = run_command(ldflags_ibverbs_static, check:true).stdout()
ext_deps += declare_dependency(link_args:ibv_ldflags.split())
endif
if not dlopen_ibverbs
sources += files('mlx5_glue.c')
endif
# To maintain the compatibility with the make build system
# mlx5_autoconf.h file is still generated.
# input array for meson member search:
# [ "MACRO to define if found", "header for the search",
# "symbol to search", "struct member to search" ]
has_member_args = [
[ 'HAVE_IBV_MLX5_MOD_SWP', 'infiniband/mlx5dv.h',
'struct mlx5dv_sw_parsing_caps', 'sw_parsing_offloads' ],
[ 'HAVE_IBV_DEVICE_COUNTERS_SET_V42', 'infiniband/verbs.h',
'struct ibv_counter_set_init_attr', 'counter_set_id' ],
[ 'HAVE_IBV_DEVICE_COUNTERS_SET_V45', 'infiniband/verbs.h',
'struct ibv_counters_init_attr', 'comp_mask' ],
]
# input array for meson symbol search:
# [ "MACRO to define if found", "header for the search",
# "symbol to search" ]
has_sym_args = [
[ 'HAVE_IBV_RELAXED_ORDERING', 'infiniband/verbs.h',
'IBV_ACCESS_RELAXED_ORDERING ' ],
[ 'HAVE_IBV_DEVICE_STRIDING_RQ_SUPPORT', 'infiniband/mlx5dv.h',
'MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX' ],
[ 'HAVE_IBV_DEVICE_TUNNEL_SUPPORT', 'infiniband/mlx5dv.h',
'MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS' ],
[ 'HAVE_IBV_MLX5_MOD_MPW', 'infiniband/mlx5dv.h',
'MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED' ],
[ 'HAVE_IBV_MLX5_MOD_CQE_128B_COMP', 'infiniband/mlx5dv.h',
'MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP' ],
[ 'HAVE_IBV_MLX5_MOD_CQE_128B_PAD', 'infiniband/mlx5dv.h',
'MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PAD' ],
[ 'HAVE_IBV_FLOW_DV_SUPPORT', 'infiniband/mlx5dv.h',
'mlx5dv_create_flow_action_packet_reformat' ],
[ 'HAVE_IBV_DEVICE_MPLS_SUPPORT', 'infiniband/verbs.h',
'IBV_FLOW_SPEC_MPLS' ],
[ 'HAVE_IBV_WQ_FLAGS_PCI_WRITE_END_PADDING', 'infiniband/verbs.h',
'IBV_WQ_FLAGS_PCI_WRITE_END_PADDING' ],
[ 'HAVE_IBV_WQ_FLAG_RX_END_PADDING', 'infiniband/verbs.h',
'IBV_WQ_FLAG_RX_END_PADDING' ],
[ 'HAVE_MLX5DV_DR_DEVX_PORT', 'infiniband/mlx5dv.h',
'mlx5dv_query_devx_port' ],
[ 'HAVE_IBV_DEVX_OBJ', 'infiniband/mlx5dv.h',
'mlx5dv_devx_obj_create' ],
[ 'HAVE_IBV_FLOW_DEVX_COUNTERS', 'infiniband/mlx5dv.h',
'MLX5DV_FLOW_ACTION_COUNTERS_DEVX' ],
[ 'HAVE_IBV_DEVX_ASYNC', 'infiniband/mlx5dv.h',
'mlx5dv_devx_obj_query_async' ],
[ 'HAVE_IBV_DEVX_QP', 'infiniband/mlx5dv.h',
'mlx5dv_devx_qp_query' ],
[ 'HAVE_MLX5DV_DR_ACTION_DEST_DEVX_TIR', 'infiniband/mlx5dv.h',
'mlx5dv_dr_action_create_dest_devx_tir' ],
[ 'HAVE_IBV_DEVX_EVENT', 'infiniband/mlx5dv.h',
'mlx5dv_devx_get_event' ],
[ 'HAVE_MLX5_DR_CREATE_ACTION_FLOW_METER', 'infiniband/mlx5dv.h',
'mlx5dv_dr_action_create_flow_meter' ],
[ 'HAVE_MLX5DV_MMAP_GET_NC_PAGES_CMD', 'infiniband/mlx5dv.h',
'MLX5_MMAP_GET_NC_PAGES_CMD' ],
[ 'HAVE_MLX5DV_DR', 'infiniband/mlx5dv.h',
'MLX5DV_DR_DOMAIN_TYPE_NIC_RX' ],
[ 'HAVE_MLX5DV_DR_ESWITCH', 'infiniband/mlx5dv.h',
'MLX5DV_DR_DOMAIN_TYPE_FDB' ],
[ 'HAVE_MLX5DV_DR_VLAN', 'infiniband/mlx5dv.h',
'mlx5dv_dr_action_create_push_vlan' ],
[ 'HAVE_IBV_VAR', 'infiniband/mlx5dv.h', 'mlx5dv_alloc_var' ],
[ 'HAVE_SUPPORTED_40000baseKR4_Full', 'linux/ethtool.h',
'SUPPORTED_40000baseKR4_Full' ],
[ 'HAVE_SUPPORTED_40000baseCR4_Full', 'linux/ethtool.h',
'SUPPORTED_40000baseCR4_Full' ],
[ 'HAVE_SUPPORTED_40000baseSR4_Full', 'linux/ethtool.h',
'SUPPORTED_40000baseSR4_Full' ],
[ 'HAVE_SUPPORTED_40000baseLR4_Full', 'linux/ethtool.h',
'SUPPORTED_40000baseLR4_Full' ],
[ 'HAVE_SUPPORTED_56000baseKR4_Full', 'linux/ethtool.h',
'SUPPORTED_56000baseKR4_Full' ],
[ 'HAVE_SUPPORTED_56000baseCR4_Full', 'linux/ethtool.h',
'SUPPORTED_56000baseCR4_Full' ],
[ 'HAVE_SUPPORTED_56000baseSR4_Full', 'linux/ethtool.h',
'SUPPORTED_56000baseSR4_Full' ],
[ 'HAVE_SUPPORTED_56000baseLR4_Full', 'linux/ethtool.h',
'SUPPORTED_56000baseLR4_Full' ],
[ 'HAVE_ETHTOOL_LINK_MODE_25G', 'linux/ethtool.h',
'ETHTOOL_LINK_MODE_25000baseCR_Full_BIT' ],
[ 'HAVE_ETHTOOL_LINK_MODE_50G', 'linux/ethtool.h',
'ETHTOOL_LINK_MODE_50000baseCR2_Full_BIT' ],
[ 'HAVE_ETHTOOL_LINK_MODE_100G', 'linux/ethtool.h',
'ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT' ],
[ 'HAVE_IFLA_NUM_VF', 'linux/if_link.h',
'IFLA_NUM_VF' ],
[ 'HAVE_IFLA_EXT_MASK', 'linux/if_link.h',
'IFLA_EXT_MASK' ],
[ 'HAVE_IFLA_PHYS_SWITCH_ID', 'linux/if_link.h',
'IFLA_PHYS_SWITCH_ID' ],
[ 'HAVE_IFLA_PHYS_PORT_NAME', 'linux/if_link.h',
'IFLA_PHYS_PORT_NAME' ],
[ 'HAVE_RDMA_NL_NLDEV', 'rdma/rdma_netlink.h',
'RDMA_NL_NLDEV' ],
[ 'HAVE_RDMA_NLDEV_CMD_GET', 'rdma/rdma_netlink.h',
'RDMA_NLDEV_CMD_GET' ],
[ 'HAVE_RDMA_NLDEV_CMD_PORT_GET', 'rdma/rdma_netlink.h',
'RDMA_NLDEV_CMD_PORT_GET' ],
[ 'HAVE_RDMA_NLDEV_ATTR_DEV_INDEX', 'rdma/rdma_netlink.h',
'RDMA_NLDEV_ATTR_DEV_INDEX' ],
[ 'HAVE_RDMA_NLDEV_ATTR_DEV_NAME', 'rdma/rdma_netlink.h',
'RDMA_NLDEV_ATTR_DEV_NAME' ],
[ 'HAVE_RDMA_NLDEV_ATTR_PORT_INDEX', 'rdma/rdma_netlink.h',
'RDMA_NLDEV_ATTR_PORT_INDEX' ],
[ 'HAVE_RDMA_NLDEV_ATTR_NDEV_INDEX', 'rdma/rdma_netlink.h',
'RDMA_NLDEV_ATTR_NDEV_INDEX' ],
[ 'HAVE_MLX5_DR_FLOW_DUMP', 'infiniband/mlx5dv.h',
'mlx5dv_dump_dr_domain'],
[ 'HAVE_DEVLINK', 'linux/devlink.h', 'DEVLINK_GENL_NAME' ],
]
config = configuration_data()
foreach arg:has_sym_args
config.set(arg[0], cc.has_header_symbol(arg[1], arg[2],
dependencies: libs))
endforeach
foreach arg:has_member_args
file_prefix = '#include <' + arg[1] + '>'
config.set(arg[0], cc.has_member(arg[2], arg[3],
prefix : file_prefix, dependencies: libs))
endforeach
configure_file(output : 'mlx5_autoconf.h', configuration : config)
# Build Glue Library
if dlopen_ibverbs
dlopen_name = 'mlx5_glue'
dlopen_lib_name = 'rte_pmd_@0@'.format(dlopen_name)
dlopen_so_version = LIB_GLUE_VERSION
dlopen_sources = files('mlx5_glue.c')
dlopen_install_dir = [ eal_pmd_path + '-glue' ]
dlopen_includes = [global_inc]
dlopen_includes += include_directories(
'../../../../lib/librte_eal/include/generic',
)
shared_lib = shared_library(
dlopen_lib_name,
dlopen_sources,
include_directories: dlopen_includes,
c_args: cflags,
dependencies: libs,
link_args: [
'-Wl,-export-dynamic',
'-Wl,-h,@0@'.format(LIB_GLUE),
],
soversion: dlopen_so_version,
install: true,
install_dir: dlopen_install_dir,
)
endif

View File

@ -189,7 +189,7 @@ mlx5_glue_destroy_flow_action(void *action)
#endif
#else
(void)action;
return ENOTSUP;
return -ENOTSUP;
#endif
}
@ -260,7 +260,7 @@ mlx5_glue_destroy_counter_set(struct ibv_counter_set *cs)
{
#ifndef HAVE_IBV_DEVICE_COUNTERS_SET_V42
(void)cs;
return ENOTSUP;
return -ENOTSUP;
#else
return ibv_destroy_counter_set(cs);
#endif
@ -275,7 +275,7 @@ mlx5_glue_describe_counter_set(struct ibv_context *context,
(void)context;
(void)counter_set_id;
(void)cs_desc;
return ENOTSUP;
return -ENOTSUP;
#else
return ibv_describe_counter_set(context, counter_set_id, cs_desc);
#endif
@ -288,7 +288,7 @@ mlx5_glue_query_counter_set(struct ibv_query_counter_set_attr *query_attr,
#ifndef HAVE_IBV_DEVICE_COUNTERS_SET_V42
(void)query_attr;
(void)cs_data;
return ENOTSUP;
return -ENOTSUP;
#else
return ibv_query_counter_set(query_attr, cs_data);
#endif
@ -313,7 +313,7 @@ mlx5_glue_destroy_counters(struct ibv_counters *counters)
{
#ifndef HAVE_IBV_DEVICE_COUNTERS_SET_V45
(void)counters;
return ENOTSUP;
return -ENOTSUP;
#else
return ibv_destroy_counters(counters);
#endif
@ -328,7 +328,7 @@ mlx5_glue_attach_counters(struct ibv_counters *counters,
(void)counters;
(void)attr;
(void)flow;
return ENOTSUP;
return -ENOTSUP;
#else
return ibv_attach_counters_point_flow(counters, attr, flow);
#endif
@ -345,7 +345,7 @@ mlx5_glue_query_counters(struct ibv_counters *counters,
(void)counters_value;
(void)ncounters;
(void)flags;
return ENOTSUP;
return -ENOTSUP;
#else
return ibv_read_counters(counters, counters_value, ncounters, flags);
#endif

View File

@ -1,65 +1,23 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright 2019 Mellanox Technologies, Ltd
if not is_linux
if not (is_linux or is_windows)
build = false
reason = 'only supported on Linux'
reason = 'only supported on Linux and Windows'
subdir_done()
endif
static_ibverbs = (get_option('ibverbs_link') == 'static')
dlopen_ibverbs = (get_option('ibverbs_link') == 'dlopen')
LIB_GLUE_BASE = 'librte_pmd_mlx5_glue.so'
LIB_GLUE_VERSION = '20.02.0'
LIB_GLUE = LIB_GLUE_BASE + '.' + LIB_GLUE_VERSION
if dlopen_ibverbs
dpdk_conf.set('RTE_IBVERBS_LINK_DLOPEN', 1)
cflags += [
'-DMLX5_GLUE="@0@"'.format(LIB_GLUE),
'-DMLX5_GLUE_VERSION="@0@"'.format(LIB_GLUE_VERSION),
]
endif
libnames = [ 'mlx5', 'ibverbs' ]
libs = []
foreach libname:libnames
lib = dependency('lib' + libname, static:static_ibverbs, required:false)
if not lib.found() and not static_ibverbs
lib = cc.find_library(libname, required:false)
endif
if lib.found()
libs += lib
if not static_ibverbs and not dlopen_ibverbs
ext_deps += lib
endif
else
build = false
reason = 'missing dependency, "' + libname + '"'
subdir_done()
endif
endforeach
if static_ibverbs or dlopen_ibverbs
# Build without adding shared libs to Requires.private
ibv_cflags = run_command(pkgconf, '--cflags', 'libibverbs').stdout()
ext_deps += declare_dependency(compile_args: ibv_cflags.split())
endif
if static_ibverbs
# Add static deps ldflags to internal apps and Libs.private
ibv_ldflags = run_command(ldflags_ibverbs_static, check:true).stdout()
ext_deps += declare_dependency(link_args:ibv_ldflags.split())
endif
allow_experimental_apis = true
deps += ['hash', 'pci', 'net', 'eal', 'kvargs']
sources = files(
sources += files(
'mlx5_devx_cmds.c',
'mlx5_common.c',
'mlx5_nl.c',
'mlx5_common_mp.c',
'mlx5_common_mr.c',
)
if not dlopen_ibverbs
sources += files('mlx5_glue.c')
endif
cflags_options = [
'-std=c11',
'-Wno-strict-prototypes',
@ -77,151 +35,5 @@ if get_option('buildtype').contains('debug')
else
cflags += [ '-UPEDANTIC' ]
endif
# To maintain the compatibility with the make build system
# mlx5_autoconf.h file is still generated.
# input array for meson member search:
# [ "MACRO to define if found", "header for the search",
# "symbol to search", "struct member to search" ]
has_member_args = [
[ 'HAVE_IBV_MLX5_MOD_SWP', 'infiniband/mlx5dv.h',
'struct mlx5dv_sw_parsing_caps', 'sw_parsing_offloads' ],
[ 'HAVE_IBV_DEVICE_COUNTERS_SET_V42', 'infiniband/verbs.h',
'struct ibv_counter_set_init_attr', 'counter_set_id' ],
[ 'HAVE_IBV_DEVICE_COUNTERS_SET_V45', 'infiniband/verbs.h',
'struct ibv_counters_init_attr', 'comp_mask' ],
]
# input array for meson symbol search:
# [ "MACRO to define if found", "header for the search",
# "symbol to search" ]
has_sym_args = [
[ 'HAVE_IBV_RELAXED_ORDERING', 'infiniband/verbs.h',
'IBV_ACCESS_RELAXED_ORDERING ' ],
[ 'HAVE_IBV_DEVICE_STRIDING_RQ_SUPPORT', 'infiniband/mlx5dv.h',
'MLX5DV_CQE_RES_FORMAT_CSUM_STRIDX' ],
[ 'HAVE_IBV_DEVICE_TUNNEL_SUPPORT', 'infiniband/mlx5dv.h',
'MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS' ],
[ 'HAVE_IBV_MLX5_MOD_MPW', 'infiniband/mlx5dv.h',
'MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED' ],
[ 'HAVE_IBV_MLX5_MOD_CQE_128B_COMP', 'infiniband/mlx5dv.h',
'MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP' ],
[ 'HAVE_IBV_MLX5_MOD_CQE_128B_PAD', 'infiniband/mlx5dv.h',
'MLX5DV_CQ_INIT_ATTR_FLAGS_CQE_PAD' ],
[ 'HAVE_IBV_FLOW_DV_SUPPORT', 'infiniband/mlx5dv.h',
'mlx5dv_create_flow_action_packet_reformat' ],
[ 'HAVE_IBV_DEVICE_MPLS_SUPPORT', 'infiniband/verbs.h',
'IBV_FLOW_SPEC_MPLS' ],
[ 'HAVE_IBV_WQ_FLAGS_PCI_WRITE_END_PADDING', 'infiniband/verbs.h',
'IBV_WQ_FLAGS_PCI_WRITE_END_PADDING' ],
[ 'HAVE_IBV_WQ_FLAG_RX_END_PADDING', 'infiniband/verbs.h',
'IBV_WQ_FLAG_RX_END_PADDING' ],
[ 'HAVE_MLX5DV_DR_DEVX_PORT', 'infiniband/mlx5dv.h',
'mlx5dv_query_devx_port' ],
[ 'HAVE_IBV_DEVX_OBJ', 'infiniband/mlx5dv.h',
'mlx5dv_devx_obj_create' ],
[ 'HAVE_IBV_FLOW_DEVX_COUNTERS', 'infiniband/mlx5dv.h',
'MLX5DV_FLOW_ACTION_COUNTERS_DEVX' ],
[ 'HAVE_IBV_DEVX_ASYNC', 'infiniband/mlx5dv.h',
'mlx5dv_devx_obj_query_async' ],
[ 'HAVE_IBV_DEVX_QP', 'infiniband/mlx5dv.h',
'mlx5dv_devx_qp_query' ],
[ 'HAVE_MLX5DV_DR_ACTION_DEST_DEVX_TIR', 'infiniband/mlx5dv.h',
'mlx5dv_dr_action_create_dest_devx_tir' ],
[ 'HAVE_IBV_DEVX_EVENT', 'infiniband/mlx5dv.h',
'mlx5dv_devx_get_event' ],
[ 'HAVE_MLX5_DR_CREATE_ACTION_FLOW_METER', 'infiniband/mlx5dv.h',
'mlx5dv_dr_action_create_flow_meter' ],
[ 'HAVE_MLX5DV_MMAP_GET_NC_PAGES_CMD', 'infiniband/mlx5dv.h',
'MLX5_MMAP_GET_NC_PAGES_CMD' ],
[ 'HAVE_MLX5DV_DR', 'infiniband/mlx5dv.h',
'MLX5DV_DR_DOMAIN_TYPE_NIC_RX' ],
[ 'HAVE_MLX5DV_DR_ESWITCH', 'infiniband/mlx5dv.h',
'MLX5DV_DR_DOMAIN_TYPE_FDB' ],
[ 'HAVE_MLX5DV_DR_VLAN', 'infiniband/mlx5dv.h',
'mlx5dv_dr_action_create_push_vlan' ],
[ 'HAVE_IBV_VAR', 'infiniband/mlx5dv.h', 'mlx5dv_alloc_var' ],
[ 'HAVE_SUPPORTED_40000baseKR4_Full', 'linux/ethtool.h',
'SUPPORTED_40000baseKR4_Full' ],
[ 'HAVE_SUPPORTED_40000baseCR4_Full', 'linux/ethtool.h',
'SUPPORTED_40000baseCR4_Full' ],
[ 'HAVE_SUPPORTED_40000baseSR4_Full', 'linux/ethtool.h',
'SUPPORTED_40000baseSR4_Full' ],
[ 'HAVE_SUPPORTED_40000baseLR4_Full', 'linux/ethtool.h',
'SUPPORTED_40000baseLR4_Full' ],
[ 'HAVE_SUPPORTED_56000baseKR4_Full', 'linux/ethtool.h',
'SUPPORTED_56000baseKR4_Full' ],
[ 'HAVE_SUPPORTED_56000baseCR4_Full', 'linux/ethtool.h',
'SUPPORTED_56000baseCR4_Full' ],
[ 'HAVE_SUPPORTED_56000baseSR4_Full', 'linux/ethtool.h',
'SUPPORTED_56000baseSR4_Full' ],
[ 'HAVE_SUPPORTED_56000baseLR4_Full', 'linux/ethtool.h',
'SUPPORTED_56000baseLR4_Full' ],
[ 'HAVE_ETHTOOL_LINK_MODE_25G', 'linux/ethtool.h',
'ETHTOOL_LINK_MODE_25000baseCR_Full_BIT' ],
[ 'HAVE_ETHTOOL_LINK_MODE_50G', 'linux/ethtool.h',
'ETHTOOL_LINK_MODE_50000baseCR2_Full_BIT' ],
[ 'HAVE_ETHTOOL_LINK_MODE_100G', 'linux/ethtool.h',
'ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT' ],
[ 'HAVE_IFLA_NUM_VF', 'linux/if_link.h',
'IFLA_NUM_VF' ],
[ 'HAVE_IFLA_EXT_MASK', 'linux/if_link.h',
'IFLA_EXT_MASK' ],
[ 'HAVE_IFLA_PHYS_SWITCH_ID', 'linux/if_link.h',
'IFLA_PHYS_SWITCH_ID' ],
[ 'HAVE_IFLA_PHYS_PORT_NAME', 'linux/if_link.h',
'IFLA_PHYS_PORT_NAME' ],
[ 'HAVE_RDMA_NL_NLDEV', 'rdma/rdma_netlink.h',
'RDMA_NL_NLDEV' ],
[ 'HAVE_RDMA_NLDEV_CMD_GET', 'rdma/rdma_netlink.h',
'RDMA_NLDEV_CMD_GET' ],
[ 'HAVE_RDMA_NLDEV_CMD_PORT_GET', 'rdma/rdma_netlink.h',
'RDMA_NLDEV_CMD_PORT_GET' ],
[ 'HAVE_RDMA_NLDEV_ATTR_DEV_INDEX', 'rdma/rdma_netlink.h',
'RDMA_NLDEV_ATTR_DEV_INDEX' ],
[ 'HAVE_RDMA_NLDEV_ATTR_DEV_NAME', 'rdma/rdma_netlink.h',
'RDMA_NLDEV_ATTR_DEV_NAME' ],
[ 'HAVE_RDMA_NLDEV_ATTR_PORT_INDEX', 'rdma/rdma_netlink.h',
'RDMA_NLDEV_ATTR_PORT_INDEX' ],
[ 'HAVE_RDMA_NLDEV_ATTR_NDEV_INDEX', 'rdma/rdma_netlink.h',
'RDMA_NLDEV_ATTR_NDEV_INDEX' ],
[ 'HAVE_MLX5_DR_FLOW_DUMP', 'infiniband/mlx5dv.h',
'mlx5dv_dump_dr_domain'],
[ 'HAVE_DEVLINK', 'linux/devlink.h', 'DEVLINK_GENL_NAME' ],
]
config = configuration_data()
foreach arg:has_sym_args
config.set(arg[0], cc.has_header_symbol(arg[1], arg[2],
dependencies: libs))
endforeach
foreach arg:has_member_args
file_prefix = '#include <' + arg[1] + '>'
config.set(arg[0], cc.has_member(arg[2], arg[3],
prefix : file_prefix, dependencies: libs))
endforeach
configure_file(output : 'mlx5_autoconf.h', configuration : config)
# Build Glue Library
if dlopen_ibverbs
dlopen_name = 'mlx5_glue'
dlopen_lib_name = 'rte_pmd_@0@'.format(dlopen_name)
dlopen_so_version = LIB_GLUE_VERSION
dlopen_sources = files('mlx5_glue.c')
dlopen_install_dir = [ eal_pmd_path + '-glue' ]
dlopen_includes = [global_inc]
dlopen_includes += include_directories(
'../../../lib/librte_eal/include/generic',
)
shared_lib = shared_library(
dlopen_lib_name,
dlopen_sources,
include_directories: dlopen_includes,
c_args: cflags,
dependencies: libs,
link_args: [
'-Wl,-export-dynamic',
'-Wl,-h,@0@'.format(LIB_GLUE),
],
soversion: dlopen_so_version,
install: true,
install_dir: dlopen_install_dir,
)
endif
subdir(exec_env)

View File

@ -38,6 +38,7 @@ CFLAGS += -O3
CFLAGS += -std=c11 -Wall -Wextra
CFLAGS += -g
CFLAGS += -I$(RTE_SDK)/drivers/common/mlx5
CFLAGS += -I$(RTE_SDK)/drivers/common/mlx5/linux
CFLAGS += -I$(RTE_SDK)/drivers/net/mlx5
CFLAGS += -I$(BUILDDIR)/drivers/common/mlx5
CFLAGS += -D_BSD_SOURCE

View File

@ -20,6 +20,7 @@ CFLAGS += -O3
CFLAGS += -std=c11 -Wall -Wextra
CFLAGS += -g
CFLAGS += -I$(RTE_SDK)/drivers/common/mlx5
CFLAGS += -I$(RTE_SDK)/drivers/common/mlx5/linux
CFLAGS += -I$(RTE_SDK)/drivers/net/mlx5_vdpa
CFLAGS += -I$(RTE_SDK)/lib/librte_sched
CFLAGS += -I$(BUILDDIR)/drivers/common/mlx5