1 /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ 2 /* Copyright (c) 2021 Mellanox Technologies. */ 3 4 #ifndef __MLX5_EN_TC_TUN_ENCAP_H__ 5 #define __MLX5_EN_TC_TUN_ENCAP_H__ 6 7 #include "tc_priv.h" 8 9 void mlx5e_detach_encap(struct mlx5e_priv *priv, 10 struct mlx5e_tc_flow *flow, 11 struct mlx5_flow_attr *attr, 12 int out_index); 13 14 int mlx5e_attach_encap(struct mlx5e_priv *priv, 15 struct mlx5e_tc_flow *flow, 16 struct mlx5_flow_attr *attr, 17 struct net_device *mirred_dev, 18 int out_index, 19 struct netlink_ext_ack *extack, 20 struct net_device **encap_dev); 21 22 int mlx5e_attach_decap(struct mlx5e_priv *priv, 23 struct mlx5e_tc_flow *flow, 24 struct netlink_ext_ack *extack); 25 void mlx5e_detach_decap(struct mlx5e_priv *priv, 26 struct mlx5e_tc_flow *flow); 27 28 int mlx5e_attach_decap_route(struct mlx5e_priv *priv, 29 struct mlx5e_tc_flow *flow); 30 void mlx5e_detach_decap_route(struct mlx5e_priv *priv, 31 struct mlx5e_tc_flow *flow); 32 33 int mlx5e_tc_tun_encap_dests_set(struct mlx5e_priv *priv, 34 struct mlx5e_tc_flow *flow, 35 struct mlx5_flow_attr *attr, 36 struct netlink_ext_ack *extack, 37 bool *vf_tun); 38 void mlx5e_tc_tun_encap_dests_unset(struct mlx5e_priv *priv, 39 struct mlx5e_tc_flow *flow, 40 struct mlx5_flow_attr *attr); 41 42 struct ip_tunnel_info *mlx5e_dup_tun_info(const struct ip_tunnel_info *tun_info); 43 44 int mlx5e_tc_set_attr_rx_tun(struct mlx5e_tc_flow *flow, 45 struct mlx5_flow_spec *spec); 46 47 struct mlx5e_tc_tun_encap *mlx5e_tc_tun_init(struct mlx5e_priv *priv); 48 void mlx5e_tc_tun_cleanup(struct mlx5e_tc_tun_encap *encap); 49 50 #endif /* __MLX5_EN_TC_TUN_ENCAP_H__ */ 51