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