diff options
author | gallatin <gallatin@FreeBSD.org> | 2013-02-21 17:00:35 +0000 |
---|---|---|
committer | gallatin <gallatin@FreeBSD.org> | 2013-02-21 17:00:35 +0000 |
commit | 8189336983a91b237133af95f83f52899a8e1094 (patch) | |
tree | 790cad46454a6db36289881fc32c9530af62ca55 /sys/netinet | |
parent | a47126727ba4a8d6c9e28c9e29d6ef6cae4b9587 (diff) | |
download | FreeBSD-src-8189336983a91b237133af95f83f52899a8e1094.zip FreeBSD-src-8189336983a91b237133af95f83f52899a8e1094.tar.gz |
Fix tcp_lro_rx_ipv4() for drivers that do not set CSUM_IP_CHECKED.
Specifcially, in_cksum_hdr() returns 0 (not 0xffff) when the IPv4
checksum is correct. Without this fix, the tcp_lro code will reject
good IPv4 traffic from drivers that do not implement IPv4 header
harder csum offload.
Sponsored by: Myricom Inc.
MFC after: 7 days
Diffstat (limited to 'sys/netinet')
-rw-r--r-- | sys/netinet/tcp_lro.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/netinet/tcp_lro.c b/sys/netinet/tcp_lro.c index 3718e4d..032d47c 100644 --- a/sys/netinet/tcp_lro.c +++ b/sys/netinet/tcp_lro.c @@ -333,7 +333,7 @@ tcp_lro_rx_ipv4(struct lro_ctrl *lc, struct mbuf *m, struct ip *ip4, } } else { csum = in_cksum_hdr(ip4); - if (__predict_false((csum ^ 0xffff) != 0)) { + if (__predict_false((csum) != 0)) { lc->lro_bad_csum++; return (TCP_LRO_CANNOT); } |