mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 07:12:09 +00:00
net/mlx5: Accel, Add TLS tx offload interface
Add routines for manipulating TLS TX offload contexts. In Innova TLS, TLS contexts are added or deleted via a command message over the SBU connection. The HW then sends a response message over the same connection. Add implementation for Innova TLS (FPGA-based) hardware. These routines will be used by the TLS offload support in a later patch mlx5/accel is a middle acceleration layer to allow mlx5e and other ULPs to work directly with mlx5_core rather than Innova FPGA or other mlx5 acceleration providers. In the future, when IPSec/TLS or any other acceleration gets integrated into ConnectX chip, mlx5/accel layer will provide the integrated acceleration, rather than the Innova one. Signed-off-by: Ilya Lesokhin <ilyal@mellanox.com> Signed-off-by: Boris Pismenny <borisp@mellanox.com> Acked-by: Saeed Mahameed <saeedm@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
bb9094161b
commit
1ae1732284
9 changed files with 878 additions and 18 deletions
|
@ -32,12 +32,29 @@
|
|||
#ifndef MLX5_IFC_FPGA_H
|
||||
#define MLX5_IFC_FPGA_H
|
||||
|
||||
struct mlx5_ifc_ipv4_layout_bits {
|
||||
u8 reserved_at_0[0x60];
|
||||
|
||||
u8 ipv4[0x20];
|
||||
};
|
||||
|
||||
struct mlx5_ifc_ipv6_layout_bits {
|
||||
u8 ipv6[16][0x8];
|
||||
};
|
||||
|
||||
union mlx5_ifc_ipv6_layout_ipv4_layout_auto_bits {
|
||||
struct mlx5_ifc_ipv6_layout_bits ipv6_layout;
|
||||
struct mlx5_ifc_ipv4_layout_bits ipv4_layout;
|
||||
u8 reserved_at_0[0x80];
|
||||
};
|
||||
|
||||
enum {
|
||||
MLX5_FPGA_CAP_SANDBOX_VENDOR_ID_MLNX = 0x2c9,
|
||||
};
|
||||
|
||||
enum {
|
||||
MLX5_FPGA_CAP_SANDBOX_PRODUCT_ID_IPSEC = 0x2,
|
||||
MLX5_FPGA_CAP_SANDBOX_PRODUCT_ID_TLS = 0x3,
|
||||
};
|
||||
|
||||
struct mlx5_ifc_fpga_shell_caps_bits {
|
||||
|
@ -370,6 +387,27 @@ struct mlx5_ifc_fpga_destroy_qp_out_bits {
|
|||
u8 reserved_at_40[0x40];
|
||||
};
|
||||
|
||||
struct mlx5_ifc_tls_extended_cap_bits {
|
||||
u8 aes_gcm_128[0x1];
|
||||
u8 aes_gcm_256[0x1];
|
||||
u8 reserved_at_2[0x1e];
|
||||
u8 reserved_at_20[0x20];
|
||||
u8 context_capacity_total[0x20];
|
||||
u8 context_capacity_rx[0x20];
|
||||
u8 context_capacity_tx[0x20];
|
||||
u8 reserved_at_a0[0x10];
|
||||
u8 tls_counter_size[0x10];
|
||||
u8 tls_counters_addr_low[0x20];
|
||||
u8 tls_counters_addr_high[0x20];
|
||||
u8 rx[0x1];
|
||||
u8 tx[0x1];
|
||||
u8 tls_v12[0x1];
|
||||
u8 tls_v13[0x1];
|
||||
u8 lro[0x1];
|
||||
u8 ipv6[0x1];
|
||||
u8 reserved_at_106[0x1a];
|
||||
};
|
||||
|
||||
struct mlx5_ifc_ipsec_extended_cap_bits {
|
||||
u8 encapsulation[0x20];
|
||||
|
||||
|
@ -519,4 +557,43 @@ struct mlx5_ifc_fpga_ipsec_sa {
|
|||
__be16 reserved2;
|
||||
} __packed;
|
||||
|
||||
enum fpga_tls_cmds {
|
||||
CMD_SETUP_STREAM = 0x1001,
|
||||
CMD_TEARDOWN_STREAM = 0x1002,
|
||||
};
|
||||
|
||||
#define MLX5_TLS_1_2 (0)
|
||||
|
||||
#define MLX5_TLS_ALG_AES_GCM_128 (0)
|
||||
#define MLX5_TLS_ALG_AES_GCM_256 (1)
|
||||
|
||||
struct mlx5_ifc_tls_cmd_bits {
|
||||
u8 command_type[0x20];
|
||||
u8 ipv6[0x1];
|
||||
u8 direction_sx[0x1];
|
||||
u8 tls_version[0x2];
|
||||
u8 reserved[0x1c];
|
||||
u8 swid[0x20];
|
||||
u8 src_port[0x10];
|
||||
u8 dst_port[0x10];
|
||||
union mlx5_ifc_ipv6_layout_ipv4_layout_auto_bits src_ipv4_src_ipv6;
|
||||
union mlx5_ifc_ipv6_layout_ipv4_layout_auto_bits dst_ipv4_dst_ipv6;
|
||||
u8 tls_rcd_sn[0x40];
|
||||
u8 tcp_sn[0x20];
|
||||
u8 tls_implicit_iv[0x20];
|
||||
u8 tls_xor_iv[0x40];
|
||||
u8 encryption_key[0x100];
|
||||
u8 alg[4];
|
||||
u8 reserved2[0x1c];
|
||||
u8 reserved3[0x4a0];
|
||||
};
|
||||
|
||||
struct mlx5_ifc_tls_resp_bits {
|
||||
u8 syndrome[0x20];
|
||||
u8 stream_id[0x20];
|
||||
u8 reserverd[0x40];
|
||||
};
|
||||
|
||||
#define MLX5_TLS_COMMAND_SIZE (0x100)
|
||||
|
||||
#endif /* MLX5_IFC_FPGA_H */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue