test suite reviews and discussions
 help / color / mirror / Atom feed
* [dts] [PATCH 0/4] compile dpdk different config with different test suite by dts framework befor run test suite
@ 2017-04-01  7:42 xu,huilong
  2017-04-01  7:42 ` [dts] [PATCH 1/4] add dpdk all compile switch xu,huilong
                   ` (4 more replies)
  0 siblings, 5 replies; 9+ messages in thread
From: xu,huilong @ 2017-04-01  7:42 UTC (permalink / raw)
  To: dts; +Cc: xu,huilong

we should compile dpdk many times for different test suite.
if we exec a test suite must update dpdk compile suite or change dpdk code, we must cpmpile dpdk two times at least.
So this change for read exec test_suite list and compile dpdk befor run test suite.

update list:
 1. conf/common_base
    this is dpdk all compile switch from dpdk source code. it for check compile.cfg switch vaild.
 2. conf/compile.cfg
    compile config template, detaile config please see comments in file
 3. framework/config.py
    parse compile.cfg, detaile info please see comments in commit
 4. framework/project_dpdk.py
    a)define interface for test suit:
      reset_compile_target()
    b) read compile conf and get test suite list, then update compile switch and compile dpdk
 5. framework/dts.py
    set test suite list
 6. tests/TestSuite_coremask.py and tests/TestSuite_queue_start_stop.py
    example for use compile config.
Now old interface for compile dpdk is vaild, so other case will also run pass.

xu,huilong (4):
  add dpdk all compile switch
  add compile config file template and parse compile config class
  read compile switch config and compile dpdk before test
  add example for test suite

 conf/common_base                    | 632 ++++++++++++++++++++++++++++++++++++
 conf/compile.cfg                    |  30 ++
 framework/config.py                 |  21 +-
 framework/dts.py                    |   2 +-
 framework/project_dpdk.py           | 103 +++++-
 tests/TestSuite_coremask.py         |  12 +-
 tests/TestSuite_queue_start_stop.py |  28 +-
 7 files changed, 789 insertions(+), 39 deletions(-)
 create mode 100644 conf/common_base
 create mode 100644 conf/compile.cfg

-- 
1.9.3

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [dts] [PATCH 1/4] add dpdk all compile switch
  2017-04-01  7:42 [dts] [PATCH 0/4] compile dpdk different config with different test suite by dts framework befor run test suite xu,huilong
