Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
0002 /* Copyright (c) 2021, Mellanox Technologies inc. All rights reserved. */
0003 
0004 #ifndef __MLX5_EN_RQT_H__
0005 #define __MLX5_EN_RQT_H__
0006 
0007 #include <linux/kernel.h>
0008 
0009 #define MLX5E_INDIR_RQT_SIZE (1 << 8)
0010 
0011 struct mlx5_core_dev;
0012 
0013 struct mlx5e_rss_params_indir {
0014     u32 table[MLX5E_INDIR_RQT_SIZE];
0015 };
0016 
0017 void mlx5e_rss_params_indir_init_uniform(struct mlx5e_rss_params_indir *indir,
0018                      unsigned int num_channels);
0019 
0020 struct mlx5e_rqt {
0021     struct mlx5_core_dev *mdev;
0022     u32 rqtn;
0023     u16 size;
0024 };
0025 
0026 int mlx5e_rqt_init_direct(struct mlx5e_rqt *rqt, struct mlx5_core_dev *mdev,
0027               bool indir_enabled, u32 init_rqn);
0028 int mlx5e_rqt_init_indir(struct mlx5e_rqt *rqt, struct mlx5_core_dev *mdev,
0029              u32 *rqns, unsigned int num_rqns,
0030              u8 hfunc, struct mlx5e_rss_params_indir *indir);
0031 void mlx5e_rqt_destroy(struct mlx5e_rqt *rqt);
0032 
0033 static inline u32 mlx5e_rqt_get_rqtn(struct mlx5e_rqt *rqt)
0034 {
0035     return rqt->rqtn;
0036 }
0037 
0038 int mlx5e_rqt_redirect_direct(struct mlx5e_rqt *rqt, u32 rqn);
0039 int mlx5e_rqt_redirect_indir(struct mlx5e_rqt *rqt, u32 *rqns, unsigned int num_rqns,
0040                  u8 hfunc, struct mlx5e_rss_params_indir *indir);
0041 
0042 #endif /* __MLX5_EN_RQT_H__ */