]> git.baikalelectronics.ru Git - kernel.git/commit
net: implement threaded-able napi poll loop support
authorWei Wang <weiwan@google.com>
Mon, 8 Feb 2021 19:34:09 +0000 (11:34 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 9 Feb 2021 23:27:28 +0000 (15:27 -0800)
commit19a9abdd15a97b124f2b9475e16b168fc91c178f
treee54c1a792696d1f5bbfdbdfe91abdbcdf382d8ef
parent90e45f68c9f4bde00224bdb6de7ca2f76faff2a4
net: implement threaded-able napi poll loop support

This patch allows running each napi poll loop inside its own
kernel thread.
The kthread is created during netif_napi_add() if dev->threaded
is set. And threaded mode is enabled in napi_enable(). We will
provide a way to set dev->threaded and enable threaded mode
without a device up/down in the following patch.

Once that threaded mode is enabled and the kthread is
started, napi_schedule() will wake-up such thread instead
of scheduling the softirq.

The threaded poll loop behaves quite likely the net_rx_action,
but it does not have to manipulate local irqs and uses
an explicit scheduling point based on netdev_budget.

Co-developed-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Co-developed-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Co-developed-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Wei Wang <weiwan@google.com>
Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/netdevice.h
net/core/dev.c