summaryrefslogtreecommitdiffstats
path: root/sys/netinet/tcp_lro.c
Commit message (Collapse)AuthorAgeFilesLines
* MFC 298696,298730sephe2016-06-211-1/+1
| | | | | | | | | | | | | | | 298696 tcp/lro: Fix typo. MFC after: 1 week Sponsored by: Microsoft OSTC 298730 tcp/lro: Fix more typo Noticed by: hiren MFC after: 1 week Sponsored by: Microsoft OSTC
* MFC 297265sephe2016-06-161-1/+1
| | | | | | | | | | | tcp/lro: Return TCP_LRO_NO_ENTRIES if we are short of LRO entries. So that callers could react accordingly. Reviewed by: gallatin (no objection) MFC after: 1 week Sponsored by: Microsoft OSTC Differential Revision: https://reviews.freebsd.org/D5695
* Merge r254336 from user/np/cxl_tuning.np2013-08-281-1/+22
| | | | | | | | | | | | | | | | | | | | | | | | | Add a last-modified timestamp to each LRO entry and provide an interface to flush all inactive entries. Drivers decide when to flush and what the inactivity threshold should be. Network drivers that process an rx queue to completion can enter a livelock type situation when the rate at which packets are received reaches equilibrium with the rate at which the rx thread is processing them. When this happens the final LRO flush (normally when the rx routine is done) does not occur. Pure ACKs and segments with total payload < 64K can get stuck in an LRO entry. Symptoms are that TCP tx-mostly connections' performance falls off a cliff during heavy, unrelated rx on the interface. Flushing only inactive LRO entries works better than any of these alternates that I tried: - don't LRO pure ACKs - flush _all_ LRO entries periodically (every 'x' microseconds or every 'y' descriptors) - stop rx processing in the driver periodically and schedule remaining work for later. Reviewed by: andre
* Fix tcp_lro_rx_ipv4() for drivers that do not set CSUM_IP_CHECKED.gallatin2013-02-211-1/+1
| | | | | | | | | | | 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
* Make TCP LRO work properly with VIMAGE kernels rather than just panicing.bz2012-06-011-0/+11
| | | | | | | There's no VIMAGE context set there yet as this is before if_ethersubr.c. MFC after: 3 days X-MFC with: r235981
* Trim the extra $FreeBSD$ from the comment below the license. We usebz2012-05-261-2/+0
| | | | | | the __FBSDID() macro on the file now instead. MFC after: 3 days
* In case forwarding is turned on for a given address family, refuse tobz2012-05-251-0/+11
| | | | | | | | | | | | | queue the packet for LRO and tell the driver to directly pass it on. This avoids re-assembly and later re-fragmentation problems when forwarding. It's not the best solution but the simplest and most effective for the moment. Should have been done: ages ago Discussed with and by: many MFC after: 3 days
* MFp4 bz_ipv6_fast:bz2012-05-241-298/+502
| | | | | | | | | | | | | | | | | | | | | | Significantly update tcp_lro for mostly two things: 1) introduce basic support for IPv6 without extension headers. 2) try hard to also get the incremental checksum updates right, especially also in the IPv4 case for the IP and TCP header. Move variables around for better locality, factor things out into functions, allow checksum updates to be compiled out, ... Leave a few comments on further things to look at in the future, though that is not the full list. Update drivers with appropriate #includes as needed for IPv6 data type in LRO. Sponsored by: The FreeBSD Foundation Sponsored by: iXsystems Reviewed by: gnn (as part of the whole) MFC After: 3 days
* Switch to a standard 2 clause BSD license (from bsd-style-copyright).bz2012-05-151-34/+28
| | | | | Approved by: Myricom Inc. (gallatin) Approved by: Intel Corporation (jfv)
* Don't allow lro->len to exceed 65535, as this will result in overflowcperciva2011-07-051-0/+8
| | | | | | | | | | | when len is inserted back into the synthetic IP packet and cause a multiple of 2^16 bytes of TCP "packet loss". This improves Linux->FreeBSD netperf bandwidth by a factor of 300 in testing on Amazon EC2. Reviewed by: jfv MFC after: 2 weeks
* Port of the LRO fix from mxge driver to the genericjfv2011-04-071-2/+4
| | | | | | LRO code. Thanks to Andrew Gallatin for the change. MFC after: 7 days
* Trim extra spaces before tabs.jhb2011-01-071-1/+1
|
* Don't calculate checksum if it has already been validatedkmacy2008-08-241-6/+14
| | | | | Obtained from: Chelsio Inc. MFC after: 3 days
* Add generic TCP LOR into netinetjfv2008-06-111-0/+379
OpenPOWER on IntegriCloud