From owner-svn-src-head@FreeBSD.ORG Mon May 25 13:32:54 2009 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A6CE910656D6; Mon, 25 May 2009 13:32:54 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5E6B28FC21; Mon, 25 May 2009 13:32:54 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n4PDWsHQ025170; Mon, 25 May 2009 13:32:54 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n4PDWsdt025169; Mon, 25 May 2009 13:32:54 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <200905251332.n4PDWsdt025169@svn.freebsd.org> From: Robert Watson Date: Mon, 25 May 2009 13:32:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r192756 - head/sys/netipx X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 May 2009 13:32:55 -0000 Author: rwatson Date: Mon May 25 13:32:54 2009 New Revision: 192756 URL: http://svn.freebsd.org/changeset/base/192756 Log: Eliminate use of dtom() in spx_output() by fixing up tracking of the containing mbuf for 'si' in local variable 'm'. MFC after: 1 month Modified: head/sys/netipx/spx_usrreq.c Modified: head/sys/netipx/spx_usrreq.c ============================================================================== --- head/sys/netipx/spx_usrreq.c Mon May 25 11:52:33 2009 (r192755) +++ head/sys/netipx/spx_usrreq.c Mon May 25 13:32:54 2009 (r192756) @@ -428,7 +428,7 @@ int spx_output(struct spxpcb *cb, struct mbuf *m0) { struct socket *so = cb->s_ipxpcb->ipxp_socket; - struct mbuf *m; + struct mbuf *m = NULL; struct spx *si = NULL; struct sockbuf *sb = &so->so_snd; int len = 0, win, rcv_win; @@ -678,6 +678,7 @@ send: * Find requested packet. */ si = NULL; + m = NULL; if (len > 0) { cb->s_want = cb->s_snxt; for (m = sb->sb_mb; m != NULL; m = m->m_nextpkt) { @@ -687,10 +688,12 @@ send: } found: if (si != NULL) { - if (si->si_seq == cb->s_snxt) - cb->s_snxt++; - else - spxstat.spxs_sndvoid++, si = NULL; + if (si->si_seq != cb->s_snxt) { + spxstat.spxs_sndvoid++; + si = NULL; + m = NULL; + } else + cb->s_snxt++; } } @@ -703,12 +706,12 @@ send: if (SSEQ_LT(alo, cb->s_alo)) alo = cb->s_alo; - if (si != NULL) { + if (m != NULL) { /* * Must make a copy of this packet for ipx_output to monkey * with. */ - m = m_copy(dtom(si), 0, (int)M_COPYALL); + m = m_copy(m, 0, M_COPYALL); if (m == NULL) return (ENOBUFS); si = mtod(m, struct spx *);