@ 2017-04-01  7:42 ` xu,huilong
  2017-04-01  8:02   ` Liu, Yong
  2017-04-01  7:42 ` [dts] [PATCH 2/4] add compile config file template and parse compile config class xu,huilong
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 9+ messages in thread
From: xu,huilong @ 2017-04-01  7:42 UTC (permalink / raw)
  To: dts; +Cc: xu,huilong

when dts framework read compile config file and compile dpdk, should check compile switch valid

Signed-off-by: xu,huilong <huilongx.xu@intel.com>
---
 conf/common_base | 632 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 632 insertions(+)
 create mode 100644 conf/common_base

diff --git a/conf/common_base b/conf/common_base
new file mode 100644
index 0000000..37aa1e1
--- /dev/null
+++ b/conf/common_base
@@ -0,0 +1,632 @@
+#   BSD LICENSE
+#
+#   Copyright(c) 2010-2017 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.
+#
+
+#
+# define executive environment
+# RTE_EXEC_ENV values are the directories in mk/exec-env/
+#
+CONFIG_RTE_EXEC_ENV=
+
+#
+# define the architecture we compile for.
+# RTE_ARCH values are the directories in mk/arch/
+#
+CONFIG_RTE_ARCH=
+
+#
+# machine can define specific variables or action for a specific board
+# RTE_MACHINE values are the directories in mk/machine/
+#
+CONFIG_RTE_MACHINE=
+
+#
+# The compiler we use.
+# RTE_TOOLCHAIN values are the directories in mk/toolchain/
+#
+CONFIG_RTE_TOOLCHAIN=
+
+#
+# Use intrinsics or assembly code for key routines
+#
+CONFIG_RTE_FORCE_INTRINSICS=n
+
+#
+# Machine forces strict alignment constraints.
+#
+CONFIG_RTE_ARCH_STRICT_ALIGN=n
+
+#
+# Compile to share library
+#
+CONFIG_RTE_BUILD_SHARED_LIB=n
+
+#
+# Use newest code breaking previous ABI
+#
+CONFIG_RTE_NEXT_ABI=y
+
+#
+# Major ABI to overwrite library specific LIBABIVER
+#
+CONFIG_RTE_MAJOR_ABI=
+
+#
+# Machine's cache line size
+#
+CONFIG_RTE_CACHE_LINE_SIZE=64
+
+#
+# Compile Environment Abstraction Layer
+#
+CONFIG_RTE_LIBRTE_EAL=y
+CONFIG_RTE_MAX_LCORE=128
+CONFIG_RTE_MAX_NUMA_NODES=8
+CONFIG_RTE_MAX_MEMSEG=256
+CONFIG_RTE_MAX_MEMZONE=2560
+CONFIG_RTE_MAX_TAILQ=32
+CONFIG_RTE_LOG_LEVEL=RTE_LOG_INFO
+CONFIG_RTE_LOG_DP_LEVEL=RTE_LOG_INFO
+CONFIG_RTE_LOG_HISTORY=256
+CONFIG_RTE_LIBEAL_USE_HPET=n
+CONFIG_RTE_EAL_ALLOW_INV_SOCKET_ID=n
+CONFIG_RTE_EAL_ALWAYS_PANIC_ON_ERROR=n
+CONFIG_RTE_EAL_IGB_UIO=n
+CONFIG_RTE_EAL_VFIO=n
+CONFIG_RTE_MALLOC_DEBUG=n
+
+# Default driver path (or "" to disable)
+CONFIG_RTE_EAL_PMD_PATH=""
+
+#
+# Compile Environment Abstraction Layer to support Vmware TSC map
+#
+CONFIG_RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT=y
+
+#
+# Compile the argument parser library
+#
+CONFIG_RTE_LIBRTE_KVARGS=y
+
+#
+# Compile generic ethernet library
+#
+CONFIG_RTE_LIBRTE_ETHER=y
+CONFIG_RTE_LIBRTE_ETHDEV_DEBUG=n
+CONFIG_RTE_MAX_ETHPORTS=32
+CONFIG_RTE_MAX_QUEUES_PER_PORT=1024
+CONFIG_RTE_LIBRTE_IEEE1588=n
+CONFIG_RTE_ETHDEV_QUEUE_STAT_CNTRS=16
+CONFIG_RTE_ETHDEV_RXTX_CALLBACKS=y
+
+#
+# Turn off Tx preparation stage
+#
+# Warning: rte_ethdev_tx_prepare() can be safely disabled only if using a
+# driver which do not implement any Tx preparation.
+#
+CONFIG_RTE_ETHDEV_TX_PREPARE_NOOP=n
+
+#
+# Support NIC bypass logic
+#
+CONFIG_RTE_NIC_BYPASS=n
+
+#
+# Compile burst-oriented Amazon ENA PMD driver
+#
+CONFIG_RTE_LIBRTE_ENA_PMD=y
+CONFIG_RTE_LIBRTE_ENA_DEBUG_RX=n
+CONFIG_RTE_LIBRTE_ENA_DEBUG_TX=n
+CONFIG_RTE_LIBRTE_ENA_DEBUG_TX_FREE=n
+CONFIG_RTE_LIBRTE_ENA_DEBUG_DRIVER=n
+CONFIG_RTE_LIBRTE_ENA_COM_DEBUG=n
+
+#
+# Compile burst-oriented IGB & EM PMD drivers
+#
+CONFIG_RTE_LIBRTE_EM_PMD=y
+CONFIG_RTE_LIBRTE_IGB_PMD=y
+CONFIG_RTE_LIBRTE_E1000_DEBUG_INIT=n
+CONFIG_RTE_LIBRTE_E1000_DEBUG_RX=n
+CONFIG_RTE_LIBRTE_E1000_DEBUG_TX=n
+CONFIG_RTE_LIBRTE_E1000_DEBUG_TX_FREE=n
+CONFIG_RTE_LIBRTE_E1000_DEBUG_DRIVER=n
+CONFIG_RTE_LIBRTE_E1000_PF_DISABLE_STRIP_CRC=n
+
+#
+# Compile burst-oriented IXGBE PMD driver
+#
+CONFIG_RTE_LIBRTE_IXGBE_PMD=y
+CONFIG_RTE_LIBRTE_IXGBE_DEBUG_INIT=n
+CONFIG_RTE_LIBRTE_IXGBE_DEBUG_RX=n
+CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX=n
+CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX_FREE=n
+CONFIG_RTE_LIBRTE_IXGBE_DEBUG_DRIVER=n
+CONFIG_RTE_LIBRTE_IXGBE_PF_DISABLE_STRIP_CRC=n
+CONFIG_RTE_IXGBE_INC_VECTOR=y
+CONFIG_RTE_IXGBE_RX_OLFLAGS_ENABLE=y
+
+#
+# Compile burst-oriented I40E PMD driver
+#
+CONFIG_RTE_LIBRTE_I40E_PMD=y
+CONFIG_RTE_LIBRTE_I40E_DEBUG_INIT=n
+CONFIG_RTE_LIBRTE_I40E_DEBUG_RX=n
+CONFIG_RTE_LIBRTE_I40E_DEBUG_TX=n
+CONFIG_RTE_LIBRTE_I40E_DEBUG_TX_FREE=n
+CONFIG_RTE_LIBRTE_I40E_DEBUG_DRIVER=n
+CONFIG_RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC=y
+CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=y
+CONFIG_RTE_LIBRTE_I40E_RX_OLFLAGS_ENABLE=y
+CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n
+CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_PF=64
+CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VF=4
+CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM=4
+# interval up to 8160 us, aligned to 2 (or default value)
+CONFIG_RTE_LIBRTE_I40E_ITR_INTERVAL=-1
+
+#
+# Compile burst-oriented FM10K PMD
+#
+CONFIG_RTE_LIBRTE_FM10K_PMD=y
+CONFIG_RTE_LIBRTE_FM10K_DEBUG_INIT=n
+CONFIG_RTE_LIBRTE_FM10K_DEBUG_RX=n
+CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX=n
+CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX_FREE=n
+CONFIG_RTE_LIBRTE_FM10K_DEBUG_DRIVER=n
+CONFIG_RTE_LIBRTE_FM10K_RX_OLFLAGS_ENABLE=y
+CONFIG_RTE_LIBRTE_FM10K_INC_VECTOR=y
+
+#
+# Compile burst-oriented Mellanox ConnectX-3 (MLX4) PMD
+#
+CONFIG_RTE_LIBRTE_MLX4_PMD=n
+CONFIG_RTE_LIBRTE_MLX4_DEBUG=n
+CONFIG_RTE_LIBRTE_MLX4_SGE_WR_N=4
+CONFIG_RTE_LIBRTE_MLX4_MAX_INLINE=0
+CONFIG_RTE_LIBRTE_MLX4_TX_MP_CACHE=8
+CONFIG_RTE_LIBRTE_MLX4_SOFT_COUNTERS=1
+
+#
+# Compile burst-oriented Mellanox ConnectX-4 & ConnectX-5 (MLX5) PMD
+#
+CONFIG_RTE_LIBRTE_MLX5_PMD=n
+CONFIG_RTE_LIBRTE_MLX5_DEBUG=n
+CONFIG_RTE_LIBRTE_MLX5_TX_MP_CACHE=8
+
+#
+# Compile burst-oriented Broadcom PMD driver
+#
+CONFIG_RTE_LIBRTE_BNX2X_PMD=n
+CONFIG_RTE_LIBRTE_BNX2X_DEBUG=n
+CONFIG_RTE_LIBRTE_BNX2X_DEBUG_INIT=n
+CONFIG_RTE_LIBRTE_BNX2X_DEBUG_RX=n
+CONFIG_RTE_LIBRTE_BNX2X_DEBUG_TX=n
+CONFIG_RTE_LIBRTE_BNX2X_MF_SUPPORT=n
+CONFIG_RTE_LIBRTE_BNX2X_DEBUG_PERIODIC=n
+
+#
+# Compile burst-oriented Chelsio Terminator 10GbE/40GbE (CXGBE) PMD
+#
+CONFIG_RTE_LIBRTE_CXGBE_PMD=y
+CONFIG_RTE_LIBRTE_CXGBE_DEBUG=n
+CONFIG_RTE_LIBRTE_CXGBE_DEBUG_REG=n
+CONFIG_RTE_LIBRTE_CXGBE_DEBUG_MBOX=n
+CONFIG_RTE_LIBRTE_CXGBE_DEBUG_TX=n
+CONFIG_RTE_LIBRTE_CXGBE_DEBUG_RX=n
+
+#
+# Compile burst-oriented Cisco ENIC PMD driver
+#
+CONFIG_RTE_LIBRTE_ENIC_PMD=y
+CONFIG_RTE_LIBRTE_ENIC_DEBUG=n
+
+#
+# Compile burst-oriented Netronome NFP PMD driver
+#
+CONFIG_RTE_LIBRTE_NFP_PMD=n
+CONFIG_RTE_LIBRTE_NFP_DEBUG=n
+
+#
+# Compile burst-oriented Broadcom BNXT PMD driver
+#
+CONFIG_RTE_LIBRTE_BNXT_PMD=y
+
+#
+# Compile burst-oriented Solarflare libefx-based PMD
+#
+CONFIG_RTE_LIBRTE_SFC_EFX_PMD=y
+CONFIG_RTE_LIBRTE_SFC_EFX_DEBUG=n
+
+#
+# Compile software PMD backed by SZEDATA2 device
+#
+CONFIG_RTE_LIBRTE_PMD_SZEDATA2=n
+#
+# Defines firmware type address space.
+# RTE_LIBRTE_PMD_SZEDATA2_AS can be:
+# 0 - for firmwares:
+#         NIC_100G1_LR4
+#         HANIC_100G1_LR4
+#         HANIC_100G1_SR10
+# Other values raise compile time error
+CONFIG_RTE_LIBRTE_PMD_SZEDATA2_AS=0
+
+#
+# Compile burst-oriented Cavium Thunderx NICVF PMD driver
+#
+CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD=n
+CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_INIT=n
+CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_RX=n
+CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_TX=n
+CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_DRIVER=n
+CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_MBOX=n
+
+#
+# Compile burst-oriented VIRTIO PMD driver
+#
+CONFIG_RTE_LIBRTE_VIRTIO_PMD=y
+CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_INIT=n
+CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_RX=n
+CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_TX=n
+CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DRIVER=n
+CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DUMP=n
+
+#
+# Compile virtio device emulation inside virtio PMD driver
+#
+CONFIG_RTE_VIRTIO_USER=n
+
+#
+# Compile burst-oriented VMXNET3 PMD driver
+#
+CONFIG_RTE_LIBRTE_VMXNET3_PMD=y
+CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_INIT=n
+CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_RX=n
+CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX=n
+CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX_FREE=n
+CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_DRIVER=n
+
+#
+# Compile example software rings based PMD
+#
+CONFIG_RTE_LIBRTE_PMD_RING=y
+CONFIG_RTE_PMD_RING_MAX_RX_RINGS=16
+CONFIG_RTE_PMD_RING_MAX_TX_RINGS=16
+
+#
+# Compile software PMD backed by PCAP files
+#
+CONFIG_RTE_LIBRTE_PMD_PCAP=n
+
+#
+# Compile link bonding PMD library
+#
+CONFIG_RTE_LIBRTE_PMD_BOND=y
+CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB=n
+CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB_L1=n
+
+# QLogic 10G/25G/40G/50G/100G PMD
+#
+CONFIG_RTE_LIBRTE_QEDE_PMD=y
+CONFIG_RTE_LIBRTE_QEDE_DEBUG_INIT=n
+CONFIG_RTE_LIBRTE_QEDE_DEBUG_INFO=n
+CONFIG_RTE_LIBRTE_QEDE_DEBUG_DRIVER=n
+CONFIG_RTE_LIBRTE_QEDE_DEBUG_TX=n
+CONFIG_RTE_LIBRTE_QEDE_DEBUG_RX=n
+#Provides abs path/name of the firmware file.
+#Empty string denotes driver will use default firmware
+CONFIG_RTE_LIBRTE_QEDE_FW=""
+
+#
+# Compile software PMD backed by AF_PACKET sockets (Linux only)
+#
+CONFIG_RTE_LIBRTE_PMD_AF_PACKET=n
+
+#
+# Compile the TAP PMD
+# It is enabled by default for Linux only.
+#
+CONFIG_RTE_LIBRTE_PMD_TAP=n
+
+#
+# Compile Xen PMD
+#
+CONFIG_RTE_LIBRTE_PMD_XENVIRT=n
+
+#
+# Compile null PMD
+#
+CONFIG_RTE_LIBRTE_PMD_NULL=y
+
+#
+# Do prefetch of packet data within PMD driver receive function
+#
+CONFIG_RTE_PMD_PACKET_PREFETCH=y
+
+#
+# Compile generic crypto device library
+#
+CONFIG_RTE_LIBRTE_CRYPTODEV=y
+CONFIG_RTE_LIBRTE_CRYPTODEV_DEBUG=n
+CONFIG_RTE_CRYPTO_MAX_DEVS=64
+CONFIG_RTE_CRYPTODEV_NAME_LEN=64
+
+#
+# Compile PMD for ARMv8 Crypto device
+#
+CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO=n
+CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO_DEBUG=n
+
+#
+# Compile PMD for QuickAssist based devices
+#
+CONFIG_RTE_LIBRTE_PMD_QAT=n
+CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_INIT=n
+CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_TX=n
+CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_RX=n
+CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_DRIVER=n
+#
+# Number of sessions to create in the session memory pool
+# on a single QuickAssist device.
+#
+CONFIG_RTE_QAT_PMD_MAX_NB_SESSIONS=2048
+
+#
+# Compile PMD for AESNI backed device
+#
+CONFIG_RTE_LIBRTE_PMD_AESNI_MB=n
+CONFIG_RTE_LIBRTE_PMD_AESNI_MB_DEBUG=n
+
+#
+# Compile PMD for Software backed device
+#
+CONFIG_RTE_LIBRTE_PMD_OPENSSL=n
+CONFIG_RTE_LIBRTE_PMD_OPENSSL_DEBUG=n
+
+#
+# Compile PMD for AESNI GCM device
+#
+CONFIG_RTE_LIBRTE_PMD_AESNI_GCM=n
+CONFIG_RTE_LIBRTE_PMD_AESNI_GCM_DEBUG=n
+
+#
+# Compile PMD for SNOW 3G device
+#
+CONFIG_RTE_LIBRTE_PMD_SNOW3G=n
+CONFIG_RTE_LIBRTE_PMD_SNOW3G_DEBUG=n
+
+#
+# Compile PMD for KASUMI device
+#
+CONFIG_RTE_LIBRTE_PMD_KASUMI=n
+CONFIG_RTE_LIBRTE_PMD_KASUMI_DEBUG=n
+
+#
+# Compile PMD for ZUC device
+#
+CONFIG_RTE_LIBRTE_PMD_ZUC=n
+CONFIG_RTE_LIBRTE_PMD_ZUC_DEBUG=n
+
+#
+# Compile PMD for Crypto Scheduler device
+#
+CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER=n
+CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER_DEBUG=n
+
+#
+# Compile PMD for NULL Crypto device
+#
+CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO=y
+
+#
+# Compile librte_ring
+#
+CONFIG_RTE_LIBRTE_RING=y
+CONFIG_RTE_LIBRTE_RING_DEBUG=n
+CONFIG_RTE_RING_SPLIT_PROD_CONS=n
+CONFIG_RTE_RING_PAUSE_REP_COUNT=0
+
+#
+# Compile librte_mempool
+#
+CONFIG_RTE_LIBRTE_MEMPOOL=y
+CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=512
+CONFIG_RTE_LIBRTE_MEMPOOL_DEBUG=n
+
+#
+# Compile librte_mbuf
+#
+CONFIG_RTE_LIBRTE_MBUF=y
+CONFIG_RTE_LIBRTE_MBUF_DEBUG=n
+CONFIG_RTE_MBUF_DEFAULT_MEMPOOL_OPS="ring_mp_mc"
+CONFIG_RTE_MBUF_REFCNT_ATOMIC=y
+CONFIG_RTE_PKTMBUF_HEADROOM=128
+
+#
+# Compile librte_timer
+#
+CONFIG_RTE_LIBRTE_TIMER=y
+CONFIG_RTE_LIBRTE_TIMER_DEBUG=n
+
+#
+# Compile librte_cfgfile
+#
+CONFIG_RTE_LIBRTE_CFGFILE=y
+
+#
+# Compile librte_cmdline
+#
+CONFIG_RTE_LIBRTE_CMDLINE=y
+CONFIG_RTE_LIBRTE_CMDLINE_DEBUG=n
+
+#
+# Compile librte_hash
+#
+CONFIG_RTE_LIBRTE_HASH=y
+CONFIG_RTE_LIBRTE_HASH_DEBUG=n
+
+#
+# Compile librte_efd
+#
+CONFIG_RTE_LIBRTE_EFD=y
+
+#
+# Compile librte_jobstats
+#
+CONFIG_RTE_LIBRTE_JOBSTATS=y
+
+#
+# Compile librte_lpm
+#
+CONFIG_RTE_LIBRTE_LPM=y
+CONFIG_RTE_LIBRTE_LPM_DEBUG=n
+
+#
+# Compile librte_acl
+#
+CONFIG_RTE_LIBRTE_ACL=y
+CONFIG_RTE_LIBRTE_ACL_DEBUG=n
+
+#
+# Compile librte_power
+#
+CONFIG_RTE_LIBRTE_POWER=n
+CONFIG_RTE_LIBRTE_POWER_DEBUG=n
+CONFIG_RTE_MAX_LCORE_FREQS=64
+
+#
+# Compile librte_net
+#
+CONFIG_RTE_LIBRTE_NET=y
+
+#
+# Compile librte_ip_frag
+#
+CONFIG_RTE_LIBRTE_IP_FRAG=y
+CONFIG_RTE_LIBRTE_IP_FRAG_DEBUG=n
+CONFIG_RTE_LIBRTE_IP_FRAG_MAX_FRAG=4
+CONFIG_RTE_LIBRTE_IP_FRAG_TBL_STAT=n
+
+#
+# Compile librte_meter
+#
+CONFIG_RTE_LIBRTE_METER=y
+
+#
+# Compile librte_sched
+#
+CONFIG_RTE_LIBRTE_SCHED=y
+CONFIG_RTE_SCHED_DEBUG=n
+CONFIG_RTE_SCHED_RED=n
+CONFIG_RTE_SCHED_COLLECT_STATS=n
+CONFIG_RTE_SCHED_SUBPORT_TC_OV=n
+CONFIG_RTE_SCHED_PORT_N_GRINDERS=8
+CONFIG_RTE_SCHED_VECTOR=n
+
+#
+# Compile the distributor library
+#
+CONFIG_RTE_LIBRTE_DISTRIBUTOR=y
+
+#
+# Compile the reorder library
+#
+CONFIG_RTE_LIBRTE_REORDER=y
+
+#
+# Compile librte_port
+#
+CONFIG_RTE_LIBRTE_PORT=y
+CONFIG_RTE_PORT_STATS_COLLECT=n
+CONFIG_RTE_PORT_PCAP=n
+
+#
+# Compile librte_table
+#
+CONFIG_RTE_LIBRTE_TABLE=y
+CONFIG_RTE_TABLE_STATS_COLLECT=n
+
+#
+# Compile librte_pipeline
+#
+CONFIG_RTE_LIBRTE_PIPELINE=y
+CONFIG_RTE_PIPELINE_STATS_COLLECT=n
+
+#
+# Compile librte_kni
+#
+CONFIG_RTE_LIBRTE_KNI=n
+CONFIG_RTE_KNI_KMOD=n
+CONFIG_RTE_KNI_KMOD_ETHTOOL=n
+CONFIG_RTE_KNI_PREEMPT_DEFAULT=y
+
+#
+# Compile the pdump library
+#
+CONFIG_RTE_LIBRTE_PDUMP=y
+
+#
+# Compile vhost user library
+#
+CONFIG_RTE_LIBRTE_VHOST=n
+CONFIG_RTE_LIBRTE_VHOST_NUMA=n
+CONFIG_RTE_LIBRTE_VHOST_DEBUG=n
+
+#
+# Compile vhost PMD
+# To compile, CONFIG_RTE_LIBRTE_VHOST should be enabled.
+#
+CONFIG_RTE_LIBRTE_PMD_VHOST=n
+
+#
+#Compile Xen domain0 support
+#
+CONFIG_RTE_LIBRTE_XEN_DOM0=n
+
+#
+# Compile the test application
+#
+CONFIG_RTE_APP_TEST=y
+CONFIG_RTE_APP_TEST_RESOURCE_TAR=n
+
+#
+# Compile the PMD test application
+#
+CONFIG_RTE_TEST_PMD=y
+CONFIG_RTE_TEST_PMD_RECORD_CORE_CYCLES=n
+CONFIG_RTE_TEST_PMD_RECORD_BURST_STATS=n
+
+#
+# Compile the crypto performance application
+#
+CONFIG_RTE_APP_CRYPTO_PERF=y
-- 
1.9.3

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [dts] [PATCH 2/4] add compile config file template and parse compile config class
  2017-04-01  7:42 [dts] [PATCH 0/4] compile dpdk different config with different test suite by dts framework befor run test suite xu,huilong
  2017-04-01  7:42 ` [dts] [PATCH 1/4] add dpdk all compile switch xu,huilong
