net/mlx5e: kTLS, Use kernel API to extract private offload context
authorTariq Toukan <tariqt@mellanox.com>
Thu, 28 May 2020 07:04:03 +0000 (10:04 +0300)
committerSaeed Mahameed <saeedm@mellanox.com>
Sat, 27 Jun 2020 21:00:20 +0000 (14:00 -0700)
Modify the implementation of the private kTLS TX HW offload context
getter and setter, so it uses the kernel API functions, instead of
a local shadow structure.
A single BUILD_BUG_ON check is sufficient, remove the duplicate.

Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
Reviewed-by: Maxim Mikityanskiy <maximmi@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_tx.c

index 349e29214b92854e15e237301c0595d1f1709c60..5a980f93c3263057d18437725ce612cc4ecec7b3 100644 (file)
@@ -56,37 +56,26 @@ struct mlx5e_ktls_offload_context_tx {
        bool ctx_post_pending;
 };
 
-struct mlx5e_ktls_offload_context_tx_shadow {
-       struct tls_offload_context_tx         tx_ctx;
-       struct mlx5e_ktls_offload_context_tx *priv_tx;
-};
-
 static void
 mlx5e_set_ktls_tx_priv_ctx(struct tls_context *tls_ctx,
                           struct mlx5e_ktls_offload_context_tx *priv_tx)
 {
-       struct tls_offload_context_tx *tx_ctx = tls_offload_ctx_tx(tls_ctx);
-       struct mlx5e_ktls_offload_context_tx_shadow *shadow;
+       struct mlx5e_ktls_offload_context_tx **ctx =
+               __tls_driver_ctx(tls_ctx, TLS_OFFLOAD_CTX_DIR_TX);
 
-       BUILD_BUG_ON(sizeof(*shadow) > TLS_OFFLOAD_CONTEXT_SIZE_TX);
+       BUILD_BUG_ON(sizeof(struct mlx5e_ktls_offload_context_tx *) >
+                    TLS_OFFLOAD_CONTEXT_SIZE_TX);
 
-       shadow = (struct mlx5e_ktls_offload_context_tx_shadow *)tx_ctx;
-
-       shadow->priv_tx = priv_tx;
-       priv_tx->tx_ctx = tx_ctx;
+       *ctx = priv_tx;
 }
 
 static struct mlx5e_ktls_offload_context_tx *
 mlx5e_get_ktls_tx_priv_ctx(struct tls_context *tls_ctx)
 {
-       struct tls_offload_context_tx *tx_ctx = tls_offload_ctx_tx(tls_ctx);
-       struct mlx5e_ktls_offload_context_tx_shadow *shadow;
-
-       BUILD_BUG_ON(sizeof(*shadow) > TLS_OFFLOAD_CONTEXT_SIZE_TX);
-
-       shadow = (struct mlx5e_ktls_offload_context_tx_shadow *)tx_ctx;
+       struct mlx5e_ktls_offload_context_tx **ctx =
+               __tls_driver_ctx(tls_ctx, TLS_OFFLOAD_CTX_DIR_TX);
 
-       return shadow->priv_tx;
+       return *ctx;
 }
 
 int mlx5e_ktls_add_tx(struct net_device *netdev, struct sock *sk,
@@ -113,6 +102,7 @@ int mlx5e_ktls_add_tx(struct net_device *netdev, struct sock *sk,
        priv_tx->expected_seq = start_offload_tcp_sn;
        priv_tx->crypto_info  =
                *(struct tls12_crypto_info_aes_gcm_128 *)crypto_info;
+       priv_tx->tx_ctx = tls_offload_ctx_tx(tls_ctx);
 
        mlx5e_set_ktls_tx_priv_ctx(tls_ctx, priv_tx);