1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(C) 2021 Marvell.
5 #include "cnxk_eventdev.h"
8 cnxk_sso_info_get(struct cnxk_sso_evdev *dev,
9 struct rte_event_dev_info *dev_info)
12 dev_info->min_dequeue_timeout_ns = dev->min_dequeue_timeout_ns;
13 dev_info->max_dequeue_timeout_ns = dev->max_dequeue_timeout_ns;
14 dev_info->max_event_queues = dev->max_event_queues;
15 dev_info->max_event_queue_flows = (1ULL << 20);
16 dev_info->max_event_queue_priority_levels = 8;
17 dev_info->max_event_priority_levels = 1;
18 dev_info->max_event_ports = dev->max_event_ports;
19 dev_info->max_event_port_dequeue_depth = 1;
20 dev_info->max_event_port_enqueue_depth = 1;
21 dev_info->max_num_events = dev->max_num_events;
22 dev_info->event_dev_cap = RTE_EVENT_DEV_CAP_QUEUE_QOS |
23 RTE_EVENT_DEV_CAP_DISTRIBUTED_SCHED |
24 RTE_EVENT_DEV_CAP_QUEUE_ALL_TYPES |
25 RTE_EVENT_DEV_CAP_RUNTIME_PORT_LINK |
26 RTE_EVENT_DEV_CAP_MULTIPLE_QUEUE_PORT |
27 RTE_EVENT_DEV_CAP_NONSEQ_MODE |
28 RTE_EVENT_DEV_CAP_CARRY_FLOW_ID;
32 cnxk_sso_init(struct rte_eventdev *event_dev)
34 const struct rte_memzone *mz = NULL;
35 struct rte_pci_device *pci_dev;
36 struct cnxk_sso_evdev *dev;
39 mz = rte_memzone_reserve(CNXK_SSO_MZ_NAME, sizeof(uint64_t),
42 plt_err("Failed to create eventdev memzone");
46 dev = cnxk_sso_pmd_priv(event_dev);
47 pci_dev = container_of(event_dev->dev, struct rte_pci_device, device);
48 dev->sso.pci_dev = pci_dev;
50 *(uint64_t *)mz->addr = (uint64_t)dev;
52 /* Initialize the base cnxk_dev object */
53 rc = roc_sso_dev_init(&dev->sso);
55 plt_err("Failed to initialize RoC SSO rc=%d", rc);
59 dev->is_timeout_deq = 0;
60 dev->min_dequeue_timeout_ns = USEC2NSEC(1);
61 dev->max_dequeue_timeout_ns = USEC2NSEC(0x3FF);
62 dev->max_num_events = -1;
63 dev->nb_event_queues = 0;
64 dev->nb_event_ports = 0;
74 cnxk_sso_fini(struct rte_eventdev *event_dev)
76 struct cnxk_sso_evdev *dev = cnxk_sso_pmd_priv(event_dev);
78 /* For secondary processes, nothing to be done */
79 if (rte_eal_process_type() != RTE_PROC_PRIMARY)
82 roc_sso_rsrc_fini(&dev->sso);
83 roc_sso_dev_fini(&dev->sso);
89 cnxk_sso_remove(struct rte_pci_device *pci_dev)
91 return rte_event_pmd_pci_remove(pci_dev, cnxk_sso_fini);