1dcf43d24SNicolas Chautru /* SPDX-License-Identifier: BSD-3-Clause 2dcf43d24SNicolas Chautru * Copyright(c) 2022 Intel Corporation 3dcf43d24SNicolas Chautru */ 4dcf43d24SNicolas Chautru 5dcf43d24SNicolas Chautru #ifndef _RTE_ACC_COMMON_CFG_H_ 6dcf43d24SNicolas Chautru #define _RTE_ACC_COMMON_CFG_H_ 7dcf43d24SNicolas Chautru 8dcf43d24SNicolas Chautru /** 9*c1407bfaSNicolas Chautru * @file rte_acc_common_cfg.h 10dcf43d24SNicolas Chautru * 11*c1407bfaSNicolas Chautru * Functions for configuring ACC HW, exposed directly to applications. 12dcf43d24SNicolas Chautru * Configuration related to encoding/decoding is done through the 13dcf43d24SNicolas Chautru * librte_bbdev library. 14dcf43d24SNicolas Chautru * 15dcf43d24SNicolas Chautru * @warning 16dcf43d24SNicolas Chautru * @b EXPERIMENTAL: this API may change without prior notice 17dcf43d24SNicolas Chautru */ 18dcf43d24SNicolas Chautru 19dcf43d24SNicolas Chautru #include <stdint.h> 20dcf43d24SNicolas Chautru #include <stdbool.h> 21dcf43d24SNicolas Chautru 22dcf43d24SNicolas Chautru #ifdef __cplusplus 23dcf43d24SNicolas Chautru extern "C" { 24dcf43d24SNicolas Chautru #endif 25dcf43d24SNicolas Chautru 26*c1407bfaSNicolas Chautru /**< Maximum number of Virtual Functions ACC may support */ 27dcf43d24SNicolas Chautru #define RTE_ACC_NUM_VFS 64 28dcf43d24SNicolas Chautru 29dcf43d24SNicolas Chautru /** 30*c1407bfaSNicolas Chautru * Definition of Queue Topology for ACC Configuration 31dcf43d24SNicolas Chautru * Some level of details is abstracted out to expose a clean interface 32dcf43d24SNicolas Chautru * given that comprehensive flexibility is not required 33dcf43d24SNicolas Chautru */ 34dcf43d24SNicolas Chautru struct rte_acc_queue_topology { 35dcf43d24SNicolas Chautru /** Number of QGroups in incremental order of priority */ 36dcf43d24SNicolas Chautru uint16_t num_qgroups; 37dcf43d24SNicolas Chautru /** 38dcf43d24SNicolas Chautru * All QGroups have the same number of AQs here. 39dcf43d24SNicolas Chautru * Note : Could be made a 16-array if more flexibility is really 40dcf43d24SNicolas Chautru * required 41dcf43d24SNicolas Chautru */ 42dcf43d24SNicolas Chautru uint16_t num_aqs_per_groups; 43dcf43d24SNicolas Chautru /** 44dcf43d24SNicolas Chautru * Depth of the AQs is the same of all QGroups here. Log2 Enum : 2^N 45dcf43d24SNicolas Chautru * Note : Could be made a 16-array if more flexibility is really 46dcf43d24SNicolas Chautru * required 47dcf43d24SNicolas Chautru */ 48dcf43d24SNicolas Chautru uint16_t aq_depth_log2; 49dcf43d24SNicolas Chautru /** 50dcf43d24SNicolas Chautru * Index of the first Queue Group Index - assuming contiguity 51dcf43d24SNicolas Chautru * Initialized as -1 52dcf43d24SNicolas Chautru */ 53dcf43d24SNicolas Chautru int8_t first_qgroup_index; 54dcf43d24SNicolas Chautru }; 55dcf43d24SNicolas Chautru 56dcf43d24SNicolas Chautru /** 57*c1407bfaSNicolas Chautru * Definition of Arbitration related parameters for ACC Configuration 58dcf43d24SNicolas Chautru */ 59dcf43d24SNicolas Chautru struct rte_acc_arbitration { 60dcf43d24SNicolas Chautru /** Default Weight for VF Fairness Arbitration */ 61dcf43d24SNicolas Chautru uint16_t round_robin_weight; 62dcf43d24SNicolas Chautru uint32_t gbr_threshold1; /**< Guaranteed Bitrate Threshold 1 */ 63dcf43d24SNicolas Chautru uint32_t gbr_threshold2; /**< Guaranteed Bitrate Threshold 2 */ 64dcf43d24SNicolas Chautru }; 65dcf43d24SNicolas Chautru 66dcf43d24SNicolas Chautru /** 67*c1407bfaSNicolas Chautru * Structure to pass ACC configuration. 68dcf43d24SNicolas Chautru * Note: all VF Bundles will have the same configuration. 69dcf43d24SNicolas Chautru */ 70dcf43d24SNicolas Chautru struct rte_acc_conf { 71dcf43d24SNicolas Chautru bool pf_mode_en; /**< 1 if PF is used for dataplane, 0 for VFs */ 72dcf43d24SNicolas Chautru /** 1 if input '1' bit is represented by a positive LLR value, 0 if '1' 73dcf43d24SNicolas Chautru * bit is represented by a negative value. 74dcf43d24SNicolas Chautru */ 75dcf43d24SNicolas Chautru bool input_pos_llr_1_bit; 76dcf43d24SNicolas Chautru /** 1 if output '1' bit is represented by a positive value, 0 if '1' 77dcf43d24SNicolas Chautru * bit is represented by a negative value. 78dcf43d24SNicolas Chautru */ 79dcf43d24SNicolas Chautru bool output_pos_llr_1_bit; 80dcf43d24SNicolas Chautru uint16_t num_vf_bundles; /**< Number of VF bundles to setup */ 81dcf43d24SNicolas Chautru /** Queue topology for each operation type */ 82dcf43d24SNicolas Chautru struct rte_acc_queue_topology q_ul_4g; 83dcf43d24SNicolas Chautru struct rte_acc_queue_topology q_dl_4g; 84dcf43d24SNicolas Chautru struct rte_acc_queue_topology q_ul_5g; 85dcf43d24SNicolas Chautru struct rte_acc_queue_topology q_dl_5g; 86dcf43d24SNicolas Chautru struct rte_acc_queue_topology q_fft; 87dcf43d24SNicolas Chautru struct rte_acc_queue_topology q_mld; 88dcf43d24SNicolas Chautru /** Arbitration configuration for each operation type */ 89dcf43d24SNicolas Chautru struct rte_acc_arbitration arb_ul_4g[RTE_ACC_NUM_VFS]; 90dcf43d24SNicolas Chautru struct rte_acc_arbitration arb_dl_4g[RTE_ACC_NUM_VFS]; 91dcf43d24SNicolas Chautru struct rte_acc_arbitration arb_ul_5g[RTE_ACC_NUM_VFS]; 92dcf43d24SNicolas Chautru struct rte_acc_arbitration arb_dl_5g[RTE_ACC_NUM_VFS]; 93dcf43d24SNicolas Chautru struct rte_acc_arbitration arb_fft[RTE_ACC_NUM_VFS]; 94dcf43d24SNicolas Chautru struct rte_acc_arbitration arb_mld[RTE_ACC_NUM_VFS]; 95dcf43d24SNicolas Chautru }; 96dcf43d24SNicolas Chautru 97dcf43d24SNicolas Chautru #ifdef __cplusplus 98dcf43d24SNicolas Chautru } 99dcf43d24SNicolas Chautru #endif 100dcf43d24SNicolas Chautru 101dcf43d24SNicolas Chautru #endif /* _RTE_ACC_COMMON_CFG_H_ */ 102