hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/net/ethernet/mellanox/mlx5/core/accel/tls.c
....@@ -35,6 +35,9 @@
3535
3636 #include "accel/tls.h"
3737 #include "mlx5_core.h"
38
+#include "lib/mlx5.h"
39
+
40
+#ifdef CONFIG_MLX5_FPGA_TLS
3841 #include "fpga/tls.h"
3942
4043 int mlx5_accel_tls_add_flow(struct mlx5_core_dev *mdev, void *flow,
....@@ -53,15 +56,16 @@
5356 mlx5_fpga_tls_del_flow(mdev, swid, GFP_KERNEL, direction_sx);
5457 }
5558
56
-int mlx5_accel_tls_resync_rx(struct mlx5_core_dev *mdev, u32 handle, u32 seq,
57
- u64 rcd_sn)
59
+int mlx5_accel_tls_resync_rx(struct mlx5_core_dev *mdev, __be32 handle,
60
+ u32 seq, __be64 rcd_sn)
5861 {
5962 return mlx5_fpga_tls_resync_rx(mdev, handle, seq, rcd_sn);
6063 }
6164
6265 bool mlx5_accel_is_tls_device(struct mlx5_core_dev *mdev)
6366 {
64
- return mlx5_fpga_is_tls_device(mdev);
67
+ return mlx5_fpga_is_tls_device(mdev) ||
68
+ mlx5_accel_is_ktls_device(mdev);
6569 }
6670
6771 u32 mlx5_accel_tls_device_caps(struct mlx5_core_dev *mdev)
....@@ -78,3 +82,44 @@
7882 {
7983 mlx5_fpga_tls_cleanup(mdev);
8084 }
85
+#endif
86
+
87
+#ifdef CONFIG_MLX5_TLS
88
+int mlx5_ktls_create_key(struct mlx5_core_dev *mdev,
89
+ struct tls_crypto_info *crypto_info,
90
+ u32 *p_key_id)
91
+{
92
+ u32 sz_bytes;
93
+ void *key;
94
+
95
+ switch (crypto_info->cipher_type) {
96
+ case TLS_CIPHER_AES_GCM_128: {
97
+ struct tls12_crypto_info_aes_gcm_128 *info =
98
+ (struct tls12_crypto_info_aes_gcm_128 *)crypto_info;
99
+
100
+ key = info->key;
101
+ sz_bytes = sizeof(info->key);
102
+ break;
103
+ }
104
+ case TLS_CIPHER_AES_GCM_256: {
105
+ struct tls12_crypto_info_aes_gcm_256 *info =
106
+ (struct tls12_crypto_info_aes_gcm_256 *)crypto_info;
107
+
108
+ key = info->key;
109
+ sz_bytes = sizeof(info->key);
110
+ break;
111
+ }
112
+ default:
113
+ return -EINVAL;
114
+ }
115
+
116
+ return mlx5_create_encryption_key(mdev, key, sz_bytes,
117
+ MLX5_ACCEL_OBJ_TLS_KEY,
118
+ p_key_id);
119
+}
120
+
121
+void mlx5_ktls_destroy_key(struct mlx5_core_dev *mdev, u32 key_id)
122
+{
123
+ mlx5_destroy_encryption_key(mdev, key_id);
124
+}
125
+#endif