[Bug 254695] Hyper-V + TCP_BBR: Kernel Panic: Assertion in_epoch(net_epoch_preempt) failed at netinet/tcp_lro.c:915

From: <bugzilla-noreply_at_freebsd.org>
Date: Thu, 15 Jul 2021 15:42:28 +0000
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=254695

Andrew Gallatin <gallatin_at_FreeBSD.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |gallatin_at_FreeBSD.org

--- Comment #29 from Andrew Gallatin <gallatin_at_FreeBSD.org> ---
Rather than adding additional epoch enters to the critical path, I'd strongly
prefer the hyperv driver be fixed to respect the network epoch.

Most network drivers pass packets into the network stack as part of their
receive interrupt processing.  Code has been added to automatically enter the
network epoch in the FreeBSD ithread code, so that the epoch is held for the
duration of the interrupt handler's execution on each interrupt delivered.

For drivers which use special mechanisms (like, taskqueues), it would be best
if they marked themselves with IFF_KNOWSEPOCH and then called NET_EPOCH_ENTER()
around calls into the network stack.  Since entering an EPOCH uses atomic
operations, its best to take and release the epoch as infrequently as possible.
  Eg, around the loop that processes packets and passes them to lro or
if_input().

See iflib for an example.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
Received on Thu Jul 15 2021 - 15:42:28 UTC

Original text of this message