Skip to content

Commit

Permalink
kni: fix build for SLES15-SP3
Browse files Browse the repository at this point in the history
As suse version numbering is inconsistent to determine Linux kernel
API to be used. In this patch we check parameter of 'ndo_tx_timeout'
API directly from the kernel source. This is done only for suse build.

Bugzilla ID: 812
Cc: stable@dpdk.org

Signed-off-by: Aman Singh <aman.deep.singh@intel.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
Tested-by: Longfeng Liang <longfengx.liang@intel.com>
  • Loading branch information
amandee1 authored and tmonjalo committed Oct 25, 2021
1 parent fd9e07a commit c28e216
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 2 deletions.
3 changes: 2 additions & 1 deletion kernel/linux/kni/compat.h
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,8 @@

#if KERNEL_VERSION(5, 6, 0) <= LINUX_VERSION_CODE || \
(defined(RHEL_RELEASE_CODE) && \
RHEL_RELEASE_VERSION(8, 3) <= RHEL_RELEASE_CODE)
RHEL_RELEASE_VERSION(8, 3) <= RHEL_RELEASE_CODE) || \
(defined(CONFIG_SUSE_KERNEL) && defined(HAVE_ARG_TX_QUEUE))
#define HAVE_TX_TIMEOUT_TXQUEUE
#endif

Expand Down
14 changes: 13 additions & 1 deletion kernel/linux/kni/meson.build
Original file line number Diff line number Diff line change
@@ -1,6 +1,17 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2018 Luca Boccassi <bluca@debian.org>

# For SUSE build check function arguments of ndo_tx_timeout API
# Ref: https://jira.devtools.intel.com/browse/DPDK-29263
kmod_cflags = ''
file_path = kernel_source_dir + '/include/linux/netdevice.h'
run_cmd = run_command('grep', 'ndo_tx_timeout', file_path)

if run_cmd.stdout().contains('txqueue') == true
kmod_cflags = '-DHAVE_ARG_TX_QUEUE'
endif


kni_mkfile = custom_target('rte_kni_makefile',
output: 'Makefile',
command: ['touch', '@OUTPUT@'])
Expand All @@ -17,7 +28,8 @@ custom_target('rte_kni',
command: ['make', '-j4', '-C', kernel_build_dir,
'M=' + meson.current_build_dir(),
'src=' + meson.current_source_dir(),
'MODULE_CFLAGS=-include ' + meson.source_root() + '/config/rte_config.h' +
' '.join(['MODULE_CFLAGS=', kmod_cflags,'-include '])
+ meson.source_root() + '/config/rte_config.h' +
' -I' + meson.source_root() + '/lib/eal/include' +
' -I' + meson.source_root() + '/lib/kni' +
' -I' + meson.build_root() +
Expand Down
5 changes: 5 additions & 0 deletions kernel/linux/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
subdirs = ['kni']

kernel_build_dir = get_option('kernel_dir')
kernel_source_dir = get_option('kernel_dir')
kernel_install_dir = ''
install = not meson.is_cross_build()
cross_args = []
Expand All @@ -16,6 +17,10 @@ if not meson.is_cross_build()
# use default path for native builds
kernel_build_dir = '/lib/modules/' + kernel_version + '/build'
endif
if kernel_source_dir == ''
# use default path for native builds
kernel_source_dir = '/lib/modules/' + kernel_version + '/source'
endif

# test running make in kernel directory, using "make kernelversion"
make_returncode = run_command('make', '-sC', kernel_build_dir,
Expand Down

0 comments on commit c28e216

Please sign in to comment.