examples/l2fwd-event: setup service core
[dpdk.git] / examples / l2fwd-event / l2fwd_event.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(C) 2019 Marvell International Ltd.
3  */
4
5 #ifndef __L2FWD_EVENT_H__
6 #define __L2FWD_EVENT_H__
7
8 #include <rte_common.h>
9 #include <rte_event_eth_rx_adapter.h>
10 #include <rte_event_eth_tx_adapter.h>
11 #include <rte_mbuf.h>
12 #include <rte_spinlock.h>
13
14 #include "l2fwd_common.h"
15
16 typedef uint32_t (*event_device_setup_cb)(struct l2fwd_resources *rsrc);
17 typedef void (*event_port_setup_cb)(struct l2fwd_resources *rsrc);
18 typedef void (*event_queue_setup_cb)(struct l2fwd_resources *rsrc,
19                                      uint32_t event_queue_cfg);
20 typedef void (*adapter_setup_cb)(struct l2fwd_resources *rsrc);
21
22 struct event_queues {
23         uint8_t *event_q_id;
24         uint8_t nb_queues;
25 };
26
27 struct event_ports {
28         uint8_t *event_p_id;
29         uint8_t nb_ports;
30         rte_spinlock_t lock;
31 };
32
33 struct event_rx_adptr {
34         uint32_t service_id;
35         uint8_t nb_rx_adptr;
36         uint8_t *rx_adptr;
37 };
38
39 struct event_tx_adptr {
40         uint32_t service_id;
41         uint8_t nb_tx_adptr;
42         uint8_t *tx_adptr;
43 };
44
45 struct event_setup_ops {
46         event_device_setup_cb event_device_setup;
47         event_queue_setup_cb event_queue_setup;
48         event_port_setup_cb event_port_setup;
49         adapter_setup_cb adapter_setup;
50 };
51
52 struct l2fwd_event_resources {
53         uint8_t tx_mode_q;
54         uint8_t deq_depth;
55         uint8_t has_burst;
56         uint8_t event_d_id;
57         uint8_t disable_implicit_release;
58         struct event_ports evp;
59         struct event_queues evq;
60         struct event_setup_ops ops;
61         struct event_rx_adptr rx_adptr;
62         struct event_tx_adptr tx_adptr;
63         struct rte_event_port_conf def_p_conf;
64 };
65
66 void l2fwd_event_resource_setup(struct l2fwd_resources *rsrc);
67 void l2fwd_event_set_generic_ops(struct event_setup_ops *ops);
68 void l2fwd_event_set_internal_port_ops(struct event_setup_ops *ops);
69 void l2fwd_event_service_setup(struct l2fwd_resources *rsrc);
70
71 #endif /* __L2FWD_EVENT_H__ */