@ 2017-04-01  7:42 ` xu,huilong
  2017-04-01  7:42 ` [dts] [PATCH 3/4] read compile switch config and compile dpdk before test xu,huilong
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: xu,huilong @ 2017-04-01  7:42 UTC (permalink / raw)
  To: dts; +Cc: xu,huilong

please see commens in compile.cfg for how to config compile switch.

parse result:
{'seesion_name1': {'COMPILE_SWITCH1': 'n',
                   'COMPILE_SWITCH1': 'n',
                   'compile_app': ['app1:app1_path', 'app2'],
                   'suite_list': ['testsuite1', 'test_suite2']},
 'session_name2': {'COMPILE_SWITCH1': 'RTE_LOG_DEBUG',
                   'compile_app': ['app1:app1_path'],
                   'suite_list': ['testsuite1']
                   'patch_list': ['patch_file1', 'patch_file2']}
}

Signed-off-by: xu,huilong <huilongx.xu@intel.com>
---
 conf/compile.cfg    | 30 ++++++++++++++++++++++++++++++
 framework/config.py | 21 ++++++++++++++++++++-
 2 files changed, 50 insertions(+), 1 deletion(-)
 create mode 100644 conf/compile.cfg

diff --git a/conf/compile.cfg b/conf/compile.cfg
new file mode 100644
index 0000000..81290ee
--- /dev/null
+++ b/conf/compile.cfg
@@ -0,0 +1,30 @@
+#compile switch config
+#[sessionname]
+#suite_list means which suite should update compile switch or use patch for re-compile dpdk
+#this must config. when we run this suite dts will auto update switch or apply patch and re-compile 
+#dpdk. finish compile, will generate RTE_TARGET_sessionname for save compile result. 
+#suite_list=suite1,suite2
+#compile_app means which example should compile, excep testpmd,test_piple,test, test_acl. because dts will auto compile app.
+#app1 means example folder name, if you config build result path after app name(must use ":" split) dts will copy exampe to RTE_TARGET folder
+#compile_app=app1:compile app1 target path, app2
+#patch_list means use dpdk patch for test, it not must
+#patch_list=patchfile1,patchfile2
+#COMPILE_SWITCH means which compile suite switch should update, it must in conf/compile_base in RTE_SDK path,
+#we have a compile_base in dts conf path
+#COMPILE_SWITCH1=switch value
+
+[example]
+suite_list=suite1,suite2
+compile_app=app1:compile app1 targte path,app2
+patch_list=pactfile1,pactchfile2
+COMPILE_SWITCH1=switch value
+COMPILE_SWITCH2=switch value
+COMPILE_SWITCH3=switch value
+COMPILE_SWITCH4=switch value
+[log_level]
+suite_list=coremask
+#compile_app=coremask
+CONFIG_RTE_LOG_LEVEL=RTE_LOG_DEBUG
+[queue_start_stop]
+suite_list=queue_start_stop
+patch_list=macfwd_log.patch
diff --git a/framework/config.py b/framework/config.py
index 6c3a3b0..dd72c55 100644
--- a/framework/config.py
+++ b/framework/config.py
@@ -43,7 +43,7 @@ PORTCONF = "conf/ports.cfg"
 CRBCONF = "conf/crbs.cfg"
 VIRTCONF = "conf/virt_global.cfg"
 IXIACONF = "conf/ixia.cfg"
-
+COMPILECONF = "conf/compile.cfg"
 
 class UserConf():
 
@@ -301,6 +301,25 @@ class IxiaConf(UserConf):
 
         return self.ixia_cfg
 
+class CompileConf(UserConf):
+    def __init__(self, compile_conf=COMPILECONF):
+        self.config_file = compile_conf
+        self.compile_cfg = {}
+        self.compile_config = UserConf(self.config_file)
+    def load_compile_cfg(self):
+        sections = self.compile_config.get_sections()
+        for name in sections:
+            self.compile_cfg[name] = {}
+            compile_switch = self.compile_config.load_section(name)
+            for conf in compile_switch:
+                key, value = conf
+                if key in ['suite_list', 'compile_app', 'patch_list']:
+                    suite_lists = value.strip().split(',')
+                    self.compile_cfg[name][key] = suite_lists
+                else:
+                    self.compile_cfg[name][key.upper()] = value
+        return self.compile_cfg
+
 if __name__ == '__main__':
     parser = argparse.ArgumentParser(
         description="Load DTS configuration files")
-- 
1.9.3

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [dts] [PATCH 3/4] read compile switch config and compile dpdk before test
  2017-04-01  7:42 [dts] [PATCH 0/4] compile dpdk different config with different test suite by dts framework befor run test suite xu,huilong
  2017-04-01  7:42 ` [dts] [PATCH 1/4] add dpdk all compile switch xu,huilong
  2017-04-01  7:42 ` [dts] [PATCH 2/4] add compile config file template and parse compile config class xu,huilong
