.. | .. |
---|
35 | 35 | |
---|
36 | 36 | #include "accel/tls.h" |
---|
37 | 37 | #include "mlx5_core.h" |
---|
| 38 | +#include "lib/mlx5.h" |
---|
| 39 | + |
---|
| 40 | +#ifdef CONFIG_MLX5_FPGA_TLS |
---|
38 | 41 | #include "fpga/tls.h" |
---|
39 | 42 | |
---|
40 | 43 | int mlx5_accel_tls_add_flow(struct mlx5_core_dev *mdev, void *flow, |
---|
.. | .. |
---|
53 | 56 | mlx5_fpga_tls_del_flow(mdev, swid, GFP_KERNEL, direction_sx); |
---|
54 | 57 | } |
---|
55 | 58 | |
---|
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) |
---|
58 | 61 | { |
---|
59 | 62 | return mlx5_fpga_tls_resync_rx(mdev, handle, seq, rcd_sn); |
---|
60 | 63 | } |
---|
61 | 64 | |
---|
62 | 65 | bool mlx5_accel_is_tls_device(struct mlx5_core_dev *mdev) |
---|
63 | 66 | { |
---|
64 | | - return mlx5_fpga_is_tls_device(mdev); |
---|
| 67 | + return mlx5_fpga_is_tls_device(mdev) || |
---|
| 68 | + mlx5_accel_is_ktls_device(mdev); |
---|
65 | 69 | } |
---|
66 | 70 | |
---|
67 | 71 | u32 mlx5_accel_tls_device_caps(struct mlx5_core_dev *mdev) |
---|
.. | .. |
---|
78 | 82 | { |
---|
79 | 83 | mlx5_fpga_tls_cleanup(mdev); |
---|
80 | 84 | } |
---|
| 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 |
---|