net/mlx5e: Add CONFIG_MLX5_EN_RXNFC for ethtool rx nfc
[sfrench/cifs-2.6.git] / drivers / net / ethernet / mellanox / mlx5 / core / en / fs.h
1 /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
2 /* Copyright (c) 2018 Mellanox Technologies. */
3
4 #ifndef __MLX5E_FLOW_STEER_H__
5 #define __MLX5E_FLOW_STEER_H__
6
7 #ifdef CONFIG_MLX5_EN_RXNFC
8
9 struct mlx5e_ethtool_table {
10         struct mlx5_flow_table *ft;
11         int                    num_rules;
12 };
13
14 #define ETHTOOL_NUM_L3_L4_FTS 7
15 #define ETHTOOL_NUM_L2_FTS 4
16
17 struct mlx5e_ethtool_steering {
18         struct mlx5e_ethtool_table      l3_l4_ft[ETHTOOL_NUM_L3_L4_FTS];
19         struct mlx5e_ethtool_table      l2_ft[ETHTOOL_NUM_L2_FTS];
20         struct list_head                rules;
21         int                             tot_num_rules;
22 };
23
24 void mlx5e_ethtool_init_steering(struct mlx5e_priv *priv);
25 void mlx5e_ethtool_cleanup_steering(struct mlx5e_priv *priv);
26 int mlx5e_set_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd);
27 int mlx5e_get_rxnfc(struct net_device *dev,
28                     struct ethtool_rxnfc *info, u32 *rule_locs);
29 #else
30 static inline void mlx5e_ethtool_init_steering(struct mlx5e_priv *priv)    { }
31 static inline void mlx5e_ethtool_cleanup_steering(struct mlx5e_priv *priv) { }
32 #endif /* CONFIG_MLX5_EN_RXNFC */
33
34 #endif /* __MLX5E_FLOW_STEER_H__ */
35