NDN-DPDK
High-Speed Named Data Networking Forwarder
Loading...
Searching...
No Matches
rxloop.h
Go to the documentation of this file.
1#ifndef NDNDPDK_IFACE_RXLOOP_H
2#define NDNDPDK_IFACE_RXLOOP_H
3
5
6#include "../dpdk/thread.h"
7#include "face.h"
8#include "input-demux.h"
9#include <rte_bitset.h>
10
12typedef struct RxGroupBurstCtx {
14 uint16_t nRx;
15 RTE_MARKER zeroizeEnd_;
16 struct rte_mbuf* pkts[MaxBurstSize];
18
20__attribute__((nonnull)) static inline void
21RxGroupBurstCtx_Drop(RxGroupBurstCtx* ctx, uint16_t i) {
22 rte_bitset_set(ctx->dropBits, i);
23}
24
25typedef struct RxGroup RxGroup;
26
36typedef void (*RxGroup_RxBurstFunc)(RxGroup* rxg, RxGroupBurstCtx* ctx);
37
39struct RxGroup {
40 struct cds_hlist_node rxlNode;
43};
44
46typedef struct RxLoop {
49
50 struct cds_hlist_head head;
52
53__attribute__((nonnull)) int
54RxLoop_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
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