1d30ea906Sjfb8856606 /* SPDX-License-Identifier: BSD-3-Clause 2d30ea906Sjfb8856606 * Copyright 2017 NXP 3d30ea906Sjfb8856606 */ 4d30ea906Sjfb8856606 5d30ea906Sjfb8856606 #ifndef __DPAA_EVENTDEV_H__ 6d30ea906Sjfb8856606 #define __DPAA_EVENTDEV_H__ 7d30ea906Sjfb8856606 8d30ea906Sjfb8856606 #include <rte_eventdev_pmd.h> 9d30ea906Sjfb8856606 #include <rte_eventdev_pmd_vdev.h> 10d30ea906Sjfb8856606 #include <rte_atomic.h> 11d30ea906Sjfb8856606 #include <rte_per_lcore.h> 12d30ea906Sjfb8856606 13d30ea906Sjfb8856606 #define EVENTDEV_NAME_DPAA_PMD event_dpaa1 14d30ea906Sjfb8856606 15d30ea906Sjfb8856606 #define DPAA_EVENT_MAX_PORTS 4 16d30ea906Sjfb8856606 #define DPAA_EVENT_MAX_QUEUES 8 17d30ea906Sjfb8856606 #define DPAA_EVENT_MIN_DEQUEUE_TIMEOUT 1 18d30ea906Sjfb8856606 #define DPAA_EVENT_MAX_DEQUEUE_TIMEOUT (UINT32_MAX - 1) 19d30ea906Sjfb8856606 #define DPAA_EVENT_MAX_QUEUE_FLOWS 2048 20d30ea906Sjfb8856606 #define DPAA_EVENT_MAX_QUEUE_PRIORITY_LEVELS 8 21d30ea906Sjfb8856606 #define DPAA_EVENT_MAX_EVENT_PRIORITY_LEVELS 0 22d30ea906Sjfb8856606 #define DPAA_EVENT_MAX_EVENT_PORT RTE_MIN(RTE_MAX_LCORE, INT8_MAX) 23d30ea906Sjfb8856606 #define DPAA_EVENT_MAX_PORT_DEQUEUE_DEPTH 8 24d30ea906Sjfb8856606 #define DPAA_EVENT_PORT_DEQUEUE_TIMEOUT_NS 100000UL 25d30ea906Sjfb8856606 #define DPAA_EVENT_PORT_DEQUEUE_TIMEOUT_INVALID ((uint64_t)-1) 26d30ea906Sjfb8856606 #define DPAA_EVENT_MAX_PORT_ENQUEUE_DEPTH 1 27d30ea906Sjfb8856606 #define DPAA_EVENT_MAX_NUM_EVENTS (INT32_MAX - 1) 28d30ea906Sjfb8856606 29d30ea906Sjfb8856606 #define DPAA_EVENT_DEV_CAP \ 30d30ea906Sjfb8856606 do { \ 31d30ea906Sjfb8856606 RTE_EVENT_DEV_CAP_DISTRIBUTED_SCHED | \ 32d30ea906Sjfb8856606 RTE_EVENT_DEV_CAP_BURST_MODE; \ 33d30ea906Sjfb8856606 } while (0) 34d30ea906Sjfb8856606 354418919fSjohnjiang #define DPAA_EVENT_QUEUE_ATOMIC_FLOWS 2048 36d30ea906Sjfb8856606 #define DPAA_EVENT_QUEUE_ORDER_SEQUENCES 2048 37d30ea906Sjfb8856606 38d30ea906Sjfb8856606 #define RTE_EVENT_ETH_RX_ADAPTER_DPAA_CAP \ 39d30ea906Sjfb8856606 (RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT | \ 40d30ea906Sjfb8856606 RTE_EVENT_ETH_RX_ADAPTER_CAP_MULTI_EVENTQ | \ 41d30ea906Sjfb8856606 RTE_EVENT_ETH_RX_ADAPTER_CAP_OVERRIDE_FLOW_ID) 42d30ea906Sjfb8856606 434418919fSjohnjiang #define RTE_EVENT_CRYPTO_ADAPTER_DPAA_CAP \ 444418919fSjohnjiang (RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_OP_NEW | \ 454418919fSjohnjiang RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_QP_EV_BIND | \ 464418919fSjohnjiang RTE_EVENT_CRYPTO_ADAPTER_CAP_SESSION_PRIVATE_DATA) 474418919fSjohnjiang 48d30ea906Sjfb8856606 struct dpaa_eventq { 49d30ea906Sjfb8856606 /* Channel Id */ 50d30ea906Sjfb8856606 uint16_t ch_id; 51d30ea906Sjfb8856606 /* Configuration provided by the user */ 52d30ea906Sjfb8856606 uint32_t event_queue_cfg; 53d30ea906Sjfb8856606 uint32_t event_queue_id; 54d30ea906Sjfb8856606 /* Event port */ 55d30ea906Sjfb8856606 void *event_port; 56d30ea906Sjfb8856606 }; 57d30ea906Sjfb8856606 58d30ea906Sjfb8856606 struct dpaa_port { 59d30ea906Sjfb8856606 struct dpaa_eventq evq_info[DPAA_EVENT_MAX_QUEUES]; 60d30ea906Sjfb8856606 uint8_t num_linked_evq; 61d30ea906Sjfb8856606 uint8_t is_port_linked; 62d30ea906Sjfb8856606 uint64_t timeout_us; 63d30ea906Sjfb8856606 }; 64d30ea906Sjfb8856606 65d30ea906Sjfb8856606 struct dpaa_eventdev { 66d30ea906Sjfb8856606 struct dpaa_eventq evq_info[DPAA_EVENT_MAX_QUEUES]; 67d30ea906Sjfb8856606 struct dpaa_port ports[DPAA_EVENT_MAX_PORTS]; 68d30ea906Sjfb8856606 uint32_t dequeue_timeout_ns; 69d30ea906Sjfb8856606 uint32_t nb_events_limit; 70d30ea906Sjfb8856606 uint8_t max_event_queues; 71d30ea906Sjfb8856606 uint8_t nb_event_queues; 72d30ea906Sjfb8856606 uint8_t nb_event_ports; 73d30ea906Sjfb8856606 uint8_t intr_mode; 74d30ea906Sjfb8856606 uint32_t nb_event_queue_flows; 75d30ea906Sjfb8856606 uint32_t nb_event_port_dequeue_depth; 76d30ea906Sjfb8856606 uint32_t nb_event_port_enqueue_depth; 77d30ea906Sjfb8856606 uint32_t event_dev_cfg; 78d30ea906Sjfb8856606 }; 79*2d9fd380Sjfb8856606 80*2d9fd380Sjfb8856606 #define DPAA_EVENTDEV_LOG(level, fmt, args...) \ 81*2d9fd380Sjfb8856606 rte_log(RTE_LOG_ ## level, dpaa_logtype_eventdev, "%s(): " fmt "\n", \ 82*2d9fd380Sjfb8856606 __func__, ##args) 83*2d9fd380Sjfb8856606 84*2d9fd380Sjfb8856606 #define EVENTDEV_INIT_FUNC_TRACE() DPAA_EVENTDEV_LOG(DEBUG, " >>") 85*2d9fd380Sjfb8856606 86*2d9fd380Sjfb8856606 #define DPAA_EVENTDEV_DEBUG(fmt, args...) \ 87*2d9fd380Sjfb8856606 DPAA_EVENTDEV_LOG(DEBUG, fmt, ## args) 88*2d9fd380Sjfb8856606 #define DPAA_EVENTDEV_ERR(fmt, args...) \ 89*2d9fd380Sjfb8856606 DPAA_EVENTDEV_LOG(ERR, fmt, ## args) 90*2d9fd380Sjfb8856606 #define DPAA_EVENTDEV_INFO(fmt, args...) \ 91*2d9fd380Sjfb8856606 DPAA_EVENTDEV_LOG(INFO, fmt, ## args) 92*2d9fd380Sjfb8856606 #define DPAA_EVENTDEV_WARN(fmt, args...) \ 93*2d9fd380Sjfb8856606 DPAA_EVENTDEV_LOG(WARNING, fmt, ## args) 94*2d9fd380Sjfb8856606 95d30ea906Sjfb8856606 #endif /* __DPAA_EVENTDEV_H__ */ 96