New upstream version 18.02
[deb_dpdk.git] / lib / librte_port / rte_port_ring.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2010-2014 Intel Corporation
3  */
4
5 #ifndef __INCLUDE_RTE_PORT_RING_H__
6 #define __INCLUDE_RTE_PORT_RING_H__
7
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11
12 /**
13  * @file
14  * RTE Port Ring
15  *
16  * ring_reader:
17  *      input port built on top of pre-initialized single consumer ring
18  * ring_writer:
19  *      output port built on top of pre-initialized single producer ring
20  * ring_multi_reader:
21  *      input port built on top of pre-initialized multi consumers ring
22  * ring_multi_writer:
23  *      output port built on top of pre-initialized multi producers ring
24  *
25  ***/
26
27 #include <stdint.h>
28
29 #include <rte_ring.h>
30
31 #include "rte_port.h"
32
33 /** ring_reader port parameters */
34 struct rte_port_ring_reader_params {
35         /** Underlying consumer ring that has to be pre-initialized */
36         struct rte_ring *ring;
37 };
38
39 /** ring_reader port operations */
40 extern struct rte_port_in_ops rte_port_ring_reader_ops;
41
42 /** ring_writer port parameters */
43 struct rte_port_ring_writer_params {
44         /** Underlying producer ring that has to be pre-initialized */
45         struct rte_ring *ring;
46
47         /** Recommended burst size to ring. The actual burst size can be
48                 bigger or smaller than this value. */
49         uint32_t tx_burst_sz;
50 };
51
52 /** ring_writer port operations */
53 extern struct rte_port_out_ops rte_port_ring_writer_ops;
54
55 /** ring_writer_nodrop port parameters */
56 struct rte_port_ring_writer_nodrop_params {
57         /** Underlying producer ring that has to be pre-initialized */
58         struct rte_ring *ring;
59
60         /** Recommended burst size to ring. The actual burst size can be
61                 bigger or smaller than this value. */
62         uint32_t tx_burst_sz;
63
64         /** Maximum number of retries, 0 for no limit */
65         uint32_t n_retries;
66 };
67
68 /** ring_writer_nodrop port operations */
69 extern struct rte_port_out_ops rte_port_ring_writer_nodrop_ops;
70
71 /** ring_multi_reader port parameters */
72 #define rte_port_ring_multi_reader_params rte_port_ring_reader_params
73
74 /** ring_multi_reader port operations */
75 extern struct rte_port_in_ops rte_port_ring_multi_reader_ops;
76
77 /** ring_multi_writer port parameters */
78 #define rte_port_ring_multi_writer_params rte_port_ring_writer_params
79
80 /** ring_multi_writer port operations */
81 extern struct rte_port_out_ops rte_port_ring_multi_writer_ops;
82
83 /** ring_multi_writer_nodrop port parameters */
84 #define rte_port_ring_multi_writer_nodrop_params \
85         rte_port_ring_writer_nodrop_params
86
87 /** ring_multi_writer_nodrop port operations */
88 extern struct rte_port_out_ops rte_port_ring_multi_writer_nodrop_ops;
89
90 #ifdef __cplusplus
91 }
92 #endif
93
94 #endif