svn commit: r356989 - head/sys/netinet

Gleb Smirnoff glebius at freebsd.org
Thu Jan 23 00:29:15 UTC 2020


  Hi Michael,

On Wed, Jan 22, 2020 at 10:20:55PM +0100, Michael Tuexen wrote:
M> > Log:
M> >  Plug possible calls into ip6?_output() without network epoch from SCTP
M> >  bluntly adding epoch entrance into the macro that SCTP uses to call
M> >  ip6?_output().  This definitely will introduce several epoch recursions.
M> Can you specify under which condition NET_EPOCH_ENTER() should be called?
M> Then I can try to figure out where these calls need to be made in the
M> SCTP code.

Thanks a lot for offering help!

Basically the end goal is that any non-sleepable context associated with
networking should be running in epoch. That means interrupts, callouts
and taskqueues. Syscalls should enter epoch at some stage, depends on
a syscall.

Right now we are processing all incoming packets that came through
ether_input() in the network epoch, so anytime we call sctp_output()
as a _response_ to a packet that came via sctp_input() we already are
in epoch. With r356989 it is going to be unnecessary recursion.

When we do retransmits from a callout, then we aren't (yet) in epoch
and r356989 addresses that. Same for syscalls that start SCTP connection
or send data down SCTP socket.

-- 
Gleb Smirnoff


More information about the svn-src-all mailing list