FILE
ktls_utils.h
File preview with syntax highlighting.
linux-6.19.14/drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_utils.h
1/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ 2/* Copyright (c) 2020, Mellanox Technologies inc. All rights reserved. */ 3 4#ifndef __MLX5E_KTLS_UTILS_H__ 5#define __MLX5E_KTLS_UTILS_H__ 6 7#include <net/tls.h> 8#include "en.h" 9 10enum { 11 MLX5E_TLS_PROGRESS_PARAMS_AUTH_STATE_NO_OFFLOAD = 0, 12 MLX5E_TLS_PROGRESS_PARAMS_AUTH_STATE_OFFLOAD = 1, 13 MLX5E_TLS_PROGRESS_PARAMS_AUTH_STATE_AUTHENTICATION = 2, 14}; 15 16enum { 17 MLX5E_TLS_PROGRESS_PARAMS_RECORD_TRACKER_STATE_START = 0, 18 MLX5E_TLS_PROGRESS_PARAMS_RECORD_TRACKER_STATE_TRACKING = 1, 19 MLX5E_TLS_PROGRESS_PARAMS_RECORD_TRACKER_STATE_SEARCHING = 2, 20}; 21 22int mlx5e_ktls_add_tx(struct net_device *netdev, struct sock *sk, 23 struct tls_crypto_info *crypto_info, u32 start_offload_tcp_sn); 24void mlx5e_ktls_del_tx(struct net_device *netdev, struct tls_context *tls_ctx); 25int mlx5e_ktls_add_rx(struct net_device *netdev, struct sock *sk, 26 struct tls_crypto_info *crypto_info, u32 start_offload_tcp_sn); 27void mlx5e_ktls_del_rx(struct net_device *netdev, struct tls_context *tls_ctx); 28void mlx5e_ktls_rx_resync(struct net_device *netdev, struct sock *sk, u32 seq, u8 *rcd_sn); 29 30union mlx5e_crypto_info { 31 struct tls_crypto_info crypto_info; 32 struct tls12_crypto_info_aes_gcm_128 crypto_info_128; 33 struct tls12_crypto_info_aes_gcm_256 crypto_info_256; 34}; 35 36struct mlx5e_set_tls_static_params_wqe { 37 struct mlx5_wqe_ctrl_seg ctrl; 38 struct mlx5_wqe_umr_ctrl_seg uctrl; 39 struct mlx5_mkey_seg mkc; 40 struct mlx5_wqe_tls_static_params_seg params; 41}; 42 43struct mlx5e_set_tls_progress_params_wqe { 44 struct mlx5_wqe_ctrl_seg ctrl; 45 struct mlx5_wqe_tls_progress_params_seg params; 46}; 47 48struct mlx5e_get_tls_progress_params_wqe { 49 struct mlx5_wqe_ctrl_seg ctrl; 50 struct mlx5_seg_get_psv psv; 51}; 52 53#define MLX5E_TLS_SET_STATIC_PARAMS_WQEBBS \ 54 (DIV_ROUND_UP(sizeof(struct mlx5e_set_tls_static_params_wqe), MLX5_SEND_WQE_BB)) 55 56#define MLX5E_TLS_SET_PROGRESS_PARAMS_WQEBBS \ 57 (DIV_ROUND_UP(sizeof(struct mlx5e_set_tls_progress_params_wqe), MLX5_SEND_WQE_BB)) 58 59#define MLX5E_KTLS_GET_PROGRESS_WQEBBS \ 60 (DIV_ROUND_UP(sizeof(struct mlx5e_get_tls_progress_params_wqe), MLX5_SEND_WQE_BB)) 61 62#define MLX5E_TLS_FETCH_SET_STATIC_PARAMS_WQE(sq, pi) \ 63 ((struct mlx5e_set_tls_static_params_wqe *)\ 64 mlx5e_fetch_wqe(&(sq)->wq, pi, sizeof(struct mlx5e_set_tls_static_params_wqe))) 65 66#define MLX5E_TLS_FETCH_SET_PROGRESS_PARAMS_WQE(sq, pi) \ 67 ((struct mlx5e_set_tls_progress_params_wqe *)\ 68 mlx5e_fetch_wqe(&(sq)->wq, pi, sizeof(struct mlx5e_set_tls_progress_params_wqe))) 69 70#define MLX5E_TLS_FETCH_GET_PROGRESS_PARAMS_WQE(sq, pi) \ 71 ((struct mlx5e_get_tls_progress_params_wqe *)\ 72 mlx5e_fetch_wqe(&(sq)->wq, pi, sizeof(struct mlx5e_get_tls_progress_params_wqe))) 73 74#define MLX5E_TLS_FETCH_DUMP_WQE(sq, pi) \ 75 ((struct mlx5e_dump_wqe *)\ 76 mlx5e_fetch_wqe(&(sq)->wq, pi, sizeof(struct mlx5e_dump_wqe))) 77 78void 79mlx5e_ktls_build_static_params(struct mlx5e_set_tls_static_params_wqe *wqe, 80 u16 pc, u32 sqn, 81 union mlx5e_crypto_info *crypto_info, 82 u32 tis_tir_num, u32 key_id, u32 resync_tcp_sn, 83 bool fence, enum tls_offload_ctx_dir direction); 84void 85mlx5e_ktls_build_progress_params(struct mlx5e_set_tls_progress_params_wqe *wqe, 86 u16 pc, u32 sqn, 87 u32 tis_tir_num, bool fence, 88 u32 next_record_tcp_sn, 89 enum tls_offload_ctx_dir direction); 90 91#endif /* __MLX5E_TLS_UTILS_H__ */
~/
Read-only file preview.