summaryrefslogtreecommitdiffstats
path: root/sys/dev/usb/controller/ehci_pci.c
diff options
context:
space:
mode:
authorglebius <glebius@FreeBSD.org>2014-05-04 23:25:32 +0000
committerglebius <glebius@FreeBSD.org>2014-05-04 23:25:32 +0000
commitd2bbb6646bad4efa2c8bac48ec5a0c33f7482d11 (patch)
treed7e7b758425a201d0984001d2f9d3f019d60b8d7 /sys/dev/usb/controller/ehci_pci.c
parent9b1896e64f52fa639d8bea0b9ba42b8064af94a4 (diff)
downloadFreeBSD-src-d2bbb6646bad4efa2c8bac48ec5a0c33f7482d11.zip
FreeBSD-src-d2bbb6646bad4efa2c8bac48ec5a0c33f7482d11.tar.gz
The FreeBSD-SA-14:08.tcp was a lesson on not doing acrobatics with
mixing on stack memory and UMA memory in one linked list. Thus, rewrite TCP reassembly code in terms of memory usage. The algorithm remains unchanged. We actually do not need extra memory to build a reassembly queue. Arriving mbufs are always packet header mbufs. So we got the length of data as pkthdr.len. We got m_nextpkt for linkage. And we need only one pointer to point at the tcphdr, use PH_loc for that. In tcpcb the t_segq fields becomes mbuf pointer. The t_segqlen field now counts not packets, but bytes in the queue. This gives us more precision when comparing to socket buffer limits. Sponsored by: Netflix Sponsored by: Nginx, Inc.
Diffstat (limited to 'sys/dev/usb/controller/ehci_pci.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud