netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next V3 0/6] mlx5e use TLS TX pool to improve connection rate
@ 2022-07-27  9:43 Tariq Toukan
  2022-07-27  9:43 ` [PATCH net-next V3 1/6] net/tls: Perform immediate device ctx cleanup when possible Tariq Toukan
                   ` (6 more replies)
  0 siblings, 7 replies; 10+ messages in thread
From: Tariq Toukan @ 2022-07-27  9:43 UTC (permalink / raw)
  To: Boris Pismenny, John Fastabend, Jakub Kicinski
  Cc: David S. Miller, Eric Dumazet, Paolo Abeni, netdev,
	Saeed Mahameed, Gal Pressman, Tariq Toukan

To offload encryption operations, the mlx5 device maintains state and
keeps track of every kTLS device-offloaded connection.  Two HW objects
are used per TX context of a kTLS offloaded connection: a. Transport
interface send (TIS) object, to reach the HW context.  b. Data Encryption
Key (DEK) to perform the crypto operations.

These two objects are created and destroyed per TLS TX context, via FW
commands.  In total, 4 FW commands are issued per TLS TX context, which
seriously limits the connection rate.

In this series, we aim to save creation and destroy of TIS objects by
recycling them.  Upon recycling of a TIS, the HW still needs to be
notified for the re-mapping between a TIS and a context. This is done by
posting WQEs via an SQ, significantly faster API than the FW command
interface.

A pool is used for recycling. The pool dynamically interacts to the load
and connection rate, growing and shrinking accordingly.

Saving the TIS FW commands per context increases connection rate by ~42%,
from 11.6K to 16.5K connections per sec.

Connection rate is still limited by FW bottleneck due to the remaining
per context FW commands (DEK create/destroy). This will soon be addressed
in a followup series.  By combining the two series, the FW bottleneck
will be released, and a significantly higher (about 100K connections per
sec) kTLS TX device-offloaded connection rate is reached.

Regards,
Tariq

v3:
Rebased on top of relevant fixes in TLS module.

Tariq Toukan (6):
  net/tls: Perform immediate device ctx cleanup when possible
  net/tls: Multi-threaded calls to TX tls_dev_del
  net/mlx5e: kTLS, Introduce TLS-specific create TIS
  net/mlx5e: kTLS, Take stats out of OOO handler
  net/mlx5e: kTLS, Recycle objects of device-offloaded TLS TX
    connections
  net/mlx5e: kTLS, Dynamically re-size TX recycling pool

 .../mellanox/mlx5/core/en_accel/en_accel.h    |  10 +
 .../mellanox/mlx5/core/en_accel/ktls.h        |  14 +
 .../mellanox/mlx5/core/en_accel/ktls_stats.c  |   2 +
 .../mellanox/mlx5/core/en_accel/ktls_tx.c     | 513 +++++++++++++++---
 .../net/ethernet/mellanox/mlx5/core/en_main.c |   9 +
 include/net/tls.h                             |   2 +
 net/tls/tls_device.c                          |  79 +--
 7 files changed, 527 insertions(+), 102 deletions(-)

-- 
2.21.0


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2022-08-01  6:48 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-27  9:43 [PATCH net-next V3 0/6] mlx5e use TLS TX pool to improve connection rate Tariq Toukan
2022-07-27  9:43 ` [PATCH net-next V3 1/6] net/tls: Perform immediate device ctx cleanup when possible Tariq Toukan
2022-07-27  9:43 ` [PATCH net-next V3 2/6] net/tls: Multi-threaded calls to TX tls_dev_del Tariq Toukan
2022-07-29  4:56   ` Jakub Kicinski
2022-08-01  6:46     ` Tariq Toukan
2022-07-27  9:43 ` [PATCH net-next V3 3/6] net/mlx5e: kTLS, Introduce TLS-specific create TIS Tariq Toukan
2022-07-27  9:43 ` [PATCH net-next V3 4/6] net/mlx5e: kTLS, Take stats out of OOO handler Tariq Toukan
2022-07-27  9:43 ` [PATCH net-next V3 5/6] net/mlx5e: kTLS, Recycle objects of device-offloaded TLS TX connections Tariq Toukan
2022-07-27  9:43 ` [PATCH net-next V3 6/6] net/mlx5e: kTLS, Dynamically re-size TX recycling pool Tariq Toukan
2022-07-29  5:00 ` [PATCH net-next V3 0/6] mlx5e use TLS TX pool to improve connection rate patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).