NDN-DPDK
High-Speed Named Data Networking Forwarder
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
face-impl.h
Go to the documentation of this file.
1 #ifndef NDNDPDK_IFACE_FACE_IMPL_H
2 #define NDNDPDK_IFACE_FACE_IMPL_H
3 
6 #include "face.h"
7 
12 __attribute__((nonnull)) void
13 FaceRx_Input(Face* face, int rxThread, FaceRxInputCtx* ctx);
14 
15 __attribute__((nonnull)) static __rte_always_inline void
16 FaceTx_CheckDirectFragmentMbuf_(struct rte_mbuf* pkt) {
17  NDNDPDK_ASSERT(pkt->pkt_len > 0);
18  NDNDPDK_ASSERT(RTE_MBUF_DIRECT(pkt));
19  NDNDPDK_ASSERT(rte_mbuf_refcnt_read(pkt) == 1);
20  NDNDPDK_ASSERT(rte_pktmbuf_headroom(pkt) >= RTE_PKTMBUF_HEADROOM + LpHeaderHeadroom);
21 }
22 
29 typedef uint16_t (*FaceTx_OutputFunc)(Face* face, int txThread, Packet* npkt,
30  struct rte_mbuf* frames[LpMaxFragments]);
31 
33 __attribute__((nonnull)) uint16_t
34 FaceTx_LinearOne(Face* face, int txThread, Packet* npkt, struct rte_mbuf* frames[LpMaxFragments]);
35 
37 __attribute__((nonnull)) uint16_t
38 FaceTx_ChainedOne(Face* face, int txThread, Packet* npkt, struct rte_mbuf* frames[LpMaxFragments]);
39 
41 __attribute__((nonnull)) uint16_t
42 FaceTx_LinearFrag(Face* face, int txThread, Packet* npkt, struct rte_mbuf* frames[LpMaxFragments]);
43 
45 __attribute__((nonnull)) uint16_t
46 FaceTx_ChainedFrag(Face* face, int txThread, Packet* npkt, struct rte_mbuf* frames[LpMaxFragments]);
47 
48 #endif // NDNDPDK_IFACE_FACE_IMPL_H
#define NDNDPDK_ASSERT(x)
Definition: common.h:60
uint16_t(* FaceTx_OutputFunc)(Face *face, int txThread, Packet *npkt, struct rte_mbuf *frames[LpMaxFragments])
Process an outgoing L3 packet.
Definition: face-impl.h:29
uint16_t FaceTx_LinearOne(Face *face, int txThread, Packet *npkt, struct rte_mbuf *frames[LpMaxFragments])
FaceTx_OutputFunc for PacketTxAlign.linearize==true with single-segment packet.
Definition: face-tx.c:22
uint16_t FaceTx_ChainedFrag(Face *face, int txThread, Packet *npkt, struct rte_mbuf *frames[LpMaxFragments])
FaceTx_OutputFunc for PacketTxAlign.linearize==false with multi-segment packet.
Definition: face-tx.c:69
void FaceRx_Input(Face *face, int rxThread, FaceRxInputCtx *ctx)
Process a burst of received L2 frames.
Definition: face-rx.c:8
uint16_t FaceTx_LinearFrag(Face *face, int txThread, Packet *npkt, struct rte_mbuf *frames[LpMaxFragments])
FaceTx_OutputFunc for PacketTxAlign.linearize==true with multi-segment packet.
Definition: face-tx.c:32
uint16_t FaceTx_ChainedOne(Face *face, int txThread, Packet *npkt, struct rte_mbuf *frames[LpMaxFragments])
FaceTx_OutputFunc for PacketTxAlign.linearize==false with single-segment packet.
Definition: face-tx.c:27
struct Packet Packet
Definition: common.h:11
@ LpMaxFragments
Definition: enum.h:8
@ LpHeaderHeadroom
Definition: enum.h:7
Face_RxInputFunc inputs and outputs.
Definition: face.h:14
Generic network interface.
Definition: face.h:98