numam-dpdk/lib/eventdev/rte_eventdev_core.h
Mattias Rönnblom 54f17843a8 eventdev: add port maintenance API
Extend Eventdev API to allow for event devices which require various
forms of internal processing to happen, even when events are not
enqueued to or dequeued from a port.

Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
Tested-by: Richard Eklycke <richard.eklycke@ericsson.com>
Tested-by: Liron Himi <lironh@marvell.com>
2021-11-04 13:27:54 +01:00

78 lines
2.4 KiB
C

/* SPDX-License-Identifier: BSD-3-Clause
* Copyright(c) 2016-2018 Intel Corporation.
* Copyright(C) 2021 Marvell.
* Copyright 2016 NXP
* All rights reserved.
*/
#ifndef _RTE_EVENTDEV_CORE_H_
#define _RTE_EVENTDEV_CORE_H_
#ifdef __cplusplus
extern "C" {
#endif
typedef uint16_t (*event_enqueue_t)(void *port, const struct rte_event *ev);
/**< @internal Enqueue event on port of a device */
typedef uint16_t (*event_enqueue_burst_t)(void *port,
const struct rte_event ev[],
uint16_t nb_events);
/**< @internal Enqueue burst of events on port of a device */
typedef uint16_t (*event_dequeue_t)(void *port, struct rte_event *ev,
uint64_t timeout_ticks);
/**< @internal Dequeue event from port of a device */
typedef uint16_t (*event_dequeue_burst_t)(void *port, struct rte_event ev[],
uint16_t nb_events,
uint64_t timeout_ticks);
/**< @internal Dequeue burst of events from port of a device */
typedef void (*event_maintain_t)(void *port, int op);
/**< @internal Maintains a port */
typedef uint16_t (*event_tx_adapter_enqueue_t)(void *port,
struct rte_event ev[],
uint16_t nb_events);
/**< @internal Enqueue burst of events on port of a device */
typedef uint16_t (*event_crypto_adapter_enqueue_t)(void *port,
struct rte_event ev[],
uint16_t nb_events);
/**< @internal Enqueue burst of events on crypto adapter */
struct rte_event_fp_ops {
void **data;
/**< points to array of internal port data pointers */
event_enqueue_t enqueue;
/**< PMD enqueue function. */
event_enqueue_burst_t enqueue_burst;
/**< PMD enqueue burst function. */
event_enqueue_burst_t enqueue_new_burst;
/**< PMD enqueue burst new function. */
event_enqueue_burst_t enqueue_forward_burst;
/**< PMD enqueue burst fwd function. */
event_dequeue_t dequeue;
/**< PMD dequeue function. */
event_dequeue_burst_t dequeue_burst;
/**< PMD dequeue burst function. */
event_maintain_t maintain;
/**< PMD port maintenance function. */
event_tx_adapter_enqueue_t txa_enqueue;
/**< PMD Tx adapter enqueue function. */
event_tx_adapter_enqueue_t txa_enqueue_same_dest;
/**< PMD Tx adapter enqueue same destination function. */
event_crypto_adapter_enqueue_t ca_enqueue;
/**< PMD Crypto adapter enqueue function. */
uintptr_t reserved[6];
} __rte_cache_aligned;
extern struct rte_event_fp_ops rte_event_fp_ops[RTE_EVENT_MAX_DEVS];
#ifdef __cplusplus
}
#endif
#endif /*_RTE_EVENTDEV_CORE_H_*/