History log of /freebsd-current/sys/netinet/tcp_lro_hpts.c
Revision Date Author Comments
# 96ad6401 08-Mar-2024 Michael Tuexen <tuexen@FreeBSD.org>

TCP LRO: add dtrace probe points

Add the IP, UDP, and TCP receive static probes to the code path,
which avoids if_input.

Reviewed by: rrs, markj
MFC after: 1 week`
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D43727


# d1ce0121 08-Mar-2024 Michael Tuexen <tuexen@FreeBSD.org>

TCP LRO: disable mbuf queuing when packet filter hooks are in place

When doing mbuf queueing, the packet filter hooks in ether_demux(),
ip_input(), and ip6_input() are by-passed. This means that the packet
filters don't process incoming packets, which might result in
connection failures. For example bypassing the TCP sequence number
validation will result in dropping valid packets.
Please note that this patch is only disabling mbuf queueing, not LRO.

Reported by: Herbert J. Skuhra
Reviewed by: glebius, rrs, rscheff
MFC after: 1 week
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D43769


# f30c7d56 29-Jan-2024 Michael Tuexen <tuexen@FreeBSD.org>

TCP LRO: convert TCP header fields to host byte order earlier

This is a preparation for adding dtrace hooks in a follow-up commit,
which are missing in the code path, where packets are directly queued
to the tcpcb. The dtrace hooks expect the fields to be in host byte
order. This only applies when TCP HPTS is used.
No functional change intended.

Reviewed by: rscheff
MFC after: 1 week
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D43594


# 48b55a7c 19-Dec-2023 Gleb Smirnoff <glebius@FreeBSD.org>

tcp_hpts: make the module unloadable

Although the HPTS subsytem wasn't initially designed as a loadable
module, now it is so. Make it possible to also unload it, but for
safety reasons hide that under 'kldunload -f'.

Reviewed by: tuexen
Differential Revision: https://reviews.freebsd.org/D43092


# 2c6fc36a 04-Dec-2023 Gleb Smirnoff <glebius@FreeBSD.org>

hpts/lro: make tcp_lro_flush_tcphpts() and tcp_run_hpts() pointers

Rename tcp_run_hpts() to tcp_hpts_softlock() to better describe its
function. This makes loadable hpts.ko working correctly with LRO.

Reviewed by: tuexen, rrs
Differential Revision: https://reviews.freebsd.org/D42858


# 4f9c93f1 04-Dec-2023 Gleb Smirnoff <glebius@FreeBSD.org>

lro: separate HPTS specific code into tcp_lro_hpts.c

Put same copyright header as tcp_hpts.c has, since all this code
was developed by Randall Stewart <rrs@FreeBSD.org> as a part of
the HPTS work. Also copy Mellanox copyright from tcp_lro.c as
Hans Petter Selasky also participated in restructuring the code.

Reviewed by: imp, tuexen, rrs
Differential Revision: https://reviews.freebsd.org/D42854