FILE
psp.h
File preview with syntax highlighting.
linux-6.19.14/drivers/net/ethernet/mellanox/mlx5/core/en_accel/psp.h
1/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ 2/* Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. */ 3 4#ifndef __MLX5E_ACCEL_PSP_H__ 5#define __MLX5E_ACCEL_PSP_H__ 6#if IS_ENABLED(CONFIG_MLX5_EN_PSP) 7#include <net/psp/types.h> 8#include "en.h" 9 10struct mlx5e_psp_stats { 11 u64 psp_rx_pkts; 12 u64 psp_rx_bytes; 13 u64 psp_rx_pkts_auth_fail; 14 u64 psp_rx_bytes_auth_fail; 15 u64 psp_rx_pkts_frame_err; 16 u64 psp_rx_bytes_frame_err; 17 u64 psp_rx_pkts_drop; 18 u64 psp_rx_bytes_drop; 19 u64 psp_tx_pkts; 20 u64 psp_tx_bytes; 21 u64 psp_tx_pkts_drop; 22 u64 psp_tx_bytes_drop; 23}; 24 25struct mlx5e_psp { 26 struct psp_dev *psp; 27 struct psp_dev_caps caps; 28 struct mlx5e_psp_fs *fs; 29 atomic_t tx_key_cnt; 30 atomic_t tx_drop; 31}; 32 33static inline bool mlx5_is_psp_device(struct mlx5_core_dev *mdev) 34{ 35 if (!MLX5_CAP_GEN(mdev, psp)) 36 return false; 37 38 if (!MLX5_CAP_PSP(mdev, psp_crypto_offload) || 39 !MLX5_CAP_PSP(mdev, psp_crypto_esp_aes_gcm_128_encrypt) || 40 !MLX5_CAP_PSP(mdev, psp_crypto_esp_aes_gcm_128_decrypt)) 41 return false; 42 43 return true; 44} 45 46int mlx5_accel_psp_fs_init_rx_tables(struct mlx5e_priv *priv); 47void mlx5_accel_psp_fs_cleanup_rx_tables(struct mlx5e_priv *priv); 48int mlx5_accel_psp_fs_init_tx_tables(struct mlx5e_priv *priv); 49void mlx5_accel_psp_fs_cleanup_tx_tables(struct mlx5e_priv *priv); 50void mlx5e_psp_register(struct mlx5e_priv *priv); 51void mlx5e_psp_unregister(struct mlx5e_priv *priv); 52int mlx5e_psp_init(struct mlx5e_priv *priv); 53void mlx5e_psp_cleanup(struct mlx5e_priv *priv); 54#else 55static inline int mlx5_accel_psp_fs_init_rx_tables(struct mlx5e_priv *priv) 56{ 57 return 0; 58} 59 60static inline void mlx5_accel_psp_fs_cleanup_rx_tables(struct mlx5e_priv *priv) { } 61static inline int mlx5_accel_psp_fs_init_tx_tables(struct mlx5e_priv *priv) 62{ 63 return 0; 64} 65 66static inline void mlx5_accel_psp_fs_cleanup_tx_tables(struct mlx5e_priv *priv) { } 67static inline bool mlx5_is_psp_device(struct mlx5_core_dev *mdev) 68{ 69 return false; 70} 71 72static inline void mlx5e_psp_register(struct mlx5e_priv *priv) { } 73static inline void mlx5e_psp_unregister(struct mlx5e_priv *priv) { } 74static inline int mlx5e_psp_init(struct mlx5e_priv *priv) { return 0; } 75static inline void mlx5e_psp_cleanup(struct mlx5e_priv *priv) { } 76#endif /* CONFIG_MLX5_EN_PSP */ 77#endif /* __MLX5E_ACCEL_PSP_H__ */
~/
Read-only file preview.