NDN-DPDK
High-Speed Named Data Networking Forwarder
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
rxloop.h
Go to the documentation of this file.
1 #ifndef NDNDPDK_IFACE_RXLOOP_H
2 #define NDNDPDK_IFACE_RXLOOP_H
3 
6 #include "../dpdk/thread.h"
7 #include "face.h"
8 #include "input-demux.h"
9 #include <rte_bitset.h>
10 
12 typedef struct RxGroupBurstCtx {
14  uint16_t nRx;
15  RTE_MARKER zeroizeEnd_;
16  struct rte_mbuf* pkts[MaxBurstSize];
18 
20 __attribute__((nonnull)) static inline void
21 RxGroupBurstCtx_Drop(RxGroupBurstCtx* ctx, uint16_t i) {
22  rte_bitset_set(ctx->dropBits, i);
23 }
24 
25 typedef struct RxGroup RxGroup;
26 
36 typedef void (*RxGroup_RxBurstFunc)(RxGroup* rxg, RxGroupBurstCtx* ctx);
37 
39 struct RxGroup {
40  struct cds_hlist_node rxlNode;
42  int rxThread;
43 };
44 
46 typedef struct RxLoop {
49 
50  struct cds_hlist_head head;
52 
53 __attribute__((nonnull)) int
54 RxLoop_Run(RxLoop* rxl);
55 
56 #endif // NDNDPDK_IFACE_RXLOOP_H
@ MaxBurstSize
Definition: enum.h:7
InputDemux InputDemuxes[PktMax - 1]
InputDemuxes for Interest, Data, Nack.
Definition: input-demux.h:88
int RxLoop_Run(RxLoop *rxl)
Definition: rxloop.c:111
struct RxGroupBurstCtx RxGroupBurstCtx
Context of RxGroup_RxBurstFunc operation.
struct RxLoop RxLoop
RX loop thread.
void(* RxGroup_RxBurstFunc)(RxGroup *rxg, RxGroupBurstCtx *ctx)
Receive a burst of L2 frames.
Definition: rxloop.h:36
Context of RxGroup_RxBurstFunc operation.
Definition: rxloop.h:12
RTE_BITSET_DECLARE(dropBits, MaxBurstSize)
struct rte_mbuf * pkts[MaxBurstSize]
Definition: rxloop.h:16
uint16_t nRx
Definition: rxloop.h:14
RTE_MARKER zeroizeEnd_
Definition: rxloop.h:15
Receive channel for faces.
Definition: rxloop.h:39
struct cds_hlist_node rxlNode
Definition: rxloop.h:40
RxGroup_RxBurstFunc rxBurst
Definition: rxloop.h:41
int rxThread
FaceRx_Input thread number.
Definition: rxloop.h:42
RX loop thread.
Definition: rxloop.h:46
InputDemuxes demuxes
Definition: rxloop.h:48
struct cds_hlist_head head
Definition: rxloop.h:50
ThreadCtrl ctrl
Definition: rxloop.h:47
Thread load stats and stop flag.
Definition: thread.h:10