NDN-DPDK
High-Speed Named Data Networking Forwarder
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
tx.h
Go to the documentation of this file.
1 #ifndef NDNDPDK_TGCONSUMER_TX_H
2 #define NDNDPDK_TGCONSUMER_TX_H
3 
6 #include "common.h"
7 
8 #include "../dpdk/thread.h"
9 #include "../iface/face.h"
10 #include "../vendor/pcg_basic.h"
11 
12 typedef struct TgcTx TgcTx;
13 typedef struct TgcTxPattern TgcTxPattern;
14 
15 typedef struct TgcTxDigestPattern {
21 
22 typedef uint16_t (*TgcTxPattern_MakeSuffix)(TgcTx* ct, uint8_t patternID, TgcTxPattern* pattern);
23 
24 __attribute__((nonnull)) uint16_t
25 TgcTxPattern_MakeSuffix_Digest(TgcTx* ct, uint8_t patternID, TgcTxPattern* pattern);
26 __attribute__((nonnull)) uint16_t
27 TgcTxPattern_MakeSuffix_Offset(TgcTx* ct, uint8_t patternID, TgcTxPattern* pattern);
28 __attribute__((nonnull)) uint16_t
29 TgcTxPattern_MakeSuffix_Increment(TgcTx* ct, uint8_t patternID, TgcTxPattern* pattern);
30 
32 struct TgcTxPattern {
33  uint64_t nInterests;
35 
36  uint8_t a_[6];
37  uint8_t seqNumT;
38  uint8_t seqNumL;
39  uint64_t seqNumV;
40  uint8_t digestT;
41  uint8_t digestL;
43 
44  union {
46  uint64_t seqNumOffset;
47  };
48 
50 };
51 static_assert(offsetof(TgcTxPattern, seqNumL) + 1 == offsetof(TgcTxPattern, seqNumV), "");
52 static_assert(offsetof(TgcTxPattern, seqNumT) + TgcSeqNumSize + ImplicitDigestSize ==
53  offsetof(TgcTxPattern, digestV) + RTE_SIZEOF_FIELD(TgcTxPattern, digestV),
54  "");
55 
57 struct TgcTx {
59  uint32_t nWeights;
61  uint8_t runNum;
62  struct rte_mempool* interestMp;
64 
65  pcg32_random_t trafficRng;
66  pcg32_random_t nonceRng;
67  uint64_t nAllocError;
68 
71 };
72 
73 __attribute__((nonnull)) int
74 TgcTx_Run(TgcTx* ct);
75 
76 #endif // NDNDPDK_TGCONSUMER_TX_H
uint16_t FaceID
Numeric face identifier.
Definition: faceid.h:13
@ ImplicitDigestLength
Definition: enum.h:11
@ ImplicitDigestSize
Definition: enum.h:12
Crypto queue pair.
Definition: cryptodev.h:12
Data encoder optimized for traffic generator.
Definition: data.h:125
Template for Interest encoding.
Definition: interest.h:84
Name in linear buffer.
Definition: name.h:11
Mempools for packet modification.
Definition: common.h:17
Definition: tx.h:15
LName prefix
Definition: tx.h:19
CryptoQueuePair cqp
Definition: tx.h:17
PacketMempools dataMp
Definition: tx.h:16
DataGen dataGen
Definition: tx.h:18
Per-pattern information in traffic generator consumer.
Definition: tx.h:32
uint64_t seqNumV
Definition: tx.h:39
TgcTxDigestPattern * digest
Definition: tx.h:45
uint8_t digestT
Definition: tx.h:40
uint8_t a_[6]
Definition: tx.h:36
uint64_t seqNumOffset
Definition: tx.h:46
InterestTemplate tpl
Definition: tx.h:49
TgcTxPattern_MakeSuffix makeSuffix
Definition: tx.h:34
uint8_t seqNumT
Definition: tx.h:37
uint8_t digestL
Definition: tx.h:41
uint64_t nInterests
Definition: tx.h:33
uint8_t seqNumL
Definition: tx.h:38
uint8_t digestV[ImplicitDigestLength]
Definition: tx.h:42
Traffic generator consumer TX thread.
Definition: tx.h:57
TscDuration burstInterval
interval between two bursts
Definition: tx.h:63
uint8_t weight[TgcMaxSumWeight]
Definition: tx.h:69
FaceID face
Definition: tx.h:60
pcg32_random_t nonceRng
Definition: tx.h:66
uint64_t nAllocError
Definition: tx.h:67
TgcTxPattern pattern[TgcMaxPatterns]
Definition: tx.h:70
pcg32_random_t trafficRng
Definition: tx.h:65
ThreadCtrl ctrl
Definition: tx.h:58
uint8_t runNum
Definition: tx.h:61
struct rte_mempool * interestMp
Definition: tx.h:62
uint32_t nWeights
Definition: tx.h:59
Thread load stats and stop flag.
Definition: thread.h:10
@ TgcSeqNumSize
Definition: common.h:10
@ TgcMaxPatterns
Definition: enum.h:7
@ TgcMaxSumWeight
Definition: enum.h:8
int64_t TscDuration
Duration in TscTime unit.
Definition: tsc.h:12
uint16_t TgcTxPattern_MakeSuffix_Offset(TgcTx *ct, uint8_t patternID, TgcTxPattern *pattern)
Definition: tx.c:76
int TgcTx_Run(TgcTx *ct)
Definition: tx.c:135
uint16_t TgcTxPattern_MakeSuffix_Digest(TgcTx *ct, uint8_t patternID, TgcTxPattern *pattern)
Definition: tx.c:44
uint16_t(* TgcTxPattern_MakeSuffix)(TgcTx *ct, uint8_t patternID, TgcTxPattern *pattern)
Definition: tx.h:22
struct TgcTxDigestPattern TgcTxDigestPattern
uint16_t TgcTxPattern_MakeSuffix_Increment(TgcTx *ct, uint8_t patternID, TgcTxPattern *pattern)
Definition: tx.c:86