1*d30ea906Sjfb8856606 /* SPDX-License-Identifier: BSD-3-Clause
2*d30ea906Sjfb8856606  * Copyright(c) 2016-2017 Intel Corporation
32bfe3f2eSlogwang  */
42bfe3f2eSlogwang 
52bfe3f2eSlogwang #ifndef _INIT_H_
62bfe3f2eSlogwang #define _INIT_H_
72bfe3f2eSlogwang 
82bfe3f2eSlogwang /*
92bfe3f2eSlogwang  * #include <rte_ring.h>
102bfe3f2eSlogwang  * #include "args.h"
112bfe3f2eSlogwang  */
122bfe3f2eSlogwang 
132bfe3f2eSlogwang /*
142bfe3f2eSlogwang  * Define a node structure with all needed info, including
152bfe3f2eSlogwang  * stats from the nodes.
162bfe3f2eSlogwang  */
172bfe3f2eSlogwang struct node {
182bfe3f2eSlogwang 	struct rte_ring *rx_q;
192bfe3f2eSlogwang 	unsigned int node_id;
202bfe3f2eSlogwang 	/* these stats hold how many packets the node will actually receive,
212bfe3f2eSlogwang 	 * and how many packets were dropped because the node's queue was full.
222bfe3f2eSlogwang 	 * The port-info stats, in contrast, record how many packets were received
232bfe3f2eSlogwang 	 * or transmitted on an actual NIC port.
242bfe3f2eSlogwang 	 */
252bfe3f2eSlogwang 	struct {
262bfe3f2eSlogwang 		uint64_t rx;
272bfe3f2eSlogwang 		uint64_t rx_drop;
282bfe3f2eSlogwang 	} stats;
292bfe3f2eSlogwang };
302bfe3f2eSlogwang 
312bfe3f2eSlogwang extern struct rte_efd_table *efd_table;
322bfe3f2eSlogwang extern struct node *nodes;
332bfe3f2eSlogwang 
342bfe3f2eSlogwang /*
352bfe3f2eSlogwang  * shared information between server and nodes: number of nodes,
362bfe3f2eSlogwang  * port numbers, rx and tx stats etc.
372bfe3f2eSlogwang  */
382bfe3f2eSlogwang extern struct shared_info *info;
392bfe3f2eSlogwang 
402bfe3f2eSlogwang extern struct rte_mempool *pktmbuf_pool;
412bfe3f2eSlogwang extern uint8_t num_nodes;
422bfe3f2eSlogwang extern unsigned int num_sockets;
432bfe3f2eSlogwang extern uint32_t num_flows;
442bfe3f2eSlogwang 
452bfe3f2eSlogwang int init(int argc, char *argv[]);
462bfe3f2eSlogwang 
472bfe3f2eSlogwang #endif /* ifndef _INIT_H_ */
48