MCPcopy Create free account
hub / github.com/F-Stack/f-stack / ena_com_indirect_table_set

Function ena_com_indirect_table_set

dpdk/drivers/net/ena/base/ena_com.c:2979–3030  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2977}
2978
2979int ena_com_indirect_table_set(struct ena_com_dev *ena_dev)
2980{
2981 struct ena_com_admin_queue *admin_queue = &ena_dev->admin_queue;
2982 struct ena_rss *rss = &ena_dev->rss;
2983 struct ena_admin_set_feat_cmd cmd;
2984 struct ena_admin_set_feat_resp resp;
2985 int ret;
2986
2987 if (!ena_com_check_supported_feature_id(ena_dev,
2988 ENA_ADMIN_RSS_INDIRECTION_TABLE_CONFIG)) {
2989 ena_trc_dbg(ena_dev, "Feature %d isn't supported\n",
2990 ENA_ADMIN_RSS_INDIRECTION_TABLE_CONFIG);
2991 return ENA_COM_UNSUPPORTED;
2992 }
2993
2994 ret = ena_com_ind_tbl_convert_to_device(ena_dev);
2995 if (ret) {
2996 ena_trc_err(ena_dev, "Failed to convert host indirection table to device table\n");
2997 return ret;
2998 }
2999
3000 memset(&cmd, 0x0, sizeof(cmd));
3001
3002 cmd.aq_common_descriptor.opcode = ENA_ADMIN_SET_FEATURE;
3003 cmd.aq_common_descriptor.flags =
3004 ENA_ADMIN_AQ_COMMON_DESC_CTRL_DATA_INDIRECT_MASK;
3005 cmd.feat_common.feature_id = ENA_ADMIN_RSS_INDIRECTION_TABLE_CONFIG;
3006 cmd.u.ind_table.size = rss->tbl_log_size;
3007 cmd.u.ind_table.inline_index = 0xFFFFFFFF;
3008
3009 ret = ena_com_mem_addr_set(ena_dev,
3010 &cmd.control_buffer.address,
3011 rss->rss_ind_tbl_dma_addr);
3012 if (unlikely(ret)) {
3013 ena_trc_err(ena_dev, "Memory address set failed\n");
3014 return ret;
3015 }
3016
3017 cmd.control_buffer.length = (1ULL << rss->tbl_log_size) *
3018 sizeof(struct ena_admin_rss_ind_table_entry);
3019
3020 ret = ena_com_execute_admin_command(admin_queue,
3021 (struct ena_admin_aq_entry *)&cmd,
3022 sizeof(cmd),
3023 (struct ena_admin_acq_entry *)&resp,
3024 sizeof(resp));
3025
3026 if (unlikely(ret))
3027 ena_trc_err(ena_dev, "Failed to set indirect table. error: %d\n", ret);
3028
3029 return ret;
3030}
3031
3032int ena_com_indirect_table_get(struct ena_com_dev *ena_dev, u32 *ind_tbl)
3033{

Callers 2

ena_mp_primary_handleFunction · 0.50
ena_rss_configureFunction · 0.50

Calls 5

memsetFunction · 0.85
ena_com_mem_addr_setFunction · 0.70

Tested by

no test coverage detected