xref: /dpdk/lib/port/rte_port_ring.h (revision 719834a6849e1daf4a70ff7742bbcc3ae7e25607)
199a2dd95SBruce Richardson /* SPDX-License-Identifier: BSD-3-Clause
299a2dd95SBruce Richardson  * Copyright(c) 2010-2014 Intel Corporation
399a2dd95SBruce Richardson  */
499a2dd95SBruce Richardson 
599a2dd95SBruce Richardson #ifndef __INCLUDE_RTE_PORT_RING_H__
699a2dd95SBruce Richardson #define __INCLUDE_RTE_PORT_RING_H__
799a2dd95SBruce Richardson 
899a2dd95SBruce Richardson /**
999a2dd95SBruce Richardson  * @file
1099a2dd95SBruce Richardson  * RTE Port Ring
1199a2dd95SBruce Richardson  *
1299a2dd95SBruce Richardson  * ring_reader:
1399a2dd95SBruce Richardson  *      input port built on top of pre-initialized single consumer ring
1499a2dd95SBruce Richardson  * ring_writer:
1599a2dd95SBruce Richardson  *      output port built on top of pre-initialized single producer ring
1699a2dd95SBruce Richardson  * ring_multi_reader:
1799a2dd95SBruce Richardson  *      input port built on top of pre-initialized multi consumers ring
1899a2dd95SBruce Richardson  * ring_multi_writer:
1999a2dd95SBruce Richardson  *      output port built on top of pre-initialized multi producers ring
203e4c5be9SThomas Monjalon  */
2199a2dd95SBruce Richardson 
2299a2dd95SBruce Richardson #include <stdint.h>
2399a2dd95SBruce Richardson 
2499a2dd95SBruce Richardson #include "rte_port.h"
2599a2dd95SBruce Richardson 
26*719834a6SMattias Rönnblom #ifdef __cplusplus
27*719834a6SMattias Rönnblom extern "C" {
28*719834a6SMattias Rönnblom #endif
29*719834a6SMattias Rönnblom 
3099a2dd95SBruce Richardson /** ring_reader port parameters */
3199a2dd95SBruce Richardson struct rte_port_ring_reader_params {
3299a2dd95SBruce Richardson 	/** Underlying consumer ring that has to be pre-initialized */
3399a2dd95SBruce Richardson 	struct rte_ring *ring;
3499a2dd95SBruce Richardson };
3599a2dd95SBruce Richardson 
3699a2dd95SBruce Richardson /** ring_reader port operations */
3799a2dd95SBruce Richardson extern struct rte_port_in_ops rte_port_ring_reader_ops;
3899a2dd95SBruce Richardson 
3999a2dd95SBruce Richardson /** ring_writer port parameters */
4099a2dd95SBruce Richardson struct rte_port_ring_writer_params {
4199a2dd95SBruce Richardson 	/** Underlying producer ring that has to be pre-initialized */
4299a2dd95SBruce Richardson 	struct rte_ring *ring;
4399a2dd95SBruce Richardson 
4499a2dd95SBruce Richardson 	/** Recommended burst size to ring. The actual burst size can be
4599a2dd95SBruce Richardson 		bigger or smaller than this value. */
4699a2dd95SBruce Richardson 	uint32_t tx_burst_sz;
4799a2dd95SBruce Richardson };
4899a2dd95SBruce Richardson 
4999a2dd95SBruce Richardson /** ring_writer port operations */
5099a2dd95SBruce Richardson extern struct rte_port_out_ops rte_port_ring_writer_ops;
5199a2dd95SBruce Richardson 
5299a2dd95SBruce Richardson /** ring_writer_nodrop port parameters */
5399a2dd95SBruce Richardson struct rte_port_ring_writer_nodrop_params {
5499a2dd95SBruce Richardson 	/** Underlying producer ring that has to be pre-initialized */
5599a2dd95SBruce Richardson 	struct rte_ring *ring;
5699a2dd95SBruce Richardson 
5799a2dd95SBruce Richardson 	/** Recommended burst size to ring. The actual burst size can be
5899a2dd95SBruce Richardson 		bigger or smaller than this value. */
5999a2dd95SBruce Richardson 	uint32_t tx_burst_sz;
6099a2dd95SBruce Richardson 
6199a2dd95SBruce Richardson 	/** Maximum number of retries, 0 for no limit */
6299a2dd95SBruce Richardson 	uint32_t n_retries;
6399a2dd95SBruce Richardson };
6499a2dd95SBruce Richardson 
6599a2dd95SBruce Richardson /** ring_writer_nodrop port operations */
6699a2dd95SBruce Richardson extern struct rte_port_out_ops rte_port_ring_writer_nodrop_ops;
6799a2dd95SBruce Richardson 
6899a2dd95SBruce Richardson /** ring_multi_reader port parameters */
6999a2dd95SBruce Richardson #define rte_port_ring_multi_reader_params rte_port_ring_reader_params
7099a2dd95SBruce Richardson 
7199a2dd95SBruce Richardson /** ring_multi_reader port operations */
7299a2dd95SBruce Richardson extern struct rte_port_in_ops rte_port_ring_multi_reader_ops;
7399a2dd95SBruce Richardson 
7499a2dd95SBruce Richardson /** ring_multi_writer port parameters */
7599a2dd95SBruce Richardson #define rte_port_ring_multi_writer_params rte_port_ring_writer_params
7699a2dd95SBruce Richardson 
7799a2dd95SBruce Richardson /** ring_multi_writer port operations */
7899a2dd95SBruce Richardson extern struct rte_port_out_ops rte_port_ring_multi_writer_ops;
7999a2dd95SBruce Richardson 
8099a2dd95SBruce Richardson /** ring_multi_writer_nodrop port parameters */
8199a2dd95SBruce Richardson #define rte_port_ring_multi_writer_nodrop_params \
8299a2dd95SBruce Richardson 	rte_port_ring_writer_nodrop_params
8399a2dd95SBruce Richardson 
8499a2dd95SBruce Richardson /** ring_multi_writer_nodrop port operations */
8599a2dd95SBruce Richardson extern struct rte_port_out_ops rte_port_ring_multi_writer_nodrop_ops;
8699a2dd95SBruce Richardson 
8799a2dd95SBruce Richardson #ifdef __cplusplus
8899a2dd95SBruce Richardson }
8999a2dd95SBruce Richardson #endif
9099a2dd95SBruce Richardson 
9199a2dd95SBruce Richardson #endif
92