[v2] kni: fix build with Linux 5.18

Message ID 20220525102641.20982-1-jslaby@suse.cz (mailing list archive)
State Superseded, archived
Delegated to: Andrew Rybchenko
Headers
Series [v2] kni: fix build with Linux 5.18 |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-x86_64-compile-testing success Testing PASS
ci/iol-x86_64-unit-testing success Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-aarch64-unit-testing success Testing PASS
ci/iol-aarch64-compile-testing success Testing PASS
ci/iol-abi-testing success Testing PASS

Commit Message

Jiri Slaby May 25, 2022, 10:26 a.m. UTC
  Since commit 2655926aea9b (net: Remove netif_rx_any_context() and
netif_rx_ni().) in 5.18, netif_rx_ni() no longer exists as netif_rx()
can be called from any context. So define HAVE_NETIF_RX_NI for older
releases and call the appropriate function in kni_net.

Cc: stable@dpdk.org
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
[v2]
- forgot to amend the #else/#endif typo fix

 kernel/linux/kni/compat.h  | 4 ++++
 kernel/linux/kni/kni_net.c | 4 ++++
 2 files changed, 8 insertions(+)
  

Comments

Ferruh Yigit May 31, 2022, 4:25 p.m. UTC | #1
On 5/25/2022 11:26 AM, Jiri Slaby wrote:
> Since commit 2655926aea9b (net: Remove netif_rx_any_context() and
> netif_rx_ni().) in 5.18, netif_rx_ni() no longer exists as netif_rx()
> can be called from any context. So define HAVE_NETIF_RX_NI for older
> releases and call the appropriate function in kni_net.
> 

I think there is another commit that makes 'netif_rx()' usable in place 
of 'netif_rx_ni()', can you please document that commit too for reference.

> Cc: stable@dpdk.org
> Signed-off-by: Jiri Slaby <jslaby@suse.cz>
> ---
> [v2]
> - forgot to amend the #else/#endif typo fix
> 
>   kernel/linux/kni/compat.h  | 4 ++++
>   kernel/linux/kni/kni_net.c | 4 ++++
>   2 files changed, 8 insertions(+)
> 
> diff --git a/kernel/linux/kni/compat.h b/kernel/linux/kni/compat.h
> index 664785674ff1..a81846a8a895 100644
> --- a/kernel/linux/kni/compat.h
> +++ b/kernel/linux/kni/compat.h
> @@ -141,3 +141,7 @@
>   #if KERNEL_VERSION(5, 9, 0) > LINUX_VERSION_CODE
>   #define HAVE_TSK_IN_GUP
>   #endif
> +
> +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 18, 0)
> +#define HAVE_NETIF_RX_NI
> +#endif

Can you please switch sides in the comparison [1] to be compatible with 
rest of the file and to prevent checkpatch warning [2]?

Rest looks good to me.

[1]
#if KERNEL_VERSION(5, 18, 0) > LINUX_VERSION_CODE

[2]
WARNING:CONSTANT_COMPARISON: Comparisons should place the constant on 
the right side of the test
#97: FILE: kernel/linux/kni/compat.h:145:
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 18, 0)

> diff --git a/kernel/linux/kni/kni_net.c b/kernel/linux/kni/kni_net.c
> index 29e5b9e21f9e..41805fcabf7b 100644
> --- a/kernel/linux/kni/kni_net.c
> +++ b/kernel/linux/kni/kni_net.c
> @@ -441,7 +441,11 @@ kni_net_rx_normal(struct kni_dev *kni)
>   		skb->ip_summed = CHECKSUM_UNNECESSARY;
>   
>   		/* Call netif interface */
> +#ifdef HAVE_NETIF_RX_NI
>   		netif_rx_ni(skb);
> +#else
> +		netif_rx(skb);
> +#endif
>   
>   		/* Update statistics */
>   		dev->stats.rx_bytes += len;
  

Patch

diff --git a/kernel/linux/kni/compat.h b/kernel/linux/kni/compat.h
index 664785674ff1..a81846a8a895 100644
--- a/kernel/linux/kni/compat.h
+++ b/kernel/linux/kni/compat.h
@@ -141,3 +141,7 @@ 
 #if KERNEL_VERSION(5, 9, 0) > LINUX_VERSION_CODE
 #define HAVE_TSK_IN_GUP
 #endif
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 18, 0)
+#define HAVE_NETIF_RX_NI
+#endif
diff --git a/kernel/linux/kni/kni_net.c b/kernel/linux/kni/kni_net.c
index 29e5b9e21f9e..41805fcabf7b 100644
--- a/kernel/linux/kni/kni_net.c
+++ b/kernel/linux/kni/kni_net.c
@@ -441,7 +441,11 @@  kni_net_rx_normal(struct kni_dev *kni)
 		skb->ip_summed = CHECKSUM_UNNECESSARY;
 
 		/* Call netif interface */
+#ifdef HAVE_NETIF_RX_NI
 		netif_rx_ni(skb);
+#else
+		netif_rx(skb);
+#endif
 
 		/* Update statistics */
 		dev->stats.rx_bytes += len;