1#ifndef NDNDPDK_PCCT_PCC_ENTRY_H
2#define NDNDPDK_PCCT_PCC_ENTRY_H
6#include "../vendor/uthash-handle.h"
62 struct __rte_packed_begin {
71 struct __rte_packed_begin {
78 struct __rte_packed_begin {
83 struct __rte_packed_begin {
95static_assert(offsetof(
PccEntry, b_) - offsetof(
PccEntry, a_) ==
sizeof(uint64_t),
"");
97__attribute__((nonnull))
static __rte_always_inline
PccSlot*
101 return &entry->
slot1;
124__attribute__((nonnull, returns_nonnull))
static inline PitEntry*
125PccEntry_GetPitEntry0(
PccEntry* entry) {
126 return &PccEntry_GetSlot_(entry, entry->
pitEntry0Slot)->pitEntry;
134__attribute__((nonnull))
static inline PitEntry*
135PccEntry_AddPitEntry0(
PccEntry* entry) {
137 return PccEntry_GetPitEntry0(entry);
141 if (unlikely(slot == NULL)) {
148__attribute__((nonnull))
static inline void
149PccEntry_RemovePitEntry0(
PccEntry* entry) {
157__attribute__((nonnull, returns_nonnull))
static inline PitEntry*
158PccEntry_GetPitEntry1(
PccEntry* entry) {
159 return &PccEntry_GetSlot_(entry, entry->
pitEntry1Slot)->pitEntry;
167__attribute__((nonnull))
static inline PitEntry*
168PccEntry_AddPitEntry1(
PccEntry* entry) {
170 return PccEntry_GetPitEntry1(entry);
174 if (unlikely(slot == NULL)) {
181__attribute__((nonnull))
static inline void
182PccEntry_RemovePitEntry1(
PccEntry* entry) {
190__attribute__((nonnull, returns_nonnull))
static inline CsEntry*
191PccEntry_GetCsEntry(
PccEntry* entry) {
192 return &PccEntry_GetSlot_(entry, entry->
csEntrySlot)->csEntry;
200__attribute__((nonnull))
static inline CsEntry*
201PccEntry_AddCsEntry(
PccEntry* entry) {
203 return PccEntry_GetCsEntry(entry);
207 if (unlikely(slot == NULL)) {
214__attribute__((nonnull))
static inline void
215PccEntry_RemoveCsEntry(
PccEntry* entry) {
struct __rte_packed_begin vlanhdr __rte_packed_end
#define NDNDPDK_ASSERT(x)
Definition common.h:60
PCC_SLOT_NONE
Definition pcc-entry.h:35
enum __rte_packed_begin PccSlotIndex PccSlotIndex
Identify a PCC entry slot.
Definition pcc-entry.h:34
PccSlotIndex PccEntry_ClearSlot_(PccEntry *entry, PccSlotIndex slot)
Definition pcc-entry.c:49
@ PccTokenBits
Definition pcc-entry.h:13
@ PccTokenSize
Definition pcc-entry.h:12
@ PccTokenMask
Definition pcc-entry.h:14
PCC_SLOT2
Definition pcc-entry.h:37
PCC_SLOT3
Definition pcc-entry.h:38
PccSlotIndex PccEntry_AllocateSlot_(PccEntry *entry, PccSlot **slot)
Definition pcc-entry.c:8
PCC_SLOT1
Definition pcc-entry.h:36
A CS entry.
Definition cs-entry.h:22
PCC entry extension.
Definition pcc-entry.h:46
PccSlot slot3
Definition pcc-entry.h:48
PccSlot slot2
Definition pcc-entry.h:47
PIT-CS composite entry.
Definition pcc-entry.h:56
const int hasPitEntries
Definition pcc-entry.h:80
PccSlotIndex pitEntry1Slot
Definition pcc-entry.h:66
bool hasToken
Definition pcc-entry.h:63
const int hasPitEntry1
Definition pcc-entry.h:74
UT_hash_handle hh
Definition pcc-entry.h:58
PccSlot slot1
Definition pcc-entry.h:92
const int hasPitEntry0
Definition pcc-entry.h:73
uint64_t token
Definition pcc-entry.h:69
RTE_MARKER b_
Definition pcc-entry.h:90
const int hasEntries
Definition pcc-entry.h:85
PccKey key
Definition pcc-entry.h:57
PccSlotIndex pitEntry0Slot
Definition pcc-entry.h:65
RTE_MARKER a_
Definition pcc-entry.h:60
PccEntryExt * ext
Definition pcc-entry.h:93
const int hasCsEntry
Definition pcc-entry.h:75
PccSlotIndex csEntrySlot
Definition pcc-entry.h:67
uint64_t tokenQword
Definition pcc-entry.h:88
Hash key stored in PccEntry .
Definition pcc-key.h:50
A PIT entry.
Definition pit-entry.h:24
PCC entry slot.
Definition pcc-entry.h:24
PitEntry pitEntry
Definition pcc-entry.h:29
PccEntry * pccEntry
NULL indicates unoccupied slot.
Definition pcc-entry.h:27
uint64_t a_[2]
Definition pcc-entry.h:26
CsEntry csEntry
Definition pcc-entry.h:30