forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
kernel/drivers/net/ethernet/mellanox/mlx5/core/accel/tls.h
....@@ -37,7 +37,66 @@
3737 #include <linux/mlx5/driver.h>
3838 #include <linux/tls.h>
3939
40
-#ifdef CONFIG_MLX5_ACCEL
40
+#ifdef CONFIG_MLX5_TLS
41
+int mlx5_ktls_create_key(struct mlx5_core_dev *mdev,
42
+ struct tls_crypto_info *crypto_info,
43
+ u32 *p_key_id);
44
+void mlx5_ktls_destroy_key(struct mlx5_core_dev *mdev, u32 key_id);
45
+
46
+static inline bool mlx5_accel_is_ktls_tx(struct mlx5_core_dev *mdev)
47
+{
48
+ return MLX5_CAP_GEN(mdev, tls_tx);
49
+}
50
+
51
+static inline bool mlx5_accel_is_ktls_rx(struct mlx5_core_dev *mdev)
52
+{
53
+ return MLX5_CAP_GEN(mdev, tls_rx);
54
+}
55
+
56
+static inline bool mlx5_accel_is_ktls_device(struct mlx5_core_dev *mdev)
57
+{
58
+ if (!mlx5_accel_is_ktls_tx(mdev) &&
59
+ !mlx5_accel_is_ktls_rx(mdev))
60
+ return false;
61
+
62
+ if (!MLX5_CAP_GEN(mdev, log_max_dek))
63
+ return false;
64
+
65
+ return MLX5_CAP_TLS(mdev, tls_1_2_aes_gcm_128);
66
+}
67
+
68
+static inline bool mlx5e_ktls_type_check(struct mlx5_core_dev *mdev,
69
+ struct tls_crypto_info *crypto_info)
70
+{
71
+ switch (crypto_info->cipher_type) {
72
+ case TLS_CIPHER_AES_GCM_128:
73
+ if (crypto_info->version == TLS_1_2_VERSION)
74
+ return MLX5_CAP_TLS(mdev, tls_1_2_aes_gcm_128);
75
+ break;
76
+ }
77
+
78
+ return false;
79
+}
80
+#else
81
+static inline bool mlx5_accel_is_ktls_tx(struct mlx5_core_dev *mdev)
82
+{ return false; }
83
+
84
+static inline bool mlx5_accel_is_ktls_rx(struct mlx5_core_dev *mdev)
85
+{ return false; }
86
+
87
+static inline int
88
+mlx5_ktls_create_key(struct mlx5_core_dev *mdev,
89
+ struct tls_crypto_info *crypto_info,
90
+ u32 *p_key_id) { return -ENOTSUPP; }
91
+static inline void
92
+mlx5_ktls_destroy_key(struct mlx5_core_dev *mdev, u32 key_id) {}
93
+
94
+static inline bool
95
+mlx5_accel_is_ktls_device(struct mlx5_core_dev *mdev) { return false; }
96
+static inline bool
97
+mlx5e_ktls_type_check(struct mlx5_core_dev *mdev,
98
+ struct tls_crypto_info *crypto_info) { return false; }
99
+#endif
41100
42101 enum {
43102 MLX5_ACCEL_TLS_TX = BIT(0),
....@@ -60,14 +119,15 @@
60119 u8 reserved_at_2[0x1e];
61120 };
62121
122
+#ifdef CONFIG_MLX5_FPGA_TLS
63123 int mlx5_accel_tls_add_flow(struct mlx5_core_dev *mdev, void *flow,
64124 struct tls_crypto_info *crypto_info,
65125 u32 start_offload_tcp_sn, u32 *p_swid,
66126 bool direction_sx);
67127 void mlx5_accel_tls_del_flow(struct mlx5_core_dev *mdev, u32 swid,
68128 bool direction_sx);
69
-int mlx5_accel_tls_resync_rx(struct mlx5_core_dev *mdev, u32 handle, u32 seq,
70
- u64 rcd_sn);
129
+int mlx5_accel_tls_resync_rx(struct mlx5_core_dev *mdev, __be32 handle,
130
+ u32 seq, __be64 rcd_sn);
71131 bool mlx5_accel_is_tls_device(struct mlx5_core_dev *mdev);
72132 u32 mlx5_accel_tls_device_caps(struct mlx5_core_dev *mdev);
73133 int mlx5_accel_tls_init(struct mlx5_core_dev *mdev);
....@@ -82,13 +142,15 @@
82142 bool direction_sx) { return -ENOTSUPP; }
83143 static inline void mlx5_accel_tls_del_flow(struct mlx5_core_dev *mdev, u32 swid,
84144 bool direction_sx) { }
85
-static inline int mlx5_accel_tls_resync_rx(struct mlx5_core_dev *mdev, u32 handle,
86
- u32 seq, u64 rcd_sn) { return 0; }
87
-static inline bool mlx5_accel_is_tls_device(struct mlx5_core_dev *mdev) { return false; }
145
+static inline int mlx5_accel_tls_resync_rx(struct mlx5_core_dev *mdev, __be32 handle,
146
+ u32 seq, __be64 rcd_sn) { return 0; }
147
+static inline bool mlx5_accel_is_tls_device(struct mlx5_core_dev *mdev)
148
+{
149
+ return mlx5_accel_is_ktls_device(mdev);
150
+}
88151 static inline u32 mlx5_accel_tls_device_caps(struct mlx5_core_dev *mdev) { return 0; }
89152 static inline int mlx5_accel_tls_init(struct mlx5_core_dev *mdev) { return 0; }
90153 static inline void mlx5_accel_tls_cleanup(struct mlx5_core_dev *mdev) { }
91
-
92154 #endif
93155
94156 #endif /* __MLX5_ACCEL_TLS_H__ */