MCPcopy Create free account
hub / github.com/F-Stack/f-stack / rte_reorder_init

Function rte_reorder_init

dpdk/lib/reorder/rte_reorder.c:65–120  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

63}
64
65struct rte_reorder_buffer *
66rte_reorder_init(struct rte_reorder_buffer *b, unsigned int bufsize,
67 const char *name, unsigned int size)
68{
69 const unsigned int min_bufsize = rte_reorder_memory_footprint_get(size);
70 static const struct rte_mbuf_dynfield reorder_seqn_dynfield_desc = {
71 .name = RTE_REORDER_SEQN_DYNFIELD_NAME,
72 .size = sizeof(rte_reorder_seqn_t),
73 .align = __alignof__(rte_reorder_seqn_t),
74 };
75
76 if (b == NULL) {
77 RTE_LOG(ERR, REORDER, "Invalid reorder buffer parameter:"
78 " NULL\n");
79 rte_errno = EINVAL;
80 return NULL;
81 }
82 if (!rte_is_power_of_2(size)) {
83 RTE_LOG(ERR, REORDER, "Invalid reorder buffer size"
84 " - Not a power of 2\n");
85 rte_errno = EINVAL;
86 return NULL;
87 }
88 if (name == NULL) {
89 RTE_LOG(ERR, REORDER, "Invalid reorder buffer name ptr:"
90 " NULL\n");
91 rte_errno = EINVAL;
92 return NULL;
93 }
94 if (bufsize < min_bufsize) {
95 RTE_LOG(ERR, REORDER, "Invalid reorder buffer memory size: %u, "
96 "minimum required: %u\n", bufsize, min_bufsize);
97 rte_errno = EINVAL;
98 return NULL;
99 }
100
101 rte_reorder_seqn_dynfield_offset = rte_mbuf_dynfield_register(&reorder_seqn_dynfield_desc);
102 if (rte_reorder_seqn_dynfield_offset < 0) {
103 RTE_LOG(ERR, REORDER,
104 "Failed to register mbuf field for reorder sequence number, rte_errno: %i\n",
105 rte_errno);
106 rte_errno = ENOMEM;
107 return NULL;
108 }
109
110 memset(b, 0, bufsize);
111 strlcpy(b->name, name, sizeof(b->name));
112 b->memsize = bufsize;
113 b->order_buf.size = b->ready_buf.size = size;
114 b->order_buf.mask = b->ready_buf.mask = size - 1;
115 b->ready_buf.entries = (void *)&b[1];
116 b->order_buf.entries = RTE_PTR_ADD(&b[1],
117 size * sizeof(b->ready_buf.entries[0]));
118
119 return b;
120}
121
122/*

Callers 4

rte_reorder_createFunction · 0.85
rte_reorder_resetFunction · 0.85
pdcp_reorder_createFunction · 0.85
test_reorder_initFunction · 0.85

Calls 5

memsetFunction · 0.85
rte_is_power_of_2Function · 0.50
strlcpyFunction · 0.50

Tested by 1

test_reorder_initFunction · 0.68