@ 2017-04-01  7:42 ` xu,huilong
  2017-04-01  7:42 ` [dts] [PATCH 4/4] add example for test suite xu,huilong
  2017-04-01  8:20 ` [dts] [PATCH 0/4] compile dpdk different config with different test suite by dts framework befor run " Liu, Yong
  4 siblings, 0 replies; 9+ messages in thread
From: xu,huilong @ 2017-04-01  7:42 UTC (permalink / raw)
  To: dts; +Cc: xu,huilong

update list:
    1. read compile switch config file
    2. set run suite list on this test
    3. update compile switch or apple patch
    4. compile dpdk and back up dpdk
    5. furnish interface for change different dpdk compile switch compile result

Signed-off-by: xu,huilong <huilongx.xu@intel.com>
---
 framework/dts.py          |   2 +-
 framework/project_dpdk.py | 103 +++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 102 insertions(+), 3 deletions(-)

diff --git a/framework/dts.py b/framework/dts.py
index 369599d..54033fa 100644
--- a/framework/dts.py
+++ b/framework/dts.py
@@ -345,7 +345,7 @@ def dts_run_target(duts, tester, targets, test_suites):
     for target in targets:
         log_handler.info("\nTARGET " + target)
         result.target = target
-
+        duts[0].set_test_suites(test_suites)
         try:
             drivername = settings.load_global_setting(settings.HOST_DRIVER_SETTING)
             if drivername == "":
diff --git a/framework/project_dpdk.py b/framework/project_dpdk.py
index a0cb4c2..3e44e70 100644
--- a/framework/project_dpdk.py
+++ b/framework/project_dpdk.py
@@ -39,8 +39,8 @@ from crb import Crb
 from dut import Dut
 from tester import Tester
 from logger import getLogger
-from settings import IXIA, DRIVERS
-
+from settings import IXIA, DRIVERS, FOLDERS
+from config import CompileConf
 
 class DPDKdut(Dut):
 
@@ -52,6 +52,7 @@ class DPDKdut(Dut):
     def __init__(self, crb, serializer):
         super(DPDKdut, self).__init__(crb, serializer)
         self.testpmd = None
+        self.read_compiel_switch = True
 
     def set_target(self, target, bind_dev=True):
         """
@@ -87,6 +88,9 @@ class DPDKdut(Dut):
             self.bind_interfaces_linux(drivername)
         self.extra_nic_setup()
 
+    def set_test_suites(self, test_suites):
+        self.test_suites = test_suites
+
     def setup_modules(self, target):
         """
         Install DPDK required kernel module on DUT.
@@ -157,16 +161,111 @@ class DPDKdut(Dut):
             self.send_expect("sed -i -e 's/CONFIG_RTE_LIBRTE_FM10K_INC_VECTOR=.*$/"
                              + "CONFIG_RTE_LIBRTE_FM10K_INC_VECTOR=n/' config/common_base", "# ", 30)
 
+    def get_dpdk_compile_switch(self):
+        self.default_compile_switch = {}
+        for line in open(r'conf/common_base'):
+            try: 
+                key, value = line.strip('\n').split('=')
+            except ValueError:
+                continue
+            if value:
+                self.default_compile_switch[key] = value
+
     def set_package(self, pkg_name="", patch_list=[]):
         self.package = pkg_name
         self.patches = patch_list
 
+    def reset_switch(self, switch = 'default'):
+        if switch == 'default':
+            for key,value in self.default_compile_switch.items():
+                self.send_expect("sed -i -e 's/%s=.*$/%s=%s/' config/common_base" % (key, key, value), "# ")
+        else:
+            if switch[0] not in self.default_compile_switch:
+                print 'switch %s not find in dpdk compilw switch' % switch[0]
+                raise KeyError
+ 
+            self.send_expect("sed -i -e 's/%s=.*$/%s=%s/' config/common_base" % (switch[0], switch[0], switch[1]), "# ")
+
+    def copy_patch(self, patch_file):
+        try:
+            patch_file = FOLDERS["Depends"] + r'/%s' % patch_file
+        except:
+            self.logger.warning(str(FOLDERS))
+            patch_file = r'dep/%s' % patch_file
+            FOLDERS["Depends"] = 'dep'
+        patch_dst = "/tmp/"
+        # dpdk patch and build
+        self.session.copy_file_to(patch_file, patch_dst)
+
+    def hot_fixpatch(self, patchfile, on):
+        try:
+            if on:
+                self.send_expect("patch -p0 < /tmp/%s" % patchfile, "#")
+            else:
+                self.send_expect("patch -p0 -R < /tmp/%s" % patchfile, "#")
+        except Exception, e:
+            raise ValueError("patch_hotfix_dpdk failure: %s" % e)
+
     def build_install_dpdk(self, target, extra_options=''):
         """
         Build DPDK source code with specified target.
         """
+        if self.read_compiel_switch:
+            self.get_dpdk_compile_switch()
+            compile_config = CompileConf()
+            self.compile_switch = compile_config.load_compile_cfg()
+            self.read_compiel_switch = False
+        else:
+            self.compile_switch = {}
+        for key, value in self.compile_switch.items():
+            if set(value['suite_list']) & set(self.test_suites):
+                # whether run suite should re-compile dpdk
+                 try:
+                 # try apply dpdk patch
+                     for patch in value['patch_list']:
+                         self.copy_patch(patch)
+                         self.hot_fixpatch(patch, True) 
+                 except KeyError:
+                     print 'no patch need apply'
+                     # set compilw switch
+                 for config_name, config_value in value.items():
+                     if config_name not in ['suite_list', 'patch_list', 'compile_app']:
+                         self.reset_switch([config_name, config_value])
+
+                 build_install_dpdk = getattr(self, 'build_install_dpdk_%s' % self.get_os_type())
+                 build_install_dpdk(target, extra_options)
+                 try:
+                    # try compile examples
+                    #print 'value is', value
+                    for app in value['compile_app']: 
+                        self.build_dpdk_apps('./examples/%s' % app.split(':')[0])
+                        try:
+                            self.send_expect('cp -rf %s %s' % (app.split(':')[1], self.target + r'/' + app.split(':')[0] + '_' + key), "#")
+                        except IndexError:
+                            print 'not dst path, so not need copy examples'
+                 except KeyError:
+                    print 'no app should compile'
+                 # backup compile result
+                 self.send_expect('cp -rf %s %s' % (self.target, self.target + '_' + key), "#")
+                 try:
+                     for patch in value['patch_list']:
+                         self.hot_fixpatch(patch, False)
+                 except KeyError:
+                     print 'no patch should remove'
+                 self.reset_switch('default')
+
+        #compile default switch 
         build_install_dpdk = getattr(self, 'build_install_dpdk_%s' % self.get_os_type())
         build_install_dpdk(target, extra_options)
+        self.send_expect('mv %s %s' % (self.target, self.target + '_default' ), "#")
+        self.send_expect('ln -sf  %s %s' % (self.target + '_default', self.target), "#")
+
+    def reset_compile_target(self, dst_target='default'):
+        self.send_expect('rm -rf %s ' % self.target , "#") 
+        if dst_target == 'default':
+            self.send_expect('ln -sf  %s %s' % (self.target + '_default', self.target), "#")
+        else:
+            self.send_expect('ln -sf  %s %s' % (dst_target, self.target), "#")
 
     def build_install_dpdk_linux(self, target, extra_options):
         """
-- 
1.9.3

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [dts] [PATCH 4/4] add example for test suite
  2017-04-01  7:42 [dts] [PATCH 0/4] compile dpdk different config with different test suite by dts framework befor run test suite xu,huilong
                   ` (2 preceding siblings ...)
  2017-04-01  7:42 ` [dts] [PATCH 3/4] read compile switch config and compile dpdk before test xu,huilong
@ 2017-04-01  7:42 ` xu,huilong
  2017-04-01  8:20 ` [dts] [PATCH 0/4] compile dpdk different config with different test suite by dts framework befor run " Liu, Yong
  4 siblings, 0 replies; 9+ messages in thread
From: xu,huilong @ 2017-04-01  7:42 UTC (permalink / raw)
  To: dts; +Cc: xu,huilong

add two example for how to use compile config for tests.
    1. queque start stop: use dpdk patch
    2. core mask: use different compile switch

Signed-off-by: xu,huilong <huilongx.xu@intel.com>
---
 tests/TestSuite_coremask.py         | 12 ++----------
 tests/TestSuite_queue_start_stop.py | 28 +++-------------------------
 2 files changed, 5 insertions(+), 35 deletions(-)

diff --git a/tests/TestSuite_coremask.py b/tests/TestSuite_coremask.py
index a28266a..c33a193 100644
--- a/tests/TestSuite_coremask.py
+++ b/tests/TestSuite_coremask.py
@@ -39,11 +39,7 @@ class TestCoremask(TestCase):
         self.mem_channel = self.dut.get_memory_channels()
 
         self.all_cores = self.dut.get_core_list("all")
-        self.dut.send_expect("sed -i -e 's/CONFIG_RTE_LOG_LEVEL=.*$/"
-                          + "CONFIG_RTE_LOG_LEVEL=RTE_LOG_DEBUG/' config/common_base", "# ", 30)
-
-        self.dut.skip_setup = False
-        self.dut.build_install_dpdk(self.target)
+        self.dut.reset_compile_target(self.target + '_log_level')
 
     def set_up(self):
         """
@@ -178,8 +174,4 @@ class TestCoremask(TestCase):
         """
         Run after each test suite.
         """
-        self.dut.send_expect("sed -i -e 's/CONFIG_RTE_LOG_LEVEL=.*$/"
-                          + "CONFIG_RTE_LOG_LEVEL=RTE_LOG_INFO/' config/common_base", "# ", 30)
-
-        #self.dut.skip_setup = False
-        self.dut.build_install_dpdk(self.target)
+        self.dut.reset_compile_target()
diff --git a/tests/TestSuite_queue_start_stop.py b/tests/TestSuite_queue_start_stop.py
index d1df66b..b24f47b 100644
--- a/tests/TestSuite_queue_start_stop.py
+++ b/tests/TestSuite_queue_start_stop.py
@@ -70,22 +70,7 @@ class TestQueueStartStop(TestCase):
         """
         Run before each test case.
         """
-        try:
-            patch_file = FOLDERS["Depends"] + r'/macfwd_log.patch'
-        except:
-            self.logger.warning(str(FOLDERS))
-            patch_file = r'dep/macfwd_log.patch'
-            FOLDERS["Depends"] = 'dep'
-        patch_dst = "/tmp/"
-
-        # dpdk patch and build
-        try:
-            self.dut.session.copy_file_to(patch_file, patch_dst)
-            self.patch_hotfix_dpdk(patch_dst + "macfwd_log.patch", True)
-            self.dut.build_dpdk_apps('./app/test-pmd')
-        except Exception, e:
-            raise IOError("dpdk setup failure: %s" % e)
-
+        self.dut.reset_compile_target(self.target + '_queue_start_stop')
     def check_forwarding(self, ports, nic, pktSize=64, received=True):
         self.send_packet(ports[0], ports[1], self.nic, pktSize, received)
 
@@ -130,7 +115,7 @@ class TestQueueStartStop(TestCase):
         """
         #dpdk start
         try:
-            self.dut.send_expect("./app/test-pmd/testpmd -c 0xf -n 4 -- -i --portmask=0x1 --port-topology=loop", "testpmd>", 120)
+            self.dut.send_expect("./%s/app/testpmd -c 0xf -n 4 -- -i --portmask=0x1 --port-topology=loop" % self.target, "testpmd>", 120)
             self.dut.send_expect("set fwd mac", "testpmd>")
             self.dut.send_expect("start", "testpmd>")
             self.check_forwarding([0, 0], self.nic)
@@ -182,16 +167,9 @@ class TestQueueStartStop(TestCase):
 
         self.dut.kill_all()
 
-        try:
-            self.patch_hotfix_dpdk(patch_dst + "macfwd_log.patch", False)
-        except Exception, e:
-            print "patch_hotfix_dpdk remove failure :%s" %e
-
     def tear_down_all(self):
         """
         Run after each test suite.
         """
         self.dut.kill_all()
-        self.dut.send_expect("rm -rf ./app/test-pmd/testpmd", "#")
-        self.dut.send_expect("rm -rf ./app/test-pmd/*.o", "#")
-        self.dut.send_expect("rm -rf ./app/test-pmd/build", "#")
+        self.dut.reset_compile_target()
-- 
1.9.3

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [dts] [PATCH 1/4] add dpdk all compile switch
  2017-04-01  7:42 ` [dts] [PATCH 1/4] add dpdk all compile switch xu,huilong
