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;
48 if (!rte_event_dev_count())
49 rte_panic("No Eventdev found\n");
51 evt_rsrc = rte_zmalloc("l2fwd_event",
52 sizeof(struct l2fwd_event_resources), 0);
54 rte_panic("Failed to allocate memory\n");
56 rsrc->evt_rsrc = evt_rsrc;
58 /* Setup eventdev capability callbacks */
59 l2fwd_event_capability_setup(evt_rsrc);
61 /* Event device configuration */
62 evt_rsrc->ops.event_device_setup(rsrc);