NDN-DPDK
High-Speed Named Data Networking Forwarder
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
pktqueue.h
Go to the documentation of this file.
1 #ifndef NDNDPDK_IFACE_PKTQUEUE_H
2 #define NDNDPDK_IFACE_PKTQUEUE_H
3 
6 #include "common.h"
7 
9 typedef enum PktQueuePopAct {
14 
23 typedef struct PktQueue {
24  struct rte_ring* ring;
27  uint32_t dequeueBurstSize;
28  uint32_t count;
29  uint32_t lastCount;
30  uint16_t recInvSqrt;
31  bool dropping;
36  uint64_t nDrops;
38 
44 __attribute__((nonnull)) static inline uint32_t
45 PktQueue_Push(PktQueue* q, struct rte_mbuf* pkts[], uint32_t count) {
46  return Mbuf_EnqueueVector(pkts, count, q->ring, false);
47 }
48 
50 typedef struct PktQueuePopResult {
51  uint32_t count;
52  bool drop;
54 
55 typedef PktQueuePopResult (*PktQueue_PopFunc)(PktQueue* q, struct rte_mbuf* pkts[], uint32_t count,
56  TscTime now);
57 extern const PktQueue_PopFunc PktQueue_PopJmp[];
58 
60 __attribute__((nonnull)) static inline PktQueuePopResult
61 PktQueue_Pop(PktQueue* q, struct rte_mbuf* pkts[], uint32_t count, TscTime now) {
62  return PktQueue_PopJmp[q->pop](q, pkts, count, now);
63 }
64 
65 #endif // NDNDPDK_IFACE_PKTQUEUE_H
struct vlanhdr __rte_packed
PktQueuePopAct
Packet queue dequeue method.
Definition: pktqueue.h:9
@ PktQueuePopActDelay
Definition: pktqueue.h:11
@ PktQueuePopActPlain
Definition: pktqueue.h:10
@ PktQueuePopActCoDel
Definition: pktqueue.h:12
struct PktQueue PktQueue
Thread-safe packet queue.
const PktQueue_PopFunc PktQueue_PopJmp[]
Definition: pktqueue.c:106
struct PktQueuePopResult PktQueuePopResult
Packet queue pop result.
PktQueuePopResult(* PktQueue_PopFunc)(PktQueue *q, struct rte_mbuf *pkts[], uint32_t count, TscTime now)
Definition: pktqueue.h:55
Packet queue pop result.
Definition: pktqueue.h:50
bool drop
whether the first packet should be dropped/ECN-marked
Definition: pktqueue.h:52
uint32_t count
number of dequeued packets
Definition: pktqueue.h:51
Thread-safe packet queue.
Definition: pktqueue.h:23
TscDuration interval
CoDel interval.
Definition: pktqueue.h:26
uint32_t count
CoDel internal variable.
Definition: pktqueue.h:28
TscTime firstAboveTime
CoDel internal variable.
Definition: pktqueue.h:33
struct rte_ring * ring
ringbuffer of packets in queue
Definition: pktqueue.h:24
uint16_t recInvSqrt
CoDel internal variable.
Definition: pktqueue.h:30
bool dropping
CoDel internal variable.
Definition: pktqueue.h:31
TscDuration target
delay target or CoDel target
Definition: pktqueue.h:25
PktQueuePopAct pop
dequeue function index
Definition: pktqueue.h:32
TscDuration sojourn
CoDel internal variable.
Definition: pktqueue.h:35
uint64_t nDrops
number of packets marked as dropped by CoDel
Definition: pktqueue.h:36
uint32_t lastCount
CoDel internal variable.
Definition: pktqueue.h:29
TscTime dropNext
CoDel internal variable.
Definition: pktqueue.h:34
uint32_t dequeueBurstSize
maximum dequeue burst size
Definition: pktqueue.h:27
int64_t TscDuration
Duration in TscTime unit.
Definition: tsc.h:12
uint64_t TscTime
TSC clock time point.
Definition: tsc.h:9