1*fc1f2750SBernard Iremonger.. BSD LICENSE 2*fc1f2750SBernard Iremonger Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3*fc1f2750SBernard Iremonger All rights reserved. 4*fc1f2750SBernard Iremonger 5*fc1f2750SBernard Iremonger Redistribution and use in source and binary forms, with or without 6*fc1f2750SBernard Iremonger modification, are permitted provided that the following conditions 7*fc1f2750SBernard Iremonger are met: 8*fc1f2750SBernard Iremonger 9*fc1f2750SBernard Iremonger * Redistributions of source code must retain the above copyright 10*fc1f2750SBernard Iremonger notice, this list of conditions and the following disclaimer. 11*fc1f2750SBernard Iremonger * Redistributions in binary form must reproduce the above copyright 12*fc1f2750SBernard Iremonger notice, this list of conditions and the following disclaimer in 13*fc1f2750SBernard Iremonger the documentation and/or other materials provided with the 14*fc1f2750SBernard Iremonger distribution. 15*fc1f2750SBernard Iremonger * Neither the name of Intel Corporation nor the names of its 16*fc1f2750SBernard Iremonger contributors may be used to endorse or promote products derived 17*fc1f2750SBernard Iremonger from this software without specific prior written permission. 18*fc1f2750SBernard Iremonger 19*fc1f2750SBernard Iremonger THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20*fc1f2750SBernard Iremonger "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21*fc1f2750SBernard Iremonger LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22*fc1f2750SBernard Iremonger A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23*fc1f2750SBernard Iremonger OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24*fc1f2750SBernard Iremonger SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25*fc1f2750SBernard Iremonger LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26*fc1f2750SBernard Iremonger DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27*fc1f2750SBernard Iremonger THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28*fc1f2750SBernard Iremonger (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29*fc1f2750SBernard Iremonger OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30*fc1f2750SBernard Iremonger 31*fc1f2750SBernard Iremonger**Part 2: Development Environment** 32*fc1f2750SBernard Iremonger 33*fc1f2750SBernard IremongerSource Organization 34*fc1f2750SBernard Iremonger=================== 35*fc1f2750SBernard Iremonger 36*fc1f2750SBernard IremongerThis section describes the organization of sources in the Intel® DPDK framework. 37*fc1f2750SBernard Iremonger 38*fc1f2750SBernard IremongerMakefiles and Config 39*fc1f2750SBernard Iremonger-------------------- 40*fc1f2750SBernard Iremonger 41*fc1f2750SBernard Iremonger.. note:: 42*fc1f2750SBernard Iremonger 43*fc1f2750SBernard Iremonger In the following descriptions, 44*fc1f2750SBernard Iremonger RTE_SDK is the environment variable that points to the base directory into which the tarball was extracted. 45*fc1f2750SBernard Iremonger See 46*fc1f2750SBernard Iremonger :ref:`Useful Variables Provided by the Build System <Useful_Variables_Provided_by_the_Build_System>` 47*fc1f2750SBernard Iremonger for descriptions of other variables. 48*fc1f2750SBernard Iremonger 49*fc1f2750SBernard IremongerMakefiles that are provided by the Intel® DPDK libraries and applications are located in $(RTE_SDK)/mk. 50*fc1f2750SBernard Iremonger 51*fc1f2750SBernard IremongerConfig templates are located in $(RTE_SDK)/config. The templates describe the options that are enabled for each target. 52*fc1f2750SBernard IremongerThe config file also contains items that can be enabled and disabled for many of the Intel® DPDK libraries, 53*fc1f2750SBernard Iremongerincluding debug options. 54*fc1f2750SBernard IremongerThe user should look at the config file and become familiar with the options. 55*fc1f2750SBernard IremongerThe config file is also used to create a header file, which will be located in the new build directory. 56*fc1f2750SBernard Iremonger 57*fc1f2750SBernard IremongerLibraries 58*fc1f2750SBernard Iremonger--------- 59*fc1f2750SBernard Iremonger 60*fc1f2750SBernard IremongerLibraries are located in subdirectories of $(RTE_SDK)/lib. 61*fc1f2750SBernard IremongerBy convention, we call a library any code that provides an API to an application. 62*fc1f2750SBernard IremongerTypically, it generates an archive file (.a), but a kernel module should also go in the same directory. 63*fc1f2750SBernard Iremonger 64*fc1f2750SBernard IremongerThe lib directory contains:: 65*fc1f2750SBernard Iremonger 66*fc1f2750SBernard Iremonger lib 67*fc1f2750SBernard Iremonger +-- librte_cmdline # command line interface helper 68*fc1f2750SBernard Iremonger +-- librte_distributor # packet distributor 69*fc1f2750SBernard Iremonger +-- librte_eal # environment abstraction layer 70*fc1f2750SBernard Iremonger +-- librte_ether # generic interface to poll mode driver 71*fc1f2750SBernard Iremonger +-- librte_hash # hash library 72*fc1f2750SBernard Iremonger +-- librte_ip_frag # IP fragmentation library 73*fc1f2750SBernard Iremonger +-- librte_ivshmem # QEMU IVSHMEM library 74*fc1f2750SBernard Iremonger +-- librte_kni # kernel NIC interface 75*fc1f2750SBernard Iremonger +-- librte_kvargs # argument parsing library 76*fc1f2750SBernard Iremonger +-- librte_lpm # longest prefix match library 77*fc1f2750SBernard Iremonger +-- librte_malloc # malloc-like functions 78*fc1f2750SBernard Iremonger +-- librte_mbuf # packet and control mbuf manipulation library 79*fc1f2750SBernard Iremonger +-- librte_mempool # memory pool manager (fixedsized objects) 80*fc1f2750SBernard Iremonger +-- librte_meter # QoS metering library 81*fc1f2750SBernard Iremonger +-- librte_net # various IP-related headers 82*fc1f2750SBernard Iremonger +-- librte_pmd_bond # bonding poll mode driver 83*fc1f2750SBernard Iremonger +-- librte_pmd_e1000 # 1GbE poll mode drivers (igb and em) 84*fc1f2750SBernard Iremonger +-- librte_pmd_ixgbe # 10GbE poll mode driver 85*fc1f2750SBernard Iremonger +-- librte_pmd_i40e # 40GbE poll mode driver 86*fc1f2750SBernard Iremonger +-- librte_pmd_pcap # PCAP poll mode driver 87*fc1f2750SBernard Iremonger +-- librte_pmd_ring # ring poll mode driver 88*fc1f2750SBernard Iremonger +-- librte_pmd_virtio # virtio poll mode driver 89*fc1f2750SBernard Iremonger +-- librte_pmd_vmxnet3 # VMXNET3 poll mode driver 90*fc1f2750SBernard Iremonger +-- librte_pmd_xenvirt # Xen virtio poll mode driver 91*fc1f2750SBernard Iremonger +-- librte_power # power management library 92*fc1f2750SBernard Iremonger +-- librte_ring # software rings (act as lockless FIFOs) 93*fc1f2750SBernard Iremonger +-- librte_sched # QoS scheduler and dropper library 94*fc1f2750SBernard Iremonger +-- librte_timer # timer library 95*fc1f2750SBernard Iremonger 96*fc1f2750SBernard IremongerApplications 97*fc1f2750SBernard Iremonger------------ 98*fc1f2750SBernard Iremonger 99*fc1f2750SBernard IremongerApplications are sources that contain a main() function. 100*fc1f2750SBernard IremongerThey are located in the $(RTE_SDK)/app and $(RTE_SDK)/examples directories. 101*fc1f2750SBernard Iremonger 102*fc1f2750SBernard IremongerThe app directory contains sample applications that are used to test the Intel® DPDK (autotests). 103*fc1f2750SBernard IremongerThe examples directory contains sample applications that show how libraries can be used. 104*fc1f2750SBernard Iremonger 105*fc1f2750SBernard Iremonger:: 106*fc1f2750SBernard Iremonger 107*fc1f2750SBernard Iremonger app 108*fc1f2750SBernard Iremonger +-- chkincs # test prog to check include depends 109*fc1f2750SBernard Iremonger +-- test # autotests, to validate DPDK features 110*fc1f2750SBernard Iremonger `-- test-pmd # test and bench poll mode driver examples 111*fc1f2750SBernard Iremonger 112*fc1f2750SBernard Iremonger examples 113*fc1f2750SBernard Iremonger +-- cmdline # Example of using cmdline library 114*fc1f2750SBernard Iremonger +-- dpdk_qat # Example showing integration with Intel QuickAssist 115*fc1f2750SBernard Iremonger +-- exception_path # Sending packets to and from Linux ethernet device (TAP) 116*fc1f2750SBernard Iremonger +-- helloworld # Helloworld basic example 117*fc1f2750SBernard Iremonger +-- ip_reassembly # Example showing IP Reassembly 118*fc1f2750SBernard Iremonger +-- ip_fragmentation # Example showing IPv4 Fragmentation 119*fc1f2750SBernard Iremonger +-- ipv4_multicast # Example showing IPv4 Multicast 120*fc1f2750SBernard Iremonger +-- kni # Kernel NIC Interface example 121*fc1f2750SBernard Iremonger +-- l2fwd # L2 Forwarding example with and without SR-IOV 122*fc1f2750SBernard Iremonger +-- l3fwd # L3 Forwarding example 123*fc1f2750SBernard Iremonger +-- l3fwd-power # L3 Forwarding example with power management 124*fc1f2750SBernard Iremonger +-- l3fwd-vf # L3 Forwarding example with SR-IOV 125*fc1f2750SBernard Iremonger +-- link_status_interrupt # Link status change interrupt example 126*fc1f2750SBernard Iremonger +-- load_balancer # Load balancing across multiple cores/sockets 127*fc1f2750SBernard Iremonger +-- multi_process # Example applications with multiple DPDK processes 128*fc1f2750SBernard Iremonger +-- qos_meter # QoS metering example 129*fc1f2750SBernard Iremonger +-- qos_sched # QoS scheduler and dropper example 130*fc1f2750SBernard Iremonger +-- timer # Example of using librte_timer library 131*fc1f2750SBernard Iremonger +-- vmdq_dcb # Intel 82599 Ethernet Controller VMDQ and DCB receiving 132*fc1f2750SBernard Iremonger +-- vmdq # Example of VMDQ receiving for both Intel 10G (82599) and 1G (82576, 82580 and I350) Ethernet Controllers 133*fc1f2750SBernard Iremonger `-- vhost # Example of userspace vhost and switch 134*fc1f2750SBernard Iremonger 135*fc1f2750SBernard Iremonger.. note:: 136*fc1f2750SBernard Iremonger 137*fc1f2750SBernard Iremonger The actual examples directory may contain additional sample applications to those shown above. 138*fc1f2750SBernard Iremonger Check the latest Intel® DPDK source files for details. 139