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@