1 #ifndef NDNDPDK_IFACE_FACE_H
2 #define NDNDPDK_IFACE_FACE_H
9 #include "../core/urcu.h"
10 #include "../pdump/source.h"
11 #include <urcu/rcuhlist.h>
106 static_assert(
sizeof(
Face) <= RTE_CACHE_LINE_SIZE,
"");
108 __attribute__((nonnull, returns_nonnull))
static inline void*
109 Face_GetPriv(
Face* face) {
110 return face->
impl->priv;
121 __attribute__((returns_nonnull))
static inline Face*
128 Face_IsDown(
FaceID faceID) {
129 Face* face = Face_Get(faceID);
135 Face_PacketTxAlign(
FaceID faceID) {
136 Face* face = Face_Get(faceID);
147 __attribute__((nonnull))
static inline void
148 Face_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
void(* Face_RxInputFunc)(Face *face, int rxThread, FaceRxInputCtx *ctx)
Process a burst of received L2 frames.
Definition: face.h:28
struct FaceImpl FaceImpl
Face details.
@ FaceRxThread_cntNOctets
FaceRxThread.nFrames[cntNOctets] is nOctets counter.
Definition: face.h:48
struct FaceRxInputCtx FaceRxInputCtx
Face_RxInputFunc inputs and outputs.
uint16_t(* Face_TxBurstFunc)(Face *face, struct rte_mbuf **pkts, uint16_t nPkts)
Transmit a burst of L2 frames.
Definition: face.h:44
struct FaceRxThread FaceRxThread
Face RX per-thread information.
uint16_t(* Face_TxLoopFunc)(Face *face, int txThread)
Transfer a burst of L3 packets from outputQueue to Face_TxBurstFunc .
Definition: face.h:36
struct FaceTxThread FaceTxThread
Face TX per-thread information.
Face gFaces[]
Static array of all faces.
Definition: face.c:5
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
uint8_t priv[] __rte_cache_aligned
Definition: face.h:94
RTE_MARKER txMarker __rte_cache_aligned
Definition: face.h:88
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