numam-dpdk/lib/port/rte_swx_port.h
Bruce Richardson 99a2dd955f lib: remove librte_ prefix from directory names
There is no reason for the DPDK libraries to all have 'librte_' prefix on
the directory names. This prefix makes the directory names longer and also
makes it awkward to add features referring to individual libraries in the
build - should the lib names be specified with or without the prefix.
Therefore, we can just remove the library prefix and use the library's
unique name as the directory name, i.e. 'eal' rather than 'librte_eal'

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
2021-04-21 14:04:09 +02:00

203 lines
3.8 KiB
C

/* SPDX-License-Identifier: BSD-3-Clause
* Copyright(c) 2020 Intel Corporation
*/
#ifndef __INCLUDE_RTE_SWX_PORT_H__
#define __INCLUDE_RTE_SWX_PORT_H__
#ifdef __cplusplus
extern "C" {
#endif
/**
* @file
* RTE SWX Port
*
* Packet I/O port interface.
*/
#include <stdint.h>
/** Packet. */
struct rte_swx_pkt {
/** Opaque packet handle. */
void *handle;
/** Buffer where the packet is stored. */
uint8_t *pkt;
/** Packet buffer offset of the first packet byte. */
uint32_t offset;
/** Packet length in bytes. */
uint32_t length;
};
/*
* Input port
*/
/**
* Input port create
*
* @param[in] args
* Arguments for input port creation. Format specific to each port type.
* @return
* Handle to input port instance on success, NULL on error.
*/
typedef void *
(*rte_swx_port_in_create_t)(void *args);
/**
* Input port free
*
* @param[in] port
* Input port handle.
*/
typedef void
(*rte_swx_port_in_free_t)(void *port);
/**
* Input port packet receive
*
* @param[in] port
* Input port handle.
* @param[out] pkt
* Received packet. Only valid when the function returns 1. Must point to
* valid memory.
* @return
* 0 when no packet was received, 1 when a packet was received. No other
* return values are allowed.
*/
typedef int
(*rte_swx_port_in_pkt_rx_t)(void *port,
struct rte_swx_pkt *pkt);
/** Input port statistics counters. */
struct rte_swx_port_in_stats {
/** Number of packets. */
uint64_t n_pkts;
/** Number of bytes. */
uint64_t n_bytes;
/** Number of empty polls. */
uint64_t n_empty;
};
/**
* Input port statistics counters read
*
* @param[in] port
* Input port handle.
* @param[out] stats
* Input port statistics counters. Must point to valid memory.
*/
typedef void
(*rte_swx_port_in_stats_read_t)(void *port,
struct rte_swx_port_in_stats *stats);
/** Input port operations. */
struct rte_swx_port_in_ops {
/** Create. Must be non-NULL. */
rte_swx_port_in_create_t create;
/** Free. Must be non-NULL. */
rte_swx_port_in_free_t free;
/** Packet reception. Must be non-NULL. */
rte_swx_port_in_pkt_rx_t pkt_rx;
/** Statistics counters read. Must be non-NULL. */
rte_swx_port_in_stats_read_t stats_read;
};
/*
* Output port
*/
/**
* Output port create
*
* @param[in] args
* Arguments for output port creation. Format specific to each port type.
* @return
* Handle to output port instance on success, NULL on error.
*/
typedef void *
(*rte_swx_port_out_create_t)(void *args);
/**
* Output port free
*
* @param[in] port
* Output port handle.
*/
typedef void
(*rte_swx_port_out_free_t)(void *port);
/**
* Output port packet transmit
*
* @param[in] port
* Output port handle.
* @param[in] pkt
* Packet to be transmitted.
*/
typedef void
(*rte_swx_port_out_pkt_tx_t)(void *port,
struct rte_swx_pkt *pkt);
/**
* Output port flush
*
* @param[in] port
* Output port handle.
*/
typedef void
(*rte_swx_port_out_flush_t)(void *port);
/** Output port statistics counters. */
struct rte_swx_port_out_stats {
/** Number of packets. */
uint64_t n_pkts;
/** Number of bytes. */
uint64_t n_bytes;
};
/**
* Output port statistics counters read
*
* @param[in] port
* Output port handle.
* @param[out] stats
* Output port statistics counters. Must point to valid memory.
*/
typedef void
(*rte_swx_port_out_stats_read_t)(void *port,
struct rte_swx_port_out_stats *stats);
/** Output port operations. */
struct rte_swx_port_out_ops {
/** Create. Must be non-NULL. */
rte_swx_port_out_create_t create;
/** Free. Must be non-NULL. */
rte_swx_port_out_free_t free;
/** Packet transmission. Must be non-NULL. */
rte_swx_port_out_pkt_tx_t pkt_tx;
/** Flush. May be NULL. */
rte_swx_port_out_flush_t flush;
/** Statistics counters read. Must be non-NULL. */
rte_swx_port_out_stats_read_t stats_read;
};
#ifdef __cplusplus
}
#endif
#endif