[PATCH v2] kni: update kernel API to receive packets

Ferruh Yigit ferruh.yigit at xilinx.com
Thu Apr 21 10:29:59 CEST 2022


On 4/21/2022 4:45 AM, Gagandeep Singh wrote:
> API 'netif_rx_ni()' has been removed in kernel with commit:
> baebdf48c3600 ("net: dev: Makes sure netif_rx() can be invoked in any context.")
> 
> The API netif_rx() can be used for any context to receive packets
> from device drivers.
> 
> This patch replaces the API netif_rx_ni() with netif_rx() for
> kernel version 5.18 and above.
> 
> Signed-off-by: Gagandeep Singh <g.singh at nxp.com>
> 
> Change-log:
> Added a #if for kernel version 5.18 and above for API change.
> ---
>   kernel/linux/kni/kni_net.c | 4 ++++
>   1 file changed, 4 insertions(+)
> 
> diff --git a/kernel/linux/kni/kni_net.c b/kernel/linux/kni/kni_net.c
> index 29e5b9e21f..7a576b9ebc 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 */
> +#if KERNEL_VERSION(5, 18, 0) <= LINUX_VERSION_CODE

Can you please put the version check to 'kernel/linux/kni/compat.h', 
there are multiple samples there.
As you will see there, the version comparison is not straightforward 
when distro kernels are involved, so it is good to move that clutter 
away from the source code.

> +		netif_rx(skb);
> +#else
>   		netif_rx_ni(skb);
> +#endif
>   
>   		/* Update statistics */
>   		dev->stats.rx_bytes += len;



More information about the dev mailing list