1*ed2a80fdSPablo de Lara /*- 2*ed2a80fdSPablo de Lara * BSD LICENSE 3*ed2a80fdSPablo de Lara * 4*ed2a80fdSPablo de Lara * Copyright(c) 2016-2017 Intel Corporation. All rights reserved. 5*ed2a80fdSPablo de Lara * All rights reserved. 6*ed2a80fdSPablo de Lara * 7*ed2a80fdSPablo de Lara * Redistribution and use in source and binary forms, with or without 8*ed2a80fdSPablo de Lara * modification, are permitted provided that the following conditions 9*ed2a80fdSPablo de Lara * are met: 10*ed2a80fdSPablo de Lara * 11*ed2a80fdSPablo de Lara * * Redistributions of source code must retain the above copyright 12*ed2a80fdSPablo de Lara * notice, this list of conditions and the following disclaimer. 13*ed2a80fdSPablo de Lara * * Redistributions in binary form must reproduce the above copyright 14*ed2a80fdSPablo de Lara * notice, this list of conditions and the following disclaimer in 15*ed2a80fdSPablo de Lara * the documentation and/or other materials provided with the 16*ed2a80fdSPablo de Lara * distribution. 17*ed2a80fdSPablo de Lara * * Neither the name of Intel Corporation nor the names of its 18*ed2a80fdSPablo de Lara * contributors may be used to endorse or promote products derived 19*ed2a80fdSPablo de Lara * from this software without specific prior written permission. 20*ed2a80fdSPablo de Lara * 21*ed2a80fdSPablo de Lara * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22*ed2a80fdSPablo de Lara * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23*ed2a80fdSPablo de Lara * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24*ed2a80fdSPablo de Lara * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25*ed2a80fdSPablo de Lara * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26*ed2a80fdSPablo de Lara * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27*ed2a80fdSPablo de Lara * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28*ed2a80fdSPablo de Lara * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29*ed2a80fdSPablo de Lara * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30*ed2a80fdSPablo de Lara * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31*ed2a80fdSPablo de Lara * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32*ed2a80fdSPablo de Lara */ 33*ed2a80fdSPablo de Lara 34*ed2a80fdSPablo de Lara #ifndef _INIT_H_ 35*ed2a80fdSPablo de Lara #define _INIT_H_ 36*ed2a80fdSPablo de Lara 37*ed2a80fdSPablo de Lara /* 38*ed2a80fdSPablo de Lara * #include <rte_ring.h> 39*ed2a80fdSPablo de Lara * #include "args.h" 40*ed2a80fdSPablo de Lara */ 41*ed2a80fdSPablo de Lara 42*ed2a80fdSPablo de Lara /* 43*ed2a80fdSPablo de Lara * Define a node structure with all needed info, including 44*ed2a80fdSPablo de Lara * stats from the nodes. 45*ed2a80fdSPablo de Lara */ 46*ed2a80fdSPablo de Lara struct node { 47*ed2a80fdSPablo de Lara struct rte_ring *rx_q; 48*ed2a80fdSPablo de Lara unsigned int node_id; 49*ed2a80fdSPablo de Lara /* these stats hold how many packets the node will actually receive, 50*ed2a80fdSPablo de Lara * and how many packets were dropped because the node's queue was full. 51*ed2a80fdSPablo de Lara * The port-info stats, in contrast, record how many packets were received 52*ed2a80fdSPablo de Lara * or transmitted on an actual NIC port. 53*ed2a80fdSPablo de Lara */ 54*ed2a80fdSPablo de Lara struct { 55*ed2a80fdSPablo de Lara uint64_t rx; 56*ed2a80fdSPablo de Lara uint64_t rx_drop; 57*ed2a80fdSPablo de Lara } stats; 58*ed2a80fdSPablo de Lara }; 59*ed2a80fdSPablo de Lara 60*ed2a80fdSPablo de Lara extern struct rte_efd_table *efd_table; 61*ed2a80fdSPablo de Lara extern struct node *nodes; 62*ed2a80fdSPablo de Lara 63*ed2a80fdSPablo de Lara /* 64*ed2a80fdSPablo de Lara * shared information between server and nodes: number of nodes, 65*ed2a80fdSPablo de Lara * port numbers, rx and tx stats etc. 66*ed2a80fdSPablo de Lara */ 67*ed2a80fdSPablo de Lara extern struct shared_info *info; 68*ed2a80fdSPablo de Lara 69*ed2a80fdSPablo de Lara extern struct rte_mempool *pktmbuf_pool; 70*ed2a80fdSPablo de Lara extern uint8_t num_nodes; 71*ed2a80fdSPablo de Lara extern unsigned int num_sockets; 72*ed2a80fdSPablo de Lara extern uint32_t num_flows; 73*ed2a80fdSPablo de Lara 74*ed2a80fdSPablo de Lara int init(int argc, char *argv[]); 75*ed2a80fdSPablo de Lara 76*ed2a80fdSPablo de Lara #endif /* ifndef _INIT_H_ */ 77