DPDK  21.11.6
rte_event_eth_tx_adapter.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2018 Intel Corporation.
3  */
4 
5 #ifndef _RTE_EVENT_ETH_TX_ADAPTER_
6 #define _RTE_EVENT_ETH_TX_ADAPTER_
7 
73 #ifdef __cplusplus
74 extern "C" {
75 #endif
76 
77 #include <stdint.h>
78 
79 #include <rte_mbuf.h>
80 
81 #include "rte_eventdev.h"
82 
90  uint8_t event_port_id;
95  uint32_t max_nb_tx;
100 };
101 
122 typedef int (*rte_event_eth_tx_adapter_conf_cb) (uint8_t id, uint8_t dev_id,
123  struct rte_event_eth_tx_adapter_conf *conf,
124  void *arg);
125 
130  uint64_t tx_retry;
132  uint64_t tx_packets;
134  uint64_t tx_dropped;
136 };
137 
152 int
153 rte_event_eth_tx_adapter_create(uint8_t id, uint8_t dev_id,
154  struct rte_event_port_conf *port_config);
155 
173 int
174 rte_event_eth_tx_adapter_create_ext(uint8_t id, uint8_t dev_id,
176  void *conf_arg);
177 
188 int
190 
200 int
202 
212 int
214 
230 int
232  uint16_t eth_dev_id,
233  int32_t queue);
234 
251 int
253  uint16_t eth_dev_id,
254  int32_t queue);
255 
265 static __rte_always_inline void
266 rte_event_eth_tx_adapter_txq_set(struct rte_mbuf *pkt, uint16_t queue)
267 {
268  pkt->hash.txadapter.txq = queue;
269 }
270 
281 static __rte_always_inline uint16_t
283 {
284  return pkt->hash.txadapter.txq;
285 }
286 
300 int
301 rte_event_eth_tx_adapter_event_port_get(uint8_t id, uint8_t *event_port_id);
302 
303 #define RTE_EVENT_ETH_TX_ADAPTER_ENQUEUE_SAME_DEST 0x1
304 
351 static inline uint16_t
353  uint8_t port_id,
354  struct rte_event ev[],
355  uint16_t nb_events,
356  const uint8_t flags)
357 {
358  const struct rte_event_fp_ops *fp_ops;
359  void *port;
360 
361  fp_ops = &rte_event_fp_ops[dev_id];
362  port = fp_ops->data[port_id];
363 #ifdef RTE_LIBRTE_EVENTDEV_DEBUG
364  if (dev_id >= RTE_EVENT_MAX_DEVS ||
365  port_id >= RTE_EVENT_MAX_PORTS_PER_DEV) {
366  rte_errno = EINVAL;
367  return 0;
368  }
369 
370  if (port == NULL) {
371  rte_errno = EINVAL;
372  return 0;
373  }
374 #endif
375  rte_eventdev_trace_eth_tx_adapter_enqueue(dev_id, port_id, ev,
376  nb_events, flags);
377  if (flags)
378  return fp_ops->txa_enqueue_same_dest(port, ev, nb_events);
379  else
380  return fp_ops->txa_enqueue(port, ev, nb_events);
381 }
382 
394 int
396  struct rte_event_eth_tx_adapter_stats *stats);
397 
407 int
409 
423 int
424 rte_event_eth_tx_adapter_service_id_get(uint8_t id, uint32_t *service_id);
425 
426 #ifdef __cplusplus
427 }
428 #endif
429 #endif /* _RTE_EVENT_ETH_TX_ADAPTER_ */
rte_event_eth_tx_adapter_free
int rte_event_eth_tx_adapter_free(uint8_t id)
__rte_always_inline
#define __rte_always_inline
Definition: rte_common.h:233
rte_event_eth_tx_adapter_txq_set
static __rte_always_inline void rte_event_eth_tx_adapter_txq_set(struct rte_mbuf *pkt, uint16_t queue)
Definition: rte_event_eth_tx_adapter.h:266
rte_event_eth_tx_adapter_stop
int rte_event_eth_tx_adapter_stop(uint8_t id)
rte_event_eth_tx_adapter_queue_add
int rte_event_eth_tx_adapter_queue_add(uint8_t id, uint16_t eth_dev_id, int32_t queue)
rte_mbuf
Definition: rte_mbuf_core.h:578
rte_event_eth_tx_adapter_enqueue
static uint16_t rte_event_eth_tx_adapter_enqueue(uint8_t dev_id, uint8_t port_id, struct rte_event ev[], uint16_t nb_events, const uint8_t flags)
Definition: rte_event_eth_tx_adapter.h:352
rte_event_eth_tx_adapter_stats::tx_packets
uint64_t tx_packets
Definition: rte_event_eth_tx_adapter.h:132
rte_event_eth_tx_adapter_conf::event_port_id
uint8_t event_port_id
Definition: rte_event_eth_tx_adapter.h:90
rte_event_eth_tx_adapter_create_ext
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)
rte_event_eth_tx_adapter_stats_reset
int rte_event_eth_tx_adapter_stats_reset(uint8_t id)
rte_event_eth_tx_adapter_queue_del
int rte_event_eth_tx_adapter_queue_del(uint8_t id, uint16_t eth_dev_id, int32_t queue)
rte_event_eth_tx_adapter_conf
Definition: rte_event_eth_tx_adapter.h:89
rte_event_eth_tx_adapter_stats::tx_retry
uint64_t tx_retry
Definition: rte_event_eth_tx_adapter.h:130
rte_event
Definition: rte_eventdev.h:1163
rte_event_eth_tx_adapter_conf_cb
int(* rte_event_eth_tx_adapter_conf_cb)(uint8_t id, uint8_t dev_id, struct rte_event_eth_tx_adapter_conf *conf, void *arg)
Definition: rte_event_eth_tx_adapter.h:122
rte_event_eth_tx_adapter_service_id_get
int rte_event_eth_tx_adapter_service_id_get(uint8_t id, uint32_t *service_id)
rte_event_eth_tx_adapter_create
int rte_event_eth_tx_adapter_create(uint8_t id, uint8_t dev_id, struct rte_event_port_conf *port_config)
rte_event_eth_tx_adapter_start
int rte_event_eth_tx_adapter_start(uint8_t id)
rte_event_eth_tx_adapter_txq_get
static __rte_always_inline uint16_t rte_event_eth_tx_adapter_txq_get(struct rte_mbuf *pkt)
Definition: rte_event_eth_tx_adapter.h:282
rte_event_eth_tx_adapter_event_port_get
int rte_event_eth_tx_adapter_event_port_get(uint8_t id, uint8_t *event_port_id)
rte_event_eth_tx_adapter_stats
Definition: rte_event_eth_tx_adapter.h:129
rte_event_eth_tx_adapter_stats_get
int rte_event_eth_tx_adapter_stats_get(uint8_t id, struct rte_event_eth_tx_adapter_stats *stats)
rte_mbuf.h
rte_event_eth_tx_adapter_conf::max_nb_tx
uint32_t max_nb_tx
Definition: rte_event_eth_tx_adapter.h:95
rte_errno
#define rte_errno
Definition: rte_errno.h:29
rte_eventdev.h
rte_event_port_conf
Definition: rte_eventdev.h:756
rte_event_eth_tx_adapter_stats::tx_dropped
uint64_t tx_dropped
Definition: rte_event_eth_tx_adapter.h:134