kni: fix compilation on RHEL 8.3

Message ID 20201126142344.25018-1-olivier.matz@6wind.com (mailing list archive)
State Accepted, archived
Delegated to: Thomas Monjalon
Headers
Series kni: fix compilation on RHEL 8.3 |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-broadcom-Functional success Functional Testing PASS
ci/Intel-compilation success Compilation OK
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/travis-robot success Travis build: passed
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-testing success Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS

Commit Message

Olivier Matz Nov. 26, 2020, 2:23 p.m. UTC
  Like what was done for mainline kernel in commit 38ad54f3bc76 ("kni: fix
build with Linux 5.6"), a new parameter 'txqueue' has to be added to
'ndo_tx_timeout' ndo on RHEL 8.3 kernel.

Cc: stable@dpdk.org

Tested-by: Christophe Grosse <christophe.grosse@6wind.com>
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
 kernel/linux/kni/compat.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
  

Comments

David Marchand Nov. 26, 2020, 6:04 p.m. UTC | #1
On Thu, Nov 26, 2020 at 3:24 PM Olivier Matz <olivier.matz@6wind.com> wrote:
>
> Like what was done for mainline kernel in commit 38ad54f3bc76 ("kni: fix
> build with Linux 5.6"), a new parameter 'txqueue' has to be added to
> 'ndo_tx_timeout' ndo on RHEL 8.3 kernel.
>
> Cc: stable@dpdk.org
>
> Tested-by: Christophe Grosse <christophe.grosse@6wind.com>
> Signed-off-by: Olivier Matz <olivier.matz@6wind.com>

Reproduced issue on a RHEL 8.3 with kernel 4.18.0-240.el8.x86_64.
FAILED: kernel/linux/kni/rte_kni.ko
make -j4 -C /lib/modules/4.18.0-240.el8.x86_64/build
M=/root/dpdk/build/kernel/linux/kni src=/root/dpdk/kernel/linux/kni
'MODULE_CFLAGS=-include /root/dpdk/config/rte_config.h
-I/root/dpdk/lib/librte_eal/include -I/root/dpdk/lib/librte_kni
-I/root/dpdk/build -I/root/dpdk/kernel/linux/kni' modules
make: Entering directory '/usr/src/kernels/4.18.0-240.el8.x86_64'
  CC [M]  /root/dpdk/build/kernel/linux/kni/kni_net.o
  CC [M]  /root/dpdk/build/kernel/linux/kni/kni_misc.o
/root/dpdk/kernel/linux/kni/kni_net.c:791:20: error: initialization of
‘void (*)(struct net_device *, unsigned int)’ from incompatible
pointer type ‘void (*)(struct net_device *)’
[-Werror=incompatible-pointer-types]
  .ndo_tx_timeout = kni_net_tx_timeout,
                    ^~~~~~~~~~~~~~~~~~
/root/dpdk/kernel/linux/kni/kni_net.c:791:20: note: (near
initialization for ‘kni_net_netdev_ops.<anonymous>.ndo_tx_timeout’)
cc1: some warnings being treated as errors
make[1]: *** [scripts/Makefile.build:315:
/root/dpdk/build/kernel/linux/kni/kni_net.o] Error 1
make: *** [Makefile:1544: _module_/root/dpdk/build/kernel/linux/kni] Error 2
make: Leaving directory '/usr/src/kernels/4.18.0-240.el8.x86_64'
ninja: build stopped: subcommand failed.



> ---
>  kernel/linux/kni/compat.h | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/kernel/linux/kni/compat.h b/kernel/linux/kni/compat.h
> index d515b27669..5f65640d5e 100644
> --- a/kernel/linux/kni/compat.h
> +++ b/kernel/linux/kni/compat.h
> @@ -131,7 +131,9 @@
>  #define HAVE_IOVA_TO_KVA_MAPPING_SUPPORT
>  #endif
>
> -#if KERNEL_VERSION(5, 6, 0) <= LINUX_VERSION_CODE
> +#if KERNEL_VERSION(5, 6, 0) <= LINUX_VERSION_CODE || \
> +       (defined(RHEL_RELEASE_CODE) && \
> +        RHEL_RELEASE_VERSION(8, 3) <= RHEL_RELEASE_CODE)
>  #define HAVE_TX_TIMEOUT_TXQUEUE
>  #endif
>
> --
> 2.25.1
>

Tested-by: David Marchand <david.marchand@redhat.com>
Thanks.
  
Ferruh Yigit Nov. 26, 2020, 6:08 p.m. UTC | #2
On 11/26/2020 6:04 PM, David Marchand wrote:
> On Thu, Nov 26, 2020 at 3:24 PM Olivier Matz <olivier.matz@6wind.com> wrote:
>>
>> Like what was done for mainline kernel in commit 38ad54f3bc76 ("kni: fix
>> build with Linux 5.6"), a new parameter 'txqueue' has to be added to
>> 'ndo_tx_timeout' ndo on RHEL 8.3 kernel.
>>
>> Cc: stable@dpdk.org
>>
>> Tested-by: Christophe Grosse <christophe.grosse@6wind.com>
>> Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
> 
> Reproduced issue on a RHEL 8.3 with kernel 4.18.0-240.el8.x86_64.
> FAILED: kernel/linux/kni/rte_kni.ko
> make -j4 -C /lib/modules/4.18.0-240.el8.x86_64/build
> M=/root/dpdk/build/kernel/linux/kni src=/root/dpdk/kernel/linux/kni
> 'MODULE_CFLAGS=-include /root/dpdk/config/rte_config.h
> -I/root/dpdk/lib/librte_eal/include -I/root/dpdk/lib/librte_kni
> -I/root/dpdk/build -I/root/dpdk/kernel/linux/kni' modules
> make: Entering directory '/usr/src/kernels/4.18.0-240.el8.x86_64'
>    CC [M]  /root/dpdk/build/kernel/linux/kni/kni_net.o
>    CC [M]  /root/dpdk/build/kernel/linux/kni/kni_misc.o
> /root/dpdk/kernel/linux/kni/kni_net.c:791:20: error: initialization of
> ‘void (*)(struct net_device *, unsigned int)’ from incompatible
> pointer type ‘void (*)(struct net_device *)’
> [-Werror=incompatible-pointer-types]
>    .ndo_tx_timeout = kni_net_tx_timeout,
>                      ^~~~~~~~~~~~~~~~~~
> /root/dpdk/kernel/linux/kni/kni_net.c:791:20: note: (near
> initialization for ‘kni_net_netdev_ops.<anonymous>.ndo_tx_timeout’)
> cc1: some warnings being treated as errors
> make[1]: *** [scripts/Makefile.build:315:
> /root/dpdk/build/kernel/linux/kni/kni_net.o] Error 1
> make: *** [Makefile:1544: _module_/root/dpdk/build/kernel/linux/kni] Error 2
> make: Leaving directory '/usr/src/kernels/4.18.0-240.el8.x86_64'
> ninja: build stopped: subcommand failed.
> 
> 
> 
>> ---
>>   kernel/linux/kni/compat.h | 4 +++-
>>   1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/kernel/linux/kni/compat.h b/kernel/linux/kni/compat.h
>> index d515b27669..5f65640d5e 100644
>> --- a/kernel/linux/kni/compat.h
>> +++ b/kernel/linux/kni/compat.h
>> @@ -131,7 +131,9 @@
>>   #define HAVE_IOVA_TO_KVA_MAPPING_SUPPORT
>>   #endif
>>
>> -#if KERNEL_VERSION(5, 6, 0) <= LINUX_VERSION_CODE
>> +#if KERNEL_VERSION(5, 6, 0) <= LINUX_VERSION_CODE || \
>> +       (defined(RHEL_RELEASE_CODE) && \
>> +        RHEL_RELEASE_VERSION(8, 3) <= RHEL_RELEASE_CODE)
>>   #define HAVE_TX_TIMEOUT_TXQUEUE
>>   #endif
>>
>> --
>> 2.25.1
>>
> 
> Tested-by: David Marchand <david.marchand@redhat.com>
> Thanks.
> 

Thanks David for testing.

Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
  
Thomas Monjalon Nov. 27, 2020, 12:41 a.m. UTC | #3
26/11/2020 19:08, Ferruh Yigit:
> On 11/26/2020 6:04 PM, David Marchand wrote:
> > On Thu, Nov 26, 2020 at 3:24 PM Olivier Matz <olivier.matz@6wind.com> wrote:
> >>
> >> Like what was done for mainline kernel in commit 38ad54f3bc76 ("kni: fix
> >> build with Linux 5.6"), a new parameter 'txqueue' has to be added to
> >> 'ndo_tx_timeout' ndo on RHEL 8.3 kernel.
> >>
> >> Cc: stable@dpdk.org
> >>
> >> Tested-by: Christophe Grosse <christophe.grosse@6wind.com>
> >> Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
> > 
> > Tested-by: David Marchand <david.marchand@redhat.com>
> > Thanks.
> 
> Thanks David for testing.
> 
> Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>

Applied, thanks
  

Patch

diff --git a/kernel/linux/kni/compat.h b/kernel/linux/kni/compat.h
index d515b27669..5f65640d5e 100644
--- a/kernel/linux/kni/compat.h
+++ b/kernel/linux/kni/compat.h
@@ -131,7 +131,9 @@ 
 #define HAVE_IOVA_TO_KVA_MAPPING_SUPPORT
 #endif
 
-#if KERNEL_VERSION(5, 6, 0) <= LINUX_VERSION_CODE
+#if KERNEL_VERSION(5, 6, 0) <= LINUX_VERSION_CODE || \
+	(defined(RHEL_RELEASE_CODE) && \
+	 RHEL_RELEASE_VERSION(8, 3) <= RHEL_RELEASE_CODE)
 #define HAVE_TX_TIMEOUT_TXQUEUE
 #endif