FILE
fs_ttc.h
File preview with syntax highlighting.
linux-6.19.14/drivers/net/ethernet/mellanox/mlx5/core/lib/fs_ttc.h
1/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ 2/* Copyright (c) 2020 Mellanox Technologies. */ 3 4#ifndef __ML5_FS_TTC_H__ 5#define __ML5_FS_TTC_H__ 6 7#include <linux/mlx5/fs.h> 8 9enum mlx5_traffic_types { 10 MLX5_TT_IPV4_TCP, 11 MLX5_TT_IPV6_TCP, 12 MLX5_TT_IPV4_UDP, 13 MLX5_TT_IPV6_UDP, 14 MLX5_TT_IPV4_IPSEC_AH, 15 MLX5_TT_IPV6_IPSEC_AH, 16 MLX5_TT_IPV4_IPSEC_ESP, 17 MLX5_TT_IPV6_IPSEC_ESP, 18 MLX5_TT_IPV4, 19 MLX5_TT_IPV6, 20 MLX5_TT_ANY, 21 MLX5_TT_DECRYPTED_ESP_OUTER_IPV4_TCP, 22 MLX5_TT_DECRYPTED_ESP_OUTER_IPV6_TCP, 23 MLX5_TT_DECRYPTED_ESP_OUTER_IPV4_UDP, 24 MLX5_TT_DECRYPTED_ESP_OUTER_IPV6_UDP, 25 MLX5_TT_DECRYPTED_ESP_INNER_IPV4_TCP, 26 MLX5_TT_DECRYPTED_ESP_INNER_IPV6_TCP, 27 MLX5_TT_DECRYPTED_ESP_INNER_IPV4_UDP, 28 MLX5_TT_DECRYPTED_ESP_INNER_IPV6_UDP, 29 MLX5_NUM_TT, 30 MLX5_NUM_INDIR_TIRS = MLX5_TT_ANY, 31}; 32 33enum mlx5_tunnel_types { 34 MLX5_TT_IPV4_GRE, 35 MLX5_TT_IPV6_GRE, 36 MLX5_TT_IPV4_IPIP, 37 MLX5_TT_IPV6_IPIP, 38 MLX5_TT_IPV4_IPV6, 39 MLX5_TT_IPV6_IPV6, 40 MLX5_NUM_TUNNEL_TT, 41}; 42 43struct mlx5_ttc_rule { 44 struct mlx5_flow_handle *rule; 45 struct mlx5_flow_destination default_dest; 46}; 47 48struct mlx5_ttc_table; 49 50struct ttc_params { 51 enum mlx5_flow_namespace_type ns_type; 52 struct mlx5_flow_table_attr ft_attr; 53 struct mlx5_flow_destination dests[MLX5_NUM_TT]; 54 DECLARE_BITMAP(ignore_dests, MLX5_NUM_TT); 55 bool inner_ttc; 56 DECLARE_BITMAP(ignore_tunnel_dests, MLX5_NUM_TUNNEL_TT); 57 struct mlx5_flow_destination tunnel_dests[MLX5_NUM_TUNNEL_TT]; 58 bool ipsec_rss; 59}; 60 61const char *mlx5_ttc_get_name(enum mlx5_traffic_types tt); 62struct mlx5_flow_table *mlx5_get_ttc_flow_table(struct mlx5_ttc_table *ttc); 63 64struct mlx5_ttc_table *mlx5_create_ttc_table(struct mlx5_core_dev *dev, 65 struct ttc_params *params); 66void mlx5_destroy_ttc_table(struct mlx5_ttc_table *ttc); 67 68struct mlx5_ttc_table *mlx5_create_inner_ttc_table(struct mlx5_core_dev *dev, 69 struct ttc_params *params); 70 71int mlx5_ttc_fwd_dest(struct mlx5_ttc_table *ttc, enum mlx5_traffic_types type, 72 struct mlx5_flow_destination *new_dest); 73struct mlx5_flow_destination 74mlx5_ttc_get_default_dest(struct mlx5_ttc_table *ttc, 75 enum mlx5_traffic_types type); 76int mlx5_ttc_fwd_default_dest(struct mlx5_ttc_table *ttc, 77 enum mlx5_traffic_types type); 78 79bool mlx5_tunnel_inner_ft_supported(struct mlx5_core_dev *mdev); 80u8 mlx5_get_proto_by_tunnel_type(enum mlx5_tunnel_types tt); 81 82bool mlx5_ttc_has_esp_flow_group(struct mlx5_ttc_table *ttc); 83int mlx5_ttc_create_ipsec_rules(struct mlx5_ttc_table *ttc, 84 struct mlx5_ttc_table *inner_ttc); 85void mlx5_ttc_destroy_ipsec_rules(struct mlx5_ttc_table *ttc); 86static inline bool mlx5_ttc_is_decrypted_esp_tt(enum mlx5_traffic_types tt) 87{ 88 return tt >= MLX5_TT_DECRYPTED_ESP_OUTER_IPV4_TCP && 89 tt <= MLX5_TT_DECRYPTED_ESP_INNER_IPV6_UDP; 90} 91 92#endif /* __MLX5_FS_TTC_H__ */
~/
Read-only file preview.