#ifndef __HCLGE_COMM_RSS_H
#define __HCLGE_COMM_RSS_H
#include <linux/types.h>
#include "hnae3.h"
#include "hclge_comm_cmd.h"
#define HCLGE_COMM_RSS_HASH_ALGO_TOEPLITZ …
#define HCLGE_COMM_RSS_HASH_ALGO_SIMPLE …
#define HCLGE_COMM_RSS_HASH_ALGO_SYMMETRIC …
#define HCLGE_COMM_RSS_INPUT_TUPLE_OTHER …
#define HCLGE_COMM_RSS_INPUT_TUPLE_SCTP …
#define HCLGE_COMM_D_PORT_BIT …
#define HCLGE_COMM_S_PORT_BIT …
#define HCLGE_COMM_D_IP_BIT …
#define HCLGE_COMM_S_IP_BIT …
#define HCLGE_COMM_V_TAG_BIT …
#define HCLGE_COMM_RSS_INPUT_TUPLE_SCTP_NO_PORT …
#define HCLGE_COMM_MAX_TC_NUM …
#define HCLGE_COMM_RSS_TC_OFFSET_S …
#define HCLGE_COMM_RSS_TC_OFFSET_M …
#define HCLGE_COMM_RSS_TC_SIZE_MSB_B …
#define HCLGE_COMM_RSS_TC_SIZE_S …
#define HCLGE_COMM_RSS_TC_SIZE_M …
#define HCLGE_COMM_RSS_TC_VALID_B …
#define HCLGE_COMM_RSS_TC_SIZE_MSB_OFFSET …
struct hclge_comm_rss_tuple_cfg { … };
#define HCLGE_COMM_RSS_KEY_SIZE …
#define HCLGE_COMM_RSS_CFG_TBL_SIZE …
#define HCLGE_COMM_RSS_CFG_TBL_BW_H …
#define HCLGE_COMM_RSS_CFG_TBL_BW_L …
#define HCLGE_COMM_RSS_CFG_TBL_SIZE_H …
#define HCLGE_COMM_RSS_SET_BITMAP_MSK …
#define HCLGE_COMM_RSS_HASH_ALGO_MASK …
#define HCLGE_COMM_RSS_HASH_KEY_OFFSET_B …
#define HCLGE_COMM_RSS_HASH_KEY_NUM …
struct hclge_comm_rss_config_cmd { … };
struct hclge_comm_rss_cfg { … };
struct hclge_comm_rss_input_tuple_cmd { … };
struct hclge_comm_rss_ind_tbl_cmd { … };
struct hclge_comm_rss_tc_mode_cmd { … };
u32 hclge_comm_get_rss_key_size(struct hnae3_handle *handle);
void hclge_comm_rss_indir_init_cfg(struct hnae3_ae_dev *ae_dev,
struct hclge_comm_rss_cfg *rss_cfg);
int hclge_comm_get_rss_tuple(struct hclge_comm_rss_cfg *rss_cfg, int flow_type,
u8 *tuple_sets);
int hclge_comm_parse_rss_hfunc(struct hclge_comm_rss_cfg *rss_cfg,
const u8 hfunc, u8 *hash_algo);
void hclge_comm_get_rss_hash_info(struct hclge_comm_rss_cfg *rss_cfg, u8 *key,
u8 *hfunc);
void hclge_comm_get_rss_indir_tbl(struct hclge_comm_rss_cfg *rss_cfg,
u32 *indir, u16 rss_ind_tbl_size);
int hclge_comm_set_rss_algo_key(struct hclge_comm_hw *hw, const u8 hfunc,
const u8 *key);
int hclge_comm_init_rss_tuple_cmd(struct hclge_comm_rss_cfg *rss_cfg,
struct ethtool_rxnfc *nfc,
struct hnae3_ae_dev *ae_dev,
struct hclge_comm_rss_input_tuple_cmd *req);
u64 hclge_comm_convert_rss_tuple(u8 tuple_sets);
int hclge_comm_set_rss_input_tuple(struct hclge_comm_hw *hw,
struct hclge_comm_rss_cfg *rss_cfg);
int hclge_comm_set_rss_indir_table(struct hnae3_ae_dev *ae_dev,
struct hclge_comm_hw *hw, const u16 *indir);
int hclge_comm_rss_init_cfg(struct hnae3_handle *nic,
struct hnae3_ae_dev *ae_dev,
struct hclge_comm_rss_cfg *rss_cfg);
void hclge_comm_get_rss_tc_info(u16 rss_size, u8 hw_tc_map, u16 *tc_offset,
u16 *tc_valid, u16 *tc_size);
int hclge_comm_set_rss_tc_mode(struct hclge_comm_hw *hw, u16 *tc_offset,
u16 *tc_valid, u16 *tc_size);
int hclge_comm_set_rss_hash_key(struct hclge_comm_rss_cfg *rss_cfg,
struct hclge_comm_hw *hw, const u8 *key,
const u8 hfunc);
int hclge_comm_set_rss_tuple(struct hnae3_ae_dev *ae_dev,
struct hclge_comm_hw *hw,
struct hclge_comm_rss_cfg *rss_cfg,
struct ethtool_rxnfc *nfc);
#endif