svn commit: r229871 - stable/8/sys/dev/fxp

Pyun YongHyeon yongari at FreeBSD.org
Mon Jan 9 19:30:23 UTC 2012


Author: yongari
Date: Mon Jan  9 19:30:23 2012
New Revision: 229871
URL: http://svn.freebsd.org/changeset/base/229871

Log:
  MFC r228716:
    TCP header size is represented by number of 32bits words.
    Fix the TCP header size calculation such that makes TSO engine
    cache all header(ethernet/IP/TCP) bytes to its internal buffer.
    While here, remove extra pull up for TCP payload.  Unlike some
    em(4) controllers, fxp(4) does not require such work around for
    TSO.
    The two limitations are ethernet/IP/TCP header size should be less
    than or equal to the size of controller's internal buffer(80 bytes)
    and these header information should be found in the first fragment
    of a TSO frame.

Modified:
  stable/8/sys/dev/fxp/if_fxp.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/dev/fxp/if_fxp.c
==============================================================================
--- stable/8/sys/dev/fxp/if_fxp.c	Mon Jan  9 19:28:51 2012	(r229870)
+++ stable/8/sys/dev/fxp/if_fxp.c	Mon Jan  9 19:30:23 2012	(r229871)
@@ -1454,7 +1454,7 @@ fxp_encap(struct fxp_softc *sc, struct m
 			return (ENOBUFS);
 		}
 		tcp = (struct tcphdr *)(mtod(m, char *) + poff);
-		m = m_pullup(m, poff + sizeof(struct tcphdr) + tcp->th_off);
+		m = m_pullup(m, poff + (tcp->th_off << 2));
 		if (m == NULL) {
 			*m_head = NULL;
 			return (ENOBUFS);


More information about the svn-src-all mailing list