@ 2017-04-01  8:02   ` Liu, Yong
  0 siblings, 0 replies; 9+ messages in thread
From: Liu, Yong @ 2017-04-01  8:02 UTC (permalink / raw)
  To: Xu, HuilongX, dts; +Cc: Xu, HuilongX

Huilong, has some questions below.
First:
	Do We need some kind of version tracking in this file? If DPDK code changed, configuration file should also changed.
Second:
	If we're developing one suite for new feature and depend on new version of configuration file. How to handle that?

> -----Original Message-----
> From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of xu,huilong
> Sent: Saturday, April 01, 2017 3:42 PM
> To: dts@dpdk.org
> Cc: Xu, HuilongX <huilongx.xu@intel.com>
> Subject: [dts] [PATCH 1/4] add dpdk all compile switch
> 
> when dts framework read compile config file and compile dpdk, should check
> compile switch valid
> 
> Signed-off-by: xu,huilong <huilongx.xu@intel.com>
> ---
>  conf/common_base | 632
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 632 insertions(+)
>  create mode 100644 conf/common_base
> 
> diff --git a/conf/common_base b/conf/common_base
> new file mode 100644
> index 0000000..37aa1e1
> --- /dev/null
> +++ b/conf/common_base
> @@ -0,0 +1,632 @@
> +#   BSD LICENSE
> +#
> +#   Copyright(c) 2010-2017 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.
> +#
> +
> +#
> +# define executive environment
> +# RTE_EXEC_ENV values are the directories in mk/exec-env/
> +#
> +CONFIG_RTE_EXEC_ENV=
> +
> +#
> +# define the architecture we compile for.
> +# RTE_ARCH values are the directories in mk/arch/
> +#
> +CONFIG_RTE_ARCH=
> +
> +#
> +# machine can define specific variables or action for a specific board
> +# RTE_MACHINE values are the directories in mk/machine/
> +#
> +CONFIG_RTE_MACHINE=
> +
> +#
> +# The compiler we use.
> +# RTE_TOOLCHAIN values are the directories in mk/toolchain/
> +#
> +CONFIG_RTE_TOOLCHAIN=
> +
> +#
> +# Use intrinsics or assembly code for key routines
> +#
> +CONFIG_RTE_FORCE_INTRINSICS=n
> +
> +#
> +# Machine forces strict alignment constraints.
> +#
> +CONFIG_RTE_ARCH_STRICT_ALIGN=n
> +
> +#
> +# Compile to share library
> +#
> +CONFIG_RTE_BUILD_SHARED_LIB=n
> +
> +#
> +# Use newest code breaking previous ABI
> +#
> +CONFIG_RTE_NEXT_ABI=y
> +
> +#
> +# Major ABI to overwrite library specific LIBABIVER
> +#
> +CONFIG_RTE_MAJOR_ABI=
> +
> +#
> +# Machine's cache line size
> +#
> +CONFIG_RTE_CACHE_LINE_SIZE=64
> +
> +#
> +# Compile Environment Abstraction Layer
> +#
> +CONFIG_RTE_LIBRTE_EAL=y
> +CONFIG_RTE_MAX_LCORE=128
> +CONFIG_RTE_MAX_NUMA_NODES=8
> +CONFIG_RTE_MAX_MEMSEG=256
> +CONFIG_RTE_MAX_MEMZONE=2560
> +CONFIG_RTE_MAX_TAILQ=32
> +CONFIG_RTE_LOG_LEVEL=RTE_LOG_INFO
> +CONFIG_RTE_LOG_DP_LEVEL=RTE_LOG_INFO
> +CONFIG_RTE_LOG_HISTORY=256
> +CONFIG_RTE_LIBEAL_USE_HPET=n
> +CONFIG_RTE_EAL_ALLOW_INV_SOCKET_ID=n
> +CONFIG_RTE_EAL_ALWAYS_PANIC_ON_ERROR=n
> +CONFIG_RTE_EAL_IGB_UIO=n
> +CONFIG_RTE_EAL_VFIO=n
> +CONFIG_RTE_MALLOC_DEBUG=n
> +
> +# Default driver path (or "" to disable)
> +CONFIG_RTE_EAL_PMD_PATH=""
> +
> +#
> +# Compile Environment Abstraction Layer to support Vmware TSC map
> +#
> +CONFIG_RTE_LIBRTE_EAL_VMWARE_TSC_MAP_SUPPORT=y
> +
> +#
> +# Compile the argument parser library
> +#
> +CONFIG_RTE_LIBRTE_KVARGS=y
> +
> +#
> +# Compile generic ethernet library
> +#
> +CONFIG_RTE_LIBRTE_ETHER=y
> +CONFIG_RTE_LIBRTE_ETHDEV_DEBUG=n
> +CONFIG_RTE_MAX_ETHPORTS=32
> +CONFIG_RTE_MAX_QUEUES_PER_PORT=1024
> +CONFIG_RTE_LIBRTE_IEEE1588=n
> +CONFIG_RTE_ETHDEV_QUEUE_STAT_CNTRS=16
> +CONFIG_RTE_ETHDEV_RXTX_CALLBACKS=y
> +
> +#
> +# Turn off Tx preparation stage
> +#
> +# Warning: rte_ethdev_tx_prepare() can be safely disabled only if using a
> +# driver which do not implement any Tx preparation.
> +#
> +CONFIG_RTE_ETHDEV_TX_PREPARE_NOOP=n
> +
> +#
> +# Support NIC bypass logic
> +#
> +CONFIG_RTE_NIC_BYPASS=n
> +
> +#
> +# Compile burst-oriented Amazon ENA PMD driver
> +#
> +CONFIG_RTE_LIBRTE_ENA_PMD=y
> +CONFIG_RTE_LIBRTE_ENA_DEBUG_RX=n
> +CONFIG_RTE_LIBRTE_ENA_DEBUG_TX=n
> +CONFIG_RTE_LIBRTE_ENA_DEBUG_TX_FREE=n
> +CONFIG_RTE_LIBRTE_ENA_DEBUG_DRIVER=n
> +CONFIG_RTE_LIBRTE_ENA_COM_DEBUG=n
> +
> +#
> +# Compile burst-oriented IGB & EM PMD drivers
> +#
> +CONFIG_RTE_LIBRTE_EM_PMD=y
> +CONFIG_RTE_LIBRTE_IGB_PMD=y
> +CONFIG_RTE_LIBRTE_E1000_DEBUG_INIT=n
> +CONFIG_RTE_LIBRTE_E1000_DEBUG_RX=n
> +CONFIG_RTE_LIBRTE_E1000_DEBUG_TX=n
> +CONFIG_RTE_LIBRTE_E1000_DEBUG_TX_FREE=n
> +CONFIG_RTE_LIBRTE_E1000_DEBUG_DRIVER=n
> +CONFIG_RTE_LIBRTE_E1000_PF_DISABLE_STRIP_CRC=n
> +
> +#
> +# Compile burst-oriented IXGBE PMD driver
> +#
> +CONFIG_RTE_LIBRTE_IXGBE_PMD=y
> +CONFIG_RTE_LIBRTE_IXGBE_DEBUG_INIT=n
> +CONFIG_RTE_LIBRTE_IXGBE_DEBUG_RX=n
> +CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX=n
> +CONFIG_RTE_LIBRTE_IXGBE_DEBUG_TX_FREE=n
> +CONFIG_RTE_LIBRTE_IXGBE_DEBUG_DRIVER=n
> +CONFIG_RTE_LIBRTE_IXGBE_PF_DISABLE_STRIP_CRC=n
> +CONFIG_RTE_IXGBE_INC_VECTOR=y
> +CONFIG_RTE_IXGBE_RX_OLFLAGS_ENABLE=y
> +
> +#
> +# Compile burst-oriented I40E PMD driver
> +#
> +CONFIG_RTE_LIBRTE_I40E_PMD=y
> +CONFIG_RTE_LIBRTE_I40E_DEBUG_INIT=n
> +CONFIG_RTE_LIBRTE_I40E_DEBUG_RX=n
> +CONFIG_RTE_LIBRTE_I40E_DEBUG_TX=n
> +CONFIG_RTE_LIBRTE_I40E_DEBUG_TX_FREE=n
> +CONFIG_RTE_LIBRTE_I40E_DEBUG_DRIVER=n
> +CONFIG_RTE_LIBRTE_I40E_RX_ALLOW_BULK_ALLOC=y
> +CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=y
> +CONFIG_RTE_LIBRTE_I40E_RX_OLFLAGS_ENABLE=y
> +CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n
> +CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_PF=64
> +CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VF=4
> +CONFIG_RTE_LIBRTE_I40E_QUEUE_NUM_PER_VM=4
> +# interval up to 8160 us, aligned to 2 (or default value)
> +CONFIG_RTE_LIBRTE_I40E_ITR_INTERVAL=-1
> +
> +#
> +# Compile burst-oriented FM10K PMD
> +#
> +CONFIG_RTE_LIBRTE_FM10K_PMD=y
> +CONFIG_RTE_LIBRTE_FM10K_DEBUG_INIT=n
> +CONFIG_RTE_LIBRTE_FM10K_DEBUG_RX=n
> +CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX=n
> +CONFIG_RTE_LIBRTE_FM10K_DEBUG_TX_FREE=n
> +CONFIG_RTE_LIBRTE_FM10K_DEBUG_DRIVER=n
> +CONFIG_RTE_LIBRTE_FM10K_RX_OLFLAGS_ENABLE=y
> +CONFIG_RTE_LIBRTE_FM10K_INC_VECTOR=y
> +
> +#
> +# Compile burst-oriented Mellanox ConnectX-3 (MLX4) PMD
> +#
> +CONFIG_RTE_LIBRTE_MLX4_PMD=n
> +CONFIG_RTE_LIBRTE_MLX4_DEBUG=n
> +CONFIG_RTE_LIBRTE_MLX4_SGE_WR_N=4
> +CONFIG_RTE_LIBRTE_MLX4_MAX_INLINE=0
> +CONFIG_RTE_LIBRTE_MLX4_TX_MP_CACHE=8
> +CONFIG_RTE_LIBRTE_MLX4_SOFT_COUNTERS=1
> +
> +#
> +# Compile burst-oriented Mellanox ConnectX-4 & ConnectX-5 (MLX5) PMD
> +#
> +CONFIG_RTE_LIBRTE_MLX5_PMD=n
> +CONFIG_RTE_LIBRTE_MLX5_DEBUG=n
> +CONFIG_RTE_LIBRTE_MLX5_TX_MP_CACHE=8
> +
> +#
> +# Compile burst-oriented Broadcom PMD driver
> +#
> +CONFIG_RTE_LIBRTE_BNX2X_PMD=n
> +CONFIG_RTE_LIBRTE_BNX2X_DEBUG=n
> +CONFIG_RTE_LIBRTE_BNX2X_DEBUG_INIT=n
> +CONFIG_RTE_LIBRTE_BNX2X_DEBUG_RX=n
> +CONFIG_RTE_LIBRTE_BNX2X_DEBUG_TX=n
> +CONFIG_RTE_LIBRTE_BNX2X_MF_SUPPORT=n
> +CONFIG_RTE_LIBRTE_BNX2X_DEBUG_PERIODIC=n
> +
> +#
> +# Compile burst-oriented Chelsio Terminator 10GbE/40GbE (CXGBE) PMD
> +#
> +CONFIG_RTE_LIBRTE_CXGBE_PMD=y
> +CONFIG_RTE_LIBRTE_CXGBE_DEBUG=n
> +CONFIG_RTE_LIBRTE_CXGBE_DEBUG_REG=n
> +CONFIG_RTE_LIBRTE_CXGBE_DEBUG_MBOX=n
> +CONFIG_RTE_LIBRTE_CXGBE_DEBUG_TX=n
> +CONFIG_RTE_LIBRTE_CXGBE_DEBUG_RX=n
> +
> +#
> +# Compile burst-oriented Cisco ENIC PMD driver
> +#
> +CONFIG_RTE_LIBRTE_ENIC_PMD=y
> +CONFIG_RTE_LIBRTE_ENIC_DEBUG=n
> +
> +#
> +# Compile burst-oriented Netronome NFP PMD driver
> +#
> +CONFIG_RTE_LIBRTE_NFP_PMD=n
> +CONFIG_RTE_LIBRTE_NFP_DEBUG=n
> +
> +#
> +# Compile burst-oriented Broadcom BNXT PMD driver
> +#
> +CONFIG_RTE_LIBRTE_BNXT_PMD=y
> +
> +#
> +# Compile burst-oriented Solarflare libefx-based PMD
> +#
> +CONFIG_RTE_LIBRTE_SFC_EFX_PMD=y
> +CONFIG_RTE_LIBRTE_SFC_EFX_DEBUG=n
> +
> +#
> +# Compile software PMD backed by SZEDATA2 device
> +#
> +CONFIG_RTE_LIBRTE_PMD_SZEDATA2=n
> +#
> +# Defines firmware type address space.
> +# RTE_LIBRTE_PMD_SZEDATA2_AS can be:
> +# 0 - for firmwares:
> +#         NIC_100G1_LR4
> +#         HANIC_100G1_LR4
> +#         HANIC_100G1_SR10
> +# Other values raise compile time error
> +CONFIG_RTE_LIBRTE_PMD_SZEDATA2_AS=0
> +
> +#
> +# Compile burst-oriented Cavium Thunderx NICVF PMD driver
> +#
> +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD=n
> +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_INIT=n
> +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_RX=n
> +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_TX=n
> +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_DRIVER=n
> +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_MBOX=n
> +
> +#
> +# Compile burst-oriented VIRTIO PMD driver
> +#
> +CONFIG_RTE_LIBRTE_VIRTIO_PMD=y
> +CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_INIT=n
> +CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_RX=n
> +CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_TX=n
> +CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DRIVER=n
> +CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_DUMP=n
> +
> +#
> +# Compile virtio device emulation inside virtio PMD driver
> +#
> +CONFIG_RTE_VIRTIO_USER=n
> +
> +#
> +# Compile burst-oriented VMXNET3 PMD driver
> +#
> +CONFIG_RTE_LIBRTE_VMXNET3_PMD=y
> +CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_INIT=n
> +CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_RX=n
> +CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX=n
> +CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX_FREE=n
> +CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_DRIVER=n
> +
> +#
> +# Compile example software rings based PMD
> +#
> +CONFIG_RTE_LIBRTE_PMD_RING=y
> +CONFIG_RTE_PMD_RING_MAX_RX_RINGS=16
> +CONFIG_RTE_PMD_RING_MAX_TX_RINGS=16
> +
> +#
> +# Compile software PMD backed by PCAP files
> +#
> +CONFIG_RTE_LIBRTE_PMD_PCAP=n
> +
> +#
> +# Compile link bonding PMD library
> +#
> +CONFIG_RTE_LIBRTE_PMD_BOND=y
> +CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB=n
> +CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB_L1=n
> +
> +# QLogic 10G/25G/40G/50G/100G PMD
> +#
> +CONFIG_RTE_LIBRTE_QEDE_PMD=y
> +CONFIG_RTE_LIBRTE_QEDE_DEBUG_INIT=n
> +CONFIG_RTE_LIBRTE_QEDE_DEBUG_INFO=n
> +CONFIG_RTE_LIBRTE_QEDE_DEBUG_DRIVER=n
> +CONFIG_RTE_LIBRTE_QEDE_DEBUG_TX=n
> +CONFIG_RTE_LIBRTE_QEDE_DEBUG_RX=n
> +#Provides abs path/name of the firmware file.
> +#Empty string denotes driver will use default firmware
> +CONFIG_RTE_LIBRTE_QEDE_FW=""
> +
> +#
> +# Compile software PMD backed by AF_PACKET sockets (Linux only)
> +#
> +CONFIG_RTE_LIBRTE_PMD_AF_PACKET=n
> +
> +#
> +# Compile the TAP PMD
> +# It is enabled by default for Linux only.
> +#
> +CONFIG_RTE_LIBRTE_PMD_TAP=n
> +
> +#
> +# Compile Xen PMD
> +#
> +CONFIG_RTE_LIBRTE_PMD_XENVIRT=n
> +
> +#
> +# Compile null PMD
> +#
> +CONFIG_RTE_LIBRTE_PMD_NULL=y
> +
> +#
> +# Do prefetch of packet data within PMD driver receive function
> +#
> +CONFIG_RTE_PMD_PACKET_PREFETCH=y
> +
> +#
> +# Compile generic crypto device library
> +#
> +CONFIG_RTE_LIBRTE_CRYPTODEV=y
> +CONFIG_RTE_LIBRTE_CRYPTODEV_DEBUG=n
> +CONFIG_RTE_CRYPTO_MAX_DEVS=64
> +CONFIG_RTE_CRYPTODEV_NAME_LEN=64
> +
> +#
> +# Compile PMD for ARMv8 Crypto device
> +#
> +CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO=n
> +CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO_DEBUG=n
> +
> +#
> +# Compile PMD for QuickAssist based devices
> +#
> +CONFIG_RTE_LIBRTE_PMD_QAT=n
> +CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_INIT=n
> +CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_TX=n
> +CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_RX=n
> +CONFIG_RTE_LIBRTE_PMD_QAT_DEBUG_DRIVER=n
> +#
> +# Number of sessions to create in the session memory pool
> +# on a single QuickAssist device.
> +#
> +CONFIG_RTE_QAT_PMD_MAX_NB_SESSIONS=2048
> +
> +#
> +# Compile PMD for AESNI backed device
> +#
> +CONFIG_RTE_LIBRTE_PMD_AESNI_MB=n
> +CONFIG_RTE_LIBRTE_PMD_AESNI_MB_DEBUG=n
> +
> +#
> +# Compile PMD for Software backed device
> +#
> +CONFIG_RTE_LIBRTE_PMD_OPENSSL=n
> +CONFIG_RTE_LIBRTE_PMD_OPENSSL_DEBUG=n
> +
> +#
> +# Compile PMD for AESNI GCM device
> +#
> +CONFIG_RTE_LIBRTE_PMD_AESNI_GCM=n
> +CONFIG_RTE_LIBRTE_PMD_AESNI_GCM_DEBUG=n
> +
> +#
> +# Compile PMD for SNOW 3G device
> +#
> +CONFIG_RTE_LIBRTE_PMD_SNOW3G=n
> +CONFIG_RTE_LIBRTE_PMD_SNOW3G_DEBUG=n
> +
> +#
> +# Compile PMD for KASUMI device
> +#
> +CONFIG_RTE_LIBRTE_PMD_KASUMI=n
> +CONFIG_RTE_LIBRTE_PMD_KASUMI_DEBUG=n
> +
> +#
> +# Compile PMD for ZUC device
> +#
> +CONFIG_RTE_LIBRTE_PMD_ZUC=n
> +CONFIG_RTE_LIBRTE_PMD_ZUC_DEBUG=n
> +
> +#
> +# Compile PMD for Crypto Scheduler device
> +#
> +CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER=n
> +CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER_DEBUG=n
> +
> +#
> +# Compile PMD for NULL Crypto device
> +#
> +CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO=y
> +
> +#
> +# Compile librte_ring
> +#
> +CONFIG_RTE_LIBRTE_RING=y
> +CONFIG_RTE_LIBRTE_RING_DEBUG=n
> +CONFIG_RTE_RING_SPLIT_PROD_CONS=n
> +CONFIG_RTE_RING_PAUSE_REP_COUNT=0
> +
> +#
> +# Compile librte_mempool
> +#
> +CONFIG_RTE_LIBRTE_MEMPOOL=y
> +CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=512
> +CONFIG_RTE_LIBRTE_MEMPOOL_DEBUG=n
> +
> +#
> +# Compile librte_mbuf
> +#
> +CONFIG_RTE_LIBRTE_MBUF=y
> +CONFIG_RTE_LIBRTE_MBUF_DEBUG=n
> +CONFIG_RTE_MBUF_DEFAULT_MEMPOOL_OPS="ring_mp_mc"
> +CONFIG_RTE_MBUF_REFCNT_ATOMIC=y
> +CONFIG_RTE_PKTMBUF_HEADROOM=128
> +
> +#
> +# Compile librte_timer
> +#
> +CONFIG_RTE_LIBRTE_TIMER=y
> +CONFIG_RTE_LIBRTE_TIMER_DEBUG=n
> +
> +#
> +# Compile librte_cfgfile
> +#
> +CONFIG_RTE_LIBRTE_CFGFILE=y
> +
> +#
> +# Compile librte_cmdline
> +#
> +CONFIG_RTE_LIBRTE_CMDLINE=y
> +CONFIG_RTE_LIBRTE_CMDLINE_DEBUG=n
> +
> +#
> +# Compile librte_hash
> +#
> +CONFIG_RTE_LIBRTE_HASH=y
> +CONFIG_RTE_LIBRTE_HASH_DEBUG=n
> +
> +#
> +# Compile librte_efd
> +#
> +CONFIG_RTE_LIBRTE_EFD=y
> +
> +#
> +# Compile librte_jobstats
> +#
> +CONFIG_RTE_LIBRTE_JOBSTATS=y
> +
> +#
> +# Compile librte_lpm
> +#
> +CONFIG_RTE_LIBRTE_LPM=y
> +CONFIG_RTE_LIBRTE_LPM_DEBUG=n
> +
> +#
> +# Compile librte_acl
> +#
> +CONFIG_RTE_LIBRTE_ACL=y
> +CONFIG_RTE_LIBRTE_ACL_DEBUG=n
> +
> +#
> +# Compile librte_power
> +#
> +CONFIG_RTE_LIBRTE_POWER=n
> +CONFIG_RTE_LIBRTE_POWER_DEBUG=n
> +CONFIG_RTE_MAX_LCORE_FREQS=64
> +
> +#
> +# Compile librte_net
> +#
> +CONFIG_RTE_LIBRTE_NET=y
> +
> +#
> +# Compile librte_ip_frag
> +#
> +CONFIG_RTE_LIBRTE_IP_FRAG=y
> +CONFIG_RTE_LIBRTE_IP_FRAG_DEBUG=n
> +CONFIG_RTE_LIBRTE_IP_FRAG_MAX_FRAG=4
> +CONFIG_RTE_LIBRTE_IP_FRAG_TBL_STAT=n
> +
> +#
> +# Compile librte_meter
> +#
> +CONFIG_RTE_LIBRTE_METER=y
> +
> +#
> +# Compile librte_sched
> +#
> +CONFIG_RTE_LIBRTE_SCHED=y
> +CONFIG_RTE_SCHED_DEBUG=n
> +CONFIG_RTE_SCHED_RED=n
> +CONFIG_RTE_SCHED_COLLECT_STATS=n
> +CONFIG_RTE_SCHED_SUBPORT_TC_OV=n
> +CONFIG_RTE_SCHED_PORT_N_GRINDERS=8
> +CONFIG_RTE_SCHED_VECTOR=n
> +
> +#
> +# Compile the distributor library
> +#
> +CONFIG_RTE_LIBRTE_DISTRIBUTOR=y
> +
> +#
> +# Compile the reorder library
> +#
> +CONFIG_RTE_LIBRTE_REORDER=y
> +
> +#
> +# Compile librte_port
> +#
> +CONFIG_RTE_LIBRTE_PORT=y
> +CONFIG_RTE_PORT_STATS_COLLECT=n
> +CONFIG_RTE_PORT_PCAP=n
> +
> +#
> +# Compile librte_table
> +#
> +CONFIG_RTE_LIBRTE_TABLE=y
> +CONFIG_RTE_TABLE_STATS_COLLECT=n
> +
> +#
> +# Compile librte_pipeline
> +#
> +CONFIG_RTE_LIBRTE_PIPELINE=y
> +CONFIG_RTE_PIPELINE_STATS_COLLECT=n
> +
> +#
> +# Compile librte_kni
> +#
> +CONFIG_RTE_LIBRTE_KNI=n
> +CONFIG_RTE_KNI_KMOD=n
> +CONFIG_RTE_KNI_KMOD_ETHTOOL=n
> +CONFIG_RTE_KNI_PREEMPT_DEFAULT=y
> +
> +#
> +# Compile the pdump library
> +#
> +CONFIG_RTE_LIBRTE_PDUMP=y
> +
> +#
> +# Compile vhost user library
> +#
> +CONFIG_RTE_LIBRTE_VHOST=n
> +CONFIG_RTE_LIBRTE_VHOST_NUMA=n
> +CONFIG_RTE_LIBRTE_VHOST_DEBUG=n
> +
> +#
> +# Compile vhost PMD
> +# To compile, CONFIG_RTE_LIBRTE_VHOST should be enabled.
> +#
> +CONFIG_RTE_LIBRTE_PMD_VHOST=n
> +
> +#
> +#Compile Xen domain0 support
> +#
> +CONFIG_RTE_LIBRTE_XEN_DOM0=n
> +
> +#
> +# Compile the test application
> +#
> +CONFIG_RTE_APP_TEST=y
> +CONFIG_RTE_APP_TEST_RESOURCE_TAR=n
> +
> +#
> +# Compile the PMD test application
> +#
> +CONFIG_RTE_TEST_PMD=y
> +CONFIG_RTE_TEST_PMD_RECORD_CORE_CYCLES=n
> +CONFIG_RTE_TEST_PMD_RECORD_BURST_STATS=n
> +
> +#
> +# Compile the crypto performance application
> +#
> +CONFIG_RTE_APP_CRYPTO_PERF=y
> --
> 1.9.3

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [dts] [PATCH 0/4] compile dpdk different config with different test suite by dts framework befor run test suite
  2017-04-01  7:42 [dts] [PATCH 0/4] compile dpdk different config with different test suite by dts framework befor run test suite xu,huilong
                   ` (3 preceding siblings ...)
  2017-04-01  7:42 ` [dts] [PATCH 4/4] add example for test suite xu,huilong
@ 2017-04-01  8:20 ` Liu, Yong
  2017-04-01  8:31   ` Xu, HuilongX
  4 siblings, 1 reply; 9+ messages in thread
From: Liu, Yong @ 2017-04-01  8:20 UTC (permalink / raw)
  To: Xu, HuilongX, dts; +Cc: Xu, HuilongX

Thanks huilong. The overall idea look good for me. Just some comments as below:

1. Configuration dependency should be based on test case not suite. Configuration requirements maybe changed even in one suite.
2. No need to compile all compile sessions. If cases not in execution list, we can skip it. It will save more time :)
3. Assume that suite can remove all dpdk build related code, cause of framework can make case not aware of configuration dependencies. 

Thanks,
Marvin

> -----Original Message-----
> From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of xu,huilong
> Sent: Saturday, April 01, 2017 3:42 PM
> To: dts@dpdk.org
> Cc: Xu, HuilongX <huilongx.xu@intel.com>
> Subject: [dts] [PATCH 0/4] compile dpdk different config with different
> test suite by dts framework befor run test suite
> 
> we should compile dpdk many times for different test suite.
> if we exec a test suite must update dpdk compile suite or change dpdk code,
> we must cpmpile dpdk two times at least.
> So this change for read exec test_suite list and compile dpdk befor run
> test suite.
> 
> update list:
>  1. conf/common_base
>     this is dpdk all compile switch from dpdk source code. it for check
> compile.cfg switch vaild.
>  2. conf/compile.cfg
>     compile config template, detaile config please see comments in file
>  3. framework/config.py
>     parse compile.cfg, detaile info please see comments in commit
>  4. framework/project_dpdk.py
>     a)define interface for test suit:
>       reset_compile_target()
>     b) read compile conf and get test suite list, then update compile
> switch and compile dpdk
>  5. framework/dts.py
>     set test suite list
>  6. tests/TestSuite_coremask.py and tests/TestSuite_queue_start_stop.py
>     example for use compile config.
> Now old interface for compile dpdk is vaild, so other case will also run
> pass.
> 
> xu,huilong (4):
>   add dpdk all compile switch
>   add compile config file template and parse compile config class
>   read compile switch config and compile dpdk before test
>   add example for test suite
> 
>  conf/common_base                    | 632
> ++++++++++++++++++++++++++++++++++++
>  conf/compile.cfg                    |  30 ++
>  framework/config.py                 |  21 +-
>  framework/dts.py                    |   2 +-
>  framework/project_dpdk.py           | 103 +++++-
>  tests/TestSuite_coremask.py         |  12 +-
>  tests/TestSuite_queue_start_stop.py |  28 +-
>  7 files changed, 789 insertions(+), 39 deletions(-)
>  create mode 100644 conf/common_base
>  create mode 100644 conf/compile.cfg
> 
> --
> 1.9.3

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [dts] [PATCH 0/4] compile dpdk different config with different test suite by dts framework befor run test suite
  2017-04-01  8:20 ` [dts] [PATCH 0/4] compile dpdk different config with different test suite by dts framework befor run " Liu, Yong
