1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(C) 2019 Marvell International Ltd.
8 #include <rte_atomic.h>
9 #include <rte_cycles.h>
10 #include <rte_ethdev.h>
11 #include <rte_eventdev.h>
12 #include <rte_event_eth_rx_adapter.h>
13 #include <rte_event_eth_tx_adapter.h>
14 #include <rte_lcore.h>
15 #include <rte_malloc.h>
16 #include <rte_spinlock.h>
18 #include "l2fwd_event.h"
21 l2fwd_event_capability_setup(struct l2fwd_event_resources *evt_rsrc)
27 RTE_ETH_FOREACH_DEV(i) {
28 ret = rte_event_eth_tx_adapter_caps_get(0, i, &caps);
30 rte_panic("Invalid capability for Tx adptr port %d\n",
33 evt_rsrc->tx_mode_q |= !(caps &
34 RTE_EVENT_ETH_TX_ADAPTER_CAP_INTERNAL_PORT);
37 if (evt_rsrc->tx_mode_q)
38 l2fwd_event_set_generic_ops(&evt_rsrc->ops);
40 l2fwd_event_set_internal_port_ops(&evt_rsrc->ops);
44 l2fwd_event_resource_setup(struct l2fwd_resources *rsrc)
46 struct l2fwd_event_resources *evt_rsrc;
47 uint32_t event_queue_cfg;
49 if (!rte_event_dev_count())
50 rte_panic("No Eventdev found\n");
52 evt_rsrc = rte_zmalloc("l2fwd_event",
53 sizeof(struct l2fwd_event_resources), 0);
55 rte_panic("Failed to allocate memory\n");
57 rsrc->evt_rsrc = evt_rsrc;
59 /* Setup eventdev capability callbacks */
60 l2fwd_event_capability_setup(evt_rsrc);
62 /* Event device configuration */
63 event_queue_cfg = evt_rsrc->ops.event_device_setup(rsrc);
65 /* Event queue configuration */
66 evt_rsrc->ops.event_queue_setup(rsrc, event_queue_cfg);
68 /* Event port configuration */
69 evt_rsrc->ops.event_port_setup(rsrc);
71 /* Rx/Tx adapters configuration */
72 evt_rsrc->ops.adapter_setup(rsrc);