Page MenuHomeFreeBSD

cxgbe: Enable TOE TLS RX when an RX key is provided via setsockopt().
ClosedPublic

Authored by jhb on Nov 11 2022, 1:57 AM.
Tags
None
Referenced Files
F98755805: D37351.diff
Fri, Oct 4, 3:25 PM
Unknown Object (File)
Sat, Sep 28, 2:24 AM
Unknown Object (File)
Wed, Sep 18, 1:24 PM
Unknown Object (File)
Mon, Sep 9, 6:41 PM
Unknown Object (File)
Sat, Sep 7, 5:37 PM
Unknown Object (File)
Fri, Sep 6, 2:44 AM
Unknown Object (File)
Thu, Sep 5, 4:03 AM
Unknown Object (File)
Sep 1 2024, 6:54 AM
Subscribers

Details

Summary

Rather than requiring a socket to be created as a TLS socket from the
get go, switch a TOE socket from "plain" TOE to TLS mode when a receive
key is added to the socket.

The firmware is able to switch a "plain" TOE connection to TLS mode if
the head of the pending socket data is the start of a TLS record, so
some the connection is migrated to TLS mode as a multi-step process.

When TOE TLS RX is enabled, the associated connection's receive side
is frozen via a flag in the TCB. The state of the socket buffer is
then examined to determine if the pending data in the socket buffer
ends on a TLS record boundary. If so, the connection is migrated to
TLS mode and unfrozen. Otherwise, the connection is unfrozen
temporarily until more data arrives. Once more data arrives, the
queue is frozen again and rechecked. This continues until the
connection is paused at a record boundary. Any records received
before TLS mode is enabled are decrypted as software records.

Sponsored by: Chelsio Communications

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable