18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */ 28c2ecf20Sopenharmony_ci/* QLogic qed NIC Driver 38c2ecf20Sopenharmony_ci * Copyright (c) 2015-2017 QLogic Corporation 48c2ecf20Sopenharmony_ci * Copyright (c) 2019-2020 Marvell International Ltd. 58c2ecf20Sopenharmony_ci */ 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci#ifndef _QED_CXT_H 88c2ecf20Sopenharmony_ci#define _QED_CXT_H 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#include <linux/types.h> 118c2ecf20Sopenharmony_ci#include <linux/slab.h> 128c2ecf20Sopenharmony_ci#include <linux/qed/qed_if.h> 138c2ecf20Sopenharmony_ci#include "qed_hsi.h" 148c2ecf20Sopenharmony_ci#include "qed.h" 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_cistruct qed_cxt_info { 178c2ecf20Sopenharmony_ci void *p_cxt; 188c2ecf20Sopenharmony_ci u32 iid; 198c2ecf20Sopenharmony_ci enum protocol_type type; 208c2ecf20Sopenharmony_ci}; 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ci#define MAX_TID_BLOCKS 512 238c2ecf20Sopenharmony_cistruct qed_tid_mem { 248c2ecf20Sopenharmony_ci u32 tid_size; 258c2ecf20Sopenharmony_ci u32 num_tids_per_block; 268c2ecf20Sopenharmony_ci u32 waste; 278c2ecf20Sopenharmony_ci u8 *blocks[MAX_TID_BLOCKS]; /* 4K */ 288c2ecf20Sopenharmony_ci}; 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ci/** 318c2ecf20Sopenharmony_ci * @brief qedo_cid_get_cxt_info - Returns the context info for a specific cid 328c2ecf20Sopenharmony_ci * 338c2ecf20Sopenharmony_ci * 348c2ecf20Sopenharmony_ci * @param p_hwfn 358c2ecf20Sopenharmony_ci * @param p_info in/out 368c2ecf20Sopenharmony_ci * 378c2ecf20Sopenharmony_ci * @return int 388c2ecf20Sopenharmony_ci */ 398c2ecf20Sopenharmony_ciint qed_cxt_get_cid_info(struct qed_hwfn *p_hwfn, 408c2ecf20Sopenharmony_ci struct qed_cxt_info *p_info); 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ci/** 438c2ecf20Sopenharmony_ci * @brief qed_cxt_get_tid_mem_info 448c2ecf20Sopenharmony_ci * 458c2ecf20Sopenharmony_ci * @param p_hwfn 468c2ecf20Sopenharmony_ci * @param p_info 478c2ecf20Sopenharmony_ci * 488c2ecf20Sopenharmony_ci * @return int 498c2ecf20Sopenharmony_ci */ 508c2ecf20Sopenharmony_ciint qed_cxt_get_tid_mem_info(struct qed_hwfn *p_hwfn, 518c2ecf20Sopenharmony_ci struct qed_tid_mem *p_info); 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_ci#define QED_CXT_ISCSI_TID_SEG PROTOCOLID_ISCSI 548c2ecf20Sopenharmony_ci#define QED_CXT_ROCE_TID_SEG PROTOCOLID_ROCE 558c2ecf20Sopenharmony_ci#define QED_CXT_FCOE_TID_SEG PROTOCOLID_FCOE 568c2ecf20Sopenharmony_cienum qed_cxt_elem_type { 578c2ecf20Sopenharmony_ci QED_ELEM_CXT, 588c2ecf20Sopenharmony_ci QED_ELEM_SRQ, 598c2ecf20Sopenharmony_ci QED_ELEM_TASK, 608c2ecf20Sopenharmony_ci QED_ELEM_XRC_SRQ, 618c2ecf20Sopenharmony_ci}; 628c2ecf20Sopenharmony_ci 638c2ecf20Sopenharmony_ciu32 qed_cxt_get_proto_cid_count(struct qed_hwfn *p_hwfn, 648c2ecf20Sopenharmony_ci enum protocol_type type, u32 *vf_cid); 658c2ecf20Sopenharmony_ci 668c2ecf20Sopenharmony_ci/** 678c2ecf20Sopenharmony_ci * @brief qed_cxt_set_pf_params - Set the PF params for cxt init 688c2ecf20Sopenharmony_ci * 698c2ecf20Sopenharmony_ci * @param p_hwfn 708c2ecf20Sopenharmony_ci * @param rdma_tasks - requested maximum 718c2ecf20Sopenharmony_ci * @return int 728c2ecf20Sopenharmony_ci */ 738c2ecf20Sopenharmony_ciint qed_cxt_set_pf_params(struct qed_hwfn *p_hwfn, u32 rdma_tasks); 748c2ecf20Sopenharmony_ci 758c2ecf20Sopenharmony_ci/** 768c2ecf20Sopenharmony_ci * @brief qed_cxt_cfg_ilt_compute - compute ILT init parameters 778c2ecf20Sopenharmony_ci * 788c2ecf20Sopenharmony_ci * @param p_hwfn 798c2ecf20Sopenharmony_ci * @param last_line 808c2ecf20Sopenharmony_ci * 818c2ecf20Sopenharmony_ci * @return int 828c2ecf20Sopenharmony_ci */ 838c2ecf20Sopenharmony_ciint qed_cxt_cfg_ilt_compute(struct qed_hwfn *p_hwfn, u32 *last_line); 848c2ecf20Sopenharmony_ci 858c2ecf20Sopenharmony_ci/** 868c2ecf20Sopenharmony_ci * @brief qed_cxt_cfg_ilt_compute_excess - how many lines can be decreased 878c2ecf20Sopenharmony_ci * 888c2ecf20Sopenharmony_ci * @param p_hwfn 898c2ecf20Sopenharmony_ci * @param used_lines 908c2ecf20Sopenharmony_ci */ 918c2ecf20Sopenharmony_ciu32 qed_cxt_cfg_ilt_compute_excess(struct qed_hwfn *p_hwfn, u32 used_lines); 928c2ecf20Sopenharmony_ci 938c2ecf20Sopenharmony_ci/** 948c2ecf20Sopenharmony_ci * @brief qed_cxt_mngr_alloc - Allocate and init the context manager struct 958c2ecf20Sopenharmony_ci * 968c2ecf20Sopenharmony_ci * @param p_hwfn 978c2ecf20Sopenharmony_ci * 988c2ecf20Sopenharmony_ci * @return int 998c2ecf20Sopenharmony_ci */ 1008c2ecf20Sopenharmony_ciint qed_cxt_mngr_alloc(struct qed_hwfn *p_hwfn); 1018c2ecf20Sopenharmony_ci 1028c2ecf20Sopenharmony_ci/** 1038c2ecf20Sopenharmony_ci * @brief qed_cxt_mngr_free 1048c2ecf20Sopenharmony_ci * 1058c2ecf20Sopenharmony_ci * @param p_hwfn 1068c2ecf20Sopenharmony_ci */ 1078c2ecf20Sopenharmony_civoid qed_cxt_mngr_free(struct qed_hwfn *p_hwfn); 1088c2ecf20Sopenharmony_ci 1098c2ecf20Sopenharmony_ci/** 1108c2ecf20Sopenharmony_ci * @brief qed_cxt_tables_alloc - Allocate ILT shadow, Searcher T2, acquired map 1118c2ecf20Sopenharmony_ci * 1128c2ecf20Sopenharmony_ci * @param p_hwfn 1138c2ecf20Sopenharmony_ci * 1148c2ecf20Sopenharmony_ci * @return int 1158c2ecf20Sopenharmony_ci */ 1168c2ecf20Sopenharmony_ciint qed_cxt_tables_alloc(struct qed_hwfn *p_hwfn); 1178c2ecf20Sopenharmony_ci 1188c2ecf20Sopenharmony_ci/** 1198c2ecf20Sopenharmony_ci * @brief qed_cxt_mngr_setup - Reset the acquired CIDs 1208c2ecf20Sopenharmony_ci * 1218c2ecf20Sopenharmony_ci * @param p_hwfn 1228c2ecf20Sopenharmony_ci */ 1238c2ecf20Sopenharmony_civoid qed_cxt_mngr_setup(struct qed_hwfn *p_hwfn); 1248c2ecf20Sopenharmony_ci 1258c2ecf20Sopenharmony_ci/** 1268c2ecf20Sopenharmony_ci * @brief qed_cxt_hw_init_common - Initailze ILT and DQ, common phase, per path. 1278c2ecf20Sopenharmony_ci * 1288c2ecf20Sopenharmony_ci * 1298c2ecf20Sopenharmony_ci * 1308c2ecf20Sopenharmony_ci * @param p_hwfn 1318c2ecf20Sopenharmony_ci */ 1328c2ecf20Sopenharmony_civoid qed_cxt_hw_init_common(struct qed_hwfn *p_hwfn); 1338c2ecf20Sopenharmony_ci 1348c2ecf20Sopenharmony_ci/** 1358c2ecf20Sopenharmony_ci * @brief qed_cxt_hw_init_pf - Initailze ILT and DQ, PF phase, per path. 1368c2ecf20Sopenharmony_ci * 1378c2ecf20Sopenharmony_ci * @param p_hwfn 1388c2ecf20Sopenharmony_ci * @param p_ptt 1398c2ecf20Sopenharmony_ci */ 1408c2ecf20Sopenharmony_civoid qed_cxt_hw_init_pf(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt); 1418c2ecf20Sopenharmony_ci 1428c2ecf20Sopenharmony_ci/** 1438c2ecf20Sopenharmony_ci * @brief qed_qm_init_pf - Initailze the QM PF phase, per path 1448c2ecf20Sopenharmony_ci * 1458c2ecf20Sopenharmony_ci * @param p_hwfn 1468c2ecf20Sopenharmony_ci * @param p_ptt 1478c2ecf20Sopenharmony_ci * @param is_pf_loading 1488c2ecf20Sopenharmony_ci */ 1498c2ecf20Sopenharmony_civoid qed_qm_init_pf(struct qed_hwfn *p_hwfn, 1508c2ecf20Sopenharmony_ci struct qed_ptt *p_ptt, bool is_pf_loading); 1518c2ecf20Sopenharmony_ci 1528c2ecf20Sopenharmony_ci/** 1538c2ecf20Sopenharmony_ci * @brief Reconfigures QM pf on the fly 1548c2ecf20Sopenharmony_ci * 1558c2ecf20Sopenharmony_ci * @param p_hwfn 1568c2ecf20Sopenharmony_ci * @param p_ptt 1578c2ecf20Sopenharmony_ci * 1588c2ecf20Sopenharmony_ci * @return int 1598c2ecf20Sopenharmony_ci */ 1608c2ecf20Sopenharmony_ciint qed_qm_reconf(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt); 1618c2ecf20Sopenharmony_ci 1628c2ecf20Sopenharmony_ci#define QED_CXT_PF_CID (0xff) 1638c2ecf20Sopenharmony_ci 1648c2ecf20Sopenharmony_ci/** 1658c2ecf20Sopenharmony_ci * @brief qed_cxt_release - Release a cid 1668c2ecf20Sopenharmony_ci * 1678c2ecf20Sopenharmony_ci * @param p_hwfn 1688c2ecf20Sopenharmony_ci * @param cid 1698c2ecf20Sopenharmony_ci */ 1708c2ecf20Sopenharmony_civoid qed_cxt_release_cid(struct qed_hwfn *p_hwfn, u32 cid); 1718c2ecf20Sopenharmony_ci 1728c2ecf20Sopenharmony_ci/** 1738c2ecf20Sopenharmony_ci * @brief qed_cxt_release - Release a cid belonging to a vf-queue 1748c2ecf20Sopenharmony_ci * 1758c2ecf20Sopenharmony_ci * @param p_hwfn 1768c2ecf20Sopenharmony_ci * @param cid 1778c2ecf20Sopenharmony_ci * @param vfid - engine relative index. QED_CXT_PF_CID if belongs to PF 1788c2ecf20Sopenharmony_ci */ 1798c2ecf20Sopenharmony_civoid _qed_cxt_release_cid(struct qed_hwfn *p_hwfn, u32 cid, u8 vfid); 1808c2ecf20Sopenharmony_ci 1818c2ecf20Sopenharmony_ci/** 1828c2ecf20Sopenharmony_ci * @brief qed_cxt_acquire - Acquire a new cid of a specific protocol type 1838c2ecf20Sopenharmony_ci * 1848c2ecf20Sopenharmony_ci * @param p_hwfn 1858c2ecf20Sopenharmony_ci * @param type 1868c2ecf20Sopenharmony_ci * @param p_cid 1878c2ecf20Sopenharmony_ci * 1888c2ecf20Sopenharmony_ci * @return int 1898c2ecf20Sopenharmony_ci */ 1908c2ecf20Sopenharmony_ciint qed_cxt_acquire_cid(struct qed_hwfn *p_hwfn, 1918c2ecf20Sopenharmony_ci enum protocol_type type, u32 *p_cid); 1928c2ecf20Sopenharmony_ci 1938c2ecf20Sopenharmony_ci/** 1948c2ecf20Sopenharmony_ci * @brief _qed_cxt_acquire - Acquire a new cid of a specific protocol type 1958c2ecf20Sopenharmony_ci * for a vf-queue 1968c2ecf20Sopenharmony_ci * 1978c2ecf20Sopenharmony_ci * @param p_hwfn 1988c2ecf20Sopenharmony_ci * @param type 1998c2ecf20Sopenharmony_ci * @param p_cid 2008c2ecf20Sopenharmony_ci * @param vfid - engine relative index. QED_CXT_PF_CID if belongs to PF 2018c2ecf20Sopenharmony_ci * 2028c2ecf20Sopenharmony_ci * @return int 2038c2ecf20Sopenharmony_ci */ 2048c2ecf20Sopenharmony_ciint _qed_cxt_acquire_cid(struct qed_hwfn *p_hwfn, 2058c2ecf20Sopenharmony_ci enum protocol_type type, u32 *p_cid, u8 vfid); 2068c2ecf20Sopenharmony_ci 2078c2ecf20Sopenharmony_ciint qed_cxt_dynamic_ilt_alloc(struct qed_hwfn *p_hwfn, 2088c2ecf20Sopenharmony_ci enum qed_cxt_elem_type elem_type, u32 iid); 2098c2ecf20Sopenharmony_ciu32 qed_cxt_get_proto_tid_count(struct qed_hwfn *p_hwfn, 2108c2ecf20Sopenharmony_ci enum protocol_type type); 2118c2ecf20Sopenharmony_ciu32 qed_cxt_get_proto_cid_start(struct qed_hwfn *p_hwfn, 2128c2ecf20Sopenharmony_ci enum protocol_type type); 2138c2ecf20Sopenharmony_ciint qed_cxt_free_proto_ilt(struct qed_hwfn *p_hwfn, enum protocol_type proto); 2148c2ecf20Sopenharmony_ci 2158c2ecf20Sopenharmony_ci#define QED_CTX_WORKING_MEM 0 2168c2ecf20Sopenharmony_ci#define QED_CTX_FL_MEM 1 2178c2ecf20Sopenharmony_ciint qed_cxt_get_task_ctx(struct qed_hwfn *p_hwfn, 2188c2ecf20Sopenharmony_ci u32 tid, u8 ctx_type, void **task_ctx); 2198c2ecf20Sopenharmony_ci 2208c2ecf20Sopenharmony_ci/* Max number of connection types in HW (DQ/CDU etc.) */ 2218c2ecf20Sopenharmony_ci#define MAX_CONN_TYPES PROTOCOLID_COMMON 2228c2ecf20Sopenharmony_ci#define NUM_TASK_TYPES 2 2238c2ecf20Sopenharmony_ci#define NUM_TASK_PF_SEGMENTS 4 2248c2ecf20Sopenharmony_ci#define NUM_TASK_VF_SEGMENTS 1 2258c2ecf20Sopenharmony_ci 2268c2ecf20Sopenharmony_ci/* PF per protocl configuration object */ 2278c2ecf20Sopenharmony_ci#define TASK_SEGMENTS (NUM_TASK_PF_SEGMENTS + NUM_TASK_VF_SEGMENTS) 2288c2ecf20Sopenharmony_ci#define TASK_SEGMENT_VF (NUM_TASK_PF_SEGMENTS) 2298c2ecf20Sopenharmony_ci 2308c2ecf20Sopenharmony_cistruct qed_tid_seg { 2318c2ecf20Sopenharmony_ci u32 count; 2328c2ecf20Sopenharmony_ci u8 type; 2338c2ecf20Sopenharmony_ci bool has_fl_mem; 2348c2ecf20Sopenharmony_ci}; 2358c2ecf20Sopenharmony_ci 2368c2ecf20Sopenharmony_cistruct qed_conn_type_cfg { 2378c2ecf20Sopenharmony_ci u32 cid_count; 2388c2ecf20Sopenharmony_ci u32 cids_per_vf; 2398c2ecf20Sopenharmony_ci struct qed_tid_seg tid_seg[TASK_SEGMENTS]; 2408c2ecf20Sopenharmony_ci}; 2418c2ecf20Sopenharmony_ci 2428c2ecf20Sopenharmony_ci/* ILT Client configuration, 2438c2ecf20Sopenharmony_ci * Per connection type (protocol) resources (cids, tis, vf cids etc.) 2448c2ecf20Sopenharmony_ci * 1 - for connection context (CDUC) and for each task context we need two 2458c2ecf20Sopenharmony_ci * values, for regular task context and for force load memory 2468c2ecf20Sopenharmony_ci */ 2478c2ecf20Sopenharmony_ci#define ILT_CLI_PF_BLOCKS (1 + NUM_TASK_PF_SEGMENTS * 2) 2488c2ecf20Sopenharmony_ci#define ILT_CLI_VF_BLOCKS (1 + NUM_TASK_VF_SEGMENTS * 2) 2498c2ecf20Sopenharmony_ci#define CDUC_BLK (0) 2508c2ecf20Sopenharmony_ci#define SRQ_BLK (0) 2518c2ecf20Sopenharmony_ci#define CDUT_SEG_BLK(n) (1 + (u8)(n)) 2528c2ecf20Sopenharmony_ci#define CDUT_FL_SEG_BLK(n, X) (1 + (n) + NUM_TASK_ ## X ## _SEGMENTS) 2538c2ecf20Sopenharmony_ci 2548c2ecf20Sopenharmony_cistruct ilt_cfg_pair { 2558c2ecf20Sopenharmony_ci u32 reg; 2568c2ecf20Sopenharmony_ci u32 val; 2578c2ecf20Sopenharmony_ci}; 2588c2ecf20Sopenharmony_ci 2598c2ecf20Sopenharmony_cistruct qed_ilt_cli_blk { 2608c2ecf20Sopenharmony_ci u32 total_size; /* 0 means not active */ 2618c2ecf20Sopenharmony_ci u32 real_size_in_page; 2628c2ecf20Sopenharmony_ci u32 start_line; 2638c2ecf20Sopenharmony_ci u32 dynamic_line_offset; 2648c2ecf20Sopenharmony_ci u32 dynamic_line_cnt; 2658c2ecf20Sopenharmony_ci}; 2668c2ecf20Sopenharmony_ci 2678c2ecf20Sopenharmony_cistruct qed_ilt_client_cfg { 2688c2ecf20Sopenharmony_ci bool active; 2698c2ecf20Sopenharmony_ci 2708c2ecf20Sopenharmony_ci /* ILT boundaries */ 2718c2ecf20Sopenharmony_ci struct ilt_cfg_pair first; 2728c2ecf20Sopenharmony_ci struct ilt_cfg_pair last; 2738c2ecf20Sopenharmony_ci struct ilt_cfg_pair p_size; 2748c2ecf20Sopenharmony_ci 2758c2ecf20Sopenharmony_ci /* ILT client blocks for PF */ 2768c2ecf20Sopenharmony_ci struct qed_ilt_cli_blk pf_blks[ILT_CLI_PF_BLOCKS]; 2778c2ecf20Sopenharmony_ci u32 pf_total_lines; 2788c2ecf20Sopenharmony_ci 2798c2ecf20Sopenharmony_ci /* ILT client blocks for VFs */ 2808c2ecf20Sopenharmony_ci struct qed_ilt_cli_blk vf_blks[ILT_CLI_VF_BLOCKS]; 2818c2ecf20Sopenharmony_ci u32 vf_total_lines; 2828c2ecf20Sopenharmony_ci}; 2838c2ecf20Sopenharmony_ci 2848c2ecf20Sopenharmony_cistruct qed_cid_acquired_map { 2858c2ecf20Sopenharmony_ci u32 start_cid; 2868c2ecf20Sopenharmony_ci u32 max_count; 2878c2ecf20Sopenharmony_ci unsigned long *cid_map; 2888c2ecf20Sopenharmony_ci}; 2898c2ecf20Sopenharmony_ci 2908c2ecf20Sopenharmony_cistruct qed_src_t2 { 2918c2ecf20Sopenharmony_ci struct phys_mem_desc *dma_mem; 2928c2ecf20Sopenharmony_ci u32 num_pages; 2938c2ecf20Sopenharmony_ci u64 first_free; 2948c2ecf20Sopenharmony_ci u64 last_free; 2958c2ecf20Sopenharmony_ci}; 2968c2ecf20Sopenharmony_ci 2978c2ecf20Sopenharmony_cistruct qed_cxt_mngr { 2988c2ecf20Sopenharmony_ci /* Per protocl configuration */ 2998c2ecf20Sopenharmony_ci struct qed_conn_type_cfg conn_cfg[MAX_CONN_TYPES]; 3008c2ecf20Sopenharmony_ci 3018c2ecf20Sopenharmony_ci /* computed ILT structure */ 3028c2ecf20Sopenharmony_ci struct qed_ilt_client_cfg clients[MAX_ILT_CLIENTS]; 3038c2ecf20Sopenharmony_ci 3048c2ecf20Sopenharmony_ci /* Task type sizes */ 3058c2ecf20Sopenharmony_ci u32 task_type_size[NUM_TASK_TYPES]; 3068c2ecf20Sopenharmony_ci 3078c2ecf20Sopenharmony_ci /* total number of VFs for this hwfn - 3088c2ecf20Sopenharmony_ci * ALL VFs are symmetric in terms of HW resources 3098c2ecf20Sopenharmony_ci */ 3108c2ecf20Sopenharmony_ci u32 vf_count; 3118c2ecf20Sopenharmony_ci u32 first_vf_in_pf; 3128c2ecf20Sopenharmony_ci 3138c2ecf20Sopenharmony_ci /* Acquired CIDs */ 3148c2ecf20Sopenharmony_ci struct qed_cid_acquired_map acquired[MAX_CONN_TYPES]; 3158c2ecf20Sopenharmony_ci 3168c2ecf20Sopenharmony_ci struct qed_cid_acquired_map 3178c2ecf20Sopenharmony_ci acquired_vf[MAX_CONN_TYPES][MAX_NUM_VFS]; 3188c2ecf20Sopenharmony_ci 3198c2ecf20Sopenharmony_ci /* ILT shadow table */ 3208c2ecf20Sopenharmony_ci struct phys_mem_desc *ilt_shadow; 3218c2ecf20Sopenharmony_ci u32 ilt_shadow_size; 3228c2ecf20Sopenharmony_ci u32 pf_start_line; 3238c2ecf20Sopenharmony_ci 3248c2ecf20Sopenharmony_ci /* Mutex for a dynamic ILT allocation */ 3258c2ecf20Sopenharmony_ci struct mutex mutex; 3268c2ecf20Sopenharmony_ci 3278c2ecf20Sopenharmony_ci /* SRC T2 */ 3288c2ecf20Sopenharmony_ci struct qed_src_t2 src_t2; 3298c2ecf20Sopenharmony_ci 3308c2ecf20Sopenharmony_ci /* total number of SRQ's for this hwfn */ 3318c2ecf20Sopenharmony_ci u32 srq_count; 3328c2ecf20Sopenharmony_ci u32 xrc_srq_count; 3338c2ecf20Sopenharmony_ci 3348c2ecf20Sopenharmony_ci /* Maximal number of L2 steering filters */ 3358c2ecf20Sopenharmony_ci u32 arfs_count; 3368c2ecf20Sopenharmony_ci 3378c2ecf20Sopenharmony_ci u8 task_type_id; 3388c2ecf20Sopenharmony_ci u16 task_ctx_size; 3398c2ecf20Sopenharmony_ci u16 conn_ctx_size; 3408c2ecf20Sopenharmony_ci}; 3418c2ecf20Sopenharmony_ci 3428c2ecf20Sopenharmony_ciu16 qed_get_cdut_num_pf_init_pages(struct qed_hwfn *p_hwfn); 3438c2ecf20Sopenharmony_ciu16 qed_get_cdut_num_vf_init_pages(struct qed_hwfn *p_hwfn); 3448c2ecf20Sopenharmony_ciu16 qed_get_cdut_num_pf_work_pages(struct qed_hwfn *p_hwfn); 3458c2ecf20Sopenharmony_ciu16 qed_get_cdut_num_vf_work_pages(struct qed_hwfn *p_hwfn); 3468c2ecf20Sopenharmony_ci 3478c2ecf20Sopenharmony_ciu32 qed_cxt_get_ilt_page_size(struct qed_hwfn *p_hwfn, 3488c2ecf20Sopenharmony_ci enum ilt_clients ilt_client); 3498c2ecf20Sopenharmony_ci 3508c2ecf20Sopenharmony_ciu32 qed_cxt_get_total_srq_count(struct qed_hwfn *p_hwfn); 3518c2ecf20Sopenharmony_ci 3528c2ecf20Sopenharmony_ci#endif 353