HomeFreeBSD

cxgbe: Support TCP_USE_DDP on offloaded TOE connections

Description

cxgbe: Support TCP_USE_DDP on offloaded TOE connections

When this socket option is enabled, relatively large contiguous
buffers are allocated and used to receive data from the remote
connection. When data is received a wrapper M_EXT mbuf is queued to
the socket's receive buffer. This reduces the length of the linked
list of received mbufs and allows consumers to consume receive data in
larger chunks.

To minimize reprogramming the page pods in the adapter, receive
buffers for a given connection are recycled. When a buffer has been
fully consumed by the receiver and freed, the buffer is placed on a
per-connection free buffers list.

The size of the receive buffers defaults to 256k and can be set via
the hw.cxgbe.toe.ddp_rcvbuf_len sysctl. The
hw.cxgbe.toe.ddp_rcvbuf_cache sysctl (defaults to 4) determines the
maximum number of free buffers cached per connection. Note that this
limit does not apply to "in-flight" receive buffers that are
associated with mbufs in the socket's receive buffer.

Co-authored-by: Navdeep Parhar <np@FreeBSD.org>
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D44001

(cherry picked from commit eba13bbc37ab4f45a8a3502d59c37d56d9a04ca5)

Details

Provenance
jhbAuthored on Mar 20 2024, 10:29 PM
Differential Revision
D44001: cxgbe: Support TCP_USE_DDP on offloaded TOE connections
Parents
rGce5a6a3adda6: tcp: Add a new kernel-only TCP_USE_DDP socket option
Branches
Unknown
Tags
Unknown