From: Bruce Richardson Date: Fri, 29 Jan 2021 16:48:20 +0000 (+0000) Subject: eventdev: make driver-only headers private X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=2518704288342eb855a9e43dc3abd41ba1b9c98f;p=dpdk.git eventdev: make driver-only headers private The rte_eventdev_pmd*.h files are for drivers only and should be private to DPDK, and not installed for app use. Signed-off-by: Bruce Richardson --- diff --git a/doc/guides/rel_notes/release_21_02.rst b/doc/guides/rel_notes/release_21_02.rst index c36b9e45b5..d26e581563 100644 --- a/doc/guides/rel_notes/release_21_02.rst +++ b/doc/guides/rel_notes/release_21_02.rst @@ -157,6 +157,12 @@ Removed Items ``ethdev_vdev.h`` and ``ethdev_pci.h`` respectively in the source tree, to reflect the fact that they are non-public headers. +* The internal header files ``rte_eventdev_pmd.h``, ``rte_eventdev_pmd_vdev.h`` + and ``rte_eventdev_pmd_pci.h`` are no longer installed as part of the DPDK + ``ninja install`` action and are renamed to ``eventdev_pmd.h``, + ``eventdev_pmd_vdev.h`` and ``eventdev_pmd_pci.h`` respectively in the source + tree, to reflect the fact that they are non-public headers. + * Removed support for NetXtreme devices belonging to ``BCM573xx and BCM5740x`` families. Specifically the support for the following Broadcom PCI device IDs ``0x16c8, 0x16c9, 0x16ca, 0x16ce, 0x16cf, 0x16df, 0x16d0,`` diff --git a/drivers/event/dlb/dlb.c b/drivers/event/dlb/dlb.c index a65f70882f..64e6df7373 100644 --- a/drivers/event/dlb/dlb.c +++ b/drivers/event/dlb/dlb.c @@ -31,7 +31,7 @@ #include #include -#include +#include #include "dlb_priv.h" #include "dlb_iface.h" diff --git a/drivers/event/dlb/dlb_priv.h b/drivers/event/dlb/dlb_priv.h index 58ff4287df..272e17482f 100644 --- a/drivers/event/dlb/dlb_priv.h +++ b/drivers/event/dlb/dlb_priv.h @@ -10,8 +10,8 @@ #include #include -#include -#include +#include +#include #include #include "dlb_user.h" diff --git a/drivers/event/dlb/rte_pmd_dlb.c b/drivers/event/dlb/rte_pmd_dlb.c index bc802d381a..8f56dc306a 100644 --- a/drivers/event/dlb/rte_pmd_dlb.c +++ b/drivers/event/dlb/rte_pmd_dlb.c @@ -3,7 +3,7 @@ */ #include "rte_eventdev.h" -#include "rte_eventdev_pmd.h" +#include "eventdev_pmd.h" #include "rte_pmd_dlb.h" #include "dlb_priv.h" #include "dlb_inline_fns.h" diff --git a/drivers/event/dlb2/dlb2.c b/drivers/event/dlb2/dlb2.c index 5782960158..b28ec58bfb 100644 --- a/drivers/event/dlb2/dlb2.c +++ b/drivers/event/dlb2/dlb2.c @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/drivers/event/dlb2/pf/dlb2_pf.c b/drivers/event/dlb2/pf/dlb2_pf.c index 632c4e099f..1a7d8fc294 100644 --- a/drivers/event/dlb2/pf/dlb2_pf.c +++ b/drivers/event/dlb2/pf/dlb2_pf.c @@ -26,8 +26,8 @@ #include #include #include -#include -#include +#include +#include #include #include diff --git a/drivers/event/dlb2/rte_pmd_dlb2.c b/drivers/event/dlb2/rte_pmd_dlb2.c index b09b585f0b..43990e46ac 100644 --- a/drivers/event/dlb2/rte_pmd_dlb2.c +++ b/drivers/event/dlb2/rte_pmd_dlb2.c @@ -3,7 +3,7 @@ */ #include -#include +#include #include "rte_pmd_dlb2.h" #include "dlb2_priv.h" diff --git a/drivers/event/dpaa/dpaa_eventdev.c b/drivers/event/dpaa/dpaa_eventdev.c index 01ddd0eb63..460375ca30 100644 --- a/drivers/event/dpaa/dpaa_eventdev.c +++ b/drivers/event/dpaa/dpaa_eventdev.c @@ -24,7 +24,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/drivers/event/dpaa/dpaa_eventdev.h b/drivers/event/dpaa/dpaa_eventdev.h index 0b3da83a4f..b4535c7b86 100644 --- a/drivers/event/dpaa/dpaa_eventdev.h +++ b/drivers/event/dpaa/dpaa_eventdev.h @@ -5,8 +5,8 @@ #ifndef __DPAA_EVENTDEV_H__ #define __DPAA_EVENTDEV_H__ -#include -#include +#include +#include #include #include diff --git a/drivers/event/dpaa2/dpaa2_eventdev.h b/drivers/event/dpaa2/dpaa2_eventdev.h index 785e52032e..bb87bdbab2 100644 --- a/drivers/event/dpaa2/dpaa2_eventdev.h +++ b/drivers/event/dpaa2/dpaa2_eventdev.h @@ -5,8 +5,8 @@ #ifndef __DPAA2_EVENTDEV_H__ #define __DPAA2_EVENTDEV_H__ -#include -#include +#include +#include #include #include #include diff --git a/drivers/event/dsw/dsw_evdev.c b/drivers/event/dsw/dsw_evdev.c index 933a5a559b..ae188f7e6b 100644 --- a/drivers/event/dsw/dsw_evdev.c +++ b/drivers/event/dsw/dsw_evdev.c @@ -5,8 +5,8 @@ #include #include -#include -#include +#include +#include #include #include diff --git a/drivers/event/octeontx/ssovf_evdev.h b/drivers/event/octeontx/ssovf_evdev.h index 10163151cd..bb1056a955 100644 --- a/drivers/event/octeontx/ssovf_evdev.h +++ b/drivers/event/octeontx/ssovf_evdev.h @@ -6,7 +6,7 @@ #define __SSOVF_EVDEV_H__ #include -#include +#include #include #include diff --git a/drivers/event/octeontx2/otx2_evdev.c b/drivers/event/octeontx2/otx2_evdev.c index 80a786f21b..7e23435991 100644 --- a/drivers/event/octeontx2/otx2_evdev.c +++ b/drivers/event/octeontx2/otx2_evdev.c @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/drivers/event/octeontx2/otx2_evdev.h b/drivers/event/octeontx2/otx2_evdev.h index ed9cbc86b9..96e5799be1 100644 --- a/drivers/event/octeontx2/otx2_evdev.h +++ b/drivers/event/octeontx2/otx2_evdev.h @@ -6,7 +6,7 @@ #define __OTX2_EVDEV_H__ #include -#include +#include #include #include diff --git a/drivers/event/opdl/opdl_evdev.h b/drivers/event/opdl/opdl_evdev.h index 610b58b356..2dca0a8a98 100644 --- a/drivers/event/opdl/opdl_evdev.h +++ b/drivers/event/opdl/opdl_evdev.h @@ -6,7 +6,7 @@ #define _OPDL_EVDEV_H_ #include -#include +#include #include #include "opdl_ring.h" diff --git a/drivers/event/skeleton/skeleton_eventdev.h b/drivers/event/skeleton/skeleton_eventdev.h index ba64b8aea4..9193f45f47 100644 --- a/drivers/event/skeleton/skeleton_eventdev.h +++ b/drivers/event/skeleton/skeleton_eventdev.h @@ -5,8 +5,8 @@ #ifndef __SKELETON_EVENTDEV_H__ #define __SKELETON_EVENTDEV_H__ -#include -#include +#include +#include #ifdef RTE_LIBRTE_PMD_SKELETON_EVENTDEV_DEBUG #define PMD_DRV_LOG(level, fmt, args...) \ diff --git a/drivers/event/sw/sw_evdev.h b/drivers/event/sw/sw_evdev.h index 1fc07b64fc..5ab6465c83 100644 --- a/drivers/event/sw/sw_evdev.h +++ b/drivers/event/sw/sw_evdev.h @@ -7,7 +7,7 @@ #include "sw_evdev_log.h" #include -#include +#include #include #define SW_DEFAULT_CREDIT_QUANTA 32 diff --git a/lib/librte_eventdev/eventdev_pmd.h b/lib/librte_eventdev/eventdev_pmd.h new file mode 100644 index 0000000000..9e83993efa --- /dev/null +++ b/lib/librte_eventdev/eventdev_pmd.h @@ -0,0 +1,1148 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2016 Cavium, Inc + */ + +#ifndef _RTE_EVENTDEV_PMD_H_ +#define _RTE_EVENTDEV_PMD_H_ + +/** @file + * RTE Event PMD APIs + * + * @note + * These API are from event PMD only and user applications should not call + * them directly. + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "rte_eventdev.h" +#include "rte_event_timer_adapter_pmd.h" + +/* Logging Macros */ +#define RTE_EDEV_LOG_ERR(...) \ + RTE_LOG(ERR, EVENTDEV, \ + RTE_FMT("%s() line %u: " RTE_FMT_HEAD(__VA_ARGS__,) "\n", \ + __func__, __LINE__, RTE_FMT_TAIL(__VA_ARGS__,))) + +#ifdef RTE_LIBRTE_EVENTDEV_DEBUG +#define RTE_EDEV_LOG_DEBUG(...) \ + RTE_LOG(DEBUG, EVENTDEV, \ + RTE_FMT("%s() line %u: " RTE_FMT_HEAD(__VA_ARGS__,) "\n", \ + __func__, __LINE__, RTE_FMT_TAIL(__VA_ARGS__,))) +#else +#define RTE_EDEV_LOG_DEBUG(...) (void)0 +#endif + +/* Macros to check for valid device */ +#define RTE_EVENTDEV_VALID_DEVID_OR_ERR_RET(dev_id, retval) do { \ + if (!rte_event_pmd_is_valid_dev((dev_id))) { \ + RTE_EDEV_LOG_ERR("Invalid dev_id=%d\n", dev_id); \ + return retval; \ + } \ +} while (0) + +#define RTE_EVENTDEV_VALID_DEVID_OR_ERRNO_RET(dev_id, errno, retval) do { \ + if (!rte_event_pmd_is_valid_dev((dev_id))) { \ + RTE_EDEV_LOG_ERR("Invalid dev_id=%d\n", dev_id); \ + rte_errno = errno; \ + return retval; \ + } \ +} while (0) + +#define RTE_EVENTDEV_VALID_DEVID_OR_RET(dev_id) do { \ + if (!rte_event_pmd_is_valid_dev((dev_id))) { \ + RTE_EDEV_LOG_ERR("Invalid dev_id=%d\n", dev_id); \ + return; \ + } \ +} while (0) + +#define RTE_EVENT_ETH_RX_ADAPTER_SW_CAP \ + ((RTE_EVENT_ETH_RX_ADAPTER_CAP_OVERRIDE_FLOW_ID) | \ + (RTE_EVENT_ETH_RX_ADAPTER_CAP_MULTI_EVENTQ)) + +#define RTE_EVENT_CRYPTO_ADAPTER_SW_CAP \ + RTE_EVENT_CRYPTO_ADAPTER_CAP_SESSION_PRIVATE_DATA + +/**< Ethernet Rx adapter cap to return If the packet transfers from + * the ethdev to eventdev use a SW service function + */ + +#define RTE_EVENTDEV_DETACHED (0) +#define RTE_EVENTDEV_ATTACHED (1) + +struct rte_eth_dev; + +/** Global structure used for maintaining state of allocated event devices */ +struct rte_eventdev_global { + uint8_t nb_devs; /**< Number of devices found */ +}; + +extern struct rte_eventdev *rte_eventdevs; +/** The pool of rte_eventdev structures. */ + +/** + * Get the rte_eventdev structure device pointer for the named device. + * + * @param name + * device name to select the device structure. + * + * @return + * - The rte_eventdev structure pointer for the given device ID. + */ +static inline struct rte_eventdev * +rte_event_pmd_get_named_dev(const char *name) +{ + struct rte_eventdev *dev; + unsigned int i; + + if (name == NULL) + return NULL; + + for (i = 0; i < RTE_EVENT_MAX_DEVS; i++) { + dev = &rte_eventdevs[i]; + if ((dev->attached == RTE_EVENTDEV_ATTACHED) && + (strcmp(dev->data->name, name) == 0)) + return dev; + } + + return NULL; +} + +/** + * Validate if the event device index is valid attached event device. + * + * @param dev_id + * Event device index. + * + * @return + * - If the device index is valid (1) or not (0). + */ +static inline unsigned +rte_event_pmd_is_valid_dev(uint8_t dev_id) +{ + struct rte_eventdev *dev; + + if (dev_id >= RTE_EVENT_MAX_DEVS) + return 0; + + dev = &rte_eventdevs[dev_id]; + if (dev->attached != RTE_EVENTDEV_ATTACHED) + return 0; + else + return 1; +} + +/** + * Definitions of all functions exported by a driver through the + * the generic structure of type *event_dev_ops* supplied in the + * *rte_eventdev* structure associated with a device. + */ + +/** + * Get device information of a device. + * + * @param dev + * Event device pointer + * @param dev_info + * Event device information structure + * + * @return + * Returns 0 on success + */ +typedef void (*eventdev_info_get_t)(struct rte_eventdev *dev, + struct rte_event_dev_info *dev_info); + +/** + * Configure a device. + * + * @param dev + * Event device pointer + * + * @return + * Returns 0 on success + */ +typedef int (*eventdev_configure_t)(const struct rte_eventdev *dev); + +/** + * Start a configured device. + * + * @param dev + * Event device pointer + * + * @return + * Returns 0 on success + */ +typedef int (*eventdev_start_t)(struct rte_eventdev *dev); + +/** + * Stop a configured device. + * + * @param dev + * Event device pointer + */ +typedef void (*eventdev_stop_t)(struct rte_eventdev *dev); + +/** + * Close a configured device. + * + * @param dev + * Event device pointer + * + * @return + * - 0 on success + * - (-EAGAIN) if can't close as device is busy + */ +typedef int (*eventdev_close_t)(struct rte_eventdev *dev); + +/** + * Retrieve the default event queue configuration. + * + * @param dev + * Event device pointer + * @param queue_id + * Event queue index + * @param[out] queue_conf + * Event queue configuration structure + * + */ +typedef void (*eventdev_queue_default_conf_get_t)(struct rte_eventdev *dev, + uint8_t queue_id, struct rte_event_queue_conf *queue_conf); + +/** + * Setup an event queue. + * + * @param dev + * Event device pointer + * @param queue_id + * Event queue index + * @param queue_conf + * Event queue configuration structure + * + * @return + * Returns 0 on success. + */ +typedef int (*eventdev_queue_setup_t)(struct rte_eventdev *dev, + uint8_t queue_id, + const struct rte_event_queue_conf *queue_conf); + +/** + * Release resources allocated by given event queue. + * + * @param dev + * Event device pointer + * @param queue_id + * Event queue index + * + */ +typedef void (*eventdev_queue_release_t)(struct rte_eventdev *dev, + uint8_t queue_id); + +/** + * Retrieve the default event port configuration. + * + * @param dev + * Event device pointer + * @param port_id + * Event port index + * @param[out] port_conf + * Event port configuration structure + * + */ +typedef void (*eventdev_port_default_conf_get_t)(struct rte_eventdev *dev, + uint8_t port_id, struct rte_event_port_conf *port_conf); + +/** + * Setup an event port. + * + * @param dev + * Event device pointer + * @param port_id + * Event port index + * @param port_conf + * Event port configuration structure + * + * @return + * Returns 0 on success. + */ +typedef int (*eventdev_port_setup_t)(struct rte_eventdev *dev, + uint8_t port_id, + const struct rte_event_port_conf *port_conf); + +/** + * Release memory resources allocated by given event port. + * + * @param port + * Event port pointer + * + */ +typedef void (*eventdev_port_release_t)(void *port); + +/** + * Link multiple source event queues to destination event port. + * + * @param dev + * Event device pointer + * @param port + * Event port pointer + * @param queues + * Points to an array of *nb_links* event queues to be linked + * to the event port. + * @param priorities + * Points to an array of *nb_links* service priorities associated with each + * event queue link to event port. + * @param nb_links + * The number of links to establish + * + * @return + * Returns 0 on success. + * + */ +typedef int (*eventdev_port_link_t)(struct rte_eventdev *dev, void *port, + const uint8_t queues[], const uint8_t priorities[], + uint16_t nb_links); + +/** + * Unlink multiple source event queues from destination event port. + * + * @param dev + * Event device pointer + * @param port + * Event port pointer + * @param queues + * An array of *nb_unlinks* event queues to be unlinked from the event port. + * @param nb_unlinks + * The number of unlinks to establish + * + * @return + * Returns 0 on success. + * + */ +typedef int (*eventdev_port_unlink_t)(struct rte_eventdev *dev, void *port, + uint8_t queues[], uint16_t nb_unlinks); + +/** + * Unlinks in progress. Returns number of unlinks that the PMD is currently + * performing, but have not yet been completed. + * + * @param dev + * Event device pointer + * + * @param port + * Event port pointer + * + * @return + * Returns the number of in-progress unlinks. Zero is returned if none are + * in progress. + */ +typedef int (*eventdev_port_unlinks_in_progress_t)(struct rte_eventdev *dev, + void *port); + +/** + * Converts nanoseconds to *timeout_ticks* value for rte_event_dequeue() + * + * @param dev + * Event device pointer + * @param ns + * Wait time in nanosecond + * @param[out] timeout_ticks + * Value for the *timeout_ticks* parameter in rte_event_dequeue() function + * + * @return + * Returns 0 on success. + * + */ +typedef int (*eventdev_dequeue_timeout_ticks_t)(struct rte_eventdev *dev, + uint64_t ns, uint64_t *timeout_ticks); + +/** + * Dump internal information + * + * @param dev + * Event device pointer + * @param f + * A pointer to a file for output + * + */ +typedef void (*eventdev_dump_t)(struct rte_eventdev *dev, FILE *f); + +/** + * Retrieve a set of statistics from device + * + * @param dev + * Event device pointer + * @param mode + * Level (device, port or queue) + * @param queue_port_id + * Queue or port number depending on mode + * @param ids + * The stat ids to retrieve + * @param values + * The returned stat values + * @param n + * The number of id values and entries in the values array + * @return + * The number of stat values successfully filled into the values array + */ +typedef int (*eventdev_xstats_get_t)(const struct rte_eventdev *dev, + enum rte_event_dev_xstats_mode mode, uint8_t queue_port_id, + const unsigned int ids[], uint64_t values[], unsigned int n); + +/** + * Resets the statistic values in xstats for the device, based on mode. + */ +typedef int (*eventdev_xstats_reset_t)(struct rte_eventdev *dev, + enum rte_event_dev_xstats_mode mode, + int16_t queue_port_id, + const uint32_t ids[], + uint32_t nb_ids); + +/** + * Get names of extended stats of an event device + * + * @param dev + * Event device pointer + * @param mode + * Level (device, port or queue) + * @param queue_port_id + * Queue or port number depending on mode + * @param xstats_names + * Array of name values to be filled in + * @param ids + * The stat ids to retrieve + * @param size + * Number of values in the xstats_names array + * @return + * When size >= the number of stats, return the number of stat values filled + * into the array. + * When size < the number of available stats, return the number of stats + * values, and do not fill in any data into xstats_names. + */ +typedef int (*eventdev_xstats_get_names_t)(const struct rte_eventdev *dev, + enum rte_event_dev_xstats_mode mode, uint8_t queue_port_id, + struct rte_event_dev_xstats_name *xstats_names, + unsigned int *ids, unsigned int size); + +/** + * Get value of one stats and optionally return its id + * + * @param dev + * Event device pointer + * @param name + * The name of the stat to retrieve + * @param id + * Pointer to an unsigned int where we store the stat-id for future reference. + * This pointer may be null if the id is not required. + * @return + * The value of the stat, or (uint64_t)-1 if the stat is not found. + * If the stat is not found, the id value will be returned as (unsigned)-1, + * if id pointer is non-NULL + */ +typedef uint64_t (*eventdev_xstats_get_by_name)(const struct rte_eventdev *dev, + const char *name, unsigned int *id); + + +/** + * Retrieve the event device's ethdev Rx adapter capabilities for the + * specified ethernet port + * + * @param dev + * Event device pointer + * + * @param eth_dev + * Ethernet device pointer + * + * @param[out] caps + * A pointer to memory filled with Rx event adapter capabilities. + * + * @return + * - 0: Success, driver provides Rx event adapter capabilities for the + * ethernet device. + * - <0: Error code returned by the driver function. + * + */ +typedef int (*eventdev_eth_rx_adapter_caps_get_t) + (const struct rte_eventdev *dev, + const struct rte_eth_dev *eth_dev, + uint32_t *caps); + +struct rte_event_eth_rx_adapter_queue_conf; + +/** + * Retrieve the event device's timer adapter capabilities, as well as the ops + * structure that an event timer adapter should call through to enter the + * driver + * + * @param dev + * Event device pointer + * + * @param flags + * Flags that can be used to determine how to select an event timer + * adapter ops structure + * + * @param[out] caps + * A pointer to memory filled with Rx event adapter capabilities. + * + * @param[out] ops + * A pointer to the ops pointer to set with the address of the desired ops + * structure + * + * @return + * - 0: Success, driver provides Rx event adapter capabilities for the + * ethernet device. + * - <0: Error code returned by the driver function. + * + */ +typedef int (*eventdev_timer_adapter_caps_get_t)( + const struct rte_eventdev *dev, + uint64_t flags, + uint32_t *caps, + const struct rte_event_timer_adapter_ops **ops); + +/** + * Add ethernet Rx queues to event device. This callback is invoked if + * the caps returned from rte_eventdev_eth_rx_adapter_caps_get(, eth_port_id) + * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set. + * + * @param dev + * Event device pointer + * + * @param eth_dev + * Ethernet device pointer + * + * @param rx_queue_id + * Ethernet device receive queue index + * + * @param queue_conf + * Additional configuration structure + + * @return + * - 0: Success, ethernet receive queue added successfully. + * - <0: Error code returned by the driver function. + * + */ +typedef int (*eventdev_eth_rx_adapter_queue_add_t)( + const struct rte_eventdev *dev, + const struct rte_eth_dev *eth_dev, + int32_t rx_queue_id, + const struct rte_event_eth_rx_adapter_queue_conf *queue_conf); + +/** + * Delete ethernet Rx queues from event device. This callback is invoked if + * the caps returned from eventdev_eth_rx_adapter_caps_get(, eth_port_id) + * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set. + * + * @param dev + * Event device pointer + * + * @param eth_dev + * Ethernet device pointer + * + * @param rx_queue_id + * Ethernet device receive queue index + * + * @return + * - 0: Success, ethernet receive queue deleted successfully. + * - <0: Error code returned by the driver function. + * + */ +typedef int (*eventdev_eth_rx_adapter_queue_del_t) + (const struct rte_eventdev *dev, + const struct rte_eth_dev *eth_dev, + int32_t rx_queue_id); + +/** + * Start ethernet Rx adapter. This callback is invoked if + * the caps returned from eventdev_eth_rx_adapter_caps_get(.., eth_port_id) + * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set and Rx queues + * from eth_port_id have been added to the event device. + * + * @param dev + * Event device pointer + * + * @param eth_dev + * Ethernet device pointer + * + * @return + * - 0: Success, ethernet Rx adapter started successfully. + * - <0: Error code returned by the driver function. + */ +typedef int (*eventdev_eth_rx_adapter_start_t) + (const struct rte_eventdev *dev, + const struct rte_eth_dev *eth_dev); + +/** + * Stop ethernet Rx adapter. This callback is invoked if + * the caps returned from eventdev_eth_rx_adapter_caps_get(..,eth_port_id) + * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set and Rx queues + * from eth_port_id have been added to the event device. + * + * @param dev + * Event device pointer + * + * @param eth_dev + * Ethernet device pointer + * + * @return + * - 0: Success, ethernet Rx adapter stopped successfully. + * - <0: Error code returned by the driver function. + */ +typedef int (*eventdev_eth_rx_adapter_stop_t) + (const struct rte_eventdev *dev, + const struct rte_eth_dev *eth_dev); + +struct rte_event_eth_rx_adapter_stats; + +/** + * Retrieve ethernet Rx adapter statistics. + * + * @param dev + * Event device pointer + * + * @param eth_dev + * Ethernet device pointer + * + * @param[out] stats + * Pointer to stats structure + * + * @return + * Return 0 on success. + */ + +typedef int (*eventdev_eth_rx_adapter_stats_get) + (const struct rte_eventdev *dev, + const struct rte_eth_dev *eth_dev, + struct rte_event_eth_rx_adapter_stats *stats); +/** + * Reset ethernet Rx adapter statistics. + * + * @param dev + * Event device pointer + * + * @param eth_dev + * Ethernet device pointer + * + * @return + * Return 0 on success. + */ +typedef int (*eventdev_eth_rx_adapter_stats_reset) + (const struct rte_eventdev *dev, + const struct rte_eth_dev *eth_dev); +/** + * Start eventdev selftest. + * + * @return + * Return 0 on success. + */ +typedef int (*eventdev_selftest)(void); + +typedef uint32_t rte_event_pmd_selftest_seqn_t; +extern int rte_event_pmd_selftest_seqn_dynfield_offset; + +/** + * Read test sequence number from mbuf. + * + * @param mbuf Structure to read from. + * @return pointer to test sequence number. + */ +__rte_internal +static inline rte_event_pmd_selftest_seqn_t * +rte_event_pmd_selftest_seqn(struct rte_mbuf *mbuf) +{ + return RTE_MBUF_DYNFIELD(mbuf, + rte_event_pmd_selftest_seqn_dynfield_offset, + rte_event_pmd_selftest_seqn_t *); +} + +struct rte_cryptodev; + +/** + * This API may change without prior notice + * + * Retrieve the event device's crypto adapter capabilities for the + * specified cryptodev + * + * @param dev + * Event device pointer + * + * @param cdev + * cryptodev pointer + * + * @param[out] caps + * A pointer to memory filled with event adapter capabilities. + * It is expected to be pre-allocated & initialized by caller. + * + * @return + * - 0: Success, driver provides event adapter capabilities for the + * cryptodev. + * - <0: Error code returned by the driver function. + * + */ +typedef int (*eventdev_crypto_adapter_caps_get_t) + (const struct rte_eventdev *dev, + const struct rte_cryptodev *cdev, + uint32_t *caps); + +/** + * This API may change without prior notice + * + * Add crypto queue pair to event device. This callback is invoked if + * the caps returned from rte_event_crypto_adapter_caps_get(, cdev_id) + * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set. + * + * @param dev + * Event device pointer + * + * @param cdev + * cryptodev pointer + * + * @param queue_pair_id + * cryptodev queue pair identifier. + * + * @param event + * Event information required for binding cryptodev queue pair to event queue. + * This structure will have a valid value for only those HW PMDs supporting + * @see RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_QP_EV_BIND capability. + * + * @return + * - 0: Success, cryptodev queue pair added successfully. + * - <0: Error code returned by the driver function. + * + */ +typedef int (*eventdev_crypto_adapter_queue_pair_add_t) + (const struct rte_eventdev *dev, + const struct rte_cryptodev *cdev, + int32_t queue_pair_id, + const struct rte_event *event); + + +/** + * This API may change without prior notice + * + * Delete crypto queue pair to event device. This callback is invoked if + * the caps returned from rte_event_crypto_adapter_caps_get(, cdev_id) + * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set. + * + * @param dev + * Event device pointer + * + * @param cdev + * cryptodev pointer + * + * @param queue_pair_id + * cryptodev queue pair identifier. + * + * @return + * - 0: Success, cryptodev queue pair deleted successfully. + * - <0: Error code returned by the driver function. + * + */ +typedef int (*eventdev_crypto_adapter_queue_pair_del_t) + (const struct rte_eventdev *dev, + const struct rte_cryptodev *cdev, + int32_t queue_pair_id); + +/** + * Start crypto adapter. This callback is invoked if + * the caps returned from rte_event_crypto_adapter_caps_get(.., cdev_id) + * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set and queue pairs + * from cdev_id have been added to the event device. + * + * @param dev + * Event device pointer + * + * @param cdev + * Crypto device pointer + * + * @return + * - 0: Success, crypto adapter started successfully. + * - <0: Error code returned by the driver function. + */ +typedef int (*eventdev_crypto_adapter_start_t) + (const struct rte_eventdev *dev, + const struct rte_cryptodev *cdev); + +/** + * Stop crypto adapter. This callback is invoked if + * the caps returned from rte_event_crypto_adapter_caps_get(.., cdev_id) + * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set and queue pairs + * from cdev_id have been added to the event device. + * + * @param dev + * Event device pointer + * + * @param cdev + * Crypto device pointer + * + * @return + * - 0: Success, crypto adapter stopped successfully. + * - <0: Error code returned by the driver function. + */ +typedef int (*eventdev_crypto_adapter_stop_t) + (const struct rte_eventdev *dev, + const struct rte_cryptodev *cdev); + +struct rte_event_crypto_adapter_stats; + +/** + * Retrieve crypto adapter statistics. + * + * @param dev + * Event device pointer + * + * @param cdev + * Crypto device pointer + * + * @param[out] stats + * Pointer to stats structure + * + * @return + * Return 0 on success. + */ + +typedef int (*eventdev_crypto_adapter_stats_get) + (const struct rte_eventdev *dev, + const struct rte_cryptodev *cdev, + struct rte_event_crypto_adapter_stats *stats); + +/** + * Reset crypto adapter statistics. + * + * @param dev + * Event device pointer + * + * @param cdev + * Crypto device pointer + * + * @return + * Return 0 on success. + */ + +typedef int (*eventdev_crypto_adapter_stats_reset) + (const struct rte_eventdev *dev, + const struct rte_cryptodev *cdev); + +/** + * Retrieve the event device's eth Tx adapter capabilities. + * + * @param dev + * Event device pointer + * + * @param eth_dev + * Ethernet device pointer + * + * @param[out] caps + * A pointer to memory filled with eth Tx adapter capabilities. + * + * @return + * - 0: Success, driver provides eth Tx adapter capabilities + * - <0: Error code returned by the driver function. + * + */ +typedef int (*eventdev_eth_tx_adapter_caps_get_t) + (const struct rte_eventdev *dev, + const struct rte_eth_dev *eth_dev, + uint32_t *caps); + +/** + * Create adapter callback. + * + * @param id + * Adapter identifier + * + * @param dev + * Event device pointer + * + * @return + * - 0: Success. + * - <0: Error code on failure. + */ +typedef int (*eventdev_eth_tx_adapter_create_t)(uint8_t id, + const struct rte_eventdev *dev); + +/** + * Free adapter callback. + * + * @param id + * Adapter identifier + * + * @param dev + * Event device pointer + * + * @return + * - 0: Success. + * - <0: Error code on failure. + */ +typedef int (*eventdev_eth_tx_adapter_free_t)(uint8_t id, + const struct rte_eventdev *dev); + +/** + * Add a Tx queue to the adapter. + * A queue value of -1 is used to indicate all + * queues within the device. + * + * @param id + * Adapter identifier + * + * @param dev + * Event device pointer + * + * @param eth_dev + * Ethernet device pointer + * + * @param tx_queue_id + * Transmit queue index + * + * @return + * - 0: Success. + * - <0: Error code on failure. + */ +typedef int (*eventdev_eth_tx_adapter_queue_add_t)( + uint8_t id, + const struct rte_eventdev *dev, + const struct rte_eth_dev *eth_dev, + int32_t tx_queue_id); + +/** + * Delete a Tx queue from the adapter. + * A queue value of -1 is used to indicate all + * queues within the device, that have been added to this + * adapter. + * + * @param id + * Adapter identifier + * + * @param dev + * Event device pointer + * + * @param eth_dev + * Ethernet device pointer + * + * @param tx_queue_id + * Transmit queue index + * + * @return + * - 0: Success, Queues deleted successfully. + * - <0: Error code on failure. + */ +typedef int (*eventdev_eth_tx_adapter_queue_del_t)( + uint8_t id, + const struct rte_eventdev *dev, + const struct rte_eth_dev *eth_dev, + int32_t tx_queue_id); + +/** + * Start the adapter. + * + * @param id + * Adapter identifier + * + * @param dev + * Event device pointer + * + * @return + * - 0: Success, Adapter started correctly. + * - <0: Error code on failure. + */ +typedef int (*eventdev_eth_tx_adapter_start_t)(uint8_t id, + const struct rte_eventdev *dev); + +/** + * Stop the adapter. + * + * @param id + * Adapter identifier + * + * @param dev + * Event device pointer + * + * @return + * - 0: Success. + * - <0: Error code on failure. + */ +typedef int (*eventdev_eth_tx_adapter_stop_t)(uint8_t id, + const struct rte_eventdev *dev); + +struct rte_event_eth_tx_adapter_stats; + +/** + * Retrieve statistics for an adapter + * + * @param id + * Adapter identifier + * + * @param dev + * Event device pointer + * + * @param [out] stats + * A pointer to structure used to retrieve statistics for an adapter + * + * @return + * - 0: Success, statistics retrieved successfully. + * - <0: Error code on failure. + */ +typedef int (*eventdev_eth_tx_adapter_stats_get_t)( + uint8_t id, + const struct rte_eventdev *dev, + struct rte_event_eth_tx_adapter_stats *stats); + +/** + * Reset statistics for an adapter + * + * @param id + * Adapter identifier + * + * @param dev + * Event device pointer + * + * @return + * - 0: Success, statistics retrieved successfully. + * - <0: Error code on failure. + */ +typedef int (*eventdev_eth_tx_adapter_stats_reset_t)(uint8_t id, + const struct rte_eventdev *dev); + +/** Event device operations function pointer table */ +struct rte_eventdev_ops { + eventdev_info_get_t dev_infos_get; /**< Get device info. */ + eventdev_configure_t dev_configure; /**< Configure device. */ + eventdev_start_t dev_start; /**< Start device. */ + eventdev_stop_t dev_stop; /**< Stop device. */ + eventdev_close_t dev_close; /**< Close device. */ + + eventdev_queue_default_conf_get_t queue_def_conf; + /**< Get default queue configuration. */ + eventdev_queue_setup_t queue_setup; + /**< Set up an event queue. */ + eventdev_queue_release_t queue_release; + /**< Release an event queue. */ + + eventdev_port_default_conf_get_t port_def_conf; + /**< Get default port configuration. */ + eventdev_port_setup_t port_setup; + /**< Set up an event port. */ + eventdev_port_release_t port_release; + /**< Release an event port. */ + + eventdev_port_link_t port_link; + /**< Link event queues to an event port. */ + eventdev_port_unlink_t port_unlink; + /**< Unlink event queues from an event port. */ + eventdev_port_unlinks_in_progress_t port_unlinks_in_progress; + /**< Unlinks in progress on an event port. */ + eventdev_dequeue_timeout_ticks_t timeout_ticks; + /**< Converts ns to *timeout_ticks* value for rte_event_dequeue() */ + eventdev_dump_t dump; + /* Dump internal information */ + + eventdev_xstats_get_t xstats_get; + /**< Get extended device statistics. */ + eventdev_xstats_get_names_t xstats_get_names; + /**< Get names of extended stats. */ + eventdev_xstats_get_by_name xstats_get_by_name; + /**< Get one value by name. */ + eventdev_xstats_reset_t xstats_reset; + /**< Reset the statistics values in xstats. */ + + eventdev_eth_rx_adapter_caps_get_t eth_rx_adapter_caps_get; + /**< Get ethernet Rx adapter capabilities */ + eventdev_eth_rx_adapter_queue_add_t eth_rx_adapter_queue_add; + /**< Add Rx queues to ethernet Rx adapter */ + eventdev_eth_rx_adapter_queue_del_t eth_rx_adapter_queue_del; + /**< Delete Rx queues from ethernet Rx adapter */ + eventdev_eth_rx_adapter_start_t eth_rx_adapter_start; + /**< Start ethernet Rx adapter */ + eventdev_eth_rx_adapter_stop_t eth_rx_adapter_stop; + /**< Stop ethernet Rx adapter */ + eventdev_eth_rx_adapter_stats_get eth_rx_adapter_stats_get; + /**< Get ethernet Rx stats */ + eventdev_eth_rx_adapter_stats_reset eth_rx_adapter_stats_reset; + /**< Reset ethernet Rx stats */ + + eventdev_timer_adapter_caps_get_t timer_adapter_caps_get; + /**< Get timer adapter capabilities */ + + eventdev_crypto_adapter_caps_get_t crypto_adapter_caps_get; + /**< Get crypto adapter capabilities */ + eventdev_crypto_adapter_queue_pair_add_t crypto_adapter_queue_pair_add; + /**< Add queue pair to crypto adapter */ + eventdev_crypto_adapter_queue_pair_del_t crypto_adapter_queue_pair_del; + /**< Delete queue pair from crypto adapter */ + eventdev_crypto_adapter_start_t crypto_adapter_start; + /**< Start crypto adapter */ + eventdev_crypto_adapter_stop_t crypto_adapter_stop; + /**< Stop crypto adapter */ + eventdev_crypto_adapter_stats_get crypto_adapter_stats_get; + /**< Get crypto stats */ + eventdev_crypto_adapter_stats_reset crypto_adapter_stats_reset; + /**< Reset crypto stats */ + + eventdev_eth_tx_adapter_caps_get_t eth_tx_adapter_caps_get; + /**< Get ethernet Tx adapter capabilities */ + + eventdev_eth_tx_adapter_create_t eth_tx_adapter_create; + /**< Create adapter callback */ + eventdev_eth_tx_adapter_free_t eth_tx_adapter_free; + /**< Free adapter callback */ + eventdev_eth_tx_adapter_queue_add_t eth_tx_adapter_queue_add; + /**< Add Tx queues to the eth Tx adapter */ + eventdev_eth_tx_adapter_queue_del_t eth_tx_adapter_queue_del; + /**< Delete Tx queues from the eth Tx adapter */ + eventdev_eth_tx_adapter_start_t eth_tx_adapter_start; + /**< Start eth Tx adapter */ + eventdev_eth_tx_adapter_stop_t eth_tx_adapter_stop; + /**< Stop eth Tx adapter */ + eventdev_eth_tx_adapter_stats_get_t eth_tx_adapter_stats_get; + /**< Get eth Tx adapter statistics */ + eventdev_eth_tx_adapter_stats_reset_t eth_tx_adapter_stats_reset; + /**< Reset eth Tx adapter statistics */ + + eventdev_selftest dev_selftest; + /**< Start eventdev Selftest */ + + eventdev_stop_flush_t dev_stop_flush; + /**< User-provided event flush function */ +}; + +/** + * Allocates a new eventdev slot for an event device and returns the pointer + * to that slot for the driver to use. + * + * @param name + * Unique identifier name for each device + * @param socket_id + * Socket to allocate resources on. + * @return + * - Slot in the rte_dev_devices array for a new device; + */ +struct rte_eventdev * +rte_event_pmd_allocate(const char *name, int socket_id); + +/** + * Release the specified eventdev device. + * + * @param eventdev + * The *eventdev* pointer is the address of the *rte_eventdev* structure. + * @return + * - 0 on success, negative on error + */ +int +rte_event_pmd_release(struct rte_eventdev *eventdev); + +#ifdef __cplusplus +} +#endif + +#endif /* _RTE_EVENTDEV_PMD_H_ */ diff --git a/lib/librte_eventdev/eventdev_pmd_pci.h b/lib/librte_eventdev/eventdev_pmd_pci.h new file mode 100644 index 0000000000..d14ea634b8 --- /dev/null +++ b/lib/librte_eventdev/eventdev_pmd_pci.h @@ -0,0 +1,158 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2016-2017 Cavium, Inc + */ + +#ifndef _RTE_EVENTDEV_PMD_PCI_H_ +#define _RTE_EVENTDEV_PMD_PCI_H_ + +/** @file + * RTE Eventdev PCI PMD APIs + * + * @note + * These API are from event PCI PMD only and user applications should not call + * them directly. + */ + + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#include +#include +#include +#include +#include + +#include "eventdev_pmd.h" + +typedef int (*eventdev_pmd_pci_callback_t)(struct rte_eventdev *dev); + +/** + * @internal + * Wrapper for use by pci drivers as a .probe function to attach to an event + * interface. Same as rte_event_pmd_pci_probe, except caller can specify + * the name. + */ +__rte_experimental +static inline int +rte_event_pmd_pci_probe_named(struct rte_pci_driver *pci_drv, + struct rte_pci_device *pci_dev, + size_t private_data_size, + eventdev_pmd_pci_callback_t devinit, + const char *name) +{ + struct rte_eventdev *eventdev; + int retval; + + if (devinit == NULL) + return -EINVAL; + + eventdev = rte_event_pmd_allocate(name, + pci_dev->device.numa_node); + if (eventdev == NULL) + return -ENOMEM; + + if (rte_eal_process_type() == RTE_PROC_PRIMARY) { + eventdev->data->dev_private = + rte_zmalloc_socket( + "eventdev private structure", + private_data_size, + RTE_CACHE_LINE_SIZE, + rte_socket_id()); + + if (eventdev->data->dev_private == NULL) + rte_panic("Cannot allocate memzone for private " + "device data"); + } + + eventdev->dev = &pci_dev->device; + + /* Invoke PMD device initialization function */ + retval = devinit(eventdev); + if (retval == 0) + return 0; + + RTE_EDEV_LOG_ERR("driver %s: (vendor_id=0x%x device_id=0x%x)" + " failed", pci_drv->driver.name, + (unsigned int) pci_dev->id.vendor_id, + (unsigned int) pci_dev->id.device_id); + + rte_event_pmd_release(eventdev); + + return -ENXIO; +} + +/** + * @internal + * Wrapper for use by pci drivers as a .probe function to attach to a event + * interface. + */ +static inline int +rte_event_pmd_pci_probe(struct rte_pci_driver *pci_drv, + struct rte_pci_device *pci_dev, + size_t private_data_size, + eventdev_pmd_pci_callback_t devinit) +{ + char eventdev_name[RTE_EVENTDEV_NAME_MAX_LEN]; + + rte_pci_device_name(&pci_dev->addr, eventdev_name, + sizeof(eventdev_name)); + + return rte_event_pmd_pci_probe_named(pci_drv, + pci_dev, + private_data_size, + devinit, + eventdev_name); +} + +/** + * @internal + * Wrapper for use by pci drivers as a .remove function to detach a event + * interface. + */ +static inline int +rte_event_pmd_pci_remove(struct rte_pci_device *pci_dev, + eventdev_pmd_pci_callback_t devuninit) +{ + struct rte_eventdev *eventdev; + char eventdev_name[RTE_EVENTDEV_NAME_MAX_LEN]; + int ret = 0; + + if (pci_dev == NULL) + return -EINVAL; + + rte_pci_device_name(&pci_dev->addr, eventdev_name, + sizeof(eventdev_name)); + + eventdev = rte_event_pmd_get_named_dev(eventdev_name); + if (eventdev == NULL) + return -ENODEV; + + if (rte_eal_process_type() == RTE_PROC_PRIMARY) { + ret = rte_event_dev_close(eventdev->data->dev_id); + if (ret < 0) + return ret; + } + + /* Invoke PMD device un-init function */ + if (devuninit) + ret = devuninit(eventdev); + if (ret) + return ret; + + /* Free event device */ + rte_event_pmd_release(eventdev); + + eventdev->dev = NULL; + + return 0; +} + +#ifdef __cplusplus +} +#endif + +#endif /* _RTE_EVENTDEV_PMD_PCI_H_ */ diff --git a/lib/librte_eventdev/eventdev_pmd_vdev.h b/lib/librte_eventdev/eventdev_pmd_vdev.h new file mode 100644 index 0000000000..bc0cf44c8c --- /dev/null +++ b/lib/librte_eventdev/eventdev_pmd_vdev.h @@ -0,0 +1,108 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2016-2017 Cavium, Inc + */ + +#ifndef _RTE_EVENTDEV_PMD_VDEV_H_ +#define _RTE_EVENTDEV_PMD_VDEV_H_ + +/** @file + * RTE Eventdev VDEV PMD APIs + * + * @note + * These API are from event VDEV PMD only and user applications should not call + * them directly. + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +#include +#include +#include +#include + +#include "eventdev_pmd.h" + +/** + * @internal + * Creates a new virtual event device and returns the pointer to that device. + * + * @param name + * PMD type name + * @param dev_private_size + * Size of event PMDs private data + * @param socket_id + * Socket to allocate resources on. + * + * @return + * - Eventdev pointer if device is successfully created. + * - NULL if device cannot be created. + */ +static inline struct rte_eventdev * +rte_event_pmd_vdev_init(const char *name, size_t dev_private_size, + int socket_id) +{ + + struct rte_eventdev *eventdev; + + /* Allocate device structure */ + eventdev = rte_event_pmd_allocate(name, socket_id); + if (eventdev == NULL) + return NULL; + + /* Allocate private device structure */ + if (rte_eal_process_type() == RTE_PROC_PRIMARY) { + eventdev->data->dev_private = + rte_zmalloc_socket("eventdev device private", + dev_private_size, + RTE_CACHE_LINE_SIZE, + socket_id); + + if (eventdev->data->dev_private == NULL) + rte_panic("Cannot allocate memzone for private device" + " data"); + } + + return eventdev; +} + +/** + * @internal + * Destroy the given virtual event device + * + * @param name + * PMD type name + * @return + * - 0 on success, negative on error + */ +static inline int +rte_event_pmd_vdev_uninit(const char *name) +{ + int ret; + struct rte_eventdev *eventdev; + + if (name == NULL) + return -EINVAL; + + eventdev = rte_event_pmd_get_named_dev(name); + if (eventdev == NULL) + return -ENODEV; + + ret = rte_event_dev_close(eventdev->data->dev_id); + if (ret < 0) + return ret; + + /* Free the event device */ + rte_event_pmd_release(eventdev); + + return 0; +} + +#ifdef __cplusplus +} +#endif + +#endif /* _RTE_EVENTDEV_PMD_VDEV_H_ */ diff --git a/lib/librte_eventdev/meson.build b/lib/librte_eventdev/meson.build index 0adc2cd2fd..79d36d37bb 100644 --- a/lib/librte_eventdev/meson.build +++ b/lib/librte_eventdev/meson.build @@ -15,9 +15,6 @@ sources = files('rte_eventdev.c', 'rte_event_crypto_adapter.c', 'rte_event_eth_tx_adapter.c') headers = files('rte_eventdev.h', - 'rte_eventdev_pmd.h', - 'rte_eventdev_pmd_pci.h', - 'rte_eventdev_pmd_vdev.h', 'rte_eventdev_trace.h', 'rte_eventdev_trace_fp.h', 'rte_event_ring.h', diff --git a/lib/librte_eventdev/rte_event_crypto_adapter.c b/lib/librte_eventdev/rte_event_crypto_adapter.c index b04312128a..d903cdd480 100644 --- a/lib/librte_eventdev/rte_event_crypto_adapter.c +++ b/lib/librte_eventdev/rte_event_crypto_adapter.c @@ -15,7 +15,7 @@ #include #include "rte_eventdev.h" -#include "rte_eventdev_pmd.h" +#include "eventdev_pmd.h" #include "rte_eventdev_trace.h" #include "rte_event_crypto_adapter.h" diff --git a/lib/librte_eventdev/rte_event_eth_rx_adapter.c b/lib/librte_eventdev/rte_event_eth_rx_adapter.c index 3c73046551..d8c635e999 100644 --- a/lib/librte_eventdev/rte_event_eth_rx_adapter.c +++ b/lib/librte_eventdev/rte_event_eth_rx_adapter.c @@ -19,7 +19,7 @@ #include #include "rte_eventdev.h" -#include "rte_eventdev_pmd.h" +#include "eventdev_pmd.h" #include "rte_eventdev_trace.h" #include "rte_event_eth_rx_adapter.h" diff --git a/lib/librte_eventdev/rte_event_eth_tx_adapter.c b/lib/librte_eventdev/rte_event_eth_tx_adapter.c index cc27bbca32..5b4c42dcff 100644 --- a/lib/librte_eventdev/rte_event_eth_tx_adapter.c +++ b/lib/librte_eventdev/rte_event_eth_tx_adapter.c @@ -5,7 +5,7 @@ #include #include -#include "rte_eventdev_pmd.h" +#include "eventdev_pmd.h" #include "rte_eventdev_trace.h" #include "rte_event_eth_tx_adapter.h" diff --git a/lib/librte_eventdev/rte_event_timer_adapter.c b/lib/librte_eventdev/rte_event_timer_adapter.c index 4c5e49ea3b..dd7b83087d 100644 --- a/lib/librte_eventdev/rte_event_timer_adapter.c +++ b/lib/librte_eventdev/rte_event_timer_adapter.c @@ -21,7 +21,7 @@ #include #include "rte_eventdev.h" -#include "rte_eventdev_pmd.h" +#include "eventdev_pmd.h" #include "rte_eventdev_trace.h" #include "rte_event_timer_adapter.h" #include "rte_event_timer_adapter_pmd.h" diff --git a/lib/librte_eventdev/rte_eventdev.c b/lib/librte_eventdev/rte_eventdev.c index afbadc535b..b57363f804 100644 --- a/lib/librte_eventdev/rte_eventdev.c +++ b/lib/librte_eventdev/rte_eventdev.c @@ -35,7 +35,7 @@ #include #include "rte_eventdev.h" -#include "rte_eventdev_pmd.h" +#include "eventdev_pmd.h" #include "rte_eventdev_trace.h" static struct rte_eventdev rte_event_devices[RTE_EVENT_MAX_DEVS]; diff --git a/lib/librte_eventdev/rte_eventdev_pmd.h b/lib/librte_eventdev/rte_eventdev_pmd.h deleted file mode 100644 index 9e83993efa..0000000000 --- a/lib/librte_eventdev/rte_eventdev_pmd.h +++ /dev/null @@ -1,1148 +0,0 @@ -/* SPDX-License-Identifier: BSD-3-Clause - * Copyright(c) 2016 Cavium, Inc - */ - -#ifndef _RTE_EVENTDEV_PMD_H_ -#define _RTE_EVENTDEV_PMD_H_ - -/** @file - * RTE Event PMD APIs - * - * @note - * These API are from event PMD only and user applications should not call - * them directly. - */ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "rte_eventdev.h" -#include "rte_event_timer_adapter_pmd.h" - -/* Logging Macros */ -#define RTE_EDEV_LOG_ERR(...) \ - RTE_LOG(ERR, EVENTDEV, \ - RTE_FMT("%s() line %u: " RTE_FMT_HEAD(__VA_ARGS__,) "\n", \ - __func__, __LINE__, RTE_FMT_TAIL(__VA_ARGS__,))) - -#ifdef RTE_LIBRTE_EVENTDEV_DEBUG -#define RTE_EDEV_LOG_DEBUG(...) \ - RTE_LOG(DEBUG, EVENTDEV, \ - RTE_FMT("%s() line %u: " RTE_FMT_HEAD(__VA_ARGS__,) "\n", \ - __func__, __LINE__, RTE_FMT_TAIL(__VA_ARGS__,))) -#else -#define RTE_EDEV_LOG_DEBUG(...) (void)0 -#endif - -/* Macros to check for valid device */ -#define RTE_EVENTDEV_VALID_DEVID_OR_ERR_RET(dev_id, retval) do { \ - if (!rte_event_pmd_is_valid_dev((dev_id))) { \ - RTE_EDEV_LOG_ERR("Invalid dev_id=%d\n", dev_id); \ - return retval; \ - } \ -} while (0) - -#define RTE_EVENTDEV_VALID_DEVID_OR_ERRNO_RET(dev_id, errno, retval) do { \ - if (!rte_event_pmd_is_valid_dev((dev_id))) { \ - RTE_EDEV_LOG_ERR("Invalid dev_id=%d\n", dev_id); \ - rte_errno = errno; \ - return retval; \ - } \ -} while (0) - -#define RTE_EVENTDEV_VALID_DEVID_OR_RET(dev_id) do { \ - if (!rte_event_pmd_is_valid_dev((dev_id))) { \ - RTE_EDEV_LOG_ERR("Invalid dev_id=%d\n", dev_id); \ - return; \ - } \ -} while (0) - -#define RTE_EVENT_ETH_RX_ADAPTER_SW_CAP \ - ((RTE_EVENT_ETH_RX_ADAPTER_CAP_OVERRIDE_FLOW_ID) | \ - (RTE_EVENT_ETH_RX_ADAPTER_CAP_MULTI_EVENTQ)) - -#define RTE_EVENT_CRYPTO_ADAPTER_SW_CAP \ - RTE_EVENT_CRYPTO_ADAPTER_CAP_SESSION_PRIVATE_DATA - -/**< Ethernet Rx adapter cap to return If the packet transfers from - * the ethdev to eventdev use a SW service function - */ - -#define RTE_EVENTDEV_DETACHED (0) -#define RTE_EVENTDEV_ATTACHED (1) - -struct rte_eth_dev; - -/** Global structure used for maintaining state of allocated event devices */ -struct rte_eventdev_global { - uint8_t nb_devs; /**< Number of devices found */ -}; - -extern struct rte_eventdev *rte_eventdevs; -/** The pool of rte_eventdev structures. */ - -/** - * Get the rte_eventdev structure device pointer for the named device. - * - * @param name - * device name to select the device structure. - * - * @return - * - The rte_eventdev structure pointer for the given device ID. - */ -static inline struct rte_eventdev * -rte_event_pmd_get_named_dev(const char *name) -{ - struct rte_eventdev *dev; - unsigned int i; - - if (name == NULL) - return NULL; - - for (i = 0; i < RTE_EVENT_MAX_DEVS; i++) { - dev = &rte_eventdevs[i]; - if ((dev->attached == RTE_EVENTDEV_ATTACHED) && - (strcmp(dev->data->name, name) == 0)) - return dev; - } - - return NULL; -} - -/** - * Validate if the event device index is valid attached event device. - * - * @param dev_id - * Event device index. - * - * @return - * - If the device index is valid (1) or not (0). - */ -static inline unsigned -rte_event_pmd_is_valid_dev(uint8_t dev_id) -{ - struct rte_eventdev *dev; - - if (dev_id >= RTE_EVENT_MAX_DEVS) - return 0; - - dev = &rte_eventdevs[dev_id]; - if (dev->attached != RTE_EVENTDEV_ATTACHED) - return 0; - else - return 1; -} - -/** - * Definitions of all functions exported by a driver through the - * the generic structure of type *event_dev_ops* supplied in the - * *rte_eventdev* structure associated with a device. - */ - -/** - * Get device information of a device. - * - * @param dev - * Event device pointer - * @param dev_info - * Event device information structure - * - * @return - * Returns 0 on success - */ -typedef void (*eventdev_info_get_t)(struct rte_eventdev *dev, - struct rte_event_dev_info *dev_info); - -/** - * Configure a device. - * - * @param dev - * Event device pointer - * - * @return - * Returns 0 on success - */ -typedef int (*eventdev_configure_t)(const struct rte_eventdev *dev); - -/** - * Start a configured device. - * - * @param dev - * Event device pointer - * - * @return - * Returns 0 on success - */ -typedef int (*eventdev_start_t)(struct rte_eventdev *dev); - -/** - * Stop a configured device. - * - * @param dev - * Event device pointer - */ -typedef void (*eventdev_stop_t)(struct rte_eventdev *dev); - -/** - * Close a configured device. - * - * @param dev - * Event device pointer - * - * @return - * - 0 on success - * - (-EAGAIN) if can't close as device is busy - */ -typedef int (*eventdev_close_t)(struct rte_eventdev *dev); - -/** - * Retrieve the default event queue configuration. - * - * @param dev - * Event device pointer - * @param queue_id - * Event queue index - * @param[out] queue_conf - * Event queue configuration structure - * - */ -typedef void (*eventdev_queue_default_conf_get_t)(struct rte_eventdev *dev, - uint8_t queue_id, struct rte_event_queue_conf *queue_conf); - -/** - * Setup an event queue. - * - * @param dev - * Event device pointer - * @param queue_id - * Event queue index - * @param queue_conf - * Event queue configuration structure - * - * @return - * Returns 0 on success. - */ -typedef int (*eventdev_queue_setup_t)(struct rte_eventdev *dev, - uint8_t queue_id, - const struct rte_event_queue_conf *queue_conf); - -/** - * Release resources allocated by given event queue. - * - * @param dev - * Event device pointer - * @param queue_id - * Event queue index - * - */ -typedef void (*eventdev_queue_release_t)(struct rte_eventdev *dev, - uint8_t queue_id); - -/** - * Retrieve the default event port configuration. - * - * @param dev - * Event device pointer - * @param port_id - * Event port index - * @param[out] port_conf - * Event port configuration structure - * - */ -typedef void (*eventdev_port_default_conf_get_t)(struct rte_eventdev *dev, - uint8_t port_id, struct rte_event_port_conf *port_conf); - -/** - * Setup an event port. - * - * @param dev - * Event device pointer - * @param port_id - * Event port index - * @param port_conf - * Event port configuration structure - * - * @return - * Returns 0 on success. - */ -typedef int (*eventdev_port_setup_t)(struct rte_eventdev *dev, - uint8_t port_id, - const struct rte_event_port_conf *port_conf); - -/** - * Release memory resources allocated by given event port. - * - * @param port - * Event port pointer - * - */ -typedef void (*eventdev_port_release_t)(void *port); - -/** - * Link multiple source event queues to destination event port. - * - * @param dev - * Event device pointer - * @param port - * Event port pointer - * @param queues - * Points to an array of *nb_links* event queues to be linked - * to the event port. - * @param priorities - * Points to an array of *nb_links* service priorities associated with each - * event queue link to event port. - * @param nb_links - * The number of links to establish - * - * @return - * Returns 0 on success. - * - */ -typedef int (*eventdev_port_link_t)(struct rte_eventdev *dev, void *port, - const uint8_t queues[], const uint8_t priorities[], - uint16_t nb_links); - -/** - * Unlink multiple source event queues from destination event port. - * - * @param dev - * Event device pointer - * @param port - * Event port pointer - * @param queues - * An array of *nb_unlinks* event queues to be unlinked from the event port. - * @param nb_unlinks - * The number of unlinks to establish - * - * @return - * Returns 0 on success. - * - */ -typedef int (*eventdev_port_unlink_t)(struct rte_eventdev *dev, void *port, - uint8_t queues[], uint16_t nb_unlinks); - -/** - * Unlinks in progress. Returns number of unlinks that the PMD is currently - * performing, but have not yet been completed. - * - * @param dev - * Event device pointer - * - * @param port - * Event port pointer - * - * @return - * Returns the number of in-progress unlinks. Zero is returned if none are - * in progress. - */ -typedef int (*eventdev_port_unlinks_in_progress_t)(struct rte_eventdev *dev, - void *port); - -/** - * Converts nanoseconds to *timeout_ticks* value for rte_event_dequeue() - * - * @param dev - * Event device pointer - * @param ns - * Wait time in nanosecond - * @param[out] timeout_ticks - * Value for the *timeout_ticks* parameter in rte_event_dequeue() function - * - * @return - * Returns 0 on success. - * - */ -typedef int (*eventdev_dequeue_timeout_ticks_t)(struct rte_eventdev *dev, - uint64_t ns, uint64_t *timeout_ticks); - -/** - * Dump internal information - * - * @param dev - * Event device pointer - * @param f - * A pointer to a file for output - * - */ -typedef void (*eventdev_dump_t)(struct rte_eventdev *dev, FILE *f); - -/** - * Retrieve a set of statistics from device - * - * @param dev - * Event device pointer - * @param mode - * Level (device, port or queue) - * @param queue_port_id - * Queue or port number depending on mode - * @param ids - * The stat ids to retrieve - * @param values - * The returned stat values - * @param n - * The number of id values and entries in the values array - * @return - * The number of stat values successfully filled into the values array - */ -typedef int (*eventdev_xstats_get_t)(const struct rte_eventdev *dev, - enum rte_event_dev_xstats_mode mode, uint8_t queue_port_id, - const unsigned int ids[], uint64_t values[], unsigned int n); - -/** - * Resets the statistic values in xstats for the device, based on mode. - */ -typedef int (*eventdev_xstats_reset_t)(struct rte_eventdev *dev, - enum rte_event_dev_xstats_mode mode, - int16_t queue_port_id, - const uint32_t ids[], - uint32_t nb_ids); - -/** - * Get names of extended stats of an event device - * - * @param dev - * Event device pointer - * @param mode - * Level (device, port or queue) - * @param queue_port_id - * Queue or port number depending on mode - * @param xstats_names - * Array of name values to be filled in - * @param ids - * The stat ids to retrieve - * @param size - * Number of values in the xstats_names array - * @return - * When size >= the number of stats, return the number of stat values filled - * into the array. - * When size < the number of available stats, return the number of stats - * values, and do not fill in any data into xstats_names. - */ -typedef int (*eventdev_xstats_get_names_t)(const struct rte_eventdev *dev, - enum rte_event_dev_xstats_mode mode, uint8_t queue_port_id, - struct rte_event_dev_xstats_name *xstats_names, - unsigned int *ids, unsigned int size); - -/** - * Get value of one stats and optionally return its id - * - * @param dev - * Event device pointer - * @param name - * The name of the stat to retrieve - * @param id - * Pointer to an unsigned int where we store the stat-id for future reference. - * This pointer may be null if the id is not required. - * @return - * The value of the stat, or (uint64_t)-1 if the stat is not found. - * If the stat is not found, the id value will be returned as (unsigned)-1, - * if id pointer is non-NULL - */ -typedef uint64_t (*eventdev_xstats_get_by_name)(const struct rte_eventdev *dev, - const char *name, unsigned int *id); - - -/** - * Retrieve the event device's ethdev Rx adapter capabilities for the - * specified ethernet port - * - * @param dev - * Event device pointer - * - * @param eth_dev - * Ethernet device pointer - * - * @param[out] caps - * A pointer to memory filled with Rx event adapter capabilities. - * - * @return - * - 0: Success, driver provides Rx event adapter capabilities for the - * ethernet device. - * - <0: Error code returned by the driver function. - * - */ -typedef int (*eventdev_eth_rx_adapter_caps_get_t) - (const struct rte_eventdev *dev, - const struct rte_eth_dev *eth_dev, - uint32_t *caps); - -struct rte_event_eth_rx_adapter_queue_conf; - -/** - * Retrieve the event device's timer adapter capabilities, as well as the ops - * structure that an event timer adapter should call through to enter the - * driver - * - * @param dev - * Event device pointer - * - * @param flags - * Flags that can be used to determine how to select an event timer - * adapter ops structure - * - * @param[out] caps - * A pointer to memory filled with Rx event adapter capabilities. - * - * @param[out] ops - * A pointer to the ops pointer to set with the address of the desired ops - * structure - * - * @return - * - 0: Success, driver provides Rx event adapter capabilities for the - * ethernet device. - * - <0: Error code returned by the driver function. - * - */ -typedef int (*eventdev_timer_adapter_caps_get_t)( - const struct rte_eventdev *dev, - uint64_t flags, - uint32_t *caps, - const struct rte_event_timer_adapter_ops **ops); - -/** - * Add ethernet Rx queues to event device. This callback is invoked if - * the caps returned from rte_eventdev_eth_rx_adapter_caps_get(, eth_port_id) - * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set. - * - * @param dev - * Event device pointer - * - * @param eth_dev - * Ethernet device pointer - * - * @param rx_queue_id - * Ethernet device receive queue index - * - * @param queue_conf - * Additional configuration structure - - * @return - * - 0: Success, ethernet receive queue added successfully. - * - <0: Error code returned by the driver function. - * - */ -typedef int (*eventdev_eth_rx_adapter_queue_add_t)( - const struct rte_eventdev *dev, - const struct rte_eth_dev *eth_dev, - int32_t rx_queue_id, - const struct rte_event_eth_rx_adapter_queue_conf *queue_conf); - -/** - * Delete ethernet Rx queues from event device. This callback is invoked if - * the caps returned from eventdev_eth_rx_adapter_caps_get(, eth_port_id) - * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set. - * - * @param dev - * Event device pointer - * - * @param eth_dev - * Ethernet device pointer - * - * @param rx_queue_id - * Ethernet device receive queue index - * - * @return - * - 0: Success, ethernet receive queue deleted successfully. - * - <0: Error code returned by the driver function. - * - */ -typedef int (*eventdev_eth_rx_adapter_queue_del_t) - (const struct rte_eventdev *dev, - const struct rte_eth_dev *eth_dev, - int32_t rx_queue_id); - -/** - * Start ethernet Rx adapter. This callback is invoked if - * the caps returned from eventdev_eth_rx_adapter_caps_get(.., eth_port_id) - * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set and Rx queues - * from eth_port_id have been added to the event device. - * - * @param dev - * Event device pointer - * - * @param eth_dev - * Ethernet device pointer - * - * @return - * - 0: Success, ethernet Rx adapter started successfully. - * - <0: Error code returned by the driver function. - */ -typedef int (*eventdev_eth_rx_adapter_start_t) - (const struct rte_eventdev *dev, - const struct rte_eth_dev *eth_dev); - -/** - * Stop ethernet Rx adapter. This callback is invoked if - * the caps returned from eventdev_eth_rx_adapter_caps_get(..,eth_port_id) - * has RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT set and Rx queues - * from eth_port_id have been added to the event device. - * - * @param dev - * Event device pointer - * - * @param eth_dev - * Ethernet device pointer - * - * @return - * - 0: Success, ethernet Rx adapter stopped successfully. - * - <0: Error code returned by the driver function. - */ -typedef int (*eventdev_eth_rx_adapter_stop_t) - (const struct rte_eventdev *dev, - const struct rte_eth_dev *eth_dev); - -struct rte_event_eth_rx_adapter_stats; - -/** - * Retrieve ethernet Rx adapter statistics. - * - * @param dev - * Event device pointer - * - * @param eth_dev - * Ethernet device pointer - * - * @param[out] stats - * Pointer to stats structure - * - * @return - * Return 0 on success. - */ - -typedef int (*eventdev_eth_rx_adapter_stats_get) - (const struct rte_eventdev *dev, - const struct rte_eth_dev *eth_dev, - struct rte_event_eth_rx_adapter_stats *stats); -/** - * Reset ethernet Rx adapter statistics. - * - * @param dev - * Event device pointer - * - * @param eth_dev - * Ethernet device pointer - * - * @return - * Return 0 on success. - */ -typedef int (*eventdev_eth_rx_adapter_stats_reset) - (const struct rte_eventdev *dev, - const struct rte_eth_dev *eth_dev); -/** - * Start eventdev selftest. - * - * @return - * Return 0 on success. - */ -typedef int (*eventdev_selftest)(void); - -typedef uint32_t rte_event_pmd_selftest_seqn_t; -extern int rte_event_pmd_selftest_seqn_dynfield_offset; - -/** - * Read test sequence number from mbuf. - * - * @param mbuf Structure to read from. - * @return pointer to test sequence number. - */ -__rte_internal -static inline rte_event_pmd_selftest_seqn_t * -rte_event_pmd_selftest_seqn(struct rte_mbuf *mbuf) -{ - return RTE_MBUF_DYNFIELD(mbuf, - rte_event_pmd_selftest_seqn_dynfield_offset, - rte_event_pmd_selftest_seqn_t *); -} - -struct rte_cryptodev; - -/** - * This API may change without prior notice - * - * Retrieve the event device's crypto adapter capabilities for the - * specified cryptodev - * - * @param dev - * Event device pointer - * - * @param cdev - * cryptodev pointer - * - * @param[out] caps - * A pointer to memory filled with event adapter capabilities. - * It is expected to be pre-allocated & initialized by caller. - * - * @return - * - 0: Success, driver provides event adapter capabilities for the - * cryptodev. - * - <0: Error code returned by the driver function. - * - */ -typedef int (*eventdev_crypto_adapter_caps_get_t) - (const struct rte_eventdev *dev, - const struct rte_cryptodev *cdev, - uint32_t *caps); - -/** - * This API may change without prior notice - * - * Add crypto queue pair to event device. This callback is invoked if - * the caps returned from rte_event_crypto_adapter_caps_get(, cdev_id) - * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set. - * - * @param dev - * Event device pointer - * - * @param cdev - * cryptodev pointer - * - * @param queue_pair_id - * cryptodev queue pair identifier. - * - * @param event - * Event information required for binding cryptodev queue pair to event queue. - * This structure will have a valid value for only those HW PMDs supporting - * @see RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_QP_EV_BIND capability. - * - * @return - * - 0: Success, cryptodev queue pair added successfully. - * - <0: Error code returned by the driver function. - * - */ -typedef int (*eventdev_crypto_adapter_queue_pair_add_t) - (const struct rte_eventdev *dev, - const struct rte_cryptodev *cdev, - int32_t queue_pair_id, - const struct rte_event *event); - - -/** - * This API may change without prior notice - * - * Delete crypto queue pair to event device. This callback is invoked if - * the caps returned from rte_event_crypto_adapter_caps_get(, cdev_id) - * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set. - * - * @param dev - * Event device pointer - * - * @param cdev - * cryptodev pointer - * - * @param queue_pair_id - * cryptodev queue pair identifier. - * - * @return - * - 0: Success, cryptodev queue pair deleted successfully. - * - <0: Error code returned by the driver function. - * - */ -typedef int (*eventdev_crypto_adapter_queue_pair_del_t) - (const struct rte_eventdev *dev, - const struct rte_cryptodev *cdev, - int32_t queue_pair_id); - -/** - * Start crypto adapter. This callback is invoked if - * the caps returned from rte_event_crypto_adapter_caps_get(.., cdev_id) - * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set and queue pairs - * from cdev_id have been added to the event device. - * - * @param dev - * Event device pointer - * - * @param cdev - * Crypto device pointer - * - * @return - * - 0: Success, crypto adapter started successfully. - * - <0: Error code returned by the driver function. - */ -typedef int (*eventdev_crypto_adapter_start_t) - (const struct rte_eventdev *dev, - const struct rte_cryptodev *cdev); - -/** - * Stop crypto adapter. This callback is invoked if - * the caps returned from rte_event_crypto_adapter_caps_get(.., cdev_id) - * has RTE_EVENT_CRYPTO_ADAPTER_CAP_INTERNAL_PORT_* set and queue pairs - * from cdev_id have been added to the event device. - * - * @param dev - * Event device pointer - * - * @param cdev - * Crypto device pointer - * - * @return - * - 0: Success, crypto adapter stopped successfully. - * - <0: Error code returned by the driver function. - */ -typedef int (*eventdev_crypto_adapter_stop_t) - (const struct rte_eventdev *dev, - const struct rte_cryptodev *cdev); - -struct rte_event_crypto_adapter_stats; - -/** - * Retrieve crypto adapter statistics. - * - * @param dev - * Event device pointer - * - * @param cdev - * Crypto device pointer - * - * @param[out] stats - * Pointer to stats structure - * - * @return - * Return 0 on success. - */ - -typedef int (*eventdev_crypto_adapter_stats_get) - (const struct rte_eventdev *dev, - const struct rte_cryptodev *cdev, - struct rte_event_crypto_adapter_stats *stats); - -/** - * Reset crypto adapter statistics. - * - * @param dev - * Event device pointer - * - * @param cdev - * Crypto device pointer - * - * @return - * Return 0 on success. - */ - -typedef int (*eventdev_crypto_adapter_stats_reset) - (const struct rte_eventdev *dev, - const struct rte_cryptodev *cdev); - -/** - * Retrieve the event device's eth Tx adapter capabilities. - * - * @param dev - * Event device pointer - * - * @param eth_dev - * Ethernet device pointer - * - * @param[out] caps - * A pointer to memory filled with eth Tx adapter capabilities. - * - * @return - * - 0: Success, driver provides eth Tx adapter capabilities - * - <0: Error code returned by the driver function. - * - */ -typedef int (*eventdev_eth_tx_adapter_caps_get_t) - (const struct rte_eventdev *dev, - const struct rte_eth_dev *eth_dev, - uint32_t *caps); - -/** - * Create adapter callback. - * - * @param id - * Adapter identifier - * - * @param dev - * Event device pointer - * - * @return - * - 0: Success. - * - <0: Error code on failure. - */ -typedef int (*eventdev_eth_tx_adapter_create_t)(uint8_t id, - const struct rte_eventdev *dev); - -/** - * Free adapter callback. - * - * @param id - * Adapter identifier - * - * @param dev - * Event device pointer - * - * @return - * - 0: Success. - * - <0: Error code on failure. - */ -typedef int (*eventdev_eth_tx_adapter_free_t)(uint8_t id, - const struct rte_eventdev *dev); - -/** - * Add a Tx queue to the adapter. - * A queue value of -1 is used to indicate all - * queues within the device. - * - * @param id - * Adapter identifier - * - * @param dev - * Event device pointer - * - * @param eth_dev - * Ethernet device pointer - * - * @param tx_queue_id - * Transmit queue index - * - * @return - * - 0: Success. - * - <0: Error code on failure. - */ -typedef int (*eventdev_eth_tx_adapter_queue_add_t)( - uint8_t id, - const struct rte_eventdev *dev, - const struct rte_eth_dev *eth_dev, - int32_t tx_queue_id); - -/** - * Delete a Tx queue from the adapter. - * A queue value of -1 is used to indicate all - * queues within the device, that have been added to this - * adapter. - * - * @param id - * Adapter identifier - * - * @param dev - * Event device pointer - * - * @param eth_dev - * Ethernet device pointer - * - * @param tx_queue_id - * Transmit queue index - * - * @return - * - 0: Success, Queues deleted successfully. - * - <0: Error code on failure. - */ -typedef int (*eventdev_eth_tx_adapter_queue_del_t)( - uint8_t id, - const struct rte_eventdev *dev, - const struct rte_eth_dev *eth_dev, - int32_t tx_queue_id); - -/** - * Start the adapter. - * - * @param id - * Adapter identifier - * - * @param dev - * Event device pointer - * - * @return - * - 0: Success, Adapter started correctly. - * - <0: Error code on failure. - */ -typedef int (*eventdev_eth_tx_adapter_start_t)(uint8_t id, - const struct rte_eventdev *dev); - -/** - * Stop the adapter. - * - * @param id - * Adapter identifier - * - * @param dev - * Event device pointer - * - * @return - * - 0: Success. - * - <0: Error code on failure. - */ -typedef int (*eventdev_eth_tx_adapter_stop_t)(uint8_t id, - const struct rte_eventdev *dev); - -struct rte_event_eth_tx_adapter_stats; - -/** - * Retrieve statistics for an adapter - * - * @param id - * Adapter identifier - * - * @param dev - * Event device pointer - * - * @param [out] stats - * A pointer to structure used to retrieve statistics for an adapter - * - * @return - * - 0: Success, statistics retrieved successfully. - * - <0: Error code on failure. - */ -typedef int (*eventdev_eth_tx_adapter_stats_get_t)( - uint8_t id, - const struct rte_eventdev *dev, - struct rte_event_eth_tx_adapter_stats *stats); - -/** - * Reset statistics for an adapter - * - * @param id - * Adapter identifier - * - * @param dev - * Event device pointer - * - * @return - * - 0: Success, statistics retrieved successfully. - * - <0: Error code on failure. - */ -typedef int (*eventdev_eth_tx_adapter_stats_reset_t)(uint8_t id, - const struct rte_eventdev *dev); - -/** Event device operations function pointer table */ -struct rte_eventdev_ops { - eventdev_info_get_t dev_infos_get; /**< Get device info. */ - eventdev_configure_t dev_configure; /**< Configure device. */ - eventdev_start_t dev_start; /**< Start device. */ - eventdev_stop_t dev_stop; /**< Stop device. */ - eventdev_close_t dev_close; /**< Close device. */ - - eventdev_queue_default_conf_get_t queue_def_conf; - /**< Get default queue configuration. */ - eventdev_queue_setup_t queue_setup; - /**< Set up an event queue. */ - eventdev_queue_release_t queue_release; - /**< Release an event queue. */ - - eventdev_port_default_conf_get_t port_def_conf; - /**< Get default port configuration. */ - eventdev_port_setup_t port_setup; - /**< Set up an event port. */ - eventdev_port_release_t port_release; - /**< Release an event port. */ - - eventdev_port_link_t port_link; - /**< Link event queues to an event port. */ - eventdev_port_unlink_t port_unlink; - /**< Unlink event queues from an event port. */ - eventdev_port_unlinks_in_progress_t port_unlinks_in_progress; - /**< Unlinks in progress on an event port. */ - eventdev_dequeue_timeout_ticks_t timeout_ticks; - /**< Converts ns to *timeout_ticks* value for rte_event_dequeue() */ - eventdev_dump_t dump; - /* Dump internal information */ - - eventdev_xstats_get_t xstats_get; - /**< Get extended device statistics. */ - eventdev_xstats_get_names_t xstats_get_names; - /**< Get names of extended stats. */ - eventdev_xstats_get_by_name xstats_get_by_name; - /**< Get one value by name. */ - eventdev_xstats_reset_t xstats_reset; - /**< Reset the statistics values in xstats. */ - - eventdev_eth_rx_adapter_caps_get_t eth_rx_adapter_caps_get; - /**< Get ethernet Rx adapter capabilities */ - eventdev_eth_rx_adapter_queue_add_t eth_rx_adapter_queue_add; - /**< Add Rx queues to ethernet Rx adapter */ - eventdev_eth_rx_adapter_queue_del_t eth_rx_adapter_queue_del; - /**< Delete Rx queues from ethernet Rx adapter */ - eventdev_eth_rx_adapter_start_t eth_rx_adapter_start; - /**< Start ethernet Rx adapter */ - eventdev_eth_rx_adapter_stop_t eth_rx_adapter_stop; - /**< Stop ethernet Rx adapter */ - eventdev_eth_rx_adapter_stats_get eth_rx_adapter_stats_get; - /**< Get ethernet Rx stats */ - eventdev_eth_rx_adapter_stats_reset eth_rx_adapter_stats_reset; - /**< Reset ethernet Rx stats */ - - eventdev_timer_adapter_caps_get_t timer_adapter_caps_get; - /**< Get timer adapter capabilities */ - - eventdev_crypto_adapter_caps_get_t crypto_adapter_caps_get; - /**< Get crypto adapter capabilities */ - eventdev_crypto_adapter_queue_pair_add_t crypto_adapter_queue_pair_add; - /**< Add queue pair to crypto adapter */ - eventdev_crypto_adapter_queue_pair_del_t crypto_adapter_queue_pair_del; - /**< Delete queue pair from crypto adapter */ - eventdev_crypto_adapter_start_t crypto_adapter_start; - /**< Start crypto adapter */ - eventdev_crypto_adapter_stop_t crypto_adapter_stop; - /**< Stop crypto adapter */ - eventdev_crypto_adapter_stats_get crypto_adapter_stats_get; - /**< Get crypto stats */ - eventdev_crypto_adapter_stats_reset crypto_adapter_stats_reset; - /**< Reset crypto stats */ - - eventdev_eth_tx_adapter_caps_get_t eth_tx_adapter_caps_get; - /**< Get ethernet Tx adapter capabilities */ - - eventdev_eth_tx_adapter_create_t eth_tx_adapter_create; - /**< Create adapter callback */ - eventdev_eth_tx_adapter_free_t eth_tx_adapter_free; - /**< Free adapter callback */ - eventdev_eth_tx_adapter_queue_add_t eth_tx_adapter_queue_add; - /**< Add Tx queues to the eth Tx adapter */ - eventdev_eth_tx_adapter_queue_del_t eth_tx_adapter_queue_del; - /**< Delete Tx queues from the eth Tx adapter */ - eventdev_eth_tx_adapter_start_t eth_tx_adapter_start; - /**< Start eth Tx adapter */ - eventdev_eth_tx_adapter_stop_t eth_tx_adapter_stop; - /**< Stop eth Tx adapter */ - eventdev_eth_tx_adapter_stats_get_t eth_tx_adapter_stats_get; - /**< Get eth Tx adapter statistics */ - eventdev_eth_tx_adapter_stats_reset_t eth_tx_adapter_stats_reset; - /**< Reset eth Tx adapter statistics */ - - eventdev_selftest dev_selftest; - /**< Start eventdev Selftest */ - - eventdev_stop_flush_t dev_stop_flush; - /**< User-provided event flush function */ -}; - -/** - * Allocates a new eventdev slot for an event device and returns the pointer - * to that slot for the driver to use. - * - * @param name - * Unique identifier name for each device - * @param socket_id - * Socket to allocate resources on. - * @return - * - Slot in the rte_dev_devices array for a new device; - */ -struct rte_eventdev * -rte_event_pmd_allocate(const char *name, int socket_id); - -/** - * Release the specified eventdev device. - * - * @param eventdev - * The *eventdev* pointer is the address of the *rte_eventdev* structure. - * @return - * - 0 on success, negative on error - */ -int -rte_event_pmd_release(struct rte_eventdev *eventdev); - -#ifdef __cplusplus -} -#endif - -#endif /* _RTE_EVENTDEV_PMD_H_ */ diff --git a/lib/librte_eventdev/rte_eventdev_pmd_pci.h b/lib/librte_eventdev/rte_eventdev_pmd_pci.h deleted file mode 100644 index 5f238bf496..0000000000 --- a/lib/librte_eventdev/rte_eventdev_pmd_pci.h +++ /dev/null @@ -1,158 +0,0 @@ -/* SPDX-License-Identifier: BSD-3-Clause - * Copyright(c) 2016-2017 Cavium, Inc - */ - -#ifndef _RTE_EVENTDEV_PMD_PCI_H_ -#define _RTE_EVENTDEV_PMD_PCI_H_ - -/** @file - * RTE Eventdev PCI PMD APIs - * - * @note - * These API are from event PCI PMD only and user applications should not call - * them directly. - */ - - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#include -#include -#include -#include -#include - -#include "rte_eventdev_pmd.h" - -typedef int (*eventdev_pmd_pci_callback_t)(struct rte_eventdev *dev); - -/** - * @internal - * Wrapper for use by pci drivers as a .probe function to attach to an event - * interface. Same as rte_event_pmd_pci_probe, except caller can specify - * the name. - */ -__rte_experimental -static inline int -rte_event_pmd_pci_probe_named(struct rte_pci_driver *pci_drv, - struct rte_pci_device *pci_dev, - size_t private_data_size, - eventdev_pmd_pci_callback_t devinit, - const char *name) -{ - struct rte_eventdev *eventdev; - int retval; - - if (devinit == NULL) - return -EINVAL; - - eventdev = rte_event_pmd_allocate(name, - pci_dev->device.numa_node); - if (eventdev == NULL) - return -ENOMEM; - - if (rte_eal_process_type() == RTE_PROC_PRIMARY) { - eventdev->data->dev_private = - rte_zmalloc_socket( - "eventdev private structure", - private_data_size, - RTE_CACHE_LINE_SIZE, - rte_socket_id()); - - if (eventdev->data->dev_private == NULL) - rte_panic("Cannot allocate memzone for private " - "device data"); - } - - eventdev->dev = &pci_dev->device; - - /* Invoke PMD device initialization function */ - retval = devinit(eventdev); - if (retval == 0) - return 0; - - RTE_EDEV_LOG_ERR("driver %s: (vendor_id=0x%x device_id=0x%x)" - " failed", pci_drv->driver.name, - (unsigned int) pci_dev->id.vendor_id, - (unsigned int) pci_dev->id.device_id); - - rte_event_pmd_release(eventdev); - - return -ENXIO; -} - -/** - * @internal - * Wrapper for use by pci drivers as a .probe function to attach to a event - * interface. - */ -static inline int -rte_event_pmd_pci_probe(struct rte_pci_driver *pci_drv, - struct rte_pci_device *pci_dev, - size_t private_data_size, - eventdev_pmd_pci_callback_t devinit) -{ - char eventdev_name[RTE_EVENTDEV_NAME_MAX_LEN]; - - rte_pci_device_name(&pci_dev->addr, eventdev_name, - sizeof(eventdev_name)); - - return rte_event_pmd_pci_probe_named(pci_drv, - pci_dev, - private_data_size, - devinit, - eventdev_name); -} - -/** - * @internal - * Wrapper for use by pci drivers as a .remove function to detach a event - * interface. - */ -static inline int -rte_event_pmd_pci_remove(struct rte_pci_device *pci_dev, - eventdev_pmd_pci_callback_t devuninit) -{ - struct rte_eventdev *eventdev; - char eventdev_name[RTE_EVENTDEV_NAME_MAX_LEN]; - int ret = 0; - - if (pci_dev == NULL) - return -EINVAL; - - rte_pci_device_name(&pci_dev->addr, eventdev_name, - sizeof(eventdev_name)); - - eventdev = rte_event_pmd_get_named_dev(eventdev_name); - if (eventdev == NULL) - return -ENODEV; - - if (rte_eal_process_type() == RTE_PROC_PRIMARY) { - ret = rte_event_dev_close(eventdev->data->dev_id); - if (ret < 0) - return ret; - } - - /* Invoke PMD device un-init function */ - if (devuninit) - ret = devuninit(eventdev); - if (ret) - return ret; - - /* Free event device */ - rte_event_pmd_release(eventdev); - - eventdev->dev = NULL; - - return 0; -} - -#ifdef __cplusplus -} -#endif - -#endif /* _RTE_EVENTDEV_PMD_PCI_H_ */ diff --git a/lib/librte_eventdev/rte_eventdev_pmd_vdev.h b/lib/librte_eventdev/rte_eventdev_pmd_vdev.h deleted file mode 100644 index 8c64a06743..0000000000 --- a/lib/librte_eventdev/rte_eventdev_pmd_vdev.h +++ /dev/null @@ -1,108 +0,0 @@ -/* SPDX-License-Identifier: BSD-3-Clause - * Copyright(c) 2016-2017 Cavium, Inc - */ - -#ifndef _RTE_EVENTDEV_PMD_VDEV_H_ -#define _RTE_EVENTDEV_PMD_VDEV_H_ - -/** @file - * RTE Eventdev VDEV PMD APIs - * - * @note - * These API are from event VDEV PMD only and user applications should not call - * them directly. - */ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#include -#include -#include -#include - -#include "rte_eventdev_pmd.h" - -/** - * @internal - * Creates a new virtual event device and returns the pointer to that device. - * - * @param name - * PMD type name - * @param dev_private_size - * Size of event PMDs private data - * @param socket_id - * Socket to allocate resources on. - * - * @return - * - Eventdev pointer if device is successfully created. - * - NULL if device cannot be created. - */ -static inline struct rte_eventdev * -rte_event_pmd_vdev_init(const char *name, size_t dev_private_size, - int socket_id) -{ - - struct rte_eventdev *eventdev; - - /* Allocate device structure */ - eventdev = rte_event_pmd_allocate(name, socket_id); - if (eventdev == NULL) - return NULL; - - /* Allocate private device structure */ - if (rte_eal_process_type() == RTE_PROC_PRIMARY) { - eventdev->data->dev_private = - rte_zmalloc_socket("eventdev device private", - dev_private_size, - RTE_CACHE_LINE_SIZE, - socket_id); - - if (eventdev->data->dev_private == NULL) - rte_panic("Cannot allocate memzone for private device" - " data"); - } - - return eventdev; -} - -/** - * @internal - * Destroy the given virtual event device - * - * @param name - * PMD type name - * @return - * - 0 on success, negative on error - */ -static inline int -rte_event_pmd_vdev_uninit(const char *name) -{ - int ret; - struct rte_eventdev *eventdev; - - if (name == NULL) - return -EINVAL; - - eventdev = rte_event_pmd_get_named_dev(name); - if (eventdev == NULL) - return -ENODEV; - - ret = rte_event_dev_close(eventdev->data->dev_id); - if (ret < 0) - return ret; - - /* Free the event device */ - rte_event_pmd_release(eventdev); - - return 0; -} - -#ifdef __cplusplus -} -#endif - -#endif /* _RTE_EVENTDEV_PMD_VDEV_H_ */