svn commit: r228716 - head/sys/dev/fxp

Pyun YongHyeon yongari at FreeBSD.org
Mon Dec 19 19:00:34 UTC 2011


Author: yongari
Date: Mon Dec 19 19:00:34 2011
New Revision: 228716
URL: http://svn.freebsd.org/changeset/base/228716

Log:
  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:
  head/sys/dev/fxp/if_fxp.c

Modified: head/sys/dev/fxp/if_fxp.c
==============================================================================
--- head/sys/dev/fxp/if_fxp.c	Mon Dec 19 18:55:13 2011	(r228715)
+++ head/sys/dev/fxp/if_fxp.c	Mon Dec 19 19:00:34 2011	(r228716)
@@ -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-head mailing list