to splice multiple UDP packets in the m_nextpkt list. Some profiling
with TCP splicing showed that checking so_rcv.sb_mb is wrong. It
causes several useless runs through the loop. Better check for
nextrecord which contains the original m_nextpkt value of the mbuf.
OK mikeb@
-/* $OpenBSD: uipc_socket.c,v 1.120 2013/12/10 21:44:50 mikeb Exp $ */
+/* $OpenBSD: uipc_socket.c,v 1.121 2014/01/11 14:33:48 bluhm Exp $ */
/* $NetBSD: uipc_socket.c,v 1.21 1996/02/04 02:17:52 christos Exp $ */
/*
so->so_splicelen += len;
/* Move several packets if possible. */
- if (!maxreached && so->so_rcv.sb_mb)
+ if (!maxreached && nextrecord)
goto nextpkt;
release: