CVSROOT:        /cvs
Module name:    src
Changes by:     [email protected]   2025/10/24 09:09:56

Modified files:
        sys/kern       : uipc_socket.c 
        sys/netinet    : in_pcb.c in_pcb.h tcp_usrreq.c udp_usrreq.c 
        sys/sys        : protosw.h socketvar.h 

Log message:
Use softnet threads for socket splicing.

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@

Reply via email to