Clarify, remove superfluous things.

This commit is contained in:
maxv 2018-05-31 15:34:25 +00:00
parent 56fc5b5d9b
commit 48df35d34b

View File

@ -1,4 +1,4 @@
/* $NetBSD: ipsec_mbuf.c,v 1.27 2018/04/28 14:39:34 maxv Exp $ */
/* $NetBSD: ipsec_mbuf.c,v 1.28 2018/05/31 15:34:25 maxv Exp $ */
/*
* Copyright (c) 2002, 2003 Sam Leffler, Errno Consulting
@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: ipsec_mbuf.c,v 1.27 2018/04/28 14:39:34 maxv Exp $");
__KERNEL_RCSID(0, "$NetBSD: ipsec_mbuf.c,v 1.28 2018/05/31 15:34:25 maxv Exp $");
/*
* IPsec-specific mbuf routines.
@ -65,25 +65,15 @@ m_clone(struct mbuf *m0)
for (m = m0; m != NULL; m = mprev->m_next) {
/*
* Regular mbufs are ignored unless there's a cluster
* in front of it that we can use to coalesce. We do
* the latter mainly so later clusters can be coalesced
* also w/o having to handle them specially (i.e. convert
* mbuf+cluster -> cluster). This optimization is heavily
* influenced by the assumption that we're running over
* Ethernet where MCLBYTES is large enough that the max
* packet size will permit lots of coalescing into a
* single cluster. This in turn permits efficient
* crypto operations, especially when using hardware.
* in front of it that we can use to coalesce.
*/
if ((m->m_flags & M_EXT) == 0) {
if (mprev && (mprev->m_flags & M_EXT) &&
m->m_len <= M_TRAILINGSPACE(mprev)) {
/* XXX: this ignores mbuf types */
memcpy(mtod(mprev, char *) + mprev->m_len,
mtod(m, char *), m->m_len);
mtod(m, char *), m->m_len);
mprev->m_len += m->m_len;
mprev->m_next = m->m_next; /* unlink from chain */
m_free(m); /* reclaim mbuf */
mprev->m_next = m_free(m);
IPSEC_STATINC(IPSEC_STAT_MBCOALESCED);
} else {
mprev = m;
@ -92,7 +82,7 @@ m_clone(struct mbuf *m0)
}
/*
* Writable mbufs are left alone (for now).
* Writable mbufs are left alone.
*/
if (!M_READONLY(m)) {
mprev = m;
@ -105,16 +95,14 @@ m_clone(struct mbuf *m0)
* it anyway, we try to reduce the number of mbufs and
* clusters so that future work is easier).
*/
KASSERTMSG(m->m_flags & M_EXT, "m_flags 0x%x", m->m_flags);
/* NB: we only coalesce into a cluster or larger */
/* We only coalesce into a cluster. */
if (mprev != NULL && (mprev->m_flags & M_EXT) &&
m->m_len <= M_TRAILINGSPACE(mprev)) {
/* XXX: this ignores mbuf types */
memcpy(mtod(mprev, char *) + mprev->m_len,
mtod(m, char *), m->m_len);
mtod(m, char *), m->m_len);
mprev->m_len += m->m_len;
mprev->m_next = m->m_next; /* unlink from chain */
m_free(m); /* reclaim mbuf */
mprev->m_next = m_free(m);
IPSEC_STATINC(IPSEC_STAT_CLCOALESCED);
continue;
}
@ -123,12 +111,6 @@ m_clone(struct mbuf *m0)
* Allocate new space to hold the copy...
*/
if (mprev == NULL && (m->m_flags & M_PKTHDR)) {
/*
* NB: if a packet header is present we must
* allocate the mbuf separately from any cluster
* because M_MOVE_PKTHDR will smash the data
* pointer and drop the M_EXT marker.
*/
MGETHDR(n, M_DONTWAIT, m->m_type);
if (n == NULL) {
m_freem(m0);
@ -162,7 +144,7 @@ m_clone(struct mbuf *m0)
mfirst = n;
mlast = NULL;
for (;;) {
int cc = min(len, MCLBYTES);
const int cc = min(len, MCLBYTES);
memcpy(mtod(n, char *), mtod(m, char *) + off, cc);
n->m_len = cc;
if (mlast != NULL)