1*06e9f13aSMaxim Mikityanskiy /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ 2*06e9f13aSMaxim Mikityanskiy /* Copyright (c) 2021, Mellanox Technologies inc. All rights reserved. */ 3*06e9f13aSMaxim Mikityanskiy 4*06e9f13aSMaxim Mikityanskiy #ifndef __MLX5_EN_RQT_H__ 5*06e9f13aSMaxim Mikityanskiy #define __MLX5_EN_RQT_H__ 6*06e9f13aSMaxim Mikityanskiy 7*06e9f13aSMaxim Mikityanskiy #include <linux/kernel.h> 8*06e9f13aSMaxim Mikityanskiy 9*06e9f13aSMaxim Mikityanskiy #define MLX5E_INDIR_RQT_SIZE (1 << 8) 10*06e9f13aSMaxim Mikityanskiy 11*06e9f13aSMaxim Mikityanskiy struct mlx5_core_dev; 12*06e9f13aSMaxim Mikityanskiy 13*06e9f13aSMaxim Mikityanskiy struct mlx5e_rss_params_indir { 14*06e9f13aSMaxim Mikityanskiy u32 table[MLX5E_INDIR_RQT_SIZE]; 15*06e9f13aSMaxim Mikityanskiy }; 16*06e9f13aSMaxim Mikityanskiy 17*06e9f13aSMaxim Mikityanskiy struct mlx5e_rqt { 18*06e9f13aSMaxim Mikityanskiy struct mlx5_core_dev *mdev; 19*06e9f13aSMaxim Mikityanskiy u32 rqtn; 20*06e9f13aSMaxim Mikityanskiy u16 size; 21*06e9f13aSMaxim Mikityanskiy }; 22*06e9f13aSMaxim Mikityanskiy 23*06e9f13aSMaxim Mikityanskiy int mlx5e_rqt_init_direct(struct mlx5e_rqt *rqt, struct mlx5_core_dev *mdev, 24*06e9f13aSMaxim Mikityanskiy bool indir_enabled, u32 init_rqn); 25*06e9f13aSMaxim Mikityanskiy int mlx5e_rqt_init_indir(struct mlx5e_rqt *rqt, struct mlx5_core_dev *mdev, 26*06e9f13aSMaxim Mikityanskiy u32 *rqns, unsigned int num_rqns, 27*06e9f13aSMaxim Mikityanskiy u8 hfunc, struct mlx5e_rss_params_indir *indir); 28*06e9f13aSMaxim Mikityanskiy void mlx5e_rqt_destroy(struct mlx5e_rqt *rqt); 29*06e9f13aSMaxim Mikityanskiy 30*06e9f13aSMaxim Mikityanskiy static inline u32 mlx5e_rqt_get_rqtn(struct mlx5e_rqt *rqt) 31*06e9f13aSMaxim Mikityanskiy { 32*06e9f13aSMaxim Mikityanskiy return rqt->rqtn; 33*06e9f13aSMaxim Mikityanskiy } 34*06e9f13aSMaxim Mikityanskiy 35*06e9f13aSMaxim Mikityanskiy int mlx5e_rqt_redirect_direct(struct mlx5e_rqt *rqt, u32 rqn); 36*06e9f13aSMaxim Mikityanskiy int mlx5e_rqt_redirect_indir(struct mlx5e_rqt *rqt, u32 *rqns, unsigned int num_rqns, 37*06e9f13aSMaxim Mikityanskiy u8 hfunc, struct mlx5e_rss_params_indir *indir); 38*06e9f13aSMaxim Mikityanskiy 39*06e9f13aSMaxim Mikityanskiy #endif /* __MLX5_EN_RQT_H__ */ 40