]> git.baikalelectronics.ru Git - kernel.git/commit
net: try to avoid unneeded backlog flush
authorPaolo Abeni <pabeni@redhat.com>
Thu, 10 Sep 2020 21:33:18 +0000 (23:33 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 14 Sep 2020 21:39:00 +0000 (14:39 -0700)
commit5f9bbf604854ad477f0a6e63e5f93df00f5c23a1
treee5ab4d5630bb0de1ad741d616d17ef97882bfb9e
parent89e69c0132cfa2c532943d51b399a870b8fc8145
net: try to avoid unneeded backlog flush

flush_all_backlogs() may cause deadlock on systems
running processes with FIFO scheduling policy.

The above is critical in -RT scenarios, where user-space
specifically ensure no network activity is scheduled on
the CPU running the mentioned FIFO process, but still get
stuck.

This commit tries to address the problem checking the
backlog status on the remote CPUs before scheduling the
flush operation. If the backlog is empty, we can skip it.

v1 -> v2:
 - explicitly clear flushed cpu mask - Eric

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/dev.c