xref: /dpdk/examples/l2fwd-event/l2fwd_event.h (revision 080f57bceca4eff7048dc990ec03404d233b885e)
11b2143aaSPavan Nikhilesh /* SPDX-License-Identifier: BSD-3-Clause
21b2143aaSPavan Nikhilesh  * Copyright(C) 2019 Marvell International Ltd.
31b2143aaSPavan Nikhilesh  */
41b2143aaSPavan Nikhilesh 
51b2143aaSPavan Nikhilesh #ifndef __L2FWD_EVENT_H__
61b2143aaSPavan Nikhilesh #define __L2FWD_EVENT_H__
71b2143aaSPavan Nikhilesh 
81b2143aaSPavan Nikhilesh #include <rte_common.h>
91b2143aaSPavan Nikhilesh #include <rte_event_eth_rx_adapter.h>
101b2143aaSPavan Nikhilesh #include <rte_event_eth_tx_adapter.h>
111b2143aaSPavan Nikhilesh #include <rte_mbuf.h>
121b2143aaSPavan Nikhilesh #include <rte_spinlock.h>
131b2143aaSPavan Nikhilesh 
141b2143aaSPavan Nikhilesh #include "l2fwd_common.h"
151b2143aaSPavan Nikhilesh 
166ab87600SSunil Kumar Kori typedef uint32_t (*event_device_setup_cb)(struct l2fwd_resources *rsrc);
173b5476dbSSunil Kumar Kori typedef void (*event_port_setup_cb)(struct l2fwd_resources *rsrc);
183b5476dbSSunil Kumar Kori typedef void (*event_queue_setup_cb)(struct l2fwd_resources *rsrc,
193b5476dbSSunil Kumar Kori 				     uint32_t event_queue_cfg);
2050f05aa6SSunil Kumar Kori typedef void (*adapter_setup_cb)(struct l2fwd_resources *rsrc);
21*080f57bcSPavan Nikhilesh typedef void (*event_loop_cb)(struct l2fwd_resources *rsrc);
226ab87600SSunil Kumar Kori 
236ab87600SSunil Kumar Kori struct event_queues {
243b5476dbSSunil Kumar Kori 	uint8_t *event_q_id;
256ab87600SSunil Kumar Kori 	uint8_t	nb_queues;
266ab87600SSunil Kumar Kori };
276ab87600SSunil Kumar Kori 
286ab87600SSunil Kumar Kori struct event_ports {
293b5476dbSSunil Kumar Kori 	uint8_t *event_p_id;
306ab87600SSunil Kumar Kori 	uint8_t	nb_ports;
313b5476dbSSunil Kumar Kori 	rte_spinlock_t lock;
326ab87600SSunil Kumar Kori };
336ab87600SSunil Kumar Kori 
3450f05aa6SSunil Kumar Kori struct event_rx_adptr {
3550f05aa6SSunil Kumar Kori 	uint32_t service_id;
3650f05aa6SSunil Kumar Kori 	uint8_t	nb_rx_adptr;
3750f05aa6SSunil Kumar Kori 	uint8_t *rx_adptr;
3850f05aa6SSunil Kumar Kori };
3950f05aa6SSunil Kumar Kori 
4050f05aa6SSunil Kumar Kori struct event_tx_adptr {
4150f05aa6SSunil Kumar Kori 	uint32_t service_id;
4250f05aa6SSunil Kumar Kori 	uint8_t	nb_tx_adptr;
4350f05aa6SSunil Kumar Kori 	uint8_t *tx_adptr;
4450f05aa6SSunil Kumar Kori };
4550f05aa6SSunil Kumar Kori 
4669de9488SSunil Kumar Kori struct event_setup_ops {
476ab87600SSunil Kumar Kori 	event_device_setup_cb event_device_setup;
483b5476dbSSunil Kumar Kori 	event_queue_setup_cb event_queue_setup;
493b5476dbSSunil Kumar Kori 	event_port_setup_cb event_port_setup;
5050f05aa6SSunil Kumar Kori 	adapter_setup_cb adapter_setup;
51*080f57bcSPavan Nikhilesh 	event_loop_cb l2fwd_event_loop;
5269de9488SSunil Kumar Kori };
5369de9488SSunil Kumar Kori 
541b2143aaSPavan Nikhilesh struct l2fwd_event_resources {
5569de9488SSunil Kumar Kori 	uint8_t tx_mode_q;
563b5476dbSSunil Kumar Kori 	uint8_t deq_depth;
576ab87600SSunil Kumar Kori 	uint8_t has_burst;
586ab87600SSunil Kumar Kori 	uint8_t event_d_id;
596ab87600SSunil Kumar Kori 	uint8_t disable_implicit_release;
606ab87600SSunil Kumar Kori 	struct event_ports evp;
616ab87600SSunil Kumar Kori 	struct event_queues evq;
6269de9488SSunil Kumar Kori 	struct event_setup_ops ops;
6350f05aa6SSunil Kumar Kori 	struct event_rx_adptr rx_adptr;
6450f05aa6SSunil Kumar Kori 	struct event_tx_adptr tx_adptr;
653b5476dbSSunil Kumar Kori 	struct rte_event_port_conf def_p_conf;
661b2143aaSPavan Nikhilesh };
671b2143aaSPavan Nikhilesh 
681b2143aaSPavan Nikhilesh void l2fwd_event_resource_setup(struct l2fwd_resources *rsrc);
6969de9488SSunil Kumar Kori void l2fwd_event_set_generic_ops(struct event_setup_ops *ops);
7069de9488SSunil Kumar Kori void l2fwd_event_set_internal_port_ops(struct event_setup_ops *ops);
71bcb6f841SPavan Nikhilesh void l2fwd_event_service_setup(struct l2fwd_resources *rsrc);
721b2143aaSPavan Nikhilesh 
731b2143aaSPavan Nikhilesh #endif /* __L2FWD_EVENT_H__ */
74