1#ifndef NDNDPDK_IFACE_FACE_H
2#define NDNDPDK_IFACE_FACE_H
11#include <urcu/rcuhlist.h>
106static_assert(
sizeof(
Face) <= RTE_CACHE_LINE_SIZE,
"");
108__attribute__((nonnull, returns_nonnull))
static inline void*
109Face_GetPriv(
Face* face) {
110 return face->
impl->priv;
121__attribute__((returns_nonnull))
static inline Face*
128Face_IsDown(
FaceID faceID) {
129 Face* face = Face_Get(faceID);
135Face_PacketTxAlign(
FaceID faceID) {
136 Face* face = Face_Get(faceID);
147__attribute__((nonnull))
static inline void
148Face_TxBurst(
FaceID faceID,
Packet** npkts, uint16_t count) {
149 Face* face = Face_Get(faceID);
151 Mbuf_EnqueueVector((
struct rte_mbuf**)npkts, count, face->
outputQueue,
true);
154 rte_pktmbuf_free_bulk((
struct rte_mbuf**)npkts, count);
162__attribute__((nonnull))
static inline void
164 Face_TxBurst(faceID, &npkt, 1);
uint16_t FaceID
Numeric face identifier.
Definition faceid.h:13
FaceState
Definition enum.h:20
@ FaceStateUp
Definition enum.h:22
@ MaxFaceRxThreads
Definition enum.h:9
@ MaxFaceTxThreads
Definition enum.h:10
Face gFaces[UINT16_MAX+1]
Static array of all faces.
Definition face.c:5
void(* Face_RxInputFunc)(Face *face, int rxThread, FaceRxInputCtx *ctx)
Process a burst of received L2 frames.
Definition face.h:28
@ FaceRxThread_cntNOctets
FaceRxThread.nFrames[cntNOctets] is nOctets counter.
Definition face.h:48
uint16_t(* Face_TxBurstFunc)(Face *face, struct rte_mbuf **pkts, uint16_t nPkts)
Transmit a burst of L2 frames.
Definition face.h:44
uint16_t(* Face_TxLoopFunc)(Face *face, int txThread)
Transfer a burst of L3 packets from outputQueue to Face_TxBurstFunc .
Definition face.h:36
struct Packet Packet
Definition common.h:11
ParseFor
Definition enum.h:29
@ PktFragment
Definition enum.h:36
@ PktMax
Definition enum.h:43
Face details.
Definition face.h:78
Face_TxBurstFunc txBurst
Definition face.h:91
PdumpSourceRef txPdump
Definition face.h:92
PdumpSourceRef rxPdump
Definition face.h:85
FaceRxThread rx[MaxFaceRxThreads]
Definition face.h:79
InputDemuxes * rxDemuxes
per-face demuxes, overrides RxLoop demuxes
Definition face.h:84
PacketMempools txMempools
mempools for fragmentation
Definition face.h:89
FaceTxThread tx[MaxFaceTxThreads]
Definition face.h:80
ParseFor rxParseFor
Definition face.h:86
Face_TxLoopFunc txLoop
Definition face.h:90
Face_RxInputFunc rxInput
Definition face.h:83
RTE_MARKER rxMarker __rte_cache_aligned
Definition face.h:82
Face RX per-thread information.
Definition face.h:52
uint64_t nDecodeErr
decode errors
Definition face.h:54
Reassembler reass
Definition face.h:55
uint64_t nFrames[PktMax]
nOctets or accepted L3 packets
Definition face.h:53
Face TX per-thread information.
Definition face.h:59
uint64_t nDroppedFrames
dropped L2 frames
Definition face.h:68
uint64_t nDroppedOctets
dropped L2 octets
Definition face.h:69
uint64_t nAllocFails
dropped L3 packets due to allocation failure
Definition face.h:64
uint64_t nextSeqNum
next fragmentation sequence number
Definition face.h:60
uint64_t nFrames[PktMax]
sent+dropped L2 frames and L3 packets
Definition face.h:66
uint64_t nL3OverLength
dropped L3 packets due to over length
Definition face.h:63
uint64_t nL3Fragmented
L3 packets that required fragmentation.
Definition face.h:62
uint64_t nOctets
sent+dropped L2 octets (including LpHeader)
Definition face.h:67
Generic network interface.
Definition face.h:98
struct rte_ring * outputQueue
Definition face.h:100
FaceState state
Definition face.h:104
FaceImpl * impl
Definition face.h:99
FaceID id
Definition face.h:103
PacketTxAlign txAlign
Definition face.h:102
struct cds_hlist_node txlNode
Definition face.h:101
Mempools for packet modification.
Definition common.h:17
mbuf alignment requirements for encoding or packet modification.
Definition common.h:35
RCU-protected pointer to PdumpSource.
Definition source.h:31
NDNLPv2 reassembler.
Definition reassembler.h:9