freebsd-skq/sys
Hans Petter Selasky d76d40126e Update TSO limits to include all headers.
To make driver programming easier the TSO limits are changed to
reflect the values used in the BUSDMA tag a network adapter driver is
using. The TCP/IP network stack will subtract space for all linklevel
and protocol level headers and ensure that the full mbuf chain passed
to the network adapter fits within the given limits.

Implementation notes:

If a network adapter driver needs to fixup the first mbuf in order to
support VLAN tag insertion, the size of the VLAN tag should be
subtracted from the TSO limit. Else not.

Network adapters which typically inline the complete header mbuf could
technically transmit one more segment. This patch does not implement a
mechanism to recover the last segment for data transmission. It is
believed when sufficiently large mbuf clusters are used, the segment
limit will not be reached and recovering the last segment will not
have any effect.

The current TSO algorithm tries to send MTU-sized packets, where the
MTU typically is 1500 bytes, which gives 1448 bytes of TCP data
payload per packet for IPv4. That means if the TSO length limitiation
is set to 65536 bytes, there will be a data payload remainder of
(65536 - 1500) mod 1448 bytes which is equal to 324 bytes. Trying to
recover total TSO length due to inlining mbuf header data will not
have any effect, because adding or removing the ETH/IP/TCP headers
to or from 324 bytes will not cause more or less TCP payload to be
TSO'ed.

Existing network adapter limits will be updated separately.

Differential Revision:	https://reviews.freebsd.org/D3458
Reviewed by:		rmacklem
MFC after:		2 weeks
2015-09-14 08:36:22 +00:00
..
amd64 Add stack_save_td_running(), a function to trace the kernel stack of a 2015-09-11 03:54:37 +00:00
arm Add stack_save_td_running(), a function to trace the kernel stack of a 2015-09-11 03:54:37 +00:00
arm64 Add stack_save_td_running(), a function to trace the kernel stack of a 2015-09-11 03:54:37 +00:00
boot Add missing file to build. 2015-09-14 07:11:53 +00:00
bsm
cam Implement QUERY TASK, QUERY TASK SET and QUERY ASYNC EVENT. 2015-09-14 08:01:05 +00:00
cddl MFV r287623: 5997 FRU field not set during pool creation and never 2015-09-13 07:15:14 +00:00
compat Fixes a panic triggered by threaded Linux applications when running 2015-09-02 14:04:13 +00:00
conf - Factor out the common and generic parts of the sparc64 host-PCI-bridge 2015-09-12 22:49:32 +00:00
contrib Revert ip_fil_freebsd.c -r287674. This should not have gone in yet. 2015-09-11 16:52:13 +00:00
crypto const'ify an arg that we don't update... 2015-07-29 23:37:15 +00:00
ddb Make kstack_pages a tunable on arm, x86, and powepc. On i386, the 2015-08-10 17:18:21 +00:00
dev Correct PCI ID. 2015-09-14 07:08:29 +00:00
fs Fix an NFS server bug that manifested in "ls -al" displaying a plus 2015-08-28 14:26:11 +00:00
gdb CALLOUT_MPSAFE has lost its meaning since r141428, i.e., for more than ten 2015-05-22 17:05:21 +00:00
geom After the introduction of direct dispatch, the pacing code in g_down() 2015-09-02 17:29:30 +00:00
gnu Fixing a memory leak on module unloading. 2015-09-11 22:43:35 +00:00
i386 Add stack_save_td_running(), a function to trace the kernel stack of a 2015-09-11 03:54:37 +00:00
isa
kern bufdonebio is now unused. Retire it too. 2015-09-11 04:20:04 +00:00
kgssapi
libkern Remove checks for __ARM_EABI__, we only build for EABI now. 2015-07-09 21:02:40 +00:00
mips Add stack_save_td_running(), a function to trace the kernel stack of a 2015-09-11 03:54:37 +00:00
modules Reimplement CTL High Availability. 2015-09-10 12:40:31 +00:00
net Update TSO limits to include all headers. 2015-09-14 08:36:22 +00:00
net80211 Replay r286410. Change KPI of how device drivers that provide wireless 2015-08-27 08:56:39 +00:00
netgraph Add support for PPP-Max-Payload PPPoE tag (RFC4638). 2015-09-11 09:15:27 +00:00
netinet Update TSO limits to include all headers. 2015-09-14 08:36:22 +00:00
netinet6 Remove SIOCGDRLST_IN6 and SIOCGPRLST_IN6 forgotten in the previous commit. 2015-09-10 08:37:03 +00:00
netipsec Make IPsec work with AES-GCM and AES-ICM (aka CTR) in OCF... IPsec 2015-08-04 17:47:11 +00:00
netnatm
netpfil pf: Fix misdetection of forwarding when net.link.bridge.pfil_bridge is set 2015-09-01 19:04:04 +00:00
netsmb
nfs
nfsclient
nfsserver
nlm
ofed Currently the Linux character device mmap handling only supports mmap 2015-09-03 18:27:39 +00:00
opencrypto Make IPsec work with AES-GCM and AES-ICM (aka CTR) in OCF... IPsec 2015-08-04 17:47:11 +00:00
pc98 Add missing ofw_machdep.h. Make x86 ofw_machdep.h work pc98 too. 2015-08-28 15:41:09 +00:00
powerpc Add stack_save_td_running(), a function to trace the kernel stack of a 2015-09-11 03:54:37 +00:00
rpc Set curvnet context inside the RPC code in more places. 2015-08-18 18:12:46 +00:00
security fd: make 'rights' a manadatory argument to fget* functions 2015-07-05 19:05:16 +00:00
sparc64 - Sanity check that the parent ranges given in the "ranges" property 2015-09-13 21:59:56 +00:00
sys Add stack_save_td_running(), a function to trace the kernel stack of a 2015-09-11 03:54:37 +00:00
teken Sync HPA and VPA implementations with CUP. 2015-08-24 07:49:27 +00:00
tools
ufs Do not consume extra reference. This is a bug in r287479. 2015-09-05 12:28:18 +00:00
vm Remove the v_cache_min and v_cache_max sysctls. They are unused and have 2015-09-11 03:00:20 +00:00
x86 Add stack_save_td_running(), a function to trace the kernel stack of a 2015-09-11 03:54:37 +00:00
xdr
xen xen: allow disabling PV disks and nics 2015-08-21 15:53:08 +00:00
Makefile Kill EoL whitespace. 2015-05-29 14:03:07 +00:00