examples/l3fwd: split pipelines based on capability
[dpdk.git] / examples / l3fwd / l3fwd_event.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(C) 2019 Marvell International Ltd.
3  */
4
5 #ifndef __L3FWD_EVENTDEV_H__
6 #define __L3FWD_EVENTDEV_H__
7
8 #include <rte_common.h>
9 #include <rte_eventdev.h>
10 #include <rte_event_eth_tx_adapter.h>
11 #include <rte_spinlock.h>
12
13 #include "l3fwd.h"
14
15 typedef uint32_t (*event_device_setup_cb)(void);
16 typedef void (*event_queue_setup_cb)(uint32_t event_queue_cfg);
17 typedef void (*event_port_setup_cb)(void);
18 typedef void (*adapter_setup_cb)(void);
19 typedef int (*event_loop_cb)(void *);
20
21 struct l3fwd_event_setup_ops {
22         event_device_setup_cb event_device_setup;
23         event_queue_setup_cb event_queue_setup;
24         event_port_setup_cb event_port_setup;
25         adapter_setup_cb adapter_setup;
26         event_loop_cb lpm_event_loop;
27         event_loop_cb em_event_loop;
28 };
29
30 struct l3fwd_event_resources {
31         struct l3fwd_event_setup_ops ops;
32         uint8_t sched_type;
33         uint8_t tx_mode_q;
34         uint8_t enabled;
35         uint8_t eth_rx_queues;
36 };
37
38 struct l3fwd_event_resources *l3fwd_get_eventdev_rsrc(void);
39 void l3fwd_event_resource_setup(void);
40 void l3fwd_event_set_generic_ops(struct l3fwd_event_setup_ops *ops);
41 void l3fwd_event_set_internal_port_ops(struct l3fwd_event_setup_ops *ops);
42
43 #endif /* __L3FWD_EVENTDEV_H__ */