]> git.proxmox.com Git - ceph.git/blob - ceph/src/spdk/dpdk/lib/librte_port/rte_port_ring.h
update sources to ceph Nautilus 14.2.1
[ceph.git] / ceph / src / spdk / dpdk / 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