/usr/share/dpdk/x86_64-default-linuxapp-gcc/include/rte_port.h is in dpdk-dev 17.11.1-6.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 | /*-
* BSD LICENSE
*
* Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef __INCLUDE_RTE_PORT_H__
#define __INCLUDE_RTE_PORT_H__
#ifdef __cplusplus
extern "C" {
#endif
/**
* @file
* RTE Port
*
* This tool is part of the DPDK Packet Framework tool suite and provides
* a standard interface to implement different types of packet ports.
*
***/
#include <stdint.h>
#include <rte_mbuf.h>
/**@{
* Macros to allow accessing metadata stored in the mbuf headroom
* just beyond the end of the mbuf data structure returned by a port
*/
#define RTE_MBUF_METADATA_UINT8_PTR(mbuf, offset) \
(&((uint8_t *)(mbuf))[offset])
#define RTE_MBUF_METADATA_UINT16_PTR(mbuf, offset) \
((uint16_t *) RTE_MBUF_METADATA_UINT8_PTR(mbuf, offset))
#define RTE_MBUF_METADATA_UINT32_PTR(mbuf, offset) \
((uint32_t *) RTE_MBUF_METADATA_UINT8_PTR(mbuf, offset))
#define RTE_MBUF_METADATA_UINT64_PTR(mbuf, offset) \
((uint64_t *) RTE_MBUF_METADATA_UINT8_PTR(mbuf, offset))
#define RTE_MBUF_METADATA_UINT8(mbuf, offset) \
(*RTE_MBUF_METADATA_UINT8_PTR(mbuf, offset))
#define RTE_MBUF_METADATA_UINT16(mbuf, offset) \
(*RTE_MBUF_METADATA_UINT16_PTR(mbuf, offset))
#define RTE_MBUF_METADATA_UINT32(mbuf, offset) \
(*RTE_MBUF_METADATA_UINT32_PTR(mbuf, offset))
#define RTE_MBUF_METADATA_UINT64(mbuf, offset) \
(*RTE_MBUF_METADATA_UINT64_PTR(mbuf, offset))
/**@}*/
/*
* Port IN
*
*/
/** Maximum number of packets read from any input port in a single burst.
Cannot be changed. */
#define RTE_PORT_IN_BURST_SIZE_MAX 64
/** Input port statistics */
struct rte_port_in_stats {
uint64_t n_pkts_in;
uint64_t n_pkts_drop;
};
/**
* Input port create
*
* @param params
* Parameters for input port creation
* @param socket_id
* CPU socket ID (e.g. for memory allocation purpose)
* @return
* Handle to input port instance
*/
typedef void* (*rte_port_in_op_create)(void *params, int socket_id);
/**
* Input port free
*
* @param port
* Handle to input port instance
* @return
* 0 on success, error code otherwise
*/
typedef int (*rte_port_in_op_free)(void *port);
/**
* Input port packet burst RX
*
* @param port
* Handle to input port instance
* @param pkts
* Burst of input packets
* @param n_pkts
* Number of packets in the input burst
* @return
* 0 on success, error code otherwise
*/
typedef int (*rte_port_in_op_rx)(
void *port,
struct rte_mbuf **pkts,
uint32_t n_pkts);
/**
* Input port stats get
*
* @param port
* Handle to output port instance
* @param stats
* Handle to port_in stats struct to copy data
* @param clear
* Flag indicating that stats should be cleared after read
*
* @return
* Error code or 0 on success.
*/
typedef int (*rte_port_in_op_stats_read)(
void *port,
struct rte_port_in_stats *stats,
int clear);
/** Input port interface defining the input port operation */
struct rte_port_in_ops {
rte_port_in_op_create f_create; /**< Create */
rte_port_in_op_free f_free; /**< Free */
rte_port_in_op_rx f_rx; /**< Packet RX (packet burst) */
rte_port_in_op_stats_read f_stats; /**< Stats */
};
/*
* Port OUT
*
*/
/** Output port statistics */
struct rte_port_out_stats {
uint64_t n_pkts_in;
uint64_t n_pkts_drop;
};
/**
* Output port create
*
* @param params
* Parameters for output port creation
* @param socket_id
* CPU socket ID (e.g. for memory allocation purpose)
* @return
* Handle to output port instance
*/
typedef void* (*rte_port_out_op_create)(void *params, int socket_id);
/**
* Output port free
*
* @param port
* Handle to output port instance
* @return
* 0 on success, error code otherwise
*/
typedef int (*rte_port_out_op_free)(void *port);
/**
* Output port single packet TX
*
* @param port
* Handle to output port instance
* @param pkt
* Input packet
* @return
* 0 on success, error code otherwise
*/
typedef int (*rte_port_out_op_tx)(
void *port,
struct rte_mbuf *pkt);
/**
* Output port packet burst TX
*
* @param port
* Handle to output port instance
* @param pkts
* Burst of input packets specified as array of up to 64 pointers to struct
* rte_mbuf
* @param pkts_mask
* 64-bit bitmask specifying which packets in the input burst are valid. When
* pkts_mask bit n is set, then element n of pkts array is pointing to a
* valid packet. Otherwise, element n of pkts array will not be accessed.
* @return
* 0 on success, error code otherwise
*/
typedef int (*rte_port_out_op_tx_bulk)(
void *port,
struct rte_mbuf **pkt,
uint64_t pkts_mask);
/**
* Output port flush
*
* @param port
* Handle to output port instance
* @return
* 0 on success, error code otherwise
*/
typedef int (*rte_port_out_op_flush)(void *port);
/**
* Output port stats read
*
* @param port
* Handle to output port instance
* @param stats
* Handle to port_out stats struct to copy data
* @param clear
* Flag indicating that stats should be cleared after read
*
* @return
* Error code or 0 on success.
*/
typedef int (*rte_port_out_op_stats_read)(
void *port,
struct rte_port_out_stats *stats,
int clear);
/** Output port interface defining the output port operation */
struct rte_port_out_ops {
rte_port_out_op_create f_create; /**< Create */
rte_port_out_op_free f_free; /**< Free */
rte_port_out_op_tx f_tx; /**< Packet TX (single packet) */
rte_port_out_op_tx_bulk f_tx_bulk; /**< Packet TX (packet burst) */
rte_port_out_op_flush f_flush; /**< Flush */
rte_port_out_op_stats_read f_stats; /**< Stats */
};
#ifdef __cplusplus
}
#endif
#endif
|