summaryrefslogtreecommitdiffstats
path: root/sys/dev/fxp
diff options
context:
space:
mode:
authoryongari <yongari@FreeBSD.org>2011-12-19 19:00:34 +0000
committeryongari <yongari@FreeBSD.org>2011-12-19 19:00:34 +0000
commitef17d6064ddbc78e15b9878a09a012218970ddc2 (patch)
treedf7382c668931843aedd5c9775a690724c9f3952 /sys/dev/fxp
parent68a134710c655dcf316d05f6071b84d881abde0b (diff)
downloadFreeBSD-src-ef17d6064ddbc78e15b9878a09a012218970ddc2.zip
FreeBSD-src-ef17d6064ddbc78e15b9878a09a012218970ddc2.tar.gz
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.
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 62c8dc2..0255b91 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);
OpenPOWER on IntegriCloud