From owner-svn-src-projects@FreeBSD.ORG Sun Nov 30 12:37:23 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6ACCDC87; Sun, 30 Nov 2014 12:37:23 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 56923E7C; Sun, 30 Nov 2014 12:37:23 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id sAUCbNcx046986; Sun, 30 Nov 2014 12:37:23 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id sAUCbLBx046976; Sun, 30 Nov 2014 12:37:21 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201411301237.sAUCbLBx046976@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Garrett Cooper Date: Sun, 30 Nov 2014 12:37:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r275325 - in projects/building-blocks/sys: arm/arm boot/i386/boot2 kern netinet sys X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 30 Nov 2014 12:37:23 -0000 Author: ngie Date: Sun Nov 30 12:37:20 2014 New Revision: 275325 URL: https://svnweb.freebsd.org/changeset/base/275325 Log: MFhead @ r275324 Modified: projects/building-blocks/sys/arm/arm/cpufunc_asm_armv5.S projects/building-blocks/sys/arm/arm/cpufunc_asm_xscale_c3.S projects/building-blocks/sys/arm/arm/fusu.S projects/building-blocks/sys/arm/arm/support.S projects/building-blocks/sys/boot/i386/boot2/boot2.c projects/building-blocks/sys/kern/uipc_sockbuf.c projects/building-blocks/sys/netinet/tcp_usrreq.c projects/building-blocks/sys/sys/sockbuf.h Directory Properties: projects/building-blocks/ (props changed) projects/building-blocks/etc/ (props changed) projects/building-blocks/sys/ (props changed) projects/building-blocks/sys/boot/ (props changed) Modified: projects/building-blocks/sys/arm/arm/cpufunc_asm_armv5.S ============================================================================== --- projects/building-blocks/sys/arm/arm/cpufunc_asm_armv5.S Sun Nov 30 12:34:48 2014 (r275324) +++ projects/building-blocks/sys/arm/arm/cpufunc_asm_armv5.S Sun Nov 30 12:37:20 2014 (r275325) @@ -194,7 +194,6 @@ ENTRY(armv5_idcache_wbinv_range) END(armv5_idcache_wbinv_range) ENTRY_NP(armv5_idcache_wbinv_all) -armv5_idcache_wbinv_all: .Larmv5_idcache_wbinv_all: /* * We assume that the code here can never be out of sync with the Modified: projects/building-blocks/sys/arm/arm/cpufunc_asm_xscale_c3.S ============================================================================== --- projects/building-blocks/sys/arm/arm/cpufunc_asm_xscale_c3.S Sun Nov 30 12:34:48 2014 (r275324) +++ projects/building-blocks/sys/arm/arm/cpufunc_asm_xscale_c3.S Sun Nov 30 12:37:20 2014 (r275325) @@ -144,7 +144,6 @@ __FBSDID("$FreeBSD$"); ENTRY_NP(xscalec3_cache_syncI) -xscalec3_cache_purgeID: EENTRY_NP(xscalec3_cache_purgeID) mcr p15, 0, r0, c7, c5, 0 /* flush I cache (D cleaned below) */ EENTRY_NP(xscalec3_cache_cleanID) Modified: projects/building-blocks/sys/arm/arm/fusu.S ============================================================================== --- projects/building-blocks/sys/arm/arm/fusu.S Sun Nov 30 12:34:48 2014 (r275324) +++ projects/building-blocks/sys/arm/arm/fusu.S Sun Nov 30 12:37:20 2014 (r275325) @@ -129,7 +129,7 @@ EENTRY_NP(fuword32) str r1, [r2, #PCB_ONFAULT] mov r0, r3 RET -END(fuword32) +EEND(fuword32) END(fuword) /* @@ -295,7 +295,7 @@ EENTRY_NP(suword32) mov r0, #0x00000000 str r0, [r2, #PCB_ONFAULT] RET -END(suword32) +EEND(suword32) END(suword) /* Modified: projects/building-blocks/sys/arm/arm/support.S ============================================================================== --- projects/building-blocks/sys/arm/arm/support.S Sun Nov 30 12:34:48 2014 (r275324) +++ projects/building-blocks/sys/arm/arm/support.S Sun Nov 30 12:37:20 2014 (r275325) @@ -130,7 +130,7 @@ ENTRY(bzero) .Lnormal0: mov r3, #0x00 b do_memset -EEND(bzero) +END(bzero) /* LINTSTUB: Func: void *memset(void *, int, size_t) */ ENTRY(memset) and r3, r1, #0xff /* We deal with bytes */ Modified: projects/building-blocks/sys/boot/i386/boot2/boot2.c ============================================================================== --- projects/building-blocks/sys/boot/i386/boot2/boot2.c Sun Nov 30 12:34:48 2014 (r275324) +++ projects/building-blocks/sys/boot/i386/boot2/boot2.c Sun Nov 30 12:37:20 2014 (r275325) @@ -418,7 +418,7 @@ parse() #if SERIAL } else if (c == 'S') { j = 0; - while ((i = *arg++ - '0') <= 9) + while ((unsigned int)(i = *arg++ - '0') <= 9) j = j * 10 + i; if (j > 0 && i == -'0') { comspeed = j; Modified: projects/building-blocks/sys/kern/uipc_sockbuf.c ============================================================================== --- projects/building-blocks/sys/kern/uipc_sockbuf.c Sun Nov 30 12:34:48 2014 (r275324) +++ projects/building-blocks/sys/kern/uipc_sockbuf.c Sun Nov 30 12:37:20 2014 (r275325) @@ -69,6 +69,60 @@ static struct mbuf *sbcut_internal(struc static void sbflush_internal(struct sockbuf *sb); /* + * Adjust sockbuf state reflecting allocation of m. + */ +void +sballoc(struct sockbuf *sb, struct mbuf *m) +{ + + SOCKBUF_LOCK_ASSERT(sb); + + sb->sb_cc += m->m_len; + + if (m->m_type != MT_DATA && m->m_type != MT_OOBDATA) + sb->sb_ctl += m->m_len; + + sb->sb_mbcnt += MSIZE; + sb->sb_mcnt += 1; + + if (m->m_flags & M_EXT) { + sb->sb_mbcnt += m->m_ext.ext_size; + sb->sb_ccnt += 1; + } +} + +/* + * Adjust sockbuf state reflecting freeing of m. + */ +void +sbfree(struct sockbuf *sb, struct mbuf *m) +{ + +#if 0 /* XXX: not yet: soclose() call path comes here w/o lock. */ + SOCKBUF_LOCK_ASSERT(sb); +#endif + + sb->sb_cc -= m->m_len; + + if (m->m_type != MT_DATA && m->m_type != MT_OOBDATA) + sb->sb_ctl -= m->m_len; + + sb->sb_mbcnt -= MSIZE; + sb->sb_mcnt -= 1; + if (m->m_flags & M_EXT) { + sb->sb_mbcnt -= m->m_ext.ext_size; + sb->sb_ccnt -= 1; + } + + if (sb->sb_sndptr == m) { + sb->sb_sndptr = NULL; + sb->sb_sndptroff = 0; + } + if (sb->sb_sndptroff != 0) + sb->sb_sndptroff -= m->m_len; +} + +/* * Socantsendmore indicates that no more data will be sent on the socket; it * would normally be applied to a socket when the user informs the system * that no more data is to be sent, by the protocol code (in case @@ -553,28 +607,36 @@ sbappendstream(struct sockbuf *sb, struc #ifdef SOCKBUF_DEBUG void -sbcheck(struct sockbuf *sb) +sbcheck(struct sockbuf *sb, const char *file, int line) { - struct mbuf *m; - struct mbuf *n = 0; - u_long len = 0, mbcnt = 0; + struct mbuf *m, *n; + u_long cc, mbcnt; SOCKBUF_LOCK_ASSERT(sb); + cc = mbcnt = 0; + for (m = sb->sb_mb; m; m = n) { n = m->m_nextpkt; for (; m; m = m->m_next) { - len += m->m_len; + if (m->m_len == 0) { + printf("sb %p empty mbuf %p\n", sb, m); + goto fail; + } + cc += m->m_len; mbcnt += MSIZE; if (m->m_flags & M_EXT) /*XXX*/ /* pretty sure this is bogus */ mbcnt += m->m_ext.ext_size; } } - if (len != sb->sb_cc || mbcnt != sb->sb_mbcnt) { - printf("cc %ld != %u || mbcnt %ld != %u\n", len, sb->sb_cc, + if (cc != sb->sb_cc || mbcnt != sb->sb_mbcnt) { + printf("cc %ld != %u || mbcnt %ld != %u\n", cc, sb->sb_cc, mbcnt, sb->sb_mbcnt); - panic("sbcheck"); + goto fail; } + return; +fail: + panic("%s from %s:%u", __func__, file, line); } #endif Modified: projects/building-blocks/sys/netinet/tcp_usrreq.c ============================================================================== --- projects/building-blocks/sys/netinet/tcp_usrreq.c Sun Nov 30 12:34:48 2014 (r275324) +++ projects/building-blocks/sys/netinet/tcp_usrreq.c Sun Nov 30 12:37:20 2014 (r275325) @@ -925,7 +925,7 @@ tcp_usr_send(struct socket *so, int flag tp->snd_wnd = TTCP_CLIENT_SND_WND; tcp_mss(tp, -1); } - tp->snd_up = tp->snd_una + so->so_snd.sb_cc; + tp->snd_up = tp->snd_una + sbavail(&so->so_snd); tp->t_flags |= TF_FORCEDATA; error = tcp_output(tp); tp->t_flags &= ~TF_FORCEDATA; Modified: projects/building-blocks/sys/sys/sockbuf.h ============================================================================== --- projects/building-blocks/sys/sys/sockbuf.h Sun Nov 30 12:34:48 2014 (r275324) +++ projects/building-blocks/sys/sys/sockbuf.h Sun Nov 30 12:37:20 2014 (r275325) @@ -136,7 +136,6 @@ int sbappendcontrol_locked(struct sockbu struct mbuf *control); void sbappendrecord(struct sockbuf *sb, struct mbuf *m0); void sbappendrecord_locked(struct sockbuf *sb, struct mbuf *m0); -void sbcheck(struct sockbuf *sb); void sbcompress(struct sockbuf *sb, struct mbuf *m, struct mbuf *n); struct mbuf * sbcreatecontrol(caddr_t p, int size, int type, int level); @@ -164,6 +163,8 @@ void sbtoxsockbuf(struct sockbuf *sb, st int sbwait(struct sockbuf *sb); int sblock(struct sockbuf *sb, int flags); void sbunlock(struct sockbuf *sb); +void sballoc(struct sockbuf *, struct mbuf *); +void sbfree(struct sockbuf *, struct mbuf *); /* * Return how much data is available to be taken out of socket @@ -213,38 +214,6 @@ sbspace(struct sockbuf *sb) return((bleft < mleft) ? bleft : mleft); } -/* adjust counters in sb reflecting allocation of m */ -#define sballoc(sb, m) { \ - (sb)->sb_cc += (m)->m_len; \ - if ((m)->m_type != MT_DATA && (m)->m_type != MT_OOBDATA) \ - (sb)->sb_ctl += (m)->m_len; \ - (sb)->sb_mbcnt += MSIZE; \ - (sb)->sb_mcnt += 1; \ - if ((m)->m_flags & M_EXT) { \ - (sb)->sb_mbcnt += (m)->m_ext.ext_size; \ - (sb)->sb_ccnt += 1; \ - } \ -} - -/* adjust counters in sb reflecting freeing of m */ -#define sbfree(sb, m) { \ - (sb)->sb_cc -= (m)->m_len; \ - if ((m)->m_type != MT_DATA && (m)->m_type != MT_OOBDATA) \ - (sb)->sb_ctl -= (m)->m_len; \ - (sb)->sb_mbcnt -= MSIZE; \ - (sb)->sb_mcnt -= 1; \ - if ((m)->m_flags & M_EXT) { \ - (sb)->sb_mbcnt -= (m)->m_ext.ext_size; \ - (sb)->sb_ccnt -= 1; \ - } \ - if ((sb)->sb_sndptr == (m)) { \ - (sb)->sb_sndptr = NULL; \ - (sb)->sb_sndptroff = 0; \ - } \ - if ((sb)->sb_sndptroff != 0) \ - (sb)->sb_sndptroff -= (m)->m_len; \ -} - #define SB_EMPTY_FIXUP(sb) do { \ if ((sb)->sb_mb == NULL) { \ (sb)->sb_mbtail = NULL; \ @@ -254,13 +223,15 @@ sbspace(struct sockbuf *sb) #ifdef SOCKBUF_DEBUG void sblastrecordchk(struct sockbuf *, const char *, int); -#define SBLASTRECORDCHK(sb) sblastrecordchk((sb), __FILE__, __LINE__) - void sblastmbufchk(struct sockbuf *, const char *, int); +void sbcheck(struct sockbuf *, const char *, int); +#define SBLASTRECORDCHK(sb) sblastrecordchk((sb), __FILE__, __LINE__) #define SBLASTMBUFCHK(sb) sblastmbufchk((sb), __FILE__, __LINE__) +#define SBCHECK(sb) sbcheck((sb), __FILE__, __LINE__) #else -#define SBLASTRECORDCHK(sb) /* nothing */ -#define SBLASTMBUFCHK(sb) /* nothing */ +#define SBLASTRECORDCHK(sb) do {} while (0) +#define SBLASTMBUFCHK(sb) do {} while (0) +#define SBCHECK(sb) do {} while (0) #endif /* SOCKBUF_DEBUG */ #endif /* _KERNEL */