Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 18 Sep 2002 17:07:10 +0200
From:      Poul-Henning Kamp <phk@freebsd.org>
To:        arch@freebsd.org
Subject:   Trivial mbuf patch for review.
Message-ID:  <3185.1032361630@critter.freebsd.dk>

next in thread | raw e-mail | index | archive | help

This patch is a no-op which replaces local mbuf-chain counting
loops with calls to m_length() and in one case m_fixhdr().

Index: kern/uipc_socket2.c
===================================================================
RCS file: /home/ncvs/src/sys/kern/uipc_socket2.c,v
retrieving revision 1.103
diff -u -r1.103 uipc_socket2.c
--- kern/uipc_socket2.c	16 Aug 2002 18:41:48 -0000	1.103
+++ kern/uipc_socket2.c	18 Sep 2002 14:08:34 -0000
@@ -498,11 +498,11 @@
 #ifdef SOCKBUF_DEBUG
 void
 sbcheck(sb)
-	register struct sockbuf *sb;
+	struct sockbuf *sb;
 {
-	register struct mbuf *m;
-	register struct mbuf *n = 0;
-	register u_long len = 0, mbcnt = 0;
+	struct mbuf *m;
+	struct mbuf *n = 0;
+	u_long len = 0, mbcnt = 0;
 
 	for (m = sb->sb_mb; m; m = n) {
 	    n = m->m_nextpkt;
@@ -610,22 +610,18 @@
  */
 int
 sbappendaddr(sb, asa, m0, control)
-	register struct sockbuf *sb;
+	struct sockbuf *sb;
 	struct sockaddr *asa;
 	struct mbuf *m0, *control;
 {
-	register struct mbuf *m, *n;
+	struct mbuf *m, *n;
 	int space = asa->sa_len;
 
 	if (m0 && (m0->m_flags & M_PKTHDR) == 0)
 		panic("sbappendaddr");
 	if (m0)
 		space += m0->m_pkthdr.len;
-	for (n = control; n; n = n->m_next) {
-		space += n->m_len;
-		if (n->m_next == 0)	/* keep pointer to last control buf */
-			break;
-	}
+	space += m_length(control, &n);
 	if (space > sbspace(sb))
 		return (0);
 	if (asa->sa_len > MLEN)
@@ -657,19 +653,12 @@
 	struct sockbuf *sb;
 	struct mbuf *control, *m0;
 {
-	register struct mbuf *m, *n;
-	int space = 0;
+	struct mbuf *m, *n;
+	int space;
 
 	if (control == 0)
 		panic("sbappendcontrol");
-	for (m = control; ; m = m->m_next) {
-		space += m->m_len;
-		if (m->m_next == 0)
-			break;
-	}
-	n = m;			/* save pointer to last control buffer */
-	for (m = m0; m; m = m->m_next)
-		space += m->m_len;
+	space = m_length(control, &n) + m_length(m0, NULL);
 	if (space > sbspace(sb))
 		return (0);
 	n->m_next = m0;			/* concatenate data to control */
Index: net/bpf.c
===================================================================
RCS file: /home/ncvs/src/sys/net/bpf.c,v
retrieving revision 1.94
diff -u -r1.94 bpf.c
--- net/bpf.c	31 Jul 2002 16:11:32 -0000	1.94
+++ net/bpf.c	18 Sep 2002 14:18:31 -0000
@@ -1123,11 +1123,8 @@
 	struct bpf_if *bp = ifp->if_bpf;
 	struct bpf_d *d;
 	u_int pktlen, slen;
-	struct mbuf *m0;
 
-	pktlen = 0;
-	for (m0 = m; m0 != 0; m0 = m0->m_next)
-		pktlen += m0->m_len;
+	pktlen = m_length(m, NULL);
 
 	BPFIF_LOCK(bp);
 	for (d = bp->bif_dlist; d != 0; d = d->bd_next) {
Index: net/if_ppp.c
===================================================================
RCS file: /home/ncvs/src/sys/net/if_ppp.c,v
retrieving revision 1.83
diff -u -r1.83 if_ppp.c
--- net/if_ppp.c	19 Aug 2002 19:22:41 -0000	1.83
+++ net/if_ppp.c	18 Sep 2002 14:19:07 -0000
@@ -758,7 +758,6 @@
     struct ifqueue *ifq;
     enum NPmode mode;
     int len;
-    struct mbuf *m;
 
 #ifdef MAC
     error = mac_check_ifnet_transmit(ifp, m0);
@@ -851,9 +850,7 @@
     *cp++ = protocol & 0xff;
     m0->m_len += PPP_HDRLEN;
 
-    len = 0;
-    for (m = m0; m != 0; m = m->m_next)
-	len += m->m_len;
+    len = m_length(m0, NULL);
 
     if (sc->sc_flags & SC_LOG_OUTPKT) {
 	printf("ppp%d output: ", ifp->if_unit);
@@ -1087,9 +1084,7 @@
 	struct mbuf *mcomp = NULL;
 	int slen, clen;
 
-	slen = 0;
-	for (mp = m; mp != NULL; mp = mp->m_next)
-	    slen += mp->m_len;
+	slen = m_length(m, NULL);
 	clen = (*sc->sc_xcomp->compress)
 	    (sc->sc_xc_state, &mcomp, m, slen, sc->sc_if.if_mtu + PPP_HDRLEN);
 	if (mcomp != NULL) {
@@ -1324,9 +1319,7 @@
     sc->sc_stats.ppp_ipackets++;
 
     if (sc->sc_flags & SC_LOG_INPKT) {
-	ilen = 0;
-	for (mp = m; mp != NULL; mp = mp->m_next)
-	    ilen += mp->m_len;
+	ilen = m_length(m, NULL);
 	printf("ppp%d: got %d bytes\n", ifp->if_unit, ilen);
 	pppdumpm(m);
     }
@@ -1389,9 +1382,7 @@
     }
 #endif
 
-    ilen = 0;
-    for (mp = m; mp != NULL; mp = mp->m_next)
-	ilen += mp->m_len;
+    ilen = m_length(m, NULL);
 
 #ifdef VJC
     if (sc->sc_flags & SC_VJ_RESET) {
Index: netinet/ip_input.c
===================================================================
RCS file: /home/ncvs/src/sys/netinet/ip_input.c,v
retrieving revision 1.208
diff -u -r1.208 ip_input.c
--- netinet/ip_input.c	17 Sep 2002 11:20:02 -0000	1.208
+++ netinet/ip_input.c	18 Sep 2002 13:47:10 -0000
@@ -1071,12 +1071,8 @@
 	m->m_len += (IP_VHL_HL(ip->ip_vhl) << 2);
 	m->m_data -= (IP_VHL_HL(ip->ip_vhl) << 2);
 	/* some debugging cruft by sklower, below, will go away soon */
-	if (m->m_flags & M_PKTHDR) { /* XXX this should be done elsewhere */
-		register int plen = 0;
-		for (t = m; t; t = t->m_next)
-			plen += t->m_len;
-		m->m_pkthdr.len = plen;
-	}
+	if (m->m_flags & M_PKTHDR)	/* XXX this should be done elsewhere */
+		m_fixhdr(m);
 	return (m);
 
 dropfrag:
Index: netns/idp_usrreq.c
===================================================================
RCS file: /home/ncvs/src/sys/netns/idp_usrreq.c,v
retrieving revision 1.12
diff -u -r1.12 idp_usrreq.c
--- netns/idp_usrreq.c	31 May 2002 11:52:34 -0000	1.12
+++ netns/idp_usrreq.c	18 Sep 2002 14:14:06 -0000
@@ -144,18 +144,12 @@
 	register struct mbuf *m;
 	register struct idp *idp;
 	register struct socket *so;
-	register int len = 0;
+	register int len;
 	register struct route *ro;
 	struct mbuf *mprev;
 	extern int idpcksum;
 
-	/*
-	 * Calculate data length.
-	 */
-	for (m = m0; m; m = m->m_next) {
-		mprev = m;
-		len += m->m_len;
-	}
+	len = m_length(m0, &mprev);
 	/*
 	 * Make sure packet is actually of even length.
 	 */
Index: netns/spp_usrreq.c
===================================================================
RCS file: /home/ncvs/src/sys/netns/spp_usrreq.c,v
retrieving revision 1.16
diff -u -r1.16 spp_usrreq.c
--- netns/spp_usrreq.c	25 Aug 2002 13:17:35 -0000	1.16
+++ netns/spp_usrreq.c	18 Sep 2002 14:13:27 -0000
@@ -687,8 +687,7 @@
 		 firstbad = m;
 		 /*for (;;) {*/
 			/* calculate length */
-			for (m0 = m, len = 0; m ; m = m->m_next)
-				len += m->m_len;
+			len = m_length(m);
 			if (len > cb->s_mtu) {
 			}
 		/* FINISH THIS
Index: netsmb/smb_rq.c
===================================================================
RCS file: /home/ncvs/src/sys/netsmb/smb_rq.c,v
retrieving revision 1.7
diff -u -r1.7 smb_rq.c
--- netsmb/smb_rq.c	16 Sep 2002 09:51:58 -0000	1.7
+++ netsmb/smb_rq.c	18 Sep 2002 14:12:50 -0000
@@ -421,9 +421,7 @@
 	m0 = m_split(mtop, offset, M_TRYWAIT);
 	if (m0 == NULL)
 		return EBADRPC;
-	for(len = 0, m = m0; m->m_next; m = m->m_next)
-		len += m->m_len;
-	len += m->m_len;
+	len = m_length(m0, &m);
 	m->m_len -= len - count;
 	if (mdp->md_top == NULL) {
 		md_initm(mdp, m0);
Index: nfsclient/nfs_socket.c
===================================================================
RCS file: /home/ncvs/src/sys/nfsclient/nfs_socket.c,v
retrieving revision 1.86
diff -u -r1.86 nfs_socket.c
--- nfsclient/nfs_socket.c	8 Sep 2002 15:11:18 -0000	1.86
+++ nfsclient/nfs_socket.c	18 Sep 2002 14:19:42 -0000
@@ -869,13 +869,7 @@
 	rep->r_vp = vp;
 	rep->r_td = td;
 	rep->r_procnum = procnum;
-	i = 0;
-	m = mrest;
-	while (m) {
-		i += m->m_len;
-		m = m->m_next;
-	}
-	mrest_len = i;
+	mrest_len = i = m_length(mrest, NULL);
 
 	/*
 	 * Get the RPC header with authorization.
Index: nfsserver/nfs_syscalls.c
===================================================================
RCS file: /home/ncvs/src/sys/nfsserver/nfs_syscalls.c,v
retrieving revision 1.80
diff -u -r1.80 nfs_syscalls.c
--- nfsserver/nfs_syscalls.c	24 Jul 2002 23:10:34 -0000	1.80
+++ nfsserver/nfs_syscalls.c	18 Sep 2002 14:11:36 -0000
@@ -451,12 +451,7 @@
 			nfsrv_updatecache(nd, TRUE, mreq);
 			nd->nd_mrep = NULL;
 		    case RC_REPLY:
-			m = mreq;
-			siz = 0;
-			while (m) {
-				siz += m->m_len;
-				m = m->m_next;
-			}
+			siz = m_length(mreq, NULL);
 			if (siz <= 0 || siz > NFS_MAXPACKET) {
 				printf("mbuf siz=%d\n",siz);
 				panic("Bad nfs svc reply");
-- 
Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk@FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3185.1032361630>