@ 2017-04-01  8:31   ` Xu, HuilongX
  2017-04-01  8:54     ` Liu, Yong
  0 siblings, 1 reply; 9+ messages in thread
From: Xu, HuilongX @ 2017-04-01  8:31 UTC (permalink / raw)
  To: Liu, Yong, dts


See my comments

> -----Original Message-----
> From: Liu, Yong
> Sent: Saturday, April 01, 2017 4:21 PM
> To: Xu, HuilongX; dts@dpdk.org
> Cc: Xu, HuilongX
> Subject: RE: [dts] [PATCH 0/4] compile dpdk different config with different
> test suite by dts framework befor run test suite
> 
> Thanks huilong. The overall idea look good for me. Just some comments as
> below:
> 
> 1. Configuration dependency should be based on test case not suite.
> Configuration requirements maybe changed even in one suite.
If config dependency test case, must get all case name, but if case name same, maybe have issue.

> 2. No need to compile all compile sessions. If cases not in execution list, we
> can skip it. It will save more time :)
The config is global, if test suite not in exection.cfg, the compile session will skip.

 3. Assume that suite can remove all dpdk
> build related code, cause of framework can make case not aware of
> configuration dependencies.
Maybe can savel compile switch in target result, but it only for check. Because, when we development a case.
We should know compile switch config and compile.cfg is static and global. So not need know dependencies.
> 
> Thanks,
> Marvin
> 
> > -----Original Message-----
> > From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of xu,huilong
> > Sent: Saturday, April 01, 2017 3:42 PM
> > To: dts@dpdk.org
> > Cc: Xu, HuilongX <huilongx.xu@intel.com>
> > Subject: [dts] [PATCH 0/4] compile dpdk different config with
> > different test suite by dts framework befor run test suite
> >
> > we should compile dpdk many times for different test suite.
> > if we exec a test suite must update dpdk compile suite or change dpdk
> > code, we must cpmpile dpdk two times at least.
> > So this change for read exec test_suite list and compile dpdk befor
> > run test suite.
> >
> > update list:
> >  1. conf/common_base
> >     this is dpdk all compile switch from dpdk source code. it for
> > check compile.cfg switch vaild.
> >  2. conf/compile.cfg
> >     compile config template, detaile config please see comments in
> > file  3. framework/config.py
> >     parse compile.cfg, detaile info please see comments in commit  4.
> > framework/project_dpdk.py
> >     a)define interface for test suit:
> >       reset_compile_target()
> >     b) read compile conf and get test suite list, then update compile
> > switch and compile dpdk  5. framework/dts.py
> >     set test suite list
> >  6. tests/TestSuite_coremask.py and tests/TestSuite_queue_start_stop.py
> >     example for use compile config.
> > Now old interface for compile dpdk is vaild, so other case will also
> > run pass.
> >
> > xu,huilong (4):
> >   add dpdk all compile switch
> >   add compile config file template and parse compile config class
> >   read compile switch config and compile dpdk before test
> >   add example for test suite
> >
> >  conf/common_base                    | 632
> > ++++++++++++++++++++++++++++++++++++
> >  conf/compile.cfg                    |  30 ++
> >  framework/config.py                 |  21 +-
> >  framework/dts.py                    |   2 +-
> >  framework/project_dpdk.py           | 103 +++++-
> >  tests/TestSuite_coremask.py         |  12 +-
> >  tests/TestSuite_queue_start_stop.py |  28 +-
> >  7 files changed, 789 insertions(+), 39 deletions(-)  create mode
> > 100644 conf/common_base  create mode 100644 conf/compile.cfg
> >
> > --
> > 1.9.3

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [dts] [PATCH 0/4] compile dpdk different config with different test suite by dts framework befor run test suite
  2017-04-01  8:31   ` Xu, HuilongX
@ 2017-04-01  8:54     ` Liu, Yong
  0 siblings, 0 replies; 9+ messages in thread
