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