Full Code of scylladb/dpdk for AI

master cc7e6ed22c0f cached
1234 files
45.3 MB
6.5M tokens
19458 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (26,173K chars total). Download the full file to get everything.
Repository: scylladb/dpdk
Branch: master
Commit: cc7e6ed22c0f
Files: 1234
Total size: 45.3 MB

Directory structure:
gitextract__og3d0td/

├── .gitignore
├── GNUmakefile
├── LICENSE.GPL
├── LICENSE.LGPL
├── MAINTAINERS
├── Makefile
├── app/
│   ├── Makefile
│   ├── cmdline_test/
│   │   ├── Makefile
│   │   ├── cmdline_test.c
│   │   ├── cmdline_test.h
│   │   ├── cmdline_test.py
│   │   ├── cmdline_test_data.py
│   │   └── commands.c
│   ├── proc_info/
│   │   ├── Makefile
│   │   └── main.c
│   ├── test/
│   │   ├── Makefile
│   │   ├── autotest.py
│   │   ├── autotest_data.py
│   │   ├── autotest_runner.py
│   │   ├── autotest_test_funcs.py
│   │   ├── commands.c
│   │   ├── packet_burst_generator.c
│   │   ├── packet_burst_generator.h
│   │   ├── process.h
│   │   ├── test.c
│   │   ├── test.h
│   │   ├── test_acl.c
│   │   ├── test_acl.h
│   │   ├── test_alarm.c
│   │   ├── test_atomic.c
│   │   ├── test_byteorder.c
│   │   ├── test_cmdline.c
│   │   ├── test_cmdline.h
│   │   ├── test_cmdline_cirbuf.c
│   │   ├── test_cmdline_etheraddr.c
│   │   ├── test_cmdline_ipaddr.c
│   │   ├── test_cmdline_lib.c
│   │   ├── test_cmdline_num.c
│   │   ├── test_cmdline_portlist.c
│   │   ├── test_cmdline_string.c
│   │   ├── test_common.c
│   │   ├── test_cpuflags.c
│   │   ├── test_cycles.c
│   │   ├── test_debug.c
│   │   ├── test_devargs.c
│   │   ├── test_distributor.c
│   │   ├── test_distributor_perf.c
│   │   ├── test_eal_flags.c
│   │   ├── test_eal_fs.c
│   │   ├── test_errno.c
│   │   ├── test_func_reentrancy.c
│   │   ├── test_hash.c
│   │   ├── test_hash_functions.c
│   │   ├── test_hash_perf.c
│   │   ├── test_hash_scaling.c
│   │   ├── test_interrupts.c
│   │   ├── test_ivshmem.c
│   │   ├── test_kni.c
│   │   ├── test_kvargs.c
│   │   ├── test_link_bonding.c
│   │   ├── test_link_bonding_mode4.c
│   │   ├── test_logs.c
│   │   ├── test_lpm.c
│   │   ├── test_lpm6.c
│   │   ├── test_lpm6_routes.h
│   │   ├── test_lpm_routes.h
│   │   ├── test_malloc.c
│   │   ├── test_mbuf.c
│   │   ├── test_memcpy.c
│   │   ├── test_memcpy_perf.c
│   │   ├── test_memory.c
│   │   ├── test_mempool.c
│   │   ├── test_mempool_perf.c
│   │   ├── test_memzone.c
│   │   ├── test_meter.c
│   │   ├── test_mp_secondary.c
│   │   ├── test_pci.c
│   │   ├── test_per_lcore.c
│   │   ├── test_pmd_perf.c
│   │   ├── test_pmd_ring.c
│   │   ├── test_power.c
│   │   ├── test_power_acpi_cpufreq.c
│   │   ├── test_power_kvm_vm.c
│   │   ├── test_prefetch.c
│   │   ├── test_red.c
│   │   ├── test_reorder.c
│   │   ├── test_ring.c
│   │   ├── test_ring_perf.c
│   │   ├── test_rwlock.c
│   │   ├── test_sched.c
│   │   ├── test_spinlock.c
│   │   ├── test_string_fns.c
│   │   ├── test_table.c
│   │   ├── test_table.h
│   │   ├── test_table_acl.c
│   │   ├── test_table_acl.h
│   │   ├── test_table_combined.c
│   │   ├── test_table_combined.h
│   │   ├── test_table_pipeline.c
│   │   ├── test_table_pipeline.h
│   │   ├── test_table_ports.c
│   │   ├── test_table_ports.h
│   │   ├── test_table_tables.c
│   │   ├── test_table_tables.h
│   │   ├── test_tailq.c
│   │   ├── test_thash.c
│   │   ├── test_timer.c
│   │   ├── test_timer_perf.c
│   │   ├── test_timer_racecond.c
│   │   ├── test_version.c
│   │   ├── virtual_pmd.c
│   │   └── virtual_pmd.h
│   ├── test-acl/
│   │   ├── Makefile
│   │   └── main.c
│   ├── test-pipeline/
│   │   ├── Makefile
│   │   ├── config.c
│   │   ├── init.c
│   │   ├── main.c
│   │   ├── main.h
│   │   ├── pipeline_acl.c
│   │   ├── pipeline_hash.c
│   │   ├── pipeline_lpm.c
│   │   ├── pipeline_lpm_ipv6.c
│   │   ├── pipeline_stub.c
│   │   └── runtime.c
│   └── test-pmd/
│       ├── Makefile
│       ├── cmdline.c
│       ├── config.c
│       ├── csumonly.c
│       ├── flowgen.c
│       ├── icmpecho.c
│       ├── ieee1588fwd.c
│       ├── iofwd.c
│       ├── macfwd-retry.c
│       ├── macfwd.c
│       ├── macswap.c
│       ├── mempool_anon.c
│       ├── mempool_osdep.h
│       ├── parameters.c
│       ├── rxonly.c
│       ├── testpmd.c
│       ├── testpmd.h
│       └── txonly.c
├── config/
│   ├── common_bsdapp
│   ├── common_linuxapp
│   ├── defconfig_i686-native-linuxapp-gcc
│   ├── defconfig_i686-native-linuxapp-icc
│   ├── defconfig_ppc_64-power8-linuxapp-gcc
│   ├── defconfig_tile-tilegx-linuxapp-gcc
│   ├── defconfig_x86_64-ivshmem-linuxapp-gcc
│   ├── defconfig_x86_64-ivshmem-linuxapp-icc
│   ├── defconfig_x86_64-native-bsdapp-clang
│   ├── defconfig_x86_64-native-bsdapp-gcc
│   ├── defconfig_x86_64-native-linuxapp-clang
│   ├── defconfig_x86_64-native-linuxapp-gcc
│   ├── defconfig_x86_64-native-linuxapp-icc
│   └── defconfig_x86_x32-native-linuxapp-gcc
├── doc/
│   ├── api/
│   │   ├── doxy-api-index.md
│   │   ├── doxy-api.conf
│   │   └── doxy-html-custom.sh
│   ├── build-sdk-quick.txt
│   └── guides/
│       ├── conf.py
│       ├── contributing/
│       │   ├── coding_style.rst
│       │   ├── design.rst
│       │   ├── documentation.rst
│       │   ├── index.rst
│       │   └── versioning.rst
│       ├── faq/
│       │   ├── faq.rst
│       │   └── index.rst
│       ├── freebsd_gsg/
│       │   ├── build_dpdk.rst
│       │   ├── build_sample_apps.rst
│       │   ├── index.rst
│       │   ├── install_from_ports.rst
│       │   └── intro.rst
│       ├── index.rst
│       ├── linux_gsg/
│       │   ├── build_dpdk.rst
│       │   ├── build_sample_apps.rst
│       │   ├── enable_func.rst
│       │   ├── index.rst
│       │   ├── intro.rst
│       │   ├── quick_start.rst
│       │   └── sys_reqs.rst
│       ├── nics/
│       │   ├── cxgbe.rst
│       │   ├── e1000em.rst
│       │   ├── index.rst
│       │   ├── intel_vf.rst
│       │   ├── ixgbe.rst
│       │   ├── mlx4.rst
│       │   ├── pcap_ring.rst
│       │   ├── virtio.rst
│       │   └── vmxnet3.rst
│       ├── prog_guide/
│       │   ├── build_app.rst
│       │   ├── dev_kit_build_system.rst
│       │   ├── dev_kit_root_make_help.rst
│       │   ├── env_abstraction_layer.rst
│       │   ├── ext_app_lib_make_help.rst
│       │   ├── extend_intel_dpdk.rst
│       │   ├── glossary.rst
│       │   ├── hash_lib.rst
│       │   ├── index.rst
│       │   ├── intro.rst
│       │   ├── ip_fragment_reassembly_lib.rst
│       │   ├── ivshmem_lib.rst
│       │   ├── kernel_nic_interface.rst
│       │   ├── link_bonding_poll_mode_drv_lib.rst
│       │   ├── lpm6_lib.rst
│       │   ├── lpm_lib.rst
│       │   ├── mbuf_lib.rst
│       │   ├── mempool_lib.rst
│       │   ├── multi_proc_support.rst
│       │   ├── overview.rst
│       │   ├── packet_classif_access_ctrl.rst
│       │   ├── packet_distrib_lib.rst
│       │   ├── packet_framework.rst
│       │   ├── perf_opt_guidelines.rst
│       │   ├── poll_mode_drv.rst
│       │   ├── port_hotplug_framework.rst
│       │   ├── power_man.rst
│       │   ├── profile_app.rst
│       │   ├── qos_framework.rst
│       │   ├── reorder_lib.rst
│       │   ├── ring_lib.rst
│       │   ├── source_org.rst
│       │   ├── thread_safety_intel_dpdk_functions.rst
│       │   ├── timer_lib.rst
│       │   ├── vhost_lib.rst
│       │   └── writing_efficient_code.rst
│       ├── rel_notes/
│       │   ├── deprecation.rst
│       │   ├── index.rst
│       │   ├── known_issues.rst
│       │   ├── rel_description.rst
│       │   ├── release_1_8.rst
│       │   ├── release_2_0.rst
│       │   ├── release_2_1.rst
│       │   └── supported_os.rst
│       ├── sample_app_ug/
│       │   ├── cmd_line.rst
│       │   ├── dist_app.rst
│       │   ├── exception_path.rst
│       │   ├── hello_world.rst
│       │   ├── index.rst
│       │   ├── intel_quickassist.rst
│       │   ├── intro.rst
│       │   ├── ip_frag.rst
│       │   ├── ip_pipeline.rst
│       │   ├── ip_reassembly.rst
│       │   ├── ipv4_multicast.rst
│       │   ├── kernel_nic_interface.rst
│       │   ├── l2_forward_job_stats.rst
│       │   ├── l2_forward_real_virtual.rst
│       │   ├── l3_forward.rst
│       │   ├── l3_forward_access_ctrl.rst
│       │   ├── l3_forward_power_man.rst
│       │   ├── l3_forward_virtual.rst
│       │   ├── link_status_intr.rst
│       │   ├── load_balancer.rst
│       │   ├── multi_process.rst
│       │   ├── netmap_compatibility.rst
│       │   ├── packet_ordering.rst
│       │   ├── proc_info.rst
│       │   ├── qos_metering.rst
│       │   ├── qos_scheduler.rst
│       │   ├── quota_watermark.rst
│       │   ├── rxtx_callbacks.rst
│       │   ├── skeleton.rst
│       │   ├── tep_termination.rst
│       │   ├── test_pipeline.rst
│       │   ├── timer.rst
│       │   ├── vhost.rst
│       │   ├── vm_power_management.rst
│       │   └── vmdq_dcb_forwarding.rst
│       ├── testpmd_app_ug/
│       │   ├── build_app.rst
│       │   ├── index.rst
│       │   ├── intro.rst
│       │   ├── overview.rst
│       │   ├── run_app.rst
│       │   └── testpmd_funcs.rst
│       └── xen/
│           ├── index.rst
│           └── pkt_switch.rst
├── drivers/
│   ├── Makefile
│   └── net/
│       ├── Makefile
│       ├── af_packet/
│       │   ├── Makefile
│       │   ├── rte_eth_af_packet.c
│       │   └── rte_eth_af_packet.h
│       ├── bnx2x/
│       │   ├── Makefile
│       │   ├── bnx2x.c
│       │   ├── bnx2x.h
│       │   ├── bnx2x_ethdev.c
│       │   ├── bnx2x_ethdev.h
│       │   ├── bnx2x_logs.h
│       │   ├── bnx2x_rxtx.c
│       │   ├── bnx2x_rxtx.h
│       │   ├── bnx2x_stats.c
│       │   ├── bnx2x_stats.h
│       │   ├── bnx2x_vfpf.c
│       │   ├── bnx2x_vfpf.h
│       │   ├── debug.c
│       │   ├── ecore_fw_defs.h
│       │   ├── ecore_hsi.h
│       │   ├── ecore_init.h
│       │   ├── ecore_init_ops.h
│       │   ├── ecore_mfw_req.h
│       │   ├── ecore_reg.h
│       │   ├── ecore_sp.c
│       │   ├── ecore_sp.h
│       │   ├── elink.c
│       │   └── elink.h
│       ├── bonding/
│       │   ├── Makefile
│       │   ├── rte_eth_bond.h
│       │   ├── rte_eth_bond_8023ad.c
│       │   ├── rte_eth_bond_8023ad.h
│       │   ├── rte_eth_bond_8023ad_private.h
│       │   ├── rte_eth_bond_alb.c
│       │   ├── rte_eth_bond_alb.h
│       │   ├── rte_eth_bond_api.c
│       │   ├── rte_eth_bond_args.c
│       │   ├── rte_eth_bond_pmd.c
│       │   └── rte_eth_bond_private.h
│       ├── cxgbe/
│       │   ├── Makefile
│       │   ├── base/
│       │   │   ├── adapter.h
│       │   │   ├── common.h
│       │   │   ├── t4_chip_type.h
│       │   │   ├── t4_hw.c
│       │   │   ├── t4_hw.h
│       │   │   ├── t4_msg.h
│       │   │   ├── t4_pci_id_tbl.h
│       │   │   ├── t4_regs.h
│       │   │   ├── t4_regs_values.h
│       │   │   └── t4fw_interface.h
│       │   ├── cxgbe.h
│       │   ├── cxgbe_compat.h
│       │   ├── cxgbe_ethdev.c
│       │   ├── cxgbe_main.c
│       │   └── sge.c
│       ├── e1000/
│       │   ├── Makefile
│       │   ├── base/
│       │   │   ├── README
│       │   │   ├── e1000_80003es2lan.c
│       │   │   ├── e1000_80003es2lan.h
│       │   │   ├── e1000_82540.c
│       │   │   ├── e1000_82541.c
│       │   │   ├── e1000_82541.h
│       │   │   ├── e1000_82542.c
│       │   │   ├── e1000_82543.c
│       │   │   ├── e1000_82543.h
│       │   │   ├── e1000_82571.c
│       │   │   ├── e1000_82571.h
│       │   │   ├── e1000_82575.c
│       │   │   ├── e1000_82575.h
│       │   │   ├── e1000_api.c
│       │   │   ├── e1000_api.h
│       │   │   ├── e1000_defines.h
│       │   │   ├── e1000_hw.h
│       │   │   ├── e1000_i210.c
│       │   │   ├── e1000_i210.h
│       │   │   ├── e1000_ich8lan.c
│       │   │   ├── e1000_ich8lan.h
│       │   │   ├── e1000_mac.c
│       │   │   ├── e1000_mac.h
│       │   │   ├── e1000_manage.c
│       │   │   ├── e1000_manage.h
│       │   │   ├── e1000_mbx.c
│       │   │   ├── e1000_mbx.h
│       │   │   ├── e1000_nvm.c
│       │   │   ├── e1000_nvm.h
│       │   │   ├── e1000_osdep.c
│       │   │   ├── e1000_osdep.h
│       │   │   ├── e1000_phy.c
│       │   │   ├── e1000_phy.h
│       │   │   ├── e1000_regs.h
│       │   │   ├── e1000_vf.c
│       │   │   └── e1000_vf.h
│       │   ├── e1000_ethdev.h
│       │   ├── e1000_logs.h
│       │   ├── em_ethdev.c
│       │   ├── em_rxtx.c
│       │   ├── igb_ethdev.c
│       │   ├── igb_pf.c
│       │   ├── igb_regs.h
│       │   └── igb_rxtx.c
│       ├── enic/
│       │   ├── LICENSE
│       │   ├── Makefile
│       │   ├── base/
│       │   │   ├── cq_desc.h
│       │   │   ├── cq_enet_desc.h
│       │   │   ├── rq_enet_desc.h
│       │   │   ├── vnic_cq.c
│       │   │   ├── vnic_cq.h
│       │   │   ├── vnic_dev.c
│       │   │   ├── vnic_dev.h
│       │   │   ├── vnic_devcmd.h
│       │   │   ├── vnic_enet.h
│       │   │   ├── vnic_intr.c
│       │   │   ├── vnic_intr.h
│       │   │   ├── vnic_nic.h
│       │   │   ├── vnic_resource.h
│       │   │   ├── vnic_rq.c
│       │   │   ├── vnic_rq.h
│       │   │   ├── vnic_rss.c
│       │   │   ├── vnic_rss.h
│       │   │   ├── vnic_stats.h
│       │   │   ├── vnic_wq.c
│       │   │   ├── vnic_wq.h
│       │   │   └── wq_enet_desc.h
│       │   ├── enic.h
│       │   ├── enic_clsf.c
│       │   ├── enic_compat.h
│       │   ├── enic_ethdev.c
│       │   ├── enic_main.c
│       │   ├── enic_res.c
│       │   └── enic_res.h
│       ├── fm10k/
│       │   ├── Makefile
│       │   ├── base/
│       │   │   ├── fm10k_api.c
│       │   │   ├── fm10k_api.h
│       │   │   ├── fm10k_common.c
│       │   │   ├── fm10k_common.h
│       │   │   ├── fm10k_mbx.c
│       │   │   ├── fm10k_mbx.h
│       │   │   ├── fm10k_osdep.h
│       │   │   ├── fm10k_pf.c
│       │   │   ├── fm10k_pf.h
│       │   │   ├── fm10k_tlv.c
│       │   │   ├── fm10k_tlv.h
│       │   │   ├── fm10k_type.h
│       │   │   ├── fm10k_vf.c
│       │   │   └── fm10k_vf.h
│       │   ├── fm10k.h
│       │   ├── fm10k_ethdev.c
│       │   ├── fm10k_logs.h
│       │   └── fm10k_rxtx.c
│       ├── i40e/
│       │   ├── Makefile
│       │   ├── base/
│       │   │   ├── i40e_adminq.c
│       │   │   ├── i40e_adminq.h
│       │   │   ├── i40e_adminq_cmd.h
│       │   │   ├── i40e_alloc.h
│       │   │   ├── i40e_common.c
│       │   │   ├── i40e_dcb.c
│       │   │   ├── i40e_dcb.h
│       │   │   ├── i40e_diag.c
│       │   │   ├── i40e_diag.h
│       │   │   ├── i40e_hmc.c
│       │   │   ├── i40e_hmc.h
│       │   │   ├── i40e_lan_hmc.c
│       │   │   ├── i40e_lan_hmc.h
│       │   │   ├── i40e_nvm.c
│       │   │   ├── i40e_osdep.h
│       │   │   ├── i40e_prototype.h
│       │   │   ├── i40e_register.h
│       │   │   ├── i40e_status.h
│       │   │   ├── i40e_type.h
│       │   │   └── i40e_virtchnl.h
│       │   ├── i40e_ethdev.c
│       │   ├── i40e_ethdev.h
│       │   ├── i40e_ethdev_vf.c
│       │   ├── i40e_fdir.c
│       │   ├── i40e_logs.h
│       │   ├── i40e_pf.c
│       │   ├── i40e_pf.h
│       │   ├── i40e_rxtx.c
│       │   └── i40e_rxtx.h
│       ├── ixgbe/
│       │   ├── Makefile
│       │   ├── base/
│       │   │   ├── README
│       │   │   ├── ixgbe_82598.c
│       │   │   ├── ixgbe_82598.h
│       │   │   ├── ixgbe_82599.c
│       │   │   ├── ixgbe_82599.h
│       │   │   ├── ixgbe_api.c
│       │   │   ├── ixgbe_api.h
│       │   │   ├── ixgbe_common.c
│       │   │   ├── ixgbe_common.h
│       │   │   ├── ixgbe_dcb.c
│       │   │   ├── ixgbe_dcb.h
│       │   │   ├── ixgbe_dcb_82598.c
│       │   │   ├── ixgbe_dcb_82598.h
│       │   │   ├── ixgbe_dcb_82599.c
│       │   │   ├── ixgbe_dcb_82599.h
│       │   │   ├── ixgbe_mbx.c
│       │   │   ├── ixgbe_mbx.h
│       │   │   ├── ixgbe_osdep.h
│       │   │   ├── ixgbe_phy.c
│       │   │   ├── ixgbe_phy.h
│       │   │   ├── ixgbe_type.h
│       │   │   ├── ixgbe_vf.c
│       │   │   ├── ixgbe_vf.h
│       │   │   ├── ixgbe_x540.c
│       │   │   ├── ixgbe_x540.h
│       │   │   ├── ixgbe_x550.c
│       │   │   └── ixgbe_x550.h
│       │   ├── ixgbe_82599_bypass.c
│       │   ├── ixgbe_bypass.c
│       │   ├── ixgbe_bypass.h
│       │   ├── ixgbe_bypass_api.h
│       │   ├── ixgbe_bypass_defines.h
│       │   ├── ixgbe_ethdev.c
│       │   ├── ixgbe_ethdev.h
│       │   ├── ixgbe_fdir.c
│       │   ├── ixgbe_logs.h
│       │   ├── ixgbe_pf.c
│       │   ├── ixgbe_regs.h
│       │   ├── ixgbe_rxtx.c
│       │   ├── ixgbe_rxtx.h
│       │   └── ixgbe_rxtx_vec.c
│       ├── mlx4/
│       │   ├── Makefile
│       │   ├── mlx4.c
│       │   └── mlx4.h
│       ├── mpipe/
│       │   ├── Makefile
│       │   └── mpipe_tilegx.c
│       ├── null/
│       │   ├── Makefile
│       │   └── rte_eth_null.c
│       ├── pcap/
│       │   ├── Makefile
│       │   └── rte_eth_pcap.c
│       ├── ring/
│       │   ├── Makefile
│       │   ├── rte_eth_ring.c
│       │   └── rte_eth_ring.h
│       ├── virtio/
│       │   ├── Makefile
│       │   ├── virtio_ethdev.c
│       │   ├── virtio_ethdev.h
│       │   ├── virtio_logs.h
│       │   ├── virtio_pci.c
│       │   ├── virtio_pci.h
│       │   ├── virtio_ring.h
│       │   ├── virtio_rxtx.c
│       │   ├── virtqueue.c
│       │   └── virtqueue.h
│       ├── vmxnet3/
│       │   ├── Makefile
│       │   ├── base/
│       │   │   ├── README
│       │   │   ├── includeCheck.h
│       │   │   ├── upt1_defs.h
│       │   │   ├── vmware_pack_begin.h
│       │   │   ├── vmware_pack_end.h
│       │   │   ├── vmxnet3_defs.h
│       │   │   └── vmxnet3_osdep.h
│       │   ├── vmxnet3_ethdev.c
│       │   ├── vmxnet3_ethdev.h
│       │   ├── vmxnet3_logs.h
│       │   ├── vmxnet3_ring.h
│       │   └── vmxnet3_rxtx.c
│       └── xenvirt/
│           ├── Makefile
│           ├── rte_eth_xenvirt.c
│           ├── rte_eth_xenvirt.h
│           ├── rte_mempool_gntalloc.c
│           ├── rte_xen_lib.c
│           ├── rte_xen_lib.h
│           ├── virtio_logs.h
│           └── virtqueue.h
├── examples/
│   ├── Makefile
│   ├── bond/
│   │   ├── Makefile
│   │   ├── main.c
│   │   └── main.h
│   ├── cmdline/
│   │   ├── Makefile
│   │   ├── commands.c
│   │   ├── commands.h
│   │   ├── main.c
│   │   ├── parse_obj_list.c
│   │   └── parse_obj_list.h
│   ├── distributor/
│   │   ├── Makefile
│   │   └── main.c
│   ├── dpdk_qat/
│   │   ├── Makefile
│   │   ├── config_files/
│   │   │   ├── coleto/
│   │   │   │   └── dh895xcc_qa_dev0.conf
│   │   │   ├── shumway/
│   │   │   │   ├── dh89xxcc_qa_dev0.conf
│   │   │   │   └── dh89xxcc_qa_dev1.conf
│   │   │   └── stargo/
│   │   │       └── dh89xxcc_qa_dev0.conf
│   │   ├── crypto.c
│   │   ├── crypto.h
│   │   └── main.c
│   ├── exception_path/
│   │   ├── Makefile
│   │   └── main.c
│   ├── helloworld/
│   │   ├── Makefile
│   │   └── main.c
│   ├── ip_fragmentation/
│   │   ├── Makefile
│   │   └── main.c
│   ├── ip_pipeline/
│   │   ├── Makefile
│   │   ├── app.h
│   │   ├── config/
│   │   │   ├── ip_pipeline.cfg
│   │   │   ├── ip_pipeline.sh
│   │   │   └── tm_profile.cfg
│   │   ├── config_check.c
│   │   ├── config_parse.c
│   │   ├── config_parse_tm.c
│   │   ├── cpu_core_map.c
│   │   ├── cpu_core_map.h
│   │   ├── init.c
│   │   ├── main.c
│   │   ├── pipeline/
│   │   │   ├── hash_func.h
│   │   │   ├── pipeline_actions_common.h
│   │   │   ├── pipeline_common_be.c
│   │   │   ├── pipeline_common_be.h
│   │   │   ├── pipeline_common_fe.c
│   │   │   ├── pipeline_common_fe.h
│   │   │   ├── pipeline_firewall.c
│   │   │   ├── pipeline_firewall.h
│   │   │   ├── pipeline_firewall_be.c
│   │   │   ├── pipeline_firewall_be.h
│   │   │   ├── pipeline_flow_classification.c
│   │   │   ├── pipeline_flow_classification.h
│   │   │   ├── pipeline_flow_classification_be.c
│   │   │   ├── pipeline_flow_classification_be.h
│   │   │   ├── pipeline_master.c
│   │   │   ├── pipeline_master.h
│   │   │   ├── pipeline_master_be.c
│   │   │   ├── pipeline_master_be.h
│   │   │   ├── pipeline_passthrough.c
│   │   │   ├── pipeline_passthrough.h
│   │   │   ├── pipeline_passthrough_be.c
│   │   │   ├── pipeline_passthrough_be.h
│   │   │   ├── pipeline_routing.c
│   │   │   ├── pipeline_routing.h
│   │   │   ├── pipeline_routing_be.c
│   │   │   └── pipeline_routing_be.h
│   │   ├── pipeline.h
│   │   ├── pipeline_be.h
│   │   └── thread.c
│   ├── ip_reassembly/
│   │   ├── Makefile
│   │   └── main.c
│   ├── ipv4_multicast/
│   │   ├── Makefile
│   │   └── main.c
│   ├── kni/
│   │   ├── Makefile
│   │   └── main.c
│   ├── l2fwd/
│   │   ├── Makefile
│   │   └── main.c
│   ├── l2fwd-ivshmem/
│   │   ├── Makefile
│   │   ├── guest/
│   │   │   ├── Makefile
│   │   │   └── guest.c
│   │   ├── host/
│   │   │   ├── Makefile
│   │   │   └── host.c
│   │   └── include/
│   │       └── common.h
│   ├── l2fwd-jobstats/
│   │   ├── Makefile
│   │   └── main.c
│   ├── l3fwd/
│   │   ├── Makefile
│   │   └── main.c
│   ├── l3fwd-acl/
│   │   ├── Makefile
│   │   └── main.c
│   ├── l3fwd-power/
│   │   ├── Makefile
│   │   └── main.c
│   ├── l3fwd-vf/
│   │   ├── Makefile
│   │   └── main.c
│   ├── link_status_interrupt/
│   │   ├── Makefile
│   │   └── main.c
│   ├── load_balancer/
│   │   ├── Makefile
│   │   ├── config.c
│   │   ├── init.c
│   │   ├── main.c
│   │   ├── main.h
│   │   └── runtime.c
│   ├── multi_process/
│   │   ├── Makefile
│   │   ├── client_server_mp/
│   │   │   ├── Makefile
│   │   │   ├── mp_client/
│   │   │   │   ├── Makefile
│   │   │   │   └── client.c
│   │   │   ├── mp_server/
│   │   │   │   ├── Makefile
│   │   │   │   ├── args.c
│   │   │   │   ├── args.h
│   │   │   │   ├── init.c
│   │   │   │   ├── init.h
│   │   │   │   └── main.c
│   │   │   └── shared/
│   │   │       └── common.h
│   │   ├── l2fwd_fork/
│   │   │   ├── Makefile
│   │   │   ├── flib.c
│   │   │   ├── flib.h
│   │   │   └── main.c
│   │   ├── simple_mp/
│   │   │   ├── Makefile
│   │   │   ├── main.c
│   │   │   ├── mp_commands.c
│   │   │   └── mp_commands.h
│   │   └── symmetric_mp/
│   │       ├── Makefile
│   │       └── main.c
│   ├── netmap_compat/
│   │   ├── Makefile
│   │   ├── bridge/
│   │   │   ├── Makefile
│   │   │   └── bridge.c
│   │   ├── lib/
│   │   │   ├── compat_netmap.c
│   │   │   └── compat_netmap.h
│   │   └── netmap/
│   │       ├── netmap.h
│   │       └── netmap_user.h
│   ├── packet_ordering/
│   │   ├── Makefile
│   │   └── main.c
│   ├── qos_meter/
│   │   ├── Makefile
│   │   ├── main.c
│   │   ├── main.h
│   │   ├── rte_policer.c
│   │   └── rte_policer.h
│   ├── qos_sched/
│   │   ├── Makefile
│   │   ├── app_thread.c
│   │   ├── args.c
│   │   ├── cfg_file.c
│   │   ├── cfg_file.h
│   │   ├── cmdline.c
│   │   ├── init.c
│   │   ├── main.c
│   │   ├── main.h
│   │   ├── profile.cfg
│   │   ├── profile_ov.cfg
│   │   └── stats.c
│   ├── quota_watermark/
│   │   ├── Makefile
│   │   ├── include/
│   │   │   └── conf.h
│   │   ├── qw/
│   │   │   ├── Makefile
│   │   │   ├── args.c
│   │   │   ├── args.h
│   │   │   ├── init.c
│   │   │   ├── init.h
│   │   │   ├── main.c
│   │   │   └── main.h
│   │   └── qwctl/
│   │       ├── Makefile
│   │       ├── commands.c
│   │       ├── commands.h
│   │       ├── qwctl.c
│   │       └── qwctl.h
│   ├── rxtx_callbacks/
│   │   ├── Makefile
│   │   └── main.c
│   ├── skeleton/
│   │   ├── Makefile
│   │   └── basicfwd.c
│   ├── tep_termination/
│   │   ├── Makefile
│   │   ├── main.c
│   │   ├── main.h
│   │   ├── vxlan.c
│   │   ├── vxlan.h
│   │   ├── vxlan_setup.c
│   │   └── vxlan_setup.h
│   ├── timer/
│   │   ├── Makefile
│   │   └── main.c
│   ├── vhost/
│   │   ├── Makefile
│   │   ├── main.c
│   │   └── main.h
│   ├── vhost_xen/
│   │   ├── Makefile
│   │   ├── main.c
│   │   ├── main.h
│   │   ├── vhost_monitor.c
│   │   ├── virtio-net.h
│   │   ├── xen_vhost.h
│   │   └── xenstore_parse.c
│   ├── vm_power_manager/
│   │   ├── Makefile
│   │   ├── channel_manager.c
│   │   ├── channel_manager.h
│   │   ├── channel_monitor.c
│   │   ├── channel_monitor.h
│   │   ├── guest_cli/
│   │   │   ├── Makefile
│   │   │   ├── main.c
│   │   │   ├── vm_power_cli_guest.c
│   │   │   └── vm_power_cli_guest.h
│   │   ├── main.c
│   │   ├── power_manager.c
│   │   ├── power_manager.h
│   │   ├── vm_power_cli.c
│   │   └── vm_power_cli.h
│   ├── vmdq/
│   │   ├── Makefile
│   │   └── main.c
│   └── vmdq_dcb/
│       ├── Makefile
│       └── main.c
├── lib/
│   ├── Makefile
│   ├── librte_acl/
│   │   ├── Makefile
│   │   ├── acl.h
│   │   ├── acl_bld.c
│   │   ├── acl_gen.c
│   │   ├── acl_run.h
│   │   ├── acl_run_avx2.c
│   │   ├── acl_run_avx2.h
│   │   ├── acl_run_scalar.c
│   │   ├── acl_run_sse.c
│   │   ├── acl_run_sse.h
│   │   ├── acl_vect.h
│   │   ├── rte_acl.c
│   │   ├── rte_acl.h
│   │   ├── rte_acl_osdep.h
│   │   ├── tb_mem.c
│   │   └── tb_mem.h
│   ├── librte_cfgfile/
│   │   ├── Makefile
│   │   ├── rte_cfgfile.c
│   │   └── rte_cfgfile.h
│   ├── librte_cmdline/
│   │   ├── Makefile
│   │   ├── cmdline.c
│   │   ├── cmdline.h
│   │   ├── cmdline_cirbuf.c
│   │   ├── cmdline_cirbuf.h
│   │   ├── cmdline_parse.c
│   │   ├── cmdline_parse.h
│   │   ├── cmdline_parse_etheraddr.c
│   │   ├── cmdline_parse_etheraddr.h
│   │   ├── cmdline_parse_ipaddr.c
│   │   ├── cmdline_parse_ipaddr.h
│   │   ├── cmdline_parse_num.c
│   │   ├── cmdline_parse_num.h
│   │   ├── cmdline_parse_portlist.c
│   │   ├── cmdline_parse_portlist.h
│   │   ├── cmdline_parse_string.c
│   │   ├── cmdline_parse_string.h
│   │   ├── cmdline_rdline.c
│   │   ├── cmdline_rdline.h
│   │   ├── cmdline_socket.c
│   │   ├── cmdline_socket.h
│   │   ├── cmdline_vt100.c
│   │   └── cmdline_vt100.h
│   ├── librte_compat/
│   │   ├── Makefile
│   │   └── rte_compat.h
│   ├── librte_distributor/
│   │   ├── Makefile
│   │   ├── rte_distributor.c
│   │   └── rte_distributor.h
│   ├── librte_eal/
│   │   ├── Makefile
│   │   ├── bsdapp/
│   │   │   ├── Makefile
│   │   │   ├── contigmem/
│   │   │   │   ├── BSDmakefile
│   │   │   │   ├── Makefile
│   │   │   │   └── contigmem.c
│   │   │   ├── eal/
│   │   │   │   ├── Makefile
│   │   │   │   ├── eal.c
│   │   │   │   ├── eal_alarm.c
│   │   │   │   ├── eal_debug.c
│   │   │   │   ├── eal_hugepage_info.c
│   │   │   │   ├── eal_interrupts.c
│   │   │   │   ├── eal_lcore.c
│   │   │   │   ├── eal_log.c
│   │   │   │   ├── eal_memory.c
│   │   │   │   ├── eal_pci.c
│   │   │   │   ├── eal_thread.c
│   │   │   │   ├── eal_timer.c
│   │   │   │   └── include/
│   │   │   │       └── exec-env/
│   │   │   │           ├── rte_dom0_common.h
│   │   │   │           └── rte_interrupts.h
│   │   │   └── nic_uio/
│   │   │       ├── BSDmakefile
│   │   │       ├── Makefile
│   │   │       └── nic_uio.c
│   │   ├── common/
│   │   │   ├── Makefile
│   │   │   ├── eal_common_cpuflags.c
│   │   │   ├── eal_common_dev.c
│   │   │   ├── eal_common_devargs.c
│   │   │   ├── eal_common_errno.c
│   │   │   ├── eal_common_hexdump.c
│   │   │   ├── eal_common_launch.c
│   │   │   ├── eal_common_lcore.c
│   │   │   ├── eal_common_log.c
│   │   │   ├── eal_common_memory.c
│   │   │   ├── eal_common_memzone.c
│   │   │   ├── eal_common_options.c
│   │   │   ├── eal_common_pci.c
│   │   │   ├── eal_common_pci_uio.c
│   │   │   ├── eal_common_string_fns.c
│   │   │   ├── eal_common_tailqs.c
│   │   │   ├── eal_common_thread.c
│   │   │   ├── eal_common_timer.c
│   │   │   ├── eal_filesystem.h
│   │   │   ├── eal_hugepages.h
│   │   │   ├── eal_internal_cfg.h
│   │   │   ├── eal_options.h
│   │   │   ├── eal_private.h
│   │   │   ├── eal_thread.h
│   │   │   ├── include/
│   │   │   │   ├── arch/
│   │   │   │   │   ├── ppc_64/
│   │   │   │   │   │   ├── rte_atomic.h
│   │   │   │   │   │   ├── rte_byteorder.h
│   │   │   │   │   │   ├── rte_cpuflags.h
│   │   │   │   │   │   ├── rte_cycles.h
│   │   │   │   │   │   ├── rte_memcpy.h
│   │   │   │   │   │   ├── rte_prefetch.h
│   │   │   │   │   │   ├── rte_rwlock.h
│   │   │   │   │   │   └── rte_spinlock.h
│   │   │   │   │   ├── tile/
│   │   │   │   │   │   ├── rte_atomic.h
│   │   │   │   │   │   ├── rte_byteorder.h
│   │   │   │   │   │   ├── rte_cpuflags.h
│   │   │   │   │   │   ├── rte_cycles.h
│   │   │   │   │   │   ├── rte_memcpy.h
│   │   │   │   │   │   ├── rte_prefetch.h
│   │   │   │   │   │   ├── rte_rwlock.h
│   │   │   │   │   │   └── rte_spinlock.h
│   │   │   │   │   └── x86/
│   │   │   │   │       ├── rte_atomic.h
│   │   │   │   │       ├── rte_atomic_32.h
│   │   │   │   │       ├── rte_atomic_64.h
│   │   │   │   │       ├── rte_byteorder.h
│   │   │   │   │       ├── rte_byteorder_32.h
│   │   │   │   │       ├── rte_byteorder_64.h
│   │   │   │   │       ├── rte_cpuflags.h
│   │   │   │   │       ├── rte_cycles.h
│   │   │   │   │       ├── rte_memcpy.h
│   │   │   │   │       ├── rte_prefetch.h
│   │   │   │   │       ├── rte_rtm.h
│   │   │   │   │       ├── rte_rwlock.h
│   │   │   │   │       ├── rte_spinlock.h
│   │   │   │   │       └── rte_vect.h
│   │   │   │   ├── generic/
│   │   │   │   │   ├── rte_atomic.h
│   │   │   │   │   ├── rte_byteorder.h
│   │   │   │   │   ├── rte_cpuflags.h
│   │   │   │   │   ├── rte_cycles.h
│   │   │   │   │   ├── rte_memcpy.h
│   │   │   │   │   ├── rte_prefetch.h
│   │   │   │   │   ├── rte_rwlock.h
│   │   │   │   │   └── rte_spinlock.h
│   │   │   │   ├── rte_alarm.h
│   │   │   │   ├── rte_branch_prediction.h
│   │   │   │   ├── rte_common.h
│   │   │   │   ├── rte_debug.h
│   │   │   │   ├── rte_dev.h
│   │   │   │   ├── rte_devargs.h
│   │   │   │   ├── rte_eal.h
│   │   │   │   ├── rte_eal_memconfig.h
│   │   │   │   ├── rte_errno.h
│   │   │   │   ├── rte_hexdump.h
│   │   │   │   ├── rte_interrupts.h
│   │   │   │   ├── rte_launch.h
│   │   │   │   ├── rte_lcore.h
│   │   │   │   ├── rte_log.h
│   │   │   │   ├── rte_malloc.h
│   │   │   │   ├── rte_malloc_heap.h
│   │   │   │   ├── rte_memory.h
│   │   │   │   ├── rte_memzone.h
│   │   │   │   ├── rte_pci.h
│   │   │   │   ├── rte_pci_dev_feature_defs.h
│   │   │   │   ├── rte_pci_dev_features.h
│   │   │   │   ├── rte_pci_dev_ids.h
│   │   │   │   ├── rte_per_lcore.h
│   │   │   │   ├── rte_random.h
│   │   │   │   ├── rte_string_fns.h
│   │   │   │   ├── rte_tailq.h
│   │   │   │   ├── rte_version.h
│   │   │   │   └── rte_warnings.h
│   │   │   ├── malloc_elem.c
│   │   │   ├── malloc_elem.h
│   │   │   ├── malloc_heap.c
│   │   │   ├── malloc_heap.h
│   │   │   └── rte_malloc.c
│   │   └── linuxapp/
│   │       ├── Makefile
│   │       ├── eal/
│   │       │   ├── Makefile
│   │       │   ├── eal.c
│   │       │   ├── eal_alarm.c
│   │       │   ├── eal_debug.c
│   │       │   ├── eal_hugepage_info.c
│   │       │   ├── eal_interrupts.c
│   │       │   ├── eal_ivshmem.c
│   │       │   ├── eal_lcore.c
│   │       │   ├── eal_log.c
│   │       │   ├── eal_memory.c
│   │       │   ├── eal_pci.c
│   │       │   ├── eal_pci_init.h
│   │       │   ├── eal_pci_uio.c
│   │       │   ├── eal_pci_vfio.c
│   │       │   ├── eal_pci_vfio_mp_sync.c
│   │       │   ├── eal_thread.c
│   │       │   ├── eal_timer.c
│   │       │   ├── eal_vfio.h
│   │       │   ├── eal_xen_memory.c
│   │       │   └── include/
│   │       │       └── exec-env/
│   │       │           ├── rte_dom0_common.h
│   │       │           ├── rte_interrupts.h
│   │       │           └── rte_kni_common.h
│   │       ├── igb_uio/
│   │       │   ├── Makefile
│   │       │   ├── compat.h
│   │       │   └── igb_uio.c
│   │       ├── kni/
│   │       │   ├── Makefile
│   │       │   ├── compat.h
│   │       │   ├── ethtool/
│   │       │   │   ├── README
│   │       │   │   ├── igb/
│   │       │   │   │   ├── COPYING
│   │       │   │   │   ├── e1000_82575.c
│   │       │   │   │   ├── e1000_82575.h
│   │       │   │   │   ├── e1000_api.c
│   │       │   │   │   ├── e1000_api.h
│   │       │   │   │   ├── e1000_defines.h
│   │       │   │   │   ├── e1000_hw.h
│   │       │   │   │   ├── e1000_i210.c
│   │       │   │   │   ├── e1000_i210.h
│   │       │   │   │   ├── e1000_mac.c
│   │       │   │   │   ├── e1000_mac.h
│   │       │   │   │   ├── e1000_manage.c
│   │       │   │   │   ├── e1000_manage.h
│   │       │   │   │   ├── e1000_mbx.c
│   │       │   │   │   ├── e1000_mbx.h
│   │       │   │   │   ├── e1000_nvm.c
│   │       │   │   │   ├── e1000_nvm.h
│   │       │   │   │   ├── e1000_osdep.h
│   │       │   │   │   ├── e1000_phy.c
│   │       │   │   │   ├── e1000_phy.h
│   │       │   │   │   ├── e1000_regs.h
│   │       │   │   │   ├── igb.h
│   │       │   │   │   ├── igb_debugfs.c
│   │       │   │   │   ├── igb_ethtool.c
│   │       │   │   │   ├── igb_hwmon.c
│   │       │   │   │   ├── igb_main.c
│   │       │   │   │   ├── igb_param.c
│   │       │   │   │   ├── igb_procfs.c
│   │       │   │   │   ├── igb_ptp.c
│   │       │   │   │   ├── igb_regtest.h
│   │       │   │   │   ├── igb_vmdq.c
│   │       │   │   │   ├── igb_vmdq.h
│   │       │   │   │   ├── kcompat.c
│   │       │   │   │   ├── kcompat.h
│   │       │   │   │   └── kcompat_ethtool.c
│   │       │   │   └── ixgbe/
│   │       │   │       ├── COPYING
│   │       │   │       ├── ixgbe.h
│   │       │   │       ├── ixgbe_82598.c
│   │       │   │       ├── ixgbe_82598.h
│   │       │   │       ├── ixgbe_82599.c
│   │       │   │       ├── ixgbe_82599.h
│   │       │   │       ├── ixgbe_api.c
│   │       │   │       ├── ixgbe_api.h
│   │       │   │       ├── ixgbe_common.c
│   │       │   │       ├── ixgbe_common.h
│   │       │   │       ├── ixgbe_dcb.h
│   │       │   │       ├── ixgbe_ethtool.c
│   │       │   │       ├── ixgbe_fcoe.h
│   │       │   │       ├── ixgbe_main.c
│   │       │   │       ├── ixgbe_mbx.h
│   │       │   │       ├── ixgbe_osdep.h
│   │       │   │       ├── ixgbe_phy.c
│   │       │   │       ├── ixgbe_phy.h
│   │       │   │       ├── ixgbe_sriov.h
│   │       │   │       ├── ixgbe_type.h
│   │       │   │       ├── ixgbe_x540.c
│   │       │   │       ├── ixgbe_x540.h
│   │       │   │       ├── kcompat.c
│   │       │   │       └── kcompat.h
│   │       │   ├── kni_dev.h
│   │       │   ├── kni_ethtool.c
│   │       │   ├── kni_fifo.h
│   │       │   ├── kni_misc.c
│   │       │   ├── kni_net.c
│   │       │   └── kni_vhost.c
│   │       └── xen_dom0/
│   │           ├── Makefile
│   │           ├── compat.h
│   │           ├── dom0_mm_dev.h
│   │           └── dom0_mm_misc.c
│   ├── librte_ether/
│   │   ├── Makefile
│   │   ├── rte_dev_info.h
│   │   ├── rte_eth_ctrl.h
│   │   ├── rte_ethdev.c
│   │   ├── rte_ethdev.h
│   │   └── rte_ether.h
│   ├── librte_hash/
│   │   ├── Makefile
│   │   ├── rte_cmp_x86.h
│   │   ├── rte_cuckoo_hash.c
│   │   ├── rte_fbk_hash.c
│   │   ├── rte_fbk_hash.h
│   │   ├── rte_hash.h
│   │   ├── rte_hash_crc.h
│   │   ├── rte_jhash.h
│   │   └── rte_thash.h
│   ├── librte_ip_frag/
│   │   ├── Makefile
│   │   ├── ip_frag_common.h
│   │   ├── ip_frag_internal.c
│   │   ├── rte_ip_frag.h
│   │   ├── rte_ip_frag_common.c
│   │   ├── rte_ipv4_fragmentation.c
│   │   ├── rte_ipv4_reassembly.c
│   │   ├── rte_ipv6_fragmentation.c
│   │   └── rte_ipv6_reassembly.c
│   ├── librte_ivshmem/
│   │   ├── Makefile
│   │   ├── rte_ivshmem.c
│   │   └── rte_ivshmem.h
│   ├── librte_jobstats/
│   │   ├── Makefile
│   │   ├── rte_jobstats.c
│   │   └── rte_jobstats.h
│   ├── librte_kni/
│   │   ├── Makefile
│   │   ├── rte_kni.c
│   │   ├── rte_kni.h
│   │   └── rte_kni_fifo.h
│   ├── librte_kvargs/
│   │   ├── Makefile
│   │   ├── rte_kvargs.c
│   │   └── rte_kvargs.h
│   ├── librte_lpm/
│   │   ├── Makefile
│   │   ├── rte_lpm.c
│   │   ├── rte_lpm.h
│   │   ├── rte_lpm6.c
│   │   └── rte_lpm6.h
│   ├── librte_malloc/
│   │   ├── Makefile
│   │   └── rte_malloc_empty.c
│   ├── librte_mbuf/
│   │   ├── Makefile
│   │   ├── rte_mbuf.c
│   │   └── rte_mbuf.h
│   ├── librte_mempool/
│   │   ├── Makefile
│   │   ├── rte_dom0_mempool.c
│   │   ├── rte_mempool.c
│   │   └── rte_mempool.h
│   ├── librte_meter/
│   │   ├── Makefile
│   │   ├── rte_meter.c
│   │   └── rte_meter.h
│   ├── librte_net/
│   │   ├── Makefile
│   │   ├── rte_arp.h
│   │   ├── rte_icmp.h
│   │   ├── rte_ip.h
│   │   ├── rte_sctp.h
│   │   ├── rte_tcp.h
│   │   └── rte_udp.h
│   ├── librte_pipeline/
│   │   ├── Makefile
│   │   ├── rte_pipeline.c
│   │   └── rte_pipeline.h
│   ├── librte_port/
│   │   ├── Makefile
│   │   ├── rte_port.h
│   │   ├── rte_port_ethdev.c
│   │   ├── rte_port_ethdev.h
│   │   ├── rte_port_frag.c
│   │   ├── rte_port_frag.h
│   │   ├── rte_port_ras.c
│   │   ├── rte_port_ras.h
│   │   ├── rte_port_ring.c
│   │   ├── rte_port_ring.h
│   │   ├── rte_port_sched.c
│   │   ├── rte_port_sched.h
│   │   ├── rte_port_source_sink.c
│   │   └── rte_port_source_sink.h
│   ├── librte_power/
│   │   ├── Makefile
│   │   ├── channel_commands.h
│   │   ├── guest_channel.c
│   │   ├── guest_channel.h
│   │   ├── rte_power.c
│   │   ├── rte_power.h
│   │   ├── rte_power_acpi_cpufreq.c
│   │   ├── rte_power_acpi_cpufreq.h
│   │   ├── rte_power_common.h
│   │   ├── rte_power_kvm_vm.c
│   │   └── rte_power_kvm_vm.h
│   ├── librte_reorder/
│   │   ├── Makefile
│   │   ├── rte_reorder.c
│   │   └── rte_reorder.h
│   ├── librte_ring/
│   │   ├── Makefile
│   │   ├── rte_ring.c
│   │   └── rte_ring.h
│   ├── librte_sched/
│   │   ├── Makefile
│   │   ├── rte_approx.c
│   │   ├── rte_approx.h
│   │   ├── rte_bitmap.h
│   │   ├── rte_red.c
│   │   ├── rte_red.h
│   │   ├── rte_sched.c
│   │   ├── rte_sched.h
│   │   └── rte_sched_common.h
│   ├── librte_table/
│   │   ├── Makefile
│   │   ├── rte_lru.h
│   │   ├── rte_table.h
│   │   ├── rte_table_acl.c
│   │   ├── rte_table_acl.h
│   │   ├── rte_table_array.c
│   │   ├── rte_table_array.h
│   │   ├── rte_table_hash.h
│   │   ├── rte_table_hash_ext.c
│   │   ├── rte_table_hash_key16.c
│   │   ├── rte_table_hash_key32.c
│   │   ├── rte_table_hash_key8.c
│   │   ├── rte_table_hash_lru.c
│   │   ├── rte_table_lpm.c
│   │   ├── rte_table_lpm.h
│   │   ├── rte_table_lpm_ipv6.c
│   │   ├── rte_table_lpm_ipv6.h
│   │   ├── rte_table_stub.c
│   │   └── rte_table_stub.h
│   ├── librte_timer/
│   │   ├── Makefile
│   │   ├── rte_timer.c
│   │   └── rte_timer.h
│   └── librte_vhost/
│       ├── Makefile
│       ├── eventfd_link/
│       │   ├── Makefile
│       │   ├── eventfd_link.c
│       │   └── eventfd_link.h
│       ├── libvirt/
│       │   └── qemu-wrap.py
│       ├── rte_virtio_net.h
│       ├── vhost-net.h
│       ├── vhost_cuse/
│       │   ├── eventfd_copy.c
│       │   ├── eventfd_copy.h
│       │   ├── vhost-net-cdev.c
│       │   ├── virtio-net-cdev.c
│       │   └── virtio-net-cdev.h
│       ├── vhost_rxtx.c
│       ├── vhost_user/
│       │   ├── fd_man.c
│       │   ├── fd_man.h
│       │   ├── vhost-net-user.c
│       │   ├── vhost-net-user.h
│       │   ├── virtio-net-user.c
│       │   └── virtio-net-user.h
│       ├── virtio-net.c
│       └── virtio-net.h
├── mk/
│   ├── arch/
│   │   ├── i686/
│   │   │   └── rte.vars.mk
│   │   ├── ppc_64/
│   │   │   └── rte.vars.mk
│   │   ├── tile/
│   │   │   └── rte.vars.mk
│   │   ├── x86_64/
│   │   │   └── rte.vars.mk
│   │   └── x86_x32/
│   │       └── rte.vars.mk
│   ├── exec-env/
│   │   ├── bsdapp/
│   │   │   ├── rte.app.mk
│   │   │   └── rte.vars.mk
│   │   └── linuxapp/
│   │       ├── rte.app.mk
│   │       └── rte.vars.mk
│   ├── internal/
│   │   ├── rte.build-post.mk
│   │   ├── rte.build-pre.mk
│   │   ├── rte.clean-post.mk
│   │   ├── rte.clean-pre.mk
│   │   ├── rte.compile-post.mk
│   │   ├── rte.compile-pre.mk
│   │   ├── rte.depdirs-post.mk
│   │   ├── rte.depdirs-pre.mk
│   │   ├── rte.extvars.mk
│   │   ├── rte.install-post.mk
│   │   └── rte.install-pre.mk
│   ├── machine/
│   │   ├── atm/
│   │   │   └── rte.vars.mk
│   │   ├── default/
│   │   │   └── rte.vars.mk
│   │   ├── hsw/
│   │   │   └── rte.vars.mk
│   │   ├── ivb/
│   │   │   └── rte.vars.mk
│   │   ├── native/
│   │   │   └── rte.vars.mk
│   │   ├── nhm/
│   │   │   └── rte.vars.mk
│   │   ├── power8/
│   │   │   └── rte.vars.mk
│   │   ├── snb/
│   │   │   └── rte.vars.mk
│   │   ├── tilegx/
│   │   │   └── rte.vars.mk
│   │   └── wsm/
│   │       └── rte.vars.mk
│   ├── rte.app.mk
│   ├── rte.bsdmodule.mk
│   ├── rte.cpuflags.mk
│   ├── rte.extapp.mk
│   ├── rte.extlib.mk
│   ├── rte.extobj.mk
│   ├── rte.extshared.mk
│   ├── rte.extsubdir.mk
│   ├── rte.gnuconfigure.mk
│   ├── rte.hostapp.mk
│   ├── rte.hostlib.mk
│   ├── rte.install.mk
│   ├── rte.lib.mk
│   ├── rte.module.mk
│   ├── rte.obj.mk
│   ├── rte.sdkbuild.mk
│   ├── rte.sdkconfig.mk
│   ├── rte.sdkdepdirs.mk
│   ├── rte.sdkdoc.mk
│   ├── rte.sdkexamples.mk
│   ├── rte.sdkgcov.mk
│   ├── rte.sdkinstall.mk
│   ├── rte.sdkroot.mk
│   ├── rte.sdktest.mk
│   ├── rte.sdktestall.mk
│   ├── rte.shared.mk
│   ├── rte.sharelib.mk
│   ├── rte.subdir.mk
│   ├── rte.vars.mk
│   ├── target/
│   │   └── generic/
│   │       ├── rte.app.mk
│   │       └── rte.vars.mk
│   └── toolchain/
│       ├── clang/
│       │   ├── rte.toolchain-compat.mk
│       │   └── rte.vars.mk
│       ├── gcc/
│       │   ├── rte.toolchain-compat.mk
│       │   └── rte.vars.mk
│       └── icc/
│           ├── rte.toolchain-compat.mk
│           └── rte.vars.mk
├── pkg/
│   └── dpdk.spec
├── scripts/
│   ├── auto-config-h.sh
│   ├── check-maintainers.sh
│   ├── cocci/
│   │   └── mtod-offset.cocci
│   ├── cocci.sh
│   ├── depdirs-rule.sh
│   ├── gen-build-mk.sh
│   ├── gen-config-h.sh
│   ├── relpath.sh
│   ├── test-null.sh
│   └── validate-abi.sh
└── tools/
    ├── cpu_layout.py
    ├── dpdk_nic_bind.py
    └── setup.sh

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================


================================================
FILE: GNUmakefile
================================================
#   BSD LICENSE
#
#   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
#   All rights reserved.
#
#   Redistribution and use in source and binary forms, with or without
#   modification, are permitted provided that the following conditions
#   are met:
#
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in
#       the documentation and/or other materials provided with the
#       distribution.
#     * Neither the name of Intel Corporation nor the names of its
#       contributors may be used to endorse or promote products derived
#       from this software without specific prior written permission.
#
#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#
# Head Makefile for compiling rte SDK
#

RTE_SDK := $(CURDIR)
export RTE_SDK

#
# directory list
#

ROOTDIRS-y := lib drivers app

include $(RTE_SDK)/mk/rte.sdkroot.mk


================================================
FILE: LICENSE.GPL
================================================
		    GNU GENERAL PUBLIC LICENSE
		       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

			    Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

		    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

			    NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

		     END OF TERMS AND CONDITIONS

	    How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) year name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  <signature of Ty Coon>, 1 April 1989
  Ty Coon, President of Vice

This General Public License does not permit incorporating your program into
proprietary programs.  If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library.  If this is what you want to do, use the GNU Lesser General
Public License instead of this License.


================================================
FILE: LICENSE.LGPL
================================================
                  GNU LESSER GENERAL PUBLIC LICENSE
                       Version 2.1, February 1999

 Copyright (C) 1991, 1999 Free Software Foundation, Inc.
 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

[This is the first released version of the Lesser GPL.  It also counts
 as the successor of the GNU Library Public License, version 2, hence
 the version number 2.1.]

                            Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.

  This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it.  You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.

  When we speak of free software, we are referring to freedom of use,
not price.  Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.

  To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights.  These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.

  For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you.  You must make sure that they, too, receive or can get the source
code.  If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it.  And you must show them these terms so they know their rights.

  We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.

  To protect each distributor, we want to make it very clear that
there is no warranty for the free library.  Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.

  Finally, software patents pose a constant threat to the existence of
any free program.  We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder.  Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.

  Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License.  This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License.  We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.

  When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library.  The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom.  The Lesser General
Public License permits more lax criteria for linking other code with
the library.

  We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License.  It also provides other free software developers Less
of an advantage over competing non-free programs.  These disadvantages
are the reason we use the ordinary General Public License for many
libraries.  However, the Lesser license provides advantages in certain
special circumstances.

  For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard.  To achieve this, non-free programs must be
allowed to use the library.  A more frequent case is that a free
library does the same job as widely used non-free libraries.  In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.

  In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software.  For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.

  Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.

  The precise terms and conditions for copying, distribution and
modification follow.  Pay close attention to the difference between a
"work based on the library" and a "work that uses the library".  The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.

                  GNU LESSER GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".

  A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.

  The "Library", below, refers to any such software library or work
which has been distributed under these terms.  A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language.  (Hereinafter, translation is
included without limitation in the term "modification".)

  "Source code" for a work means the preferred form of the work for
making modifications to it.  For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.

  Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it).  Whether that is true depends on what the Library does
and what the program that uses the Library does.

  1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.

  You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.

  2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) The modified work must itself be a software library.

    b) You must cause the files modified to carry prominent notices
    stating that you changed the files and the date of any change.

    c) You must cause the whole of the work to be licensed at no
    charge to all third parties under the terms of this License.

    d) If a facility in the modified Library refers to a function or a
    table of data to be supplied by an application program that uses
    the facility, other than as an argument passed when the facility
    is invoked, then you must make a good faith effort to ensure that,
    in the event an application does not supply such function or
    table, the facility still operates, and performs whatever part of
    its purpose remains meaningful.

    (For example, a function in a library to compute square roots has
    a purpose that is entirely well-defined independent of the
    application.  Therefore, Subsection 2d requires that any
    application-supplied function or table used by this function must
    be optional: if the application does not supply it, the square
    root function must still compute square roots.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.

In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library.  To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License.  (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.)  Do not make any other change in
these notices.

  Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.

  This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.

  4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.

  If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.

  5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library".  Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.

  However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library".  The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.

  When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library.  The
threshold for this to be true is not precisely defined by law.

  If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work.  (Executables containing this object code plus portions of the
Library will still fall under Section 6.)

  Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.

  6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.

  You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License.  You must supply a copy of this License.  If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License.  Also, you must do one
of these things:

    a) Accompany the work with the complete corresponding
    machine-readable source code for the Library including whatever
    changes were used in the work (which must be distributed under
    Sections 1 and 2 above); and, if the work is an executable linked
    with the Library, with the complete machine-readable "work that
    uses the Library", as object code and/or source code, so that the
    user can modify the Library and then relink to produce a modified
    executable containing the modified Library.  (It is understood
    that the user who changes the contents of definitions files in the
    Library will not necessarily be able to recompile the application
    to use the modified definitions.)

    b) Use a suitable shared library mechanism for linking with the
    Library.  A suitable mechanism is one that (1) uses at run time a
    copy of the library already present on the user's computer system,
    rather than copying library functions into the executable, and (2)
    will operate properly with a modified version of the library, if
    the user installs one, as long as the modified version is
    interface-compatible with the version that the work was made with.

    c) Accompany the work with a written offer, valid for at
    least three years, to give the same user the materials
    specified in Subsection 6a, above, for a charge no more
    than the cost of performing this distribution.

    d) If distribution of the work is made by offering access to copy
    from a designated place, offer equivalent access to copy the above
    specified materials from the same place.

    e) Verify that the user has already received a copy of these
    materials or that you have already sent this user a copy.

  For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it.  However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.

  It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system.  Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.

  7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:

    a) Accompany the combined library with a copy of the same work
    based on the Library, uncombined with any other library
    facilities.  This must be distributed under the terms of the
    Sections above.

    b) Give prominent notice with the combined library of the fact
    that part of it is a work based on the Library, and explaining
    where to find the accompanying uncombined form of the same work.

  8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License.  Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License.  However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.

  9. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Library or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.

  10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.

  11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all.  For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.

If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded.  In such case, this License incorporates the limitation as if
written in the body of this License.

  13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number.  If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation.  If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.

  14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission.  For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this.  Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.

                            NO WARRANTY

  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.

                     END OF TERMS AND CONDITIONS

           How to Apply These Terms to Your New Libraries

  If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change.  You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).

  To apply these terms, attach the following notices to the library.  It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.

    <one line to give the library's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

Also add information on how to contact you by electronic and paper mail.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the
  library `Frob' (a library for tweaking knobs) written by James Random Hacker.

  <signature of Ty Coon>, 1 April 1990
  Ty Coon, President of Vice

That's all there is to it!


================================================
FILE: MAINTAINERS
================================================
DPDK Maintainers
================

The intention of this file is to provide a set of names that we can rely on
for helping in patch reviews and questions.
These names are additional recipients for emails sent to dev@dpdk.org.
Please avoid private emails.

Descriptions of section entries:

	M: Maintainer's Full Name <address@domain>
	T: Git tree location.
	F: Files and directories with wildcard patterns.
	   A trailing slash includes all files and subdirectory files.
	   A wildcard includes all files but not subdirectories.
	   One pattern per line. Multiple F: lines acceptable.
	X: Files and directories exclusion, same rules as F:
	K: Keyword regex pattern to match content.
	   One regex pattern per line. Multiple K: lines acceptable.


General Project Administration
------------------------------
M: Thomas Monjalon <thomas.monjalon@6wind.com>
T: git://dpdk.org/dpdk
F: MAINTAINERS
F: scripts/check-maintainers.sh


Security Issues
---------------
M: maintainers@dpdk.org


Documentation (with overlaps)
-------------
M: Siobhan Butler <siobhan.a.butler@intel.com>
M: John McNamara <john.mcnamara@intel.com>
F: doc/


Build System
------------
M: Olivier Matz <olivier.matz@6wind.com>
F: GNUmakefile
F: Makefile
F: config/
F: mk/
F: pkg/
F: scripts/auto-config-h.sh
F: scripts/depdirs-rule.sh
F: scripts/gen-build-mk.sh
F: scripts/gen-config-h.sh
F: scripts/relpath.sh
F: doc/build-sdk-quick.txt
F: doc/guides/prog_guide/build_app.rst
F: doc/guides/prog_guide/dev_kit_*
F: doc/guides/prog_guide/ext_app_lib_make_help.rst

ABI versioning
M: Neil Horman <nhorman@tuxdriver.com>
F: lib/librte_compat/
F: doc/guides/rel_notes/deprecation.rst
F: scripts/validate-abi.sh


Environment Abstraction Layer
-----------------------------

EAL API and common code
M: David Marchand <david.marchand@6wind.com>
F: lib/librte_eal/common/*
F: lib/librte_eal/common/include/*
F: lib/librte_eal/common/include/generic/
F: doc/guides/prog_guide/env_abstraction_layer.rst
F: app/test/test_alarm.c
F: app/test/test_atomic.c
F: app/test/test_byteorder.c
F: app/test/test_common.c
F: app/test/test_cpuflags.c
F: app/test/test_cycles.c
F: app/test/test_debug.c
F: app/test/test_devargs.c
F: app/test/test_eal*
F: app/test/test_errno.c
F: app/test/test_interrupts.c
F: app/test/test_logs.c
F: app/test/test_memcpy*
F: app/test/test_pci.c
F: app/test/test_per_lcore.c
F: app/test/test_prefetch.c
F: app/test/test_rwlock.c
F: app/test/test_spinlock.c
F: app/test/test_string_fns.c
F: app/test/test_tailq.c
F: app/test/test_version.c

Memory Allocation
M: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
F: lib/librte_eal/common/include/rte_mem*
F: lib/librte_eal/common/include/rte_malloc.h
F: lib/librte_eal/common/*malloc*
F: lib/librte_eal/common/eal_common_mem*
F: lib/librte_eal/common/eal_hugepages.h
F: lib/librte_malloc/
F: doc/guides/prog_guide/env_abstraction_layer.rst
F: app/test/test_func_reentrancy.c
F: app/test/test_malloc.c
F: app/test/test_memory.c
F: app/test/test_memzone.c

Secondary process
K: RTE_PROC_
F: doc/guides/prog_guide/multi_proc_support.rst
F: app/test/test_mp_secondary.c
F: examples/multi_process/
F: doc/guides/sample_app_ug/multi_process.rst

EZchip TILE-Gx
M: Zhigang Lu <zlu@ezchip.com>
F: lib/librte_eal/common/include/arch/tile/
F: drivers/net/mpipe/

IBM POWER
M: Chao Zhu <chaozhu@linux.vnet.ibm.com>
F: lib/librte_eal/common/include/arch/ppc_64/

Intel x86
M: Bruce Richardson <bruce.richardson@intel.com>
M: Konstantin Ananyev <konstantin.ananyev@intel.com>
F: lib/librte_eal/common/include/arch/x86/

Linux EAL (with overlaps)
M: David Marchand <david.marchand@6wind.com>
F: lib/librte_eal/linuxapp/Makefile
F: lib/librte_eal/linuxapp/eal/
F: doc/guides/linux_gsg/

Linux UIO
F: lib/librte_eal/linuxapp/igb_uio/
F: lib/librte_eal/linuxapp/eal/*uio*

Linux VFIO
M: Anatoly Burakov <anatoly.burakov@intel.com>
F: lib/librte_eal/linuxapp/eal/*vfio*

Linux Xen
F: lib/librte_eal/linuxapp/xen_dom0/
F: lib/librte_eal/linuxapp/eal/*xen*
F: lib/librte_eal/linuxapp/eal/include/exec-env/rte_dom0_common.h
F: lib/librte_mempool/rte_dom0_mempool.c
F: drivers/net/xenvirt/
F: doc/guides/xen/
F: app/test-pmd/mempool_*
F: examples/vhost_xen/

FreeBSD EAL (with overlaps)
M: Bruce Richardson <bruce.richardson@intel.com>
F: lib/librte_eal/bsdapp/Makefile
F: lib/librte_eal/bsdapp/eal/
F: doc/guides/freebsd_gsg/

FreeBSD contigmem
M: Bruce Richardson <bruce.richardson@intel.com>
F: lib/librte_eal/bsdapp/contigmem/

FreeBSD UIO
M: Bruce Richardson <bruce.richardson@intel.com>
F: lib/librte_eal/bsdapp/nic_uio/


Core Libraries
--------------

Memory pool
M: Olivier Matz <olivier.matz@6wind.com>
F: lib/librte_mempool/
F: doc/guides/prog_guide/mempool_lib.rst
F: app/test/test_mempool*
F: app/test/test_func_reentrancy.c

Ring queue
M: Olivier Matz <olivier.matz@6wind.com>
F: lib/librte_ring/
F: doc/guides/prog_guide/ring_lib.rst
F: app/test/test_ring*
F: app/test/test_func_reentrancy.c

Packet buffer
M: Olivier Matz <olivier.matz@6wind.com>
F: lib/librte_mbuf/
F: doc/guides/prog_guide/mbuf_lib.rst
F: app/test/test_mbuf.c

Ethernet API
M: Thomas Monjalon <thomas.monjalon@6wind.com>
F: lib/librte_ether/
F: scripts/test-null.sh


Drivers
-------

Link bonding
M: Declan Doherty <declan.doherty@intel.com>
F: drivers/net/bonding/
F: doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst
F: app/test/test_link_bonding*
F: examples/bond/

Linux KNI
M: Helin Zhang <helin.zhang@intel.com>
F: lib/librte_eal/linuxapp/kni/
F: lib/librte_kni/
F: doc/guides/prog_guide/kernel_nic_interface.rst
F: app/test/test_kni.c
F: examples/kni/
F: doc/guides/sample_app_ug/kernel_nic_interface.rst

Linux AF_PACKET
M: John W. Linville <linville@tuxdriver.com>
F: drivers/net/af_packet/

Chelsio cxgbe
M: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
F: drivers/net/cxgbe/
F: doc/guides/nics/cxgbe.rst

Cisco enic
F: drivers/net/enic/

Intel e1000
M: Wenzhuo Lu <wenzhuo.lu@intel.com>
F: drivers/net/e1000/
F: doc/guides/nics/e1000em.rst
F: doc/guides/nics/intel_vf.rst

Intel ixgbe
M: Helin Zhang <helin.zhang@intel.com>
M: Konstantin Ananyev <konstantin.ananyev@intel.com>
F: drivers/net/ixgbe/
F: doc/guides/nics/ixgbe.rst
F: doc/guides/nics/intel_vf.rst

Intel i40e
M: Helin Zhang <helin.zhang@intel.com>
F: drivers/net/i40e/
F: doc/guides/nics/intel_vf.rst

Intel fm10k
M: Jing Chen <jing.d.chen@intel.com>
F: drivers/net/fm10k/

Mellanox mlx4
M: Adrien Mazarguil <adrien.mazarguil@6wind.com>
F: drivers/net/mlx4/
F: doc/guides/nics/mlx4.rst

RedHat virtio
M: Huawei Xie <huawei.xie@intel.com>
M: Changchun Ouyang <changchun.ouyang@intel.com>
F: drivers/net/virtio/
F: doc/guides/nics/virtio.rst
F: lib/librte_vhost/
F: doc/guides/prog_guide/vhost_lib.rst
F: examples/vhost/
F: doc/guides/sample_app_ug/vhost.rst

VMware vmxnet3
M: Yong Wang <yongwang@vmware.com>
F: drivers/net/vmxnet3/
F: doc/guides/nics/vmxnet3.rst

PCAP PMD
M: Nicolás Pernas Maradei <nicolas.pernas.maradei@emutex.com>
M: John McNamara <john.mcnamara@intel.com>
F: drivers/net/pcap/
F: doc/guides/nics/pcap_ring.rst

QLogic/Broadcom bnx2x
F: drivers/net/bnx2x/

Ring PMD
M: Bruce Richardson <bruce.richardson@intel.com>
F: drivers/net/ring/
F: doc/guides/nics/pcap_ring.rst
F: app/test/test_pmd_ring.c

Null PMD
M: Tetsuya Mukawa <mukawa@igel.co.jp>
F: drivers/net/null/


Packet processing
-----------------

Network headers
F: lib/librte_net/

IP fragmentation & reassembly
M: Konstantin Ananyev <konstantin.ananyev@intel.com>
F: lib/librte_ip_frag/
F: doc/guides/prog_guide/ip_fragment_reassembly_lib.rst
F: examples/ip_fragmentation/
F: doc/guides/sample_app_ug/ip_frag.rst
F: examples/ip_reassembly/
F: doc/guides/sample_app_ug/ip_reassembly.rst

Distributor
M: Bruce Richardson <bruce.richardson@intel.com>
F: lib/librte_distributor/
F: doc/guides/prog_guide/packet_distrib_lib.rst
F: app/test/test_distributor*
F: examples/distributor/
F: doc/guides/sample_app_ug/dist_app.rst

Reorder
M: Sergio Gonzalez Monroy <sergio.gonzalez.monroy@intel.com>
F: lib/librte_reorder/
F: doc/guides/prog_guide/reorder_lib.rst
F: app/test/test_reorder*
F: examples/packet_ordering/
F: doc/guides/sample_app_ug/packet_ordering.rst

Hierarchical scheduler
M: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
F: lib/librte_sched/
F: doc/guides/prog_guide/qos_framework.rst
F: app/test/test_red.c
F: app/test/test_sched.c
F: examples/qos_sched/
F: doc/guides/sample_app_ug/qos_scheduler.rst


Packet Framework
----------------
M: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
F: lib/librte_pipeline/
F: lib/librte_port/
F: lib/librte_table/
F: doc/guides/prog_guide/packet_framework.rst
F: app/test/test_table*
F: app/test-pipeline/
F: doc/guides/sample_app_ug/test_pipeline.rst
F: examples/ip_pipeline/
F: doc/guides/sample_app_ug/ip_pipeline.rst


Algorithms
----------

ACL
M: Konstantin Ananyev <konstantin.ananyev@intel.com>
F: lib/librte_acl/
F: doc/guides/prog_guide/packet_classif_access_ctrl.rst
F: app/test-acl/
F: app/test/test_acl.*
F: examples/l3fwd-acl/
F: doc/guides/sample_app_ug/l3_forward_access_ctrl.rst

Hashes
M: Bruce Richardson <bruce.richardson@intel.com>
M: Pablo de Lara <pablo.de.lara.guarch@intel.com>
F: lib/librte_hash/
F: doc/guides/prog_guide/hash_lib.rst
F: app/test/test_*hash*
F: app/test/test_func_reentrancy.c

LPM
M: Bruce Richardson <bruce.richardson@intel.com>
F: lib/librte_lpm/
F: doc/guides/prog_guide/lpm*
F: app/test/test_lpm*
F: app/test/test_func_reentrancy.c

Traffic metering
M: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
F: lib/librte_meter/
F: doc/guides/sample_app_ug/qos_scheduler.rst
F: app/test/test_meter.c
F: examples/qos_meter/
F: doc/guides/sample_app_ug/qos_metering.rst


Other libraries
---------------

Configuration file
M: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
F: lib/librte_cfgfile/

Interactive command line
M: Olivier Matz <olivier.matz@6wind.com>
F: lib/librte_cmdline/
F: app/cmdline_test/
F: app/test/test_cmdline*
F: examples/cmdline/
F: doc/guides/sample_app_ug/cmd_line.rst

Qemu IVSHMEM
M: Anatoly Burakov <anatoly.burakov@intel.com>
F: lib/librte_ivshmem/
F: lib/librte_eal/linuxapp/eal/eal_ivshmem.c
F: doc/guides/prog_guide/ivshmem_lib.rst
F: app/test/test_ivshmem.c
F: examples/l2fwd-ivshmem/

Key/Value parsing
M: Olivier Matz <olivier.matz@6wind.com>
F: lib/librte_kvargs/
F: app/test/test_kvargs.c

Power management
F: lib/librte_power/
F: doc/guides/prog_guide/power_man.rst
F: app/test/test_power*
F: examples/l3fwd-power/
F: doc/guides/sample_app_ug/l3_forward_power_man.rst
F: examples/vm_power_manager/
F: doc/guides/sample_app_ug/vm_power_management.rst

Timers
M: Robert Sanford <rsanford@akamai.com>
F: lib/librte_timer/
F: doc/guides/prog_guide/timer_lib.rst
F: app/test/test_timer*
F: examples/timer/
F: doc/guides/sample_app_ug/timer.rst

Job statistics
M: Pawel Wodkowski <pawelx.wodkowski@intel.com>
F: lib/librte_jobstats/
F: examples/l2fwd-jobstats/
F: doc/guides/sample_app_ug/l2_forward_job_stats.rst


Test Applications
-----------------

Unit tests framework
F: app/test/autotest*
F: app/test/commands.c
F: app/test/packet_burst_generator.c
F: app/test/packet_burst_generator.h
F: app/test/process.h
F: app/test/test.c
F: app/test/test.h
F: app/test/test_pmd_perf.c
F: app/test/virtual_pmd.c
F: app/test/virtual_pmd.h

Driver testing tool
M: Pablo de Lara <pablo.de.lara.guarch@intel.com>
F: app/test-pmd/
F: doc/guides/testpmd_app_ug/

Dump tool
M: Maryam Tahhan <maryam.tahhan@intel.com>
M: John McNamara <john.mcnamara@intel.com>
F: app/proc_info/


Other Example Applications
--------------------------

M: Bruce Richardson <bruce.richardson@intel.com>
F: examples/dpdk_qat/
F: doc/guides/sample_app_ug/intel_quickassist.rst

F: examples/exception_path/
F: doc/guides/sample_app_ug/exception_path.rst

M: Bruce Richardson <bruce.richardson@intel.com>
F: examples/helloworld/
F: doc/guides/sample_app_ug/hello_world.rst

F: examples/ipv4_multicast/
F: doc/guides/sample_app_ug/ipv4_multicast.rst

M: Bruce Richardson <bruce.richardson@intel.com>
F: examples/l2fwd/
F: doc/guides/sample_app_ug/l2_forward_real_virtual.rst

F: examples/l3fwd/
F: doc/guides/sample_app_ug/l3_forward.rst

F: examples/l3fwd-vf/
F: doc/guides/sample_app_ug/l3_forward_virtual.rst

F: examples/link_status_interrupt/
F: doc/guides/sample_app_ug/link_status_intr.rst

F: examples/load_balancer/
F: doc/guides/sample_app_ug/load_balancer.rst

F: examples/netmap_compat/
F: doc/guides/sample_app_ug/netmap_compatibility.rst

F: examples/quota_watermark/
F: doc/guides/sample_app_ug/quota_watermark.rst

M: Bruce Richardson <bruce.richardson@intel.com>
M: John McNamara <john.mcnamara@intel.com>
F: examples/rxtx_callbacks/
F: doc/guides/sample_app_ug/rxtx_callbacks.rst

M: Bruce Richardson <bruce.richardson@intel.com>
M: John McNamara <john.mcnamara@intel.com>
F: examples/skeleton/
F: doc/guides/sample_app_ug/skeleton.rst

M: Jijiang Liu <jijiang.liu@intel.com>
F: examples/tep_termination/

F: examples/vmdq/
F: examples/vmdq_dcb/
F: doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst


================================================
FILE: Makefile
================================================
#   BSD LICENSE
#
#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
#   All rights reserved.
#
#   Redistribution and use in source and binary forms, with or without
#   modification, are permitted provided that the following conditions
#   are met:
#
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in
#       the documentation and/or other materials provided with the
#       distribution.
#     * Neither the name of Intel Corporation nor the names of its
#       contributors may be used to endorse or promote products derived
#       from this software without specific prior written permission.
#
#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

.error Error please compile using GNU Make (gmake)



================================================
FILE: app/Makefile
================================================
#   BSD LICENSE
#
#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
#   All rights reserved.
#
#   Redistribution and use in source and binary forms, with or without
#   modification, are permitted provided that the following conditions
#   are met:
#
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in
#       the documentation and/or other materials provided with the
#       distribution.
#     * Neither the name of Intel Corporation nor the names of its
#       contributors may be used to endorse or promote products derived
#       from this software without specific prior written permission.
#
#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

include $(RTE_SDK)/mk/rte.vars.mk

DIRS-$(CONFIG_RTE_APP_TEST) += test
DIRS-$(CONFIG_RTE_LIBRTE_ACL) += test-acl
DIRS-$(CONFIG_RTE_LIBRTE_PIPELINE) += test-pipeline
DIRS-$(CONFIG_RTE_TEST_PMD) += test-pmd
DIRS-$(CONFIG_RTE_LIBRTE_CMDLINE) += cmdline_test
DIRS-$(CONFIG_RTE_LIBRTE_EAL_LINUXAPP) += proc_info

include $(RTE_SDK)/mk/rte.subdir.mk


================================================
FILE: app/cmdline_test/Makefile
================================================
#   BSD LICENSE
#
#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
#   All rights reserved.
#
#   Redistribution and use in source and binary forms, with or without
#   modification, are permitted provided that the following conditions
#   are met:
#
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in
#       the documentation and/or other materials provided with the
#       distribution.
#     * Neither the name of Intel Corporation nor the names of its
#       contributors may be used to endorse or promote products derived
#       from this software without specific prior written permission.
#
#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

include $(RTE_SDK)/mk/rte.vars.mk

ifeq ($(CONFIG_RTE_LIBRTE_CMDLINE),y)

#
# library name
#
APP = cmdline_test

#
# all sources are stored in SRCS-y
#
SRCS-y += cmdline_test.c
SRCS-y += commands.c

CFLAGS += -O3
CFLAGS += $(WERROR_FLAGS)

include $(RTE_SDK)/mk/rte.app.mk

endif


================================================
FILE: app/cmdline_test/cmdline_test.c
================================================
/*-
 *   BSD LICENSE
 *
 *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
 *   All rights reserved.
 *
 *   Redistribution and use in source and binary forms, with or without
 *   modification, are permitted provided that the following conditions
 *   are met:
 *
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in
 *       the documentation and/or other materials provided with the
 *       distribution.
 *     * Neither the name of Intel Corporation nor the names of its
 *       contributors may be used to endorse or promote products derived
 *       from this software without specific prior written permission.
 *
 *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#include <string.h>
#include <stdio.h>
#include <stdint.h>
#include <stdarg.h>
#include <stdlib.h>
#include <errno.h>
#include <termios.h>
#include <ctype.h>
#include <sys/queue.h>

#include <cmdline_rdline.h>
#include <cmdline_parse.h>
#include <cmdline_socket.h>
#include <cmdline.h>

#include "cmdline_test.h"

int
main(int __attribute__((unused)) argc, char __attribute__((unused)) ** argv)
{
	struct cmdline *cl;

	cl = cmdline_stdin_new(main_ctx, "CMDLINE_TEST>>");
	if (cl == NULL) {
		return -1;
	}
	cmdline_interact(cl);
	cmdline_stdin_exit(cl);

	return 0;
}


================================================
FILE: app/cmdline_test/cmdline_test.h
================================================
/*-
 *   BSD LICENSE
 *
 *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
 *   All rights reserved.
 *
 *   Redistribution and use in source and binary forms, with or without
 *   modification, are permitted provided that the following conditions
 *   are met:
 *
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in
 *       the documentation and/or other materials provided with the
 *       distribution.
 *     * Neither the name of Intel Corporation nor the names of its
 *       contributors may be used to endorse or promote products derived
 *       from this software without specific prior written permission.
 *
 *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef _CMDLINE_TEST_H_
#define _CMDLINE_TEST_H_

extern cmdline_parse_ctx_t main_ctx[];

#endif


================================================
FILE: app/cmdline_test/cmdline_test.py
================================================
#!/usr/bin/python

#   BSD LICENSE
#
#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
#   All rights reserved.
#
#   Redistribution and use in source and binary forms, with or without
#   modification, are permitted provided that the following conditions
#   are met:
#
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in
#       the documentation and/or other materials provided with the
#       distribution.
#     * Neither the name of Intel Corporation nor the names of its
#       contributors may be used to endorse or promote products derived
#       from this software without specific prior written permission.
#
#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# Script that runs cmdline_test app and feeds keystrokes into it.

import sys, pexpect, string, os, cmdline_test_data

#
# function to run test
#
def runTest(child,test):
	child.send(test["Sequence"])
	if test["Result"] == None:
		return 0
	child.expect(test["Result"],1)

#
# history test is a special case
#
# This test does the following:
# 1) fills the history with garbage up to its full capacity
#    (just enough to remove last entry)
# 2) scrolls back history to the very beginning
# 3) checks if the output is as expected, that is, the first
#    number in the sequence (not the last entry before it)
#
# This is a self-contained test, it needs only a pexpect child
#
def runHistoryTest(child):
	# find out history size
	child.sendline(cmdline_test_data.CMD_GET_BUFSIZE)
	child.expect("History buffer size: \\d+", timeout=1)
	history_size = int(child.after[len(cmdline_test_data.BUFSIZE_TEMPLATE):])
	i = 0

	# fill the history with numbers
	while i < history_size / 10:
		# add 1 to prevent from parsing as octals
		child.send("1" + str(i).zfill(8) + cmdline_test_data.ENTER)
		# the app will simply print out the number
		child.expect(str(i + 100000000), timeout=1)
		i += 1
	# scroll back history
	child.send(cmdline_test_data.UP * (i + 2) + cmdline_test_data.ENTER)
	child.expect("100000000", timeout=1)

# the path to cmdline_test executable is supplied via command-line.
if len(sys.argv) < 2:
	print "Error: please supply cmdline_test app path"
	sys.exit(1)

test_app_path = sys.argv[1]

if not os.path.exists(test_app_path):
	print "Error: please supply cmdline_test app path"
	sys.exit(1)

child = pexpect.spawn(test_app_path)

print "Running command-line tests..."
for test in cmdline_test_data.tests:
	print (test["Name"] + ":").ljust(30),
	try:
		runTest(child,test)
		print "PASS"
	except:
		print "FAIL"
		print child
		sys.exit(1)

# since last test quits the app, run new instance
child = pexpect.spawn(test_app_path)

print ("History fill test:").ljust(30),
try:
	runHistoryTest(child)
	print "PASS"
except:
	print "FAIL"
	print child
	sys.exit(1)
child.close()
sys.exit(0)


================================================
FILE: app/cmdline_test/cmdline_test_data.py
================================================
#!/usr/bin/python

#   BSD LICENSE
#
#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
#   All rights reserved.
#
#   Redistribution and use in source and binary forms, with or without
#   modification, are permitted provided that the following conditions
#   are met:
#
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in
#       the documentation and/or other materials provided with the
#       distribution.
#     * Neither the name of Intel Corporation nor the names of its
#       contributors may be used to endorse or promote products derived
#       from this software without specific prior written permission.
#
#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# collection of static data

import sys

# keycode constants
CTRL_A = chr(1)
CTRL_B = chr(2)
CTRL_C = chr(3)
CTRL_D = chr(4)
CTRL_E = chr(5)
CTRL_F = chr(6)
CTRL_K = chr(11)
CTRL_L = chr(12)
CTRL_N = chr(14)
CTRL_P = chr(16)
CTRL_W = chr(23)
CTRL_Y = chr(25)
ALT_B = chr(27) + chr(98)
ALT_D = chr(27) + chr(100)
ALT_F = chr(27) + chr(102)
ALT_BKSPACE = chr(27) + chr(127)
DEL = chr(27) + chr(91) + chr(51) + chr(126)
TAB = chr(9)
HELP = chr(63)
BKSPACE = chr(127)
RIGHT = chr(27) + chr(91) + chr(67)
DOWN = chr(27) + chr(91) + chr(66)
LEFT = chr(27) + chr(91) + chr(68)
UP = chr(27) + chr(91) + chr(65)
ENTER2 = '\r'
ENTER = '\n'

# expected result constants
NOT_FOUND = "Command not found"
BAD_ARG = "Bad arguments"
AMBIG = "Ambiguous command"
CMD1 = "Command 1 parsed!"
CMD2 = "Command 2 parsed!"
SINGLE = "Single word command parsed!"
SINGLE_LONG = "Single long word command parsed!"
AUTO1 = "Autocomplete command 1 parsed!"
AUTO2 = "Autocomplete command 2 parsed!"

# misc defines
CMD_QUIT = "quit"
CMD_GET_BUFSIZE = "get_history_bufsize"
BUFSIZE_TEMPLATE = "History buffer size: "
PROMPT = "CMDLINE_TEST>>"

# test defines
# each test tests progressively diverse set of keys. this way for example
# if we want to use some key sequence in the test, we first need to test
# that it itself does what it is expected to do. Most of the tests are
# designed that way.
#
# example: "arrows & delete test 1". we enter a partially valid command,
# then move 3 chars left and use delete three times. this way we get to
# know that "delete", "left" and "ctrl+B" all work (because if any of
# them fails, the whole test will fail and next tests won't be run).
#
# each test consists of name, character sequence to send to child,
# and expected output (if any).

tests = [
# test basic commands
	{"Name" : "command test 1",
	 "Sequence" : "ambiguous first" + ENTER,
	 "Result" : CMD1},
	{"Name" : "command test 2",
	 "Sequence" : "ambiguous second" + ENTER,
	 "Result" : CMD2},
	{"Name" : "command test 3",
	 "Sequence" : "ambiguous ambiguous" + ENTER,
	 "Result" : AMBIG},
	{"Name" : "command test 4",
	 "Sequence" : "ambiguous ambiguous2" + ENTER,
	 "Result" : AMBIG},

	{"Name" : "invalid command test 1",
	 "Sequence" : "ambiguous invalid" + ENTER,
	 "Result" : BAD_ARG},
# test invalid commands
	{"Name" : "invalid command test 2",
	 "Sequence" : "invalid" + ENTER,
	 "Result" : NOT_FOUND},
	{"Name" : "invalid command test 3",
	 "Sequence" : "ambiguousinvalid" + ENTER2,
	 "Result" : NOT_FOUND},

# test arrows and deletes
	{"Name" : "arrows & delete test 1",
	 "Sequence" : "singlebad" + LEFT*2 + CTRL_B + DEL*3 + ENTER,
	 "Result" : SINGLE},
	{"Name" : "arrows & delete test 2",
	 "Sequence" : "singlebad" + LEFT*5 + RIGHT + CTRL_F + DEL*3 + ENTER,
	 "Result" : SINGLE},

# test backspace
	{"Name" : "backspace test",
	 "Sequence" : "singlebad" + BKSPACE*3 + ENTER,
	 "Result" : SINGLE},

# test goto left and goto right
	{"Name" : "goto left test",
	 "Sequence" : "biguous first" + CTRL_A + "am" + ENTER,
	 "Result" : CMD1},
	{"Name" : "goto right test",
	 "Sequence" : "biguous fir" + CTRL_A + "am" + CTRL_E + "st" + ENTER,
	 "Result" : CMD1},

# test goto words
	{"Name" : "goto left word test",
	 "Sequence" : "ambiguous st" + ALT_B + "fir" + ENTER,
	 "Result" : CMD1},
	{"Name" : "goto right word test",
	 "Sequence" : "ambig first" + CTRL_A + ALT_F + "uous" + ENTER,
	 "Result" : CMD1},

# test removing words
	{"Name" : "remove left word 1",
	 "Sequence" : "single invalid" + CTRL_W + ENTER,
	 "Result" : SINGLE},
	{"Name" : "remove left word 2",
	 "Sequence" : "single invalid" + ALT_BKSPACE + ENTER,
	 "Result" : SINGLE},
	{"Name" : "remove right word",
	 "Sequence" : "single invalid" + ALT_B + ALT_D + ENTER,
	 "Result" : SINGLE},

# test kill buffer (copy and paste)
	{"Name" : "killbuffer test 1",
	 "Sequence" : "ambiguous" + CTRL_A + CTRL_K + " first" + CTRL_A + CTRL_Y + ENTER,
	 "Result" : CMD1},
	{"Name" : "killbuffer test 2",
	 "Sequence" : "ambiguous" + CTRL_A + CTRL_K + CTRL_Y*26 + ENTER,
	 "Result" : NOT_FOUND},

# test newline
	{"Name" : "newline test",
	 "Sequence" : "invalid" + CTRL_C + "single" + ENTER,
	 "Result" : SINGLE},

# test redisplay (nothing should really happen)
	{"Name" : "redisplay test",
	 "Sequence" : "single" + CTRL_L + ENTER,
	 "Result" : SINGLE},

# test autocomplete
	{"Name" : "autocomplete test 1",
	 "Sequence" : "si" + TAB + ENTER,
	 "Result" : SINGLE},
	{"Name" : "autocomplete test 2",
	 "Sequence" : "si" + TAB + "_" + TAB + ENTER,
	 "Result" : SINGLE_LONG},
	{"Name" : "autocomplete test 3",
	 "Sequence" : "in" + TAB + ENTER,
	 "Result" : NOT_FOUND},
	{"Name" : "autocomplete test 4",
	 "Sequence" : "am" + TAB + ENTER,
	 "Result" : BAD_ARG},
	{"Name" : "autocomplete test 5",
	 "Sequence" : "am" + TAB + "fir" + TAB + ENTER,
	 "Result" : CMD1},
	{"Name" : "autocomplete test 6",
	 "Sequence" : "am" + TAB + "fir" + TAB + TAB + ENTER,
	 "Result" : CMD1},
	{"Name" : "autocomplete test 7",
	 "Sequence" : "am" + TAB + "fir" + TAB + " " + TAB + ENTER,
	 "Result" : CMD1},
	{"Name" : "autocomplete test 8",
	 "Sequence" : "am" + TAB + "     am" + TAB + "   " + ENTER,
	 "Result" : AMBIG},
	{"Name" : "autocomplete test 9",
	 "Sequence" : "am" + TAB + "inv" + TAB + ENTER,
	 "Result" : BAD_ARG},
	{"Name" : "autocomplete test 10",
	 "Sequence" : "au" + TAB + ENTER,
	 "Result" : NOT_FOUND},
	{"Name" : "autocomplete test 11",
	 "Sequence" : "au" + TAB + "1" + ENTER,
	 "Result" : AUTO1},
	{"Name" : "autocomplete test 12",
	 "Sequence" : "au" + TAB + "2" + ENTER,
	 "Result" : AUTO2},
	{"Name" : "autocomplete test 13",
	 "Sequence" : "au" + TAB + "2" + TAB + ENTER,
	 "Result" : AUTO2},
	{"Name" : "autocomplete test 14",
	 "Sequence" : "au" + TAB + "2   " + TAB + ENTER,
	 "Result" : AUTO2},
	{"Name" : "autocomplete test 15",
	 "Sequence" : "24" + TAB + ENTER,
	 "Result" : "24"},

# test history
	{"Name" : "history test 1",
	 "Sequence" : "invalid" + ENTER + "single" + ENTER + "invalid" + ENTER + UP + CTRL_P + ENTER,
	 "Result" : SINGLE},
	{"Name" : "history test 2",
	 "Sequence" : "invalid" + ENTER + "ambiguous first" + ENTER + "invalid" + ENTER + "single" + ENTER + UP * 3 + CTRL_N + DOWN + ENTER,
	 "Result" : SINGLE},

#
# tests that improve coverage
#

# empty space tests
	{"Name" : "empty space test 1",
	 "Sequence" : RIGHT + LEFT + CTRL_B + CTRL_F + ENTER,
	 "Result" : PROMPT},
	{"Name" : "empty space test 2",
	 "Sequence" : BKSPACE + ENTER,
	 "Result" : PROMPT},
	{"Name" : "empty space test 3",
	 "Sequence" : CTRL_E*2 + CTRL_A*2 + ENTER,
	 "Result" : PROMPT},
	{"Name" : "empty space test 4",
	 "Sequence" : ALT_F*2 + ALT_B*2 + ENTER,
	 "Result" : PROMPT},
	{"Name" : "empty space test 5",
	 "Sequence" : " " + CTRL_E*2 + CTRL_A*2 + ENTER,
	 "Result" : PROMPT},
	{"Name" : "empty space test 6",
	 "Sequence" : " " + CTRL_A + ALT_F*2 + ALT_B*2 + ENTER,
	 "Result" : PROMPT},
	{"Name" : "empty space test 7",
	 "Sequence" : "  " + CTRL_A + CTRL_D + CTRL_E + CTRL_D + ENTER,
	 "Result" : PROMPT},
	{"Name" : "empty space test 8",
	 "Sequence" : " space" + CTRL_W*2 + ENTER,
	 "Result" : PROMPT},
	{"Name" : "empty space test 9",
	 "Sequence" : " space" + ALT_BKSPACE*2 + ENTER,
	 "Result" : PROMPT},
	{"Name" : "empty space test 10",
	 "Sequence" : " space " + CTRL_A + ALT_D*3 + ENTER,
	 "Result" : PROMPT},

# non-printable char tests
	{"Name" : "non-printable test 1",
	 "Sequence" : chr(27) + chr(47) + ENTER,
	 "Result" : PROMPT},
	{"Name" : "non-printable test 2",
	 "Sequence" : chr(27) + chr(128) + ENTER*7,
	 "Result" : PROMPT},
	{"Name" : "non-printable test 3",
	 "Sequence" : chr(27) + chr(91) + chr(127) + ENTER*6,
	 "Result" : PROMPT},

# miscellaneous tests
	{"Name" : "misc test 1",
	 "Sequence" : ENTER,
	 "Result" : PROMPT},
	{"Name" : "misc test 2",
	 "Sequence" : "single #comment" + ENTER,
	 "Result" : SINGLE},
	{"Name" : "misc test 3",
	 "Sequence" : "#empty line" + ENTER,
	 "Result" : PROMPT},
	{"Name" : "misc test 4",
	 "Sequence" : "   single  " + ENTER,
	 "Result" : SINGLE},
	{"Name" : "misc test 5",
	 "Sequence" : "single#" + ENTER,
	 "Result" : SINGLE},
	{"Name" : "misc test 6",
	 "Sequence" : 'a' * 257 + ENTER,
	 "Result" : NOT_FOUND},
	{"Name" : "misc test 7",
	 "Sequence" : "clear_history" + UP*5 + DOWN*5 + ENTER,
	 "Result" : PROMPT},
	{"Name" : "misc test 8",
	 "Sequence" : "a" + HELP + CTRL_C,
	 "Result" : PROMPT},
	{"Name" : "misc test 9",
	 "Sequence" : CTRL_D*3,
	 "Result" : None},
]


================================================
FILE: app/cmdline_test/commands.c
================================================
/*-
 *   BSD LICENSE
 *
 *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
 *   All rights reserved.
 *
 *   Redistribution and use in source and binary forms, with or without
 *   modification, are permitted provided that the following conditions
 *   are met:
 *
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in
 *       the documentation and/or other materials provided with the
 *       distribution.
 *     * Neither the name of Intel Corporation nor the names of its
 *       contributors may be used to endorse or promote products derived
 *       from this software without specific prior written permission.
 *
 *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#include <stdio.h>
#include <stdlib.h>
#include <termios.h>
#include <inttypes.h>

#include <cmdline_rdline.h>
#include <cmdline_parse.h>
#include <cmdline_parse_string.h>
#include <cmdline_parse_num.h>
#include <cmdline.h>

#include "cmdline_test.h"

/*** quit ***/
/* exit application */

struct cmd_quit_result {
	cmdline_fixed_string_t quit;
};

static void
cmd_quit_parsed(__attribute__((unused)) void *parsed_result,
		struct cmdline *cl,
		__attribute__((unused)) void *data)
{
	cmdline_quit(cl);
}

cmdline_parse_token_string_t cmd_quit_tok =
	TOKEN_STRING_INITIALIZER(struct cmd_quit_result, quit,
				 "quit");

cmdline_parse_inst_t cmd_quit = {
	.f = cmd_quit_parsed,  /* function to call */
	.data = NULL,      /* 2nd arg of func */
	.help_str = "exit application",
	.tokens = {        /* token list, NULL terminated */
		(void *)&cmd_quit_tok,
		NULL,
	},
};



/*** single ***/
/* a simple single-word command */

struct cmd_single_result {
	cmdline_fixed_string_t single;
};

static void
cmd_single_parsed(__attribute__((unused)) void *parsed_result,
		struct cmdline *cl,
		__attribute__((unused)) void *data)
{
	cmdline_printf(cl, "Single word command parsed!\n");
}

cmdline_parse_token_string_t cmd_single_tok =
	TOKEN_STRING_INITIALIZER(struct cmd_single_result, single,
				 "single");

cmdline_parse_inst_t cmd_single = {
	.f = cmd_single_parsed,  /* function to call */
	.data = NULL,      /* 2nd arg of func */
	.help_str = "a simple single-word command",
	.tokens = {        /* token list, NULL terminated */
		(void *)&cmd_single_tok,
		NULL,
	},
};



/*** single_long ***/
/* a variant of "single" command. useful to test autocomplete */

struct cmd_single_long_result {
	cmdline_fixed_string_t single_long;
};

static void
cmd_single_long_parsed(__attribute__((unused)) void *parsed_result,
		struct cmdline *cl,
		__attribute__((unused)) void *data)
{
	cmdline_printf(cl, "Single long word command parsed!\n");
}

cmdline_parse_token_string_t cmd_single_long_tok =
	TOKEN_STRING_INITIALIZER(struct cmd_single_long_result, single_long,
				 "single_long");

cmdline_parse_inst_t cmd_single_long = {
	.f = cmd_single_long_parsed,  /* function to call */
	.data = NULL,      /* 2nd arg of func */
	.help_str = "a variant of \"single\" command, useful to test autocomplete",
	.tokens = {        /* token list, NULL terminated */
		(void *)&cmd_single_long_tok,
		NULL,
	},
};



/*** autocomplete_1 ***/
/* first command to test autocomplete when multiple commands have chars
 * in common but none should complete due to ambiguity
 */

struct cmd_autocomplete_1_result {
	cmdline_fixed_string_t token;
};

static void
cmd_autocomplete_1_parsed(__attribute__((unused)) void *parsed_result,
		struct cmdline *cl,
		__attribute__((unused)) void *data)
{
	cmdline_printf(cl, "Autocomplete command 1 parsed!\n");
}

cmdline_parse_token_string_t cmd_autocomplete_1_tok =
	TOKEN_STRING_INITIALIZER(struct cmd_autocomplete_1_result, token,
				 "autocomplete_1");

cmdline_parse_inst_t cmd_autocomplete_1 = {
	.f = cmd_autocomplete_1_parsed,  /* function to call */
	.data = NULL,      /* 2nd arg of func */
	.help_str = "first ambiguous autocomplete command",
	.tokens = {        /* token list, NULL terminated */
		(void *)&cmd_autocomplete_1_tok,
		NULL,
	},
};



/*** autocomplete_2 ***/
/* second command to test autocomplete when multiple commands have chars
 * in common but none should complete due to ambiguity
 */

struct cmd_autocomplete_2_result {
	cmdline_fixed_string_t token;
};

static void
cmd_autocomplete_2_parsed(__attribute__((unused)) void *parsed_result,
		struct cmdline *cl,
		__attribute__((unused)) void *data)
{
	cmdline_printf(cl, "Autocomplete command 2 parsed!\n");
}

cmdline_parse_token_string_t cmd_autocomplete_2_tok =
	TOKEN_STRING_INITIALIZER(struct cmd_autocomplete_2_result, token,
				 "autocomplete_2");

cmdline_parse_inst_t cmd_autocomplete_2 = {
	.f = cmd_autocomplete_2_parsed,  /* function to call */
	.data = NULL,      /* 2nd arg of func */
	.help_str = "second ambiguous autocomplete command",
	.tokens = {        /* token list, NULL terminated */
		(void *)&cmd_autocomplete_2_tok,
		NULL,
	},
};



/*** number command ***/
/* a command that simply returns whatever (uint32) number is supplied to it */

struct cmd_num_result {
	unsigned num;
};

static void
cmd_num_parsed(void *parsed_result,
		struct cmdline *cl,
		__attribute__((unused)) void *data)
{
	unsigned result = ((struct cmd_num_result*)parsed_result)->num;
	cmdline_printf(cl, "%u\n", result);
}

cmdline_parse_token_num_t cmd_num_tok =
	TOKEN_NUM_INITIALIZER(struct cmd_num_result, num, UINT32);

cmdline_parse_inst_t cmd_num = {
	.f = cmd_num_parsed,  /* function to call */
	.data = NULL,      /* 2nd arg of func */
	.help_str = "a command that simply returns whatever number is entered",
	.tokens = {        /* token list, NULL terminated */
		(void *)&cmd_num_tok,
		NULL,
	},
};



/*** ambiguous first|ambiguous ***/
/* first command used to test command ambiguity */

struct cmd_ambig_result_1 {
	cmdline_fixed_string_t common_part;
	cmdline_fixed_string_t ambig_part;
};

static void
cmd_ambig_1_parsed(__attribute__((unused)) void *parsed_result,
		struct cmdline *cl,
		__attribute__((unused)) void *data)
{
	cmdline_printf(cl, "Command 1 parsed!\n");
}

cmdline_parse_token_string_t cmd_ambig_common_1 =
	TOKEN_STRING_INITIALIZER(struct cmd_ambig_result_1, common_part,
				 "ambiguous");
cmdline_parse_token_string_t cmd_ambig_ambig_1 =
	TOKEN_STRING_INITIALIZER(struct cmd_ambig_result_1, ambig_part,
				 "first#ambiguous#ambiguous2");

cmdline_parse_inst_t cmd_ambig_1 = {
	.f = cmd_ambig_1_parsed,  /* function to call */
	.data = NULL,      /* 2nd arg of func */
	.help_str = "first command used to test command ambiguity",
	.tokens = {        /* token list, NULL terminated */
		(void *)&cmd_ambig_common_1,
		(void*)&cmd_ambig_ambig_1,
		NULL,
	},
};



/*** ambiguous second|ambiguous ***/
/* second command used to test command ambiguity */

struct cmd_ambig_result_2 {
	cmdline_fixed_string_t common_part;
	cmdline_fixed_string_t ambig_part;
};

static void
cmd_ambig_2_parsed(__attribute__((unused)) void *parsed_result,
		struct cmdline *cl,
		__attribute__((unused)) void *data)
{
	cmdline_printf(cl, "Command 2 parsed!\n");
}

cmdline_parse_token_string_t cmd_ambig_common_2 =
	TOKEN_STRING_INITIALIZER(struct cmd_ambig_result_2, common_part,
				 "ambiguous");
cmdline_parse_token_string_t cmd_ambig_ambig_2 =
	TOKEN_STRING_INITIALIZER(struct cmd_ambig_result_2, ambig_part,
				 "second#ambiguous#ambiguous2");

cmdline_parse_inst_t cmd_ambig_2 = {
	.f = cmd_ambig_2_parsed,  /* function to call */
	.data = NULL,      /* 2nd arg of func */
	.help_str = "second command used to test command ambiguity",
	.tokens = {        /* token list, NULL terminated */
		(void *)&cmd_ambig_common_2,
		(void*)&cmd_ambig_ambig_2,
		NULL,
	},
};



/*** get_history_bufsize ***/
/* command that displays total space in history buffer
 * this will be useful for testing history (to fill it up just enough to
 * remove the last entry, we need to know how big it is).
 */

struct cmd_get_history_bufsize_result {
	cmdline_fixed_string_t str;
};

static void
cmd_get_history_bufsize_parsed(__attribute__((unused)) void *parsed_result,
		struct cmdline *cl,
		__attribute__((unused)) void *data)
{
	cmdline_printf(cl, "History buffer size: %zu\n",
			sizeof(cl->rdl.history_buf));
}

cmdline_parse_token_string_t cmd_get_history_bufsize_tok =
	TOKEN_STRING_INITIALIZER(struct cmd_get_history_bufsize_result, str,
				 "get_history_bufsize");

cmdline_parse_inst_t cmd_get_history_bufsize = {
	.f = cmd_get_history_bufsize_parsed,  /* function to call */
	.data = NULL,      /* 2nd arg of func */
	.help_str = "command that displays total space in history buffer",
	.tokens = {        /* token list, NULL terminated */
		(void *)&cmd_get_history_bufsize_tok,
		NULL,
	},
};



/*** clear_history ***/
/* clears history buffer */

struct cmd_clear_history_result {
	cmdline_fixed_string_t str;
};

static void
cmd_clear_history_parsed(__attribute__((unused)) void *parsed_result,
		struct cmdline *cl,
		__attribute__((unused)) void *data)
{
	rdline_clear_history(&cl->rdl);
}

cmdline_parse_token_string_t cmd_clear_history_tok =
	TOKEN_STRING_INITIALIZER(struct cmd_clear_history_result, str,
				 "clear_history");

cmdline_parse_inst_t cmd_clear_history = {
	.f = cmd_clear_history_parsed,  /* function to call */
	.data = NULL,      /* 2nd arg of func */
	.help_str = "clear command history",
	.tokens = {        /* token list, NULL terminated */
		(void *)&cmd_clear_history_tok,
		NULL,
	},
};



/****************/

cmdline_parse_ctx_t main_ctx[] = {
		(cmdline_parse_inst_t *)&cmd_quit,
		(cmdline_parse_inst_t *)&cmd_ambig_1,
		(cmdline_parse_inst_t *)&cmd_ambig_2,
		(cmdline_parse_inst_t *)&cmd_single,
		(cmdline_parse_inst_t *)&cmd_single_long,
		(cmdline_parse_inst_t *)&cmd_num,
		(cmdline_parse_inst_t *)&cmd_get_history_bufsize,
		(cmdline_parse_inst_t *)&cmd_clear_history,
		(cmdline_parse_inst_t *)&cmd_autocomplete_1,
		(cmdline_parse_inst_t *)&cmd_autocomplete_2,
	NULL,
};


================================================
FILE: app/proc_info/Makefile
================================================
#   BSD LICENSE
#
#   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
#   All rights reserved.
#
#   Redistribution and use in source and binary forms, with or without
#   modification, are permitted provided that the following conditions
#   are met:
#
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in
#       the documentation and/or other materials provided with the
#       distribution.
#     * Neither the name of Intel Corporation nor the names of its
#       contributors may be used to endorse or promote products derived
#       from this software without specific prior written permission.
#
#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

include $(RTE_SDK)/mk/rte.vars.mk

APP = proc_info

CFLAGS += $(WERROR_FLAGS)

# all source are stored in SRCS-y

SRCS-y := main.c

# this application needs libraries first
DEPDIRS-y += lib

include $(RTE_SDK)/mk/rte.app.mk


================================================
FILE: app/proc_info/main.c
================================================
/*
 *   BSD LICENSE
 *
 *   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
 *   All rights reserved.
 *
 *   Redistribution and use in source and binary forms, with or without
 *   modification, are permitted provided that the following conditions
 *   are met:
 *
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in
 *       the documentation and/or other materials provided with the
 *       distribution.
 *     * Neither the name of Intel Corporation nor the names of its
 *       contributors may be used to endorse or promote products derived
 *       from this software without specific prior written permission.
 *
 *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#include <stdio.h>
#include <string.h>
#include <stdint.h>
#include <errno.h>
#include <stdarg.h>
#include <inttypes.h>
#include <sys/queue.h>
#include <stdlib.h>
#include <getopt.h>

#include <rte_eal.h>
#include <rte_config.h>
#include <rte_common.h>
#include <rte_debug.h>
#include <rte_ethdev.h>
#include <rte_malloc.h>
#include <rte_memory.h>
#include <rte_memzone.h>
#include <rte_launch.h>
#include <rte_tailq.h>
#include <rte_per_lcore.h>
#include <rte_lcore.h>
#include <rte_debug.h>
#include <rte_log.h>
#include <rte_atomic.h>
#include <rte_branch_prediction.h>
#include <rte_string_fns.h>

/* Maximum long option length for option parsing. */
#define MAX_LONG_OPT_SZ 64
#define RTE_LOGTYPE_APP RTE_LOGTYPE_USER1

/**< mask of enabled ports */
static uint32_t enabled_port_mask;
/**< Enable stats. */
static uint32_t enable_stats;
/**< Enable xstats. */
static uint32_t enable_xstats;
/**< Enable stats reset. */
static uint32_t reset_stats;
/**< Enable xstats reset. */
static uint32_t reset_xstats;
/**< Enable memory info. */
static uint32_t mem_info;

/**< display usage */
static void
proc_info_usage(const char *prgname)
{
	printf("%s [EAL options] -- -p PORTMASK\n"
		"  -m to display DPDK memory zones, segments and TAILQ information\n"
		"  -p PORTMASK: hexadecimal bitmask of ports to retrieve stats for\n"
		"  --stats: to display port statistics, enabled by default\n"
		"  --xstats: to display extended port statistics, disabled by "
			"default\n"
		"  --stats-reset: to reset port statistics\n"
		"  --xstats-reset: to reset port extended statistics\n",
		prgname);
}

/*
 * Parse the portmask provided at run time.
 */
static int
parse_portmask(const char *portmask)
{
	char *end = NULL;
	unsigned long pm;

	errno = 0;

	/* parse hexadecimal string */
	pm = strtoul(portmask, &end, 16);
	if ((portmask[0] == '\0') || (end == NULL) || (*end != '\0') ||
		(errno != 0)) {
		printf("%s ERROR parsing the port mask\n", __func__);
		return -1;
	}

	if (pm == 0)
		return -1;

	return pm;

}

/* Parse the argument given in the command line of the application */
static int
proc_info_parse_args(int argc, char **argv)
{
	int opt;
	int option_index;
	char *prgname = argv[0];
	static struct option long_option[] = {
		{"stats", 0, NULL, 0},
		{"stats-reset", 0, NULL, 0},
		{"xstats", 0, NULL, 0},
		{"xstats-reset", 0, NULL, 0},
		{NULL, 0, 0, 0}
	};

	if (argc == 1)
		proc_info_usage(prgname);

	/* Parse command line */
	while ((opt = getopt_long(argc, argv, "p:m",
			long_option, &option_index)) != EOF) {
		switch (opt) {
		/* portmask */
		case 'p':
			enabled_port_mask = parse_portmask(optarg);
			if (enabled_port_mask == 0) {
				printf("invalid portmask\n");
				proc_info_usage(prgname);
				return -1;
			}
			break;
		case 'm':
			mem_info = 1;
			break;
		case 0:
			/* Print stats */
			if (!strncmp(long_option[option_index].name, "stats",
					MAX_LONG_OPT_SZ))
				enable_stats = 1;
			/* Print xstats */
			else if (!strncmp(long_option[option_index].name, "xstats",
					MAX_LONG_OPT_SZ))
				enable_xstats = 1;
			/* Reset stats */
			if (!strncmp(long_option[option_index].name, "stats-reset",
					MAX_LONG_OPT_SZ))
				reset_stats = 1;
			/* Reset xstats */
			else if (!strncmp(long_option[option_index].name, "xstats-reset",
					MAX_LONG_OPT_SZ))
				reset_xstats = 1;
			break;

		default:
			proc_info_usage(prgname);
			return -1;
		}
	}
	return 0;
}

static void
meminfo_display(void)
{
	printf("----------- MEMORY_SEGMENTS -----------\n");
	rte_dump_physmem_layout(stdout);
	printf("--------- END_MEMORY_SEGMENTS ---------\n");

	printf("------------ MEMORY_ZONES -------------\n");
	rte_memzone_dump(stdout);
	printf("---------- END_MEMORY_ZONES -----------\n");

	printf("------------- TAIL_QUEUES -------------\n");
	rte_dump_tailq(stdout);
	printf("---------- END_TAIL_QUEUES ------------\n");
}

static void
nic_stats_display(uint8_t port_id)
{
	struct rte_eth_stats stats;
	uint8_t i;

	static const char *nic_stats_border = "########################";

	rte_eth_stats_get(port_id, &stats);
	printf("\n  %s NIC statistics for port %-2d %s\n",
		   nic_stats_border, port_id, nic_stats_border);

	printf("  RX-packets: %-10"PRIu64"  RX-errors:  %-10"PRIu64
	       "  RX-bytes:  %-10"PRIu64"\n", stats.ipackets, stats.ierrors,
	       stats.ibytes);
	printf("  RX-nombuf:  %-10"PRIu64"\n", stats.rx_nombuf);
	printf("  TX-packets: %-10"PRIu64"  TX-errors:  %-10"PRIu64
	       "  TX-bytes:  %-10"PRIu64"\n", stats.opackets, stats.oerrors,
	       stats.obytes);

	printf("\n");
	for (i = 0; i < RTE_ETHDEV_QUEUE_STAT_CNTRS; i++) {
		printf("  Stats reg %2d RX-packets: %-10"PRIu64
		       "  RX-errors: %-10"PRIu64
		       "  RX-bytes: %-10"PRIu64"\n",
		       i, stats.q_ipackets[i], stats.q_errors[i], stats.q_ibytes[i]);
	}

	printf("\n");
	for (i = 0; i < RTE_ETHDEV_QUEUE_STAT_CNTRS; i++) {
		printf("  Stats reg %2d TX-packets: %-10"PRIu64
		       "  TX-bytes: %-10"PRIu64"\n",
		       i, stats.q_opackets[i], stats.q_obytes[i]);
	}

	printf("  %s############################%s\n",
		   nic_stats_border, nic_stats_border);
}

static void
nic_stats_clear(uint8_t port_id)
{
	printf("\n Clearing NIC stats for port %d\n", port_id);
	rte_eth_stats_reset(port_id);
	printf("\n  NIC statistics for port %d cleared\n", port_id);
}

static void
nic_xstats_display(uint8_t port_id)
{
	struct rte_eth_xstats *xstats;
	int len, ret, i;
	static const char *nic_stats_border = "########################";

	len = rte_eth_xstats_get(port_id, NULL, 0);
	if (len < 0) {
		printf("Cannot get xstats count\n");
		return;
	}
	xstats = malloc(sizeof(xstats[0]) * len);
	if (xstats == NULL) {
		printf("Cannot allocate memory for xstats\n");
		return;
	}

	printf("###### NIC extended statistics for port %-2d #########\n",
			   port_id);
	printf("%s############################\n",
			   nic_stats_border);
	ret = rte_eth_xstats_get(port_id, xstats, len);
	if (ret < 0 || ret > len) {
		printf("Cannot get xstats\n");
		free(xstats);
		return;
	}

	for (i = 0; i < len; i++)
		printf("%s: %"PRIu64"\n", xstats[i].name, xstats[i].value);

	printf("%s############################\n",
			   nic_stats_border);
	free(xstats);
}

static void
nic_xstats_clear(uint8_t port_id)
{
	printf("\n Clearing NIC xstats for port %d\n", port_id);
	rte_eth_xstats_reset(port_id);
	printf("\n  NIC extended statistics for port %d cleared\n", port_id);
}

int
main(int argc, char **argv)
{
	int ret;
	int i;
	char c_flag[] = "-c1";
	char n_flag[] = "-n4";
	char mp_flag[] = "--proc-type=secondary";
	char *argp[argc + 3];
	uint8_t nb_ports;

	argp[0] = argv[0];
	argp[1] = c_flag;
	argp[2] = n_flag;
	argp[3] = mp_flag;

	for (i = 1; i < argc; i++)
		argp[i + 3] = argv[i];

	argc += 3;

	ret = rte_eal_init(argc, argp);
	if (ret < 0)
		rte_panic("Cannot init EAL\n");

	argc -= ret;
	argv += (ret - 3);

	/* parse app arguments */
	ret = proc_info_parse_args(argc, argv);
	if (ret < 0)
		rte_exit(EXIT_FAILURE, "Invalid argument\n");

	if (mem_info) {
		meminfo_display();
		return 0;
	}

	nb_ports = rte_eth_dev_count();
	if (nb_ports == 0)
		rte_exit(EXIT_FAILURE, "No Ethernet ports - bye\n");


	if (nb_ports > RTE_MAX_ETHPORTS)
		nb_ports = RTE_MAX_ETHPORTS;

	/* If no port mask was specified*/
	if (enabled_port_mask == 0)
		enabled_port_mask = 0xffff;

	for (i = 0; i < nb_ports; i++) {
		if (enabled_port_mask & (1 << i)) {
			if (enable_stats)
				nic_stats_display(i);
			else if (enable_xstats)
				nic_xstats_display(i);
			else if (reset_stats)
				nic_stats_clear(i);
			else if (reset_xstats)
				nic_xstats_clear(i);
		}
	}

	return 0;
}


================================================
FILE: app/test/Makefile
================================================
#   BSD LICENSE
#
#   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.
#   All rights reserved.
#
#   Redistribution and use in source and binary forms, with or without
#   modification, are permitted provided that the following conditions
#   are met:
#
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in
#       the documentation and/or other materials provided with the
#       distribution.
#     * Neither the name of Intel Corporation nor the names of its
#       contributors may be used to endorse or promote products derived
#       from this software without specific prior written permission.
#
#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

include $(RTE_SDK)/mk/rte.vars.mk

ifeq ($(CONFIG_RTE_APP_TEST),y)

#
# library name
#
APP = test

#
# all sources are stored in SRCS-y
#
SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) := commands.c
SRCS-y += test.c
SRCS-y += test_pci.c
SRCS-y += test_prefetch.c
SRCS-y += test_byteorder.c
SRCS-y += test_per_lcore.c
SRCS-y += test_atomic.c
SRCS-y += test_malloc.c
SRCS-y += test_cycles.c
SRCS-y += test_spinlock.c
SRCS-y += test_memory.c
SRCS-y += test_memzone.c

SRCS-y += test_ring.c
SRCS-y += test_ring_perf.c
SRCS-y += test_pmd_perf.c

ifeq ($(CONFIG_RTE_LIBRTE_TABLE),y)
SRCS-y += test_table.c
SRCS-$(CONFIG_RTE_LIBRTE_PIPELINE) += test_table_pipeline.c
SRCS-y += test_table_tables.c
SRCS-y += test_table_ports.c
SRCS-y += test_table_combined.c
SRCS-$(CONFIG_RTE_LIBRTE_ACL) += test_table_acl.c
endif

SRCS-y += test_rwlock.c

SRCS-$(CONFIG_RTE_LIBRTE_TIMER) += test_timer.c
SRCS-$(CONFIG_RTE_LIBRTE_TIMER) += test_timer_perf.c
SRCS-$(CONFIG_RTE_LIBRTE_TIMER) += test_timer_racecond.c

SRCS-y += test_mempool.c
SRCS-y += test_mempool_perf.c

SRCS-y += test_mbuf.c
SRCS-y += test_logs.c

SRCS-y += test_memcpy.c
SRCS-y += test_memcpy_perf.c

SRCS-$(CONFIG_RTE_LIBRTE_HASH) += test_hash.c
SRCS-$(CONFIG_RTE_LIBRTE_HASH) += test_thash.c
SRCS-$(CONFIG_RTE_LIBRTE_HASH) += test_hash_perf.c
SRCS-$(CONFIG_RTE_LIBRTE_HASH) += test_hash_functions.c
SRCS-$(CONFIG_RTE_LIBRTE_HASH) += test_hash_scaling.c

SRCS-$(CONFIG_RTE_LIBRTE_LPM) += test_lpm.c
SRCS-$(CONFIG_RTE_LIBRTE_LPM) += test_lpm6.c

SRCS-y += test_debug.c
SRCS-y += test_errno.c
SRCS-y += test_tailq.c
SRCS-y += test_string_fns.c
SRCS-y += test_cpuflags.c
SRCS-y += test_mp_secondary.c
SRCS-y += test_eal_flags.c
SRCS-y += test_eal_fs.c
SRCS-y += test_alarm.c
SRCS-y += test_interrupts.c
SRCS-y += test_version.c
SRCS-y += test_func_reentrancy.c

SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += test_cmdline.c
SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += test_cmdline_num.c
SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += test_cmdline_etheraddr.c
SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += test_cmdline_portlist.c
SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += test_cmdline_ipaddr.c
SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += test_cmdline_cirbuf.c
SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += test_cmdline_string.c
SRCS-$(CONFIG_RTE_LIBRTE_CMDLINE) += test_cmdline_lib.c

ifeq ($(CONFIG_RTE_LIBRTE_SCHED),y)
SRCS-y += test_red.c
SRCS-$(CONFIG_RTE_ARCH_X86_64) += test_sched.c
endif

SRCS-$(CONFIG_RTE_LIBRTE_METER) += test_meter.c
SRCS-$(CONFIG_RTE_LIBRTE_KNI) += test_kni.c
SRCS-$(CONFIG_RTE_LIBRTE_POWER) += test_power.c test_power_acpi_cpufreq.c
SRCS-$(CONFIG_RTE_LIBRTE_POWER) += test_power_kvm_vm.c
SRCS-y += test_common.c
SRCS-$(CONFIG_RTE_LIBRTE_IVSHMEM) += test_ivshmem.c

SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += test_distributor.c
SRCS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += test_distributor_perf.c

SRCS-$(CONFIG_RTE_LIBRTE_REORDER) += test_reorder.c

SRCS-y += test_devargs.c
SRCS-y += virtual_pmd.c
SRCS-y += packet_burst_generator.c
SRCS-$(CONFIG_RTE_LIBRTE_ACL) += test_acl.c

ifeq ($(CONFIG_RTE_LIBRTE_PMD_RING),y)
SRCS-$(CONFIG_RTE_LIBRTE_PMD_BOND) += test_link_bonding.c
SRCS-$(CONFIG_RTE_LIBRTE_PMD_BOND) += test_link_bonding_mode4.c
endif

SRCS-$(CONFIG_RTE_LIBRTE_PMD_RING) += test_pmd_ring.c
SRCS-$(CONFIG_RTE_LIBRTE_KVARGS) += test_kvargs.c

CFLAGS += -O3
CFLAGS += $(WERROR_FLAGS)

# Disable warnings of deprecated-declarations in test_kni.c
ifeq ($(CC), icc)
CFLAGS_test_kni.o += -wd1478
else
CFLAGS_test_kni.o += -Wno-deprecated-declarations
endif
CFLAGS += -D_GNU_SOURCE

# Disable VTA for memcpy test
ifeq ($(CC), gcc)
ifeq ($(shell test $(GCC_VERSION) -ge 44 && echo 1), 1)
CFLAGS_test_memcpy.o += -fno-var-tracking-assignments
CFLAGS_test_memcpy_perf.o += -fno-var-tracking-assignments
endif
endif

# this application needs libraries first
DEPDIRS-y += lib drivers

# Link against shared libraries when needed
ifeq ($(CONFIG_RTE_LIBRTE_PMD_BOND),y)
ifneq ($(CONFIG_RTE_LIBRTE_PMD_RING),y)
$(error Link bonding tests require CONFIG_RTE_LIBRTE_PMD_RING=y)
else
ifeq ($(CONFIG_RTE_BUILD_SHARED_LIB),y)
LDLIBS += -lrte_pmd_ring
endif
endif
endif

include $(RTE_SDK)/mk/rte.app.mk

endif


================================================
FILE: app/test/autotest.py
================================================
#!/usr/bin/python

#   BSD LICENSE
#
#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
#   All rights reserved.
#
#   Redistribution and use in source and binary forms, with or without
#   modification, are permitted provided that the following conditions
#   are met:
#
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in
#       the documentation and/or other materials provided with the
#       distribution.
#     * Neither the name of Intel Corporation nor the names of its
#       contributors may be used to endorse or promote products derived
#       from this software without specific prior written permission.
#
#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# Script that uses either test app or qemu controlled by python-pexpect

import sys, autotest_data, autotest_runner



def usage():
	print"Usage: autotest.py [test app|test iso image]",
	print "[target] [whitelist|-blacklist]"

if len(sys.argv) < 3:
	usage()
	sys.exit(1)

target = sys.argv[2]

test_whitelist=None
test_blacklist=None

# get blacklist/whitelist
if len(sys.argv) > 3:
	testlist = sys.argv[3].split(',')
	testlist = [test.lower() for test in testlist]
	if testlist[0].startswith('-'):
		testlist[0] = testlist[0].lstrip('-')
		test_blacklist = testlist
	else:
		test_whitelist = testlist

cmdline  = "%s -c f -n 4"%(sys.argv[1])

print cmdline

runner = autotest_runner.AutotestRunner(cmdline, target, test_blacklist, test_whitelist)

for test_group in autotest_data.parallel_test_group_list:
	runner.add_parallel_test_group(test_group)

for test_group in autotest_data.non_parallel_test_group_list:
	runner.add_non_parallel_test_group(test_group)

num_fails = runner.run_all_tests()

sys.exit(num_fails)


================================================
FILE: app/test/autotest_data.py
================================================
#!/usr/bin/python

#   BSD LICENSE
#
#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
#   All rights reserved.
#
#   Redistribution and use in source and binary forms, with or without
#   modification, are permitted provided that the following conditions
#   are met:
#
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in
#       the documentation and/or other materials provided with the
#       distribution.
#     * Neither the name of Intel Corporation nor the names of its
#       contributors may be used to endorse or promote products derived
#       from this software without specific prior written permission.
#
#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# Test data for autotests

from glob import glob
from autotest_test_funcs import *

# quick and dirty function to find out number of sockets
def num_sockets():
	result = len(glob("/sys/devices/system/node/node*"))
	if result == 0:
		return 1
	return result

# Assign given number to each socket
# e.g. 32 becomes 32,32 or 32,32,32,32
def per_sockets(num):
    return ",".join([str(num)] * num_sockets())

# groups of tests that can be run in parallel
# the grouping has been found largely empirically
parallel_test_group_list = [

{
	"Prefix":	"group_1",
	"Memory" :	per_sockets(8),
	"Tests" :
	[
		{
		 "Name" :	"Timer autotest",
		 "Command" : 	"timer_autotest",
		 "Func" :	timer_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Debug autotest",
		 "Command" : 	"debug_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Errno autotest",
		 "Command" : 	"errno_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Meter autotest",
		 "Command" : 	"meter_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Common autotest",
		 "Command" : 	"common_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Dump log history",
		 "Command" :	"dump_log_history",
		 "Func" :	dump_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Dump rings",
		 "Command" :	"dump_ring",
		 "Func" :	dump_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Dump mempools",
		 "Command" :	"dump_mempool",
		 "Func" :	dump_autotest,
		 "Report" :	None,
		},
	]
},
{
	"Prefix":	"group_2",
	"Memory" :	"32",
	"Tests" :
	[
		{
		 "Name" :	"Memory autotest",
		 "Command" :	"memory_autotest",
		 "Func" :	memory_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Read/write lock autotest",
		 "Command" : 	"rwlock_autotest",
		 "Func" :	rwlock_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Logs autotest",
		 "Command" : 	"logs_autotest",
		 "Func" :	logs_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"CPU flags autotest",
		 "Command" : 	"cpuflags_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Version autotest",
		 "Command" : 	"version_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"EAL filesystem autotest",
		 "Command" : 	"eal_fs_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"EAL flags autotest",
		 "Command" : 	"eal_flags_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Hash autotest",
		 "Command" : 	"hash_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
	],
},
{
	"Prefix":	"group_3",
	"Memory" :	per_sockets(1024),
	"Tests" :
	[
		{
		 "Name" :	"LPM autotest",
		 "Command" : 	"lpm_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"IVSHMEM autotest",
		 "Command" : 	"ivshmem_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Memcpy autotest",
		 "Command" : 	"memcpy_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Memzone autotest",
		 "Command" : 	"memzone_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"String autotest",
		 "Command" : 	"string_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Alarm autotest",
		 "Command" :	"alarm_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
	]
},
{
	"Prefix":	"group_4",
	"Memory" :	per_sockets(128),
	"Tests" :
	[
		{
		 "Name" :	"PCI autotest",
		 "Command" :	"pci_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Malloc autotest",
		 "Command" : 	"malloc_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Multi-process autotest",
		 "Command" : 	"multiprocess_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Mbuf autotest",
		 "Command" : 	"mbuf_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Per-lcore autotest",
		 "Command" : 	"per_lcore_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Ring autotest",
		 "Command" : 	"ring_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
	]
},
{
	"Prefix":	"group_5",
	"Memory" :	"32",
	"Tests" :
	[
		{
		 "Name" :	"Spinlock autotest",
		 "Command" : 	"spinlock_autotest",
		 "Func" :	spinlock_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Byte order autotest",
		 "Command" : 	"byteorder_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"TAILQ autotest",
		 "Command" : 	"tailq_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Command-line autotest",
		 "Command" : 	"cmdline_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Interrupts autotest",
		 "Command" : 	"interrupt_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
	]
},
{
	"Prefix":	"group_6",
	"Memory" :	per_sockets(620),
	"Tests" :
	[
		{
		 "Name" :	"Function reentrancy autotest",
		 "Command" : 	"func_reentrancy_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Mempool autotest",
		 "Command" : 	"mempool_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Atomics autotest",
		 "Command" : 	"atomic_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Prefetch autotest",
		 "Command" : 	"prefetch_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		 },
		{
		 "Name" :"Red autotest",
		 "Command" : "red_autotest",
		 "Func" :default_autotest,
		 "Report" :None,
		 },
	]
},
{
	"Prefix" :	"group_7",
	"Memory" :	"400",
	"Tests" :
	[
		{
		 "Name" :	"PMD ring autotest",
		 "Command" :	"ring_pmd_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Access list control autotest",
		 "Command" : 	"acl_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		 {
		 "Name" :"Sched autotest",
		 "Command" : "sched_autotest",
		 "Func" :default_autotest,
		 "Report" :None,
		 },
	]
},
]

# tests that should not be run when any other tests are running
non_parallel_test_group_list = [

{
	"Prefix" :	"kni",
	"Memory" :	"512",
	"Tests" :
	[
		{
		 "Name" :	"KNI autotest",
		 "Command" :	"kni_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
	]
},
{
	"Prefix":	"mempool_perf",
	"Memory" :	per_sockets(256),
	"Tests" :
	[
		{
		 "Name" :	"Cycles autotest",
		 "Command" : 	"cycles_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
		{
		 "Name" :	"Mempool performance autotest",
		 "Command" : 	"mempool_perf_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
	]
},
{
	"Prefix":	"memcpy_perf",
	"Memory" :	per_sockets(512),
	"Tests" :
	[
		{
		 "Name" :	"Memcpy performance autotest",
		 "Command" : 	"memcpy_perf_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
	]
},
{
	"Prefix":	"hash_perf",
	"Memory" :	per_sockets(512),
	"Tests" :
	[
		{
		 "Name" :	"Hash performance autotest",
		 "Command" : 	"hash_perf_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
	]
},
{
	"Prefix" :      "power",
	"Memory" :      per_sockets(512),
	"Tests" :
	[
		{
		 "Name" :       "Power autotest",
		 "Command" :    "power_autotest",
		 "Func" :       default_autotest,
		 "Report" :     None,
		},
	]
},
{
	"Prefix" :      "power_acpi_cpufreq",
	"Memory" :      per_sockets(512),
	"Tests" :
	[
		{
		 "Name" :       "Power ACPI cpufreq autotest",
		 "Command" :    "power_acpi_cpufreq_autotest",
		 "Func" :       default_autotest,
		 "Report" :     None,
		},
	]
},
{
	"Prefix" :      "power_kvm_vm",
	"Memory" :      "512",
	"Tests" :
	[
		{
		 "Name" :       "Power KVM VM  autotest",
		 "Command" :    "power_kvm_vm_autotest",
		 "Func" :       default_autotest,
		 "Report" :     None,
		},
	]
},
{
	"Prefix" :	"lpm6",
	"Memory" :	"512",
	"Tests" :
	[
		{
                 "Name" :       "LPM6 autotest",
                 "Command" :    "lpm6_autotest",
                 "Func" :       default_autotest,
                 "Report" :     None,
                },
	]
},
{
	"Prefix":	"timer_perf",
	"Memory" :	per_sockets(512),
	"Tests" :
	[
		{
		 "Name" :	"Timer performance autotest",
		 "Command" : 	"timer_perf_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
	]
},

#
# Please always make sure that ring_perf is the last test!
#
{
	"Prefix":	"ring_perf",
	"Memory" :	per_sockets(512),
	"Tests" :
	[
		{
		 "Name" :	"Ring performance autotest",
		 "Command" : 	"ring_perf_autotest",
		 "Func" :	default_autotest,
		 "Report" :	None,
		},
	]
},
]


================================================
FILE: app/test/autotest_runner.py
================================================
#!/usr/bin/python

#   BSD LICENSE
#
#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
#   All rights reserved.
#
#   Redistribution and use in source and binary forms, with or without
#   modification, are permitted provided that the following conditions
#   are met:
#
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in
#       the documentation and/or other materials provided with the
#       distribution.
#     * Neither the name of Intel Corporation nor the names of its
#       contributors may be used to endorse or promote products derived
#       from this software without specific prior written permission.
#
#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# The main logic behind running autotests in parallel

import multiprocessing, sys, pexpect, time, os, StringIO, csv

# wait for prompt
def wait_prompt(child):
	try:
		child.sendline()
		result = child.expect(["RTE>>", pexpect.TIMEOUT, pexpect.EOF],
			timeout = 120)
	except:
		return False
	if result == 0:
		return True
	else:
		return False

# run a test group
# each result tuple in results list consists of:
#   result value (0 or -1)
#   result string
#   test name
#   total test run time (double)
#   raw test log
#   test report (if not available, should be None)
#
# this function needs to be outside AutotestRunner class
# because otherwise Pool won't work (or rather it will require
# quite a bit of effort to make it work).
def run_test_group(cmdline, test_group):
	results = []
	child = None
	start_time = time.time()
	startuplog = None

	# run test app
	try:
		# prepare logging of init
		startuplog = StringIO.StringIO()

		print >>startuplog, "\n%s %s\n" % ("="*20, test_group["Prefix"])

		child = pexpect.spawn(cmdline, logfile=startuplog)

		# wait for target to boot
		if not wait_prompt(child):
			child.close()

			results.append((-1, "Fail [No prompt]", "Start %s" % test_group["Prefix"],
				time.time() - start_time, startuplog.getvalue(), None))

			# mark all tests as failed
			for test in test_group["Tests"]:
				results.append((-1, "Fail [No prompt]", test["Name"],
				time.time() - start_time, "", None))
			# exit test
			return results

	except:
		results.append((-1, "Fail [Can't run]", "Start %s" % test_group["Prefix"],
				time.time() - start_time, startuplog.getvalue(), None))

		# mark all tests as failed
		for t in test_group["Tests"]:
			results.append((-1, "Fail [Can't run]", t["Name"],
				time.time() - start_time, "", None))
		# exit test
		return results

	# startup was successful
	results.append((0, "Success", "Start %s" % test_group["Prefix"],
		time.time() - start_time, startuplog.getvalue(), None))

	# run all tests in test group
	for test in test_group["Tests"]:

		# create log buffer for each test
		# in multiprocessing environment, the logging would be
		# interleaved and will create a mess, hence the buffering
		logfile = StringIO.StringIO()
		child.logfile = logfile

		result = ()

		# make a note when the test started
		start_time = time.time()

		try:
			# print test name to log buffer
			print >>logfile, "\n%s %s\n" % ("-"*20, test["Name"])

			# run test function associated with the test
			result = test["Func"](child, test["Command"])

			# make a note when the test was finished
			end_time = time.time()

			# append test data to the result tuple
			result += (test["Name"], end_time - start_time,
				logfile.getvalue())

			# call report function, if any defined, and supply it with
			# target and complete log for test run
			if test["Report"]:
				report = test["Report"](self.target, log)

				# append report to results tuple
				result += (report,)
			else:
				# report is None
				result += (None,)
		except:
			# make a note when the test crashed
			end_time = time.time()

			# mark test as failed
			result = (-1, "Fail [Crash]", test["Name"],
				end_time - start_time, logfile.getvalue(), None)
		finally:
			# append the results to the results list
			results.append(result)

	# regardless of whether test has crashed, try quitting it
	try:
		child.sendline("quit")
		child.close()
	# if the test crashed, just do nothing instead
	except:
		# nop
		pass

	# return test results
	return results





# class representing an instance of autotests run
class AutotestRunner:
	cmdline = ""
	parallel_test_groups = []
	non_parallel_test_groups = []
	logfile = None
	csvwriter = None
	target = ""
	start = None
	n_tests = 0
	fails = 0
	log_buffers = []
	blacklist = []
	whitelist = []


	def __init__(self, cmdline, target, blacklist, whitelist):
		self.cmdline = cmdline
		self.target = target
		self.blacklist = blacklist
		self.whitelist = whitelist

		# log file filename
		logfile = "%s.log" % target
		csvfile = "%s.csv" % target

		self.logfile = open(logfile, "w")
		csvfile = open(csvfile, "w")
		self.csvwriter = csv.writer(csvfile)

		# prepare results table
		self.csvwriter.writerow(["test_name","test_result","result_str"])



	# set up cmdline string
	def __get_cmdline(self, test):
		cmdline = self.cmdline

		# append memory limitations for each test
		# otherwise tests won't run in parallel
		if not "i686" in self.target:
			cmdline += " --socket-mem=%s"% test["Memory"]
		else:
			# affinitize startup so that tests don't fail on i686
			cmdline = "taskset 1 " + cmdline
			cmdline += " -m " + str(sum(map(int,test["Memory"].split(","))))

		# set group prefix for autotest group
		# otherwise they won't run in parallel
		cmdline += " --file-prefix=%s"% test["Prefix"]

		return cmdline



	def add_parallel_test_group(self,test_group):
		self.parallel_test_groups.append(test_group)

	def add_non_parallel_test_group(self,test_group):
		self.non_parallel_test_groups.append(test_group)


	def __process_results(self, results):
		# this iterates over individual test results
		for i, result in enumerate(results):

			# increase total number of tests that were run
			# do not include "start" test
			if i > 0:
				self.n_tests += 1

			# unpack result tuple
			test_result, result_str, test_name, \
				test_time, log, report = result

			# get total run time
			cur_time = time.time()
			total_time = int(cur_time - self.start)

			# print results, test run time and total time since start
			print ("%s:" % test_name).ljust(30),
			print result_str.ljust(29),
			print "[%02dm %02ds]" % (test_time / 60, test_time % 60),

			# don't print out total time every line, it's the same anyway
			if i == len(results) - 1:
				print "[%02dm %02ds]" % (total_time / 60, total_time % 60)
			else:
				print ""

			# if test failed and it wasn't a "start" test
			if test_result < 0 and not i == 0:
				self.fails += 1

			# collect logs
			self.log_buffers.append(log)

			# create report if it exists
			if report:
				try:
					f = open("%s_%s_report.rst" % (self.target,test_name), "w")
				except IOError:
					print "Report for %s could not be created!" % test_name
				else:
					with f:
						f.write(report)

			# write test result to CSV file
			if i != 0:
				self.csvwriter.writerow([test_name, test_result, result_str])




	# this function iterates over test groups and removes each
	# test that is not in whitelist/blacklist
	def __filter_groups(self, test_groups):
		groups_to_remove = []

		# filter out tests from parallel test groups
		for i, test_group in enumerate(test_groups):

			# iterate over a copy so that we could safely delete individual tests
			for test in test_group["Tests"][:]:
				test_id = test["Command"]

				# dump tests are specified in full e.g. "Dump_mempool"
				if "_autotest" in test_id:
					test_id = test_id[:-len("_autotest")]

				# filter out blacklisted/whitelisted tests
				if self.blacklist and test_id in self.blacklist:
					test_group["Tests"].remove(test)
					continue
				if self.whitelist and test_id not in self.whitelist:
					test_group["Tests"].remove(test)
					continue

			# modify or remove original group
			if len(test_group["Tests"]) > 0:
				test_groups[i] = test_group
			else:
				# remember which groups should be deleted
				# put the numbers backwards so that we start
				# deleting from the end, not from the beginning
				groups_to_remove.insert(0, i)

		# remove test groups that need to be removed
		for i in groups_to_remove:
			del test_groups[i]

		return test_groups



	# iterate over test groups and run tests associated with them
	def run_all_tests(self):
		# filter groups
		self.parallel_test_groups = \
			self.__filter_groups(self.parallel_test_groups)
		self.non_parallel_test_groups = \
			self.__filter_groups(self.non_parallel_test_groups)

		# create a pool of worker threads
		pool = multiprocessing.Pool(processes=1)

		results = []

		# whatever happens, try to save as much logs as possible
		try:

			# create table header
			print ""
			print "Test name".ljust(30),
			print "Test result".ljust(29),
			print "Test".center(9),
			print "Total".center(9)
			print "=" * 80

			# make a note of tests start time
			self.start = time.time()

			# assign worker threads to run test groups
			for test_group in self.parallel_test_groups:
				result = pool.apply_async(run_test_group,
					[self.__get_cmdline(test_group), test_group])
				results.append(result)

			# iterate while we have group execution results to get
			while len(results) > 0:

				# iterate over a copy to be able to safely delete results
				# this iterates over a list of group results
				for group_result in results[:]:

					# if the thread hasn't finished yet, continue
					if not group_result.ready():
						continue

					res = group_result.get()

					self.__process_results(res)

					# remove result from results list once we're done with it
					results.remove(group_result)

			# run non_parallel tests. they are run one by one, synchronously
			for test_group in self.non_parallel_test_groups:
				group_result = run_test_group(self.__get_cmdline(test_group), test_group)

				self.__process_results(group_result)

			# get total run time
			cur_time = time.time()
			total_time = int(cur_time - self.start)

			# print out summary
			print "=" * 80
			print "Total run time: %02dm %02ds" % (total_time / 60, total_time % 60)
			if self.fails != 0:
				print "Number of failed tests: %s" % str(self.fails)

			# write summary to logfile
			self.logfile.write("Summary\n")
			self.logfile.write("Target: ".ljust(15) + "%s\n" % self.target)
			self.logfile.write("Tests: ".ljust(15) + "%i\n" % self.n_tests)
			self.logfile.write("Failed tests: ".ljust(15) + "%i\n" % self.fails)
		except:
			print "Exception occured"
			print sys.exc_info()
			self.fails = 1

		# drop logs from all executions to a logfile
		for buf in self.log_buffers:
			self.logfile.write(buf.replace("\r",""))

		log_buffers = []

		return self.fails


================================================
FILE: app/test/autotest_test_funcs.py
================================================
#!/usr/bin/python

#   BSD LICENSE
#
#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
#   All rights reserved.
#
#   Redistribution and use in source and binary forms, with or without
#   modification, are permitted provided that the following conditions
#   are met:
#
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in
#       the documentation and/or other materials provided with the
#       distribution.
#     * Neither the name of Intel Corporation nor the names of its
#       contributors may be used to endorse or promote products derived
#       from this software without specific prior written permission.
#
#   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
#   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
#   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
#   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
#   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
#   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
#   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
#   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
#   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# Test functions

import sys, pexpect, time, os, re

# default autotest, used to run most tests
# waits for "Test OK"
def default_autotest(child, test_name):
	child.sendline(test_name)
	result = child.expect(["Test OK", "Test Failed",
		"Command not found", pexpect.TIMEOUT], timeout = 900)
	if result == 1:
		return -1, "Fail"
	elif result == 2:
		return -1, "Fail [Not found]"
	elif result == 3:
		return -1, "Fail [Timeout]"
	return 0, "Success"

# autotest used to run dump commands
# just fires the command
def dump_autotest(child, test_name):
	child.sendline(test_name)
	return 0, "Success"

# memory autotest
# reads output and waits for Test OK
def memory_autotest(child, test_name):
	child.sendline(test_name)
	regexp = "phys:0x[0-9a-f]*, len:([0-9]*), virt:0x[0-9a-f]*, socket_id:[0-9]*"
	index = child.expect([regexp, pexpect.TIMEOUT], timeout = 180)
	if index != 0:
		return -1, "Fail [Timeout]"
	size = int(child.match.groups()[0], 16)
	if size <= 0:
		return -1, "Fail [Bad size]"
	index = child.expect(["Test OK", "Test Failed",
		          pexpect.TIMEOUT], timeout = 10)
	if index == 1:
		return -1, "Fail"
	elif index == 2:
		return -1, "Fail [Timeout]"
	return 0, "Success"

def spinlock_autotest(child, test_name):
	i = 0
	ir = 0
	child.sendline(test_name)
	while True:
		index = child.expect(["Test OK",
			"Test Failed",
			"Hello from core ([0-9]*) !",
			"Hello from within recursive locks from ([0-9]*) !",
		pexpect.TIMEOUT], timeout = 20)
		# ok
		if index == 0:
			break

		# message, check ordering
		elif index == 2:
			if int(child.match.groups()[0]) < i:
				return -1, "Fail [Bad order]"
			i = int(child.match.groups()[0])
		elif index == 3:
			if int(child.match.groups()[0]) < ir:
				return -1, "Fail [Bad order]"
			ir = int(child.match.groups()[0])

		# fail
		elif index == 4:
			return -1, "Fail [Timeout]"
		elif index == 1:
			return -1, "Fail"

	return 0, "Success"

def rwlock_autotest(child, test_name):
	i = 0
	child.sendline(test_name)
	while True:
		index = child.expect(["Test OK",
			"Test Failed",
			"Hello from core ([0-9]*) !",
			"Global write lock taken on master core ([0-9]*)",
		pexpect.TIMEOUT], timeout = 10)
		# ok
		if index == 0:
			if i != 0xffff:
				return -1, "Fail [Message is missing]"
			break

		# message, check ordering
		elif index == 2:
			if int(child.match.groups()[0]) < i:
				return -1, "Fail [Bad order]"
			i = int(child.match.groups()[0])

		# must be the last message, check ordering
		elif index == 3:
			i = 0xffff

		elif index == 4:
			return -1, "Fail [Timeout]"

		# fail
		else:
			return -1, "Fail"

	return 0, "Success"

def logs_autotest(child, test_name):
	i = 0
	child.sendline(test_name)

	log_list = [
		"TESTAPP1: this is a debug level message",
		"TESTAPP1: this is a info level message",
		"TESTAPP1: this is a warning level message",
		"TESTAPP2: this is a info level message",
		"TESTAPP2: this is a warning level message",
		"TESTAPP1: this is a debug level message",
		"TESTAPP1: this is a debug level message",
		"TESTAPP1: this is a info level message",
		"TESTAPP1: this is a warning level message",
		"TESTAPP2: this is a info level message",
		"TESTAPP2: this is a warning level message",
		"TESTAPP1: this is a debug level message",
	]

	for log_msg in log_list:
		index = child.expect([log_msg,
				      "Test OK",
				      "Test Failed",
				      pexpect.TIMEOUT], timeout = 10)

		if index == 3:
			return -1, "Fail [Timeout]"
		# not ok
		elif index != 0:
			return -1, "Fail"

	index = child.expect(["Test OK",
		"Test Failed",
		pexpect.TIMEOUT], timeout = 10)

	return 0, "Success"

def timer_autotest(child, test_name):
	i = 0
	child.sendline(test_name)

	index = child.expect(["Start timer stress tests \(20 seconds\)",
		"Test Failed",
		pexpect.TIMEOUT], timeout = 10)

	if index == 1:
		return -1, "Fail"
	elif index == 2:
		return -1, "Fail [Timeout]"

	index = child.expect(["Start timer stress tests 2",
		"Test Failed",
		pexpect.TIMEOUT], timeout = 40)

	if index == 1:
		return -1, "Fail"
	elif index == 2:
		return -1, "Fail [Timeout]"

	index = child.expect(["Start timer basic tests \(20 seconds\)",
		"Test Failed",
		pexpect.TIMEOUT], timeout = 20)

	if index == 1:
		return -1, "Fail"
	elif index == 2:
		return -1, "Fail [Timeout]"

	prev_lcore_timer1 = -1

	lcore_tim0 = -1
	lcore_tim1 = -1
	lcore_tim2 = -1
	lcore_tim3 = -1

	while True:
		index = child.expect(["TESTTIMER: ([0-9]*): callback id=([0-9]*) count=([0-9]*) on core ([0-9]*)",
			"Test OK",
			"Test Failed",
			pexpect.TIMEOUT], timeout = 10)

		if index == 1:
			break

		if index == 2:
			return -1, "Fail"
		elif index == 3:
			return -1, "Fail [Timeout]"

		try:
			t = int(child.match.groups()[0])
			id = int(child.match.groups()[1])
			cnt = int(child.match.groups()[2])
			lcore = int(child.match.groups()[3])
		except:
			return -1, "Fail [Cannot parse]"

		# timer0 always expires on the same core when cnt < 20
		if id == 0:
			if lcore_tim0 == -1:
				lcore_tim0 = lcore
			elif lcore != lcore_tim0 and cnt < 20:
				return -1, "Fail [lcore != lcore_tim0 (%d, %d)]"%(lcore, lcore_tim0)
			if cnt > 21:
				return -1, "Fail [tim0 cnt > 21]"

		# timer1 each time expires on a different core
		if id == 1:
			if lcore == lcore_tim1:
				return -1, "Fail [lcore == lcore_tim1 (%d, %d)]"%(lcore, lcore_tim1)
			lcore_tim1 = lcore
			if cnt > 10:
				return -1, "Fail [tim1 cnt > 30]"

		# timer0 always expires on the same core
		if id == 2:
			if lcore_tim2 == -1:
				lcore_tim2 = lcore
			elif lcore != lcore_tim2:
				return -1, "Fail [lcore != lcore_tim2 (%d, %d)]"%(lcore, lcore_tim2)
			if cnt > 30:
				return -1, "Fail [tim2 cnt > 30]"

		# timer0 always expires on the same core
		if id == 3:
			if lcore_tim3 == -1:
				lcore_tim3 = lcore
			elif lcore != lcore_tim3:
				return -1, "Fail [lcore_tim3 changed (%d -> %d)]"%(lcore, lcore_tim3)
			if cnt > 30:
				return -1, "Fail [tim3 cnt > 30]"

	# must be 2 different cores
	if lcore_tim0 == lcore_tim3:
		return -1, "Fail [lcore_tim0 (%d) == lcore_tim3 (%d)]"%(lcore_tim0, lcore_tim3)

	return 0, "Success"

def ring_autotest(child, test_name):
	child.sendline(test_name)
	index = child.expect(["Test OK", "Test Failed",
		pexpect.TIMEOUT], timeout = 15)
	if index == 1:
		return -1, "Fail"
	elif index == 2:
		return -1, "Fail [Timeout]"

	child.sendline("set_watermark test 100")
	child.sendline("dump_ring test")
	index = child.expect(["  watermark=100",
		pexpect.TIMEOUT], timeout = 1)
	if index != 0:
		return -1, "Fail [Bad watermark]"

	return 0, "Success"


================================================
FILE: app/test/commands.c
================================================
/*-
 *   BSD LICENSE
 *
 *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
 *   Copyright(c) 2014 6WIND S.A.
 *   All rights reserved.
 *
 *   Redistribution and use in source and binary forms, with or without
 *   modification, are permitted provided that the following conditions
 *   are met:
 *
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in
 *       the documentation and/or other materials provided with the
 *       distribution.
 *     * Neither the name of Intel Corporation nor the names of its
 *       contributors may be used to endorse or promote products derived
 *       from this software without specific prior written permission.
 *
 *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#include <stdio.h>
#include <stdarg.h>
#include <stdint.h>
#include <string.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <termios.h>
#ifndef __linux__
#ifndef __FreeBSD__
#include <net/socket.h>
#endif
#endif
#include <inttypes.h>
#include <errno.h>
#include <sys/queue.h>

#include <rte_common.h>
#include <rte_log.h>
#include <rte_debug.h>
#include <rte_memory.h>
#include <rte_memcpy.h>
#include <rte_memzone.h>
#include <rte_launch.h>
#include <rte_cycles.h>
#include <rte_eal.h>
#include <rte_per_lcore.h>
#include <rte_lcore.h>
#include <rte_atomic.h>
#include <rte_branch_prediction.h>
#include <rte_ring.h>
#include <rte_mempool.h>
#include <rte_mbuf.h>
#include <rte_devargs.h>

#include <cmdline_rdline.h>
#include <cmdline_parse.h>
#include <cmdline_parse_ipaddr.h>
#include <cmdline_parse_num.h>
#include <cmdline_parse_string.h>
#include <cmdline.h>

#include "test.h"

/****************/

static struct test_commands_list commands_list =
	TAILQ_HEAD_INITIALIZER(commands_list);

void
add_test_command(struct test_command *t)
{
	TAILQ_INSERT_TAIL(&commands_list, t, next);
}

struct cmd_autotest_result {
	cmdline_fixed_string_t autotest;
};

static void cmd_autotest_parsed(void *parsed_result,
				__attribute__((unused)) struct cmdline *cl,
				__attribute__((unused)) void *data)
{
	struct test_command *t;
	struct cmd_autotest_result *res = parsed_result;
	int ret = 0;

	TAILQ_FOREACH(t, &commands_list, next) {
		if (!strcmp(res->autotest, t->command))
			ret = t->callback();
	}

	if (ret == 0)
		printf("Test OK\n");
	else
		printf("Test Failed\n");
	fflush(stdout);
}

cmdline_parse_token_string_t cmd_autotest_autotest =
	TOKEN_STRING_INITIALIZER(struct cmd_autotest_result, autotest,
				 "");

cmdline_parse_inst_t cmd_autotest = {
	.f = cmd_autotest_parsed,  /* function to call */
	.data = NULL,      /* 2nd arg of func */
	.help_str = "launch autotest",
	.tokens = {        /* token list, NULL terminated */
		(void *)&cmd_autotest_autotest,
		NULL,
	},
};

/****************/

struct cmd_dump_result {
	cmdline_fixed_string_t dump;
};

static void
dump_struct_sizes(void)
{
#define DUMP_SIZE(t) printf("sizeof(" #t ") = %u\n", (unsigned)sizeof(t));
	DUMP_SIZE(struct rte_mbuf);
	DUMP_SIZE(struct rte_mempool);
	DUMP_SIZE(struct rte_ring);
#undef DUMP_SIZE
}

static void cmd_dump_parsed(void *parsed_result,
			    __attribute__((unused)) struct cmdline *cl,
			    __attribute__((unused)) void *data)
{
	struct cmd_dump_result *res = parsed_result;

	if (!strcmp(res->dump, "dump_physmem"))
		rte_dump_physmem_layout(stdout);
	else if (!strcmp(res->dump, "dump_memzone"))
		rte_memzone_dump(stdout);
	else if (!strcmp(res->dump, "dump_log_history"))
		rte_log_dump_history(stdout);
	else if (!strcmp(res->dump, "dump_struct_sizes"))
		dump_struct_sizes();
	else if (!strcmp(res->dump, "dump_ring"))
		rte_ring_list_dump(stdout);
	else if (!strcmp(res->dump, "dump_mempool"))
		rte_mempool_list_dump(stdout);
	else if (!strcmp(res->dump, "dump_devargs"))
		rte_eal_devargs_dump(stdout);
}

cmdline_parse_token_string_t cmd_dump_dump =
	TOKEN_STRING_INITIALIZER(struct cmd_dump_result, dump,
				 "dump_physmem#dump_memzone#dump_log_history#"
				 "dump_struct_sizes#dump_ring#dump_mempool#"
				 "dump_devargs");

cmdline_parse_inst_t cmd_dump = {
	.f = cmd_dump_parsed,  /* function to call */
	.data = NULL,      /* 2nd arg of func */
	.help_str = "dump status",
	.tokens = {        /* token list, NULL terminated */
		(void *)&cmd_dump_dump,
		NULL,
	},
};

/****************/

struct cmd_dump_one_result {
	cmdline_fixed_string_t dump;
	cmdline_fixed_string_t name;
};

static void cmd_dump_one_parsed(void *parsed_result, struct cmdline *cl,
				__attribute__((unused)) void *data)
{
	struct cmd_dump_one_result *res = parsed_result;

	if (!strcmp(res->dump, "dump_ring")) {
		struct rte_ring *r;
		r = rte_ring_lookup(res->name);
		if (r == NULL) {
			cmdline_printf(cl, "Cannot find ring\n");
			return;
		}
		rte_ring_dump(stdout, r);
	}
	else if (!strcmp(res->dump, "dump_mempool")) {
		struct rte_mempool *mp;
		mp = rte_mempool_lookup(res->name);
		if (mp == NULL) {
			cmdline_printf(cl, "Cannot find mempool\n");
			return;
		}
		rte_mempool_dump(stdout, mp);
	}
}

cmdline_parse_token_string_t cmd_dump_one_dump =
	TOKEN_STRING_INITIALIZER(struct cmd_dump_one_result, dump,
				 "dump_ring#dump_mempool");

cmdline_parse_token_string_t cmd_dump_one_name =
	TOKEN_STRING_INITIALIZER(struct cmd_dump_one_result, name, NULL);

cmdline_parse_inst_t cmd_dump_one = {
	.f = cmd_dump_one_parsed,  /* function to call */
	.data = NULL,      /* 2nd arg of func */
	.help_str = "dump one ring/mempool: dump_ring|dump_mempool <name>",
	.tokens = {        /* token list, NULL terminated */
		(void *)&cmd_dump_one_dump,
		(void *)&cmd_dump_one_name,
		NULL,
	},
};

/****************/

struct cmd_set_ring_result {
	cmdline_fixed_string_t set;
	cmdline_fixed_string_t name;
	uint32_t value;
};

static void cmd_set_ring_parsed(void *parsed_result, struct cmdline *cl,
				__attribute__((unused)) void *data)
{
	struct cmd_set_ring_result *res = parsed_result;
	struct rte_ring *r;
	int ret;

	r = rte_ring_lookup(res->name);
	if (r == NULL) {
		cmdline_printf(cl, "Cannot find ring\n");
		return;
	}

	if (!strcmp(res->set, "set_watermark")) {
		ret = rte_ring_set_water_mark(r, res->value);
		if (ret != 0)
			cmdline_printf(cl, "Cannot set water mark\n");
	}
}

cmdline_parse_token_string_t cmd_set_ring_set =
	TOKEN_STRING_INITIALIZER(struct cmd_set_ring_result, set,
				 "set_watermark");

cmdline_parse_token_string_t cmd_set_ring_name =
	TOKEN_STRING_INITIALIZER(struct cmd_set_ring_result, name, NULL);

cmdline_parse_token_num_t cmd_set_ring_value =
	TOKEN_NUM_INITIALIZER(struct cmd_set_ring_result, value, UINT32);

cmdline_parse_inst_t cmd_set_ring = {
	.f = cmd_set_ring_parsed,  /* function to call */
	.data = NULL,      /* 2nd arg of func */
	.help_str = "set watermark: "
			"set_watermark <ring_name> <value>",
	.tokens = {        /* token list, NULL terminated */
		(void *)&cmd_set_ring_set,
		(void *)&cmd_set_ring_name,
		(void *)&cmd_set_ring_value,
		NULL,
	},
};

/****************/

struct cmd_quit_result {
	cmdline_fixed_string_t quit;
};

static void
cmd_quit_parsed(__attribute__((unused)) void *parsed_result,
		struct cmdline *cl,
		__attribute__((unused)) void *data)
{
	cmdline_quit(cl);
}

cmdline_parse_token_string_t cmd_quit_quit =
	TOKEN_STRING_INITIALIZER(struct cmd_quit_result, quit,
				 "quit");

cmdline_parse_inst_t cmd_quit = {
	.f = cmd_quit_parsed,  /* function to call */
	.data = NULL,      /* 2nd arg of func */
	.help_str = "exit application",
	.tokens = {        /* token list, NULL terminated */
		(void *)&cmd_quit_quit,
		NULL,
	},
};

/****************/

struct cmd_set_rxtx_result {
	cmdline_fixed_string_t set;
	cmdline_fixed_string_t mode;
};

static void cmd_set_rxtx_parsed(void *parsed_result, struct cmdline *cl,
				__attribute__((unused)) void *data)
{
	struct cmd_set_rxtx_result *res = parsed_result;
	if (test_set_rxtx_conf(res->mode) < 0)
		cmdline_printf(cl, "Cannot find such mode\n");
}

cmdline_parse_token_string_t cmd_set_rxtx_set =
	TOKEN_STRING_INITIALIZER(struct cmd_set_rxtx_result, set,
				 "set_rxtx_mode");

cmdline_parse_token_string_t cmd_set_rxtx_mode =
	TOKEN_STRING_INITIALIZER(struct cmd_set_rxtx_result, mode, NULL);

cmdline_parse_inst_t cmd_set_rxtx = {
	.f = cmd_set_rxtx_parsed,  /* function to call */
	.data = NULL,      /* 2nd arg of func */
	.help_str = "set rxtx routine: "
			"set_rxtx <mode>",
	.tokens = {        /* token list, NULL terminated */
		(void *)&cmd_set_rxtx_set,
		(void *)&cmd_set_rxtx_mode,
		NULL,
	},
};

/****************/

struct cmd_set_rxtx_anchor {
	cmdline_fixed_string_t set;
	cmdline_fixed_string_t type;
};

static void
cmd_set_rxtx_anchor_parsed(void *parsed_result,
			   struct cmdline *cl,
			   __attribute__((unused)) void *data)
{
	struct cmd_set_rxtx_anchor *res = parsed_result;
	if (test_set_rxtx_anchor(res->type) < 0)
		cmdline_printf(cl, "Cannot find such anchor\n");
}

cmdline_parse_token_string_t cmd_set_rxtx_anchor_set =
	TOKEN_STRING_INITIALIZER(struct cmd_set_rxtx_anchor, set,
				 "set_rxtx_anchor");

cmdline_parse_token_string_t cmd_set_rxtx_anchor_type =
	TOKEN_STRING_INITIALIZER(struct cmd_set_rxtx_anchor, type, NULL);

cmdline_parse_inst_t cmd_set_rxtx_anchor = {
	.f = cmd_set_rxtx_anchor_parsed,  /* function to call */
	.data = NULL,      /* 2nd arg of func */
	.help_str = "set rxtx anchor: "
			"set_rxtx_anchor <type>",
	.tokens = {        /* token list, NULL terminated */
		(void *)&cmd_set_rxtx_anchor_set,
		(void *)&cmd_set_rxtx_anchor_type,
		NULL,
	},
};

/****************/

/* for stream control */
struct cmd_set_rxtx_sc {
	cmdline_fixed_string_t set;
	cmdline_fixed_string_t type;
};

static void
cmd_set_rxtx_sc_parsed(void *parsed_result,
			   struct cmdline *cl,
			   __attribute__((unused)) void *data)
{
	struct cmd_set_rxtx_sc *res = parsed_result;
	if (test_set_rxtx_sc(res->type) < 0)
		cmdline_printf(cl, "Cannot find such stream control\n");
}

cmdline_parse_token_string_t cmd_set_rxtx_sc_set =
	TOKEN_STRING_INITIALIZER(struct cmd_set_rxtx_sc, set,
				 "set_rxtx_sc");

cmdline_parse_token_string_t cmd_set_rxtx_sc_type =
	TOKEN_STRING_INITIALIZER(struct cmd_set_rxtx_sc, type, NULL);

cmdline_parse_inst_t cmd_set_rxtx_sc = {
	.f = cmd_set_rxtx_sc_parsed,  /* function to call */
	.data = NULL,      /* 2nd arg of func */
	.help_str = "set rxtx stream control: "
			"set_rxtx_sc <type>",
	.tokens = {        /* token list, NULL terminated */
		(void *)&cmd_set_rxtx_sc_set,
		(void *)&cmd_set_rxtx_sc_type,
		NULL,
	},
};

/****************/


cmdline_parse_ctx_t main_ctx[] = {
	(cmdline_parse_inst_t *)&cmd_autotest,
	(cmdline_parse_inst_t *)&cmd_dump,
	(cmdline_parse_inst_t *)&cmd_dump_one,
	(cmdline_parse_inst_t *)&cmd_set_ring,
	(cmdline_parse_inst_t *)&cmd_quit,
	(cmdline_parse_inst_t *)&cmd_set_rxtx,
	(cmdline_parse_inst_t *)&cmd_set_rxtx_anchor,
	(cmdline_parse_inst_t *)&cmd_set_rxtx_sc,
	NULL,
};

int commands_init(void)
{
	struct test_command *t;
	char *commands, *ptr;
	int commands_len = 0;

	TAILQ_FOREACH(t, &commands_list, next) {
		commands_len += strlen(t->command) + 1;
	}

	commands = malloc(commands_len);
	if (!commands)
		return -1;

	ptr = commands;
	TAILQ_FOREACH(t, &commands_list, next) {
		ptr += sprintf(ptr, "%s#", t->command);
	}
	ptr--;
	ptr[0] = '\0';

	cmd_autotest_autotest.string_data.str = commands;
	return 0;
}


================================================
FILE: app/test/packet_burst_generator.c
================================================
/*-
 *   BSD LICENSE
 *
 *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
 *   All rights reserved.
 *
 *   Redistribution and use in source and binary forms, with or without
 *   modification, are permitted provided that the following conditions
 *   are met:
 *
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in
 *       the documentation and/or other materials provided with the
 *       distribution.
 *     * Neither the name of Intel Corporation nor the names of its
 *       contributors may be used to endorse or promote products derived
 *       from this software without specific prior written permission.
 *
 *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#include <rte_byteorder.h>
#include <rte_mbuf.h>

#include "packet_burst_generator.h"

#define UDP_SRC_PORT 1024
#define UDP_DST_PORT 1024


#define IP_DEFTTL  64   /* from RFC 1340. */
#define IP_VERSION 0x40
#define IP_HDRLEN  0x05 /* default IP header length == five 32-bits words. */
#define IP_VHL_DEF (IP_VERSION | IP_HDRLEN)

static void
copy_buf_to_pkt_segs(void *buf, unsigned len, struct rte_mbuf *pkt,
		unsigned offset)
{
	struct rte_mbuf *seg;
	void *seg_buf;
	unsigned copy_len;

	seg = pkt;
	while (offset >= seg->data_len) {
		offset -= seg->data_len;
		seg = seg->next;
	}
	copy_len = seg->data_len - offset;
	seg_buf = rte_pktmbuf_mtod_offset(seg, char *, offset);
	while (len > copy_len) {
		rte_memcpy(seg_buf, buf, (size_t) copy_len);
		len -= copy_len;
		buf = ((char *) buf + copy_len);
		seg = seg->next;
		seg_buf = rte_pktmbuf_mtod(seg, void *);
	}
	rte_memcpy(seg_buf, buf, (size_t) len);
}

static inline void
copy_buf_to_pkt(void *buf, unsigned len, struct rte_mbuf *pkt, unsigned offset)
{
	if (offset + len <= pkt->data_len) {
		rte_memcpy(rte_pktmbuf_mtod_offset(pkt, char *, offset), buf,
			   (size_t) len);
		return;
	}
	copy_buf_to_pkt_segs(buf, len, pkt, offset);
}

void
initialize_eth_header(struct ether_hdr *eth_hdr, struct ether_addr *src_mac,
		struct ether_addr *dst_mac, uint16_t ether_type,
		uint8_t vlan_enabled, uint16_t van_id)
{
	ether_addr_copy(dst_mac, &eth_hdr->d_addr);
	ether_addr_copy(src_mac, &eth_hdr->s_addr);

	if (vlan_enabled) {
		struct vlan_hdr *vhdr = (struct vlan_hdr *)((uint8_t *)eth_hdr +
				sizeof(struct ether_hdr));

		eth_hdr->ether_type = rte_cpu_to_be_16(ETHER_TYPE_VLAN);

		vhdr->eth_proto =  rte_cpu_to_be_16(ether_type);
		vhdr->vlan_tci = van_id;
	} else {
		eth_hdr->ether_type = rte_cpu_to_be_16(ether_type);
	}
}

void
initialize_arp_header(struct arp_hdr *arp_hdr, struct ether_addr *src_mac,
		struct ether_addr *dst_mac, uint32_t src_ip, uint32_t dst_ip,
		uint32_t opcode)
{
	arp_hdr->arp_hrd = rte_cpu_to_be_16(ARP_HRD_ETHER);
	arp_hdr->arp_pro = rte_cpu_to_be_16(ETHER_TYPE_IPv4);
	arp_hdr->arp_hln = ETHER_ADDR_LEN;
	arp_hdr->arp_pln = sizeof(uint32_t);
	arp_hdr->arp_op = rte_cpu_to_be_16(opcode);
	ether_addr_copy(src_mac, &arp_hdr->arp_data.arp_sha);
	arp_hdr->arp_data.arp_sip = src_ip;
	ether_addr_copy(dst_mac, &arp_hdr->arp_data.arp_tha);
	arp_hdr->arp_data.arp_tip = dst_ip;
}

uint16_t
initialize_udp_header(struct udp_hdr *udp_hdr, uint16_t src_port,
		uint16_t dst_port, uint16_t pkt_data_len)
{
	uint16_t pkt_len;

	pkt_len = (uint16_t) (pkt_data_len + sizeof(struct udp_hdr));

	udp_hdr->src_port = rte_cpu_to_be_16(src_port);
	udp_hdr->dst_port = rte_cpu_to_be_16(dst_port);
	udp_hdr->dgram_len = rte_cpu_to_be_16(pkt_len);
	udp_hdr->dgram_cksum = 0; /* No UDP checksum. */

	return pkt_len;
}


uint16_t
initialize_ipv6_header(struct ipv6_hdr *ip_hdr, uint8_t *src_addr,
		uint8_t *dst_addr, uint16_t pkt_data_len)
{
	ip_hdr->vtc_flow = 0;
	ip_hdr->payload_len = pkt_data_len;
	ip_hdr->proto = IPPROTO_UDP;
	ip_hdr->hop_limits = IP_DEFTTL;

	rte_memcpy(ip_hdr->src_addr, src_addr, sizeof(ip_hdr->src_addr));
	rte_memcpy(ip_hdr->dst_addr, dst_addr, sizeof(ip_hdr->dst_addr));

	return (uint16_t) (pkt_data_len + sizeof(struct ipv6_hdr));
}

uint16_t
initialize_ipv4_header(struct ipv4_hdr *ip_hdr, uint32_t src_addr,
		uint32_t dst_addr, uint16_t pkt_data_len)
{
	uint16_t pkt_len;
	unaligned_uint16_t *ptr16;
	uint32_t ip_cksum;

	/*
	 * Initialize IP header.
	 */
	pkt_len = (uint16_t) (pkt_data_len + sizeof(struct ipv4_hdr));

	ip_hdr->version_ihl   = IP_VHL_DEF;
	ip_hdr->type_of_service   = 0;
	ip_hdr->fragment_offset = 0;
	ip_hdr->time_to_live   = IP_DEFTTL;
	ip_hdr->next_proto_id = IPPROTO_UDP;
	ip_hdr->packet_id = 0;
	ip_hdr->total_length   = rte_cpu_to_be_16(pkt_len);
	ip_hdr->src_addr = rte_cpu_to_be_32(src_addr);
	ip_hdr->dst_addr = rte_cpu_to_be_32(dst_addr);

	/*
	 * Compute IP header checksum.
	 */
	ptr16 = (unaligned_uint16_t *)ip_hdr;
	ip_cksum = 0;
	ip_cksum += ptr16[0]; ip_cksum += ptr16[1];
	ip_cksum += ptr16[2]; ip_cksum += ptr16[3];
	ip_cksum += ptr16[4];
	ip_cksum += ptr16[6]; ip_cksum += ptr16[7];
	ip_cksum += ptr16[8]; ip_cksum += ptr16[9];

	/*
	 * Reduce 32 bit checksum to 16 bits and complement it.
	 */
	ip_cksum = ((ip_cksum & 0xFFFF0000) >> 16) +
		(ip_cksum & 0x0000FFFF);
	ip_cksum %= 65536;
	ip_cksum = (~ip_cksum) & 0x0000FFFF;
	if (ip_cksum == 0)
		ip_cksum = 0xFFFF;
	ip_hdr->hdr_checksum = (uint16_t) ip_cksum;

	return pkt_len;
}



/*
 * The maximum number of segments per packet is used when creating
 * scattered transmit packets composed of a list of mbufs.
 */
#define RTE_MAX_SEGS_PER_PKT 255 /**< pkt.nb_segs is a 8-bit unsigned char. */


int
generate_packet_burst(struct rte_mempool *mp, struct rte_mbuf **pkts_burst,
		struct ether_hdr *eth_hdr, uint8_t vlan_enabled, void *ip_hdr,
		uint8_t ipv4, struct udp_hdr *udp_hdr, int nb_pkt_per_burst,
		uint8_t pkt_len, uint8_t nb_pkt_segs)
{
	int i, nb_pkt = 0;
	size_t eth_hdr_size;

	struct rte_mbuf *pkt_seg;
	struct rte_mbuf *pkt;

	for (nb_pkt = 0; nb_pkt < nb_pkt_per_burst; nb_pkt++) {
		pkt = rte_pktmbuf_alloc(mp);
		if (pkt == NULL) {
nomore_mbuf:
			if (nb_pkt == 0)
				return -1;
			break;
		}

		pkt->data_len = pkt_len;
		pkt_seg = pkt;
		for (i = 1; i < nb_pkt_segs; i++) {
			pkt_seg->next = rte_pktmbuf_alloc(mp);
			if (pkt_seg->next == NULL) {
				pkt->nb_segs = i;
				rte_pktmbuf_free(pkt);
				goto nomore_mbuf;
			}
			pkt_seg = pkt_seg->next;
			pkt_seg->data_len = pkt_len;
		}
		pkt_seg->next = NULL; /* Last segment of packet. */

		/*
		 * Copy headers in first packet segment(s).
		 */
		if (vlan_enabled)
			eth_hdr_size = sizeof(struct ether_hdr) + sizeof(struct vlan_hdr);
		else
			eth_hdr_size = sizeof(struct ether_hdr);

		copy_buf_to_pkt(eth_hdr, eth_hdr_size, pkt, 0);

		if (ipv4) {
			copy_buf_to_pkt(ip_hdr, sizeof(struct ipv4_hdr), pkt, eth_hdr_size);
			copy_buf_to_pkt(udp_hdr, sizeof(*udp_hdr), pkt, eth_hdr_size +
					sizeof(struct ipv4_hdr));
		} else {
			copy_buf_to_pkt(ip_hdr, sizeof(struct ipv6_hdr), pkt, eth_hdr_size);
			copy_buf_to_pkt(udp_hdr, sizeof(*udp_hdr), pkt, eth_hdr_size +
					sizeof(struct ipv6_hdr));
		}

		/*
		 * Complete first mbuf of packet and append it to the
		 * burst of packets to be transmitted.
		 */
		pkt->nb_segs = nb_pkt_segs;
		pkt->pkt_len = pkt_len;
		pkt->l2_len = eth_hdr_size;

		if (ipv4) {
			pkt->vlan_tci  = ETHER_TYPE_IPv4;
			pkt->l3_len = sizeof(struct ipv4_hdr);
#ifndef RTE_NEXT_ABI
			if (vlan_enabled)
				pkt->ol_flags = PKT_RX_IPV4_HDR | PKT_RX_VLAN_PKT;
			else
				pkt->ol_flags = PKT_RX_IPV4_HDR;
#endif
		} else {
			pkt->vlan_tci  = ETHER_TYPE_IPv6;
			pkt->l3_len = sizeof(struct ipv6_hdr);
#ifndef RTE_NEXT_ABI
			if (vlan_enabled)
				pkt->ol_flags = PKT_RX_IPV6_HDR | PKT_RX_VLAN_PKT;
			else
				pkt->ol_flags = PKT_RX_IPV6_HDR;
#endif
		}

		pkts_burst[nb_pkt] = pkt;
	}

	return nb_pkt;
}


================================================
FILE: app/test/packet_burst_generator.h
================================================
/*-
 *   BSD LICENSE
 *
 *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
 *   All rights reserved.
 *
 *   Redistribution and use in source and binary forms, with or without
 *   modification, are permitted provided that the following conditions
 *   are met:
 *
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in
 *       the documentation and/or other materials provided with the
 *       distribution.
 *     * Neither the name of Intel Corporation nor the names of its
 *       contributors may be used to endorse or promote products derived
 *       from this software without specific prior written permission.
 *
 *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef PACKET_BURST_GENERATOR_H_
#define PACKET_BURST_GENERATOR_H_

#ifdef __cplusplus
extern "C" {
#endif

#include <rte_mbuf.h>
#include <rte_ether.h>
#include <rte_arp.h>
#include <rte_ip.h>
#include <rte_udp.h>


#define IPV4_ADDR(a, b, c, d)(((a & 0xff) << 24) | ((b & 0xff) << 16) | \
		((c & 0xff) << 8) | (d & 0xff))

#define PACKET_BURST_GEN_PKT_LEN 60
#define PACKET_BURST_GEN_PKT_LEN_128 128

void
initialize_eth_header(struct ether_hdr *eth_hdr, struct ether_addr *src_mac,
		struct ether_addr *dst_mac, uint16_t ether_type,
		uint8_t vlan_enabled, uint16_t van_id);

void
initialize_arp_header(struct arp_hdr *arp_hdr, struct ether_addr *src_mac,
		struct ether_addr *dst_mac, uint32_t src_ip, uint32_t dst_ip,
		uint32_t opcode);

uint16_t
initialize_udp_header(struct udp_hdr *udp_hdr, uint16_t src_port,
		uint16_t dst_port, uint16_t pkt_data_len);


uint16_t
initialize_ipv6_header(struct ipv6_hdr *ip_hdr, uint8_t *src_addr,
		uint8_t *dst_addr, uint16_t pkt_data_len);

uint16_t
initialize_ipv4_header(struct ipv4_hdr *ip_hdr, uint32_t src_addr,
		uint32_t dst_addr, uint16_t pkt_data_len);

int
generate_packet_burst(struct rte_mempool *mp, struct rte_mbuf **pkts_burst,
		struct ether_hdr *eth_hdr, uint8_t vlan_enabled, void *ip_hdr,
		uint8_t ipv4, struct udp_hdr *udp_hdr, int nb_pkt_per_burst,
		uint8_t pkt_len, uint8_t nb_pkt_segs);

#ifdef __cplusplus
}
#endif


#endif /* PACKET_BURST_GENERATOR_H_ */


================================================
FILE: app/test/process.h
================================================
/*-
 *   BSD LICENSE
 *
 *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
 *   All rights reserved.
 *
 *   Redistribution and use in source and binary forms, with or without
 *   modification, are permitted provided that the following conditions
 *   are met:
 *
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in
 *       the documentation and/or other materials provided with the
 *       distribution.
 *     * Neither the name of Intel Corporation nor the names of its
 *       contributors may be used to endorse or promote products derived
 *       from this software without specific prior written permission.
 *
 *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef _PROCESS_H_
#define _PROCESS_H_

#ifdef RTE_EXEC_ENV_BSDAPP
#define self "curproc"
#define exe "file"
#else
#define self "self"
#define exe "exe"
#endif

/*
 * launches a second copy of the test process using the given argv parameters,
 * which should include argv[0] as the process name. To identify in the
 * subprocess the source of the call, the env_value parameter is set in the
 * environment as $RTE_TEST
 */
static inline int
process_dup(const char *const argv[], int numargs, const char *env_value)
{
	int num;
#ifdef RTE_LIBRTE_XEN_DOM0
	char *argv_cpy[numargs + 2];
#else
	char *argv_cpy[numargs + 1];
#endif
	int i, fd, status;
	char path[32];

	pid_t pid = fork();
	if (pid < 0)
		return -1;
	else if (pid == 0) {
		/* make a copy of the arguments to be passed to exec */
		for (i = 0; i < numargs; i++)
			argv_cpy[i] = strdup(argv[i]);
#ifdef RTE_LIBRTE_XEN_DOM0
		argv_cpy[i] = strdup("--xen-dom0");
		argv_cpy[i + 1] = NULL;
		num = numargs + 1;
#else
		argv_cpy[i] = NULL;
		num = numargs;
#endif

		/* close all open file descriptors, check /proc/self/fd to only
		 * call close on open fds. Exclude fds 0, 1 and 2*/
		for (fd = getdtablesize(); fd > 2; fd-- ) {
			snprintf(path, sizeof(path), "/proc/" exe "/fd/%d", fd);
			if (access(path, F_OK) == 0)
				close(fd);
		}
		printf("Running binary with argv[]:");
		for (i = 0; i < num; i++)
			printf("'%s' ", argv_cpy[i]);
		printf("\n");

		/* set the environment variable */
		if (setenv(RECURSIVE_ENV_VAR, env_value, 1) != 0)
			rte_panic("Cannot export environment variable\n");
		if (execv("/proc/" self "/" exe, argv_cpy) < 0)
			rte_panic("Cannot exec\n");
	}
	/* parent process does a wait */
	while (wait(&status) != pid)
		;
	return status;
}

#endif /* _PROCESS_H_ */


================================================
FILE: app/test/test.c
================================================
/*-
 *   BSD LICENSE
 *
 *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
 *   All rights reserved.
 *
 *   Redistribution and use in source and binary forms, with or without
 *   modification, are permitted provided that the following conditions
 *   are met:
 *
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in
 *       the documentation and/or other materials provided with the
 *       distribution.
 *     * Neither the name of Intel Corporation nor the names of its
 *       contributors may be used to endorse or promote products derived
 *       from this software without specific prior written permission.
 *
 *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#include <string.h>
#include <stdio.h>
#include <stdint.h>
#include <stdarg.h>
#include <stdlib.h>
#include <errno.h>
#include <termios.h>
#include <ctype.h>
#include <sys/queue.h>

#ifdef RTE_LIBRTE_CMDLINE
#include <cmdline_rdline.h>
#include <cmdline_parse.h>
#include <cmdline_socket.h>
#include <cmdline.h>
extern cmdline_parse_ctx_t main_ctx[];
#endif

#include <rte_memory.h>
#include <rte_memzone.h>
#include <rte_eal.h>
#include <rte_cycles.h>
#include <rte_log.h>
#include <rte_string_fns.h>
#ifdef RTE_LIBRTE_TIMER
#include <rte_timer.h>
#endif

#include "test.h"

#define RTE_LOGTYPE_APP RTE_LOGTYPE_USER1

const char *prgname; /* to be set to argv[0] */

static const char *recursive_call; /* used in linuxapp for MP and other tests */

static int
no_action(void){ return 0; }

static int
do_recursive_call(void)
{
	unsigned i;
	struct {
		const char *env_var;
		int (*action_fn)(void);
	} actions[] =  {
			{ "run_secondary_instances", test_mp_secondary },
			{ "test_missing_c_flag", no_action },
			{ "test_master_lcore_flag", no_action },
			{ "test_missing_n_flag", no_action },
			{ "test_no_hpet_flag", no_action },
			{ "test_whitelist_flag", no_action },
			{ "test_invalid_b_flag", no_action },
			{ "test_invalid_vdev_flag", no_action },
			{ "test_invalid_r_flag", no_action },
#ifdef RTE_LIBRTE_XEN_DOM0
			{ "test_dom0_misc_flags", no_action },
#else
			{ "test_misc_flags", no_action },
#endif
			{ "test_memory_flags", no_action },
			{ "test_file_prefix", no_action },
			{ "test_no_huge_flag", no_action },
#ifdef RTE_LIBRTE_IVSHMEM
			{ "test_ivshmem", test_ivshmem },
#endif
	};

	if (recursive_call == NULL)
		return -1;
	for (i = 0; i < sizeof(actions)/sizeof(actions[0]); i++) {
		if (strcmp(actions[i].env_var, recursive_call) == 0)
			return (actions[i].action_fn)();
	}
	printf("ERROR - missing action to take for %s\n", recursive_call);
	return -1;
}

int
main(int argc, char **argv)
{
#ifdef RTE_LIBRTE_CMDLINE
	struct cmdline *cl;
#endif
	int ret;

	ret = rte_eal_init(argc, argv);
	if (ret < 0)
		return -1;

#ifdef RTE_LIBRTE_TIMER
	rte_timer_subsystem_init();
#endif

	if (commands_init() < 0)
		return -1;

	argv += ret;

	prgname = argv[0];

	if ((recursive_call = getenv(RECURSIVE_ENV_VAR)) != NULL)
		return do_recursive_call();

#ifdef RTE_LIBEAL_USE_HPET
	if (rte_eal_hpet_init(1) < 0)
#endif
		RTE_LOG(INFO, APP,
				"HPET is not enabled, using TSC as default timer\n");


#ifdef RTE_LIBRTE_CMDLINE
	cl = cmdline_stdin_new(main_ctx, "RTE>>");
	if (cl == NULL) {
		return -1;
	}
	cmdline_interact(cl);
	cmdline_stdin_exit(cl);
#endif

	return 0;
}


int
unit_test_suite_runner(struct unit_test_suite *suite)
{
	int retval, i = 0;

	if (suite->suite_name)
		printf("Test Suite : %s\n", suite->suite_name);

	if (suite->setup)
		if (suite->setup() != 0)
			return -1;

	while (suite->unit_test_cases[i].testcase) {
		/* Run test case setup */
		if (suite->unit_test_cases[i].setup) {
			retval = suite->unit_test_cases[i].setup();
			if (retval != 0)
				return retval;
		}

		/* Run test case */
		if (suite->unit_test_cases[i].testcase() == 0) {
			printf("TestCase %2d: %s\n", i,
					suite->unit_test_cases[i].success_msg ?
					suite->unit_test_cases[i].success_msg :
					"passed");
		}
		else {
			printf("TestCase %2d: %s\n", i, suite->unit_test_cases[i].fail_msg ?
					suite->unit_test_cases[i].fail_msg :
					"failed");
			return -1;
		}

		/* Run test case teardown */
		if (suite->unit_test_cases[i].teardown) {
			retval = suite->unit_test_cases[i].teardown();
			if (retval != 0)
				return retval;
		}

		i++;
	}

	/* Run test suite teardown */
	if (suite->teardown)
		if (suite->teardown() != 0)
			return -1;

	return 0;
}


================================================
FILE: app/test/test.h
================================================
/*-
 *   BSD LICENSE
 *
 *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
 *   All rights reserved.
 *
 *   Redistribution and use in source and binary forms, with or without
 *   modification, are permitted provided that the following conditions
 *   are met:
 *
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in
 *       the documentation and/or other materials provided with the
 *       distribution.
 *     * Neither the name of Intel Corporation nor the names of its
 *       contributors may be used to endorse or promote products derived
 *       from this software without specific prior written permission.
 *
 *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef _TEST_H_
#define _TEST_H_

#include <sys/queue.h>

#define TEST_SUCCESS  (0)
#define TEST_FAILED  (-1)

/* Before including test.h file you can define
 * TEST_TRACE_FAILURE(_file, _line, _func) macro to better trace/debug test
 * failures. Mostly useful in test development phase. */
#ifndef TEST_TRACE_FAILURE
# define TEST_TRACE_FAILURE(_file, _line, _func)
#endif

#define TEST_ASSERT(cond, msg, ...) do {                         \
		if (!(cond)) {                                           \
			printf("TestCase %s() line %d failed: "              \
				msg "\n", __func__, __LINE__, ##__VA_ARGS__);    \
			TEST_TRACE_FAILURE(__FILE__, __LINE__, __func__);    \
			return TEST_FAILED;                                  \
		}                                                        \
} while (0)

#define TEST_ASSERT_EQUAL(a, b, msg, ...) do {                   \
		if (!(a == b)) {                                         \
			printf("TestCase %s() line %d failed: "              \
				msg "\n", __func__, __LINE__, ##__VA_ARGS__);    \
			TEST_TRACE_FAILURE(__FILE__, __LINE__, __func__);    \
			return TEST_FAILED;                                  \
		}                                                        \
} while (0)

#define TEST_ASSERT_NOT_EQUAL(a, b, msg, ...) do {               \
		if (!(a != b)) {                                         \
			printf("TestCase %s() line %d failed: "              \
				msg "\n", __func__, __LINE__, ##__VA_ARGS__);    \
			TEST_TRACE_FAILURE(__FILE__, __LINE__, __func__);    \
			return TEST_FAILED;                                  \
		}                                                        \
} while (0)

#define TEST_ASSERT_SUCCESS(val, msg, ...) do {                  \
		typeof(val) _val = (val);                                \
		if (!(_val == 0)) {                                      \
			printf("TestCase %s() line %d failed (err %d): "     \
				msg "\n", __func__, __LINE__, _val,              \
				##__VA_ARGS__);                                  \
			TEST_TRACE_FAILURE(__FILE__, __LINE__, __func__);    \
			return TEST_FAILED;                                  \
		}                                                        \
} while (0)

#define TEST_ASSERT_FAIL(val, msg, ...) do {                     \
		if (!(val != 0)) {                                       \
			printf("TestCase %s() line %d failed: "              \
				msg "\n", __func__, __LINE__, ##__VA_ARGS__);    \
			TEST_TRACE_FAILURE(__FILE__, __LINE__, __func__);    \
			return TEST_FAILED;                                  \
		}                                                        \
} while (0)

#define TEST_ASSERT_NULL(val, msg, ...) do {                     \
		if (!(val == NULL)) {                                    \
			printf("TestCase %s() line %d failed: "              \
				msg "\n", __func__, __LINE__, ##__VA_ARGS__);    \
			TEST_TRACE_FAILURE(__FILE__, __LINE__, __func__);    \
			return TEST_FAILED;                                  \
		}                                                        \
} while (0)

#define TEST_ASSERT_NOT_NULL(val, msg, ...) do {                 \
		if (!(val != NULL)) {                                    \
			printf("TestCase %s() line %d failed: "              \
				msg "\n", __func__, __LINE__, ##__VA_ARGS__);    \
			TEST_TRACE_FAILURE(__FILE__, __LINE__, __func__);    \
			return TEST_FAILED;                                  \
		}                                                        \
} while (0)

struct unit_test_case {
	int (*setup)(void);
	int (*teardown)(void);
	int (*testcase)(void);
	const char *success_msg;
	const char *fail_msg;
};

#define TEST_CASE(fn) { NULL, NULL, fn, #fn " succeeded", #fn " failed"}

#define TEST_CASE_NAMED(name, fn) { NULL, NULL, fn, name " succeeded", \
		name " failed"}

#define TEST_CASE_ST(setup, teardown, testcase)         \
		{ setup, teardown, testcase, #testcase " succeeded",    \
		#testcase " failed "}

#define TEST_CASES_END() { NULL, NULL, NULL, NULL, NULL }

struct unit_test_suite {
	const char *suite_name;
	int (*setup)(void);
	int (*teardown)(void);
	struct unit_test_case unit_test_cases[];
};

int unit_test_suite_runner(struct unit_test_suite *suite);

#define RECURSIVE_ENV_VAR "RTE_TEST_RECURSIVE"

#include <cmdline_parse.h>
#include <cmdline_parse_string.h>

extern const char *prgname;

int commands_init(void);

int test_pci(void);
int test_pci_run;

int test_mp_secondary(void);

int test_ivshmem(void);
int test_set_rxtx_conf(cmdline_fixed_string_t mode);
int test_set_rxtx_anchor(cmdline_fixed_string_t type);
int test_set_rxtx_sc(cmdline_fixed_string_t type);

typedef int (test_callback)(void);
TAILQ_HEAD(test_commands_list, test_command);
struct test_command {
	TAILQ_ENTRY(test_command) next;
	const char *command;
	test_callback *callback;
};

void add_test_command(struct test_command *t);

#define REGISTER_TEST_COMMAND(t) \
static void __attribute__((used)) testfn_##t(void);\
void __attribute__((constructor, used)) testfn_##t(void)\
{\
	add_test_command(&t);\
}

#endif


================================================
FILE: app/test/test_acl.c
================================================
/*-
 *   BSD LICENSE
 *
 *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
 *   All rights reserved.
 *
 *   Redistribution and use in source and binary forms, with or without
 *   modification, are permitted provided that the following conditions
 *   are met:
 *
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in
 *       the documentation and/or other materials provided with the
 *       distribution.
 *     * Neither the name of Intel Corporation nor the names of its
 *       contributors may be used to endorse or promote products derived
 *       from this software without specific prior written permission.
 *
 *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#include <string.h>
#include <errno.h>

#include "test.h"

#include <rte_string_fns.h>
#include <rte_mbuf.h>
#include <rte_byteorder.h>
#include <rte_ip.h>
#include <rte_acl.h>
#include <rte_common.h>

#include "test_acl.h"

#define LEN RTE_ACL_MAX_CATEGORIES

RTE_ACL_RULE_DEF(acl_ipv4vlan_rule, RTE_ACL_IPV4VLAN_NUM_FIELDS);

struct rte_acl_param acl_param = {
	.name = "acl_ctx",
	.socket_id = SOCKET_ID_ANY,
	.rule_size = RTE_ACL_IPV4VLAN_RULE_SZ,
	.max_rule_num = 0x30000,
};

struct rte_acl_ipv4vlan_rule acl_rule = {
		.data = { .priority = 1, .category_mask = 0xff },
		.src_port_low = 0,
		.src_port_high = UINT16_MAX,
		.dst_port_low = 0,
		.dst_port_high = UINT16_MAX,
};

const uint32_t ipv4_7tuple_layout[RTE_ACL_IPV4VLAN_NUM] = {
	offsetof(struct ipv4_7tuple, proto),
	offsetof(struct ipv4_7tuple, vlan),
	offsetof(struct ipv4_7tuple, ip_src),
	offsetof(struct ipv4_7tuple, ip_dst),
	offsetof(struct ipv4_7tuple, port_src),
};


/* byteswap to cpu or network order */
static void
bswap_test_data(struct ipv4_7tuple *data, int len, int to_be)
{
	int i;

	for (i = 0; i < len; i++) {

		if (to_be) {
			/* swap all bytes so that they are in network order */
			data[i].ip_dst = rte_cpu_to_be_32(data[i].ip_dst);
			data[i].ip_src = rte_cpu_to_be_32(data[i].ip_src);
			data[i].port_dst = rte_cpu_to_be_16(data[i].port_dst);
			data[i].port_src = rte_cpu_to_be_16(data[i].port_src);
			data[i].vlan = rte_cpu_to_be_16(data[i].vlan);
			data[i].domain = rte_cpu_to_be_16(data[i].domain);
		} else {
			data[i].ip_dst = rte_be_to_cpu_32(data[i].ip_dst);
			data[i].ip_src = rte_be_to_cpu_32(data[i].ip_src);
			data[i].port_dst = rte_be_to_cpu_16(data[i].port_dst);
			data[i].port_src = rte_be_to_cpu_16(data[i].port_src);
			data[i].vlan = rte_be_to_cpu_16(data[i].vlan);
			data[i].domain = rte_be_to_cpu_16(data[i].domain);
		}
	}
}

/*
 * Test scalar and SSE ACL lookup.
 */
static int
test_classify_run(struct rte_acl_ctx *acx)
{
	int ret, i;
	uint32_t result, count;
	uint32_t results[RTE_DIM(acl_test_data) * RTE_ACL_MAX_CATEGORIES];
	const uint8_t *data[RTE_DIM(acl_test_data)];

	/* swap all bytes in the data to network order */
	bswap_test_data(acl_test_data, RTE_DIM(acl_test_data), 1);

	/* store pointers to test data */
	for (i = 0; i < (int) RTE_DIM(acl_test_data); i++)
		data[i] = (uint8_t *)&acl_test_data[i];

	/**
	 * these will run quite a few times, it's necessary to test code paths
	 * from num=0 to num>8
	 */
	for (count = 0; count <= RTE_DIM(acl_test_data); count++) {
		ret = rte_acl_classify(acx, data, results,
				count, RTE_ACL_MAX_CATEGORIES);
		if (ret != 0) {
			printf("Line %i: SSE classify failed!\n", __LINE__);
			goto err;
		}

		/* check if we allow everything we should allow */
		for (i = 0; i < (int) count; i++) {
			result =
				results[i * RTE_ACL_MAX_CATEGORIES + ACL_ALLOW];
			if (result != acl_test_data[i].allow) {
				printf("Line %i: Error in allow results at %i "
					"(expected %"PRIu32" got %"PRIu32")!\n",
					__LINE__, i, acl_test_data[i].allow,
					result);
				ret = -EINVAL;
				goto err;
			}
		}

		/* check if we deny everything we should deny */
		for (i = 0; i < (int) count; i++) {
			result = results[i * RTE_ACL_MAX_CATEGORIES + ACL_DENY];
			if (result != acl_test_data[i].deny) {
				printf("Line %i: Error in deny results at %i "
					"(expected %"PRIu32" got %"PRIu32")!\n",
					__LINE__, i, acl_test_data[i].deny,
					result);
				ret = -EINVAL;
				goto err;
			}
		}
	}

	/* make a quick check for scalar */
	ret = rte_acl_classify_alg(acx, data, results,
			RTE_DIM(acl_test_data), RTE_ACL_MAX_CATEGORIES,
			RTE_ACL_CLASSIFY_SCALAR);
	if (ret != 0) {
		printf("Line %i: scalar classify failed!\n", __LINE__);
		goto err;
	}

	/* check if we allow everything we should allow */
	for (i = 0; i < (int) RTE_DIM(acl_test_data); i++) {
		result = results[i * RTE_ACL_MAX_CATEGORIES + ACL_ALLOW];
		if (result != acl_test_data[i].allow) {
			printf("Line %i: Error in allow results at %i "
					"(expected %"PRIu32" got %"PRIu32")!\n",
					__LINE__, i, acl_test_data[i].allow,
					result);
			ret = -EINVAL;
			goto err;
		}
	}

	/* check if we deny everything we should deny */
	for (i = 0; i < (int) RTE_DIM(acl_test_data); i++) {
		result = results[i * RTE_ACL_MAX_CATEGORIES + ACL_DENY];
		if (result != acl_test_data[i].deny) {
			printf("Line %i: Error in deny results at %i "
					"(expected %"PRIu32" got %"PRIu32")!\n",
					__LINE__, i, acl_test_data[i].deny,
					result);
			ret = -EINVAL;
			goto err;
		}
	}

	ret = 0;

err:
	/* swap data back to cpu order so that next time tests don't fail */
	bswap_test_data(acl_test_data, RTE_DIM(acl_test_data), 0);
	return ret;
}

static int
test_classify_buid(struct rte_acl_ctx *acx,
	const struct rte_acl_ipv4vlan_rule *rules, uint32_t num)
{
	int ret;

	/* add rules to the context */
	ret = rte_acl_ipv4vlan_add_rules(acx, rules, num);
	if (ret != 0) {
		printf("Line %i: Adding rules to ACL context failed!\n",
			__LINE__);
		return ret;
	}

	/* try building the context */
	ret = rte_acl_ipv4vlan_build(acx, ipv4_7tuple_layout,
		RTE_ACL_MAX_CATEGORIES);
	if (ret != 0) {
		printf("Line %i: Building ACL context failed!\n", __LINE__);
		return ret;
	}

	return 0;
}

#define	TEST_CLASSIFY_ITER	4

/*
 * Test scalar and SSE ACL lookup.
 */
static int
test_classify(void)
{
	struct rte_acl_ctx *acx;
	int i, ret;

	acx = rte_acl_create(&acl_param);
	if (acx == NULL) {
		printf("Line %i: Error creating ACL context!\n", __LINE__);
		return -1;
	}

	ret = 0;
	for (i = 0; i != TEST_CLASSIFY_ITER; i++) {

		if ((i & 1) == 0)
			rte_acl_reset(acx);
		else
			rte_acl_reset_rules(acx);

		ret = test_classify_buid(acx, acl_test_rules,
			RTE_DIM(acl_test_rules));
		if (ret != 0) {
			printf("Line %i, iter: %d: "
				"Adding rules to ACL context failed!\n",
				__LINE__, i);
			break;
		}

		ret = test_classify_run(acx);
		if (ret != 0) {
			printf("Line %i, iter: %d: %s failed!\n",
				__LINE__, i, __func__);
			break;
		}

		/* reset rules and make sure that classify still works ok. */
		rte_acl_reset_rules(acx);
		ret = test_classify_run(acx);
		if (ret != 0) {
			printf("Line %i, iter: %d: %s failed!\n",
				__LINE__, i, __func__);
			break;
		}
	}

	rte_acl_free(acx);
	return ret;
}

static int
test_build_ports_range(void)
{
	static const struct rte_acl_ipv4vlan_rule test_rules[] = {
		{
			/* match all packets. */
			.data = {
				.userdata = 1,
				.category_mask = ACL_ALLOW_MASK,
				.priority = 101,
			},
			.src_port_low = 0,
			.src_port_high = UINT16_MAX,
			.dst_port_low = 0,
			.dst_port_high = UINT16_MAX,
		},
		{
			/* match all packets with dst ports [54-65280]. */
			.data = {
				.userdata = 2,
				.category_mask = ACL_ALLOW_MASK,
				.priority = 102,
			},
			.src_port_low = 0,
			.src_port_high = UINT16_MAX,
			.dst_port_low = 54,
			.dst_port_high = 65280,
		},
		{
			/* match all packets with dst ports [0-52]. */
			.data = {
				.userdata = 3,
				.category_mask = ACL_ALLOW_MASK,
				.priority = 103,
			},
			.src_port_low = 0,
			.src_port_high = UINT16_MAX,
			.dst_port_low = 0,
			.dst_port_high = 52,
		},
		{
			/* match all packets with dst ports [53]. */
			.data = {
				.userdata = 4,
				.category_mask = ACL_ALLOW_MASK,
				.priority = 99,
			},
			.src_port_low = 0,
			.src_port_high = UINT16_MAX,
			.dst_port_low = 53,
			.dst_port_high = 53,
		},
		{
			/* match all packets with dst ports [65279-65535]. */
			.data = {
				.userdata = 5,
				.category_mask = ACL_ALLOW_MASK,
				.priority = 98,
			},
			.src_port_low = 0,
			.src_port_high = UINT16_MAX,
			.dst_port_low = 65279,
			.dst_port_high = UINT16_MAX,
		},
	};

	static struct ipv4_7tuple test_data[] = {
		{
			.proto = 6,
			.ip_src = IPv4(10, 1, 1, 1),
			.ip_dst = IPv4(192, 168, 0, 33),
			.port_dst = 53,
			.allow = 1,
		},
		{
			.proto = 6,
			.ip_src = IPv4(127, 84, 33, 1),
			.ip_dst = IPv4(1, 2, 3, 4),
			.port_dst = 65281,
			.allow = 1,
		},
	};

	struct rte_acl_ctx *acx;
	int32_t ret, i, j;
	uint32_t results[RTE_DIM(test_data)];
	const uint8_t *data[RTE_DIM(test_data)];

	acx = rte_acl_create(&acl_param);
	if (acx == NULL) {
		printf("Line %i: Error creating ACL context!\n", __LINE__);
		return -1;
	}

	/* swap all bytes in the data to network order */
	bswap_test_data(test_data, RTE_DIM(test_data), 1);

	/* store pointers to test data */
	for (i = 0; i != RTE_DIM(test_data); i++)
		data[i] = (uint8_t *)&test_data[i];

	for (i = 0; i != RTE_DIM(test_rules); i++) {
		rte_acl_reset(acx);
		ret = test_classify_buid(acx, test_rules, i + 1);
		if (ret != 0) {
			printf("Line %i, iter: %d: "
				"Adding rules to ACL context failed!\n",
				__LINE__, i);
			break;
		}
		ret = rte_acl_classify(acx, data, results,
			RTE_DIM(data), 1);
		if (ret != 0) {
			printf("Line %i, iter: %d: classify failed!\n",
				__LINE__, i);
			break;
		}

		/* check results */
		for (j = 0; j != RTE_DIM(results); j++) {
			if (results[j] != test_data[j].allow) {
				printf("Line %i: Error in allow results at %i "
					"(expected %"PRIu32" got %"PRIu32")!\n",
					__LINE__, j, test_data[j].allow,
					results[j]);
				ret = -EINVAL;
			}
		}
	}

	bswap_test_data(test_data, RTE_DIM(test_data), 0);

	rte_acl_free(acx);
	return ret;
}

static void
convert_rule(const struct rte_acl_ipv4vlan_rule *ri,
	struct acl_ipv4vlan_rule *ro)
{
	ro->data = ri->data;

	ro->field[RTE_ACL_IPV4VLAN_PROTO_FIELD].value.u8 = ri->proto;
	ro->field[RTE_ACL_IPV4VLAN_VLAN1_FIELD].value.u16 = ri->vlan;
	ro->field[RTE_ACL_IPV4VLAN_VLAN2_FIELD].value.u16 = ri->domain;
	ro->field[RTE_ACL_IPV4VLAN_SRC_FIELD].value.u32 = ri->src_addr;
	ro->field[RTE_ACL_IPV4VLAN_DST_FIELD].value.u32 = ri->dst_addr;
	ro->field[RTE_ACL_IPV4VLAN_SRCP_FIELD].value.u16 = ri->src_port_low;
	ro->field[RTE_ACL_IPV4VLAN_DSTP_FIELD].value.u16 = ri->dst_port_low;

	ro->field[RTE_ACL_IPV4VLAN_PROTO_FIELD].mask_range.u8 = ri->proto_mask;
	ro->field[RTE_ACL_IPV4VLAN_VLAN1_FIELD].mask_range.u16 = ri->vlan_mask;
	ro->field[RTE_ACL_IPV4VLAN_VLAN2_FIELD].mask_range.u16 =
		ri->domain_mask;
	ro->field[RTE_ACL_IPV4VLAN_SRC_FIELD].mask_range.u32 =
		ri->src_mask_len;
	ro->field[RTE_ACL_IPV4VLAN_DST_FIELD].mask_range.u32 = ri->dst_mask_len;
	ro->field[RTE_ACL_IPV4VLAN_SRCP_FIELD].mask_range.u16 =
		ri->src_port_high;
	ro->field[RTE_ACL_IPV4VLAN_DSTP_FIELD].mask_range.u16 =
		ri->dst_port_high;
}

/*
 * Convert IPV4 source and destination from RTE_ACL_FIELD_TYPE_MASK to
 * RTE_ACL_FIELD_TYPE_BITMASK.
 */
static void
convert_rule_1(const struct rte_acl_ipv4vlan_rule *ri,
	struct acl_ipv4vlan_rule *ro)
{
	uint32_t v;

	convert_rule(ri, ro);
	v = ro->field[RTE_ACL_IPV4VLAN_SRC_FIELD].mask_range.u32;
	ro->field[RTE_ACL_IPV4VLAN_SRC_FIELD].mask_range.u32 =
		RTE_ACL_MASKLEN_TO_BITMASK(v, sizeof(v));
	v = ro->field[RTE_ACL_IPV4VLAN_DST_FIELD].mask_range.u32;
	ro->field[RTE_ACL_IPV4VLAN_DST_FIELD].mask_range.u32 =
		RTE_ACL_MASKLEN_TO_BITMASK(v, sizeof(v));
}

/*
 * Convert IPV4 source and destination from RTE_ACL_FIELD_TYPE_MASK to
 * RTE_ACL_FIELD_TYPE_RANGE.
 */
static void
convert_rule_2(const struct rte_acl_ipv4vlan_rule *ri,
	struct acl_ipv4vlan_rule *ro)
{
	uint32_t hi, lo, mask;

	convert_rule(ri, ro);

	mask = ro->field[RTE_ACL_IPV4VLAN_SRC_FIELD].mask_range.u32;
	mask = RTE_ACL_MASKLEN_TO_BITMASK(mask, sizeof(mask));
	lo = ro->field[RTE_ACL_IPV4VLAN_SRC_FIELD].value.u32 & mask;
	hi = lo + ~mask;
	ro->field[RTE_ACL_IPV4VLAN_SRC_FIELD].value.u32 = lo;
	ro->field[RTE_ACL_IPV4VLAN_SRC_FIELD].mask_range.u32 = hi;

	mask = ro->field[RTE_ACL_IPV4VLAN_DST_FIELD].mask_range.u32;
	mask = RTE_ACL_MASKLEN_TO_BITMASK(mask, sizeof(mask));
	lo = ro->field[RTE_ACL_IPV4VLAN_DST_FIELD].value.u32 & mask;
Download .txt
gitextract__og3d0td/

├── .gitignore
├── GNUmakefile
├── LICENSE.GPL
├── LICENSE.LGPL
├── MAINTAINERS
├── Makefile
├── app/
│   ├── Makefile
│   ├── cmdline_test/
│   │   ├── Makefile
│   │   ├── cmdline_test.c
│   │   ├── cmdline_test.h
│   │   ├── cmdline_test.py
│   │   ├── cmdline_test_data.py
│   │   └── commands.c
│   ├── proc_info/
│   │   ├── Makefile
│   │   └── main.c
│   ├── test/
│   │   ├── Makefile
│   │   ├── autotest.py
│   │   ├── autotest_data.py
│   │   ├── autotest_runner.py
│   │   ├── autotest_test_funcs.py
│   │   ├── commands.c
│   │   ├── packet_burst_generator.c
│   │   ├── packet_burst_generator.h
│   │   ├── process.h
│   │   ├── test.c
│   │   ├── test.h
│   │   ├── test_acl.c
│   │   ├── test_acl.h
│   │   ├── test_alarm.c
│   │   ├── test_atomic.c
│   │   ├── test_byteorder.c
│   │   ├── test_cmdline.c
│   │   ├── test_cmdline.h
│   │   ├── test_cmdline_cirbuf.c
│   │   ├── test_cmdline_etheraddr.c
│   │   ├── test_cmdline_ipaddr.c
│   │   ├── test_cmdline_lib.c
│   │   ├── test_cmdline_num.c
│   │   ├── test_cmdline_portlist.c
│   │   ├── test_cmdline_string.c
│   │   ├── test_common.c
│   │   ├── test_cpuflags.c
│   │   ├── test_cycles.c
│   │   ├── test_debug.c
│   │   ├── test_devargs.c
│   │   ├── test_distributor.c
│   │   ├── test_distributor_perf.c
│   │   ├── test_eal_flags.c
│   │   ├── test_eal_fs.c
│   │   ├── test_errno.c
│   │   ├── test_func_reentrancy.c
│   │   ├── test_hash.c
│   │   ├── test_hash_functions.c
│   │   ├── test_hash_perf.c
│   │   ├── test_hash_scaling.c
│   │   ├── test_interrupts.c
│   │   ├── test_ivshmem.c
│   │   ├── test_kni.c
│   │   ├── test_kvargs.c
│   │   ├── test_link_bonding.c
│   │   ├── test_link_bonding_mode4.c
│   │   ├── test_logs.c
│   │   ├── test_lpm.c
│   │   ├── test_lpm6.c
│   │   ├── test_lpm6_routes.h
│   │   ├── test_lpm_routes.h
│   │   ├── test_malloc.c
│   │   ├── test_mbuf.c
│   │   ├── test_memcpy.c
│   │   ├── test_memcpy_perf.c
│   │   ├── test_memory.c
│   │   ├── test_mempool.c
│   │   ├── test_mempool_perf.c
│   │   ├── test_memzone.c
│   │   ├── test_meter.c
│   │   ├── test_mp_secondary.c
│   │   ├── test_pci.c
│   │   ├── test_per_lcore.c
│   │   ├── test_pmd_perf.c
│   │   ├── test_pmd_ring.c
│   │   ├── test_power.c
│   │   ├── test_power_acpi_cpufreq.c
│   │   ├── test_power_kvm_vm.c
│   │   ├── test_prefetch.c
│   │   ├── test_red.c
│   │   ├── test_reorder.c
│   │   ├── test_ring.c
│   │   ├── test_ring_perf.c
│   │   ├── test_rwlock.c
│   │   ├── test_sched.c
│   │   ├── test_spinlock.c
│   │   ├── test_string_fns.c
│   │   ├── test_table.c
│   │   ├── test_table.h
│   │   ├── test_table_acl.c
│   │   ├── test_table_acl.h
│   │   ├── test_table_combined.c
│   │   ├── test_table_combined.h
│   │   ├── test_table_pipeline.c
│   │   ├── test_table_pipeline.h
│   │   ├── test_table_ports.c
│   │   ├── test_table_ports.h
│   │   ├── test_table_tables.c
│   │   ├── test_table_tables.h
│   │   ├── test_tailq.c
│   │   ├── test_thash.c
│   │   ├── test_timer.c
│   │   ├── test_timer_perf.c
│   │   ├── test_timer_racecond.c
│   │   ├── test_version.c
│   │   ├── virtual_pmd.c
│   │   └── virtual_pmd.h
│   ├── test-acl/
│   │   ├── Makefile
│   │   └── main.c
│   ├── test-pipeline/
│   │   ├── Makefile
│   │   ├── config.c
│   │   ├── init.c
│   │   ├── main.c
│   │   ├── main.h
│   │   ├── pipeline_acl.c
│   │   ├── pipeline_hash.c
│   │   ├── pipeline_lpm.c
│   │   ├── pipeline_lpm_ipv6.c
│   │   ├── pipeline_stub.c
│   │   └── runtime.c
│   └── test-pmd/
│       ├── Makefile
│       ├── cmdline.c
│       ├── config.c
│       ├── csumonly.c
│       ├── flowgen.c
│       ├── icmpecho.c
│       ├── ieee1588fwd.c
│       ├── iofwd.c
│       ├── macfwd-retry.c
│       ├── macfwd.c
│       ├── macswap.c
│       ├── mempool_anon.c
│       ├── mempool_osdep.h
│       ├── parameters.c
│       ├── rxonly.c
│       ├── testpmd.c
│       ├── testpmd.h
│       └── txonly.c
├── config/
│   ├── common_bsdapp
│   ├── common_linuxapp
│   ├── defconfig_i686-native-linuxapp-gcc
│   ├── defconfig_i686-native-linuxapp-icc
│   ├── defconfig_ppc_64-power8-linuxapp-gcc
│   ├── defconfig_tile-tilegx-linuxapp-gcc
│   ├── defconfig_x86_64-ivshmem-linuxapp-gcc
│   ├── defconfig_x86_64-ivshmem-linuxapp-icc
│   ├── defconfig_x86_64-native-bsdapp-clang
│   ├── defconfig_x86_64-native-bsdapp-gcc
│   ├── defconfig_x86_64-native-linuxapp-clang
│   ├── defconfig_x86_64-native-linuxapp-gcc
│   ├── defconfig_x86_64-native-linuxapp-icc
│   └── defconfig_x86_x32-native-linuxapp-gcc
├── doc/
│   ├── api/
│   │   ├── doxy-api-index.md
│   │   ├── doxy-api.conf
│   │   └── doxy-html-custom.sh
│   ├── build-sdk-quick.txt
│   └── guides/
│       ├── conf.py
│       ├── contributing/
│       │   ├── coding_style.rst
│       │   ├── design.rst
│       │   ├── documentation.rst
│       │   ├── index.rst
│       │   └── versioning.rst
│       ├── faq/
│       │   ├── faq.rst
│       │   └── index.rst
│       ├── freebsd_gsg/
│       │   ├── build_dpdk.rst
│       │   ├── build_sample_apps.rst
│       │   ├── index.rst
│       │   ├── install_from_ports.rst
│       │   └── intro.rst
│       ├── index.rst
│       ├── linux_gsg/
│       │   ├── build_dpdk.rst
│       │   ├── build_sample_apps.rst
│       │   ├── enable_func.rst
│       │   ├── index.rst
│       │   ├── intro.rst
│       │   ├── quick_start.rst
│       │   └── sys_reqs.rst
│       ├── nics/
│       │   ├── cxgbe.rst
│       │   ├── e1000em.rst
│       │   ├── index.rst
│       │   ├── intel_vf.rst
│       │   ├── ixgbe.rst
│       │   ├── mlx4.rst
│       │   ├── pcap_ring.rst
│       │   ├── virtio.rst
│       │   └── vmxnet3.rst
│       ├── prog_guide/
│       │   ├── build_app.rst
│       │   ├── dev_kit_build_system.rst
│       │   ├── dev_kit_root_make_help.rst
│       │   ├── env_abstraction_layer.rst
│       │   ├── ext_app_lib_make_help.rst
│       │   ├── extend_intel_dpdk.rst
│       │   ├── glossary.rst
│       │   ├── hash_lib.rst
│       │   ├── index.rst
│       │   ├── intro.rst
│       │   ├── ip_fragment_reassembly_lib.rst
│       │   ├── ivshmem_lib.rst
│       │   ├── kernel_nic_interface.rst
│       │   ├── link_bonding_poll_mode_drv_lib.rst
│       │   ├── lpm6_lib.rst
│       │   ├── lpm_lib.rst
│       │   ├── mbuf_lib.rst
│       │   ├── mempool_lib.rst
│       │   ├── multi_proc_support.rst
│       │   ├── overview.rst
│       │   ├── packet_classif_access_ctrl.rst
│       │   ├── packet_distrib_lib.rst
│       │   ├── packet_framework.rst
│       │   ├── perf_opt_guidelines.rst
│       │   ├── poll_mode_drv.rst
│       │   ├── port_hotplug_framework.rst
│       │   ├── power_man.rst
│       │   ├── profile_app.rst
│       │   ├── qos_framework.rst
│       │   ├── reorder_lib.rst
│       │   ├── ring_lib.rst
│       │   ├── source_org.rst
│       │   ├── thread_safety_intel_dpdk_functions.rst
│       │   ├── timer_lib.rst
│       │   ├── vhost_lib.rst
│       │   └── writing_efficient_code.rst
│       ├── rel_notes/
│       │   ├── deprecation.rst
│       │   ├── index.rst
│       │   ├── known_issues.rst
│       │   ├── rel_description.rst
│       │   ├── release_1_8.rst
│       │   ├── release_2_0.rst
│       │   ├── release_2_1.rst
│       │   └── supported_os.rst
│       ├── sample_app_ug/
│       │   ├── cmd_line.rst
│       │   ├── dist_app.rst
│       │   ├── exception_path.rst
│       │   ├── hello_world.rst
│       │   ├── index.rst
│       │   ├── intel_quickassist.rst
│       │   ├── intro.rst
│       │   ├── ip_frag.rst
│       │   ├── ip_pipeline.rst
│       │   ├── ip_reassembly.rst
│       │   ├── ipv4_multicast.rst
│       │   ├── kernel_nic_interface.rst
│       │   ├── l2_forward_job_stats.rst
│       │   ├── l2_forward_real_virtual.rst
│       │   ├── l3_forward.rst
│       │   ├── l3_forward_access_ctrl.rst
│       │   ├── l3_forward_power_man.rst
│       │   ├── l3_forward_virtual.rst
│       │   ├── link_status_intr.rst
│       │   ├── load_balancer.rst
│       │   ├── multi_process.rst
│       │   ├── netmap_compatibility.rst
│       │   ├── packet_ordering.rst
│       │   ├── proc_info.rst
│       │   ├── qos_metering.rst
│       │   ├── qos_scheduler.rst
│       │   ├── quota_watermark.rst
│       │   ├── rxtx_callbacks.rst
│       │   ├── skeleton.rst
│       │   ├── tep_termination.rst
│       │   ├── test_pipeline.rst
│       │   ├── timer.rst
│       │   ├── vhost.rst
│       │   ├── vm_power_management.rst
│       │   └── vmdq_dcb_forwarding.rst
│       ├── testpmd_app_ug/
│       │   ├── build_app.rst
│       │   ├── index.rst
│       │   ├── intro.rst
│       │   ├── overview.rst
│       │   ├── run_app.rst
│       │   └── testpmd_funcs.rst
│       └── xen/
│           ├── index.rst
│           └── pkt_switch.rst
├── drivers/
│   ├── Makefile
│   └── net/
│       ├── Makefile
│       ├── af_packet/
│       │   ├── Makefile
│       │   ├── rte_eth_af_packet.c
│       │   └── rte_eth_af_packet.h
│       ├── bnx2x/
│       │   ├── Makefile
│       │   ├── bnx2x.c
│       │   ├── bnx2x.h
│       │   ├── bnx2x_ethdev.c
│       │   ├── bnx2x_ethdev.h
│       │   ├── bnx2x_logs.h
│       │   ├── bnx2x_rxtx.c
│       │   ├── bnx2x_rxtx.h
│       │   ├── bnx2x_stats.c
│       │   ├── bnx2x_stats.h
│       │   ├── bnx2x_vfpf.c
│       │   ├── bnx2x_vfpf.h
│       │   ├── debug.c
│       │   ├── ecore_fw_defs.h
│       │   ├── ecore_hsi.h
│       │   ├── ecore_init.h
│       │   ├── ecore_init_ops.h
│       │   ├── ecore_mfw_req.h
│       │   ├── ecore_reg.h
│       │   ├── ecore_sp.c
│       │   ├── ecore_sp.h
│       │   ├── elink.c
│       │   └── elink.h
│       ├── bonding/
│       │   ├── Makefile
│       │   ├── rte_eth_bond.h
│       │   ├── rte_eth_bond_8023ad.c
│       │   ├── rte_eth_bond_8023ad.h
│       │   ├── rte_eth_bond_8023ad_private.h
│       │   ├── rte_eth_bond_alb.c
│       │   ├── rte_eth_bond_alb.h
│       │   ├── rte_eth_bond_api.c
│       │   ├── rte_eth_bond_args.c
│       │   ├── rte_eth_bond_pmd.c
│       │   └── rte_eth_bond_private.h
│       ├── cxgbe/
│       │   ├── Makefile
│       │   ├── base/
│       │   │   ├── adapter.h
│       │   │   ├── common.h
│       │   │   ├── t4_chip_type.h
│       │   │   ├── t4_hw.c
│       │   │   ├── t4_hw.h
│       │   │   ├── t4_msg.h
│       │   │   ├── t4_pci_id_tbl.h
│       │   │   ├── t4_regs.h
│       │   │   ├── t4_regs_values.h
│       │   │   └── t4fw_interface.h
│       │   ├── cxgbe.h
│       │   ├── cxgbe_compat.h
│       │   ├── cxgbe_ethdev.c
│       │   ├── cxgbe_main.c
│       │   └── sge.c
│       ├── e1000/
│       │   ├── Makefile
│       │   ├── base/
│       │   │   ├── README
│       │   │   ├── e1000_80003es2lan.c
│       │   │   ├── e1000_80003es2lan.h
│       │   │   ├── e1000_82540.c
│       │   │   ├── e1000_82541.c
│       │   │   ├── e1000_82541.h
│       │   │   ├── e1000_82542.c
│       │   │   ├── e1000_82543.c
│       │   │   ├── e1000_82543.h
│       │   │   ├── e1000_82571.c
│       │   │   ├── e1000_82571.h
│       │   │   ├── e1000_82575.c
│       │   │   ├── e1000_82575.h
│       │   │   ├── e1000_api.c
│       │   │   ├── e1000_api.h
│       │   │   ├── e1000_defines.h
│       │   │   ├── e1000_hw.h
│       │   │   ├── e1000_i210.c
│       │   │   ├── e1000_i210.h
│       │   │   ├── e1000_ich8lan.c
│       │   │   ├── e1000_ich8lan.h
│       │   │   ├── e1000_mac.c
│       │   │   ├── e1000_mac.h
│       │   │   ├── e1000_manage.c
│       │   │   ├── e1000_manage.h
│       │   │   ├── e1000_mbx.c
│       │   │   ├── e1000_mbx.h
│       │   │   ├── e1000_nvm.c
│       │   │   ├── e1000_nvm.h
│       │   │   ├── e1000_osdep.c
│       │   │   ├── e1000_osdep.h
│       │   │   ├── e1000_phy.c
│       │   │   ├── e1000_phy.h
│       │   │   ├── e1000_regs.h
│       │   │   ├── e1000_vf.c
│       │   │   └── e1000_vf.h
│       │   ├── e1000_ethdev.h
│       │   ├── e1000_logs.h
│       │   ├── em_ethdev.c
│       │   ├── em_rxtx.c
│       │   ├── igb_ethdev.c
│       │   ├── igb_pf.c
│       │   ├── igb_regs.h
│       │   └── igb_rxtx.c
│       ├── enic/
│       │   ├── LICENSE
│       │   ├── Makefile
│       │   ├── base/
│       │   │   ├── cq_desc.h
│       │   │   ├── cq_enet_desc.h
│       │   │   ├── rq_enet_desc.h
│       │   │   ├── vnic_cq.c
│       │   │   ├── vnic_cq.h
│       │   │   ├── vnic_dev.c
│       │   │   ├── vnic_dev.h
│       │   │   ├── vnic_devcmd.h
│       │   │   ├── vnic_enet.h
│       │   │   ├── vnic_intr.c
│       │   │   ├── vnic_intr.h
│       │   │   ├── vnic_nic.h
│       │   │   ├── vnic_resource.h
│       │   │   ├── vnic_rq.c
│       │   │   ├── vnic_rq.h
│       │   │   ├── vnic_rss.c
│       │   │   ├── vnic_rss.h
│       │   │   ├── vnic_stats.h
│       │   │   ├── vnic_wq.c
│       │   │   ├── vnic_wq.h
│       │   │   └── wq_enet_desc.h
│       │   ├── enic.h
│       │   ├── enic_clsf.c
│       │   ├── enic_compat.h
│       │   ├── enic_ethdev.c
│       │   ├── enic_main.c
│       │   ├── enic_res.c
│       │   └── enic_res.h
│       ├── fm10k/
│       │   ├── Makefile
│       │   ├── base/
│       │   │   ├── fm10k_api.c
│       │   │   ├── fm10k_api.h
│       │   │   ├── fm10k_common.c
│       │   │   ├── fm10k_common.h
│       │   │   ├── fm10k_mbx.c
│       │   │   ├── fm10k_mbx.h
│       │   │   ├── fm10k_osdep.h
│       │   │   ├── fm10k_pf.c
│       │   │   ├── fm10k_pf.h
│       │   │   ├── fm10k_tlv.c
│       │   │   ├── fm10k_tlv.h
│       │   │   ├── fm10k_type.h
│       │   │   ├── fm10k_vf.c
│       │   │   └── fm10k_vf.h
│       │   ├── fm10k.h
│       │   ├── fm10k_ethdev.c
│       │   ├── fm10k_logs.h
│       │   └── fm10k_rxtx.c
│       ├── i40e/
│       │   ├── Makefile
│       │   ├── base/
│       │   │   ├── i40e_adminq.c
│       │   │   ├── i40e_adminq.h
│       │   │   ├── i40e_adminq_cmd.h
│       │   │   ├── i40e_alloc.h
│       │   │   ├── i40e_common.c
│       │   │   ├── i40e_dcb.c
│       │   │   ├── i40e_dcb.h
│       │   │   ├── i40e_diag.c
│       │   │   ├── i40e_diag.h
│       │   │   ├── i40e_hmc.c
│       │   │   ├── i40e_hmc.h
│       │   │   ├── i40e_lan_hmc.c
│       │   │   ├── i40e_lan_hmc.h
│       │   │   ├── i40e_nvm.c
│       │   │   ├── i40e_osdep.h
│       │   │   ├── i40e_prototype.h
│       │   │   ├── i40e_register.h
│       │   │   ├── i40e_status.h
│       │   │   ├── i40e_type.h
│       │   │   └── i40e_virtchnl.h
│       │   ├── i40e_ethdev.c
│       │   ├── i40e_ethdev.h
│       │   ├── i40e_ethdev_vf.c
│       │   ├── i40e_fdir.c
│       │   ├── i40e_logs.h
│       │   ├── i40e_pf.c
│       │   ├── i40e_pf.h
│       │   ├── i40e_rxtx.c
│       │   └── i40e_rxtx.h
│       ├── ixgbe/
│       │   ├── Makefile
│       │   ├── base/
│       │   │   ├── README
│       │   │   ├── ixgbe_82598.c
│       │   │   ├── ixgbe_82598.h
│       │   │   ├── ixgbe_82599.c
│       │   │   ├── ixgbe_82599.h
│       │   │   ├── ixgbe_api.c
│       │   │   ├── ixgbe_api.h
│       │   │   ├── ixgbe_common.c
│       │   │   ├── ixgbe_common.h
│       │   │   ├── ixgbe_dcb.c
│       │   │   ├── ixgbe_dcb.h
│       │   │   ├── ixgbe_dcb_82598.c
│       │   │   ├── ixgbe_dcb_82598.h
│       │   │   ├── ixgbe_dcb_82599.c
│       │   │   ├── ixgbe_dcb_82599.h
│       │   │   ├── ixgbe_mbx.c
│       │   │   ├── ixgbe_mbx.h
│       │   │   ├── ixgbe_osdep.h
│       │   │   ├── ixgbe_phy.c
│       │   │   ├── ixgbe_phy.h
│       │   │   ├── ixgbe_type.h
│       │   │   ├── ixgbe_vf.c
│       │   │   ├── ixgbe_vf.h
│       │   │   ├── ixgbe_x540.c
│       │   │   ├── ixgbe_x540.h
│       │   │   ├── ixgbe_x550.c
│       │   │   └── ixgbe_x550.h
│       │   ├── ixgbe_82599_bypass.c
│       │   ├── ixgbe_bypass.c
│       │   ├── ixgbe_bypass.h
│       │   ├── ixgbe_bypass_api.h
│       │   ├── ixgbe_bypass_defines.h
│       │   ├── ixgbe_ethdev.c
│       │   ├── ixgbe_ethdev.h
│       │   ├── ixgbe_fdir.c
│       │   ├── ixgbe_logs.h
│       │   ├── ixgbe_pf.c
│       │   ├── ixgbe_regs.h
│       │   ├── ixgbe_rxtx.c
│       │   ├── ixgbe_rxtx.h
│       │   └── ixgbe_rxtx_vec.c
│       ├── mlx4/
│       │   ├── Makefile
│       │   ├── mlx4.c
│       │   └── mlx4.h
│       ├── mpipe/
│       │   ├── Makefile
│       │   └── mpipe_tilegx.c
│       ├── null/
│       │   ├── Makefile
│       │   └── rte_eth_null.c
│       ├── pcap/
│       │   ├── Makefile
│       │   └── rte_eth_pcap.c
│       ├── ring/
│       │   ├── Makefile
│       │   ├── rte_eth_ring.c
│       │   └── rte_eth_ring.h
│       ├── virtio/
│       │   ├── Makefile
│       │   ├── virtio_ethdev.c
│       │   ├── virtio_ethdev.h
│       │   ├── virtio_logs.h
│       │   ├── virtio_pci.c
│       │   ├── virtio_pci.h
│       │   ├── virtio_ring.h
│       │   ├── virtio_rxtx.c
│       │   ├── virtqueue.c
│       │   └── virtqueue.h
│       ├── vmxnet3/
│       │   ├── Makefile
│       │   ├── base/
│       │   │   ├── README
│       │   │   ├── includeCheck.h
│       │   │   ├── upt1_defs.h
│       │   │   ├── vmware_pack_begin.h
│       │   │   ├── vmware_pack_end.h
│       │   │   ├── vmxnet3_defs.h
│       │   │   └── vmxnet3_osdep.h
│       │   ├── vmxnet3_ethdev.c
│       │   ├── vmxnet3_ethdev.h
│       │   ├── vmxnet3_logs.h
│       │   ├── vmxnet3_ring.h
│       │   └── vmxnet3_rxtx.c
│       └── xenvirt/
│           ├── Makefile
│           ├── rte_eth_xenvirt.c
│           ├── rte_eth_xenvirt.h
│           ├── rte_mempool_gntalloc.c
│           ├── rte_xen_lib.c
│           ├── rte_xen_lib.h
│           ├── virtio_logs.h
│           └── virtqueue.h
├── examples/
│   ├── Makefile
│   ├── bond/
│   │   ├── Makefile
│   │   ├── main.c
│   │   └── main.h
│   ├── cmdline/
│   │   ├── Makefile
│   │   ├── commands.c
│   │   ├── commands.h
│   │   ├── main.c
│   │   ├── parse_obj_list.c
│   │   └── parse_obj_list.h
│   ├── distributor/
│   │   ├── Makefile
│   │   └── main.c
│   ├── dpdk_qat/
│   │   ├── Makefile
│   │   ├── config_files/
│   │   │   ├── coleto/
│   │   │   │   └── dh895xcc_qa_dev0.conf
│   │   │   ├── shumway/
│   │   │   │   ├── dh89xxcc_qa_dev0.conf
│   │   │   │   └── dh89xxcc_qa_dev1.conf
│   │   │   └── stargo/
│   │   │       └── dh89xxcc_qa_dev0.conf
│   │   ├── crypto.c
│   │   ├── crypto.h
│   │   └── main.c
│   ├── exception_path/
│   │   ├── Makefile
│   │   └── main.c
│   ├── helloworld/
│   │   ├── Makefile
│   │   └── main.c
│   ├── ip_fragmentation/
│   │   ├── Makefile
│   │   └── main.c
│   ├── ip_pipeline/
│   │   ├── Makefile
│   │   ├── app.h
│   │   ├── config/
│   │   │   ├── ip_pipeline.cfg
│   │   │   ├── ip_pipeline.sh
│   │   │   └── tm_profile.cfg
│   │   ├── config_check.c
│   │   ├── config_parse.c
│   │   ├── config_parse_tm.c
│   │   ├── cpu_core_map.c
│   │   ├── cpu_core_map.h
│   │   ├── init.c
│   │   ├── main.c
│   │   ├── pipeline/
│   │   │   ├── hash_func.h
│   │   │   ├── pipeline_actions_common.h
│   │   │   ├── pipeline_common_be.c
│   │   │   ├── pipeline_common_be.h
│   │   │   ├── pipeline_common_fe.c
│   │   │   ├── pipeline_common_fe.h
│   │   │   ├── pipeline_firewall.c
│   │   │   ├── pipeline_firewall.h
│   │   │   ├── pipeline_firewall_be.c
│   │   │   ├── pipeline_firewall_be.h
│   │   │   ├── pipeline_flow_classification.c
│   │   │   ├── pipeline_flow_classification.h
│   │   │   ├── pipeline_flow_classification_be.c
│   │   │   ├── pipeline_flow_classification_be.h
│   │   │   ├── pipeline_master.c
│   │   │   ├── pipeline_master.h
│   │   │   ├── pipeline_master_be.c
│   │   │   ├── pipeline_master_be.h
│   │   │   ├── pipeline_passthrough.c
│   │   │   ├── pipeline_passthrough.h
│   │   │   ├── pipeline_passthrough_be.c
│   │   │   ├── pipeline_passthrough_be.h
│   │   │   ├── pipeline_routing.c
│   │   │   ├── pipeline_routing.h
│   │   │   ├── pipeline_routing_be.c
│   │   │   └── pipeline_routing_be.h
│   │   ├── pipeline.h
│   │   ├── pipeline_be.h
│   │   └── thread.c
│   ├── ip_reassembly/
│   │   ├── Makefile
│   │   └── main.c
│   ├── ipv4_multicast/
│   │   ├── Makefile
│   │   └── main.c
│   ├── kni/
│   │   ├── Makefile
│   │   └── main.c
│   ├── l2fwd/
│   │   ├── Makefile
│   │   └── main.c
│   ├── l2fwd-ivshmem/
│   │   ├── Makefile
│   │   ├── guest/
│   │   │   ├── Makefile
│   │   │   └── guest.c
│   │   ├── host/
│   │   │   ├── Makefile
│   │   │   └── host.c
│   │   └── include/
│   │       └── common.h
│   ├── l2fwd-jobstats/
│   │   ├── Makefile
│   │   └── main.c
│   ├── l3fwd/
│   │   ├── Makefile
│   │   └── main.c
│   ├── l3fwd-acl/
│   │   ├── Makefile
│   │   └── main.c
│   ├── l3fwd-power/
│   │   ├── Makefile
│   │   └── main.c
│   ├── l3fwd-vf/
│   │   ├── Makefile
│   │   └── main.c
│   ├── link_status_interrupt/
│   │   ├── Makefile
│   │   └── main.c
│   ├── load_balancer/
│   │   ├── Makefile
│   │   ├── config.c
│   │   ├── init.c
│   │   ├── main.c
│   │   ├── main.h
│   │   └── runtime.c
│   ├── multi_process/
│   │   ├── Makefile
│   │   ├── client_server_mp/
│   │   │   ├── Makefile
│   │   │   ├── mp_client/
│   │   │   │   ├── Makefile
│   │   │   │   └── client.c
│   │   │   ├── mp_server/
│   │   │   │   ├── Makefile
│   │   │   │   ├── args.c
│   │   │   │   ├── args.h
│   │   │   │   ├── init.c
│   │   │   │   ├── init.h
│   │   │   │   └── main.c
│   │   │   └── shared/
│   │   │       └── common.h
│   │   ├── l2fwd_fork/
│   │   │   ├── Makefile
│   │   │   ├── flib.c
│   │   │   ├── flib.h
│   │   │   └── main.c
│   │   ├── simple_mp/
│   │   │   ├── Makefile
│   │   │   ├── main.c
│   │   │   ├── mp_commands.c
│   │   │   └── mp_commands.h
│   │   └── symmetric_mp/
│   │       ├── Makefile
│   │       └── main.c
│   ├── netmap_compat/
│   │   ├── Makefile
│   │   ├── bridge/
│   │   │   ├── Makefile
│   │   │   └── bridge.c
│   │   ├── lib/
│   │   │   ├── compat_netmap.c
│   │   │   └── compat_netmap.h
│   │   └── netmap/
│   │       ├── netmap.h
│   │       └── netmap_user.h
│   ├── packet_ordering/
│   │   ├── Makefile
│   │   └── main.c
│   ├── qos_meter/
│   │   ├── Makefile
│   │   ├── main.c
│   │   ├── main.h
│   │   ├── rte_policer.c
│   │   └── rte_policer.h
│   ├── qos_sched/
│   │   ├── Makefile
│   │   ├── app_thread.c
│   │   ├── args.c
│   │   ├── cfg_file.c
│   │   ├── cfg_file.h
│   │   ├── cmdline.c
│   │   ├── init.c
│   │   ├── main.c
│   │   ├── main.h
│   │   ├── profile.cfg
│   │   ├── profile_ov.cfg
│   │   └── stats.c
│   ├── quota_watermark/
│   │   ├── Makefile
│   │   ├── include/
│   │   │   └── conf.h
│   │   ├── qw/
│   │   │   ├── Makefile
│   │   │   ├── args.c
│   │   │   ├── args.h
│   │   │   ├── init.c
│   │   │   ├── init.h
│   │   │   ├── main.c
│   │   │   └── main.h
│   │   └── qwctl/
│   │       ├── Makefile
│   │       ├── commands.c
│   │       ├── commands.h
│   │       ├── qwctl.c
│   │       └── qwctl.h
│   ├── rxtx_callbacks/
│   │   ├── Makefile
│   │   └── main.c
│   ├── skeleton/
│   │   ├── Makefile
│   │   └── basicfwd.c
│   ├── tep_termination/
│   │   ├── Makefile
│   │   ├── main.c
│   │   ├── main.h
│   │   ├── vxlan.c
│   │   ├── vxlan.h
│   │   ├── vxlan_setup.c
│   │   └── vxlan_setup.h
│   ├── timer/
│   │   ├── Makefile
│   │   └── main.c
│   ├── vhost/
│   │   ├── Makefile
│   │   ├── main.c
│   │   └── main.h
│   ├── vhost_xen/
│   │   ├── Makefile
│   │   ├── main.c
│   │   ├── main.h
│   │   ├── vhost_monitor.c
│   │   ├── virtio-net.h
│   │   ├── xen_vhost.h
│   │   └── xenstore_parse.c
│   ├── vm_power_manager/
│   │   ├── Makefile
│   │   ├── channel_manager.c
│   │   ├── channel_manager.h
│   │   ├── channel_monitor.c
│   │   ├── channel_monitor.h
│   │   ├── guest_cli/
│   │   │   ├── Makefile
│   │   │   ├── main.c
│   │   │   ├── vm_power_cli_guest.c
│   │   │   └── vm_power_cli_guest.h
│   │   ├── main.c
│   │   ├── power_manager.c
│   │   ├── power_manager.h
│   │   ├── vm_power_cli.c
│   │   └── vm_power_cli.h
│   ├── vmdq/
│   │   ├── Makefile
│   │   └── main.c
│   └── vmdq_dcb/
│       ├── Makefile
│       └── main.c
├── lib/
│   ├── Makefile
│   ├── librte_acl/
│   │   ├── Makefile
│   │   ├── acl.h
│   │   ├── acl_bld.c
│   │   ├── acl_gen.c
│   │   ├── acl_run.h
│   │   ├── acl_run_avx2.c
│   │   ├── acl_run_avx2.h
│   │   ├── acl_run_scalar.c
│   │   ├── acl_run_sse.c
│   │   ├── acl_run_sse.h
│   │   ├── acl_vect.h
│   │   ├── rte_acl.c
│   │   ├── rte_acl.h
│   │   ├── rte_acl_osdep.h
│   │   ├── tb_mem.c
│   │   └── tb_mem.h
│   ├── librte_cfgfile/
│   │   ├── Makefile
│   │   ├── rte_cfgfile.c
│   │   └── rte_cfgfile.h
│   ├── librte_cmdline/
│   │   ├── Makefile
│   │   ├── cmdline.c
│   │   ├── cmdline.h
│   │   ├── cmdline_cirbuf.c
│   │   ├── cmdline_cirbuf.h
│   │   ├── cmdline_parse.c
│   │   ├── cmdline_parse.h
│   │   ├── cmdline_parse_etheraddr.c
│   │   ├── cmdline_parse_etheraddr.h
│   │   ├── cmdline_parse_ipaddr.c
│   │   ├── cmdline_parse_ipaddr.h
│   │   ├── cmdline_parse_num.c
│   │   ├── cmdline_parse_num.h
│   │   ├── cmdline_parse_portlist.c
│   │   ├── cmdline_parse_portlist.h
│   │   ├── cmdline_parse_string.c
│   │   ├── cmdline_parse_string.h
│   │   ├── cmdline_rdline.c
│   │   ├── cmdline_rdline.h
│   │   ├── cmdline_socket.c
│   │   ├── cmdline_socket.h
│   │   ├── cmdline_vt100.c
│   │   └── cmdline_vt100.h
│   ├── librte_compat/
│   │   ├── Makefile
│   │   └── rte_compat.h
│   ├── librte_distributor/
│   │   ├── Makefile
│   │   ├── rte_distributor.c
│   │   └── rte_distributor.h
│   ├── librte_eal/
│   │   ├── Makefile
│   │   ├── bsdapp/
│   │   │   ├── Makefile
│   │   │   ├── contigmem/
│   │   │   │   ├── BSDmakefile
│   │   │   │   ├── Makefile
│   │   │   │   └── contigmem.c
│   │   │   ├── eal/
│   │   │   │   ├── Makefile
│   │   │   │   ├── eal.c
│   │   │   │   ├── eal_alarm.c
│   │   │   │   ├── eal_debug.c
│   │   │   │   ├── eal_hugepage_info.c
│   │   │   │   ├── eal_interrupts.c
│   │   │   │   ├── eal_lcore.c
│   │   │   │   ├── eal_log.c
│   │   │   │   ├── eal_memory.c
│   │   │   │   ├── eal_pci.c
│   │   │   │   ├── eal_thread.c
│   │   │   │   ├── eal_timer.c
│   │   │   │   └── include/
│   │   │   │       └── exec-env/
│   │   │   │           ├── rte_dom0_common.h
│   │   │   │           └── rte_interrupts.h
│   │   │   └── nic_uio/
│   │   │       ├── BSDmakefile
│   │   │       ├── Makefile
│   │   │       └── nic_uio.c
│   │   ├── common/
│   │   │   ├── Makefile
│   │   │   ├── eal_common_cpuflags.c
│   │   │   ├── eal_common_dev.c
│   │   │   ├── eal_common_devargs.c
│   │   │   ├── eal_common_errno.c
│   │   │   ├── eal_common_hexdump.c
│   │   │   ├── eal_common_launch.c
│   │   │   ├── eal_common_lcore.c
│   │   │   ├── eal_common_log.c
│   │   │   ├── eal_common_memory.c
│   │   │   ├── eal_common_memzone.c
│   │   │   ├── eal_common_options.c
│   │   │   ├── eal_common_pci.c
│   │   │   ├── eal_common_pci_uio.c
│   │   │   ├── eal_common_string_fns.c
│   │   │   ├── eal_common_tailqs.c
│   │   │   ├── eal_common_thread.c
│   │   │   ├── eal_common_timer.c
│   │   │   ├── eal_filesystem.h
│   │   │   ├── eal_hugepages.h
│   │   │   ├── eal_internal_cfg.h
│   │   │   ├── eal_options.h
│   │   │   ├── eal_private.h
│   │   │   ├── eal_thread.h
│   │   │   ├── include/
│   │   │   │   ├── arch/
│   │   │   │   │   ├── ppc_64/
│   │   │   │   │   │   ├── rte_atomic.h
│   │   │   │   │   │   ├── rte_byteorder.h
│   │   │   │   │   │   ├── rte_cpuflags.h
│   │   │   │   │   │   ├── rte_cycles.h
│   │   │   │   │   │   ├── rte_memcpy.h
│   │   │   │   │   │   ├── rte_prefetch.h
│   │   │   │   │   │   ├── rte_rwlock.h
│   │   │   │   │   │   └── rte_spinlock.h
│   │   │   │   │   ├── tile/
│   │   │   │   │   │   ├── rte_atomic.h
│   │   │   │   │   │   ├── rte_byteorder.h
│   │   │   │   │   │   ├── rte_cpuflags.h
│   │   │   │   │   │   ├── rte_cycles.h
│   │   │   │   │   │   ├── rte_memcpy.h
│   │   │   │   │   │   ├── rte_prefetch.h
│   │   │   │   │   │   ├── rte_rwlock.h
│   │   │   │   │   │   └── rte_spinlock.h
│   │   │   │   │   └── x86/
│   │   │   │   │       ├── rte_atomic.h
│   │   │   │   │       ├── rte_atomic_32.h
│   │   │   │   │       ├── rte_atomic_64.h
│   │   │   │   │       ├── rte_byteorder.h
│   │   │   │   │       ├── rte_byteorder_32.h
│   │   │   │   │       ├── rte_byteorder_64.h
│   │   │   │   │       ├── rte_cpuflags.h
│   │   │   │   │       ├── rte_cycles.h
│   │   │   │   │       ├── rte_memcpy.h
│   │   │   │   │       ├── rte_prefetch.h
│   │   │   │   │       ├── rte_rtm.h
│   │   │   │   │       ├── rte_rwlock.h
│   │   │   │   │       ├── rte_spinlock.h
│   │   │   │   │       └── rte_vect.h
│   │   │   │   ├── generic/
│   │   │   │   │   ├── rte_atomic.h
│   │   │   │   │   ├── rte_byteorder.h
│   │   │   │   │   ├── rte_cpuflags.h
│   │   │   │   │   ├── rte_cycles.h
│   │   │   │   │   ├── rte_memcpy.h
│   │   │   │   │   ├── rte_prefetch.h
│   │   │   │   │   ├── rte_rwlock.h
│   │   │   │   │   └── rte_spinlock.h
│   │   │   │   ├── rte_alarm.h
│   │   │   │   ├── rte_branch_prediction.h
│   │   │   │   ├── rte_common.h
│   │   │   │   ├── rte_debug.h
│   │   │   │   ├── rte_dev.h
│   │   │   │   ├── rte_devargs.h
│   │   │   │   ├── rte_eal.h
│   │   │   │   ├── rte_eal_memconfig.h
│   │   │   │   ├── rte_errno.h
│   │   │   │   ├── rte_hexdump.h
│   │   │   │   ├── rte_interrupts.h
│   │   │   │   ├── rte_launch.h
│   │   │   │   ├── rte_lcore.h
│   │   │   │   ├── rte_log.h
│   │   │   │   ├── rte_malloc.h
│   │   │   │   ├── rte_malloc_heap.h
│   │   │   │   ├── rte_memory.h
│   │   │   │   ├── rte_memzone.h
│   │   │   │   ├── rte_pci.h
│   │   │   │   ├── rte_pci_dev_feature_defs.h
│   │   │   │   ├── rte_pci_dev_features.h
│   │   │   │   ├── rte_pci_dev_ids.h
│   │   │   │   ├── rte_per_lcore.h
│   │   │   │   ├── rte_random.h
│   │   │   │   ├── rte_string_fns.h
│   │   │   │   ├── rte_tailq.h
│   │   │   │   ├── rte_version.h
│   │   │   │   └── rte_warnings.h
│   │   │   ├── malloc_elem.c
│   │   │   ├── malloc_elem.h
│   │   │   ├── malloc_heap.c
│   │   │   ├── malloc_heap.h
│   │   │   └── rte_malloc.c
│   │   └── linuxapp/
│   │       ├── Makefile
│   │       ├── eal/
│   │       │   ├── Makefile
│   │       │   ├── eal.c
│   │       │   ├── eal_alarm.c
│   │       │   ├── eal_debug.c
│   │       │   ├── eal_hugepage_info.c
│   │       │   ├── eal_interrupts.c
│   │       │   ├── eal_ivshmem.c
│   │       │   ├── eal_lcore.c
│   │       │   ├── eal_log.c
│   │       │   ├── eal_memory.c
│   │       │   ├── eal_pci.c
│   │       │   ├── eal_pci_init.h
│   │       │   ├── eal_pci_uio.c
│   │       │   ├── eal_pci_vfio.c
│   │       │   ├── eal_pci_vfio_mp_sync.c
│   │       │   ├── eal_thread.c
│   │       │   ├── eal_timer.c
│   │       │   ├── eal_vfio.h
│   │       │   ├── eal_xen_memory.c
│   │       │   └── include/
│   │       │       └── exec-env/
│   │       │           ├── rte_dom0_common.h
│   │       │           ├── rte_interrupts.h
│   │       │           └── rte_kni_common.h
│   │       ├── igb_uio/
│   │       │   ├── Makefile
│   │       │   ├── compat.h
│   │       │   └── igb_uio.c
│   │       ├── kni/
│   │       │   ├── Makefile
│   │       │   ├── compat.h
│   │       │   ├── ethtool/
│   │       │   │   ├── README
│   │       │   │   ├── igb/
│   │       │   │   │   ├── COPYING
│   │       │   │   │   ├── e1000_82575.c
│   │       │   │   │   ├── e1000_82575.h
│   │       │   │   │   ├── e1000_api.c
│   │       │   │   │   ├── e1000_api.h
│   │       │   │   │   ├── e1000_defines.h
│   │       │   │   │   ├── e1000_hw.h
│   │       │   │   │   ├── e1000_i210.c
│   │       │   │   │   ├── e1000_i210.h
│   │       │   │   │   ├── e1000_mac.c
│   │       │   │   │   ├── e1000_mac.h
│   │       │   │   │   ├── e1000_manage.c
│   │       │   │   │   ├── e1000_manage.h
│   │       │   │   │   ├── e1000_mbx.c
│   │       │   │   │   ├── e1000_mbx.h
│   │       │   │   │   ├── e1000_nvm.c
│   │       │   │   │   ├── e1000_nvm.h
│   │       │   │   │   ├── e1000_osdep.h
│   │       │   │   │   ├── e1000_phy.c
│   │       │   │   │   ├── e1000_phy.h
│   │       │   │   │   ├── e1000_regs.h
│   │       │   │   │   ├── igb.h
│   │       │   │   │   ├── igb_debugfs.c
│   │       │   │   │   ├── igb_ethtool.c
│   │       │   │   │   ├── igb_hwmon.c
│   │       │   │   │   ├── igb_main.c
│   │       │   │   │   ├── igb_param.c
│   │       │   │   │   ├── igb_procfs.c
│   │       │   │   │   ├── igb_ptp.c
│   │       │   │   │   ├── igb_regtest.h
│   │       │   │   │   ├── igb_vmdq.c
│   │       │   │   │   ├── igb_vmdq.h
│   │       │   │   │   ├── kcompat.c
│   │       │   │   │   ├── kcompat.h
│   │       │   │   │   └── kcompat_ethtool.c
│   │       │   │   └── ixgbe/
│   │       │   │       ├── COPYING
│   │       │   │       ├── ixgbe.h
│   │       │   │       ├── ixgbe_82598.c
│   │       │   │       ├── ixgbe_82598.h
│   │       │   │       ├── ixgbe_82599.c
│   │       │   │       ├── ixgbe_82599.h
│   │       │   │       ├── ixgbe_api.c
│   │       │   │       ├── ixgbe_api.h
│   │       │   │       ├── ixgbe_common.c
│   │       │   │       ├── ixgbe_common.h
│   │       │   │       ├── ixgbe_dcb.h
│   │       │   │       ├── ixgbe_ethtool.c
│   │       │   │       ├── ixgbe_fcoe.h
│   │       │   │       ├── ixgbe_main.c
│   │       │   │       ├── ixgbe_mbx.h
│   │       │   │       ├── ixgbe_osdep.h
│   │       │   │       ├── ixgbe_phy.c
│   │       │   │       ├── ixgbe_phy.h
│   │       │   │       ├── ixgbe_sriov.h
│   │       │   │       ├── ixgbe_type.h
│   │       │   │       ├── ixgbe_x540.c
│   │       │   │       ├── ixgbe_x540.h
│   │       │   │       ├── kcompat.c
│   │       │   │       └── kcompat.h
│   │       │   ├── kni_dev.h
│   │       │   ├── kni_ethtool.c
│   │       │   ├── kni_fifo.h
│   │       │   ├── kni_misc.c
│   │       │   ├── kni_net.c
│   │       │   └── kni_vhost.c
│   │       └── xen_dom0/
│   │           ├── Makefile
│   │           ├── compat.h
│   │           ├── dom0_mm_dev.h
│   │           └── dom0_mm_misc.c
│   ├── librte_ether/
│   │   ├── Makefile
│   │   ├── rte_dev_info.h
│   │   ├── rte_eth_ctrl.h
│   │   ├── rte_ethdev.c
│   │   ├── rte_ethdev.h
│   │   └── rte_ether.h
│   ├── librte_hash/
│   │   ├── Makefile
│   │   ├── rte_cmp_x86.h
│   │   ├── rte_cuckoo_hash.c
│   │   ├── rte_fbk_hash.c
│   │   ├── rte_fbk_hash.h
│   │   ├── rte_hash.h
│   │   ├── rte_hash_crc.h
│   │   ├── rte_jhash.h
│   │   └── rte_thash.h
│   ├── librte_ip_frag/
│   │   ├── Makefile
│   │   ├── ip_frag_common.h
│   │   ├── ip_frag_internal.c
│   │   ├── rte_ip_frag.h
│   │   ├── rte_ip_frag_common.c
│   │   ├── rte_ipv4_fragmentation.c
│   │   ├── rte_ipv4_reassembly.c
│   │   ├── rte_ipv6_fragmentation.c
│   │   └── rte_ipv6_reassembly.c
│   ├── librte_ivshmem/
│   │   ├── Makefile
│   │   ├── rte_ivshmem.c
│   │   └── rte_ivshmem.h
│   ├── librte_jobstats/
│   │   ├── Makefile
│   │   ├── rte_jobstats.c
│   │   └── rte_jobstats.h
│   ├── librte_kni/
│   │   ├── Makefile
│   │   ├── rte_kni.c
│   │   ├── rte_kni.h
│   │   └── rte_kni_fifo.h
│   ├── librte_kvargs/
│   │   ├── Makefile
│   │   ├── rte_kvargs.c
│   │   └── rte_kvargs.h
│   ├── librte_lpm/
│   │   ├── Makefile
│   │   ├── rte_lpm.c
│   │   ├── rte_lpm.h
│   │   ├── rte_lpm6.c
│   │   └── rte_lpm6.h
│   ├── librte_malloc/
│   │   ├── Makefile
│   │   └── rte_malloc_empty.c
│   ├── librte_mbuf/
│   │   ├── Makefile
│   │   ├── rte_mbuf.c
│   │   └── rte_mbuf.h
│   ├── librte_mempool/
│   │   ├── Makefile
│   │   ├── rte_dom0_mempool.c
│   │   ├── rte_mempool.c
│   │   └── rte_mempool.h
│   ├── librte_meter/
│   │   ├── Makefile
│   │   ├── rte_meter.c
│   │   └── rte_meter.h
│   ├── librte_net/
│   │   ├── Makefile
│   │   ├── rte_arp.h
│   │   ├── rte_icmp.h
│   │   ├── rte_ip.h
│   │   ├── rte_sctp.h
│   │   ├── rte_tcp.h
│   │   └── rte_udp.h
│   ├── librte_pipeline/
│   │   ├── Makefile
│   │   ├── rte_pipeline.c
│   │   └── rte_pipeline.h
│   ├── librte_port/
│   │   ├── Makefile
│   │   ├── rte_port.h
│   │   ├── rte_port_ethdev.c
│   │   ├── rte_port_ethdev.h
│   │   ├── rte_port_frag.c
│   │   ├── rte_port_frag.h
│   │   ├── rte_port_ras.c
│   │   ├── rte_port_ras.h
│   │   ├── rte_port_ring.c
│   │   ├── rte_port_ring.h
│   │   ├── rte_port_sched.c
│   │   ├── rte_port_sched.h
│   │   ├── rte_port_source_sink.c
│   │   └── rte_port_source_sink.h
│   ├── librte_power/
│   │   ├── Makefile
│   │   ├── channel_commands.h
│   │   ├── guest_channel.c
│   │   ├── guest_channel.h
│   │   ├── rte_power.c
│   │   ├── rte_power.h
│   │   ├── rte_power_acpi_cpufreq.c
│   │   ├── rte_power_acpi_cpufreq.h
│   │   ├── rte_power_common.h
│   │   ├── rte_power_kvm_vm.c
│   │   └── rte_power_kvm_vm.h
│   ├── librte_reorder/
│   │   ├── Makefile
│   │   ├── rte_reorder.c
│   │   └── rte_reorder.h
│   ├── librte_ring/
│   │   ├── Makefile
│   │   ├── rte_ring.c
│   │   └── rte_ring.h
│   ├── librte_sched/
│   │   ├── Makefile
│   │   ├── rte_approx.c
│   │   ├── rte_approx.h
│   │   ├── rte_bitmap.h
│   │   ├── rte_red.c
│   │   ├── rte_red.h
│   │   ├── rte_sched.c
│   │   ├── rte_sched.h
│   │   └── rte_sched_common.h
│   ├── librte_table/
│   │   ├── Makefile
│   │   ├── rte_lru.h
│   │   ├── rte_table.h
│   │   ├── rte_table_acl.c
│   │   ├── rte_table_acl.h
│   │   ├── rte_table_array.c
│   │   ├── rte_table_array.h
│   │   ├── rte_table_hash.h
│   │   ├── rte_table_hash_ext.c
│   │   ├── rte_table_hash_key16.c
│   │   ├── rte_table_hash_key32.c
│   │   ├── rte_table_hash_key8.c
│   │   ├── rte_table_hash_lru.c
│   │   ├── rte_table_lpm.c
│   │   ├── rte_table_lpm.h
│   │   ├── rte_table_lpm_ipv6.c
│   │   ├── rte_table_lpm_ipv6.h
│   │   ├── rte_table_stub.c
│   │   └── rte_table_stub.h
│   ├── librte_timer/
│   │   ├── Makefile
│   │   ├── rte_timer.c
│   │   └── rte_timer.h
│   └── librte_vhost/
│       ├── Makefile
│       ├── eventfd_link/
│       │   ├── Makefile
│       │   ├── eventfd_link.c
│       │   └── eventfd_link.h
│       ├── libvirt/
│       │   └── qemu-wrap.py
│       ├── rte_virtio_net.h
│       ├── vhost-net.h
│       ├── vhost_cuse/
│       │   ├── eventfd_copy.c
│       │   ├── eventfd_copy.h
│       │   ├── vhost-net-cdev.c
│       │   ├── virtio-net-cdev.c
│       │   └── virtio-net-cdev.h
│       ├── vhost_rxtx.c
│       ├── vhost_user/
│       │   ├── fd_man.c
│       │   ├── fd_man.h
│       │   ├── vhost-net-user.c
│       │   ├── vhost-net-user.h
│       │   ├── virtio-net-user.c
│       │   └── virtio-net-user.h
│       ├── virtio-net.c
│       └── virtio-net.h
├── mk/
│   ├── arch/
│   │   ├── i686/
│   │   │   └── rte.vars.mk
│   │   ├── ppc_64/
│   │   │   └── rte.vars.mk
│   │   ├── tile/
│   │   │   └── rte.vars.mk
│   │   ├── x86_64/
│   │   │   └── rte.vars.mk
│   │   └── x86_x32/
│   │       └── rte.vars.mk
│   ├── exec-env/
│   │   ├── bsdapp/
│   │   │   ├── rte.app.mk
│   │   │   └── rte.vars.mk
│   │   └── linuxapp/
│   │       ├── rte.app.mk
│   │       └── rte.vars.mk
│   ├── internal/
│   │   ├── rte.build-post.mk
│   │   ├── rte.build-pre.mk
│   │   ├── rte.clean-post.mk
│   │   ├── rte.clean-pre.mk
│   │   ├── rte.compile-post.mk
│   │   ├── rte.compile-pre.mk
│   │   ├── rte.depdirs-post.mk
│   │   ├── rte.depdirs-pre.mk
│   │   ├── rte.extvars.mk
│   │   ├── rte.install-post.mk
│   │   └── rte.install-pre.mk
│   ├── machine/
│   │   ├── atm/
│   │   │   └── rte.vars.mk
│   │   ├── default/
│   │   │   └── rte.vars.mk
│   │   ├── hsw/
│   │   │   └── rte.vars.mk
│   │   ├── ivb/
│   │   │   └── rte.vars.mk
│   │   ├── native/
│   │   │   └── rte.vars.mk
│   │   ├── nhm/
│   │   │   └── rte.vars.mk
│   │   ├── power8/
│   │   │   └── rte.vars.mk
│   │   ├── snb/
│   │   │   └── rte.vars.mk
│   │   ├── tilegx/
│   │   │   └── rte.vars.mk
│   │   └── wsm/
│   │       └── rte.vars.mk
│   ├── rte.app.mk
│   ├── rte.bsdmodule.mk
│   ├── rte.cpuflags.mk
│   ├── rte.extapp.mk
│   ├── rte.extlib.mk
│   ├── rte.extobj.mk
│   ├── rte.extshared.mk
│   ├── rte.extsubdir.mk
│   ├── rte.gnuconfigure.mk
│   ├── rte.hostapp.mk
│   ├── rte.hostlib.mk
│   ├── rte.install.mk
│   ├── rte.lib.mk
│   ├── rte.module.mk
│   ├── rte.obj.mk
│   ├── rte.sdkbuild.mk
│   ├── rte.sdkconfig.mk
│   ├── rte.sdkdepdirs.mk
│   ├── rte.sdkdoc.mk
│   ├── rte.sdkexamples.mk
│   ├── rte.sdkgcov.mk
│   ├── rte.sdkinstall.mk
│   ├── rte.sdkroot.mk
│   ├── rte.sdktest.mk
│   ├── rte.sdktestall.mk
│   ├── rte.shared.mk
│   ├── rte.sharelib.mk
│   ├── rte.subdir.mk
│   ├── rte.vars.mk
│   ├── target/
│   │   └── generic/
│   │       ├── rte.app.mk
│   │       └── rte.vars.mk
│   └── toolchain/
│       ├── clang/
│       │   ├── rte.toolchain-compat.mk
│       │   └── rte.vars.mk
│       ├── gcc/
│       │   ├── rte.toolchain-compat.mk
│       │   └── rte.vars.mk
│       └── icc/
│           ├── rte.toolchain-compat.mk
│           └── rte.vars.mk
├── pkg/
│   └── dpdk.spec
├── scripts/
│   ├── auto-config-h.sh
│   ├── check-maintainers.sh
│   ├── cocci/
│   │   └── mtod-offset.cocci
│   ├── cocci.sh
│   ├── depdirs-rule.sh
│   ├── gen-build-mk.sh
│   ├── gen-config-h.sh
│   ├── relpath.sh
│   ├── test-null.sh
│   └── validate-abi.sh
└── tools/
    ├── cpu_layout.py
    ├── dpdk_nic_bind.py
    └── setup.sh
Download .txt
Showing preview only (1,317K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (19458 symbols across 806 files)

FILE: app/cmdline_test/cmdline_test.c
  function main (line 51) | int

FILE: app/cmdline_test/cmdline_test.py
  function runTest (line 41) | def runTest(child,test):
  function runHistoryTest (line 59) | def runHistoryTest(child):

FILE: app/cmdline_test/commands.c
  type cmd_quit_result (line 50) | struct cmd_quit_result {
  function cmd_quit_parsed (line 54) | static void
  type cmd_single_result (line 81) | struct cmd_single_result {
  function cmd_single_parsed (line 85) | static void
  type cmd_single_long_result (line 112) | struct cmd_single_long_result {
  function cmd_single_long_parsed (line 116) | static void
  type cmd_autocomplete_1_result (line 145) | struct cmd_autocomplete_1_result {
  function cmd_autocomplete_1_parsed (line 149) | static void
  type cmd_autocomplete_2_result (line 178) | struct cmd_autocomplete_2_result {
  function cmd_autocomplete_2_parsed (line 182) | static void
  type cmd_num_result (line 209) | struct cmd_num_result {
  function cmd_num_parsed (line 213) | static void
  type cmd_ambig_result_1 (line 240) | struct cmd_ambig_result_1 {
  function cmd_ambig_1_parsed (line 245) | static void
  type cmd_ambig_result_2 (line 276) | struct cmd_ambig_result_2 {
  function cmd_ambig_2_parsed (line 281) | static void
  type cmd_get_history_bufsize_result (line 315) | struct cmd_get_history_bufsize_result {
  function cmd_get_history_bufsize_parsed (line 319) | static void
  type cmd_clear_history_result (line 347) | struct cmd_clear_history_result {
  function cmd_clear_history_parsed (line 351) | static void

FILE: app/proc_info/main.c
  function proc_info_usage (line 80) | static void
  function parse_portmask (line 97) | static int
  function proc_info_parse_args (line 121) | static int
  function meminfo_display (line 181) | static void
  function nic_stats_display (line 197) | static void
  function nic_stats_clear (line 236) | static void
  function nic_xstats_display (line 244) | static void
  function nic_xstats_clear (line 281) | static void
  function main (line 289) | int

FILE: app/test-acl/main.c
  type acl_alg (line 86) | struct acl_alg {
  type acl_alg (line 91) | struct acl_alg
  type acl_alg (line 120) | struct acl_alg
  type rte_acl_ctx (line 123) | struct rte_acl_ctx
  type rte_acl_param (line 139) | struct rte_acl_param
  type ipv4_5tuple (line 148) | struct ipv4_5tuple {
  type rte_acl_field_def (line 165) | struct rte_acl_field_def
  type ipv4_5tuple (line 171) | struct ipv4_5tuple
  type ipv4_5tuple (line 178) | struct ipv4_5tuple
  type ipv4_5tuple (line 185) | struct ipv4_5tuple
  type ipv4_5tuple (line 192) | struct ipv4_5tuple
  type ipv4_5tuple (line 199) | struct ipv4_5tuple
  type ipv6_5tuple (line 207) | struct ipv6_5tuple {
  type rte_acl_field_def (line 230) | struct rte_acl_field_def
  type ipv6_5tuple (line 236) | struct ipv6_5tuple
  type ipv6_5tuple (line 243) | struct ipv6_5tuple
  type ipv6_5tuple (line 250) | struct ipv6_5tuple
  type ipv6_5tuple (line 257) | struct ipv6_5tuple
  type ipv6_5tuple (line 264) | struct ipv6_5tuple
  type ipv6_5tuple (line 271) | struct ipv6_5tuple
  type ipv6_5tuple (line 278) | struct ipv6_5tuple
  type ipv6_5tuple (line 285) | struct ipv6_5tuple
  type ipv6_5tuple (line 292) | struct ipv6_5tuple
  type ipv6_5tuple (line 299) | struct ipv6_5tuple
  type ipv6_5tuple (line 306) | struct ipv6_5tuple
  function parse_cb_ipv4_trace (line 351) | static int
  function parse_ipv6_addr (line 385) | static int
  function parse_cb_ipv6_addr_trace (line 410) | static int
  function parse_cb_ipv6_trace (line 434) | static int
  function tracef_init (line 470) | static void
  function parse_ipv6_net (line 519) | static int
  function parse_cb_ipv6_rule (line 550) | static int
  function parse_ipv4_net (line 620) | static int
  function parse_cb_ipv4_rule (line 645) | static int
  type acl_rule (line 719) | struct acl_rule
  function add_cb_rules (line 721) | static int
  function acx_init (line 759) | static void
  function search_ip5tuples_once (line 820) | static uint32_t
  function search_ip5tuples (line 863) | static int
  function get_ulong_opt (line 888) | static unsigned long
  function get_alg_opt (line 902) | static void
  function print_usage (line 918) | static void
  function dump_config (line 965) | static void
  function check_config (line 984) | static void
  function get_input_opts (line 995) | static void
  function main (line 1067) | int

FILE: app/test-pipeline/config.c
  type app_params (line 77) | struct app_params
  function app_print_usage (line 81) | void
  function app_parse_port_mask (line 87) | static int
  function app_parse_args (line 145) | int

FILE: app/test-pipeline/init.c
  type app_params (line 77) | struct app_params
  type rte_eth_conf (line 101) | struct rte_eth_conf
  type rte_eth_rxconf (line 121) | struct rte_eth_rxconf
  type rte_eth_txconf (line 131) | struct rte_eth_txconf
  function app_init_mbuf_pools (line 141) | static void
  function app_init_rings (line 152) | static void
  function app_ports_check_link (line 189) | static void
  function app_init_ports (line 216) | static void
  function app_init (line 272) | void

FILE: app/test-pipeline/main.c
  function main (line 77) | int
  function app_lcore_main_loop (line 110) | int

FILE: app/test-pipeline/main.h
  type app_mbuf_array (line 41) | struct app_mbuf_array {
  type app_params (line 50) | struct app_params {
  type app_params (line 90) | struct app_params

FILE: app/test-pipeline/pipeline_acl.c
  type rte_acl_field_def (line 65) | struct rte_acl_field_def
  type ether_hdr (line 71) | struct ether_hdr
  type ipv4_hdr (line 72) | struct ipv4_hdr
  type ether_hdr (line 79) | struct ether_hdr
  type ipv4_hdr (line 80) | struct ipv4_hdr
  type ether_hdr (line 87) | struct ether_hdr
  type ipv4_hdr (line 88) | struct ipv4_hdr
  type ether_hdr (line 95) | struct ether_hdr
  type ipv4_hdr (line 95) | struct ipv4_hdr
  type ether_hdr (line 102) | struct ether_hdr
  type ipv4_hdr (line 102) | struct ipv4_hdr
  function app_main_loop_worker_pipeline_acl (line 109) | void

FILE: app/test-pipeline/pipeline_hash.c
  function translate_options (line 50) | static void
  function app_main_loop_worker_pipeline_hash (line 84) | void
  function test_hash (line 416) | uint64_t test_hash(
  function app_main_loop_rx_metadata (line 428) | void

FILE: app/test-pipeline/pipeline_lpm.c
  function app_main_loop_worker_pipeline_lpm (line 50) | void

FILE: app/test-pipeline/pipeline_lpm_ipv6.c
  function app_main_loop_worker_pipeline_lpm_ipv6 (line 50) | void

FILE: app/test-pipeline/pipeline_stub.c
  function app_main_loop_worker_pipeline_stub (line 45) | void

FILE: app/test-pipeline/runtime.c
  function app_main_loop_rx (line 77) | void
  function app_main_loop_worker (line 105) | void
  function app_main_loop_tx (line 138) | void

FILE: app/test-pmd/cmdline.c
  type cmd_help_brief_result (line 100) | struct cmd_help_brief_result {
  function cmd_help_brief_parsed (line 104) | static void cmd_help_brief_parsed(__attribute__((unused)) void *parsed_r...
  type cmd_help_long_result (line 138) | struct cmd_help_long_result {
  function cmd_help_long_parsed (line 143) | static void cmd_help_long_parsed(void *parsed_result,
  type cmd_operate_port_result (line 718) | struct cmd_operate_port_result {
  function cmd_operate_port_parsed (line 724) | static void cmd_operate_port_parsed(void *parsed_result,
  type cmd_operate_specific_port_result (line 762) | struct cmd_operate_specific_port_result {
  function cmd_operate_specific_port_parsed (line 768) | static void cmd_operate_specific_port_parsed(void *parsed_result,
  type cmd_operate_attach_port_result (line 807) | struct cmd_operate_attach_port_result {
  function cmd_operate_attach_port_parsed (line 813) | static void cmd_operate_attach_port_parsed(void *parsed_result,
  type cmd_operate_detach_port_result (line 849) | struct cmd_operate_detach_port_result {
  function cmd_operate_detach_port_parsed (line 855) | static void cmd_operate_detach_port_parsed(void *parsed_result,
  type cmd_config_speed_all (line 890) | struct cmd_config_speed_all {
  function cmd_config_speed_all_parsed (line 900) | static void
  type cmd_config_speed_specific (line 987) | struct cmd_config_speed_specific {
  function cmd_config_speed_specific_parsed (line 997) | static void
  type cmd_config_rx_tx (line 1088) | struct cmd_config_rx_tx {
  function cmd_config_rx_tx_parsed (line 1096) | static void
  type cmd_config_max_pkt_len_result (line 1173) | struct cmd_config_max_pkt_len_result {
  function cmd_config_max_pkt_len_parsed (line 1181) | static void
  type cmd_config_mtu_result (line 1248) | struct cmd_config_mtu_result {
  function cmd_config_mtu_parsed (line 1256) | static void
  type cmd_config_rx_mode_flag (line 1299) | struct cmd_config_rx_mode_flag {
  function cmd_config_rx_mode_flag_parsed (line 1307) | static void
  type cmd_config_rss (line 1427) | struct cmd_config_rss {
  function cmd_config_rss_parsed (line 1435) | static void
  type cmd_config_rss_hash_key (line 1496) | struct cmd_config_rss_hash_key {
  function hexa_digit_to_value (line 1505) | static uint8_t
  function parse_and_check_key_hexa_digit (line 1518) | static uint8_t
  function cmd_config_rss_hash_key_parsed (line 1530) | static void
  type cmd_config_rxtx_queue (line 1589) | struct cmd_config_rxtx_queue {
  function cmd_config_rxtx_queue_parsed (line 1597) | static void
  type cmd_config_rss_reta (line 1683) | struct cmd_config_rss_reta {
  function parse_reta_config (line 1692) | static int
  function cmd_set_rss_reta_parsed (line 1749) | static void
  type cmd_showport_reta (line 1819) | struct cmd_showport_reta {
  function showport_parse_reta_config (line 1829) | static int
  function cmd_showport_reta_parsed (line 1867) | static void
  type cmd_showport_rss_hash (line 1927) | struct cmd_showport_rss_hash {
  function cmd_showport_rss_hash_parsed (line 1935) | static void cmd_showport_rss_hash_parsed(void *parsed_result,
  type cmd_config_dcb (line 1984) | struct cmd_config_dcb {
  function cmd_config_dcb_parsed (line 1996) | static void
  type cmd_config_burst (line 2077) | struct cmd_config_burst {
  function cmd_config_burst_parsed (line 2085) | static void
  type cmd_config_thresh (line 2139) | struct cmd_config_thresh {
  function cmd_config_thresh_parsed (line 2147) | static void
  type cmd_config_threshold (line 2208) | struct cmd_config_threshold {
  function cmd_config_threshold_parsed (line 2216) | static void
  type cmd_stop_result (line 2272) | struct cmd_stop_result {
  function cmd_stop_parsed (line 2276) | static void cmd_stop_parsed(__attribute__((unused)) void *parsed_result,
  function parse_item_list (line 2298) | unsigned int
  type cmd_set_list_result (line 2362) | struct cmd_set_list_result {
  function cmd_set_list_parsed (line 2368) | static void cmd_set_list_parsed(void *parsed_result,
  type cmd_setmask_result (line 2426) | struct cmd_setmask_result {
  function cmd_set_mask_parsed (line 2432) | static void cmd_set_mask_parsed(void *parsed_result,
  type cmd_set_result (line 2471) | struct cmd_set_result {
  function cmd_set_parsed (line 2477) | static void cmd_set_parsed(void *parsed_result,
  type cmd_set_txpkts_result (line 2514) | struct cmd_set_txpkts_result {
  function cmd_set_txpkts_parsed (line 2520) | static void
  type cmd_rx_vlan_filter_all_result (line 2559) | struct cmd_rx_vlan_filter_all_result {
  function cmd_rx_vlan_filter_all_parsed (line 2566) | static void
  type cmd_vlan_offload_result (line 2607) | struct cmd_vlan_offload_result {
  function cmd_vlan_offload_parsed (line 2615) | static void
  type cmd_vlan_tpid_result (line 2707) | struct cmd_vlan_tpid_result {
  function cmd_vlan_tpid_parsed (line 2715) | static void
  type cmd_rx_vlan_filter_result (line 2756) | struct cmd_rx_vlan_filter_result {
  function cmd_rx_vlan_filter_parsed (line 2763) | static void
  type cmd_tx_vlan_set_result (line 2804) | struct cmd_tx_vlan_set_result {
  function cmd_tx_vlan_set_parsed (line 2811) | static void
  type cmd_tx_vlan_set_qinq_result (line 2855) | struct cmd_tx_vlan_set_qinq_result {
  function cmd_tx_vlan_set_qinq_parsed (line 2863) | static void
  type cmd_tx_vlan_set_pvid_result (line 2911) | struct cmd_tx_vlan_set_pvid_result {
  function cmd_tx_vlan_set_pvid_parsed (line 2920) | static void
  type cmd_tx_vlan_reset_result (line 2968) | struct cmd_tx_vlan_reset_result {
  function cmd_tx_vlan_reset_parsed (line 2974) | static void
  type cmd_csum_result (line 3009) | struct cmd_csum_result {
  function csum_show (line 3017) | static void
  function cmd_csum_parsed (line 3066) | static void
  type cmd_csum_tunnel_result (line 3153) | struct cmd_csum_tunnel_result {
  function cmd_csum_tunnel_parsed (line 3160) | static void
  type cmd_tso_set_result (line 3208) | struct cmd_tso_set_result {
  function cmd_tso_set_parsed (line 3215) | static void
  type cmd_set_flush_rx (line 3290) | struct cmd_set_flush_rx {
  function cmd_set_flush_rx_parsed (line 3296) | static void
  type cmd_set_link_check (line 3329) | struct cmd_set_link_check {
  function cmd_set_link_check_parsed (line 3335) | static void
  type cmd_set_bypass_mode_result (line 3370) | struct cmd_set_bypass_mode_result {
  function cmd_set_bypass_mode_parsed (line 3378) | static void
  type cmd_set_bypass_event_result (line 3435) | struct cmd_set_bypass_event_result {
  function cmd_set_bypass_event_parsed (line 3445) | static void
  type cmd_set_bypass_timeout_result (line 3542) | struct cmd_set_bypass_timeout_result {
  function cmd_set_bypass_timeout_parsed (line 3549) | static void
  type cmd_show_bypass_config_result (line 3602) | struct cmd_show_bypass_config_result {
  function cmd_show_bypass_config_parsed (line 3609) | static void
  type cmd_set_bonding_mode_result (line 3701) | struct cmd_set_bonding_mode_result {
  function cmd_set_bonding_mode_parsed (line 3709) | static void cmd_set_bonding_mode_parsed(void *parsed_result,
  type cmd_set_bonding_balance_xmit_policy_result (line 3752) | struct cmd_set_bonding_balance_xmit_policy_result {
  function cmd_set_bonding_balance_xmit_policy_parsed (line 3760) | static void cmd_set_bonding_balance_xmit_policy_parsed(void *parsed_result,
  type cmd_show_bonding_config_result (line 3817) | struct cmd_show_bonding_config_result {
  function cmd_show_bonding_config_parsed (line 3824) | static void cmd_show_bonding_config_parsed(void *parsed_result,
  type cmd_set_bonding_primary_result (line 3942) | struct cmd_set_bonding_primary_result {
  function cmd_set_bonding_primary_parsed (line 3950) | static void cmd_set_bonding_primary_parsed(void *parsed_result,
  type cmd_add_bonding_slave_result (line 3998) | struct cmd_add_bonding_slave_result {
  function cmd_add_bonding_slave_parsed (line 4006) | static void cmd_add_bonding_slave_parsed(void *parsed_result,
  type cmd_remove_bonding_slave_result (line 4055) | struct cmd_remove_bonding_slave_result {
  function cmd_remove_bonding_slave_parsed (line 4063) | static void cmd_remove_bonding_slave_parsed(void *parsed_result,
  type cmd_create_bonded_device_result (line 4112) | struct cmd_create_bonded_device_result {
  function cmd_create_bonded_device_parsed (line 4122) | static void cmd_create_bonded_device_parsed(void *parsed_result,
  type cmd_set_bond_mac_addr_result (line 4187) | struct cmd_set_bond_mac_addr_result {
  function cmd_set_bond_mac_addr_parsed (line 4195) | static void cmd_set_bond_mac_addr_parsed(void *parsed_result,
  type cmd_set_bond_mon_period_result (line 4241) | struct cmd_set_bond_mon_period_result {
  function cmd_set_bond_mon_period_parsed (line 4249) | static void cmd_set_bond_mon_period_parsed(void *parsed_result,
  type cmd_set_fwd_mode_result (line 4301) | struct cmd_set_fwd_mode_result {
  function cmd_set_fwd_mode_parsed (line 4307) | static void cmd_set_fwd_mode_parsed(void *parsed_result,
  function cmd_set_fwd_mode_init (line 4336) | static void cmd_set_fwd_mode_init(void)
  type cmd_set_burst_tx_retry_result (line 4359) | struct cmd_set_burst_tx_retry_result {
  function cmd_set_burst_tx_retry_parsed (line 4369) | static void cmd_set_burst_tx_retry_parsed(void *parsed_result,
  type cmd_set_promisc_mode_result (line 4417) | struct cmd_set_promisc_mode_result {
  function cmd_set_promisc_mode_parsed (line 4425) | static void cmd_set_promisc_mode_parsed(void *parsed_result,
  type cmd_set_allmulti_mode_result (line 4497) | struct cmd_set_allmulti_mode_result {
  function cmd_set_allmulti_mode_parsed (line 4505) | static void cmd_set_allmulti_mode_parsed(void *parsed_result,
  type cmd_link_flow_ctrl_set_result (line 4577) | struct cmd_link_flow_ctrl_set_result {
  type cmdline (line 4659) | struct cmdline
  function cmd_link_flow_ctrl_set_parsed (line 4808) | static void
  type cmd_priority_flow_ctrl_set_result (line 4883) | struct cmd_priority_flow_ctrl_set_result {
  function cmd_priority_flow_ctrl_set_parsed (line 4897) | static void
  type cmd_reset_result (line 4986) | struct cmd_reset_result {
  function cmd_reset_parsed (line 4991) | static void cmd_reset_parsed(__attribute__((unused)) void *parsed_result,
  type cmd_start_result (line 5017) | struct cmd_start_result {
  function cmd_start_parsed (line 5024) | static void cmd_start_parsed(__attribute__((unused)) void *parsed_result,
  type cmd_start_tx_first_result (line 5042) | struct cmd_start_tx_first_result {
  function cmd_start_tx_first_parsed (line 5047) | static void
  type cmd_set_link_up_result (line 5074) | struct cmd_set_link_up_result {
  function cmd_set_link_up_parsed (line 5091) | static void cmd_set_link_up_parsed(__attribute__((unused)) void *parsed_...
  type cmd_set_link_down_result (line 5113) | struct cmd_set_link_down_result {
  function cmd_set_link_down_parsed (line 5130) | static void cmd_set_link_down_parsed(
  type cmd_showcfg_result (line 5153) | struct cmd_showcfg_result {
  function cmd_showcfg_parsed (line 5159) | static void cmd_showcfg_parsed(void *parsed_result,
  type cmd_showportall_result (line 5193) | struct cmd_showportall_result {
  function cmd_showportall_parsed (line 5200) | static void cmd_showportall_parsed(void *parsed_result,
  type cmd_showport_result (line 5255) | struct cmd_showport_result {
  function cmd_showport_parsed (line 5262) | static void cmd_showport_parsed(void *parsed_result,
  type cmd_read_reg_result (line 5309) | struct cmd_read_reg_result {
  function cmd_read_reg_parsed (line 5316) | static void
  type cmd_read_reg_bit_field_result (line 5348) | struct cmd_read_reg_bit_field_result {
  function cmd_read_reg_bit_field_parsed (line 5357) | static void
  type cmd_read_reg_bit_result (line 5403) | struct cmd_read_reg_bit_result {
  function cmd_read_reg_bit_parsed (line 5411) | static void
  type cmd_write_reg_result (line 5447) | struct cmd_write_reg_result {
  function cmd_write_reg_parsed (line 5455) | static void
  type cmd_write_reg_bit_field_result (line 5490) | struct cmd_write_reg_bit_field_result {
  function cmd_write_reg_bit_field_parsed (line 5500) | static void
  type cmd_write_reg_bit_result (line 5550) | struct cmd_write_reg_bit_result {
  function cmd_write_reg_bit_parsed (line 5559) | static void
  type cmd_read_rxd_txd_result (line 5599) | struct cmd_read_rxd_txd_result {
  function cmd_read_rxd_txd_parsed (line 5607) | static void
  type cmd_quit_result (line 5647) | struct cmd_quit_result {
  function cmd_quit_parsed (line 5651) | static void cmd_quit_parsed(__attribute__((unused)) void *parsed_result,
  type cmd_mac_addr_result (line 5673) | struct cmd_mac_addr_result {
  function cmd_mac_addr_parsed (line 5680) | static void cmd_mac_addr_parsed(void *parsed_result,
  type cmd_set_qmap_result (line 5725) | struct cmd_set_qmap_result {
  function cmd_set_qmap_parsed (line 5734) | static void
  type cmd_set_uc_hash_table (line 5780) | struct cmd_set_uc_hash_table {
  function cmd_set_uc_hash_parsed (line 5789) | static void
  type cmd_set_uc_all_hash_table (line 5841) | struct cmd_set_uc_all_hash_table {
  function cmd_set_uc_all_hash_parsed (line 5850) | static void
  type cmd_set_vf_macvlan_filter (line 5903) | struct cmd_set_vf_macvlan_filter {
  function cmd_set_vf_macvlan_parsed (line 5914) | static void
  type cmd_set_vf_traffic (line 6009) | struct cmd_set_vf_traffic {
  function cmd_set_vf_traffic_parsed (line 6019) | static void
  type cmd_set_vf_rxmode (line 6071) | struct cmd_set_vf_rxmode {
  function cmd_set_vf_rxmode_parsed (line 6082) | static void
  type cmd_vf_mac_addr_result (line 6152) | struct cmd_vf_mac_addr_result {
  function cmd_vf_mac_addr_parsed (line 6162) | static void cmd_vf_mac_addr_parsed(void *parsed_result,
  type cmd_vf_rx_vlan_filter (line 6217) | struct cmd_vf_rx_vlan_filter {
  function cmd_vf_rx_vlan_filter_parsed (line 6227) | static void
  type cmd_queue_rate_limit_result (line 6280) | struct cmd_queue_rate_limit_result {
  function cmd_queue_rate_limit_parsed (line 6290) | static void cmd_queue_rate_limit_parsed(void *parsed_result,
  type cmd_vf_rate_limit_result (line 6347) | struct cmd_vf_rate_limit_result {
  function cmd_vf_rate_limit_parsed (line 6359) | static void cmd_vf_rate_limit_parsed(void *parsed_result,
  type cmd_tunnel_filter_result (line 6426) | struct cmd_tunnel_filter_result {
  function cmd_tunnel_filter_parsed (line 6440) | static void
  type cmd_tunnel_udp_config (line 6569) | struct cmd_tunnel_udp_config {
  function cmd_tunnel_udp_config_parsed (line 6576) | static void
  type cmd_set_mirror_mask_result (line 6627) | struct cmd_set_mirror_mask_result {
  function cmd_set_mirror_mask_parsed (line 6672) | static void
  type cmd_set_mirror_link_result (line 6742) | struct cmd_set_mirror_link_result {
  function cmd_set_mirror_link_parsed (line 6782) | static void
  type cmd_rm_mirror_rule_result (line 6832) | struct cmd_rm_mirror_rule_result {
  function cmd_reset_mirror_rule_parsed (line 6856) | static void
  type cmd_dump_result (line 6885) | struct cmd_dump_result {
  function dump_struct_sizes (line 6889) | static void
  function cmd_dump_parsed (line 6899) | static void cmd_dump_parsed(void *parsed_result,
  type cmd_dump_one_result (line 6943) | struct cmd_dump_one_result {
  function cmd_dump_one_parsed (line 6948) | static void cmd_dump_one_parsed(void *parsed_result, struct cmdline *cl,
  type cmd_syn_filter_result (line 6991) | struct cmd_syn_filter_result {
  function cmd_syn_filter_parsed (line 7001) | static void
  type cmd_2tuple_filter_result (line 7081) | struct cmd_2tuple_filter_result {
  function cmd_2tuple_filter_parsed (line 7099) | static void
  type cmd_5tuple_filter_result (line 7228) | struct cmd_5tuple_filter_result {
  function cmd_5tuple_filter_parsed (line 7252) | static void
  type cmd_flex_filter_result (line 7429) | struct cmd_flex_filter_result {
  function xdigit2val (line 7445) | static int xdigit2val(unsigned char c)
  function cmd_flex_filter_parsed (line 7457) | static void
  type cmd_ethertype_filter_result (line 7618) | struct cmd_ethertype_filter_result {
  function cmd_ethertype_filter_parsed (line 7662) | static void
  type cmd_flow_director_result (line 7725) | struct cmd_flow_director_result {
  function parse_flexbytes (line 7752) | static inline int
  function str2flowtype (line 7790) | static uint16_t
  function cmd_flow_director_filter_parsed (line 7843) | static void
  type cmd_flush_flow_director_result (line 8150) | struct cmd_flush_flow_director_result {
  function cmd_flush_flow_director_parsed (line 8162) | static void
  type cmd_flow_director_mask_result (line 8196) | struct cmd_flow_director_mask_result {
  function cmd_flow_director_mask_parsed (line 8211) | static void
  type cmd_flow_director_flex_mask_result (line 8302) | struct cmd_flow_director_flex_mask_result {
  function cmd_flow_director_flex_mask_parsed (line 8310) | static void
  type cmd_flow_director_flexpayload_result (line 8423) | struct cmd_flow_director_flexpayload_result {
  function parse_offsets (line 8430) | static inline int
  function cmd_flow_director_flxpld_parsed (line 8468) | static void
  type cmd_get_sym_hash_ena_per_port_result (line 8541) | struct cmd_get_sym_hash_ena_per_port_result {
  function cmd_get_sym_hash_per_port_parsed (line 8546) | static void
  type cmd_set_sym_hash_ena_per_port_result (line 8596) | struct cmd_set_sym_hash_ena_per_port_result {
  function cmd_set_sym_hash_per_port_parsed (line 8602) | static void
  type cmd_get_hash_global_config_result (line 8656) | struct cmd_get_hash_global_config_result {
  function cmd_get_hash_global_config_parsed (line 8692) | static void
  type cmd_set_hash_global_config_result (line 8769) | struct cmd_set_hash_global_config_result {
  function cmd_set_hash_global_config_parsed (line 8777) | static void
  type cmd_mcast_addr_result (line 8859) | struct cmd_mcast_addr_result {
  function cmd_mcast_addr_parsed (line 8866) | static void cmd_mcast_addr_parsed(void *parsed_result,
  type cmdline (line 9048) | struct cmdline
  function bypass_is_supported (line 9087) | uint8_t

FILE: app/test-pmd/config.c
  function print_ethaddr (line 100) | static void
  function nic_stats_display (line 108) | void
  function nic_stats_clear (line 192) | void
  function nic_xstats_display (line 208) | void
  function nic_xstats_clear (line 237) | void
  function nic_stats_mapping_display (line 243) | void
  function port_infos_display (line 295) | void
  function port_id_is_invalid (line 385) | int
  function vlan_id_is_invalid (line 400) | static int
  function port_reg_off_is_invalid (line 409) | static int
  function reg_bit_pos_is_invalid (line 430) | static int
  function display_port_reg_value (line 442) | static inline void
  function port_reg_bit_display (line 449) | void
  function port_reg_bit_field_display (line 466) | void
  function port_reg_display (line 496) | void
  function port_reg_bit_set (line 509) | void
  function port_reg_bit_field_set (line 534) | void
  function port_reg_set (line 574) | void
  function port_mtu_set (line 585) | void
  function rx_queue_id_is_invalid (line 601) | int
  function tx_queue_id_is_invalid (line 610) | int
  function rx_desc_id_is_invalid (line 619) | static int
  function tx_desc_id_is_invalid (line 629) | static int
  type rte_memzone (line 639) | struct rte_memzone
  type rte_memzone (line 643) | struct rte_memzone
  type igb_ring_desc_32_bytes (line 668) | struct igb_ring_desc_32_bytes {
  type igb_ring_desc_16_bytes (line 675) | struct igb_ring_desc_16_bytes {
  function ring_rxd_display_dword (line 680) | static void
  function ring_rx_descriptor_display (line 687) | static void
  function ring_tx_descriptor_display (line 732) | static void
  function rx_ring_desc_display (line 748) | void
  function tx_ring_desc_display (line 765) | void
  function fwd_lcores_config_display (line 782) | void
  function rxtx_config_display (line 792) | void
  function port_rss_reta_info (line 823) | void
  function port_rss_hash_conf_show (line 854) | void
  function port_rss_hash_key_update (line 924) | void
  function setup_fwd_config_of_each_lcore (line 955) | static void
  function simple_fwd_config_setup (line 995) | static void
  function rss_fwd_config_setup (line 1066) | static void
  function dcb_rxq_2_txq_mapping (line 1134) | static void
  function dcb_fwd_config_setup (line 1188) | static void
  function icmp_echo_config_setup (line 1241) | static void
  function fwd_config_setup (line 1296) | void
  function pkt_fwd_config_display (line 1314) | static void
  function fwd_config_display (line 1354) | void
  function set_fwd_lcores_list (line 1365) | int
  function set_fwd_lcores_mask (line 1405) | int
  function set_fwd_lcores_number (line 1425) | void
  function set_fwd_ports_list (line 1439) | void
  function set_fwd_ports_mask (line 1468) | void
  function set_fwd_ports_number (line 1488) | void
  function set_nb_pkt_per_burst (line 1502) | void
  function set_tx_pkt_segments (line 1516) | void
  type fwd_engine (line 1562) | struct fwd_engine
  function set_pkt_forwarding_mode (line 1576) | void
  function set_verbose_level (line 1595) | void
  function vlan_extend_set (line 1603) | void
  function rx_vlan_strip_set (line 1625) | void
  function rx_vlan_strip_set_on_queue (line 1647) | void
  function rx_vlan_filter_set (line 1661) | void
  function rx_vft_set (line 1683) | int
  function rx_vlan_all_filter_set (line 1701) | void
  function vlan_tpid_set (line 1714) | void
  function tx_vlan_set (line 1730) | void
  function tx_qinq_set (line 1742) | void
  function tx_vlan_reset (line 1757) | void
  function tx_vlan_pvid_set (line 1768) | void
  function set_qmap (line 1777) | void
  function print_fdir_mask (line 1829) | static inline void
  function print_fdir_flex_payload (line 1847) | static inline void
  type flow_type_info (line 1874) | struct flow_type_info {
  type flow_type_info (line 1880) | struct flow_type_info
  function print_fdir_flex_mask (line 1905) | static inline void
  function print_fdir_flow_type (line 1922) | static inline void
  function fdir_get_infos (line 1940) | void
  function fdir_set_flex_mask (line 2009) | void
  function fdir_set_flex_payload (line 2039) | void
  function set_vf_traffic (line 2070) | void
  function set_vf_rx_vlan (line 2092) | void
  function set_queue_rate_limit (line 2108) | int
  function set_vf_rate_limit (line 2130) | int
  function mcast_addr_pool_extend (line 2173) | static int
  function mcast_addr_pool_remove (line 2209) | static void
  function eth_port_multicast_addr_list_set (line 2227) | static void
  function mcast_addr_add (line 2242) | void
  function mcast_addr_remove (line 2270) | void

FILE: app/test-pmd/csumonly.c
  type testpmd_offload_info (line 93) | struct testpmd_offload_info {
  type simple_gre_hdr (line 108) | struct simple_gre_hdr {
  function get_psd_sum (line 113) | static uint16_t
  function get_udptcp_checksum (line 122) | static uint16_t
  function parse_ipv4 (line 132) | static void
  function parse_ipv6 (line 149) | static void
  function parse_ethernet (line 170) | static void
  type udp_hdr (line 206) | struct udp_hdr
  type udp_hdr (line 210) | struct udp_hdr
  type testpmd_offload_info (line 210) | struct testpmd_offload_info
  type ether_hdr (line 214) | struct ether_hdr
  type ether_hdr (line 234) | struct ether_hdr
  type udp_hdr (line 235) | struct udp_hdr
  type vxlan_hdr (line 236) | struct vxlan_hdr
  function parse_gre (line 243) | static void
  function parse_encap_ip (line 304) | static void
  function change_ip_addresses (line 332) | static void
  function process_inner_cksums (line 348) | static uint64_t
  function process_outer_cksums (line 428) | static uint64_t
  function pkt_burst_checksum_forward (line 494) | static void
  type fwd_engine (line 717) | struct fwd_engine

FILE: app/test-pmd/flowgen.c
  type ether_addr (line 82) | struct ether_addr
  type ether_addr (line 84) | struct ether_addr
  type rte_mbuf (line 92) | struct rte_mbuf
  type rte_mempool (line 93) | struct rte_mempool
  type rte_mbuf (line 95) | struct rte_mbuf
  function ip_sum (line 103) | static inline uint16_t
  function pkt_burst_flow_gen (line 129) | static void
  type fwd_engine (line 243) | struct fwd_engine

FILE: app/test-pmd/icmpecho.c
  function ipv4_addr_to_dot (line 242) | static void
  function ether_addr_dump (line 253) | static void
  function ipv4_addr_dump (line 264) | static void
  function ipv4_hdr_cksum (line 275) | static uint16_t
  function reply_to_icmp_echo_rqsts (line 303) | static void
  type fwd_engine (line 537) | struct fwd_engine

FILE: app/test-pmd/ieee1588fwd.c
  type ptpv2_msg (line 45) | struct ptpv2_msg {
  function port_ieee1588_rx_timestamp_check (line 82) | static void
  function port_ieee1588_tx_timestamp_check (line 98) | static void
  function ieee1588_packet_fwd (line 121) | static void
  function port_ieee1588_fwd_begin (line 225) | static void
  function port_ieee1588_fwd_end (line 231) | static void
  type fwd_engine (line 237) | struct fwd_engine

FILE: app/test-pmd/iofwd.c
  function pkt_burst_io_forward (line 77) | static void
  type fwd_engine (line 123) | struct fwd_engine

FILE: app/test-pmd/macfwd-retry.c
  function pkt_burst_mac_retry_forward (line 87) | static void
  type fwd_engine (line 159) | struct fwd_engine

FILE: app/test-pmd/macfwd.c
  function pkt_burst_mac_forward (line 77) | static void
  type fwd_engine (line 146) | struct fwd_engine

FILE: app/test-pmd/macswap.c
  function pkt_burst_mac_swap (line 76) | static void
  type fwd_engine (line 148) | struct fwd_engine

FILE: app/test-pmd/mempool_anon.c
  function get_phys_map (line 56) | static int
  type rte_mempool (line 85) | struct rte_mempool
  type rte_mempool (line 92) | struct rte_mempool
  type rte_mempool (line 186) | struct rte_mempool

FILE: app/test-pmd/mempool_osdep.h
  type rte_mempool (line 47) | struct rte_mempool

FILE: app/test-pmd/parameters.c
  function usage (line 83) | static void
  function init_peer_eth_addrs (line 200) | static int
  function parse_fwd_coremask (line 235) | static void
  function parse_fwd_portmask (line 254) | static void
  function parse_queue_stats_mapping_config (line 270) | static int
  function parse_portnuma_config (line 356) | static int
  function parse_ringnuma_config (line 412) | static int
  function launch_args_parse (line 494) | void

FILE: app/test-pmd/rxonly.c
  function print_ether_addr (line 73) | static inline void
  function pkt_burst_receive (line 84) | static void

FILE: app/test-pmd/testpmd.c
  type ether_addr (line 114) | struct ether_addr
  type rte_port (line 120) | struct rte_port
  type fwd_lcore (line 122) | struct fwd_lcore
  type fwd_stream (line 138) | struct fwd_stream
  type fwd_engine (line 144) | struct fwd_engine
  type fwd_config (line 160) | struct fwd_config
  type fwd_engine (line 161) | struct fwd_engine
  type dcb_queue_mapping_mode (line 186) | enum dcb_queue_mapping_mode
  type rte_eth_rxmode (line 273) | struct rte_eth_rxmode
  type rte_fdir_conf (line 285) | struct rte_fdir_conf
  type queue_stats_mappings (line 307) | struct queue_stats_mappings
  type queue_stats_mappings (line 308) | struct queue_stats_mappings
  type queue_stats_mappings (line 310) | struct queue_stats_mappings
  type queue_stats_mappings (line 311) | struct queue_stats_mappings
  type rte_port (line 317) | struct rte_port
  function portid_t (line 329) | portid_t
  function set_default_fwd_lcores_config (line 343) | static void
  function set_def_peer_eth_addrs (line 362) | static void
  function set_default_fwd_ports_config (line 373) | static void
  function set_def_fwd_config (line 385) | void
  function mbuf_pool_create (line 396) | static void
  function check_socket_id (line 444) | static int
  function init_config (line 461) | static void
  function reconfig (line 575) | void
  function init_fwd_streams (line 593) | int
  function pkt_burst_stats_display (line 669) | static void
  function fwd_port_stats_display (line 723) | static void
  function fwd_stream_stats_display (line 824) | static void
  function flush_fwd_rx_queues (line 853) | static void
  function run_pkt_fwd_on_lcore (line 880) | static void
  function start_pkt_forward_on_core (line 895) | static int
  function run_one_txonly_burst_on_core (line 907) | static int
  function launch_packet_forwarding (line 925) | static void
  function start_packet_forwarding (line 954) | void
  function stop_packet_forwarding (line 1038) | void
  function dev_set_link_up (line 1182) | void
  function dev_set_link_down (line 1189) | void
  function all_ports_started (line 1196) | static int
  function all_ports_stopped (line 1214) | int
  function port_is_started (line 1230) | int
  function port_is_closed (line 1242) | static int
  function start_port (line 1254) | int
  function stop_port (line 1412) | void
  function close_port (line 1455) | void
  function attach_port (line 1498) | void
  function detach_port (line 1540) | void
  function pmd_test_exit (line 1575) | void
  type pmd_test_command (line 1593) | struct pmd_test_command {
  function check_all_ports_link_status (line 1601) | static void
  function set_tx_queue_stats_mapping_registers (line 1653) | static int
  function set_rx_queue_stats_mapping_registers (line 1676) | static int
  function map_port_queue_stats_mapping_registers (line 1699) | static void
  function rxtx_port_config (line 1731) | static void
  function init_port_config (line 1772) | void
  function set_port_slave_flag (line 1819) | void set_port_slave_flag(portid_t slave_pid)
  function clear_port_slave_flag (line 1827) | void clear_port_slave_flag(portid_t slave_pid)
  function get_eth_dcb_conf (line 1842) | static  int
  function init_port_dcb_config (line 1919) | int
  function init_port (line 1961) | static void
  function main (line 1981) | int

FILE: app/test-pmd/testpmd.h
  type lcoreid_t (line 71) | typedef uint8_t  lcoreid_t;
  type portid_t (line 72) | typedef uint8_t  portid_t;
  type queueid_t (line 73) | typedef uint16_t queueid_t;
  type streamid_t (line 74) | typedef uint16_t streamid_t;
  type pkt_burst_stats (line 89) | struct pkt_burst_stats {
  type fwd_stream (line 98) | struct fwd_stream {
  type rte_port (line 142) | struct rte_port {
  type rte_port (line 174) | struct rte_port
  type fwd_lcore (line 188) | struct fwd_lcore {
  type fwd_stream (line 214) | struct fwd_stream
  type fwd_engine (line 216) | struct fwd_engine {
  type fwd_engine (line 223) | struct fwd_engine
  type fwd_engine (line 224) | struct fwd_engine
  type fwd_engine (line 225) | struct fwd_engine
  type fwd_engine (line 226) | struct fwd_engine
  type fwd_engine (line 227) | struct fwd_engine
  type fwd_engine (line 228) | struct fwd_engine
  type fwd_engine (line 229) | struct fwd_engine
  type fwd_engine (line 230) | struct fwd_engine
  type fwd_engine (line 231) | struct fwd_engine
  type fwd_engine (line 233) | struct fwd_engine
  type fwd_engine (line 236) | struct fwd_engine
  type fwd_config (line 242) | struct fwd_config {
  type dcb_mode_enable (line 252) | enum dcb_mode_enable
  type dcb_config (line 261) | struct dcb_config {
  type dcb_queue_mapping_mode (line 271) | enum dcb_queue_mapping_mode {
  type queue_stats_mappings (line 280) | struct queue_stats_mappings {
  type queue_stats_mappings (line 286) | struct queue_stats_mappings
  type queue_stats_mappings (line 287) | struct queue_stats_mappings
  type queue_stats_mappings (line 290) | struct queue_stats_mappings
  type queue_stats_mappings (line 291) | struct queue_stats_mappings
  type rte_port (line 350) | struct rte_port
  type rte_eth_rxmode (line 352) | struct rte_eth_rxmode
  type dcb_queue_mapping_mode (line 369) | enum dcb_queue_mapping_mode
  type rte_fdir_conf (line 374) | struct rte_fdir_conf
  type fwd_config (line 393) | struct fwd_config
  type fwd_engine (line 394) | struct fwd_engine
  type fwd_lcore (line 395) | struct fwd_lcore
  type fwd_stream (line 396) | struct fwd_stream
  type ether_addr (line 399) | struct ether_addr
  function lcore_num (line 404) | static inline unsigned int
  type fwd_lcore (line 416) | struct fwd_lcore
  function mbuf_poolname_build (line 423) | static inline void
  type rte_mempool (line 429) | struct rte_mempool
  function port_pci_reg_read (line 441) | static inline uint32_t
  function port_pci_reg_write (line 457) | static inline void
  type dcb_config (line 540) | struct dcb_config
  type rte_eth_fdir_flex_mask (line 551) | struct rte_eth_fdir_flex_mask
  type rte_eth_flex_payload_cfg (line 553) | struct rte_eth_flex_payload_cfg
  type rte_eth_rss_reta_entry64 (line 555) | struct rte_eth_rss_reta_entry64
  type ether_addr (line 576) | struct ether_addr
  type ether_addr (line 577) | struct ether_addr
  type print_warning (line 579) | enum print_warning {
  type print_warning (line 583) | enum print_warning

FILE: app/test-pmd/txonly.c
  type ipv4_hdr (line 86) | struct ipv4_hdr
  type udp_hdr (line 87) | struct udp_hdr
  type rte_mbuf (line 89) | struct rte_mbuf
  type rte_mempool (line 90) | struct rte_mempool
  type rte_mbuf (line 92) | struct rte_mbuf
  function copy_buf_to_pkt_segs (line 99) | static void
  function copy_buf_to_pkt (line 124) | static inline void
  function setup_pkt_udp_ip_headers (line 135) | static void
  function pkt_burst_transmit (line 194) | static void
  function tx_only_begin (line 304) | static void
  type fwd_engine (line 315) | struct fwd_engine

FILE: app/test/autotest.py
  function usage (line 40) | def usage():

FILE: app/test/autotest_data.py
  function num_sockets (line 40) | def num_sockets():
  function per_sockets (line 48) | def per_sockets(num):

FILE: app/test/autotest_runner.py
  function wait_prompt (line 39) | def wait_prompt(child):
  function run_test_group (line 63) | def run_test_group(cmdline, test_group):
  class AutotestRunner (line 173) | class AutotestRunner:
    method __init__ (line 188) | def __init__(self, cmdline, target, blacklist, whitelist):
    method __get_cmdline (line 208) | def __get_cmdline(self, test):
    method add_parallel_test_group (line 228) | def add_parallel_test_group(self,test_group):
    method add_non_parallel_test_group (line 231) | def add_non_parallel_test_group(self,test_group):
    method __process_results (line 235) | def __process_results(self, results):
    method __filter_groups (line 289) | def __filter_groups(self, test_groups):
    method run_all_tests (line 329) | def run_all_tests(self):

FILE: app/test/autotest_test_funcs.py
  function default_autotest (line 40) | def default_autotest(child, test_name):
  function dump_autotest (line 54) | def dump_autotest(child, test_name):
  function memory_autotest (line 60) | def memory_autotest(child, test_name):
  function spinlock_autotest (line 77) | def spinlock_autotest(child, test_name):
  function rwlock_autotest (line 109) | def rwlock_autotest(child, test_name):
  function logs_autotest (line 143) | def logs_autotest(child, test_name):
  function timer_autotest (line 180) | def timer_autotest(child, test_name):
  function ring_autotest (line 281) | def ring_autotest(child, test_name):

FILE: app/test/commands.c
  type test_commands_list (line 80) | struct test_commands_list
  function add_test_command (line 83) | void
  type cmd_autotest_result (line 89) | struct cmd_autotest_result {
  function cmd_autotest_parsed (line 93) | static void cmd_autotest_parsed(void *parsed_result,
  type cmd_dump_result (line 129) | struct cmd_dump_result {
  function dump_struct_sizes (line 133) | static void
  function cmd_dump_parsed (line 143) | static void cmd_dump_parsed(void *parsed_result,
  type cmd_dump_one_result (line 183) | struct cmd_dump_one_result {
  function cmd_dump_one_parsed (line 188) | static void cmd_dump_one_parsed(void *parsed_result, struct cmdline *cl,
  type cmd_set_ring_result (line 233) | struct cmd_set_ring_result {
  function cmd_set_ring_parsed (line 239) | static void cmd_set_ring_parsed(void *parsed_result, struct cmdline *cl,
  type cmd_quit_result (line 284) | struct cmd_quit_result {
  function cmd_quit_parsed (line 288) | static void
  type cmd_set_rxtx_result (line 312) | struct cmd_set_rxtx_result {
  function cmd_set_rxtx_parsed (line 317) | static void cmd_set_rxtx_parsed(void *parsed_result, struct cmdline *cl,
  type cmd_set_rxtx_anchor (line 346) | struct cmd_set_rxtx_anchor {
  function cmd_set_rxtx_anchor_parsed (line 351) | static void
  type cmd_set_rxtx_sc (line 383) | struct cmd_set_rxtx_sc {
  function cmd_set_rxtx_sc_parsed (line 388) | static void
  function commands_init (line 432) | int commands_init(void)

FILE: app/test/packet_burst_generator.c
  function copy_buf_to_pkt_segs (line 48) | static void
  function copy_buf_to_pkt (line 73) | static inline void
  function initialize_eth_header (line 84) | void
  function initialize_arp_header (line 105) | void
  function initialize_udp_header (line 121) | uint16_t
  function initialize_ipv6_header (line 138) | uint16_t
  function initialize_ipv4_header (line 153) | uint16_t
  function generate_packet_burst (line 210) | int

FILE: app/test/packet_burst_generator.h
  type ether_hdr (line 55) | struct ether_hdr
  type ether_addr (line 55) | struct ether_addr
  type ether_addr (line 56) | struct ether_addr
  type arp_hdr (line 60) | struct arp_hdr
  type ether_addr (line 60) | struct ether_addr
  type ether_addr (line 61) | struct ether_addr
  type udp_hdr (line 65) | struct udp_hdr
  type ipv6_hdr (line 70) | struct ipv6_hdr
  type ipv4_hdr (line 74) | struct ipv4_hdr
  type rte_mempool (line 78) | struct rte_mempool
  type rte_mbuf (line 78) | struct rte_mbuf
  type ether_hdr (line 79) | struct ether_hdr
  type udp_hdr (line 80) | struct udp_hdr

FILE: app/test/process.h
  function process_dup (line 51) | static inline int

FILE: app/test/test.c
  function no_action (line 70) | static int
  function do_recursive_call (line 73) | static int
  function main (line 113) | int
  function unit_test_suite_runner (line 159) | int

FILE: app/test/test.h
  type unit_test_case (line 114) | struct unit_test_case {
  type unit_test_suite (line 133) | struct unit_test_suite {
  type unit_test_suite (line 140) | struct unit_test_suite
  type test_command (line 163) | struct test_command {
  type test_command (line 169) | struct test_command

FILE: app/test/test_acl.c
  type rte_acl_param (line 52) | struct rte_acl_param
  type rte_acl_ipv4vlan_rule (line 59) | struct rte_acl_ipv4vlan_rule
  type ipv4_7tuple (line 68) | struct ipv4_7tuple
  type ipv4_7tuple (line 69) | struct ipv4_7tuple
  type ipv4_7tuple (line 70) | struct ipv4_7tuple
  type ipv4_7tuple (line 71) | struct ipv4_7tuple
  type ipv4_7tuple (line 72) | struct ipv4_7tuple
  function bswap_test_data (line 77) | static void
  function test_classify_run (line 106) | static int
  function test_classify_buid (line 204) | static int
  function test_classify (line 234) | static int
  function test_build_ports_range (line 284) | static int
  function convert_rule (line 420) | static void
  function convert_rule_1 (line 451) | static void
  function convert_rule_2 (line 470) | static void
  function convert_rule_3 (line 496) | static void
  function convert_rule_4 (line 519) | static void
  function ipv4vlan_config (line 534) | static void
  function convert_rules (line 608) | static int
  function convert_config (line 632) | static void
  function convert_config_1 (line 641) | static void
  function convert_config_2 (line 652) | static void
  function convert_config_3 (line 663) | static void
  function convert_config_4 (line 697) | static void
  function build_convert_rules (line 717) | static int
  function test_convert_rules (line 730) | static int
  function test_convert (line 773) | static int
  function test_invalid_layout (line 836) | static int
  function test_create_find_add (line 956) | static int
  function test_invalid_rules (line 1095) | static int
  function test_invalid_parameters (line 1197) | static int
  function test_misc (line 1443) | static int
  function test_acl (line 1468) | static int
  type test_command (line 1491) | struct test_command

FILE: app/test/test_acl.h
  type ipv4_7tuple (line 37) | struct ipv4_7tuple {
  type rte_acl_ipv4vlan_rule (line 50) | struct rte_acl_ipv4vlan_rule
  type ipv4_7tuple (line 90) | struct ipv4_7tuple
  type rte_acl_ipv4vlan_rule (line 103) | struct rte_acl_ipv4vlan_rule
  type ipv4_7tuple (line 428) | struct ipv4_7tuple

FILE: app/test/test_alarm.c
  function test_alarm_callback (line 53) | static void
  function test_multi_cb (line 62) | static void
  function test_remove_in_callback (line 71) | static void
  function test_remove_in_callback_2 (line 85) | static void
  function test_multi_alarms (line 95) | static int
  function test_alarm (line 202) | static int
  type test_command (line 256) | struct test_command

FILE: app/test/test_atomic.c
  function test_atomic_usual (line 107) | static int
  function test_atomic_tas (line 145) | static int
  function test_atomic_addsub_and_return (line 161) | static int
  function test_atomic_inc_and_test (line 205) | static int
  function test_atomic_dec_and_test (line 232) | static int
  function test_atomic (line 250) | static int
  type test_command (line 377) | struct test_command

FILE: app/test/test_byteorder.c
  function test_byteorder (line 55) | static int
  type test_command (line 95) | struct test_command

FILE: app/test/test_cmdline.c
  function test_cmdline (line 39) | static int
  type test_command (line 92) | struct test_command

FILE: app/test/test_cmdline_cirbuf.c
  function test_cirbuf_string_misc (line 49) | static int
  function test_cirbuf_string_add_del (line 160) | static int
  function test_cirbuf_string_add_del_reverse (line 278) | static int
  function test_cirbuf_string_add_boundaries (line 346) | static int
  function test_cirbuf_string_get_del_boundaries (line 411) | static int
  function test_cirbuf_string_get_del_partial (line 502) | static int
  function test_cirbuf_char_add_del (line 602) | static int
  function test_cirbuf_char_fill (line 696) | static int
  function test_cirbuf_align_left (line 807) | static int
  function test_cirbuf_align_right (line 1018) | static int
  function test_cirbuf_invalid_param (line 1209) | int
  function test_cirbuf_char (line 1280) | int
  function test_cirbuf_string (line 1297) | int
  function test_cirbuf_align (line 1322) | int

FILE: app/test/test_cmdline_etheraddr.c
  type ether_addr_str (line 46) | struct ether_addr_str {
  type ether_addr_str (line 52) | struct ether_addr_str
  function is_addr_different (line 113) | static int
  function test_parse_etheraddr_invalid_param (line 125) | int
  function test_parse_etheraddr_invalid_data (line 176) | int
  function test_parse_etheraddr_valid (line 201) | int

FILE: app/test/test_cmdline_ipaddr.c
  type ipaddr_str (line 104) | struct ipaddr_str {
  type ipaddr_str (line 110) | struct ipaddr_str
  function dump_addr (line 316) | static void
  function is_addr_different (line 339) | static int
  function can_parse_addr (line 370) | static int
  function test_parse_ipaddr_valid (line 384) | int
  function test_parse_ipaddr_invalid_data (line 627) | int
  function test_parse_ipaddr_invalid_param (line 675) | int

FILE: app/test/test_cmdline_lib.c
  function valid_buffer (line 54) | static void
  function complete_buffer (line 61) | static int
  function test_cmdline_parse_fns (line 73) | static int
  function test_cmdline_rdline_fns (line 101) | static int
  function test_cmdline_vt100_fns (line 145) | static int
  function test_cmdline_socket_fns (line 159) | static int
  function test_cmdline_fns (line 192) | static int
  function test_cmdline_lib (line 249) | int

FILE: app/test/test_cmdline_num.c
  type num_unsigned_str (line 45) | struct num_unsigned_str {
  type num_signed_str (line 50) | struct num_signed_str {
  type num_unsigned_str (line 55) | struct num_unsigned_str
  type num_signed_str (line 162) | struct num_signed_str
  type num_unsigned_str (line 173) | struct num_unsigned_str
  type num_signed_str (line 205) | struct num_signed_str
  function can_parse_unsigned (line 261) | static int
  function can_parse_signed (line 299) | static int
  function test_parse_num_invalid_param (line 337) | int
  function test_parse_num_invalid_data (line 409) | int
  function test_parse_num_valid (line 446) | int

FILE: app/test/test_cmdline_portlist.c
  type portlist_str (line 43) | struct portlist_str {
  type portlist_str (line 49) | struct portlist_str
  function test_parse_portlist_invalid_param (line 131) | int
  function test_parse_portlist_invalid_data (line 179) | int
  function test_parse_portlist_valid (line 204) | int

FILE: app/test/test_cmdline_string.c
  type string_elt_str (line 47) | struct string_elt_str {
  type string_elt_str (line 53) | struct string_elt_str
  type string_nb_str (line 73) | struct string_nb_str {
  type string_nb_str (line 78) | struct string_nb_str
  type string_parse_str (line 86) | struct string_parse_str {
  type string_parse_str (line 92) | struct string_parse_str
  type string_invalid_str (line 104) | struct string_invalid_str {
  type string_invalid_str (line 109) | struct string_invalid_str
  function test_parse_string_invalid_param (line 155) | int
  function test_parse_string_invalid_data (line 218) | int
  function test_parse_string_valid (line 318) | int

FILE: app/test/test_common.c
  function test_macros (line 48) | static int
  function test_misc (line 79) | static int
  function test_align (line 94) | static int
  function test_common (line 161) | static int
  type test_command (line 172) | struct test_command

FILE: app/test/test_cpuflags.c
  function test_cpuflags (line 77) | static int
  type test_command (line 168) | struct test_command

FILE: app/test/test_cycles.c
  function test_cycles (line 55) | static int
  type test_command (line 92) | struct test_command

FILE: app/test/test_debug.c
  function test_panic (line 51) | static int
  function test_exit_val (line 76) | static int
  function test_exit (line 102) | static int
  function dummy_app_usage (line 115) | static void
  function test_usage (line 121) | static int
  function test_debug (line 135) | static int
  type test_command (line 149) | struct test_command

FILE: app/test/test_devargs.c
  function free_devargs_list (line 44) | static void free_devargs_list(void)
  function test_devargs (line 57) | static int
  type test_command (line 135) | struct test_command

FILE: app/test/test_distributor.c
  type worker_stats (line 53) | struct worker_stats {
  type worker_stats (line 56) | struct worker_stats
  function total_packet_count (line 61) | static inline unsigned
  function clear_packet_count (line 71) | static inline void
  function handle_work (line 80) | static int
  function sanity_test (line 109) | static int
  function handle_work_with_free_mbufs (line 248) | static int
  function sanity_test_with_mbuf_alloc (line 272) | static int
  function handle_work_for_shutdown_test (line 304) | static int
  function sanity_test_with_worker_shutdown (line 346) | static int
  function test_flush_with_worker_shutdown (line 403) | static int
  function test_error_distributor_create_name (line 450) | static
  function test_error_distributor_create_numworkers (line 467) | static
  function quit_workers (line 482) | static void
  function test_distributor (line 505) | static int
  type test_command (line 579) | struct test_command

FILE: app/test/test_distributor_perf.c
  type worker_stats (line 52) | struct worker_stats {
  type worker_stats (line 55) | struct worker_stats
  function flip_bit (line 60) | static void
  function time_cache_line_switch (line 75) | static void
  function total_packet_count (line 110) | static unsigned
  function clear_packet_count (line 120) | static void
  function handle_work (line 129) | static int
  function perf_test (line 151) | static inline int
  function quit_workers (line 194) | static void
  function test_distributor_perf (line 215) | static int
  type test_command (line 260) | struct test_command

FILE: app/test/test_eal_flags.c
  type hugepage_action (line 73) | enum hugepage_action {
  function get_hugepage_path (line 81) | static int
  function process_hugefiles (line 108) | static int
  function get_number_of_sockets (line 229) | static int
  function test_whitelist_flag (line 286) | static int
  function test_invalid_b_flag (line 353) | static int
  function test_invalid_vdev_flag (line 400) | static int
  function test_invalid_r_flag (line 454) | static int
  function test_missing_c_flag (line 498) | static int
  function test_master_lcore_flag (line 629) | static int
  function test_missing_n_flag (line 677) | static int
  function test_no_hpet_flag (line 720) | static int
  function test_no_huge_flag (line 754) | static int
  function test_dom0_misc_flags (line 804) | static int
  function test_misc_flags (line 869) | static int
  function test_file_prefix (line 1057) | static int
  function test_memory_flags (line 1175) | static int
  function test_eal_flags (line 1349) | static int
  type test_command (line 1434) | struct test_command

FILE: app/test/test_eal_fs.c
  function test_parse_sysfs_value (line 43) | static int
  function test_eal_fs (line 198) | static int
  type test_command (line 206) | struct test_command

FILE: app/test/test_errno.c
  function test_errno (line 45) | static int
  type test_command (line 116) | struct test_command

FILE: app/test/test_func_reentrancy.c
  function test_eal_init_once (line 96) | static int
  function ring_create_lookup (line 112) | static int
  function my_obj_init (line 149) | static void
  function mempool_create_lookup (line 158) | static int
  function hash_clean (line 204) | static void
  function hash_create_free (line 219) | static int
  function fbk_clean (line 272) | static void
  function fbk_create_free (line 287) | static int
  function lpm_clean (line 342) | static void
  function lpm_create_free (line 357) | static int
  type test_case (line 399) | struct test_case{
  type test_case (line 407) | struct test_case
  function launch_test (line 423) | static int
  function test_func_reentrancy (line 466) | static int
  type test_command (line 494) | struct test_command

FILE: app/test/test_hash.c
  type flow_key (line 93) | struct flow_key {
  function pseudo_hash (line 105) | static uint32_t pseudo_hash(__attribute__((unused)) const void *keys,
  function print_key_info (line 116) | static void print_key_info(const char *msg, const struct flow_key *key,
  function print_key_info (line 129) | static void print_key_info(__attribute__((unused)) const char *msg,
  type flow_key (line 137) | struct flow_key
  type rte_hash_parameters (line 170) | struct rte_hash_parameters
  type flow_key (line 172) | struct flow_key
  function test_crc32_hash_alg_equiv (line 183) | static int
  function run_hash_func_test (line 238) | static void run_hash_func_test(rte_hash_function f, uint32_t init_val,
  function run_hash_func_tests (line 258) | static void run_hash_func_tests(void)
  function test_add_delete (line 286) | static int test_add_delete(void)
  function test_add_update_delete (line 362) | static int test_add_update_delete(void)
  function test_hash_find_existing (line 423) | static int test_hash_find_existing(void)
  function test_five_keys (line 455) | static int test_five_keys(void)
  function test_full_bucket (line 545) | static int test_full_bucket(void)
  function fbk_hash_unit_test (line 646) | static int
  function test_fbk_hash_find_existing (line 949) | static int test_fbk_hash_find_existing(void)
  function test_hash_creation_with_bad_parameters (line 981) | static int test_hash_creation_with_bad_parameters(void)
  function test_hash_creation_with_good_parameters (line 1043) | static int
  function test_average_table_utilization (line 1100) | static int test_average_table_utilization(void)
  function test_hash_iteration (line 1153) | static int test_hash_iteration(void)
  type rte_hash_parameters (line 1220) | struct rte_hash_parameters
  function test_hash_add_delete_jhash2 (line 1232) | static int
  function test_hash_add_delete_2_jhash2 (line 1271) | static int
  function test_hash_jhash_1word (line 1303) | static uint32_t
  function test_hash_jhash_2word (line 1313) | static uint32_t
  function test_hash_jhash_3word (line 1323) | static uint32_t
  function test_hash_add_delete_jhash_1word (line 1336) | static int
  function test_hash_add_delete_jhash_2word (line 1371) | static int
  function test_hash_add_delete_jhash_3word (line 1406) | static int
  function test_hash (line 1441) | static int
  type test_command (line 1486) | struct test_command

FILE: app/test/test_hash_functions.c
  function run_hash_func_perf_test (line 118) | static void
  function run_hash_func_perf_tests (line 144) | static void
  function verify_precalculated_hash_func_tests (line 169) | static int
  function verify_jhash_32bits (line 209) | static int
  function verify_jhash_words (line 246) | static int
  function run_hash_func_tests (line 290) | static int
  function test_hash_functions (line 306) | static int
  type test_command (line 317) | struct test_command

FILE: app/test/test_hash_perf.c
  type operations (line 59) | enum operations {
  type rte_hash (line 80) | struct rte_hash
  type rte_hash_parameters (line 101) | struct rte_hash_parameters
  function create_table (line 107) | static int
  function shuffle_input_keys (line 138) | static void
  function get_input_keys (line 168) | static int
  function timed_adds (line 256) | static int
  function timed_lookups (line 311) | static int
  function timed_lookups_multi (line 379) | static int
  function timed_deletes (line 446) | static int
  function free_table (line 478) | static void
  function reset_table (line 484) | static void
  function run_all_tbl_perf_tests (line 490) | static int
  function fbk_hash_perf_test (line 563) | static int
  function test_hash_perf (line 640) | static int
  type test_command (line 659) | struct test_command

FILE: app/test/test_hash_scaling.c
  type locking_mode_t (line 56) | enum locking_mode_t {
  type rte_hash (line 64) | struct rte_hash
  function test_hash_scaling_worker (line 71) | static int test_hash_scaling_worker(__attribute__((unused)) void *arg)
  function test_hash_scaling (line 124) | static int
  function test_hash_scaling_main (line 194) | static int
  type test_command (line 218) | struct test_command

FILE: app/test/test_interrupts.c
  type test_interrupt_handle_type (line 47) | enum test_interrupt_handle_type {
  type rte_intr_handle (line 58) | struct rte_intr_handle
  type test_interrupt_handle_type (line 59) | enum test_interrupt_handle_type
  function test_interrupt_handle_sanity_check (line 78) | static inline int
  function test_interrupt_init (line 90) | static int
  function test_interrupt_deinit (line 121) | static int
  function test_interrupt_trigger_interrupt (line 133) | static int
  function test_interrupt_handle_compare (line 145) | static int
  function test_interrupt_handle_sanity_check (line 161) | static inline int
  function test_interrupt_init (line 169) | static int
  function test_interrupt_deinit (line 175) | static int
  function test_interrupt_trigger_interrupt (line 181) | static int
  function test_interrupt_handle_compare (line 187) | static int
  function test_interrupt_callback (line 201) | static void
  function test_interrupt_callback_1 (line 232) | static void
  function test_interrupt_enable (line 246) | static int
  function test_interrupt_disable (line 301) | static int
  function test_interrupt_full_path_check (line 357) | static int
  function test_interrupt (line 398) | static int
  type test_command (line 551) | struct test_command

FILE: app/test/test_ivshmem.c
  type rte_ivshmem_metadata (line 91) | struct rte_ivshmem_metadata
  type rte_ivshmem_metadata (line 96) | struct rte_ivshmem_metadata
  type rte_ivshmem_metadata (line 105) | struct rte_ivshmem_metadata
  type rte_ivshmem_metadata (line 106) | struct rte_ivshmem_metadata
  function create_duplicate (line 117) | static int
  function test_ivshmem_create_lots_of_memzones (line 126) | static int
  function test_ivshmem_create_duplicate_memzone (line 154) | static int
  function test_ivshmem_api_test (line 174) | static int
  function test_ivshmem_create_duplicate_metadata (line 273) | static int
  function test_ivshmem_create_metadata_config (line 282) | static int
  function test_ivshmem_create_multiple_metadata_configs (line 306) | static int
  function test_ivshmem_create_too_many_metadata_configs (line 328) | static int
  type rte_ivshmem_tests (line 346) | enum rte_ivshmem_tests {
  function launch_all_tests_on_secondary_processes (line 359) | static int
  function test_ivshmem (line 384) | int
  type test_command (line 433) | struct test_command

FILE: app/test/test_kni.c
  type test_kni_stats (line 65) | struct test_kni_stats {
  type rte_eth_rxconf (line 70) | struct rte_eth_rxconf
  type rte_eth_txconf (line 79) | struct rte_eth_txconf
  type rte_eth_conf (line 89) | struct rte_eth_conf
  type rte_kni_ops (line 102) | struct rte_kni_ops
  type rte_kni (line 108) | struct rte_kni
  type test_kni_stats (line 109) | struct test_kni_stats
  type rte_mempool (line 113) | struct rte_mempool
  type rte_mempool (line 116) | struct rte_mempool
  type rte_mempool (line 128) | struct rte_mempool
  function kni_change_mtu (line 134) | static int
  function test_kni_loop (line 158) | static int
  function test_kni_allocate_lcores (line 220) | static int
  function test_kni_register_handler_mp (line 243) | static int
  function test_kni_processing (line 364) | static int
  function test_kni (line 482) | static int
  type test_command (line 672) | struct test_command

FILE: app/test/test_kvargs.c
  function check_handler (line 49) | static int check_handler(const char *key, const char *value,
  function test_valid_kvargs (line 68) | static int test_valid_kvargs(void)
  function test_invalid_kvargs (line 184) | static int test_invalid_kvargs(void)
  function test_kvargs (line 223) | static int
  type test_command (line 235) | struct test_command

FILE: app/test/test_link_bonding.c
  type link_bonding_unittest_params (line 96) | struct link_bonding_unittest_params {
  type ipv4_hdr (line 118) | struct ipv4_hdr
  type ipv6_hdr (line 119) | struct ipv6_hdr
  type udp_hdr (line 120) | struct udp_hdr
  type link_bonding_unittest_params (line 122) | struct link_bonding_unittest_params
  type ether_addr (line 133) | struct ether_addr
  type ether_addr (line 134) | struct ether_addr
  type link_bonding_unittest_params (line 143) | struct link_bonding_unittest_params
  type rte_eth_rxmode (line 166) | struct rte_eth_rxmode
  type rte_fdir_conf (line 178) | struct rte_fdir_conf
  type rte_eth_conf (line 185) | struct rte_eth_conf
  type rte_eth_rxconf (line 202) | struct rte_eth_rxconf
  type rte_eth_txconf (line 212) | struct rte_eth_txconf
  function configure_ethdev (line 224) | static int
  function test_setup (line 262) | static int
  function test_create_bonded_device (line 311) | static int
  function test_create_bonded_device_with_invalid_params (line 352) | static int
  function test_add_slave_to_bonded_device (line 381) | static int
  function test_add_slave_to_invalid_bonded_device (line 411) | static int
  function test_remove_slave_from_bonded_device (line 428) | static int
  function test_remove_slave_from_invalid_bonded_device (line 471) | static int
  function test_add_already_bonded_slave_to_bonded_device (line 491) | static int
  function test_get_slaves_from_bonded_device (line 523) | static int
  function test_add_remove_multiple_slaves_to_from_bonded_device (line 572) | static int
  function enable_bonded_slaves (line 588) | static void
  function test_start_bonded_device (line 602) | static int
  function test_stop_bonded_device (line 653) | static int
  function remove_slaves_and_stop_bonded_device (line 683) | static int
  function test_set_bonding_mode (line 698) | static int
  function test_set_primary_slave (line 750) | static int
  function test_set_explicit_bonded_mac (line 852) | static int
  function test_set_bonded_port_initialization_mac_assignment (line 925) | static int
  function initialize_bonded_device_with_slaves (line 1110) | static int
  function test_adding_slave_after_bonded_device_started (line 1143) | static int
  function test_bonding_lsc_event_callback (line 1176) | static void
  function lsc_timeout (line 1187) | static inline int
  function test_status_interrupt (line 1214) | static int
  function generate_test_burst (line 1304) | static int
  function test_roundrobin_tx_burst (line 1369) | static int
  function verify_mbufs_ref_count (line 1426) | static int
  function free_mbufs (line 1440) | static void
  function test_roundrobin_tx_burst_slave_tx_fail (line 1454) | static int
  function test_roundrobin_rx_burst_on_single_slave (line 1553) | static int
  function test_roundrobin_rx_burst_on_multiple_slaves (line 1634) | static int
  function test_roundrobin_verify_mac_assignment (line 1714) | static int
  function test_roundrobin_verify_promiscuous_enable_disable (line 1796) | static int
  function test_roundrobin_verify_slave_link_status_change_behaviour (line 1843) | static int
  function test_roundrobin_verfiy_polling_slave_link_status_change (line 1988) | static int
  function test_activebackup_tx_burst (line 2078) | static int
  function test_activebackup_rx_burst (line 2154) | static int
  function test_activebackup_verify_promiscuous_enable_disable (line 2240) | static int
  function test_activebackup_verify_mac_assignment (line 2294) | static int
  function test_activebackup_verify_slave_link_status_change_failover (line 2404) | static int
  function test_balance_xmit_policy_configuration (line 2562) | static int
  function test_balance_l2_tx_burst (line 2615) | static int
  function balance_l23_tx_burst (line 2704) | static int
  function test_balance_l23_tx_burst_ipv4_toggle_ip_addr (line 2785) | static int
  function test_balance_l23_tx_burst_vlan_ipv4_toggle_ip_addr (line 2791) | static int
  function test_balance_l23_tx_burst_ipv6_toggle_ip_addr (line 2797) | static int
  function test_balance_l23_tx_burst_vlan_ipv6_toggle_ip_addr (line 2803) | static int
  function test_balance_l23_tx_burst_toggle_mac_addr (line 2809) | static int
  function balance_l34_tx_burst (line 2815) | static int
  function test_balance_l34_tx_burst_ipv4_toggle_ip_addr (line 2897) | static int
  function test_balance_l34_tx_burst_ipv4_toggle_udp_port (line 2903) | static int
  function test_balance_l34_tx_burst_vlan_ipv4_toggle_ip_addr (line 2909) | static int
  function test_balance_l34_tx_burst_ipv6_toggle_ip_addr (line 2915) | static int
  function test_balance_l34_tx_burst_vlan_ipv6_toggle_ip_addr (line 2921) | static int
  function test_balance_l34_tx_burst_ipv6_toggle_udp_port (line 2927) | static int
  function test_balance_tx_burst_slave_tx_fail (line 2939) | static int
  function test_balance_rx_burst (line 3069) | static int
  function test_balance_verify_promiscuous_enable_disable (line 3156) | static int
  function test_balance_verify_mac_assignment (line 3196) | static int
  function test_balance_verify_slave_link_status_change_behaviour (line 3308) | static int
  function test_broadcast_tx_burst (line 3469) | static int
  function test_broadcast_tx_burst_slave_tx_fail (line 3547) | static int
  function test_broadcast_rx_burst (line 3662) | static int
  function test_broadcast_verify_promiscuous_enable_disable (line 3749) | static int
  function test_broadcast_verify_mac_assignment (line 3790) | static int
  function test_broadcast_verify_slave_link_status_change_behaviour (line 3877) | static int
  function test_reconfigure_bonded_device (line 3997) | static int
  function test_close_bonded_device (line 4016) | static int
  function testsuite_teardown (line 4023) | static int
  function free_virtualpmd_tx_queue (line 4035) | static void
  function test_tlb_tx_burst (line 4052) | static int
  function test_tlb_rx_burst (line 4150) | static int
  function test_tlb_verify_promiscuous_enable_disable (line 4235) | static int
  function test_tlb_verify_mac_assignment (line 4290) | static int
  function test_tlb_verify_slave_link_status_change_failover (line 4401) | static int
  function test_alb_change_mac_in_reply_sent (line 4557) | static int
  function test_alb_reply_from_client (line 4671) | static int
  function test_alb_receive_vlan_reply (line 4798) | static int
  function test_alb_ipv4_tx (line 4889) | static int
  type unit_test_suite (line 4925) | struct unit_test_suite
  function test_link_bonding (line 5001) | static int
  type test_command (line 5007) | struct test_command

FILE: app/test/test_link_bonding_mode4.c
  type ether_addr (line 86) | struct ether_addr
  type ether_addr (line 90) | struct ether_addr
  type ether_addr (line 94) | struct ether_addr
  type ether_addr (line 98) | struct ether_addr
  type slave_conf (line 102) | struct slave_conf {
  type ether_vlan_hdr (line 111) | struct ether_vlan_hdr {
  type link_bonding_unittest_params (line 116) | struct link_bonding_unittest_params {
  type link_bonding_unittest_params (line 130) | struct link_bonding_unittest_params
  type rte_eth_conf (line 137) | struct rte_eth_conf
  function slave_get_pkts (line 191) | static int
  function slave_put_pkts (line 204) | static int
  function bond_rx (line 210) | static uint16_t
  function bond_tx (line 216) | static uint16_t
  function free_pkts (line 222) | static void
  function configure_ethdev (line 233) | static int
  function add_slave (line 254) | static int
  function remove_slave (line 293) | static int
  function initialize_bonded_device_with_slaves (line 323) | static int
  function remove_slaves_and_stop_bonded_device (line 347) | static int
  function test_setup (line 377) | static int
  function testsuite_teardown (line 456) | static int
  function make_lacp_reply (line 480) | static int
  function bond_handshake_reply (line 530) | static int
  function bond_handshake_done (line 572) | static int
  function bond_get_update_timeout_ms (line 581) | static unsigned
  function bond_handshake (line 594) | static int
  function test_mode4_lacp (line 640) | static int
  function generate_packets (line 658) | static int
  function generate_and_put_packets (line 705) | static int
  function test_mode4_rx (line 726) | static int
  function test_mode4_tx_burst (line 903) | static int
  function init_marker (line 1060) | static void
  function test_mode4_marker (line 1087) | static int
  function test_mode4_expired (line 1173) | static int
  function check_environment (line 1267) | static int
  function test_mode4_executor (line 1312) | static int
  function test_mode4_lacp_wrapper (line 1353) | static int
  function test_mode4_marker_wrapper (line 1359) | static int
  function test_mode4_rx_wrapper (line 1365) | static int
  function test_mode4_tx_burst_wrapper (line 1371) | static int
  function test_mode4_expired_wrapper (line 1377) | static int
  type unit_test_suite (line 1383) | struct unit_test_suite
  function test_link_bonding_mode4 (line 1397) | static int
  type test_command (line 1403) | struct test_command

FILE: app/test/test_logs.c
  function test_logs (line 61) | static int
  type test_command (line 93) | struct test_command

FILE: app/test/test_lpm.c
  function test0 (line 114) | int32_t
  function test1 (line 139) | int32_t
  function test2 (line 163) | int32_t
  function test3 (line 179) | int32_t
  function test4 (line 212) | int32_t
  function test5 (line 245) | int32_t
  function test6 (line 276) | int32_t
  function test7 (line 308) | int32_t
  function test8 (line 354) | int32_t
  function test9 (line 436) | int32_t
  function test10 (line 599) | int32_t
  function test11 (line 785) | int32_t
  function test12 (line 850) | int32_t
  function test13 (line 902) | int32_t
  function test14 (line 960) | int32_t
  function test15 (line 1011) | int32_t
  function test16 (line 1039) | int32_t
  function test17 (line 1071) | int32_t
  function print_route_distribution (line 1148) | static void
  function perf_test (line 1172) | int32_t
  function test_lpm (line 1333) | static int
  type test_command (line 1350) | struct test_command

FILE: app/test/test_lpm6.c
  function IPv6 (line 135) | static void
  function test0 (line 163) | int32_t
  function test1 (line 205) | int32_t
  function test2 (line 237) | int32_t
  function test3 (line 266) | int32_t
  function test4 (line 287) | int32_t
  function test5 (line 326) | int32_t
  function test6 (line 364) | int32_t
  function test7 (line 402) | int32_t
  function test8 (line 440) | int32_t
  function test9 (line 479) | int32_t
  function test10 (line 523) | int32_t
  function test11 (line 567) | int32_t
  function test12 (line 627) | int32_t
  function test13 (line 665) | int32_t
  function test14 (line 712) | int32_t
  function test15 (line 764) | int32_t
  function test16 (line 800) | int32_t
  function test17 (line 842) | int32_t
  function test18 (line 909) | int32_t
  function test19 (line 1071) | int32_t
  function test20 (line 1269) | int32_t
  function test21 (line 1336) | int32_t
  function test22 (line 1394) | int32_t
  function test23 (line 1510) | int32_t
  function test24 (line 1558) | int32_t
  function test25 (line 1594) | int32_t
  function test26 (line 1640) | int32_t
  function test27 (line 1720) | int32_t
  function print_route_distribution (line 1771) | static void
  function perf_test (line 1795) | int32_t
  function test_lpm6 (line 1903) | static int
  type test_command (line 1921) | struct test_command

FILE: app/test/test_lpm6_routes.h
  type rules_tbl_entry (line 36) | struct rules_tbl_entry {
  type ips_tbl_entry (line 42) | struct ips_tbl_entry {
  type rules_tbl_entry (line 47) | struct rules_tbl_entry
  type ips_tbl_entry (line 1051) | struct ips_tbl_entry

FILE: app/test/test_malloc.c
  function is_memory_overlap (line 69) | static int
  function is_aligned (line 82) | static int
  function test_align_overlap_per_lcore (line 93) | static int
  function test_reordered_free_per_lcore (line 165) | static int
  function test_str_to_size (line 262) | static int
  function test_multi_alloc_statistics (line 290) | static int
  function test_rte_malloc_type_limits (line 387) | static int
  function test_realloc (line 399) | static int
  function test_random_alloc_free (line 567) | static int
  function test_rte_malloc_validate (line 621) | static int
  function test_zero_aligned_alloc (line 695) | static int
  function test_malloc_bad_params (line 712) | static int
  function is_mem_on_socket (line 742) | static int
  function addr_to_socket (line 759) | static int32_t
  function test_alloc_single_socket (line 775) | static int
  function test_alloc_socket (line 817) | static int
  function test_malloc (line 852) | static int
  type test_command (line 962) | struct test_command

FILE: app/test/test_mbuf.c
  type rte_mempool (line 85) | struct rte_mempool
  type rte_mempool (line 86) | struct rte_mempool
  type rte_mempool (line 90) | struct rte_mempool
  type rte_ring (line 91) | struct rte_ring
  function test_pktmbuf_with_non_ascii_data (line 146) | static int
  function test_one_pktmbuf (line 184) | static int
  function testclone_testupdate_testdetach (line 330) | static int
  function test_attach_from_different_pool (line 434) | static int
  function test_pktmbuf_pool (line 540) | static int
  function test_pktmbuf_pool_ptr (line 581) | static int
  function test_pktmbuf_free_segment (line 634) | static int
  function test_refcnt_slave (line 678) | static int
  function test_refcnt_iter (line 702) | static void
  function test_refcnt_master (line 758) | static int
  function test_refcnt_mbuf (line 778) | static int
  function verify_mbuf_check_panics (line 846) | static int
  function test_failing_mbuf_sanity_check (line 868) | static int
  function test_mbuf (line 930) | static int
  type test_command (line 1025) | struct test_command

FILE: app/test/test_memcpy.c
  function test_single_memcpy (line 90) | static int
  function func_test (line 146) | static int
  function test_memcpy (line 166) | static int
  type test_command (line 177) | struct test_command

FILE: app/test/test_memcpy_perf.c
  function init_buffers (line 93) | static int
  function free_buffers (line 133) | static void
  function get_rand_offset (line 146) | static inline size_t
  function fill_addr_arrays (line 154) | static inline void
  function do_uncached_write (line 171) | static void
  function perf_test_constant_aligned (line 253) | static inline void
  function perf_test_constant_unaligned (line 262) | static inline void
  function perf_test_variable_aligned (line 271) | static inline void
  function perf_test_variable_unaligned (line 282) | static inline void
  function perf_test (line 293) | static int
  function test_memcpy_perf (line 337) | static int
  type test_command (line 348) | struct test_command

FILE: app/test/test_memory.c
  function test_memory (line 54) | static int
  type test_command (line 88) | struct test_command

FILE: app/test/test_mempool.c
  type rte_mempool (line 80) | struct rte_mempool
  type rte_mempool (line 81) | struct rte_mempool
  function my_obj_init (line 91) | static void
  function test_mempool_basic (line 101) | static int
  function test_mempool_creation_with_exceeded_cache_size (line 196) | static int test_mempool_creation_with_exceeded_cache_size(void)
  type rte_mempool (line 213) | struct rte_mempool
  function test_mempool_single_producer (line 220) | static int test_mempool_single_producer(void)
  function test_mempool_single_consumer (line 260) | static int test_mempool_single_consumer(void)
  function test_mempool_launch_single_consumer (line 294) | static int test_mempool_launch_single_consumer(__attribute__((unused)) v...
  function my_mp_init (line 299) | static void my_mp_init(struct rte_mempool * mp, __attribute__((unused)) ...
  function test_mempool_sp_sc (line 309) | static int
  function test_mempool_basic_ex (line 351) | static int
  function test_mempool_same_name_twice_creation (line 406) | static int
  function test_mempool_xmem_misc (line 433) | static int
  function test_mempool (line 457) | static int
  type test_command (line 524) | struct test_command

FILE: app/test/test_mempool_perf.c
  type rte_mempool (line 99) | struct rte_mempool
  type rte_mempool (line 100) | struct rte_mempool
  type mempool_test_stats (line 112) | struct mempool_test_stats {
  type mempool_test_stats (line 116) | struct mempool_test_stats
  function my_obj_init (line 122) | static void
  function per_lcore_mempool_test (line 131) | static int
  function launch_cores (line 188) | static int
  function do_one_mempool_test (line 247) | static int
  function test_mempool_perf (line 275) | static int
  type test_command (line 332) | struct test_command

FILE: app/test/test_memzone.c
  function is_memory_overlap (line 80) | static int
  function test_memzone_invalid_alignment (line 90) | static int
  function test_memzone_reserving_zone_size_bigger_than_the_maximum (line 110) | static int
  function test_memzone_reserve_flags (line 131) | static int
  function find_max_block_free_size (line 386) | static size_t
  function test_memzone_reserve_max (line 408) | static int
  function test_memzone_reserve_max_aligned (line 440) | static int
  function test_memzone_aligned (line 479) | static int
  function check_memzone_bounded (line 599) | static int
  function test_memzone_bounded (line 644) | static int
  function test_memzone_free (line 684) | static int
  function test_memzone (line 760) | static int
  type test_command (line 875) | struct test_command

FILE: app/test/test_meter.c
  type rte_meter_srtcm_params (line 67) | struct rte_meter_srtcm_params
  type rte_meter_trtcm_params (line 72) | struct	rte_meter_trtcm_params
  function tm_test_srtcm_config (line 81) | static inline int
  function tm_test_trtcm_config (line 131) | static inline int
  function tm_test_srtcm_color_blind_check (line 183) | static inline int
  function tm_test_trtcm_color_blind_check (line 232) | static inline int
  function tm_test_srtcm_aware_check (line 289) | static inline int
  function tm_test_srtcm_color_aware_check (line 333) | static inline int
  function tm_test_trtcm_aware_check (line 387) | static inline int
  function tm_test_trtcm_color_aware_check (line 432) | static inline int
  function test_meter (line 472) | static int
  type test_command (line 497) | struct test_command

FILE: app/test/test_mp_secondary.c
  function run_secondary_instances (line 116) | static int
  function run_object_creation_tests (line 174) | static int
  function test_mp_secondary (line 259) | int
  type test_command (line 276) | struct test_command

FILE: app/test/test_pci.c
  type rte_pci_driver (line 64) | struct rte_pci_driver
  type rte_pci_device (line 65) | struct rte_pci_device
  type rte_pci_id (line 68) | struct rte_pci_id
  type rte_pci_id (line 76) | struct rte_pci_id
  type rte_pci_driver (line 86) | struct rte_pci_driver
  type rte_pci_driver (line 93) | struct rte_pci_driver
  function my_driver_init (line 100) | static int
  function blacklist_all_devices (line 113) | static void
  function free_devargs_list (line 135) | static void free_devargs_list(void)
  function test_pci (line 148) | int
  type test_command (line 207) | struct test_command

FILE: app/test/test_per_lcore.c
  function assign_vars (line 68) | static int
  function display_vars (line 77) | static int
  function test_per_lcore_delay (line 92) | static int
  function test_per_lcore (line 101) | static int
  type test_command (line 139) | struct test_command

FILE: app/test/test_pmd_perf.c
  type rte_mempool (line 88) | struct rte_mempool
  type ether_addr (line 90) | struct ether_addr
  type rte_eth_conf (line 92) | struct rte_eth_conf
  type rte_eth_rxconf (line 112) | struct rte_eth_rxconf
  type rte_eth_txconf (line 121) | struct rte_eth_txconf
  type lcore_conf (line 142) | struct lcore_conf {
  type lcore_conf (line 149) | struct lcore_conf
  function check_all_ports_link_status (line 162) | static void
  function print_ethaddr (line 215) | static void
  function init_traffic (line 223) | static int
  function init_lcores (line 254) | static int
  function init_mbufpool (line 271) | static int
  function alloc_lcore (line 306) | static uint16_t
  function reset_count (line 329) | static void
  function stats_display (line 337) | static void
  function signal_handler (line 356) | static void
  type rte_mbuf (line 370) | struct rte_mbuf
  type lcore_conf (line 372) | struct lcore_conf
  type rte_mbuf (line 373) | struct rte_mbuf
  function measure_rxtx (line 376) | static uint64_t
  function measure_rxonly (line 414) | static uint64_t
  function measure_txonly (line 452) | static uint64_t
  function main_loop (line 492) | static int
  function poll_burst (line 565) | static inline int
  function exec_burst (line 635) | static int
  function test_pmd_perf (line 687) | static int
  function test_set_rxtx_conf (line 830) | int
  function test_set_rxtx_anchor (line 875) | int
  function test_set_rxtx_sc (line 894) | int
  type test_command (line 913) | struct test_command

FILE: app/test/test_pmd_ring.c
  type rte_mempool (line 40) | struct rte_mempool
  function test_ethdev_configure (line 53) | static int
  function test_send_basic_packets (line 124) | static int
  function test_get_stats (line 155) | static int
  function test_stats_reset (line 192) | static int
  function test_pmd_ring_pair_create_attach (line 244) | static int
  function test_pmd_ring (line 405) | static int
  type test_command (line 441) | struct test_command

FILE: app/test/test_power.c
  function test_power (line 44) | static int
  type test_command (line 107) | struct test_command

FILE: app/test/test_power_acpi_cpufreq.c
  function check_cur_freq (line 54) | static int
  function check_power_freqs (line 85) | static int
  function check_power_get_freq (line 135) | static int
  function check_power_set_freq (line 165) | static int
  function check_power_freq_down (line 215) | static int
  function check_power_freq_up (line 270) | static int
  function check_power_freq_max (line 325) | static int
  function check_power_freq_min (line 353) | static int
  function test_power_acpi_cpufreq (line 380) | static int
  type test_command (line 540) | struct test_command

FILE: app/test/test_power_kvm_vm.c
  function test_power_kvm_vm (line 49) | static int
  type test_command (line 304) | struct test_command

FILE: app/test/test_prefetch.c
  function test_prefetch (line 49) | static int
  type test_command (line 61) | struct test_command

FILE: app/test/test_red.c
  type test_rte_red_config (line 62) | struct test_rte_red_config {        /**< Test structure for RTE_RED conf...
  type test_queue (line 71) | struct test_queue {                 /**< Test structure for RTE_RED Queu...
  type test_var (line 82) | struct test_var {                   /**< Test variables used for testing...
  type test_config (line 92) | struct test_config {                /**< Master test structure for RTE_R...
  type test_result (line 102) | enum test_result {
  type tests (line 108) | struct tests {
  type rdtsc_prof (line 113) | struct rdtsc_prof {
  function init_port_ts (line 126) | static void init_port_ts(uint64_t cpu_clock)
  function get_port_ts (line 133) | static uint64_t get_port_ts(void)
  function rdtsc_prof_init (line 138) | static void rdtsc_prof_init(struct rdtsc_prof *p, const char *name)
  function rdtsc_prof_start (line 147) | static inline void rdtsc_prof_start(struct rdtsc_prof *p)
  function rdtsc_prof_end (line 161) | static inline void rdtsc_prof_end(struct rdtsc_prof *p)
  function rdtsc_prof_print (line 174) | static void rdtsc_prof_print(struct rdtsc_prof *p)
  function rte_red_get_avg_int (line 186) | static uint32_t rte_red_get_avg_int(const struct rte_red_config *red_cfg,
  function rte_red_get_avg_float (line 195) | static double rte_red_get_avg_float(const struct rte_red_config *red_cfg,
  function rte_red_set_avg_int (line 204) | static void rte_red_set_avg_int(const struct rte_red_config *red_cfg,
  function calc_exp_avg_on_empty (line 214) | static double calc_exp_avg_on_empty(double avg, uint32_t n, uint32_t tim...
  function calc_drop_rate (line 219) | static double calc_drop_rate(uint32_t enqueued, uint32_t dropped)
  function calc_drop_prob (line 227) | static double calc_drop_prob(uint32_t min_th, uint32_t max_th,
  function check_drop_rate (line 247) | static int check_drop_rate(double *diff, double drop_rate, double drop_p...
  function check_avg (line 267) | static int check_avg(double *diff, double avg, double exp_avg, double to...
  function get_machclk_freq (line 287) | static uint64_t get_machclk_freq(void)
  function test_rte_red_init (line 324) | static enum test_result
  function increase_actual_qsize (line 351) | static int
  function increase_average_qsize (line 386) | static int
  type rte_red_config (line 417) | struct rte_red_config
  type rte_red (line 418) | struct rte_red
  type test_rte_red_config (line 426) | struct test_rte_red_config
  type test_queue (line 435) | struct test_queue
  type test_var (line 446) | struct test_var
  function enqueue_dequeue_func (line 459) | static void enqueue_dequeue_func(struct rte_red_config *red_cfg,
  type test_config (line 487) | struct test_config
  function func_test1 (line 507) | static enum test_result func_test1(struct test_config *tcfg)
  type rte_red_config (line 593) | struct rte_red_config
  type test_rte_red_config (line 595) | struct test_rte_red_config
  type test_config (line 604) | struct test_config
  function func_test2 (line 624) | static enum test_result func_test2(struct test_config *tcfg)
  type test_rte_red_config (line 703) | struct test_rte_red_config
  type test_config (line 712) | struct test_config
  function func_test3 (line 731) | static enum test_result func_test3(struct test_config *tcfg)
  type test_rte_red_config (line 817) | struct test_rte_red_config
  type test_queue (line 826) | struct test_queue
  type test_config (line 837) | struct test_config
  function func_test4 (line 858) | static enum test_result func_test4(struct test_config *tcfg)
  type rte_red_config (line 959) | struct rte_red_config
  type rte_red (line 960) | struct rte_red
  type test_rte_red_config (line 965) | struct test_rte_red_config
  type test_queue (line 974) | struct test_queue
  type test_var (line 985) | struct test_var
  type test_config (line 995) | struct test_config
  function func_test5 (line 1018) | static enum test_result func_test5(struct test_config *tcfg)
  type rte_red_config (line 1099) | struct rte_red_config
  type rte_red (line 1100) | struct rte_red
  type test_rte_red_config (line 1103) | struct test_rte_red_config
  type test_queue (line 1112) | struct test_queue
  type test_config (line 1123) | struct test_config
  function func_test6 (line 1145) | static enum test_result func_test6(struct test_config *tcfg)
  type rte_red_config (line 1227) | struct rte_red_config
  type rte_red (line 1228) | struct rte_red
  type test_rte_red_config (line 1236) | struct test_rte_red_config
  type test_queue (line 1245) | struct test_queue
  function enqueue_dequeue_perf (line 1259) | static void enqueue_dequeue_perf(struct rte_red_config *red_cfg,
  type test_var (line 1294) | struct test_var
  type test_config (line 1304) | struct test_config
  type test_config (line 1315) | struct test_config
  type test_config (line 1326) | struct test_config
  function perf1_test (line 1341) | static enum test_result perf1_test(struct test_config *tcfg)
  type test_var (line 1403) | struct test_var
  type test_config (line 1412) | struct test_config
  type test_config (line 1431) | struct test_config
  type test_config (line 1450) | struct test_config
  function perf2_test (line 1473) | static enum test_result perf2_test(struct test_config *tcfg)
  type rte_red_config (line 1588) | struct rte_red_config
  type rte_red (line 1589) | struct rte_red
  type test_rte_red_config (line 1598) | struct test_rte_red_config
  type test_queue (line 1607) | struct test_queue
  type test_var (line 1618) | struct test_var
  function ovfl_check_avg (line 1628) | static void ovfl_check_avg(uint32_t avg)
  type test_config (line 1642) | struct test_config
  function ovfl_test1 (line 1663) | static enum test_result ovfl_test1(struct test_config *tcfg)
  type tests (line 1749) | struct tests
  type tests (line 1759) | struct tests
  function run_tests (line 1771) | static void run_tests(struct tests *test_type, uint32_t test_count, uint...
  function test_invalid_parameters (line 1799) | static int
  function test_red (line 1862) | static int
  type test_command (line 1885) | struct test_command

FILE: app/test/test_reorder.c
  type reorder_unittest_params (line 54) | struct reorder_unittest_params {
  type reorder_unittest_params (line 59) | struct reorder_unittest_params
  type reorder_unittest_params (line 64) | struct reorder_unittest_params
  function test_reorder_create (line 66) | static int
  function test_reorder_init (line 87) | static int
  function test_reorder_find_existing (line 123) | static int
  function test_reorder_free (line 141) | static int
  function test_reorder_insert (line 162) | static int
  function test_reorder_drain (line 242) | static int
  function test_setup (line 336) | static int
  type unit_test_suite (line 364) | struct unit_test_suite
  function test_reorder (line 379) | static int
  type test_command (line 385) | struct test_command

FILE: app/test/test_ring.c
  type rte_ring (line 108) | struct rte_ring
  function check_live_watermark_change (line 120) | static int
  function test_live_watermark_change (line 184) | static int
  function test_set_watermark (line 208) | static int
  function test_ring_basic_full_empty (line 240) | static int
  function test_ring_basic (line 280) | static int
  function test_ring_burst_basic (line 488) | static int
  function test_ring_stats (line 776) | static int
  function test_ring_creation_with_wrong_size (line 1189) | static int
  function test_ring_creation_with_an_used_name (line 1211) | static int
  function test_create_count_odd (line 1227) | static int
  function test_lookup_null (line 1238) | static int
  function test_ring_basic_ex (line 1253) | static int
  function test_ring (line 1324) | static int
  type test_command (line 1395) | struct test_command

FILE: app/test/test_ring_perf.c
  type rte_ring (line 64) | struct rte_ring
  type lcore_pair (line 66) | struct lcore_pair {
  function get_two_hyperthreads (line 74) | static int
  function get_two_cores (line 100) | static int
  function get_two_sockets (line 123) | static int
  function test_empty_dequeue (line 145) | static void
  type thread_params (line 173) | struct thread_params {
  function enqueue_bulk (line 182) | static int
  function dequeue_bulk (line 217) | static int
  function run_on_core_pair (line 252) | static void
  function test_single_enqueue_dequeue (line 282) | static void
  function test_burst_enqueue_dequeue (line 315) | static void
  function test_bulk_enqueue_dequeue (line 349) | static void
  function test_ring_perf (line 384) | static int
  type test_command (line 417) | struct test_command

FILE: app/test/test_rwlock.c
  function test_rwlock_per_core (line 79) | static int
  function test_rwlock (line 99) | static int
  type test_command (line 132) | struct test_command

FILE: app/test/test_sched.c
  type rte_sched_subport_params (line 54) | struct rte_sched_subport_params
  type rte_sched_pipe_params (line 64) | struct rte_sched_pipe_params
  type rte_sched_port_params (line 76) | struct rte_sched_port_params
  type rte_mempool (line 94) | struct rte_mempool
  type rte_mempool (line 97) | struct rte_mempool
  function prepare_pkt (line 107) | static void
  function test_sched (line 138) | static int
  type test_command (line 216) | struct test_command

FILE: app/test/test_spinlock.c
  function test_spinlock_per_core (line 85) | static int
  function test_spinlock_recursive_per_core (line 99) | static int
  function load_loop_fn (line 134) | static int
  function test_spinlock_perf (line 162) | static int
  function test_spinlock_try (line 210) | static int
  function test_spinlock (line 227) | static int
  type test_command (line 336) | struct test_command

FILE: app/test/test_string_fns.c
  function test_rte_strsplit (line 51) | static int
  function test_string_fns (line 161) | static int
  type test_command (line 169) | struct test_command

FILE: app/test/test_table.c
  type rte_pipeline (line 47) | struct rte_pipeline
  type rte_ring (line 48) | struct rte_ring
  type rte_ring (line 49) | struct rte_ring
  type rte_mempool (line 50) | struct rte_mempool
  function pipeline_test_hash (line 74) | uint64_t pipeline_test_hash(void *key,
  function app_init_mbuf_pools (line 85) | static void
  function app_init_rings (line 102) | static void
  function test_table (line 141) | static int
  type test_command (line 202) | struct test_command

FILE: app/test/test_table.h
  type rte_pipeline (line 134) | struct rte_pipeline
  type rte_ring (line 135) | struct rte_ring
  type rte_ring (line 136) | struct rte_ring
  type rte_mempool (line 137) | struct rte_mempool
  type manage_ops (line 157) | struct manage_ops {
  type rte_port_in (line 164) | struct rte_port_in {
  type rte_port_out (line 171) | struct rte_port_out {
  type rte_table (line 176) | struct rte_table {
  type rte_pipeline (line 188) | struct rte_pipeline {

FILE: app/test/test_table_acl.c
  type ipv4_5tuple (line 47) | struct ipv4_5tuple {
  type rte_acl_field_def (line 64) | struct rte_acl_field_def
  type ipv4_5tuple (line 70) | struct ipv4_5tuple
  type ipv4_5tuple (line 77) | struct ipv4_5tuple
  type ipv4_5tuple (line 84) | struct ipv4_5tuple
  type ipv4_5tuple (line 91) | struct ipv4_5tuple
  type ipv4_5tuple (line 98) | struct ipv4_5tuple
  type rte_table_acl_rule_add_params (line 102) | struct rte_table_acl_rule_add_params
  type rte_table_acl_rule_add_params (line 105) | struct rte_table_acl_rule_add_params
  function parse_ipv4_net (line 136) | static int
  function parse_port_range (line 153) | static int
  function parse_cb_ipv4_rule (line 167) | static int
  function setup_acl_pipeline (line 273) | static int
  function test_pipeline_single_filter (line 504) | static int
  function test_table_ACL (line 581) | int

FILE: app/test/test_table_combined.c
  type check_table_result (line 42) | enum check_table_result {
  type table_packets (line 56) | struct table_packets {
  function test_table_type (line 77) | static int
  function test_table_stub_combined (line 267) | int
  function test_table_lpm_combined (line 289) | int
  function test_table_lpm_ipv6_combined (line 348) | int
  function test_table_hash8lru (line 410) | int
  function test_table_hash16lru (line 468) | int
  function test_table_hash32lru (line 526) | int
  function test_table_hash8ext (line 584) | int
  function test_table_hash16ext (line 650) | int
  function test_table_hash32ext (line 716) | int

FILE: app/test/test_table_pipeline.c
  type rte_mbuf (line 45) | struct rte_mbuf
  type rte_mbuf (line 47) | struct rte_mbuf
  type rte_mbuf (line 49) | struct rte_mbuf
  function rte_pipeline_port_out_action_handler (line 52) | rte_pipeline_port_out_action_handler port_action_0x00(struct rte_mbuf **...
  function rte_pipeline_port_out_action_handler (line 65) | rte_pipeline_port_out_action_handler port_action_0xFF(struct rte_mbuf **...
  function rte_pipeline_port_out_action_handler (line 78) | rte_pipeline_port_out_action_handler port_action_stub(struct rte_mbuf **...
  type rte_mbuf (line 94) | struct rte_mbuf
  type rte_pipeline_table_entry (line 95) | struct rte_pipeline_table_entry
  type rte_mbuf (line 98) | struct rte_mbuf
  type rte_pipeline_table_entry (line 99) | struct rte_pipeline_table_entry
  type rte_mbuf (line 102) | struct rte_mbuf
  type rte_pipeline_table_entry (line 103) | struct rte_pipeline_table_entry
  function rte_pipeline_table_action_handler_hit (line 105) | rte_pipeline_table_action_handler_hit
  function rte_pipeline_table_action_handler_hit (line 116) | rte_pipeline_table_action_handler_hit
  function rte_pipeline_table_action_handler_miss (line 128) | rte_pipeline_table_action_handler_miss
  type e_test_type (line 141) | enum e_test_type {
  function cleanup_pipeline (line 167) | static int
  function check_pipeline_invalid_params (line 179) | static int
  function setup_pipeline (line 236) | static int
  function test_pipeline_single_filter (line 425) | static int
  function test_table_pipeline (line 521) | int

FILE: app/test/test_table_ports.c
  function test_port_ring_reader (line 45) | int
  function test_port_ring_writer (line 109) | int

FILE: app/test/test_table_tables.c
  type rte_table_ops (line 67) | struct rte_table_ops
  type rte_table_ops (line 69) | struct rte_table_ops
  type rte_bucket_4_8 (line 71) | struct rte_bucket_4_8 {
  function test_lru_update (line 88) | static int test_lru_update(void)
  function test_table_stub (line 160) | int
  function test_table_array (line 194) | int
  function test_table_lpm (line 310) | int
  function test_table_lpm_ipv6 (line 466) | int
  function test_table_hash_lru_generic (line 636) | static int
  function test_table_hash_ext_generic (line 750) | static int
  function test_table_hash_lru (line 870) | int
  function test_table_hash_ext (line 899) | int

FILE: app/test/test_tailq.c
  type rte_tailq_elem (line 53) | struct rte_tailq_elem
  type rte_tailq_elem (line 61) | struct rte_tailq_elem
  type rte_tailq_entry (line 65) | struct rte_tailq_entry
  type rte_tailq_entry (line 66) | struct rte_tailq_entry
  function test_tailq_early (line 68) | static int
  function test_tailq_create (line 84) | static int
  function test_tailq_lookup (line 110) | static int
  function test_tailq (line 147) | static int
  type test_command (line 157) | struct test_command

FILE: app/test/test_thash.c
  type test_thash_v4 (line 42) | struct test_thash_v4 {
  type test_thash_v6 (line 51) | struct test_thash_v6 {
  type test_thash_v4 (line 61) | struct test_thash_v4
  type test_thash_v6 (line 74) | struct test_thash_v6
  function test_thash (line 106) | static int
  type test_command (line 172) | struct test_command

FILE: app/test/test_timer.c
  type mytimerinfo (line 148) | struct mytimerinfo {
  type mytimerinfo (line 154) | struct mytimerinfo
  type rte_timer (line 156) | struct rte_timer
  function mytimer_reset (line 158) | static void
  function timer_stress_cb (line 168) | static void
  function timer_stress_main_loop (line 194) | static int
  function master_init_slaves (line 237) | static void
  function master_start_slaves (line 247) | static void
  function master_wait_for_slaves (line 261) | static void
  function slave_wait_to_start (line 272) | static void
  function slave_finish (line 282) | static void
  function timer_stress2_cb (line 295) | static void
  function timer_stress2_main_loop (line 303) | static int
  function timer_basic_cb (line 432) | static void
  function timer_basic_main_loop (line 488) | static int
  function timer_sanity_check (line 526) | static int
  function test_timer (line 563) | static int
  type test_command (line 629) | struct test_command

FILE: app/test/test_timer_perf.c
  function timer_cb (line 50) | static void
  function test_timer_perf (line 64) | static int
  type test_command (line 161) | struct test_command

FILE: app/test/test_timer_racecond.c
  type rte_timer (line 59) | struct rte_timer
  type rte_timer (line 65) | struct rte_timer
  function timer_cb (line 67) | static void
  function reload_timer (line 84) | static int
  function slave_main_loop (line 107) | static int
  function test_timer_racecond (line 143) | static int
  type test_command (line 205) | struct test_command

FILE: app/test/test_version.c
  function test_version (line 44) | static int
  type test_command (line 57) | struct test_command

FILE: app/test/virtual_pmd.c
  type virtual_ethdev_private (line 47) | struct virtual_ethdev_private {
  type virtual_ethdev_queue (line 57) | struct virtual_ethdev_queue {
  function virtual_ethdev_start_success (line 62) | static int
  function virtual_ethdev_start_fail (line 70) | static int
  function virtual_ethdev_stop (line 77) | static void  virtual_ethdev_stop(struct rte_eth_dev *eth_dev __rte_unused)
  function virtual_ethdev_close (line 91) | static void
  function virtual_ethdev_configure_success (line 95) | static int
  function virtual_ethdev_configure_fail (line 101) | static int
  function virtual_ethdev_info_get (line 107) | static void
  function virtual_ethdev_rx_queue_setup_success (line 123) | static int
  function virtual_ethdev_rx_queue_setup_fail (line 146) | static int
  function virtual_ethdev_tx_queue_setup_success (line 156) | static int
  function virtual_ethdev_tx_queue_setup_fail (line 178) | static int
  function virtual_ethdev_rx_queue_release (line 187) | static void
  function virtual_ethdev_tx_queue_release (line 192) | static void
  function virtual_ethdev_link_update_success (line 197) | static int
  function virtual_ethdev_link_update_fail (line 207) | static int
  function virtual_ethdev_stats_get (line 214) | static void
  function virtual_ethdev_stats_reset (line 223) | static void
  function virtual_ethdev_promiscuous_mode_enable (line 236) | static void
  function virtual_ethdev_promiscuous_mode_disable (line 240) | static void
  type eth_dev_ops (line 245) | struct eth_dev_ops
  function virtual_ethdev_start_fn_set_success (line 263) | void
  function virtual_ethdev_configure_fn_set_success (line 277) | void
  function virtual_ethdev_rx_queue_setup_fn_set_success (line 290) | void
  function virtual_ethdev_tx_queue_setup_fn_set_success (line 303) | void
  function virtual_ethdev_link_update_fn_set_success (line 316) | void
  function virtual_ethdev_rx_burst_success (line 330) | static uint16_t
  function virtual_ethdev_rx_burst_fail (line 358) | static uint16_t
  function virtual_ethdev_tx_burst_success (line 366) | static uint16_t
  function virtual_ethdev_tx_burst_fail (line 396) | static uint16_t
  function virtual_ethdev_rx_burst_fn_set_success (line 432) | void
  function virtual_ethdev_tx_burst_fn_set_success (line 444) | void
  function virtual_ethdev_tx_burst_fn_set_tx_pkt_fail_count (line 460) | void
  function virtual_ethdev_set_link_status (line 472) | void
  function virtual_ethdev_simulate_link_status_interrupt (line 480) | void
  function virtual_ethdev_add_mbufs_to_rx_queue (line 491) | int
  function virtual_ethdev_get_mbufs_from_tx_queue (line 503) | int
  function get_number_of_sockets (line 515) | static uint8_t
  function virtual_ethdev_create (line 530) | int

FILE: app/test/virtual_pmd.h
  type ether_addr (line 47) | struct ether_addr
  type rte_mbuf (line 59) | struct rte_mbuf
  type rte_mbuf (line 63) | struct rte_mbuf

FILE: doc/guides/conf.py
  class CustomLatexFormatter (line 82) | class CustomLatexFormatter(LatexFormatter):
    method __init__ (line 83) | def __init__(self, **options):
  function numref_role (line 97) | def numref_role(reftype, rawtext, text, lineno, inliner):
  function process_numref (line 110) | def process_numref(app, doctree, from_docname):
  function setup (line 145) | def setup(app):

FILE: drivers/net/af_packet/rte_eth_af_packet.c
  type pkt_rx_queue (line 68) | struct pkt_rx_queue {
  type pkt_tx_queue (line 82) | struct pkt_tx_queue {
  type pmd_internals (line 94) | struct pmd_internals {
  type rte_eth_link (line 117) | struct rte_eth_link
  function eth_af_packet_rx (line 123) | static uint16_t
  function eth_af_packet_tx (line 176) | static uint16_t
  function eth_dev_start (line 231) | static int
  function eth_dev_stop (line 241) | static void
  function eth_dev_configure (line 260) | static int
  function eth_dev_info (line 266) | static void
  function eth_stats_get (line 281) | static void
  function eth_stats_reset (line 309) | static void
  function eth_dev_close (line 324) | static void
  function eth_queue_release (line 329) | static void
  function eth_link_update (line 334) | static int
  function eth_rx_queue_setup (line 341) | static int
  function eth_tx_queue_setup (line 371) | static int
  type eth_dev_ops (line 385) | struct eth_dev_ops
  function open_packet_iface (line 403) | static int
  function rte_pmd_init_internals (line 420) | static int
  function rte_eth_from_packet (line 702) | static int
  function rte_pmd_af_packet_devinit (line 803) | int
  type rte_driver (line 841) | struct rte_driver

FILE: drivers/net/bnx2x/bnx2x.c
  type pbf_pN_buf_regs (line 67) | struct pbf_pN_buf_regs {
  type pbf_pN_cmd_regs (line 74) | struct pbf_pN_cmd_regs {
  type bnx2x_prev_list_node (line 84) | struct bnx2x_prev_list_node {
  type bnx2x_softc (line 99) | struct bnx2x_softc
  type bnx2x_softc (line 101) | struct bnx2x_softc
  type bnx2x_softc (line 102) | struct bnx2x_softc
  type cmng_init (line 102) | struct cmng_init
  type bnx2x_softc (line 104) | struct bnx2x_softc
  type bnx2x_softc (line 105) | struct bnx2x_softc
  type bnx2x_softc (line 106) | struct bnx2x_softc
  type bnx2x_softc (line 107) | struct bnx2x_softc
  type bnx2x_softc (line 108) | struct bnx2x_softc
  type bnx2x_softc (line 110) | struct bnx2x_softc
  type bnx2x_softc (line 111) | struct bnx2x_softc
  type bnx2x_softc (line 112) | struct bnx2x_softc
  type bnx2x_softc (line 113) | struct bnx2x_softc
  type bnx2x_fastpath (line 114) | struct bnx2x_fastpath
  type bnx2x_softc (line 116) | struct bnx2x_softc
  type bnx2x_softc (line 117) | struct bnx2x_softc
  type bnx2x_softc (line 118) | struct bnx2x_softc
  type bnx2x_softc (line 119) | struct bnx2x_softc
  type bnx2x_softc (line 120) | struct bnx2x_softc
  type bnx2x_softc (line 121) | struct bnx2x_softc
  type bnx2x_softc (line 123) | struct bnx2x_softc
  type bnx2x_softc (line 125) | struct bnx2x_softc
  type bnx2x_fastpath (line 126) | struct bnx2x_fastpath
  type bnx2x_softc (line 127) | struct bnx2x_softc
  type bnx2x_softc (line 128) | struct bnx2x_softc
  function bnx2x_test_bit (line 132) | int bnx2x_test_bit(int nr, volatile unsigned long *addr)
  function bnx2x_set_bit (line 142) | void bnx2x_set_bit(unsigned int nr, volatile unsigned long *addr)
  function bnx2x_clear_bit (line 147) | void bnx2x_clear_bit(int nr, volatile unsigned long *addr)
  function bnx2x_test_and_clear_bit (line 152) | int bnx2x_test_and_clear_bit(int nr, volatile unsigned long *addr)
  function bnx2x_cmpxchg (line 158) | int bnx2x_cmpxchg(volatile int *addr, int old, int new)
  function bnx2x_dma_alloc (line 163) | int
  function bnx2x_acquire_hw_lock (line 194) | static int bnx2x_acquire_hw_lock(struct bnx2x_softc *sc, uint32_t resource)
  function bnx2x_release_hw_lock (line 242) | static int bnx2x_release_hw_lock(struct bnx2x_softc *sc, uint32_t resource)
  function bnx2x_post_dmae (line 280) | void bnx2x_post_dmae(struct bnx2x_softc *sc, struct dmae_command *dmae, ...
  function bnx2x_dmae_opcode_add_comp (line 293) | uint32_t bnx2x_dmae_opcode_add_comp(uint32_t opcode, uint8_t comp_type)
  function bnx2x_dmae_opcode_clr_src_reset (line 299) | uint32_t bnx2x_dmae_opcode_clr_src_reset(uint32_t opcode)
  function bnx2x_dmae_opcode (line 304) | uint32_t
  function bnx2x_prep_dmae_with_comp (line 335) | static void
  function bnx2x_issue_dmae_with_comp (line 352) | static int
  function bnx2x_read_dmae (line 387) | void bnx2x_read_dmae(struct bnx2x_softc *sc, uint32_t src_addr, uint32_t...
  function bnx2x_write_dmae (line 420) | void
  function bnx2x_write_dmae_phys_len (line 448) | static void
  function bnx2x_set_ctx_validation (line 468) | void
  function bnx2x_storm_memset_hc_timeout (line 484) | static void
  function bnx2x_storm_memset_hc_disable (line 495) | static void
  function bnx2x_update_coalesce_sb_index (line 513) | void
  function elink_cb_reg_read (line 525) | uint32_t elink_cb_reg_read(struct bnx2x_softc *sc, uint32_t reg_addr)
  function elink_cb_reg_write (line 530) | void elink_cb_reg_write(struct bnx2x_softc *sc, uint32_t reg_addr, uint3...
  function elink_cb_event_log (line 535) | void
  function bnx2x_set_spio (line 542) | static int bnx2x_set_spio(struct bnx2x_softc *sc, int spio, uint32_t mode)
  function bnx2x_gpio_read (line 585) | static int bnx2x_gpio_read(struct bnx2x_softc *sc, int gpio_num, uint8_t...
  function bnx2x_gpio_write (line 609) | static int
  function bnx2x_gpio_mult_write (line 660) | static int
  function bnx2x_gpio_int_write (line 703) | static int
  function elink_cb_gpio_read (line 750) | uint32_t
  function elink_cb_gpio_write (line 756) | uint8_t elink_cb_gpio_write(struct bnx2x_softc * sc, uint16_t gpio_num, ...
  function elink_cb_gpio_mult_write (line 762) | uint8_t
  function elink_cb_gpio_int_write (line 769) | uint8_t elink_cb_gpio_int_write(struct bnx2x_softc * sc, uint16_t gpio_n...
  function elink_cb_notify_link_changed (line 775) | void elink_cb_notify_link_changed(struct bnx2x_softc *sc)
  function elink_cb_fw_command (line 782) | uint32_t
  function bnx2x_fw_command (line 817) | static uint32_t
  function __storm_memset_dma_mapping (line 823) | static void
  function storm_memset_spq_addr (line 831) | static void
  function storm_memset_vf_to_pf (line 840) | static void
  function storm_memset_func_en (line 853) | static void
  function storm_memset_eq_data (line 866) | static void
  function storm_memset_eq_prod (line 878) | static void
  type eth_spe (line 947) | struct eth_spe
  type bnx2x_softc (line 947) | struct bnx2x_softc
  type eth_spe (line 949) | struct eth_spe
  function bnx2x_sp_prod_update (line 964) | static void bnx2x_sp_prod_update(struct bnx2x_softc *sc)
  function bnx2x_is_contextless_ramrod (line 987) | static int bnx2x_is_contextless_ramrod(int cmd, int cmd_type)
  function bnx2x_sp_post (line 1016) | int
  function bnx2x_drv_pulse (line 1083) | static void bnx2x_drv_pulse(struct bnx2x_softc *sc)
  function bnx2x_tx_queue_has_work (line 1089) | static int bnx2x_tx_queue_has_work(const struct bnx2x_fastpath *fp)
  function bnx2x_has_tx_work (line 1104) | static uint8_t bnx2x_has_tx_work(struct bnx2x_fastpath *fp)
  function bnx2x_has_rx_work (line 1110) | static int bnx2x_has_rx_work(struct bnx2x_fastpath *fp)
  function bnx2x_sp_event (line 1128) | static void
  function bnx2x_rxeof (line 1202) | static uint8_t bnx2x_rxeof(struct bnx2x_softc *sc, struct bnx2x_fastpath...
  function bnx2x_free_tx_pkt (line 1286) | static uint16_t
  function bnx2x_txeof (line 1312) | uint8_t bnx2x_txeof(__rte_unused struct bnx2x_softc * sc, struct bnx2x_f...
  function bnx2x_drain_tx_queues (line 1346) | static void bnx2x_drain_tx_queues(struct bnx2x_softc *sc)
  function bnx2x_del_all_macs (line 1377) | static int
  function bnx2x_fill_accept_flags (line 1399) | int
  function bnx2x_set_q_rx_mode (line 1477) | static int
  function bnx2x_set_storm_rx_mode (line 1517) | int bnx2x_set_storm_rx_mode(struct bnx2x_softc *sc)
  function bnx2x_nic_load_no_mcp (line 1539) | static int bnx2x_nic_load_no_mcp(struct bnx2x_softc *sc)
  function bnx2x_nic_unload_no_mcp (line 1562) | static int bnx2x_nic_unload_no_mcp(struct bnx2x_softc *sc)
  function bnx2x_send_unload_req (line 1585) | static uint32_t bnx2x_send_unload_req(struct bnx2x_softc *sc, int unload...
  function bnx2x_send_unload_done (line 1607) | static void bnx2x_send_unload_done(struct bnx2x_softc *sc, uint8_t keep_...
  function bnx2x_func_wait_started (line 1618) | static int bnx2x_func_wait_started(struct bnx2x_softc *sc)
  function bnx2x_stop_queue (line 1670) | static int bnx2x_stop_queue(struct bnx2x_softc *sc, int index)
  function bnx2x_wait_sp_comp (line 1709) | static uint8_t bnx2x_wait_sp_comp(struct bnx2x_softc *sc, unsigned long ...
  function bnx2x_func_stop (line 1735) | static int bnx2x_func_stop(struct bnx2x_softc *sc)
  function bnx2x_reset_hw (line 1762) | static int bnx2x_reset_hw(struct bnx2x_softc *sc, uint32_t load_code)
  function bnx2x_int_disable_sync (line 1777) | static void bnx2x_int_disable_sync(struct bnx2x_softc *sc, int disable_hw)
  function bnx2x_chip_cleanup (line 1785) | static void
  function bnx2x_disable_close_the_gate (line 1890) | static void bnx2x_disable_close_the_gate(struct bnx2x_softc *sc)
  function bnx2x_squeeze_objects (line 1906) | static void bnx2x_squeeze_objects(struct bnx2x_softc *sc)
  function bnx2x_nic_unload (line 1963) | __attribute__ ((noinline))
  function bnx2x_tx_encap (line 2119) | int bnx2x_tx_encap(struct bnx2x_tx_queue *txq, struct rte_mbuf **m_head,...
  function bnx2x_cid_ilt_lines (line 2251) | static uint16_t bnx2x_cid_ilt_lines(struct bnx2x_softc *sc)
  function bnx2x_ilt_set_info (line 2256) | static void bnx2x_ilt_set_info(struct bnx2x_softc *sc)
  function bnx2x_set_fp_rx_buf_size (line 2318) | static void bnx2x_set_fp_rx_buf_size(struct bnx2x_softc *sc)
  function bnx2x_alloc_ilt_mem (line 2338) | int bnx2x_alloc_ilt_mem(struct bnx2x_softc *sc)
  function bnx2x_alloc_ilt_lines_mem (line 2346) | static int bnx2x_alloc_ilt_lines_mem(struct bnx2x_softc *sc)
  function bnx2x_free_ilt_mem (line 2354) | void bnx2x_free_ilt_mem(struct bnx2x_softc *sc)
  function bnx2x_free_ilt_lines_mem (line 2360) | static void bnx2x_free_ilt_lines_mem(struct bnx2x_softc *sc)
  function bnx2x_free_mem (line 2368) | static void bnx2x_free_mem(struct bnx2x_softc *sc)
  function bnx2x_alloc_mem (line 2382) | static int bnx2x_alloc_mem(struct bnx2x_softc *sc)
  function bnx2x_free_fw_stats_mem (line 2433) | static void bnx2x_free_fw_stats_mem(struct bnx2x_softc *sc)
  function bnx2x_alloc_fw_stats_mem (line 2446) | static int bnx2x_alloc_fw_stats_mem(struct bnx2x_softc *sc)
  function bnx2x_set_reset_global (line 2532) | static void bnx2x_set_reset_global(struct bnx2x_softc *sc)
  function bnx2x_clear_reset_global (line 2542) | static void bnx2x_clear_reset_global(struct bnx2x_softc *sc)
  function bnx2x_reset_is_global (line 2552) | static uint8_t bnx2x_reset_is_global(struct bnx2x_softc *sc)
  function bnx2x_set_reset_done (line 2558) | static void bnx2x_set_reset_done(struct bnx2x_softc *sc)
  function bnx2x_set_reset_in_progress (line 2575) | static void bnx2x_set_reset_in_progress(struct bnx2x_softc *sc)
  function bnx2x_reset_is_done (line 2592) | static uint8_t bnx2x_reset_is_done(struct bnx2x_softc *sc, int engine)
  function bnx2x_get_load_status (line 2603) | static uint8_t bnx2x_get_load_status(struct bnx2x_softc *sc, int engine)
  function bnx2x_set_pf_load (line 2617) | static void bnx2x_set_pf_load(struct bnx2x_softc *sc)
  function bnx2x_clear_pf_load (line 2650) | static uint8_t bnx2x_clear_pf_load(struct bnx2x_softc *sc)
  function bnx2x_nic_load_request (line 2679) | static int bnx2x_nic_load_request(struct bnx2x_softc *sc, uint32_t * loa...
  function bnx2x_nic_load_analyze_req (line 2725) | static int bnx2x_nic_load_analyze_req(struct bnx2x_softc *sc, uint32_t l...
  function bnx2x_nic_load_pmf (line 2756) | static void bnx2x_nic_load_pmf(struct bnx2x_softc *sc, uint32_t load_code)
  function bnx2x_read_mf_cfg (line 2790) | static void bnx2x_read_mf_cfg(struct bnx2x_softc *sc)
  function bnx2x_acquire_alr (line 2827) | static int bnx2x_acquire_alr(struct bnx2x_softc *sc)
  function bnx2x_release_alr (line 2850) | static void bnx2x_release_alr(struct bnx2x_softc *sc)
  function bnx2x_fan_failure (line 2855) | static void bnx2x_fan_failure(struct bnx2x_softc *sc)
  function bnx2x_link_attn (line 2879) | static void bnx2x_link_attn(struct bnx2x_softc *sc)
  function bnx2x_attn_int_asserted (line 2934) | static void bnx2x_attn_int_asserted(struct bnx2x_softc *sc, uint32_t ass...
  function bnx2x_print_next_block (line 3066) | static void
  function bnx2x_check_blocks_with_parity0 (line 3073) | static int
  function bnx2x_check_blocks_with_parity1 (line 3129) | static int
  function bnx2x_check_blocks_with_parity2 (line 3230) | static int
  function bnx2x_check_blocks_with_parity3 (line 3291) | static int
  function bnx2x_check_blocks_with_parity4 (line 3336) | static int
  function bnx2x_parity_attn (line 3367) | static uint8_t
  function bnx2x_chk_parity_attn (line 3420) | static uint8_t
  function bnx2x_attn_int_deasserted4 (line 3438) | static void bnx2x_attn_int_deasserted4(struct bnx2x_softc *sc, uint32_t ...
  function bnx2x_e1h_disable (line 3510) | static void bnx2x_e1h_disable(struct bnx2x_softc *sc)
  function bnx2x_e1h_enable (line 3517) | static void bnx2x_e1h_enable(struct bnx2x_softc *sc)
  function bnx2x_config_mf_bw (line 3530) | static void bnx2x_config_mf_bw(struct bnx2x_softc *sc)
  function bnx2x_set_mf_bw (line 3540) | static void bnx2x_set_mf_bw(struct bnx2x_softc *sc)
  function bnx2x_handle_eee_event (line 3546) | static void bnx2x_handle_eee_event(struct bnx2x_softc *sc)
  function bnx2x_drv_info_ether_stat (line 3553) | static void bnx2x_drv_info_ether_stat(struct bnx2x_softc *sc)
  function bnx2x_handle_drv_info_req (line 3574) | static void bnx2x_handle_drv_info_req(struct bnx2x_softc *sc)
  function bnx2x_dcc_event (line 3614) | static void bnx2x_dcc_event(struct bnx2x_softc *sc, uint32_t dcc_event)
  function bnx2x_pmf_update (line 3647) | static void bnx2x_pmf_update(struct bnx2x_softc *sc)
  function bnx2x_mc_assert (line 3673) | static int bnx2x_mc_assert(struct bnx2x_softc *sc)
  function bnx2x_attn_int_deasserted3 (line 3825) | static void bnx2x_attn_int_deasserted3(struct bnx2x_softc *sc, uint32_t ...
  function bnx2x_attn_int_deasserted2 (line 3911) | static void bnx2x_attn_int_deasserted2(struct bnx2x_softc *sc, uint32_t ...
  function bnx2x_attn_int_deasserted1 (line 4001) | static void bnx2x_attn_int_deasserted1(struct bnx2x_softc *sc, uint32_t ...
  function bnx2x_attn_int_deasserted0 (line 4031) | static void bnx2x_attn_int_deasserted0(struct bnx2x_softc *sc, uint32_t ...
  function bnx2x_attn_int_deasserted (line 4066) | static void bnx2x_attn_int_deasserted(struct bnx2x_softc *sc, uint32_t d...
  function bnx2x_attn_int (line 4160) | static void bnx2x_attn_int(struct bnx2x_softc *sc)
  function bnx2x_update_dsb_idx (line 4190) | static uint16_t bnx2x_update_dsb_idx(struct bnx2x_softc *sc)
  type ecore_queue_sp_obj (line 4212) | struct ecore_queue_sp_obj
  type bnx2x_softc (line 4212) | struct bnx2x_softc
  function bnx2x_handle_mcast_eqe (line 4218) | static void bnx2x_handle_mcast_eqe(struct bnx2x_softc *sc)
  function bnx2x_handle_classification_eqe (line 4241) | static void
  function bnx2x_handle_rx_mode_eqe (line 4278) | static void bnx2x_handle_rx_mode_eqe(struct bnx2x_softc *sc)
  function bnx2x_update_eq_prod (line 4288) | static void bnx2x_update_eq_prod(struct bnx2x_softc *sc, uint16_t prod)
  function bnx2x_eq_int (line 4294) | static void bnx2x_eq_int(struct bnx2x_softc *sc)
  function bnx2x_handle_sp_tq (line 4470) | static int bnx2x_handle_sp_tq(struct bnx2x_softc *sc)
  function bnx2x_handle_fp_tq (line 4509) | static void bnx2x_handle_fp_tq(struct bnx2x_fastpath *fp, int scan_fp)
  function bnx2x_intr_legacy (line 4540) | int bnx2x_intr_legacy(struct bnx2x_softc *sc, int scan_fp)
  type bnx2x_softc (line 4587) | struct bnx2x_softc
  type bnx2x_softc (line 4588) | struct bnx2x_softc
  type bnx2x_softc (line 4589) | struct bnx2x_softc
  type bnx2x_softc (line 4590) | struct bnx2x_softc
  type bnx2x_softc (line 4591) | struct bnx2x_softc
  type bnx2x_softc (line 4592) | struct bnx2x_softc
  type bnx2x_softc (line 4593) | struct bnx2x_softc
  type bnx2x_softc (line 4594) | struct bnx2x_softc
  type bnx2x_softc (line 4595) | struct bnx2x_softc
  type ecore_func_sp_drv_ops (line 4597) | struct
  function bnx2x_init_func_obj (line 4612) | static void bnx2x_init_func_obj(struct bnx2x_softc *sc)
  function bnx2x_init_hw (line 4627) | static int bnx2x_init_hw(struct bnx2x_softc *sc, uint32_t load_code)
  function bnx2x_fill (line 4651) | static void
  function bnx2x_wr_fp_sb_data (line 4668) | static void
  function bnx2x_zero_fp_sb (line 4682) | static void bnx2x_zero_fp_sb(struct bnx2x_softc *sc, int fw_sb_id)
  function bnx2x_wr_sp_sb_data (line 4715) | static void
  function bnx2x_zero_sp_sb (line 4732) | static void bnx2x_zero_sp_sb(struct bnx2x_softc *sc)
  function bnx2x_setup_ndsb_state_machine (line 4753) | static void
  function bnx2x_map_sb_state_machines (line 4763) | static void bnx2x_map_sb_state_machines(struct hc_index_data *index_data)
  function bnx2x_init_sb (line 4793) | static void
  function bnx2x_fp_qzone_id (line 4852) | static uint8_t bnx2x_fp_qzone_id(struct bnx2x_fastpath *fp)
  function bnx2x_rx_ustorm_prods_offset (line 4861) | static uint32_t
  function bnx2x_init_eth_fp (line 4879) | static void bnx2x_init_eth_fp(struct bnx2x_softc *sc, int idx)
  function bnx2x_update_rx_prod (line 4955) | static void
  function bnx2x_init_rx_rings (line 4986) | static void bnx2x_init_rx_rings(struct bnx2x_softc *sc)
  function bnx2x_init_tx_ring_one (line 5013) | static void bnx2x_init_tx_ring_one(struct bnx2x_fastpath *fp)
  function bnx2x_init_tx_rings (line 5032) | static void bnx2x_init_tx_rings(struct bnx2x_softc *sc)
  function bnx2x_init_def_sb (line 5041) | static void bnx2x_init_def_sb(struct bnx2x_softc *sc)
  function bnx2x_init_sp_ring (line 5128) | static void bnx2x_init_sp_ring(struct bnx2x_softc *sc)
  function bnx2x_init_eq_ring (line 5138) | static void bnx2x_init_eq_ring(struct bnx2x_softc *sc)
  function bnx2x_init_internal_common (line 5163) | static void bnx2x_init_internal_common(struct bnx2x_softc *sc)
  function bnx2x_init_internal (line 5198) | static void bnx2x_init_internal(struct bnx2x_softc *sc, uint32_t load_code)
  function storm_memset_func_cfg (line 5221) | static void
  function bnx2x_func_init (line 5235) | static void bnx2x_func_init(struct bnx2x_softc *sc, struct bnx2x_func_in...
  function bnx2x_calc_vn_min (line 5266) | static void bnx2x_calc_vn_min(struct bnx2x_softc *sc, struct cmng_init_i...
  function bnx2x_extract_max_cfg (line 5299) | static uint16_t
  function bnx2x_calc_vn_max (line 5314) | static void
  function bnx2x_cmng_fns_init (line 5339) | static void
  function bnx2x_get_cmng_fns_mode (line 5373) | static int bnx2x_get_cmng_fns_mode(struct bnx2x_softc *sc)
  function storm_memset_cmng (line 5386) | static void
  function bnx2x_pf_init (line 5417) | static void bnx2x_pf_init(struct bnx2x_softc *sc)
  function bnx2x_hc_int_enable (line 5479) | static void bnx2x_hc_int_enable(struct bnx2x_softc *sc)
  function bnx2x_igu_int_enable (line 5536) | static void bnx2x_igu_int_enable(struct bnx2x_softc *sc)
  function bnx2x_int_enable (line 5595) | static void bnx2x_int_enable(struct bnx2x_softc *sc)
  function bnx2x_hc_int_disable (line 5604) | static void bnx2x_hc_int_disable(struct bnx2x_softc *sc)
  function bnx2x_igu_int_disable (line 5622) | static void bnx2x_igu_int_disable(struct bnx2x_softc *sc)
  function bnx2x_int_disable (line 5640) | static void bnx2x_int_disable(struct bnx2x_softc *sc)
  function bnx2x_nic_init (line 5649) | static void bnx2x_nic_init(struct bnx2x_softc *sc, int load_code)
  function bnx2x_init_objs (line 5696) | static void bnx2x_init_objs(struct bnx2x_softc *sc)
  function bnx2x_func_start (line 5749) | static int bnx2x_func_start(struct bnx2x_softc *sc)
  function bnx2x_set_power_state (line 5777) | static int bnx2x_set_power_state(struct bnx2x_softc *sc, uint8_t state)
  function bnx2x_trylock_hw_lock (line 5837) | static uint8_t bnx2x_trylock_hw_lock(struct bnx2x_softc *sc, uint32_t re...
  function bnx2x_get_leader_lock_resource (line 5875) | static int bnx2x_get_leader_lock_resource(struct bnx2x_softc *sc)
  function bnx2x_trylock_leader_lock (line 5885) | static uint8_t bnx2x_trylock_leader_lock(struct bnx2x_softc *sc)
  function bnx2x_release_leader_lock (line 5890) | static int bnx2x_release_leader_lock(struct bnx2x_softc *sc)
  function bnx2x_set_234_gates (line 5896) | static void bnx2x_set_234_gates(struct bnx2x_softc *sc, uint8_t close)
  function bnx2x_er_poll_igu_vq (line 5943) | static int bnx2x_er_poll_igu_vq(struct bnx2x_softc *sc)
  function bnx2x_clp_reset_prep (line 5969) | static void bnx2x_clp_reset_prep(struct bnx2x_softc *sc, uint32_t * magi...
  function bnx2x_clp_reset_done (line 5978) | static void bnx2x_clp_reset_done(struct bnx2x_softc *sc, uint32_t magic_...
  function bnx2x_reset_mcp_prep (line 5987) | static void bnx2x_reset_mcp_prep(struct bnx2x_softc *sc, uint32_t * magi...
  function bnx2x_mcp_wait_one (line 6009) | static void bnx2x_mcp_wait_one(struct bnx2x_softc *sc)
  function bnx2x_init_shmem (line 6020) | static int bnx2x_init_shmem(struct bnx2x_softc *sc)
  function bnx2x_reset_mcp_comp (line 6045) | static int bnx2x_reset_mcp_comp(struct bnx2x_softc *sc, uint32_t magic_val)
  function bnx2x_pxp_prep (line 6055) | static void bnx2x_pxp_prep(struct bnx2x_softc *sc)
  function bnx2x_process_kill_chip_reset (line 6071) | static void bnx2x_process_kill_chip_reset(struct bnx2x_softc *sc, uint8_...
  function bnx2x_process_kill (line 6167) | static int bnx2x_process_kill(struct bnx2x_softc *sc, uint8_t global)
  function bnx2x_leader_reset (line 6254) | static int bnx2x_leader_reset(struct bnx2x_softc *sc)
  function bnx2x_pf_q_prep_init (line 6328) | static void
  function bnx2x_get_common_flags (line 6367) | static unsigned long
  function bnx2x_get_q_flags (line 6399) | static unsigned long bnx2x_get_q_flags(struct bnx2x_softc *sc, uint8_t l...
  function bnx2x_pf_q_prep_general (line 6418) | static void
  function bnx2x_pf_rx_q_prep (line 6428) | static void
  function bnx2x_pf_tx_q_prep (line 6492) | static void
  function bnx2x_setup_queue (line 6519) | static int
  function bnx2x_setup_leading (line 6579) | static int bnx2x_setup_leading(struct bnx2x_softc *sc)
  function bnx2x_config_rss_pf (line 6587) | static int
  function bnx2x_config_rss_eth (line 6638) | static int bnx2x_config_rss_eth(struct bnx2x_softc *sc, uint8_t config_h...
  function bnx2x_init_rss_pf (line 6643) | static int bnx2x_init_rss_pf(struct bnx2x_softc *sc)
  function bnx2x_set_mac_one (line 6671) | static int
  function bnx2x_set_eth_mac (line 6711) | static int bnx2x_set_eth_mac(struct bnx2x_softc *sc, uint8_t set)
  function bnx2x_get_cur_phy_idx (line 6725) | static int bnx2x_get_cur_phy_idx(struct bnx2x_softc *sc)
  function bnx2x_get_link_cfg_idx (line 6757) | static int bnx2x_get_link_cfg_idx(struct bnx2x_softc *sc)
  function bnx2x_set_requested_fc (line 6777) | static void bnx2x_set_requested_fc(struct bnx2x_softc *sc)
  function bnx2x_calc_fc_adv (line 6791) | static void bnx2x_calc_fc_adv(struct bnx2x_softc *sc)
  function bnx2x_get_mf_speed (line 6813) | static uint16_t bnx2x_get_mf_speed(struct bnx2x_softc *sc)
  function bnx2x_fill_report_data (line 6837) | static void
  function bnx2x_link_report (line 6871) | static void bnx2x_link_report(struct bnx2x_softc *sc)
  function bnx2x_link_status_update (line 6945) | void bnx2x_link_status_update(struct bnx2x_softc *sc)
  function bnx2x_periodic_start (line 7015) | static void bnx2x_periodic_start(struct bnx2x_softc *sc)
  function bnx2x_periodic_stop (line 7020) | static void bnx2x_periodic_stop(struct bnx2x_softc *sc)
  function bnx2x_initial_phy_init (line 7025) | static int bnx2x_initial_phy_init(struct bnx2x_softc *sc, int load_mode)
  function bnx2x_update_drv_flags (line 7096) | static void
  function bnx2x_periodic_callout (line 7118) | void bnx2x_periodic_callout(struct bnx2x_softc *sc)
  function bnx2x_nic_load (line 7168) | static __attribute__ ((noinline))
  function bnx2x_init (line 7417) | int bnx2x_init(struct bnx2x_softc *sc)
  function bnx2x_get_function_num (line 7500) | static void bnx2x_get_function_num(struct bnx2x_softc *sc)
  function bnx2x_get_shmem_mf_cfg_base (line 7530) | static uint32_t bnx2x_get_shmem_mf_cfg_base(struct bnx2x_softc *sc)
  function bnx2x_pcie_capability_read (line 7554) | static uint32_t bnx2x_pcie_capability_read(struct bnx2x_softc *sc, int reg)
  function bnx2x_is_pcie_pending (line 7574) | static uint8_t bnx2x_is_pcie_pending(struct bnx2x_softc *sc)
  function bnx2x_probe_pci_caps (line 7585) | static void bnx2x_probe_pci_caps(struct bnx2x_softc *sc)
  function bnx2x_get_shmem_mf_cfg_info_sd (line 7636) | static int bnx2x_get_shmem_mf_cfg_info_sd(struct bnx2x_softc *sc)
  function bnx2x_get_shmem_ext_proto_support_flags (line 7670) | static uint32_t bnx2x_get_shmem_ext_proto_support_flags(struct bnx2x_sof...
  function bnx2x_get_shmem_mf_cfg_info_si (line 7692) | static int bnx2x_get_shmem_mf_cfg_info_si(struct bnx2x_softc *sc)
  function bnx2x_get_shmem_mf_cfg_info_niv (line 7715) | static int bnx2x_get_shmem_mf_cfg_info_niv(struct bnx2x_softc *sc)
  function bnx2x_check_valid_mf_cfg (line 7761) | static int bnx2x_check_valid_mf_cfg(struct bnx2x_softc *sc)
  function bnx2x_get_mf_cfg_info (line 7850) | static int bnx2x_get_mf_cfg_info(struct bnx2x_softc *sc)
  function bnx2x_get_shmem_info (line 8016) | static int bnx2x_get_shmem_info(struct bnx2x_softc *sc)
  function bnx2x_media_detect (line 8117) | static void bnx2x_media_detect(struct bnx2x_softc *sc)
  function bnx2x_get_igu_cam_info (line 8154) | static int bnx2x_get_igu_cam_info(struct bnx2x_softc *sc)
  function bnx2x_get_device_info (line 8217) | static int bnx2x_get_device_info(struct bnx2x_softc *sc)
  function bnx2x_link_settings_supported (line 8425) | static void
  function bnx2x_link_settings_requested (line 8556) | static void bnx2x_link_settings_requested(struct bnx2x_softc *sc)
  function bnx2x_get_phy_info (line 8766) | static void bnx2x_get_phy_info(struct bnx2x_softc *sc)
  function bnx2x_set_modes_bitmap (line 8795) | static void bnx2x_set_modes_bitmap(struct bnx2x_softc *sc)
  function bnx2x_alloc_hsi_mem (line 8837) | int bnx2x_alloc_hsi_mem(struct bnx2x_softc *sc)
  function bnx2x_free_hsi_mem (line 8949) | void bnx2x_free_hsi_mem(struct bnx2x_softc *sc)
  function bnx2x_prev_interrupted_dmae (line 9003) | static void bnx2x_prev_interrupted_dmae(struct bnx2x_softc *sc)
  function bnx2x_prev_mcp_done (line 9016) | static int bnx2x_prev_mcp_done(struct bnx2x_softc *sc)
  type bnx2x_prev_list_node (line 9028) | struct bnx2x_prev_list_node
  type bnx2x_softc (line 9028) | struct bnx2x_softc
  type bnx2x_prev_list_node (line 9030) | struct bnx2x_prev_list_node
  function bnx2x_prev_is_path_marked (line 9043) | static uint8_t bnx2x_prev_is_path_marked(struct bnx2x_softc *sc)
  function bnx2x_prev_mark_path (line 9069) | static int bnx2x_prev_mark_path(struct bnx2x_softc *sc, uint8_t after_undi)
  function bnx2x_do_flr (line 9118) | static int bnx2x_do_flr(struct bnx2x_softc *sc)
  type bnx2x_mac_vals (line 9156) | struct bnx2x_mac_vals {
  function bnx2x_prev_unload_close_mac (line 9167) | static void
  function bnx2x_prev_unload_undi_inc (line 9246) | static void
  function bnx2x_prev_unload_common (line 9259) | static int bnx2x_prev_unload_common(struct bnx2x_softc *sc)
  function bnx2x_prev_unload_uncommon (line 9362) | static int bnx2x_prev_unload_uncommon(struct bnx2x_softc *sc)
  function bnx2x_prev_unload (line 9398) | static int bnx2x_prev_unload(struct bnx2x_softc *sc)
  function bnx2x_dcbx_set_state (line 9461) | static void
  function bnx2x_set_qm_cid_count (line 9482) | static int bnx2x_set_qm_cid_count(struct bnx2x_softc *sc)
  function bnx2x_init_multi_cos (line 9493) | static void bnx2x_init_multi_cos(struct bnx2x_softc *sc)
  function bnx2x_pci_get_caps (line 9513) | static int bnx2x_pci_get_caps(struct bnx2x_softc *sc)
  function bnx2x_init_rte (line 9556) | static void bnx2x_init_rte(struct bnx2x_softc *sc)
  function bnx2x_load_firmware (line 9566) | void bnx2x_load_firmware(struct bnx2x_softc *sc)
  function bnx2x_data_to_init_ops (line 9608) | static void
  function bnx2x_data_to_init_offsets (line 9622) | static void
  function bnx2x_data_to_init_data (line 9632) | static void bnx2x_data_to_init_data(uint8_t * data, uint32_t * dst, uint...
  function bnx2x_data_to_iro_array (line 9641) | static void bnx2x_data_to_iro_array(uint8_t * data, struct iro *dst, uin...
  function bnx2x_attach (line 9668) | int bnx2x_attach(struct bnx2x_softc *sc)
  function bnx2x_igu_ack_sb (line 9743) | static void
  function bnx2x_ack_sb (line 9752) | static void
  function bnx2x_igu_clear_sb_gen (line 9773) | static void
  function bnx2x_igu_clear_sb (line 9823) | static void bnx2x_igu_clear_sb(struct bnx2x_softc *sc, uint8_t idu_sb_id)
  function bnx2x_reset_common (line 9832) | static void bnx2x_reset_common(struct bnx2x_softc *sc)
  function bnx2x_common_init_phy (line 9850) | static void bnx2x_common_init_phy(struct bnx2x_softc *sc)
  function bnx2x_pf_disable (line 9874) | static void bnx2x_pf_disable(struct bnx2x_softc *sc)
  function bnx2x_init_pxp (line 9885) | static void bnx2x_init_pxp(struct bnx2x_softc *sc)
  function bnx2x_get_pretend_reg (line 9898) | static uint32_t bnx2x_get_pretend_reg(struct bnx2x_softc *sc)
  function bnx2x_pretend_func (line 9911) | static int bnx2x_pretend_func(struct bnx2x_softc *sc, uint16_t pretend_f...
  function bnx2x_setup_fan_failure_detection (line 9925) | static void bnx2x_setup_fan_failure_detection(struct bnx2x_softc *sc)
  function bnx2x_enable_blocks_attention (line 9972) | static void bnx2x_enable_blocks_attention(struct bnx2x_softc *sc)
  function bnx2x_init_hw_common (line 10040) | static int bnx2x_init_hw_common(struct bnx2x_softc *sc)
  function bnx2x_init_hw_common_chip (line 10495) | static int bnx2x_init_hw_common_chip(struct bnx2x_softc *sc)
  function bnx2x_init_hw_port (line 10511) | static int bnx2x_init_hw_port(struct bnx2x_softc *sc)
  function bnx2x_flr_clnup_reg_poll (line 10724) | static uint32_t
  function bnx2x_flr_clnup_poll_hw_counter (line 10738) | static int
  function bnx2x_flr_clnup_poll_count (line 10753) | static uint32_t bnx2x_flr_clnup_poll_count(struct bnx2x_softc *sc)
  function bnx2x_poll_hw_usage_counters (line 10767) | static int bnx2x_poll_hw_usage_counters(struct bnx2x_softc *sc, uint32_t...
  function bnx2x_send_final_clnup (line 10827) | static int
  function bnx2x_pbf_pN_buf_flushed (line 10863) | static void
  function bnx2x_pbf_pN_cmd_flushed (line 10887) | static void
  function bnx2x_tx_hw_flushed (line 10910) | static void bnx2x_tx_hw_flushed(struct bnx2x_softc *sc, uint32_t poll_co...
  function bnx2x_hw_enable_status (line 10962) | static void bnx2x_hw_enable_status(struct bnx2x_softc *sc)
  function bnx2x_pf_flr_clnup (line 11003) | static int bnx2x_pf_flr_clnup(struct bnx2x_softc *sc)
  function bnx2x_init_hw_func (line 11047) | static int bnx2x_init_hw_func(struct bnx2x_softc *sc)
  function bnx2x_link_reset (line 11344) | static void bnx2x_link_reset(struct bnx2x_softc *sc)
  function bnx2x_reset_port (line 11356) | static void bnx2x_reset_port(struct bnx2x_softc *sc)
  function bnx2x_ilt_wr (line 11385) | static void bnx2x_ilt_wr(struct bnx2x_softc *sc, uint32_t index, phys_ad...
  function bnx2x_clear_func_ilt (line 11397) | static void bnx2x_clear_func_ilt(struct bnx2x_softc *sc, uint32_t func)
  function bnx2x_reset_func (line 11405) | static void bnx2x_reset_func(struct bnx2x_softc *sc)
  function bnx2x_release_firmware (line 11484) | static void bnx2x_release_firmware(struct bnx2x_softc *sc)
  function bnx2x_init_firmware (line 11492) | static int bnx2x_init_firmware(struct bnx2x_softc *sc)
  function cut_gzip_prefix (line 11541) | static int cut_gzip_prefix(const uint8_t * zbuf, int len)
  function ecore_gunzip (line 11569) | static int ecore_gunzip(struct bnx2x_softc *sc, const uint8_t * zbuf, in...
  function ecore_write_dmae_phys_len (line 11614) | static void
  function ecore_storm_memset_struct (line 11621) | void
  function bnx2x_print_adapter_info (line 11715) | void bnx2x_print_adapter_info(struct bnx2x_softc *sc)

FILE: drivers/net/bnx2x/bnx2x.h
  function bnx2x_ilog2 (line 119) | static inline
  type bnx2x_device_type (line 136) | struct bnx2x_device_type {
  type bnx2x_bar (line 343) | struct bnx2x_bar {
  type bnx2x_dma (line 348) | struct bnx2x_dma {
  type attn_route (line 359) | struct attn_route {
  type iro (line 363) | struct iro {
  type host_hc_status_block_e2 (line 373) | struct host_hc_status_block_e2
  type host_hc_status_block_e1x (line 375) | struct host_hc_status_block_e1x
  type doorbell_set_prod (line 379) | struct doorbell_set_prod
  type bnx2x_sw_tx_bd (line 383) | struct bnx2x_sw_tx_bd {
  type bnx2x_fastpath (line 395) | struct bnx2x_fastpath {
  type eth_context (line 464) | struct eth_context
  type hw_context (line 499) | struct hw_context {
  type bnx2x_fw_stats_req (line 637) | struct bnx2x_fw_stats_req {
  type bnx2x_fw_stats_data (line 643) | struct bnx2x_fw_stats_data {
  type bnx2x_slowpath (line 661) | struct bnx2x_slowpath {
  type bnx2x_port (line 720) | struct bnx2x_port {
  type bnx2x_mf_info (line 771) | struct bnx2x_mf_info {
  type bnx2x_devinfo (line 837) | struct bnx2x_devinfo {
  type bnx2x_sp_objs (line 1012) | struct bnx2x_sp_objs {
  type bnx2x_link_report_data (line 1022) | struct bnx2x_link_report_data {
  type bnx2x_pci_cap (line 1036) | struct bnx2x_pci_cap {
  type bnx2x_vfdb (line 1043) | struct bnx2x_vfdb
  type bnx2x_softc (line 1046) | struct bnx2x_softc {
  type bnx2x_nvram_data (line 1404) | struct bnx2x_nvram_data {
  type bnx2x_func_init_params (line 1433) | struct bnx2x_func_init_params {
  type bnx2x_softc (line 1449) | struct bnx2x_softc
  type bnx2x_softc (line 1450) | struct bnx2x_softc
  type bnx2x_softc (line 1451) | struct bnx2x_softc
  type bnx2x_softc (line 1453) | struct bnx2x_softc
  type bnx2x_softc (line 1454) | struct bnx2x_softc
  type bnx2x_softc (line 1455) | struct bnx2x_softc
  type bnx2x_softc (line 1716) | struct bnx2x_softc
  type bnx2x_dma (line 1717) | struct bnx2x_dma
  type bnx2x_softc (line 1721) | struct bnx2x_softc
  type bnx2x_softc (line 1724) | struct bnx2x_softc
  type dmae_command (line 1724) | struct dmae_command
  type bnx2x_softc (line 1725) | struct bnx2x_softc
  type bnx2x_softc (line 1726) | struct bnx2x_softc
  type bnx2x_softc (line 1728) | struct bnx2x_softc
  type eth_context (line 1728) | struct eth_context
  type bnx2x_softc (line 1730) | struct bnx2x_softc
  type bnx2x_softc (line 1734) | struct bnx2x_softc
  type bnx2x_softc (line 1737) | struct bnx2x_softc
  type bnx2x_softc (line 1738) | struct bnx2x_softc
  type bnx2x_softc (line 1740) | struct bnx2x_softc
  function reg_poll (line 1753) | static inline uint32_t
  function bnx2x_update_fp_sb_idx (line 1769) | static inline void
  function bnx2x_igu_ack_sb_gen (line 1776) | static inline void
  function bnx2x_hc_ack_sb (line 1794) | static inline void
  function bnx2x_hc_ack_int (line 1815) | static inline uint32_t
  function bnx2x_igu_ack_int (line 1826) | static inline uint32_t
  function bnx2x_ack_int (line 1839) | static inline uint32_t
  function func_by_vn (line 1850) | static inline int
  function bnx2x_link_sync_notify (line 1859) | static inline void
  function bnx2x_stats_id (line 1879) | static inline uint8_t
  type bnx2x_softc (line 1891) | struct bnx2x_softc
  type bnx2x_softc (line 1892) | struct bnx2x_softc
  type bnx2x_softc (line 1893) | struct bnx2x_softc
  type bnx2x_softc (line 1894) | struct bnx2x_softc
  type bnx2x_softc (line 1895) | struct bnx2x_softc
  type bnx2x_softc (line 1896) | struct bnx2x_softc
  type bnx2x_softc (line 1897) | struct bnx2x_softc
  type bnx2x_fastpath (line 1898) | struct bnx2x_fastpath
  type bnx2x_tx_queue (line 1899) | struct bnx2x_tx_queue
  type rte_mbuf (line 1899) | struct rte_mbuf
  type bnx2x_softc (line 1900) | struct bnx2x_softc
  type bnx2x_fastpath (line 1900) | struct bnx2x_fastpath
  type bnx2x_softc (line 1901) | struct bnx2x_softc
  type bnx2x_softc (line 1902) | struct bnx2x_softc
  type bnx2x_softc (line 1903) | struct bnx2x_softc
  type bnx2x_softc (line 1904) | struct bnx2x_softc
  type bnx2x_softc (line 1905) | struct bnx2x_softc
  type bnx2x_softc (line 1906) | struct bnx2x_softc
  type bnx2x_softc (line 1908) | struct bnx2x_softc
  type bnx2x_softc (line 1909) | struct bnx2x_softc
  type bnx2x_softc (line 1910) | struct bnx2x_softc
  type bnx2x_softc (line 1911) | struct bnx2x_softc
  type bnx2x_softc (line 1912) | struct bnx2x_softc
  type bnx2x_fastpath (line 1912) | struct bnx2x_fastpath
  type bnx2x_softc (line 1914) | struct bnx2x_softc
  type bnx2x_softc (line 1915) | struct bnx2x_softc
  type bnx2x_softc (line 1916) | struct bnx2x_softc
  type bnx2x_softc (line 1918) | struct bnx2x_softc
  type bnx2x_pci_cap (line 1925) | struct bnx2x_pci_cap
  type bnx2x_softc (line 1926) | struct bnx2x_softc
  type bnx2x_pci_cap (line 1928) | struct bnx2x_pci_cap
  function is_valid_ether_addr (line 1939) | static inline int is_valid_ether_addr(uint8_t *addr)
  function bnx2x_set_rx_mode (line 1947) | static inline void
  function pci_read (line 1962) | static inline int pci_read(struct bnx2x_softc *sc, size_t addr,
  function pci_write_word (line 1973) | static inline int pci_write_word(struct bnx2x_softc *sc, size_t addr, of...
  function pci_write_long (line 1986) | static inline int pci_write_long(struct bnx2x_softc *sc, size_t addr, of...

FILE: drivers/net/bnx2x/bnx2x_ethdev.c
  type rte_pci_id (line 15) | struct rte_pci_id
  type rte_pci_id (line 21) | struct rte_pci_id
  function bnx2x_link_update (line 27) | static void
  function bnx2x_interrupt_action (line 49) | static void
  function __rte_unused (line 68) | static __rte_unused void
  function bnx2x_dev_configure (line 81) | static int
  function bnx2x_dev_start (line 142) | static int
  function bnx2x_dev_stop (line 178) | static void
  function bnx2x_dev_close (line 201) | static void
  function bnx2x_promisc_enable (line 221) | static void
  function bnx2x_promisc_disable (line 231) | static void
  function bnx2x_dev_allmulticast_enable (line 241) | static void
  function bnx2x_dev_allmulticast_disable (line 251) | static void
  function bnx2x_dev_link_update (line 261) | static int
  function bnx2xvf_dev_link_update (line 273) | static int
  function bnx2x_dev_stats_get (line 291) | static void
  function bnx2x_dev_infos_get (line 337) | static void
  function bnx2x_mac_addr_add (line 348) | static void
  function bnx2x_mac_addr_remove (line 358) | static void
  type eth_dev_ops (line 367) | struct eth_dev_ops
  type eth_dev_ops (line 390) | struct eth_dev_ops
  function bnx2x_common_dev_init (line 411) | static int
  function eth_bnx2x_dev_init (line 478) | static int
  function eth_bnx2xvf_dev_init (line 485) | static int
  type eth_driver (line 492) | struct eth_driver
  type bnx2x_softc (line 499) | struct bnx2x_softc
  type eth_driver (line 505) | struct eth_driver
  type bnx2x_softc (line 512) | struct bnx2x_softc
  function rte_bnx2x_pmd_init (line 515) | static int rte_bnx2x_pmd_init(const char *name __rte_unused, const char ...
  function rte_bnx2xvf_pmd_init (line 523) | static int rte_bnx2xvf_pmd_init(const char *name __rte_unused, const cha...
  type rte_driver (line 531) | struct rte_driver
  type rte_driver (line 536) | struct rte_driver

FILE: drivers/net/bnx2x/bnx2x_ethdev.h
  type bnx2x_mac_ops (line 75) | struct bnx2x_mac_ops {

FILE: drivers/net/bnx2x/bnx2x_rxtx.c
  type rte_mbuf (line 10) | struct rte_mbuf
  type rte_mempool (line 11) | struct rte_mempool
  type rte_mbuf (line 13) | struct rte_mbuf
  type rte_memzone (line 21) | struct rte_memzone
  type rte_eth_dev (line 22) | struct rte_eth_dev
  type rte_memzone (line 26) | struct rte_memzone
  function bnx2x_rx_queue_release (line 38) | static void
  function bnx2x_dev_rx_queue_release (line 58) | void
  function bnx2x_dev_rx_queue_setup (line 64) | int
  function bnx2x_tx_queue_release (line 187) | static void
  function bnx2x_dev_tx_queue_release (line 207) | void
  function bnx2x_xmit_pkts (line 213) | static uint16_t
  function bnx2x_dev_tx_queue_setup (line 255) | int
  function bnx2x_upd_rx_prod_fast (line 339) | static inline void
  function bnx2x_recv_pkts (line 351) | static uint16_t
  function bnx2x_dev_rx_init (line 457) | int
  function bnx2x_dev_clear_queues (line 465) | void

FILE: drivers/net/bnx2x/bnx2x_rxtx.h
  type bnx2x_rx_entry (line 18) | struct bnx2x_rx_entry {
  type bnx2x_rx_queue (line 25) | struct bnx2x_rx_queue {
  type bnx2x_tx_queue (line 53) | struct bnx2x_tx_queue {
  type rte_eth_dev (line 71) | struct rte_eth_dev
  type rte_eth_rxconf (line 73) | struct rte_eth_rxconf
  type rte_mempool (line 74) | struct rte_mempool
  type rte_eth_dev (line 76) | struct rte_eth_dev
  type rte_eth_txconf (line 78) | struct rte_eth_txconf
  type rte_eth_dev (line 82) | struct rte_eth_dev
  type rte_eth_dev (line 83) | struct rte_eth_dev

FILE: drivers/net/bnx2x/bnx2x_stats.c
  function bnx2x_get_port_stats_dma_len (line 46) | static inline uint16_t
  function bnx2x_storm_stats_post (line 95) | static void
  function bnx2x_hw_stats_post (line 125) | static void
  function bnx2x_stats_comp (line 172) | static int
  function bnx2x_stats_pmf_update (line 195) | static void
  function bnx2x_port_stats_init (line 253) | static void
  function bnx2x_func_stats_init (line 481) | static void
  function bnx2x_stats_start (line 510) | static void
  function bnx2x_stats_pmf_start (line 533) | static void
  function bnx2x_stats_restart (line 541) | static void
  function bnx2x_bmac_stats_update (line 556) | static void
  function bnx2x_mstat_stats_update (line 659) | static void
  function bnx2x_emac_stats_update (line 737) | static void
  function bnx2x_hw_stats_update (line 795) | static int
  function bnx2x_storm_stats_validate_counters (line 871) | static int
  function bnx2x_storm_stats_update (line 919) | static int
  function bnx2x_drv_stats_update (line 1096) | static void
  function bnx2x_edebug_stats_stopped (line 1140) | static uint8_t
  function bnx2x_stats_update (line 1156) | static void
  function bnx2x_port_stats_stop (line 1197) | static void
  function bnx2x_stats_stop (line 1252) | static void
  function bnx2x_stats_do_nothing (line 1276) | static void
  type bnx2x_softc (line 1283) | struct bnx2x_softc
  type bnx2x_stats_state (line 1284) | enum bnx2x_stats_state
  function bnx2x_stats_handle (line 1300) | void bnx2x_stats_handle(struct bnx2x_softc *sc, enum bnx2x_stats_event e...
  function bnx2x_port_stats_base_init (line 1320) | static void
  function bnx2x_prep_fw_stats_req (line 1356) | static void
  function bnx2x_memset_stats (line 1439) | void bnx2x_memset_stats(struct bnx2x_softc *sc)
  function bnx2x_stats_init (line 1478) | void
  function bnx2x_save_statistics (line 1564) | void

FILE: drivers/net/bnx2x/bnx2x_stats.h
  type nig_stats (line 42) | struct nig_stats {
  type bnx2x_stats_event (line 64) | enum bnx2x_stats_event {
  type bnx2x_stats_state (line 72) | enum bnx2x_stats_state {
  type bnx2x_eth_stats (line 78) | struct bnx2x_eth_stats {
  type bnx2x_eth_q_stats (line 254) | struct bnx2x_eth_q_stats {
  type bnx2x_eth_stats_old (line 334) | struct bnx2x_eth_stats_old {
  type bnx2x_eth_q_stats_old (line 339) | struct bnx2x_eth_q_stats_old {
  type bnx2x_net_stats_old (line 410) | struct bnx2x_net_stats_old {
  type bnx2x_fw_port_stats_old (line 414) | struct bnx2x_fw_port_stats_old {
  type bnx2x_softc (line 626) | struct bnx2x_softc
  type bnx2x_softc (line 627) | struct bnx2x_softc
  type bnx2x_softc (line 628) | struct bnx2x_softc
  type bnx2x_stats_event (line 628) | enum bnx2x_stats_event
  type bnx2x_softc (line 629) | struct bnx2x_softc
  type bnx2x_softc (line 630) | struct bnx2x_softc

FILE: drivers/net/bnx2x/bnx2x_vfpf.c
  function bnx2x_vf_crc (line 10) | static inline uint32_t
  function bnx2x_check_bull (line 21) | int
  function bnx2x_init_first_tlv (line 69) | static void
  function bnx2x_do_req4pf (line 90) | static int
  function bnx2x_check_me_flags (line 141) | static inline uint16_t bnx2x_check_me_flags(uint32_t val)
  function bnx2x_read_vf_id (line 152) | static inline int bnx2x_read_vf_id(struct bnx2x_softc *sc)
  type bnx2x_obtain_status (line 173) | struct bnx2x_obtain_status {
  function bnx2x_loop_obtain_resources (line 178) | static
  function bnx2x_vf_get_resources (line 237) | int bnx2x_vf_get_resources(struct bnx2x_softc *sc, uint8_t tx_count, uin...
  function bnx2x_vf_close (line 298) | void
  function bnx2x_vf_init (line 323) | int
  function bnx2x_vf_unload (line 355) | void
  function bnx2x_vf_q_flags (line 402) | static inline uint16_t
  function bnx2x_vf_rx_q_prep (line 414) | static void
  function bnx2x_vf_tx_q_prep (line 438) | static void
  function bnx2x_vf_setup_queue (line 457) | int
  function bnx2x_vf_set_mac (line 488) | int
  function bnx2x_vf_config_rss (line 535) | int
  function bnx2x_vf_set_rx_mode (line 569) | int

FILE: drivers/net/bnx2x/bnx2x_vfpf.h
  type vf_resource_query (line 14) | struct vf_resource_query {
  type vf_first_tlv (line 37) | struct vf_first_tlv {
  type vf_common_reply_tlv (line 44) | struct vf_common_reply_tlv {
  type channel_list_end_tlv (line 52) | struct channel_list_end_tlv {
  type vf_acquire_tlv (line 59) | struct vf_acquire_tlv {
  type vf_q_op_tlv (line 71) | struct vf_q_op_tlv {
  type vf_rss_tlv (line 78) | struct vf_rss_tlv {
  type vf_resc (line 89) | struct vf_resc {
  type vf_acquire_resp_tlv (line 107) | struct vf_acquire_resp_tlv {
  type vf_init_tlv (line 121) | struct vf_init_tlv {
  type vf_rxq_params (line 131) | struct vf_rxq_params {
  type vf_txq_params (line 155) | struct vf_txq_params {
  type vf_setup_q_tlv (line 170) | struct vf_setup_q_tlv {
  type vf_q_mac_vlan_filter (line 184) | struct vf_q_mac_vlan_filter {
  type vf_set_q_filters_tlv (line 197) | struct vf_set_q_filters_tlv {
  type vf_close_tlv (line 223) | struct vf_close_tlv {
  type vf_release_tlv (line 230) | struct vf_release_tlv {
  type vf_first_tlv (line 237) | struct vf_first_tlv
  type vf_acquire_tlv (line 238) | struct vf_acquire_tlv
  type vf_init_tlv (line 239) | struct vf_init_tlv
  type vf_close_tlv (line 240) | struct vf_close_tlv
  type vf_q_op_tlv (line 241) | struct vf_q_op_tlv
  type vf_setup_q_tlv (line 242) | struct vf_setup_q_tlv
  type vf_set_q_filters_tlv (line 243) | struct vf_set_q_filters_tlv
  type vf_release_tlv (line 244) | struct vf_release_tlv
  type vf_rss_tlv (line 245) | struct vf_rss_tlv
  type channel_list_end_tlv (line 246) | struct channel_list_end_tlv
  type vf_common_reply_tlv (line 250) | struct vf_common_reply_tlv
  type vf_acquire_resp_tlv (line 251) | struct vf_acquire_resp_tlv
  type channel_list_end_tlv (line 252) | struct channel_list_end_tlv
  type bnx2x_vf_bulletin (line 256) | struct bnx2x_vf_bulletin {
  type channel_tlvs (line 285) | enum channel_tlvs {
  type bnx2x_vf_mbx_msg (line 306) | struct bnx2x_vf_mbx_msg {
  type bnx2x_softc (line 312) | struct bnx2x_softc
  type bnx2x_softc (line 313) | struct bnx2x_softc
  type ecore_config_rss_params (line 313) | struct ecore_config_rss_params

FILE: drivers/net/bnx2x/debug.c
  function bnx2x_reg_write8 (line 44) | void
  function bnx2x_reg_write16 (line 51) | void
  function bnx2x_reg_write32 (line 62) | void
  function bnx2x_reg_read8 (line 73) | uint8_t
  function bnx2x_reg_read16 (line 84) | uint16_t
  function bnx2x_reg_read32 (line 99) | uint32_t

FILE: drivers/net/bnx2x/ecore_hsi.h
  type license_key (line 39) | struct license_key {
  type license_key_t (line 59) | typedef struct license_key license_key_t;
  type mac_addr (line 142) | struct mac_addr {
  type shared_hw_cfg (line 148) | struct shared_hw_cfg {			 /* NVRAM Offset */
  type port_hw_cfg (line 362) | struct port_hw_cfg {		    /* port 0: 0x12c  port 1: 0x2bc */
  type shared_feat_cfg (line 856) | struct shared_feat_cfg {		 /* NVRAM Offset */
  type port_feat_cfg (line 913) | struct port_feat_cfg {		    /* port 0: 0x454  port 1: 0x4c8 */
  type shm_dev_info (line 1147) | struct shm_dev_info {				/* size */
  type extended_dev_info_shared_cfg (line 1161) | struct extended_dev_info_shared_cfg {             /* NVRAM OFFSET */
  type drv_port_mb (line 1492) | struct drv_port_mb {
  type drv_func_mb (line 1567) | struct drv_func_mb {
  type mgmtfw_state (line 1790) | struct mgmtfw_state {
  type shared_mf_cfg (line 1798) | struct shared_mf_cfg {
  type port_mf_cfg (line 1809) | struct port_mf_cfg {
  type func_mf_cfg (line 1820) | struct func_mf_cfg {
  type mf_cfg_afex_vlan_mode (line 1889) | enum mf_cfg_afex_vlan_mode {
  type func_ext_cfg (line 1896) | struct func_ext_cfg {
  type mf_cfg (line 1927) | struct mf_cfg {
  type shmem_region (line 1944) | struct shmem_region {		       /*   SharedMem Offset (size) */
  type fw_flr_ack (line 2004) | struct fw_flr_ack {
  type fw_flr_mb (line 2010) | struct fw_flr_mb {
  type eee_remote_vals (line 2016) | struct eee_remote_vals {
  type dcbx_ets_feature (line 2098) | struct dcbx_ets_feature {
  type dcbx_pfc_feature (line 2109) | struct dcbx_pfc_feature {
  type dcbx_app_priority_entry (line 2139) | struct dcbx_app_priority_entry {
  type dcbx_app_priority_feature (line 2163) | struct dcbx_app_priority_feature {
  type dcbx_features (line 2179) | struct dcbx_features {
  type lldp_params (line 2190) | struct lldp_params {
  type lldp_dcbx_stat (line 2226) | struct lldp_dcbx_stat {
  type lldp_admin_mib (line 2240) | struct lldp_admin_mib {
  type lldp_remote_mib (line 2261) | struct lldp_remote_mib {
  type lldp_local_mib (line 2280) | struct lldp_local_mib {
  type lldp_local_mib_ext (line 2297) | struct lldp_local_mib_ext {
  type shmem_lfa (line 2309) | struct shmem_lfa {
  type shmem2_region (line 2354) | struct shmem2_region {
  type emac_stats (line 2560) | struct emac_stats {
  type bmac1_stats (line 2612) | struct bmac1_stats {
  type bmac2_stats (line 2716) | struct bmac2_stats {
  type mstat_stats (line 2832) | struct mstat_stats {
  type emac_stats (line 2959) | struct emac_stats
  type bmac1_stats (line 2960) | struct bmac1_stats
  type bmac2_stats (line 2961) | struct bmac2_stats
  type mstat_stats (line 2962) | struct mstat_stats
  type mac_stx (line 2966) | struct mac_stx {
  type host_port_stats (line 3090) | struct host_port_stats {
  type host_func_stats (line 3110) | struct host_func_stats {
  type afex_stats (line 3151) | struct afex_stats {
  type port_info (line 3191) | struct port_info {
  type atten_sp_status_block (line 3243) | struct atten_sp_status_block
  type cstorm_eth_ag_context (line 3257) | struct cstorm_eth_ag_context
  type dmae_command (line 3266) | struct dmae_command
  type doorbell_hdr (line 3368) | struct doorbell_hdr
  type eth_tx_doorbell (line 3384) | struct eth_tx_doorbell
  type hc_status_block_e1x (line 3413) | struct hc_status_block_e1x
  type host_hc_status_block_e1x (line 3423) | struct host_hc_status_block_e1x
  type hc_status_block_e2 (line 3432) | struct hc_status_block_e2
  type host_hc_status_block_e2 (line 3442) | struct host_hc_status_block_e2
  type hc_sp_status_block (line 3451) | struct hc_sp_status_block
  type host_sp_status_block (line 3462) | struct host_sp_status_block
  type igu_backward_compatible (line 3510) | struct igu_backward_compatible
  type igu_regular (line 3532) | struct igu_regular
  type igu_regular (line 3561) | struct igu_regular
  type igu_backward_compatible (line 3562) | struct igu_backward_compatible
  type igu_ctrl_cmd (line 3569) | enum igu_ctrl_cmd
  type igu_ctrl_reg (line 3579) | struct igu_ctrl_reg
  type igu_int_cmd (line 3598) | enum igu_int_cmd
  type igu_seg_access (line 3610) | enum igu_seg_access
  type parsing_flags (line 3621) | struct parsing_flags
  type prs_flags_ack_type (line 3656) | enum prs_flags_ack_type
  type prs_flags_eth_addr_type (line 3666) | enum prs_flags_eth_addr_type
  type prs_flags_over_eth (line 3676) | enum prs_flags_over_eth
  type prs_flags_over_ip (line 3688) | enum prs_flags_over_ip
  type sdm_op_gen (line 3699) | struct sdm_op_gen
  type timers_block_context (line 3718) | struct timers_block_context
  type tstorm_eth_ag_context (line 3736) | struct tstorm_eth_ag_context
  type ustorm_eth_ag_context (line 3745) | struct ustorm_eth_ag_context
  type xstorm_eth_ag_context (line 3764) | struct xstorm_eth_ag_context
  type doorbell (line 3783) | struct doorbell
  type doorbell_set_prod (line 3800) | struct doorbell_set_prod
  type regpair (line 3814) | struct regpair
  type regpair_native (line 3821) | struct regpair_native
  type classify_rule (line 3831) | enum classify_rule
  type classify_rule_action_type (line 3842) | enum classify_rule_action_type
  type client_init_general_data (line 3852) | struct client_init_general_data
  type client_init_rx_data (line 3872) | struct client_init_rx_data
  type client_init_tx_data (line 3942) | struct client_init_tx_data
  type client_init_ramrod_data (line 3974) | struct client_init_ramrod_data
  type client_update_ramrod_data (line 3985) | struct client_update_ramrod_data
  type cstorm_eth_st_context (line 4016) | struct cstorm_eth_st_context
  type double_regpair (line 4022) | struct double_regpair
  type eth_addr_type (line 4034) | enum eth_addr_type
  type eth_classify_cmd_header (line 4046) | struct eth_classify_cmd_header
  type eth_classify_header (line 4068) | struct eth_classify_header
  type eth_classify_mac_cmd (line 4080) | struct eth_classify_mac_cmd
  type eth_classify_pair_cmd (line 4095) | struct eth_classify_pair_cmd
  type eth_classify_vlan_cmd (line 4110) | struct eth_classify_vlan_cmd
  type eth_classify_mac_cmd (line 4124) | struct eth_classify_mac_cmd
  type eth_classify_vlan_cmd (line 4125) | struct eth_classify_vlan_cmd
  type eth_classify_pair_cmd (line 4126) | struct eth_classify_pair_cmd
  type eth_classify_rules_ramrod_data (line 4132) | struct eth_classify_rules_ramrod_data
  type eth_common_ramrod_data (line 4142) | struct eth_common_ramrod_data
  type ustorm_eth_st_context (line 4152) | struct ustorm_eth_st_context
  type tstorm_eth_st_context (line 4160) | struct tstorm_eth_st_context
  type xstorm_eth_st_context (line 4168) | struct xstorm_eth_st_context
  type eth_context (line 4176) | struct eth_context
  type eth_end_agg_rx_cqe (line 4202) | struct eth_end_agg_rx_cqe
  type eth_fast_path_rx_cqe (line 4228) | struct eth_fast_path_rx_cqe
  type eth_filter_rules_cmd (line 4271) | struct eth_filter_rules_cmd
  type eth_filter_rules_ramrod_data (line 4308) | struct eth_filter_rules_ramrod_data
  type eth_general_rules_ramrod_data (line 4318) | struct eth_general_rules_ramrod_data
  type eth_halt_ramrod_data (line 4328) | struct eth_halt_ramrod_data
  type eth_mac_addresses (line 4338) | struct eth_mac_addresses
  type eth_tunnel_data (line 4367) | struct eth_tunnel_data
  type eth_mac_addresses (line 4407) | struct eth_mac_addresses
  type eth_tunnel_data (line 4408) | struct eth_tunnel_data
  type eth_multicast_rules_cmd (line 4415) | struct eth_multicast_rules_cmd
  type eth_multicast_rules_ramrod_data (line 4437) | struct eth_multicast_rules_ramrod_data
  type ramrod_data (line 4447) | struct ramrod_data
  type ramrod_data (line 4458) | struct ramrod_data
  type eth_rss_hash_type (line 4465) | enum eth_rss_hash_type
  type eth_rss_mode (line 4481) | enum eth_rss_mode
  type eth_rss_update_ramrod_data (line 4495) | struct eth_rss_update_ramrod_data
  type eth_rx_bd (line 4529) | struct eth_rx_bd
  type common_ramrod_eth_rx_cqe (line 4539) | struct common_ramrod_eth_rx_cqe
  type eth_rx_cqe_next_page (line 4563) | struct eth_rx_cqe_next_page
  type eth_fast_path_rx_cqe (line 4575) | struct eth_fast_path_rx_cqe
  type common_ramrod_eth_rx_cqe (line 4576) | struct common_ramrod_eth_rx_cqe
  type eth_rx_cqe_next_page (line 4577) | struct eth_rx_cqe_next_page
  type eth_end_agg_rx_cqe (line 4578) | struct eth_end_agg_rx_cqe
  type eth_rx_cqe_type (line 4585) | enum eth_rx_cqe_type
  type eth_rx_fp_sel (line 4597) | enum eth_rx_fp_sel
  type eth_rx_sge (line 4607) | struct eth_rx_sge
  type spe_hdr (line 4617) | struct spe_hdr
  type regpair (line 4638) | struct regpair
  type regpair (line 4639) | struct regpair
  type eth_halt_ramrod_data (line 4640) | struct eth_halt_ramrod_data
  type regpair (line 4641) | struct regpair
  type eth_common_ramrod_data (line 4642) | struct eth_common_ramrod_data
  type regpair (line 4643) | struct regpair
  type regpair (line 4644) | struct regpair
  type regpair (line 4645) | struct regpair
  type eth_spe (line 4651) | struct eth_spe
  type eth_spqe_cmd_id (line 4661) | enum eth_spqe_cmd_id
  type eth_tpa_update_command (line 4683) | enum eth_tpa_update_command
  type eth_tunnel_lso_inc_ip_id (line 4694) | enum eth_tunnel_lso_inc_ip_id
  type eth_tunnel_non_lso_csum_location (line 4704) | enum eth_tunnel_non_lso_csum_location
  type eth_tx_bd (line 4714) | struct eth_tx_bd
  type eth_tx_bd_flags (line 4727) | struct eth_tx_bd_flags
  type eth_tx_start_bd (line 4749) | struct eth_tx_start_bd
  type eth_tx_parse_bd_e1x (line 4770) | struct eth_tx_parse_bd_e1x
  type eth_tx_parse_bd_e2 (line 4813) | struct eth_tx_parse_bd_e2
  type eth_tx_parse_2nd_bd (line 4832) | struct eth_tx_parse_2nd_bd
  type eth_tx_next_bd (line 4878) | struct eth_tx_next_bd
  type eth_tx_start_bd (line 4890) | struct eth_tx_start_bd
  type eth_tx_bd (line 4891) | struct eth_tx_bd
  type eth_tx_parse_bd_e1x (line 4892) | struct eth_tx_parse_bd_e1x
  type eth_tx_parse_bd_e2 (line 4893) | struct eth_tx_parse_bd_e2
  type eth_tx_parse_2nd_bd (line 4894) | struct eth_tx_parse_2nd_bd
  type eth_tx_next_bd (line 4895) | struct eth_tx_next_bd
  type eth_tx_bds_array (line 4901) | struct eth_tx_bds_array
  type eth_tx_vlan_type (line 4910) | enum eth_tx_vlan_type
  type eth_vlan_filter_mode (line 4922) | enum eth_vlan_filter_mode
  type mac_configuration_hdr (line 4933) | struct mac_configuration_hdr
  type mac_configuration_entry (line 4944) | struct mac_configuration_entry
  type mac_configuration_cmd (line 4971) | struct mac_configuration_cmd
  type set_mac_action_type (line 4981) | enum set_mac_action_type
  type tpa_mode (line 4991) | enum tpa_mode
  type tpa_update_ramrod_data (line 5001) | struct tpa_update_ramrod_data
  type tstorm_eth_approximate_match_multicast_filtering (line 5023) | struct tstorm_eth_approximate_match_multicast_filtering
  type tstorm_eth_function_common_config (line 5032) | struct tstorm_eth_function_common_config
  type tstorm_eth_mac_filter_config (line 5058) | struct tstorm_eth_mac_filter_config
  type tx_queue_init_ramrod_data (line 5073) | struct tx_queue_init_ramrod_data
  type afex_vif_list_ramrod_data (line 5108) | struct afex_vif_list_ramrod_data
  type cfc_del_event_data (line 5122) | struct cfc_del_event_data
  type cmng_flags_per_port (line 5133) | struct cmng_flags_per_port
  type rate_shaping_vars_per_port (line 5153) | struct rate_shaping_vars_per_port
  type fairness_vars_per_port (line 5162) | struct fairness_vars_per_port
  type safc_struct_per_port (line 5173) | struct safc_struct_per_port
  type cmng_struct_per_port (line 5191) | struct cmng_struct_per_port
  type rate_shaping_counter (line 5202) | struct rate_shaping_counter
  type rate_shaping_vars_per_vn (line 5217) | struct rate_shaping_vars_per_vn
  type fairness_vars_per_vn (line 5225) | struct fairness_vars_per_vn
  type cmng_vnic (line 5235) | struct cmng_vnic
  type cmng_init (line 5244) | struct cmng_init
  type cmng_init_input (line 5254) | struct cmng_init_input
  type common_spqe_cmd_id (line 5268) | enum common_spqe_cmd_id
  type connection_type (line 5287) | enum connection_type
  type cos_mode (line 5304) | enum cos_mode
  type hc_dynamic_drv_counter (line 5315) | struct hc_dynamic_drv_counter
  type cstorm_queue_zone_data (line 5323) | struct cstorm_queue_zone_data
  type vf_pf_channel_zone_data (line 5333) | struct vf_pf_channel_zone_data
  type non_trigger_vf_zone (line 5342) | struct non_trigger_vf_zone
  type vf_pf_channel_zone_trigger (line 5350) | struct vf_pf_channel_zone_trigger
  type trigger_vf_zone (line 5358) | struct trigger_vf_zone
  type cstorm_vf_zone_data (line 5375) | struct cstorm_vf_zone_data
  type dynamic_hc_sm_config (line 5385) | struct dynamic_hc_sm_config
  type dynamic_hc_config (line 5398) | struct dynamic_hc_config
  type e2_integ_data (line 5404) | struct e2_integ_data
  type eth_event_data (line 5456) | struct eth_event_data
  type vf_pf_event_data (line 5467) | struct vf_pf_event_data
  type vf_flr_event_data (line 5479) | struct vf_flr_event_data
  type malicious_vf_event_data (line 5491) | struct malicious_vf_event_data
  type vif_list_event_data (line 5503) | struct vif_list_event_data
  type function_update_event_data (line 5515) | struct function_update_event_data
  type vf_pf_event_data (line 5529) | struct vf_pf_event_data
  type eth_event_data (line 5530) | struct eth_event_data
  type cfc_del_event_data (line 5531) | struct cfc_del_event_data
  type vf_flr_event_data (line 5532) | struct vf_flr_event_data
  type malicious_vf_event_data (line 5533) | struct malicious_vf_event_data
  type vif_list_event_data (line 5534) | struct vif_list_event_data
  type function_update_event_data (line 5535) | struct function_update_event_data
  type event_ring_data (line 5542) | struct event_ring_data
  type event_ring_msg (line 5561) | struct event_ring_msg
  type event_ring_next (line 5572) | struct event_ring_next
  type event_ring_msg (line 5583) | struct event_ring_msg
  type event_ring_next (line 5584) | struct event_ring_next
  type event_ring_opcode (line 5591) | enum event_ring_opcode
  type fairness_mode (line 5618) | enum fairness_mode
  type priority_cos (line 5628) | struct priority_cos
  type flow_control_configuration (line 5638) | struct flow_control_configuration
  type function_start_data (line 5652) | struct function_start_data
  type function_update_data (line 5671) | struct function_update_data
  type fw_version (line 5698) | struct fw_version
  type gre_rss_mode (line 5726) | enum gre_rss_mode
  type gre_tunnel_type (line 5737) | enum gre_tunnel_type
  type hc_dynamic_sb_drv_counters (line 5749) | struct hc_dynamic_sb_drv_counters
  type hc_index_data (line 5758) | struct hc_index_data
  type hc_status_block_sm (line 5789) | struct hc_status_block_sm
  type pci_entity (line 5808) | struct pci_entity
  type hc_sb_data (line 5826) | struct hc_sb_data
  type hc_segment (line 5849) | enum hc_segment
  type hc_sp_status_block_data (line 5859) | struct hc_sp_status_block_data
  type hc_status_block_data_e1x (line 5880) | struct hc_status_block_data_e1x
  type hc_status_block_data_e2 (line 5890) | struct hc_status_block_data_e2
  type igu_mode (line 5900) | enum igu_mode
  type ip_ver (line 5910) | enum ip_ver
  type malicious_vf_error_id (line 5920) | enum malicious_vf_error_id
  type mf_mode (line 5942) | enum mf_mode
  type tstorm_per_pf_stats (line 5954) | struct tstorm_per_pf_stats
  type per_pf_stats (line 5962) | struct per_pf_stats
  type tstorm_per_port_stats (line 5971) | struct tstorm_per_port_stats
  type per_port_stats (line 5984) | struct per_port_stats
  type tstorm_per_queue_stats (line 5993) | struct tstorm_per_queue_stats
  type ustorm_per_queue_stats (line 6012) | struct ustorm_per_queue_stats
  type xstorm_per_queue_stats (line 6029) | struct xstorm_per_queue_stats
  type per_queue_stats (line 6043) | struct per_queue_stats
  type pram_fw_version (line 6054) | struct pram_fw_version
  type regpair (line 6080) | struct regpair
  type regpair (line 6081) | struct regpair
  type afex_vif_list_ramrod_data (line 6082) | struct afex_vif_list_ramrod_data
  type protocol_common_spe (line 6088) | struct protocol_common_spe
  type set_timesync_ramrod_data (line 6098) | struct set_timesync_ramrod_data
  type slow_path_element (line 6112) | struct slow_path_element
  type stats_counter (line 6122) | struct stats_counter
  type stats_query_entry (line 6142) | struct stats_query_entry
  type stats_query_cmd_group (line 6154) | struct stats_query_cmd_group
  type stats_query_header (line 6163) | struct stats_query_header
  type stats_query_type (line 6176) | enum stats_query_type
  type status_block_state (line 6189) | enum status_block_state
  type storm_id (line 6200) | enum storm_id
  type traffic_type (line 6213) | enum traffic_type
  type tstorm_queue_zone_data (line 6224) | struct tstorm_queue_zone_data
  type tstorm_vf_zone_data (line 6233) | struct tstorm_vf_zone_data
  type ts_add_sub_value (line 6242) | enum ts_add_sub_value
  type ts_drift_adjust_cmd (line 6252) | enum ts_drift_adjust_cmd
  type ts_offset_cmd (line 6263) | enum ts_offset_cmd
  type ustorm_queue_zone_data (line 6274) | struct ustorm_queue_zone_data
  type ustorm_vf_zone_data (line 6284) | struct ustorm_vf_zone_data
  type vf_pf_channel_data (line 6293) | struct vf_pf_channel_data
  type vf_pf_channel_state (line 6311) | enum vf_pf_channel_state
  type vif_list_rule_kind (line 6321) | enum vif_list_rule_kind
  type xstorm_queue_zone_data (line 6333) | struct xstorm_queue_zone_data
  type xstorm_vf_zone_data (line 6342) | struct xstorm_vf_zone_data

FILE: drivers/net/bnx2x/ecore_init.h
  type raw_op (line 70) | struct raw_op {
  type op_read (line 76) | struct op_read {
  type op_write (line 82) | struct op_write {
  type op_arr_write (line 88) | struct op_arr_write {
  type op_zero (line 100) | struct op_zero {
  type op_if_mode (line 106) | struct op_if_mode {
  type op_if_phase (line 112) | struct op_if_phase {
  type op_delay (line 118) | struct op_delay {
  type op_read (line 125) | struct op_read
  type op_write (line 126) | struct op_write
  type op_arr_write (line 127) | struct op_arr_write
  type op_zero (line 128) | struct op_zero
  type raw_op (line 129) | struct raw_op
  type op_if_mode (line 130) | struct op_if_mode
  type op_if_phase (line 131) | struct op_if_phase
  type op_delay (line 132) | struct op_delay
  function ecore_map_q_cos (line 252) | static inline void ecore_map_q_cos(struct bnx2x_softc *sc, uint32_t q_nu...
  function ecore_dcb_config_qm (line 306) | static inline void ecore_dcb_config_qm(struct bnx2x_softc *sc, enum cos_...
  function ecore_init_max (line 382) | static inline void ecore_init_max(const struct cmng_init_input *input_data,
  function ecore_init_max_per_vn (line 421) | static inline void ecore_init_max_per_vn(uint16_t vnic_max_rate,
  function ecore_init_min (line 436) | static inline void ecore_init_min(const struct cmng_init_input *input_data,
  function ecore_init_fw_wrr (line 494) | static inline void ecore_init_fw_wrr(const struct cmng_init_input *input...
  function ecore_init_safc (line 533) | static inline void ecore_init_safc(struct cmng_init *ram_data)
  function ecore_init_cmng (line 540) | static inline void ecore_init_cmng(const struct cmng_init_input *input_d...
  type ilt_line (line 574) | struct ilt_line {
  type ilt_client_info (line 580) | struct ilt_client_info {
  type ecore_ilt (line 590) | struct ecore_ilt {
  type src_ent (line 603) | struct src_ent {
  function ecore_set_mcp_parity (line 730) | static inline void ecore_set_mcp_parity(struct bnx2x_softc *sc, uint8_t ...
  function ecore_parity_reg_mask (line 747) | static inline uint32_t ecore_parity_reg_mask(struct bnx2x_softc *sc, int...
  function ecore_disable_blocks_parity (line 757) | static inline void ecore_disable_blocks_parity(struct bnx2x_softc *sc)
  function ecore_clear_blocks_parity (line 780) | static inline void ecore_clear_blocks_parity(struct bnx2x_softc *sc)
  function ecore_enable_blocks_parity (line 823) | static inline void ecore_enable_blocks_parity(struct bnx2x_softc *sc)

FILE: drivers/net/bnx2x/ecore_init_ops.h
  type bnx2x_softc (line 40) | struct bnx2x_softc
  type bnx2x_softc (line 41) | struct bnx2x_softc
  function ecore_init_str_wr (line 45) | static void ecore_init_str_wr(struct bnx2x_softc *sc, uint32_t addr,
  function ecore_write_big_buf (line 54) | static void ecore_write_big_buf(struct bnx2x_softc *sc, uint32_t addr, u...
  function ecore_init_fill (line 62) | static void ecore_init_fill(struct bnx2x_softc *sc, uint32_t addr, int f...
  function ecore_write_big_buf_wb (line 78) | static void ecore_write_big_buf_wb(struct bnx2x_softc *sc, uint32_t addr...
  function ecore_init_wr_64 (line 86) | static void ecore_init_wr_64(struct bnx2x_softc *sc, uint32_t addr,
  type bnx2x_softc (line 125) | struct bnx2x_softc
  function ecore_init_wr_wb (line 155) | static void ecore_init_wr_wb(struct bnx2x_softc *sc, uint32_t addr,
  function ecore_wr_64 (line 164) | static void ecore_wr_64(struct bnx2x_softc *sc, uint32_t reg, uint32_t v...
  function ecore_init_wr_zp (line 174) | static void ecore_init_wr_zp(struct bnx2x_softc *sc, uint32_t addr, uint...
  function ecore_init_block (line 196) | static void ecore_init_block(struct bnx2x_softc *sc, uint32_t block, uin...
  type arb_line (line 300) | struct arb_line {
  type arb_line (line 307) | struct arb_line
  type arb_line (line 340) | struct arb_line
  type arb_line (line 357) | struct arb_line
  type arb_line (line 417) | struct arb_line
  function ecore_init_pxp_arb (line 444) | static void ecore_init_pxp_arb(struct bnx2x_softc *sc, int r_order,
  function ecore_ilt_line_mem_op (line 585) | static int ecore_ilt_line_mem_op(struct bnx2x_softc *sc,
  function ecore_ilt_client_mem_op (line 604) | static int ecore_ilt_client_mem_op(struct bnx2x_softc *sc, int cli_num,
  function ecore_ilt_mem_op_cnic (line 624) | static inline int ecore_ilt_mem_op_cnic(struct bnx2x_softc *sc, uint8_t ...
  function ecore_ilt_mem_op (line 636) | static int ecore_ilt_mem_op(struct bnx2x_softc *sc, uint8_t memop)
  function ecore_ilt_line_wr (line 647) | static void ecore_ilt_line_wr(struct bnx2x_softc *sc, int abs_idx,
  function ecore_ilt_line_init_op (line 657) | static void ecore_ilt_line_init_op(struct bnx2x_softc *sc,
  function ecore_ilt_boundry_init_op (line 676) | static void ecore_ilt_boundry_init_op(struct bnx2x_softc *sc,
  function ecore_ilt_client_init_op_ilt (line 709) | static void ecore_ilt_client_init_op_ilt(struct bnx2x_softc *sc,
  function ecore_ilt_client_init_op (line 726) | static void ecore_ilt_client_init_op(struct bnx2x_softc *sc,
  function ecore_ilt_client_id_init_op (line 734) | static void ecore_ilt_client_id_init_op(struct bnx2x_softc *sc,
  function ecore_ilt_init_op_cnic (line 743) | static inline void ecore_ilt_init_op_cnic(struct bnx2x_softc *sc, uint8_...
  function ecore_ilt_init_op (line 750) | static void ecore_ilt_init_op(struct bnx2x_softc *sc, uint8_t initop)
  function ecore_ilt_init_client_psz (line 758) | static void ecore_ilt_init_client_psz(struct bnx2x_softc *sc, int cli_num,
  function ecore_ilt_init_page_size (line 782) | static void ecore_ilt_init_page_size(struct bnx2x_softc *sc, uint8_t ini...
  function ecore_qm_init_cid_count (line 802) | static void ecore_qm_init_cid_count(struct bnx2x_softc *sc, int qm_cid_c...
  function ecore_qm_set_ptr_table (line 821) | static void ecore_qm_set_ptr_table(struct bnx2x_softc *sc, int qm_cid_co...
  function ecore_qm_init_ptr_table (line 835) | static void ecore_qm_init_ptr_table(struct bnx2x_softc *sc, int qm_cid_c...
  function ecore_src_init_t2 (line 862) | static void ecore_src_init_t2(struct bnx2x_softc *sc, struct src_ent *t2,

FILE: drivers/net/bnx2x/ecore_mfw_req.h
  type fcoe_capabilities (line 45) | struct fcoe_capabilities {
  type glob_ncsi_oem_data (line 76) | struct glob_ncsi_oem_data
  type drv_info_opcode (line 87) | enum drv_info_opcode {
  type eth_stats_info (line 95) | struct eth_stats_info {
  type fcoe_stats_info (line 134) | struct fcoe_stats_info {
  type iscsi_stats_info (line 161) | struct iscsi_stats_info {
  type eth_stats_info (line 200) | struct eth_stats_info
  type fcoe_stats_info (line 201) | struct fcoe_stats_info
  type iscsi_stats_info (line 202) | struct iscsi_stats_info

FILE: drivers/net/bnx2x/ecore_sp.c
  function ecore_exe_queue_init (line 53) | static void
  function ecore_exe_queue_free_elem (line 83) | static void ecore_exe_queue_free_elem(struct bnx2x_softc *sc __rte_unused,
  function ecore_exe_queue_length (line 90) | static inline int ecore_exe_queue_length(struct ecore_exe_queue_obj *o)
  function ecore_exe_queue_add (line 115) | static int ecore_exe_queue_add(struct bnx2x_softc *sc,
  function __ecore_exe_queue_reset_pending (line 152) | static void __ecore_exe_queue_reset_pending(struct bnx2x_softc *sc, stru...
  function ecore_exe_queue_reset_pending (line 166) | static inline void ecore_exe_queue_reset_pending(struct bnx2x_softc *sc,
  function ecore_exe_queue_step (line 185) | static int ecore_exe_queue_step(struct bnx2x_softc *sc,
  function ecore_exe_queue_empty (line 252) | static inline int ecore_exe_queue_empty(struct ecore_exe_queue_obj *o)
  type ecore_exeq_elem (line 262) | struct ecore_exeq_elem
  type bnx2x_softc (line 262) | struct
  type ecore_exeq_elem (line 267) | struct ecore_exeq_elem
  function ecore_raw_check_pending (line 271) | static int ecore_raw_check_pending(struct ecore_raw_obj *o)
  function ecore_raw_clear_pending (line 285) | static void ecore_raw_clear_pending(struct ecore_raw_obj *o)
  function ecore_raw_set_pending (line 292) | static void ecore_raw_set_pending(struct ecore_raw_obj *o)
  function ecore_state_wait (line 307) | static int ecore_state_wait(struct bnx2x_softc *sc, int state,
  function ecore_raw_wait (line 343) | static int ecore_raw_wait(struct bnx2x_softc *sc, struct ecore_raw_obj *...
  function ecore_get_cam_offset_mac (line 350) | static int ecore_get_cam_offset_mac(struct ecore_vlan_mac_obj *o, int *o...
  function ecore_get_credit_mac (line 359) | static int ecore_get_credit_mac(struct ecore_vlan_mac_obj *o)
  function ecore_put_cam_offset_mac (line 368) | static int ecore_put_cam_offset_mac(struct ecore_vlan_mac_obj *o, int of...
  function ecore_put_credit_mac (line 375) | static int ecore_put_credit_mac(struct ecore_vlan_mac_obj *o)
  function __ecore_vlan_mac_h_write_trylock (line 392) | static int __ecore_vlan_mac_h_write_trylock(struct bnx2x_softc *sc __rte...
  function __ecore_vlan_mac_h_exec_pending (line 414) | static void __ecore_vlan_mac_h_exec_pending(struct bnx2x_softc *sc,
  function __ecore_vlan_mac_h_pend (line 445) | static void __ecore_vlan_mac_h_pend(struct bnx2x_softc *sc __rte_unused,
  function __ecore_vlan_mac_h_write_unlock (line 465) | static void __ecore_vlan_mac_h_write_unlock(struct bnx2x_softc *sc,
  function ecore_vlan_mac_h_write_unlock (line 487) | void ecore_vlan_mac_h_write_unlock(struct bnx2x_softc *sc,
  function __ecore_vlan_mac_h_read_lock (line 504) | static int __ecore_vlan_mac_h_read_lock(struct bnx2x_softc *sc __rte_unu...
  function ecore_vlan_mac_h_read_lock (line 522) | static int ecore_vlan_mac_h_read_lock(struct bnx2x_softc *sc,
  function __ecore_vlan_mac_h_read_unlock (line 544) | static void __ecore_vlan_mac_h_read_unlock(struct bnx2x_softc *sc,
  function ecore_vlan_mac_h_read_unlock (line 582) | void ecore_vlan_mac_h_read_unlock(struct bnx2x_softc *sc,
  function ecore_get_n_elements (line 599) | static int ecore_get_n_elements(struct bnx2x_softc *sc,
  function ecore_check_mac_add (line 635) | static int ecore_check_mac_add(struct bnx2x_softc *sc __rte_unused,
  type ecore_vlan_mac_registry_elem (line 659) | struct ecore_vlan_mac_registry_elem
  type bnx2x_softc (line 659) | struct bnx2x_softc
  type ecore_vlan_mac_obj (line 662) | struct
  type ecore_vlan_mac_registry_elem (line 668) | struct ecore_vlan_mac_registry_elem
  function ecore_check_move (line 684) | static int ecore_check_move(struct bnx2x_softc *sc,
  function ecore_check_move_always_err (line 709) | static int ecore_check_move_always_err(__rte_unused struct bnx2x_softc *sc,
  function ecore_vlan_mac_get_rx_tx_flag (line 718) | static uint8_t ecore_vlan_mac_get_rx_tx_flag(struct ecore_vlan_mac_obj
  function ecore_set_mac_in_nig (line 735) | static void ecore_set_mac_in_nig(struct bnx2x_softc *sc,
  function ecore_vlan_mac_set_cmd_hdr_e2 (line 776) | static void ecore_vlan_mac_set_cmd_hdr_e2(struct ecore_vlan_mac_obj *o,
  function ecore_vlan_mac_set_rdata_hdr_e2 (line 807) | static void ecore_vlan_mac_set_rdata_hdr_e2(uint32_t cid, int type, stru...
  function ecore_set_one_mac_e2 (line 816) | static void ecore_set_one_mac_e2(struct bnx2x_softc *sc,
  function ecore_vlan_mac_set_rdata_hdr_e1x (line 909) | static void ecore_vlan_mac_set_rdata_hdr_e1x(struct ecore_vlan_mac_obj
  function ecore_vlan_mac_set_cfg_entry_e1x (line 922) | static void ecore_vlan_mac_set_cfg_entry_e1x(struct ecore_vlan_mac_obj
  function ecore_vlan_mac_set_rdata_e1x (line 954) | static void ecore_vlan_mac_set_rdata_e1x(struct bnx2x_softc *sc
  function ecore_set_one_mac_e1x (line 984) | static void ecore_set_one_mac_e1x(struct bnx2x_softc *sc,
  function ecore_vlan_mac_restore (line 1026) | static int ecore_vlan_mac_restore(struct bnx2x_softc *sc,
  type ecore_exeq_elem (line 1073) | struct ecore_exeq_elem
  type ecore_exe_queue_obj (line 1073) | struct ecore_exe_queue_obj
  type ecore_exeq_elem (line 1074) | struct ecore_exeq_elem
  type ecore_exeq_elem (line 1076) | struct ecore_exeq_elem
  type ecore_mac_ramrod_data (line 1077) | struct ecore_mac_ramrod_data
  function ecore_validate_vlan_mac_add (line 1103) | static int ecore_validate_vlan_mac_add(struct bnx2x_softc *sc,
  function ecore_validate_vlan_mac_del (line 1148) | static int ecore_validate_vlan_mac_del(struct bnx2x_softc *sc,
  function ecore_validate_vlan_mac_move (line 1208) | static int ecore_validate_vlan_mac_move(struct bnx2x_softc *sc,
  function ecore_validate_vlan_mac (line 1272) | static int ecore_validate_vlan_mac(struct bnx2x_softc *sc,
  function ecore_remove_vlan_mac (line 1288) | static int ecore_remove_vlan_mac(__rte_unused struct bnx2x_softc *sc,
  function ecore_wait_vlan_mac (line 1324) | static int ecore_wait_vlan_mac(struct bnx2x_softc *sc,
  function __ecore_vlan_mac_execute_step (line 1347) | static int __ecore_vlan_mac_execute_step(struct bnx2x_softc *sc,
  function ecore_complete_vlan_mac (line 1382) | static int ecore_complete_vlan_mac(struct bnx2x_softc *sc,
  function ecore_optimize_vlan_mac (line 1421) | static int ecore_optimize_vlan_mac(struct bnx2x_softc *sc,
  function ecore_vlan_mac_get_registry_elem (line 1485) | static int ecore_vlan_mac_get_registry_elem(struct bnx2x_softc *sc,
  function ecore_execute_vlan_mac (line 1538) | static int ecore_execute_vlan_mac(struct bnx2x_softc *sc,
  function ecore_vlan_mac_push_new_cmd (line 1660) | static int ecore_vlan_mac_push_new_cmd(struct bnx2x_softc *sc, struct
  function ecore_config_vlan_mac (line 1696) | int ecore_config_vlan_mac(struct bnx2x_softc *sc,
  function ecore_vlan_mac_del_all (line 1779) | static int ecore_vlan_mac_del_all(struct bnx2x_softc *sc,
  function ecore_init_raw_obj (line 1855) | static void ecore_init_raw_obj(struct ecore_raw_obj *raw, uint8_t cl_id,
  function ecore_init_vlan_mac_common (line 1875) | static void ecore_init_vlan_mac_common(struct ecore_vlan_mac_obj *o,
  function ecore_init_mac_obj (line 1902) | void ecore_init_mac_obj(struct bnx2x_softc *sc,
  function __storm_memset_mac_filters (line 1956) | static void __storm_memset_mac_filters(struct bnx2x_softc *sc, struct
  function ecore_set_rx_mode_e1x (line 1968) | static int ecore_set_rx_mode_e1x(struct bnx2x_softc *sc,
  function ecore_rx_mode_set_rdata_hdr_e2 (line 2050) | static void ecore_rx_mode_set_rdata_hdr_e2(uint32_t cid, struct eth_clas...
  function ecore_rx_mode_set_cmd_state_e2 (line 2057) | static void ecore_rx_mode_set_cmd_state_e2(unsigned long *accept_flags, ...
  function ecore_set_rx_mode_e2 (line 2102) | static int ecore_set_rx_mode_e2(struct bnx2x_softc *sc,
  function ecore_wait_rx_mode_comp_e2 (line 2201) | static int ecore_wait_rx_mode_comp_e2(struct bnx2x_softc *sc,
  function ecore_empty_rx_mode_wait (line 2207) | static int ecore_empty_rx_mode_wait(__rte_unused struct bnx2x_softc *sc,
  function ecore_config_rx_mode (line 2215) | int ecore_config_rx_mode(struct bnx2x_softc *sc,
  function ecore_init_rx_mode_obj (line 2240) | void ecore_init_rx_mode_obj(struct bnx2x_softc *sc, struct ecore_rx_mode...
  function ecore_mcast_bin_from_mac (line 2252) | static uint8_t ecore_mcast_bin_from_mac(uint8_t * mac)
  type ecore_mcast_mac_elem (line 2257) | struct ecore_mcast_mac_elem {
  type ecore_pending_mcast_cmd (line 2263) | struct ecore_pending_mcast_cmd {
  function ecore_mcast_wait (line 2280) | static int ecore_mcast_wait(struct bnx2x_softc *sc, struct ecore_mcast_o...
  function ecore_mcast_enqueue_cmd (line 2289) | static int ecore_mcast_enqueue_cmd(struct bnx2x_softc *sc __rte_unused,
  function ecore_mcast_get_next_bin (line 2370) | static int ecore_mcast_get_next_bin(struct ecore_mcast_obj *o, int last)
  function ecore_mcast_clear_first_bin (line 2397) | static int ecore_mcast_clear_first_bin(struct ecore_mcast_obj *o)
  function ecore_mcast_get_rx_tx_flag (line 2407) | static uint8_t ecore_mcast_get_rx_tx_flag(struct ecore_mcast_obj *o)
  function ecore_mcast_set_one_rule_e2 (line 2423) | static void ecore_mcast_set_one_rule_e2(struct bnx2x_softc *sc __rte_unu...
  function ecore_mcast_handle_restore_cmd_e2 (line 2485) | static int ecore_mcast_handle_restore_cmd_e2(struct bnx2x_softc *sc,
  function ecore_mcast_hdl_pending_add_e2 (line 2515) | static void ecore_mcast_hdl_pending_add_e2(struct bnx2x_softc *sc,
  function ecore_mcast_hdl_pending_del_e2 (line 2555) | static void ecore_mcast_hdl_pending_del_e2(struct bnx2x_softc *sc,
  function ecore_mcast_hdl_pending_restore_e2 (line 2586) | static void ecore_mcast_hdl_pending_restore_e2(struct bnx2x_softc *sc,
  function ecore_mcast_handle_pending_cmds_e2 (line 2602) | static int ecore_mcast_handle_pending_cmds_e2(struct bnx2x_softc *sc, st...
  function ecore_mcast_hdl_add (line 2649) | static void ecore_mcast_hdl_add(struct bnx2x_softc *sc,
  function ecore_mcast_hdl_del (line 2674) | static void ecore_mcast_hdl_del(struct bnx2x_softc *sc,
  function ecore_mcast_handle_current_cmd (line 2704) | static int ecore_mcast_handle_current_cmd(struct bnx2x_softc *sc, struct
  function ecore_mcast_validate_e2 (line 2738) | static int ecore_mcast_validate_e2(__rte_unused struct bnx2x_softc *sc,
  function ecore_mcast_revert_e2 (line 2783) | static void ecore_mcast_revert_e2(__rte_unused struct bnx2x_softc *sc,
  function ecore_mcast_set_rdata_hdr_e2 (line 2800) | static void ecore_mcast_set_rdata_hdr_e2(__rte_unused struct bnx2x_softc
  function ecore_mcast_refresh_registry_e2 (line 2823) | static int ecore_mcast_refresh_registry_e2(struct ecore_mcast_obj *o)
  function ecore_mcast_setup_e2 (line 2839) | static int ecore_mcast_setup_e2(struct bnx2x_softc *sc,
  function ecore_mcast_validate_e1h (line 2923) | static int ecore_mcast_validate_e1h(__rte_unused struct bnx2x_softc *sc,
  function ecore_mcast_revert_e1h (line 2934) | static void ecore_mcast_revert_e1h(__rte_unused struct bnx2x_softc *sc,
  function ecore_mcast_hdl_add_e1h (line 2946) | static void ecore_mcast_hdl_add_e1h(struct bnx2x_softc *sc __rte_unused,
  function ecore_mcast_hdl_restore_e1h (line 2970) | static void ecore_mcast_hdl_restore_e1h(struct bnx2x_softc *sc
  function ecore_mcast_setup_e1h (line 2988) | static int ecore_mcast_setup_e1h(struct bnx2x_softc *sc,
  function ecore_mcast_get_registry_size_aprox (line 3041) | static int ecore_mcast_get_registry_size_aprox(struct ecore_mcast_obj *o)
  function ecore_mcast_set_registry_size_aprox (line 3046) | static void ecore_mcast_set_registry_size_aprox(struct ecore_mcast_obj *o,
  function ecore_config_mcast (line 3052) | int ecore_config_mcast(struct bnx2x_softc *sc,
  function ecore_mcast_clear_sched (line 3119) | static void ecore_mcast_clear_sched(struct ecore_mcast_obj *o)
  function ecore_mcast_set_sched (line 3126) | static void ecore_mcast_set_sched(struct ecore_mcast_obj *o)
  function ecore_mcast_check_sched (line 3133) | static int ecore_mcast_check_sched(struct ecore_mcast_obj *o)
  function ecore_mcast_check_pending (line 3138) | static int ecore_mcast_check_pending(struct ecore_mcast_obj *o)
  function ecore_init_mcast_obj (line 3143) | void ecore_init_mcast_obj(struct bnx2x_softc *sc,
  function __atomic_add_ifless (line 3211) | static int __atomic_add_ifless(ecore_atomic_t * v, int a, int u)
  function __atomic_dec_ifmoe (line 3239) | static int __atomic_dec_ifmoe(ecore_atomic_t * v, int a, int u)
  function ecore_credit_pool_get (line 3257) | static int ecore_credit_pool_get(struct ecore_credit_pool_obj *o, int cnt)
  function ecore_credit_pool_put (line 3268) | static int ecore_credit_pool_put(struct ecore_credit_pool_obj *o, int cnt)
  function ecore_credit_pool_check (line 3282) | static int ecore_credit_pool_check(struct ecore_credit_pool_obj *o)
  function ecore_credit_pool_always_TRUE (line 3292) | static int ecore_credit_pool_always_TRUE(__rte_unused struct
  function ecore_credit_pool_get_entry (line 3299) | static int ecore_credit_pool_get_entry(struct ecore_credit_pool_obj *o,
  function ecore_credit_pool_put_entry (line 3328) | static int ecore_credit_pool_put_entry(struct ecore_credit_pool_obj *o,
  function ecore_credit_pool_put_entry_always_TRUE (line 3345) | static int ecore_credit_pool_put_entry_always_TRUE(__rte_unused struct
  function ecore_credit_pool_get_entry_always_TRUE (line 3352) | static int ecore_credit_pool_get_entry_always_TRUE(__rte_unused struct
  function ecore_init_credit_pool (line 3371) | static void ecore_init_credit_pool(struct ecore_credit_pool_obj *p,
  function ecore_init_mac_credit_pool (line 3413) | void ecore_init_mac_credit_pool(struct bnx2x_softc *sc,
  function ecore_init_vlan_credit_pool (line 3460) | void ecore_init_vlan_credit_pool(struct bnx2x_softc *sc,
  function ecore_setup_rss (line 3492) | static int ecore_setup_rss(struct bnx2x_softc *sc,
  function ecore_config_rss (line 3592) | int ecore_config_rss(struct bnx2x_softc *sc, struct ecore_config_rss_par...
  function ecore_init_rss_config_obj (line 3616) | void ecore_init_rss_config_obj(struct ecore_rss_config_obj *rss_obj,
  function ecore_queue_state_change (line 3643) | int ecore_queue_state_change(struct bnx2x_softc *sc,
  function ecore_queue_set_pending (line 3688) | static int ecore_queue_set_pending(struct ecore_queue_sp_obj *obj,
  function ecore_queue_wait_comp (line 3705) | static int ecore_queue_wait_comp(struct bnx2x_softc *sc,
  function ecore_queue_comp_cmd (line 3721) | static int ecore_queue_comp_cmd(struct bnx2x_softc *sc __rte_unused,
  function ecore_q_fill_setup_data_e2 (line 3765) | static void ecore_q_fill_setup_data_e2(struct ecore_queue_state_params
  function ecore_q_fill_init_general_data (line 3779) | static void ecore_q_fill_init_general_data(struct bnx2x_softc *sc __rte_...
  function ecore_q_fill_init_tx_data (line 3813) | static void ecore_q_fill_init_tx_data(struct ecore_txq_setup_params *par...
  function ecore_q_fill_init_pause_data (line 3846) | static void ecore_q_fill_init_pause_data(struct rxq_pause_params *params,
  function ecore_q_fill_init_rx_data (line 3859) | static void ecore_q_fill_init_rx_data(struct ecore_rxq_setup_params *par...
  function ecore_q_fill_setup_data_cmn (line 3917) | static void ecore_q_fill_setup_data_cmn(struct bnx2x_softc *sc, struct e...
  function ecore_q_fill_setup_tx_only (line 3937) | static void ecore_q_fill_setup_tx_only(struct bnx2x_softc *sc, struct ec...
  function ecore_q_init (line 3965) | static int ecore_q_init(struct bnx2x_softc *sc,
  function ecore_q_send_setup_e1x (line 4014) | static int ecore_q_send_setup_e1x(struct bnx2x_softc *sc, struct ecore_q...
  function ecore_q_send_setup_e2 (line 4042) | static int ecore_q_send_setup_e2(struct bnx2x_softc *sc,
  function ecore_q_send_setup_tx_only (line 4071) | static int ecore_q_send_setup_tx_only(struct bnx2x_softc *sc, struct eco...
  function ecore_q_fill_update_data (line 4119) | static void ecore_q_fill_update_data(struct ecore_queue_sp_obj *obj,
  function ecore_q_send_update (line 4187) | static int ecore_q_send_update(struct bnx2x_softc *sc,
  function ecore_q_send_deactivate (line 4230) | static int ecore_q_send_deactivate(struct bnx2x_softc *sc, struct ecore_...
  function ecore_q_send_activate (line 4250) | static int ecore_q_send_activate(struct bnx2x_softc *sc,
  function ecore_q_send_update_tpa (line 4263) | static int ecore_q_send_update_tpa(__rte_unused struct bnx2x_softc *sc,
  function ecore_q_send_halt (line 4271) | static int ecore_q_send_halt(struct bnx2x_softc *sc,
  function ecore_q_send_cfc_del (line 4286) | static int ecore_q_send_cfc_del(struct bnx2x_softc *sc,
  function ecore_q_send_terminate (line 4302) | static int ecore_q_send_terminate(struct bnx2x_softc *sc, struct ecore_q...
  function ecore_q_send_empty (line 4318) | static int ecore_q_send_empty(struct bnx2x_softc *sc,
  function ecore_queue_send_cmd_cmn (line 4328) | static int ecore_queue_send_cmd_cmn(struct bnx2x_softc *sc, struct ecore...
  function ecore_queue_send_cmd_e1x (line 4358) | static int ecore_queue_send_cmd_e1x(struct bnx2x_softc *sc,
  function ecore_queue_send_cmd_e2 (line 4381) | static int ecore_queue_send_cmd_e2(struct bnx2x_softc *sc,
  function ecore_queue_chk_transition (line 4420) | static int ecore_queue_chk_transition(struct bnx2x_softc *sc __rte_unused,
  function ecore_queue_chk_fwd_transition (line 4601) | static int ecore_queue_chk_fwd_transition(struct bnx2x_softc *sc __rte_u...
  function ecore_init_queue_obj (line 4647) | void ecore_init_queue_obj(struct bnx2x_softc *sc,
  function ecore_func_get_state (line 4683) | enum ecore_func_state ecore_func_get_state(__rte_unused struct bnx2x_sof...
  function ecore_func_wait_comp (line 4698) | static int ecore_func_wait_comp(struct bnx2x_softc *sc,
  function ecore_func_state_change_comp (line 4715) | static int
  function ecore_func_comp_cmd (line 4756) | static int ecore_func_comp_cmd(struct bnx2x_softc *sc,
  function ecore_func_chk_transition (line 4782) | static int ecore_func_chk_transition(struct bnx2x_softc *sc __rte_unused,
  function ecore_func_init_func (line 4879) | static int ecore_func_init_func(struct bnx2x_softc *sc,
  function ecore_func_init_port (line 4896) | static int ecore_func_init_port(struct bnx2x_softc *sc,
  function ecore_func_init_cmn_chip (line 4916) | static int ecore_func_init_cmn_chip(struct bnx2x_softc *sc, const struct...
  function ecore_func_init_cmn (line 4936) | static int ecore_func_init_cmn(struct bnx2x_softc *sc,
  function ecore_func_hw_init (line 4946) | static int ecore_func_hw_init(struct bnx2x_softc *sc,
  function ecore_func_reset_func (line 5015) | static void ecore_func_reset_func(struct bnx2x_softc *sc, const struct e...
  function ecore_func_reset_port (line 5036) | static void ecore_func_reset_port(struct bnx2x_softc *sc, const struct e...
  function ecore_func_reset_cmn (line 5053) | static void ecore_func_reset_cmn(struct bnx2x_softc *sc,
  function ecore_func_hw_reset (line 5060) | static int ecore_func_hw_reset(struct bnx2x_softc *sc,
  function ecore_func_send_start (line 5
Copy disabled (too large) Download .json
Condensed preview — 1234 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (27,440K chars).
[
  {
    "path": ".gitignore",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "GNUmakefile",
    "chars": 1826,
    "preview": "#   BSD LICENSE\n#\n#   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.\n#   All rights reserved.\n#\n#   Redi"
  },
  {
    "path": "LICENSE.GPL",
    "chars": 17987,
    "preview": "\t\t    GNU GENERAL PUBLIC LICENSE\n\t\t       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc."
  },
  {
    "path": "LICENSE.LGPL",
    "chars": 26530,
    "preview": "                  GNU LESSER GENERAL PUBLIC LICENSE\n                       Version 2.1, February 1999\n\n Copyright (C) 19"
  },
  {
    "path": "MAINTAINERS",
    "chars": 12983,
    "preview": "DPDK Maintainers\n================\n\nThe intention of this file is to provide a set of names that we can rely on\nfor helpi"
  },
  {
    "path": "Makefile",
    "chars": 1708,
    "preview": "#   BSD LICENSE\n#\n#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n#   All rights reserved.\n#\n#   Redi"
  },
  {
    "path": "app/Makefile",
    "chars": 2000,
    "preview": "#   BSD LICENSE\n#\n#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n#   All rights reserved.\n#\n#   Redi"
  },
  {
    "path": "app/cmdline_test/Makefile",
    "chars": 1936,
    "preview": "#   BSD LICENSE\n#\n#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n#   All rights reserved.\n#\n#   Redi"
  },
  {
    "path": "app/cmdline_test/cmdline_test.c",
    "chars": 2263,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/cmdline_test/cmdline_test.h",
    "chars": 1792,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/cmdline_test/cmdline_test.py",
    "chars": 3774,
    "preview": "#!/usr/bin/python\n\n#   BSD LICENSE\n#\n#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n#   All rights r"
  },
  {
    "path": "app/cmdline_test/cmdline_test_data.py",
    "chars": 10085,
    "preview": "#!/usr/bin/python\n\n#   BSD LICENSE\n#\n#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n#   All rights r"
  },
  {
    "path": "app/cmdline_test/commands.c",
    "chars": 10834,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/proc_info/Makefile",
    "chars": 1880,
    "preview": "#   BSD LICENSE\n#\n#   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.\n#   All rights reserved.\n#\n#   Redi"
  },
  {
    "path": "app/proc_info/main.c",
    "chars": 9285,
    "preview": "/*\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *\n"
  },
  {
    "path": "app/test/Makefile",
    "chars": 5752,
    "preview": "#   BSD LICENSE\n#\n#   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.\n#   All rights reserved.\n#\n#   Redi"
  },
  {
    "path": "app/test/autotest.py",
    "chars": 2695,
    "preview": "#!/usr/bin/python\n\n#   BSD LICENSE\n#\n#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n#   All rights r"
  },
  {
    "path": "app/test/autotest_data.py",
    "chars": 10398,
    "preview": "#!/usr/bin/python\n\n#   BSD LICENSE\n#\n#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n#   All rights r"
  },
  {
    "path": "app/test/autotest_runner.py",
    "chars": 11694,
    "preview": "#!/usr/bin/python\n\n#   BSD LICENSE\n#\n#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n#   All rights r"
  },
  {
    "path": "app/test/autotest_test_funcs.py",
    "chars": 8218,
    "preview": "#!/usr/bin/python\n\n#   BSD LICENSE\n#\n#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n#   All rights r"
  },
  {
    "path": "app/test/commands.c",
    "chars": 12218,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   Copyright(c) 2014 6WIND"
  },
  {
    "path": "app/test/packet_burst_generator.c",
    "chars": 8615,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/packet_burst_generator.h",
    "chars": 3125,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/process.h",
    "chars": 3453,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test.c",
    "chars": 5385,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test.h",
    "chars": 6755,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_acl.c",
    "chars": 37654,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_acl.h",
    "chars": 18787,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_alarm.c",
    "chars": 8484,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_atomic.c",
    "chars": 11123,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_byteorder.c",
    "chars": 3217,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_cmdline.c",
    "chars": 3292,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_cmdline.h",
    "chars": 2799,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_cmdline_cirbuf.c",
    "chars": 34144,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_cmdline_etheraddr.c",
    "chars": 6609,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_cmdline_ipaddr.c",
    "chars": 19418,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_cmdline_lib.c",
    "chars": 7031,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_cmdline_num.c",
    "chars": 18679,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_cmdline_portlist.c",
    "chars": 6344,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_cmdline_string.c",
    "chars": 12415,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_common.c",
    "chars": 4934,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_cpuflags.c",
    "chars": 4634,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_cycles.c",
    "chars": 3170,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_debug.c",
    "chars": 3819,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_devargs.c",
    "chars": 4731,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright 2014 6WIND S.A.\n *\n *   Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "app/test/test_distributor.c",
    "chars": 16781,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_distributor_perf.c",
    "chars": 7641,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_eal_flags.c",
    "chars": 42183,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   Copyright(c) 2014 6WIND"
  },
  {
    "path": "app/test/test_eal_fs.c",
    "chars": 6571,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_errno.c",
    "chars": 4452,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_func_reentrancy.c",
    "chars": 12934,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_hash.c",
    "chars": 40686,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_hash_functions.c",
    "chars": 8897,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_hash_perf.c",
    "chars": 17600,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_hash_scaling.c",
    "chars": 6371,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2015 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *\n *  "
  },
  {
    "path": "app/test/test_interrupts.c",
    "chars": 14834,
    "preview": "/*-\n *  BSD LICENSE\n *\n *  Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *  All rights reserved.\n *\n *"
  },
  {
    "path": "app/test/test_ivshmem.c",
    "chars": 12769,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_kni.c",
    "chars": 16538,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_kvargs.c",
    "chars": 6829,
    "preview": "/*\n * Copyright 2014 6WIND S.A.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification"
  },
  {
    "path": "app/test/test_link_bonding.c",
    "chars": 173322,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_link_bonding_mode4.c",
    "chars": 40295,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_logs.c",
    "chars": 3297,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_lpm.c",
    "chars": 34746,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_lpm6.c",
    "chars": 50302,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_lpm6_routes.h",
    "chars": 7677610,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_malloc.c",
    "chars": 24320,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_mbuf.c",
    "chars": 26076,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_memcpy.c",
    "chars": 5536,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_memcpy_perf.c",
    "chars": 13185,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_memory.c",
    "chars": 2853,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_mempool.c",
    "chars": 13065,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_mempool_perf.c",
    "chars": 8617,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_memzone.c",
    "chars": 24779,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_meter.c",
    "chars": 13982,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_mp_secondary.c",
    "chars": 7898,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_pci.c",
    "chars": 5716,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   Copyright(c) 2014 6WIND"
  },
  {
    "path": "app/test/test_per_lcore.c",
    "chars": 4400,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_pmd_perf.c",
    "chars": 23371,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_pmd_ring.c",
    "chars": 12237,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_power.c",
    "chars": 3597,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_power_acpi_cpufreq.c",
    "chars": 14177,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_power_kvm_vm.c",
    "chars": 9918,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_prefetch.c",
    "chars": 2198,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_red.c",
    "chars": 51263,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_reorder.c",
    "chars": 10667,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_ring.c",
    "chars": 34628,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_ring_perf.c",
    "chars": 12182,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_rwlock.c",
    "chars": 4347,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_sched.c",
    "chars": 6476,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_spinlock.c",
    "chars": 9849,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_string_fns.c",
    "chars": 5398,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_table.c",
    "chars": 5760,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_table.h",
    "chars": 6301,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_table_acl.c",
    "chars": 15254,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_table_acl.h",
    "chars": 1742,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_table_combined.c",
    "chars": 20537,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_table_combined.h",
    "chars": 2349,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_table_pipeline.c",
    "chars": 15489,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_table_pipeline.h",
    "chars": 1747,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_table_ports.c",
    "chars": 6726,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_table_ports.h",
    "chars": 1900,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_table_tables.c",
    "chars": 21495,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_table_tables.h",
    "chars": 2106,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_tailq.c",
    "chars": 5087,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_thash.c",
    "chars": 6116,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2015 Vladimir Medvedkin <medvedkinv@gmail.com>\n *   All rights reserved.\n *\n *"
  },
  {
    "path": "app/test/test_timer.c",
    "chars": 17815,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_timer_perf.c",
    "chars": 5558,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/test_timer_racecond.c",
    "chars": 5773,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2015 Akamai Technologies.\n *   All rights reserved.\n *\n *   Redistribution and"
  },
  {
    "path": "app/test/test_version.c",
    "chars": 2234,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/virtual_pmd.c",
    "chars": 17490,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test/virtual_pmd.h",
    "chars": 3508,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test-acl/Makefile",
    "chars": 1919,
    "preview": "#   BSD LICENSE\n#\n#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n#   All rights reserved.\n#\n#   Redi"
  },
  {
    "path": "app/test-acl/main.c",
    "chars": 27692,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test-pipeline/Makefile",
    "chars": 2217,
    "preview": "#   BSD LICENSE\n#\n#   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.\n#   All rights reserved.\n#\n#   Redi"
  },
  {
    "path": "app/test-pipeline/config.c",
    "chars": 6215,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test-pipeline/init.c",
    "chars": 6673,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test-pipeline/main.c",
    "chars": 4655,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test-pipeline/main.h",
    "chars": 4078,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test-pipeline/pipeline_acl.c",
    "chars": 8363,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test-pipeline/pipeline_hash.c",
    "chars": 13297,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test-pipeline/pipeline_lpm.c",
    "chars": 5793,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test-pipeline/pipeline_lpm_ipv6.c",
    "chars": 6025,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test-pipeline/pipeline_stub.c",
    "chars": 5078,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test-pipeline/runtime.c",
    "chars": 4704,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test-pmd/Makefile",
    "chars": 2434,
    "preview": "#   BSD LICENSE\n#\n#   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.\n#   All rights reserved.\n#\n#   Redi"
  },
  {
    "path": "app/test-pmd/cmdline.c",
    "chars": 287386,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.\n *   Copyright(c) 2014 6WIND"
  },
  {
    "path": "app/test-pmd/config.c",
    "chars": 63106,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test-pmd/csumonly.c",
    "chars": 22003,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   Copyright 2014 6WIND S."
  },
  {
    "path": "app/test-pmd/flowgen.c",
    "chars": 7358,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2013 Tilera Corporation. All rights reserved.\n *   All rights reserved.\n "
  },
  {
    "path": "app/test-pmd/icmpecho.c",
    "chars": 16254,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2013 6WIND\n *   All rights reserved.\n *\n *   Redistribution and use in source "
  },
  {
    "path": "app/test-pmd/ieee1588fwd.c",
    "chars": 7589,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test-pmd/iofwd.c",
    "chars": 3930,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test-pmd/macfwd-retry.c",
    "chars": 4924,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test-pmd/macfwd.c",
    "chars": 4684,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test-pmd/macswap.c",
    "chars": 4710,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2014 Tilera Corporation. All rights reserved.\n *\n *   Redistribution and use i"
  },
  {
    "path": "app/test-pmd/mempool_anon.c",
    "chars": 5689,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test-pmd/mempool_osdep.h",
    "chars": 2208,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test-pmd/parameters.c",
    "chars": 30117,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test-pmd/rxonly.c",
    "chars": 11632,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test-pmd/testpmd.c",
    "chars": 54322,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test-pmd/testpmd.h",
    "chars": 21763,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "app/test-pmd/txonly.c",
    "chars": 9297,
    "preview": "/*-\n *   BSD LICENSE\n *\n *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n *   All rights reserved.\n *"
  },
  {
    "path": "config/common_bsdapp",
    "chars": 9983,
    "preview": "#   BSD LICENSE\n#\n#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n#   All rights reserved.\n#\n#   Redi"
  },
  {
    "path": "config/common_linuxapp",
    "chars": 10765,
    "preview": "#   BSD LICENSE\n#\n#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n#   All rights reserved.\n#\n#   Redi"
  },
  {
    "path": "config/defconfig_i686-native-linuxapp-gcc",
    "chars": 1957,
    "preview": "#   BSD LICENSE\n#\n#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n#   All rights reserved.\n#\n#   Redi"
  },
  {
    "path": "config/defconfig_i686-native-linuxapp-icc",
    "chars": 1957,
    "preview": "#   BSD LICENSE\n#\n#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n#   All rights reserved.\n#\n#   Redi"
  },
  {
    "path": "config/defconfig_ppc_64-power8-linuxapp-gcc",
    "chars": 2428,
    "preview": "#   BSD LICENSE\n#\n#   Copyright (C) IBM Corporation 2014.\n#\n#   Redistribution and use in source and binary forms, with "
  },
  {
    "path": "config/defconfig_tile-tilegx-linuxapp-gcc",
    "chars": 2631,
    "preview": "#   BSD LICENSE\n#\n#   Copyright (C) EZchip Semiconductor 2015.\n#\n#   Redistribution and use in source and binary forms, "
  },
  {
    "path": "config/defconfig_x86_64-ivshmem-linuxapp-gcc",
    "chars": 2028,
    "preview": "#   BSD LICENSE\n#\n#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n#   All rights reserved.\n#\n#   Redi"
  },
  {
    "path": "config/defconfig_x86_64-ivshmem-linuxapp-icc",
    "chars": 2029,
    "preview": "#   BSD LICENSE\n#\n#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n#   All rights reserved.\n#\n#   Redi"
  },
  {
    "path": "config/defconfig_x86_64-native-bsdapp-clang",
    "chars": 1822,
    "preview": "#   BSD LICENSE\n#\n#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n#   All rights reserved.\n#\n#   Redi"
  },
  {
    "path": "config/defconfig_x86_64-native-bsdapp-gcc",
    "chars": 1818,
    "preview": "#   BSD LICENSE\n#\n#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n#   All rights reserved.\n#\n#   Redi"
  },
  {
    "path": "config/defconfig_x86_64-native-linuxapp-clang",
    "chars": 1845,
    "preview": "#   BSD LICENSE\n#\n#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n#   All rights reserved.\n#\n#   Redi"
  },
  {
    "path": "config/defconfig_x86_64-native-linuxapp-gcc",
    "chars": 1841,
    "preview": "#   BSD LICENSE\n#\n#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n#   All rights reserved.\n#\n#   Redi"
  },
  {
    "path": "config/defconfig_x86_64-native-linuxapp-icc",
    "chars": 1841,
    "preview": "#   BSD LICENSE\n#\n#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n#   All rights reserved.\n#\n#   Redi"
  },
  {
    "path": "config/defconfig_x86_x32-native-linuxapp-gcc",
    "chars": 1884,
    "preview": "#   BSD LICENSE\n#\n#   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n#   All rights reserved.\n#\n#   Redi"
  },
  {
    "path": "doc/api/doxy-api-index.md",
    "chars": 5636,
    "preview": "API {#index}\n===\n\n<!--\n  BSD LICENSE\n\n  Copyright 2013 6WIND S.A.\n\n  Redistribution and use in source and binary forms, "
  },
  {
    "path": "doc/api/doxy-api.conf",
    "chars": 3638,
    "preview": "# BSD LICENSE\n#\n# Copyright 2013 6WIND S.A.\n#\n# Redistribution and use in source and binary forms, with or without\n# mod"
  },
  {
    "path": "doc/api/doxy-html-custom.sh",
    "chars": 1652,
    "preview": "#! /bin/sh -e\n\n# BSD LICENSE\n#\n# Copyright 2013 6WIND S.A.\n#\n# Redistribution and use in source and binary forms, with o"
  },
  {
    "path": "doc/build-sdk-quick.txt",
    "chars": 1072,
    "preview": "Basic build\n\tmake config T=x86_64-native-linuxapp-gcc && make\nBuild commands\n\tconfig           get configuration from ta"
  },
  {
    "path": "doc/guides/conf.py",
    "chars": 5958,
    "preview": "#   BSD LICENSE\n#   Copyright(c) 2010-2015 Intel Corporation. All rights reserved.\n#   All rights reserved.\n#\n#   Redist"
  },
  {
    "path": "doc/guides/contributing/coding_style.rst",
    "chars": 24571,
    "preview": ".. _coding_style:\n\nDPDK Coding Style\n=================\n\nDescription\n-----------\n\nThis document specifies the preferred s"
  },
  {
    "path": "doc/guides/contributing/design.rst",
    "chars": 7524,
    "preview": "Design\n======\n\nEnvironment or Architecture-specific Sources\n--------------------------------------------\n\nIn DPDK and DP"
  },
  {
    "path": "doc/guides/contributing/documentation.rst",
    "chars": 24678,
    "preview": ".. doc_guidelines:\n\nDPDK Documentation Guidelines\n=============================\n\nThis document outlines the guidelines f"
  },
  {
    "path": "doc/guides/contributing/index.rst",
    "chars": 158,
    "preview": "Contributor's Guidelines\n========================\n\n.. toctree::\n    :maxdepth: 2\n    :numbered:\n\n    coding_style\n    de"
  },
  {
    "path": "doc/guides/contributing/versioning.rst",
    "chars": 17637,
    "preview": "Managing ABI updates\n====================\n\nDescription\n-----------\n\nThis document details some methods for handling ABI "
  },
  {
    "path": "doc/guides/faq/faq.rst",
    "chars": 14915,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/faq/index.rst",
    "chars": 1795,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/freebsd_gsg/build_dpdk.rst",
    "chars": 13665,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/freebsd_gsg/build_sample_apps.rst",
    "chars": 7802,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/freebsd_gsg/index.rst",
    "chars": 1847,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/freebsd_gsg/install_from_ports.rst",
    "chars": 6477,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/freebsd_gsg/intro.rst",
    "chars": 4097,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/index.rst",
    "chars": 1905,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/linux_gsg/build_dpdk.rst",
    "chars": 11899,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/linux_gsg/build_sample_apps.rst",
    "chars": 11342,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/linux_gsg/enable_func.rst",
    "chars": 10795,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/linux_gsg/index.rst",
    "chars": 1859,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/linux_gsg/intro.rst",
    "chars": 3503,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/linux_gsg/quick_start.rst",
    "chars": 11502,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/linux_gsg/sys_reqs.rst",
    "chars": 12566,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/nics/cxgbe.rst",
    "chars": 15181,
    "preview": "..  BSD LICENSE\n    Copyright 2015 Chelsio Communications.\n    All rights reserved.\n\n    Redistribution and use in sourc"
  },
  {
    "path": "doc/guides/nics/e1000em.rst",
    "chars": 6639,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/nics/index.rst",
    "chars": 2414,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/nics/intel_vf.rst",
    "chars": 26401,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/nics/ixgbe.rst",
    "chars": 6040,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/nics/mlx4.rst",
    "chars": 13520,
    "preview": "..  BSD LICENSE\n    Copyright 2012-2015 6WIND S.A.\n\n    Redistribution and use in source and binary forms, with or witho"
  },
  {
    "path": "doc/guides/nics/pcap_ring.rst",
    "chars": 11305,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/nics/virtio.rst",
    "chars": 9183,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2015 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/nics/vmxnet3.rst",
    "chars": 8690,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/prog_guide/build_app.rst",
    "chars": 4612,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/prog_guide/dev_kit_build_system.rst",
    "chars": 17413,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/prog_guide/dev_kit_root_make_help.rst",
    "chars": 7312,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/prog_guide/env_abstraction_layer.rst",
    "chars": 28406,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/prog_guide/ext_app_lib_make_help.rst",
    "chars": 4048,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/prog_guide/extend_intel_dpdk.rst",
    "chars": 4477,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/prog_guide/glossary.rst",
    "chars": 5692,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/prog_guide/hash_lib.rst",
    "chars": 14699,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2015 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/prog_guide/index.rst",
    "chars": 6825,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  },
  {
    "path": "doc/guides/prog_guide/intro.rst",
    "chars": 4012,
    "preview": "..  BSD LICENSE\n    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.\n    All rights reserved.\n\n    Redistr"
  }
]

// ... and 1034 more files (download for full content)

About this extraction

This page contains the full source code of the scylladb/dpdk GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1234 files (45.3 MB), approximately 6.5M tokens, and a symbol index with 19458 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!