From: Liu, Yong @ 2017-04-01  8:54 UTC (permalink / raw)
  To: Xu, HuilongX, dts

Huilong, thanks for your comments.

> -----Original Message-----
> From: Xu, HuilongX
> Sent: Saturday, April 01, 2017 4:32 PM
> To: Liu, Yong <yong.liu@intel.com>; dts@dpdk.org
> Subject: RE: [dts] [PATCH 0/4] compile dpdk different config with
> different test suite by dts framework befor run test suite
> 
> 
> See my comments
> 
> > -----Original Message-----
> > From: Liu, Yong
> > Sent: Saturday, April 01, 2017 4:21 PM
> > To: Xu, HuilongX; dts@dpdk.org
> > Cc: Xu, HuilongX
> > Subject: RE: [dts] [PATCH 0/4] compile dpdk different config with
> different
> > test suite by dts framework befor run test suite
> >
> > Thanks huilong. The overall idea look good for me. Just some comments as
> > below:
> >
> > 1. Configuration dependency should be based on test case not suite.
> > Configuration requirements maybe changed even in one suite.
> If config dependency test case, must get all case name, but if case name
> same, maybe have issue.

That can be solved like reformat cases names to make sure name different from each other.
Or compile configuration format changed to "suite+case".

> 
> > 2. No need to compile all compile sessions. If cases not in execution
> list, we
> > can skip it. It will save more time :)
> The config is global, if test suite not in exection.cfg, the compile
> session will skip.

