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