13f22d6c7SMaxim Mikityanskiy /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
23f22d6c7SMaxim Mikityanskiy /* Copyright (c) 2021, Mellanox Technologies inc. All rights reserved. */
33f22d6c7SMaxim Mikityanskiy 
43f22d6c7SMaxim Mikityanskiy #ifndef __MLX5_EN_RX_RES_H__
53f22d6c7SMaxim Mikityanskiy #define __MLX5_EN_RX_RES_H__
63f22d6c7SMaxim Mikityanskiy 
73f22d6c7SMaxim Mikityanskiy #include <linux/kernel.h>
83f22d6c7SMaxim Mikityanskiy #include "rqt.h"
9a6696735SMaxim Mikityanskiy #include "tir.h"
103f22d6c7SMaxim Mikityanskiy #include "fs.h"
113f22d6c7SMaxim Mikityanskiy 
123f22d6c7SMaxim Mikityanskiy #define MLX5E_MAX_NUM_CHANNELS (MLX5E_INDIR_RQT_SIZE / 2)
133f22d6c7SMaxim Mikityanskiy 
143f22d6c7SMaxim Mikityanskiy struct mlx5e_rss_params {
156fe5ff2cSMaxim Mikityanskiy 	struct mlx5e_rss_params_hash hash;
163f22d6c7SMaxim Mikityanskiy 	struct mlx5e_rss_params_indir indir;
173f22d6c7SMaxim Mikityanskiy 	u32 rx_hash_fields[MLX5E_NUM_INDIR_TIRS];
183f22d6c7SMaxim Mikityanskiy };
193f22d6c7SMaxim Mikityanskiy 
203f22d6c7SMaxim Mikityanskiy struct mlx5e_rx_res {
213f22d6c7SMaxim Mikityanskiy 	struct mlx5e_rss_params rss_params;
220570c1c9SMaxim Mikityanskiy 
230570c1c9SMaxim Mikityanskiy 	struct mlx5e_rqt indir_rqt;
240570c1c9SMaxim Mikityanskiy 	struct {
250570c1c9SMaxim Mikityanskiy 		struct mlx5e_tir indir_tir;
260570c1c9SMaxim Mikityanskiy 		struct mlx5e_tir inner_indir_tir;
270570c1c9SMaxim Mikityanskiy 	} rss[MLX5E_NUM_INDIR_TIRS];
280570c1c9SMaxim Mikityanskiy 
290570c1c9SMaxim Mikityanskiy 	struct {
300570c1c9SMaxim Mikityanskiy 		struct mlx5e_rqt direct_rqt;
310570c1c9SMaxim Mikityanskiy 		struct mlx5e_tir direct_tir;
320570c1c9SMaxim Mikityanskiy 		struct mlx5e_rqt xsk_rqt;
330570c1c9SMaxim Mikityanskiy 		struct mlx5e_tir xsk_tir;
340570c1c9SMaxim Mikityanskiy 	} channels[MLX5E_MAX_NUM_CHANNELS];
350570c1c9SMaxim Mikityanskiy 
360570c1c9SMaxim Mikityanskiy 	struct {
370570c1c9SMaxim Mikityanskiy 		struct mlx5e_rqt rqt;
380570c1c9SMaxim Mikityanskiy 		struct mlx5e_tir tir;
390570c1c9SMaxim Mikityanskiy 	} ptp;
403f22d6c7SMaxim Mikityanskiy };
413f22d6c7SMaxim Mikityanskiy 
42*65d6b6e5SMaxim Mikityanskiy struct mlx5e_rss_params_traffic_type
43*65d6b6e5SMaxim Mikityanskiy mlx5e_rss_get_default_tt_config(enum mlx5e_traffic_types tt);
44*65d6b6e5SMaxim Mikityanskiy struct mlx5e_rss_params_traffic_type
45*65d6b6e5SMaxim Mikityanskiy mlx5e_rx_res_rss_get_current_tt_config(struct mlx5e_rx_res *res, enum mlx5e_traffic_types tt);
46*65d6b6e5SMaxim Mikityanskiy 
473f22d6c7SMaxim Mikityanskiy #endif /* __MLX5_EN_RX_RES_H__ */
48