Thanks, we need to skip useless build.

> 
>  3. Assume that suite can remove all dpdk
> > build related code, cause of framework can make case not aware of
> > configuration dependencies.
> Maybe can savel compile switch in target result, but it only for check.
> Because, when we development a case.
> We should know compile switch config and compile.cfg is static and global.
> So not need know dependencies.
> >

Configuration dependencies have been tracked by compile.cfg. Compilation and link action can be handled in framework.
Test case code can ignore or discard DPDK configuration difference.

Logic will be like:

Compile config: tracking all configuration dependencies

DTS init:
	Load compile config
	Load execution config

	Build dpdk with default configuration
	If execution cases need in compile configuration
		Build dpdk with modified configuration file
		Build app with modified configuration file
		Move built target to other folder
		Move built binary to other folder

DTS run test Case: 
	If case need special configuration 
      	Link compile session target for this case to default target
		Link app for this case to default folder
		Run test case
		After case finished, remove that link and restore default target back

	If case not need special configuration
		Just run the case(original dpdk recompile code should also work here)

> > Thanks,
> > Marvin
> >
> > > -----Original Message-----
> > > From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of xu,huilong
> > > Sent: Saturday, April 01, 2017 3:42 PM
> > > To: dts@dpdk.org
> > > Cc: Xu, HuilongX <huilongx.xu@intel.com>
> > > Subject: [dts] [PATCH 0/4] compile dpdk different config with
> > > different test suite by dts framework befor run test suite
> > >
> > > we should compile dpdk many times for different test suite.
> > > if we exec a test suite must update dpdk compile suite or change dpdk
> > > code, we must cpmpile dpdk two times at least.
> > > So this change for read exec test_suite list and compile dpdk befor
> > > run test suite.
> > >
> > > update list:
> > >  1. conf/common_base
> > >     this is dpdk all compile switch from dpdk source code. it for
> > > check compile.cfg switch vaild.
> > >  2. conf/compile.cfg
> > >     compile config template, detaile config please see comments in
> > > file  3. framework/config.py
> > >     parse compile.cfg, detaile info please see comments in commit  4.
> > > framework/project_dpdk.py
> > >     a)define interface for test suit:
> > >       reset_compile_target()
> > >     b) read compile conf and get test suite list, then update compile
> > > switch and compile dpdk  5. framework/dts.py
> > >     set test suite list
> > >  6. tests/TestSuite_coremask.py and
> tests/TestSuite_queue_start_stop.py
> > >     example for use compile config.
> > > Now old interface for compile dpdk is vaild, so other case will also
> > > run pass.
> > >
> > > xu,huilong (4):
> > >   add dpdk all compile switch
> > >   add compile config file template and parse compile config class
> > >   read compile switch config and compile dpdk before test
> > >   add example for test suite
> > >
> > >  conf/common_base                    | 632
> > > ++++++++++++++++++++++++++++++++++++
> > >  conf/compile.cfg                    |  30 ++
> > >  framework/config.py                 |  21 +-
> > >  framework/dts.py                    |   2 +-
> > >  framework/project_dpdk.py           | 103 +++++-
> > >  tests/TestSuite_coremask.py         |  12 +-
> > >  tests/TestSuite_queue_start_stop.py |  28 +-
> > >  7 files changed, 789 insertions(+), 39 deletions(-)  create mode
> > > 100644 conf/common_base  create mode 100644 conf/compile.cfg
> > >
> > > --
> > > 1.9.3

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2017-04-01  8:54 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-01  7:42 [dts] [PATCH 0/4] compile dpdk different config with different test suite by dts framework befor run test suite xu,huilong
2017-04-01  7:42 ` [dts] [PATCH 1/4] add dpdk all compile switch xu,huilong
2017-04-01  8:02   ` Liu, Yong
2017-04-01  7:42 ` [dts] [PATCH 2/4] add compile config file template and parse compile config class xu,huilong
2017-04-01  7:42 ` [dts] [PATCH 3/4] read compile switch config and compile dpdk before test xu,huilong
2017-04-01  7:42 ` [dts] [PATCH 4/4] add example for test suite xu,huilong
2017-04-01  8:20 ` [dts] [PATCH 0/4] compile dpdk different config with different test suite by dts framework befor run " Liu, Yong
2017-04-01  8:31   ` Xu, HuilongX
2017-04-01  8:54     ` Liu, Yong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).