net/tls: Add asynchronous resync
authorBoris Pismenny <borisp@mellanox.com>
Mon, 8 Jun 2020 16:11:38 +0000 (19:11 +0300)
committerSaeed Mahameed <saeedm@mellanox.com>
Sat, 27 Jun 2020 21:00:22 +0000 (14:00 -0700)
commited9b7646b06a2ed2450dd9437fc7d1ad2783140c
tree1be4346f2fa97ef9adbb6c9ed2feaf670a8a08d5
parentacb5a07aaf2723cd273a4089e62611a414fb1c35
net/tls: Add asynchronous resync

This patch adds support for asynchronous resynchronization in tls_device.
Async resync follows two distinct stages:

1. The NIC driver indicates that it would like to resync on some TLS
record within the received packet (P), but the driver does not
know (yet) which of the TLS records within the packet.
At this stage, the NIC driver will query the device to find the exact
TCP sequence for resync (tcpsn), however, the driver does not wait
for the device to provide the response.

2. Eventually, the device responds, and the driver provides the tcpsn
within the resync packet to KTLS. Now, KTLS can check the tcpsn against
any processed TLS records within packet P, and also against any record
that is processed in the future within packet P.

The asynchronous resync path simplifies the device driver, as it can
save bits on the packet completion (32-bit TCP sequence), and pass this
information on an asynchronous command instead.

Signed-off-by: Boris Pismenny <borisp@mellanox.com>
Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
include/net/tls.h
net/tls/tls_device.c