mirror of
https://github.com/openbsd/src.git
synced 2026-04-24 06:04:47 +00:00
710ece6a621e4cd050408fdfb1f50af38fd1d264
Socket splicing was running on one dedicated kernel thread. This design comes from the time when softnet was still a soft interrupt. Now with multiple softnet threads, retire the sosplice thread. Instead call sotask() from a softnet task queue. Thus it can run in parallel. Keep the same softnet to take a bunch of packets from the network driver, do input processing, and store data in socket buffers. Then the same thread runs the splicing task, calls somove() and does output processing. There is no concurrent locking or scheduling, ideally packets stay on the same CPU. For that sosplice() remembers the task queue that matches the flowid of the source socket. OK mvs@
…
…
…
Description
Languages
C
57.4%
C++
28.7%
Perl
3.9%
Roff
3%
Makefile
0.9%
Other
5.6%