X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_eventdev%2Frte_eventdev.h;h=226f352ad2f268fee40380f660ee6c29c1672c10;hb=refs%2Fheads%2Fmempool_20200116b;hp=a24213ea7858c43c3adce1d0876ef4bc95c6e6e8;hpb=e279bbe4b2b831972ae53d95c37a17fdff13a700;p=dpdk.git diff --git a/lib/librte_eventdev/rte_eventdev.h b/lib/librte_eventdev/rte_eventdev.h index a24213ea78..226f352ad2 100644 --- a/lib/librte_eventdev/rte_eventdev.h +++ b/lib/librte_eventdev/rte_eventdev.h @@ -181,9 +181,8 @@ * The *dequeue* operation gets one or more events from the event ports. * The application process the events and send to downstream event queue through * rte_event_enqueue_burst() if it is an intermediate stage of event processing, - * on the final stage, the application may send to different subsystem like - * ethdev to send the packet/event on the wire using ethdev - * rte_eth_tx_burst() API. + * on the final stage, the application may use Tx adapter API for maintaining + * the ingress order and then send the packet/event on the wire. * * The point at which events are scheduled to ports depends on the device. * For hardware devices, scheduling occurs asynchronously without any software @@ -1112,7 +1111,7 @@ struct rte_event { * */ int -rte_event_eth_rx_adapter_caps_get(uint8_t dev_id, uint8_t eth_port_id, +rte_event_eth_rx_adapter_caps_get(uint8_t dev_id, uint16_t eth_port_id, uint32_t *caps); #define RTE_EVENT_TIMER_ADAPTER_CAP_INTERNAL_PORT (1ULL << 0) @@ -1131,7 +1130,7 @@ rte_event_eth_rx_adapter_caps_get(uint8_t dev_id, uint8_t eth_port_id, * - 0: Success, driver provided event timer adapter capabilities. * - <0: Error code returned by the driver function. */ -int __rte_experimental +int rte_event_timer_adapter_caps_get(uint8_t dev_id, uint32_t *caps); /* Crypto adapter capability bitmap flag */ @@ -1155,14 +1154,11 @@ rte_event_timer_adapter_caps_get(uint8_t dev_id, uint32_t *caps); */ #define RTE_EVENT_CRYPTO_ADAPTER_CAP_SESSION_PRIVATE_DATA 0x8 -/**< Flag indicates HW/SW suports a mechanism to store and retrieve +/**< Flag indicates HW/SW supports a mechanism to store and retrieve * the private data information along with the crypto session. */ /** - * @warning - * @b EXPERIMENTAL: this API may change without prior notice - * * Retrieve the event device's crypto adapter capabilities for the * specified cryptodev device * @@ -1182,10 +1178,36 @@ rte_event_timer_adapter_caps_get(uint8_t dev_id, uint32_t *caps); * - <0: Error code returned by the driver function. * */ -int __rte_experimental +int rte_event_crypto_adapter_caps_get(uint8_t dev_id, uint8_t cdev_id, uint32_t *caps); +/* Ethdev Tx adapter capability bitmap flags */ +#define RTE_EVENT_ETH_TX_ADAPTER_CAP_INTERNAL_PORT 0x1 +/**< This flag is sent when the PMD supports a packet transmit callback + */ + +/** + * Retrieve the event device's eth Tx adapter capabilities + * + * @param dev_id + * The identifier of the device. + * + * @param eth_port_id + * The identifier of the ethernet device. + * + * @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. + * + */ +int +rte_event_eth_tx_adapter_caps_get(uint8_t dev_id, uint16_t eth_port_id, + uint32_t *caps); + struct rte_eventdev_ops; struct rte_eventdev; @@ -1204,6 +1226,16 @@ 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 uint16_t (*event_tx_adapter_enqueue)(void *port, + struct rte_event ev[], uint16_t nb_events); +/**< @internal Enqueue burst of events on port of a device */ + +typedef uint16_t (*event_tx_adapter_enqueue_same_dest)(void *port, + struct rte_event ev[], uint16_t nb_events); +/**< @internal Enqueue burst of events on port of a device supporting + * burst having same destination Ethernet port & Tx queue. + */ + #define RTE_EVENTDEV_NAME_MAX_LEN (64) /**< @internal Max length of name of event PMD */ @@ -1250,6 +1282,9 @@ struct rte_eventdev_data { char name[RTE_EVENTDEV_NAME_MAX_LEN]; /**< Unique identifier name */ + + uint64_t reserved_64s[4]; /**< Reserved for future fields */ + void *reserved_ptrs[4]; /**< Reserved for future fields */ } __rte_cache_aligned; /** @internal The data structure associated with each event device. */ @@ -1266,7 +1301,12 @@ struct rte_eventdev { /**< Pointer to PMD dequeue function. */ event_dequeue_burst_t dequeue_burst; /**< Pointer to PMD dequeue burst function. */ - + event_tx_adapter_enqueue_same_dest txa_enqueue_same_dest; + /**< Pointer to PMD eth Tx adapter burst enqueue function with + * events destined to same Eth port & Tx queue. + */ + event_tx_adapter_enqueue txa_enqueue; + /**< Pointer to PMD eth Tx adapter enqueue function. */ struct rte_eventdev_data *data; /**< Pointer to device data */ struct rte_eventdev_ops *dev_ops; @@ -1277,6 +1317,9 @@ struct rte_eventdev { RTE_STD_C11 uint8_t attached : 1; /**< Flag indicating the device is attached */ + + uint64_t reserved_64s[4]; /**< Reserved for future fields */ + void *reserved_ptrs[4]; /**< Reserved for future fields */ } __rte_cache_aligned; extern struct rte_eventdev *rte_eventdevs; @@ -1291,12 +1334,12 @@ __rte_event_enqueue_burst(uint8_t dev_id, uint8_t port_id, #ifdef RTE_LIBRTE_EVENTDEV_DEBUG if (dev_id >= RTE_EVENT_MAX_DEVS || !rte_eventdevs[dev_id].attached) { - rte_errno = -EINVAL; + rte_errno = EINVAL; return 0; } if (port_id >= dev->data->nb_ports) { - rte_errno = -EINVAL; + rte_errno = EINVAL; return 0; } #endif @@ -1335,7 +1378,8 @@ __rte_event_enqueue_burst(uint8_t dev_id, uint8_t port_id, * which contain the event object enqueue operations to be processed. * @param nb_events * The number of event objects to enqueue, typically number of - * rte_event_port_enqueue_depth() available for this port. + * rte_event_port_attr_get(...RTE_EVENT_PORT_ATTR_ENQ_DEPTH...) + * available for this port. * * @return * The number of event objects actually enqueued on the event device. The @@ -1344,13 +1388,13 @@ __rte_event_enqueue_burst(uint8_t dev_id, uint8_t port_id, * *rte_event*. If the return value is less than *nb_events*, the remaining * events at the end of ev[] are not consumed and the caller has to take care * of them, and rte_errno is set accordingly. Possible errno values include: - * - -EINVAL The port ID is invalid, device ID is invalid, an event's queue + * - EINVAL The port ID is invalid, device ID is invalid, an event's queue * ID is invalid, or an event's sched type doesn't match the * capabilities of the destination queue. - * - -ENOSPC The event port was backpressured and unable to enqueue + * - ENOSPC The event port was backpressured and unable to enqueue * one or more events. This error code is only applicable to * closed systems. - * @see rte_event_port_enqueue_depth() + * @see rte_event_port_attr_get(), RTE_EVENT_PORT_ATTR_ENQ_DEPTH */ static inline uint16_t rte_event_enqueue_burst(uint8_t dev_id, uint8_t port_id, @@ -1384,7 +1428,8 @@ rte_event_enqueue_burst(uint8_t dev_id, uint8_t port_id, * which contain the event object enqueue operations to be processed. * @param nb_events * The number of event objects to enqueue, typically number of - * rte_event_port_enqueue_depth() available for this port. + * rte_event_port_attr_get(...RTE_EVENT_PORT_ATTR_ENQ_DEPTH...) + * available for this port. * * @return * The number of event objects actually enqueued on the event device. The @@ -1393,13 +1438,14 @@ rte_event_enqueue_burst(uint8_t dev_id, uint8_t port_id, * *rte_event*. If the return value is less than *nb_events*, the remaining * events at the end of ev[] are not consumed and the caller has to take care * of them, and rte_errno is set accordingly. Possible errno values include: - * - -EINVAL The port ID is invalid, device ID is invalid, an event's queue + * - EINVAL The port ID is invalid, device ID is invalid, an event's queue * ID is invalid, or an event's sched type doesn't match the * capabilities of the destination queue. - * - -ENOSPC The event port was backpressured and unable to enqueue + * - ENOSPC The event port was backpressured and unable to enqueue * one or more events. This error code is only applicable to * closed systems. - * @see rte_event_port_enqueue_depth() rte_event_enqueue_burst() + * @see rte_event_port_attr_get(), RTE_EVENT_PORT_ATTR_ENQ_DEPTH + * @see rte_event_enqueue_burst() */ static inline uint16_t rte_event_enqueue_new_burst(uint8_t dev_id, uint8_t port_id, @@ -1433,7 +1479,8 @@ rte_event_enqueue_new_burst(uint8_t dev_id, uint8_t port_id, * which contain the event object enqueue operations to be processed. * @param nb_events * The number of event objects to enqueue, typically number of - * rte_event_port_enqueue_depth() available for this port. + * rte_event_port_attr_get(...RTE_EVENT_PORT_ATTR_ENQ_DEPTH...) + * available for this port. * * @return * The number of event objects actually enqueued on the event device. The @@ -1442,13 +1489,14 @@ rte_event_enqueue_new_burst(uint8_t dev_id, uint8_t port_id, * *rte_event*. If the return value is less than *nb_events*, the remaining * events at the end of ev[] are not consumed and the caller has to take care * of them, and rte_errno is set accordingly. Possible errno values include: - * - -EINVAL The port ID is invalid, device ID is invalid, an event's queue + * - EINVAL The port ID is invalid, device ID is invalid, an event's queue * ID is invalid, or an event's sched type doesn't match the * capabilities of the destination queue. - * - -ENOSPC The event port was backpressured and unable to enqueue + * - ENOSPC The event port was backpressured and unable to enqueue * one or more events. This error code is only applicable to * closed systems. - * @see rte_event_port_enqueue_depth() rte_event_enqueue_burst() + * @see rte_event_port_attr_get(), RTE_EVENT_PORT_ATTR_ENQ_DEPTH + * @see rte_event_enqueue_burst() */ static inline uint16_t rte_event_enqueue_forward_burst(uint8_t dev_id, uint8_t port_id, @@ -1563,12 +1611,12 @@ rte_event_dequeue_burst(uint8_t dev_id, uint8_t port_id, struct rte_event ev[], #ifdef RTE_LIBRTE_EVENTDEV_DEBUG if (dev_id >= RTE_EVENT_MAX_DEVS || !rte_eventdevs[dev_id].attached) { - rte_errno = -EINVAL; + rte_errno = EINVAL; return 0; } if (port_id >= dev->data->nb_ports) { - rte_errno = -EINVAL; + rte_errno = EINVAL; return 0; } #endif @@ -1641,9 +1689,9 @@ rte_event_dequeue_burst(uint8_t dev_id, uint8_t port_id, struct rte_event ev[], * of link[] are not established, and the caller has to take care of them. * If return value is less than *nb_links* then implementation shall update the * rte_errno accordingly, Possible rte_errno values are - * (-EDQUOT) Quota exceeded(Application tried to link the queue configured with + * (EDQUOT) Quota exceeded(Application tried to link the queue configured with * RTE_EVENT_QUEUE_CFG_SINGLE_LINK to more than one event ports) - * (-EINVAL) Invalid parameter + * (EINVAL) Invalid parameter * */ int @@ -1688,16 +1736,13 @@ rte_event_port_link(uint8_t dev_id, uint8_t port_id, * end of queues[] are not unlinked, and the caller has to take care of them. * If return value is less than *nb_unlinks* then implementation shall update * the rte_errno accordingly, Possible rte_errno values are - * (-EINVAL) Invalid parameter + * (EINVAL) Invalid parameter */ int rte_event_port_unlink(uint8_t dev_id, uint8_t port_id, uint8_t queues[], uint16_t nb_unlinks); /** - * @warning - * @b EXPERIMENTAL: this API may change without prior notice - * * Returns the number of unlinks in progress. * * This function provides the application with a method to detect when an @@ -1706,7 +1751,7 @@ rte_event_port_unlink(uint8_t dev_id, uint8_t port_id, * @see rte_event_port_unlink() to issue unlink requests. * * @param dev_id - * The indentifier of the device. + * The identifier of the device. * * @param port_id * Event port identifier to select port to check for unlinks in progress. @@ -1718,7 +1763,7 @@ rte_event_port_unlink(uint8_t dev_id, uint8_t port_id, * A negative return value indicates an error, -EINVAL indicates an invalid * parameter passed for *dev_id* or *port_id*. */ -int __rte_experimental +int rte_event_port_unlinks_in_progress(uint8_t dev_id, uint8_t port_id); /** @@ -1862,7 +1907,7 @@ rte_event_dev_xstats_names_get(uint8_t dev_id, * @param ids * The id numbers of the stats to get. The ids can be got from the stat * position in the stat list from rte_event_dev_get_xstats_names(), or - * by using rte_eventdev_get_xstats_by_name() + * by using rte_event_dev_xstats_by_name_get(). * @param[out] values * The values for each stats request by ID. * @param n @@ -1890,7 +1935,7 @@ rte_event_dev_xstats_get(uint8_t dev_id, * The stat name to retrieve * @param[out] id * If non-NULL, the numerical id of the stat will be returned, so that further - * requests for the stat can be got using rte_eventdev_xstats_get, which will + * requests for the stat can be got using rte_event_dev_xstats_get, which will * be faster as it doesn't need to scan a list of names for the stat. * If the stat cannot be found, the id returned will be (unsigned)-1. * @return