This source file includes following definitions.
- mlx5e_tc_nic_init
- mlx5e_tc_nic_cleanup
- mlx5e_tc_num_filters
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 #ifndef __MLX5_EN_TC_H__
34 #define __MLX5_EN_TC_H__
35
36 #include <net/pkt_cls.h>
37
38 #define MLX5E_TC_FLOW_ID_MASK 0x0000ffff
39
40 #ifdef CONFIG_MLX5_ESWITCH
41
42 enum {
43 MLX5E_TC_FLAG_INGRESS_BIT,
44 MLX5E_TC_FLAG_EGRESS_BIT,
45 MLX5E_TC_FLAG_NIC_OFFLOAD_BIT,
46 MLX5E_TC_FLAG_ESW_OFFLOAD_BIT,
47 MLX5E_TC_FLAG_LAST_EXPORTED_BIT = MLX5E_TC_FLAG_ESW_OFFLOAD_BIT,
48 };
49
50 #define MLX5_TC_FLAG(flag) BIT(MLX5E_TC_FLAG_##flag##_BIT)
51
52 int mlx5e_tc_nic_init(struct mlx5e_priv *priv);
53 void mlx5e_tc_nic_cleanup(struct mlx5e_priv *priv);
54
55 int mlx5e_tc_esw_init(struct rhashtable *tc_ht);
56 void mlx5e_tc_esw_cleanup(struct rhashtable *tc_ht);
57
58 int mlx5e_configure_flower(struct net_device *dev, struct mlx5e_priv *priv,
59 struct flow_cls_offload *f, unsigned long flags);
60 int mlx5e_delete_flower(struct net_device *dev, struct mlx5e_priv *priv,
61 struct flow_cls_offload *f, unsigned long flags);
62
63 int mlx5e_stats_flower(struct net_device *dev, struct mlx5e_priv *priv,
64 struct flow_cls_offload *f, unsigned long flags);
65
66 int mlx5e_tc_configure_matchall(struct mlx5e_priv *priv,
67 struct tc_cls_matchall_offload *f);
68 int mlx5e_tc_delete_matchall(struct mlx5e_priv *priv,
69 struct tc_cls_matchall_offload *f);
70 void mlx5e_tc_stats_matchall(struct mlx5e_priv *priv,
71 struct tc_cls_matchall_offload *ma);
72
73 struct mlx5e_encap_entry;
74 void mlx5e_tc_encap_flows_add(struct mlx5e_priv *priv,
75 struct mlx5e_encap_entry *e,
76 struct list_head *flow_list);
77 void mlx5e_tc_encap_flows_del(struct mlx5e_priv *priv,
78 struct mlx5e_encap_entry *e,
79 struct list_head *flow_list);
80 bool mlx5e_encap_take(struct mlx5e_encap_entry *e);
81 void mlx5e_encap_put(struct mlx5e_priv *priv, struct mlx5e_encap_entry *e);
82
83 void mlx5e_take_all_encap_flows(struct mlx5e_encap_entry *e, struct list_head *flow_list);
84 void mlx5e_put_encap_flow_list(struct mlx5e_priv *priv, struct list_head *flow_list);
85
86 struct mlx5e_neigh_hash_entry;
87 void mlx5e_tc_update_neigh_used_value(struct mlx5e_neigh_hash_entry *nhe);
88
89 int mlx5e_tc_num_filters(struct mlx5e_priv *priv, unsigned long flags);
90
91 void mlx5e_tc_reoffload_flows_work(struct work_struct *work);
92
93 bool mlx5e_is_valid_eswitch_fwd_dev(struct mlx5e_priv *priv,
94 struct net_device *out_dev);
95
96 #else
97 static inline int mlx5e_tc_nic_init(struct mlx5e_priv *priv) { return 0; }
98 static inline void mlx5e_tc_nic_cleanup(struct mlx5e_priv *priv) {}
99 static inline int mlx5e_tc_num_filters(struct mlx5e_priv *priv,
100 unsigned long flags)
101 {
102 return 0;
103 }
104 #endif
105
106 #endif