| 3030 | } |
| 3031 | |
| 3032 | int ena_com_indirect_table_get(struct ena_com_dev *ena_dev, u32 *ind_tbl) |
| 3033 | { |
| 3034 | struct ena_rss *rss = &ena_dev->rss; |
| 3035 | struct ena_admin_get_feat_resp get_resp; |
| 3036 | u32 tbl_size; |
| 3037 | int i, rc; |
| 3038 | |
| 3039 | tbl_size = (1ULL << rss->tbl_log_size) * |
| 3040 | sizeof(struct ena_admin_rss_ind_table_entry); |
| 3041 | |
| 3042 | rc = ena_com_get_feature_ex(ena_dev, &get_resp, |
| 3043 | ENA_ADMIN_RSS_INDIRECTION_TABLE_CONFIG, |
| 3044 | rss->rss_ind_tbl_dma_addr, |
| 3045 | tbl_size, 0); |
| 3046 | if (unlikely(rc)) |
| 3047 | return rc; |
| 3048 | |
| 3049 | if (!ind_tbl) |
| 3050 | return 0; |
| 3051 | |
| 3052 | for (i = 0; i < (1 << rss->tbl_log_size); i++) |
| 3053 | ind_tbl[i] = rss->host_rss_ind_tbl[i]; |
| 3054 | |
| 3055 | return 0; |
| 3056 | } |
| 3057 | |
| 3058 | int ena_com_rss_init(struct ena_com_dev *ena_dev, u16 indr_tbl_log_size) |
| 3059 | { |
no test coverage detected