aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/fxp
diff options
context:
space:
mode:
authorPyun YongHyeon <yongari@FreeBSD.org>2011-12-19 19:00:34 +0000
committerPyun YongHyeon <yongari@FreeBSD.org>2011-12-19 19:00:34 +0000
commitcbecedb2c55c1de2bbd6fba357050980f8d32952 (patch)
treedf7382c668931843aedd5c9775a690724c9f3952 /sys/dev/fxp
parenta7f5f7948b9d500472d72698a7765cde7edfa3f0 (diff)
downloadsrc-cbecedb2c55c1de2bbd6fba357050980f8d32952.tar.gz
src-cbecedb2c55c1de2bbd6fba357050980f8d32952.zip
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.
Notes
Notes: svn path=/head/; revision=228716
Diffstat (limited to 'sys/dev/fxp')
-rw-r--r--sys/dev/fxp/if_fxp.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/dev/fxp/if_fxp.c b/sys/dev/fxp/if_fxp.c
index 62c8dc2f4f0e..0255b919019a 100644
--- a/sys/dev/fxp/if_fxp.c
+++ b/sys/dev/fxp/if_fxp.c
@@ -1454,7 +1454,7 @@ fxp_encap(struct fxp_softc *sc, struct mbuf **m_head)
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);