File Index
Files and directories
Sign in
FILE

rss.h

File preview with syntax highlighting.

linux-6.19.14/drivers/net/ethernet/mellanox/mlx5/core/en/rss.h C
 1/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
 2/* Copyright (c) 2021, NVIDIA CORPORATION & AFFILIATES. */
 3
 4#ifndef __MLX5_EN_RSS_H__
 5#define __MLX5_EN_RSS_H__
 6
 7#include "rqt.h"
 8#include "tir.h"
 9#include "fs.h"
10
11enum mlx5e_rss_init_type {
12	MLX5E_RSS_INIT_NO_TIRS = 0,
13	MLX5E_RSS_INIT_TIRS
14};
15
16struct mlx5e_rss_init_params {
17	enum mlx5e_rss_init_type type;
18	const struct mlx5e_packet_merge_param *pkt_merge_param;
19	unsigned int nch;
20	unsigned int max_nch;
21};
22
23struct mlx5e_rss_params {
24	bool inner_ft_support;
25	u32 drop_rqn;
26	bool self_lb_blk;
27};
28
29struct mlx5e_rss_params_traffic_type
30mlx5e_rss_get_default_tt_config(enum mlx5_traffic_types tt);
31
32struct mlx5e_rss;
33
34int mlx5e_rss_params_indir_init(struct mlx5e_rss_params_indir *indir,
35				u32 actual_table_size, u32 max_table_size);
36void mlx5e_rss_params_indir_cleanup(struct mlx5e_rss_params_indir *indir);
37void mlx5e_rss_params_indir_modify_actual_size(struct mlx5e_rss *rss, u32 num_channels);
38struct mlx5e_rss *
39mlx5e_rss_init(struct mlx5_core_dev *mdev,
40	       const struct mlx5e_rss_params *params,
41	       const struct mlx5e_rss_init_params *init_params);
42int mlx5e_rss_cleanup(struct mlx5e_rss *rss);
43
44void mlx5e_rss_refcnt_inc(struct mlx5e_rss *rss);
45void mlx5e_rss_refcnt_dec(struct mlx5e_rss *rss);
46unsigned int mlx5e_rss_refcnt_read(struct mlx5e_rss *rss);
47
48bool mlx5e_rss_get_inner_ft_support(struct mlx5e_rss *rss);
49u32 mlx5e_rss_get_tirn(struct mlx5e_rss *rss, enum mlx5_traffic_types tt,
50		       bool inner);
51bool mlx5e_rss_valid_tir(struct mlx5e_rss *rss, enum mlx5_traffic_types tt, bool inner);
52u32 mlx5e_rss_get_rqtn(struct mlx5e_rss *rss);
53int
54mlx5e_rss_obtain_tirn(struct mlx5e_rss *rss, enum mlx5_traffic_types tt,
55		      const struct mlx5e_packet_merge_param *pkt_merge_param,
56		      bool inner, u32 *tirn);
57
58void mlx5e_rss_enable(struct mlx5e_rss *rss, u32 *rqns, u32 *vhca_ids, unsigned int num_rqns);
59void mlx5e_rss_disable(struct mlx5e_rss *rss);
60
61int mlx5e_rss_packet_merge_set_param(struct mlx5e_rss *rss,
62				     struct mlx5e_packet_merge_param *pkt_merge_param);
63void mlx5e_rss_get_rxfh(struct mlx5e_rss *rss, u32 *indir, u8 *key, u8 *hfunc,
64			bool *symmetric);
65int mlx5e_rss_set_rxfh(struct mlx5e_rss *rss, const u32 *indir,
66		       const u8 *key, const u8 *hfunc, const bool *symmetric,
67		       u32 *rqns, u32 *vhca_ids, unsigned int num_rqns);
68struct mlx5e_rss_params_hash mlx5e_rss_get_hash(struct mlx5e_rss *rss);
69u8 mlx5e_rss_get_hash_fields(struct mlx5e_rss *rss, enum mlx5_traffic_types tt);
70int mlx5e_rss_set_hash_fields(struct mlx5e_rss *rss, enum mlx5_traffic_types tt,
71			      u8 rx_hash_fields);
72void mlx5e_rss_set_indir_uniform(struct mlx5e_rss *rss, unsigned int nch);
73#endif /* __MLX5_EN_RSS_H__ */
~/ Read-only file preview.