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

Function kernel_rx_node_init

dpdk/lib/node/kernel_rx.c:189–231  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

187}
188
189static int
190kernel_rx_node_init(const struct rte_graph *graph, struct rte_node *node)
191{
192 struct kernel_rx_node_main *rx_node_main = kernel_rx_node_data_get();
193 kernel_rx_node_ctx_t *ctx = (kernel_rx_node_ctx_t *)node->ctx;
194 kernel_rx_node_elem_t *elem = rx_node_main->head;
195 kernel_rx_info_t *recv_info;
196 int sock;
197
198 while (elem) {
199 if (elem->nid == node->id) {
200 /* Update node specific context */
201 memcpy(ctx, &elem->ctx, sizeof(kernel_rx_node_ctx_t));
202 break;
203 }
204 elem = elem->next;
205 }
206
207 RTE_VERIFY(elem != NULL);
208
209 if (ctx->pktmbuf_pool == NULL) {
210 node_err("kernel_rx", "Invalid mbuf pool on graph %s", graph->name);
211 return -EINVAL;
212 }
213
214 recv_info = rte_zmalloc_socket("kernel_rx_info", sizeof(kernel_rx_info_t),
215 RTE_CACHE_LINE_SIZE, graph->socket);
216 if (!recv_info) {
217 node_err("kernel_rx", "Kernel recv_info is NULL");
218 return -ENOMEM;
219 }
220
221 sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
222 if (sock < 0) {
223 node_err("kernel_rx", "Unable to open RAW socket");
224 return sock;
225 }
226
227 recv_info->sock = sock;
228 ctx->recv_info = recv_info;
229
230 return 0;
231}
232
233static void
234kernel_rx_node_fini(const struct rte_graph *graph __rte_unused, struct rte_node *node)

Callers

nothing calls this directly

Calls 4

kernel_rx_node_data_getFunction · 0.85
rte_zmalloc_socketFunction · 0.85
memcpyFunction · 0.50
socketClass · 0.50

Tested by

no test coverage detected