common/mlx5: fix user mode register access command
[dpdk.git] / lib / librte_eventdev / rte_event_eth_tx_adapter.h
index 2a50656..8c59547 100644 (file)
@@ -81,9 +81,6 @@ extern "C" {
 #include "rte_eventdev.h"
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Adapter configuration structure
  *
  * @see rte_event_eth_tx_adapter_create_ext
@@ -103,9 +100,6 @@ struct rte_event_eth_tx_adapter_conf {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Function type used for adapter configuration callback. The callback is
  * used to fill in members of the struct rte_event_eth_tx_adapter_conf, this
  * callback is invoked when creating a RTE service function based
@@ -130,9 +124,6 @@ typedef int (*rte_event_eth_tx_adapter_conf_cb) (uint8_t id, uint8_t dev_id,
                                void *arg);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * A structure used to retrieve statistics for an ethernet Tx adapter instance.
  */
 struct rte_event_eth_tx_adapter_stats {
@@ -145,9 +136,6 @@ struct rte_event_eth_tx_adapter_stats {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create a new ethernet Tx adapter with the specified identifier.
  *
  * @param id
@@ -161,14 +149,11 @@ struct rte_event_eth_tx_adapter_stats {
  *   - 0: Success
  *   - <0: Error code on failure
  */
-int __rte_experimental
+int
 rte_event_eth_tx_adapter_create(uint8_t id, uint8_t dev_id,
                                struct rte_event_port_conf *port_config);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Create a new ethernet Tx adapter with the specified identifier.
  *
  * @param id
@@ -185,15 +170,12 @@ rte_event_eth_tx_adapter_create(uint8_t id, uint8_t dev_id,
  *   - 0: Success
  *   - <0: Error code on failure
  */
-int __rte_experimental
+int
 rte_event_eth_tx_adapter_create_ext(uint8_t id, uint8_t dev_id,
                                rte_event_eth_tx_adapter_conf_cb conf_cb,
                                void *conf_arg);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Free an ethernet Tx adapter
  *
  * @param id
@@ -203,13 +185,10 @@ rte_event_eth_tx_adapter_create_ext(uint8_t id, uint8_t dev_id,
  *   - <0: Error code on failure, If the adapter still has Tx queues
  *      added to it, the function returns -EBUSY.
  */
-int __rte_experimental
+int
 rte_event_eth_tx_adapter_free(uint8_t id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Start ethernet Tx adapter
  *
  * @param id
@@ -218,13 +197,10 @@ rte_event_eth_tx_adapter_free(uint8_t id);
  *  - 0: Success, Adapter started correctly.
  *  - <0: Error code on failure.
  */
-int __rte_experimental
+int
 rte_event_eth_tx_adapter_start(uint8_t id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Stop ethernet Tx adapter
  *
  * @param id
@@ -233,13 +209,10 @@ rte_event_eth_tx_adapter_start(uint8_t id);
  *  - 0: Success.
  *  - <0: Error code on failure.
  */
-int __rte_experimental
+int
 rte_event_eth_tx_adapter_stop(uint8_t id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Add a Tx queue to the adapter.
  * A queue value of -1 is used to indicate all
  * queues within the device.
@@ -254,15 +227,12 @@ rte_event_eth_tx_adapter_stop(uint8_t id);
  *  - 0: Success, Queues added successfully.
  *  - <0: Error code on failure.
  */
-int __rte_experimental
+int
 rte_event_eth_tx_adapter_queue_add(uint8_t id,
                                uint16_t eth_dev_id,
                                int32_t queue);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * 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
@@ -278,15 +248,12 @@ rte_event_eth_tx_adapter_queue_add(uint8_t id,
  *  - 0: Success, Queues deleted successfully.
  *  - <0: Error code on failure.
  */
-int __rte_experimental
+int
 rte_event_eth_tx_adapter_queue_del(uint8_t id,
                                uint16_t eth_dev_id,
                                int32_t queue);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Set Tx queue in the mbuf. This queue is used by the adapter
  * to transmit the mbuf.
  *
@@ -295,16 +262,13 @@ rte_event_eth_tx_adapter_queue_del(uint8_t id,
  * @param queue
  *  Tx queue index.
  */
-static __rte_always_inline void __rte_experimental
+static __rte_always_inline void
 rte_event_eth_tx_adapter_txq_set(struct rte_mbuf *pkt, uint16_t queue)
 {
        pkt->hash.txadapter.txq = queue;
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Retrieve Tx queue from the mbuf.
  *
  * @param pkt
@@ -314,16 +278,13 @@ rte_event_eth_tx_adapter_txq_set(struct rte_mbuf *pkt, uint16_t queue)
  *
  * @see rte_event_eth_tx_adapter_txq_set()
  */
-static __rte_always_inline uint16_t __rte_experimental
+static __rte_always_inline uint16_t
 rte_event_eth_tx_adapter_txq_get(struct rte_mbuf *pkt)
 {
        return pkt->hash.txadapter.txq;
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Retrieve the adapter event port. The adapter creates an event port if
  * the #RTE_EVENT_ETH_TX_ADAPTER_CAP_INTERNAL_PORT is not set in the
  * ethernet Tx capabilities of the event device.
@@ -336,9 +297,14 @@ rte_event_eth_tx_adapter_txq_get(struct rte_mbuf *pkt)
  *   - 0: Success.
  *   - <0: Error code on failure.
  */
-int __rte_experimental
+int
 rte_event_eth_tx_adapter_event_port_get(uint8_t id, uint8_t *event_port_id);
 
+#define RTE_EVENT_ETH_TX_ADAPTER_ENQUEUE_SAME_DEST     0x1
+/**< This flag is used when all the packets enqueued in the tx adapter are
+ * destined for the same Ethernet port & Tx queue.
+ */
+
 /**
  * Enqueue a burst of events objects or an event object supplied in *rte_event*
  * structure on an  event device designated by its *dev_id* through the event
@@ -361,7 +327,12 @@ rte_event_eth_tx_adapter_event_port_get(uint8_t id, uint8_t *event_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.
+ * @param flags
+ *  RTE_EVENT_ETH_TX_ADAPTER_ENQUEUE_ flags.
+ *  #RTE_EVENT_ETH_TX_ADAPTER_ENQUEUE_SAME_DEST signifies that all the packets
+ *  which are enqueued are destined for the same Ethernet port & Tx queue.
  *
  * @return
  *   The number of event objects actually enqueued on the event device. The
@@ -370,40 +341,45 @@ rte_event_eth_tx_adapter_event_port_get(uint8_t id, uint8_t *event_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.
  */
-static inline uint16_t __rte_experimental
+static inline uint16_t
 rte_event_eth_tx_adapter_enqueue(uint8_t dev_id,
                                uint8_t port_id,
                                struct rte_event ev[],
-                               uint16_t nb_events)
+                               uint16_t nb_events,
+                               const uint8_t flags)
 {
        const struct rte_eventdev *dev = &rte_eventdevs[dev_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
-       return dev->txa_enqueue(dev->data->ports[port_id], ev, nb_events);
+       rte_eventdev_trace_eth_tx_adapter_enqueue(dev_id, port_id, ev,
+               nb_events, flags);
+       if (flags)
+               return dev->txa_enqueue_same_dest(dev->data->ports[port_id],
+                                                 ev, nb_events);
+       else
+               return dev->txa_enqueue(dev->data->ports[port_id], ev,
+                                       nb_events);
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Retrieve statistics for an adapter
  *
  * @param id
@@ -414,14 +390,11 @@ rte_event_eth_tx_adapter_enqueue(uint8_t dev_id,
  *  - 0: Success, statistics retrieved successfully.
  *  - <0: Error code on failure.
  */
-int __rte_experimental
+int
 rte_event_eth_tx_adapter_stats_get(uint8_t id,
                                struct rte_event_eth_tx_adapter_stats *stats);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Reset statistics for an adapter.
  *
  * @param id
@@ -430,13 +403,10 @@ rte_event_eth_tx_adapter_stats_get(uint8_t id,
  *  - 0: Success, statistics reset successfully.
  *  - <0: Error code on failure.
  */
-int __rte_experimental
+int
 rte_event_eth_tx_adapter_stats_reset(uint8_t id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice
- *
  * Retrieve the service ID of an adapter. If the adapter doesn't use
  * a rte_service function, this function returns -ESRCH.
  *
@@ -449,7 +419,7 @@ rte_event_eth_tx_adapter_stats_reset(uint8_t id);
  *  - <0: Error code on failure, if the adapter doesn't use a rte_service
  * function, this function returns -ESRCH.
  */
-int __rte_experimental
+int
 rte_event_eth_tx_adapter_service_id_get(uint8_t id, uint32_t *service_id);
 
 #ifdef __cplusplus