CVSROOT:        /cvs
Module name:    src
Changes by:     bl...@cvs.openbsd.org   2024/08/12 05:25:27

Modified files:
        sys/kern       : uipc_domain.c 
        sys/netinet    : igmp.c 
        sys/netinet6   : icmp6.c mld6.c 

Log message:
Run network protocol timer without kernel lock.

Mark slow and fast protocol timeouts as MP safe.  This means they
run on a spearate thread without holding the kernel lock.
IGMP and MLD6 cannot run in parallel, they use exclusive net lock
to protect themselves.  As a performance optimization global variables
are used to skip igmp_fasttimo() and mld6_fasttimeo() if no multicast
is active.  These global variables use atomic operations and memory
barriers to work lockless.
IPv6 fragment timeout protects itself with a mutex.
TCP timers also run without kernel lock now.  The whole TCP stack
holds exclusive net lock, so additional kernel lock is useless.

OK mvs@

Reply via email to