]> git.proxmox.com Git - ceph.git/blame - ceph/src/spdk/dpdk/lib/librte_pdump/rte_pdump.h
import 15.2.0 Octopus source
[ceph.git] / ceph / src / spdk / dpdk / lib / librte_pdump / rte_pdump.h
CommitLineData
11fdf7f2
TL
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2016 Intel Corporation
7c673cae
FG
3 */
4
5#ifndef _RTE_PDUMP_H_
6#define _RTE_PDUMP_H_
7
8/**
9 * @file
10 * RTE pdump
11 *
12 * packet dump library to provide packet capturing support on dpdk.
13 */
14
15#include <stdint.h>
16#include <rte_mempool.h>
17#include <rte_ring.h>
18
19#ifdef __cplusplus
20extern "C" {
21#endif
22
23#define RTE_PDUMP_ALL_QUEUES UINT16_MAX
24
25enum {
26 RTE_PDUMP_FLAG_RX = 1, /* receive direction */
27 RTE_PDUMP_FLAG_TX = 2, /* transmit direction */
28 /* both receive and transmit directions */
29 RTE_PDUMP_FLAG_RXTX = (RTE_PDUMP_FLAG_RX|RTE_PDUMP_FLAG_TX)
30};
31
7c673cae
FG
32/**
33 * Initialize packet capturing handling
34 *
11fdf7f2 35 * Register the IPC action for communication with target (primary) process.
7c673cae 36 *
7c673cae
FG
37 * @return
38 * 0 on success, -1 on error
39 */
40int
9f95a23c 41rte_pdump_init(void);
7c673cae
FG
42
43/**
44 * Un initialize packet capturing handling
45 *
11fdf7f2 46 * Unregister the IPC action for communication with target (primary) process.
7c673cae
FG
47 *
48 * @return
49 * 0 on success, -1 on error
50 */
51int
52rte_pdump_uninit(void);
53
54/**
55 * Enables packet capturing on given port and queue.
56 *
57 * @param port
58 * port on which packet capturing should be enabled.
59 * @param queue
60 * queue of a given port on which packet capturing should be enabled.
61 * users should pass on value UINT16_MAX to enable packet capturing on all
62 * queues of a given port.
63 * @param flags
64 * flags specifies RTE_PDUMP_FLAG_RX/RTE_PDUMP_FLAG_TX/RTE_PDUMP_FLAG_RXTX
65 * on which packet capturing should be enabled for a given port and queue.
66 * @param ring
67 * ring on which captured packets will be enqueued for user.
68 * @param mp
69 * mempool on to which original packets will be mirrored or duplicated.
70 * @param filter
71 * place holder for packet filtering.
72 *
73 * @return
74 * 0 on success, -1 on error, rte_errno is set accordingly.
75 */
76
77int
11fdf7f2 78rte_pdump_enable(uint16_t port, uint16_t queue, uint32_t flags,
7c673cae
FG
79 struct rte_ring *ring,
80 struct rte_mempool *mp,
81 void *filter);
82
83/**
84 * Disables packet capturing on given port and queue.
85 *
86 * @param port
87 * port on which packet capturing should be disabled.
88 * @param queue
89 * queue of a given port on which packet capturing should be disabled.
90 * users should pass on value UINT16_MAX to disable packet capturing on all
91 * queues of a given port.
92 * @param flags
93 * flags specifies RTE_PDUMP_FLAG_RX/RTE_PDUMP_FLAG_TX/RTE_PDUMP_FLAG_RXTX
94 * on which packet capturing should be enabled for a given port and queue.
95 *
96 * @return
97 * 0 on success, -1 on error, rte_errno is set accordingly.
98 */
99
100int
11fdf7f2 101rte_pdump_disable(uint16_t port, uint16_t queue, uint32_t flags);
7c673cae
FG
102
103/**
104 * Enables packet capturing on given device id and queue.
105 * device_id can be name or pci address of device.
106 *
107 * @param device_id
108 * device id on which packet capturing should be enabled.
109 * @param queue
110 * queue of a given device id on which packet capturing should be enabled.
111 * users should pass on value UINT16_MAX to enable packet capturing on all
112 * queues of a given device id.
113 * @param flags
114 * flags specifies RTE_PDUMP_FLAG_RX/RTE_PDUMP_FLAG_TX/RTE_PDUMP_FLAG_RXTX
115 * on which packet capturing should be enabled for a given port and queue.
116 * @param ring
117 * ring on which captured packets will be enqueued for user.
118 * @param mp
119 * mempool on to which original packets will be mirrored or duplicated.
120 * @param filter
121 * place holder for packet filtering.
122 *
123 * @return
124 * 0 on success, -1 on error, rte_errno is set accordingly.
125 */
126
127int
128rte_pdump_enable_by_deviceid(char *device_id, uint16_t queue,
129 uint32_t flags,
130 struct rte_ring *ring,
131 struct rte_mempool *mp,
132 void *filter);
133
134/**
135 * Disables packet capturing on given device_id and queue.
136 * device_id can be name or pci address of device.
137 *
138 * @param device_id
139 * pci address or name of the device on which packet capturing
140 * should be disabled.
141 * @param queue
142 * queue of a given device on which packet capturing should be disabled.
143 * users should pass on value UINT16_MAX to disable packet capturing on all
144 * queues of a given device id.
145 * @param flags
146 * flags specifies RTE_PDUMP_FLAG_RX/RTE_PDUMP_FLAG_TX/RTE_PDUMP_FLAG_RXTX
147 * on which packet capturing should be enabled for a given port and queue.
148 *
149 * @return
150 * 0 on success, -1 on error, rte_errno is set accordingly.
151 */
152int
153rte_pdump_disable_by_deviceid(char *device_id, uint16_t queue,
154 uint32_t flags);
155
7c673cae
FG
156#ifdef __cplusplus
157}
158#endif
159
160#endif /* _RTE_PDUMP_H_ */