diff --git a/.openvswitch.metadata b/.openvswitch.metadata new file mode 100644 index 0000000..af1aabc --- /dev/null +++ b/.openvswitch.metadata @@ -0,0 +1,5 @@ +002450621b33c5690060345b0aac25bc2426d675 SOURCES/docutils-0.12.tar.gz +e704a36f712c1c81f253f77d1bd7c60d85b8a7ff SOURCES/dpdk-19.11.1.tar.xz +0c5f78212173d2cac286f8f78aa95ebdea9e2444 SOURCES/openvswitch-2.13.0.tar.gz +d34f96421a86004aa5d26ecf975edefd09f948b1 SOURCES/Pygments-1.4.tar.gz +6beb30f18ffac3de7689b7fd63e9a8a7d9c8df3a SOURCES/Sphinx-1.1.3.tar.gz diff --git a/SOURCES/arm64-armv8a-linuxapp-gcc-config b/SOURCES/arm64-armv8a-linuxapp-gcc-config new file mode 100644 index 0000000..c219def --- /dev/null +++ b/SOURCES/arm64-armv8a-linuxapp-gcc-config @@ -0,0 +1,607 @@ +# -*- cfg-sha: c5b6330ff61c71cf3196f55aad5cc3766b44dd62560396f67c2fee4f7ab46780 +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2015 Cavium, Inc +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2017 Cavium, Inc +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2010-2016 Intel Corporation +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2010-2017 Intel Corporation +# String that appears before the version number +CONFIG_RTE_VER_PREFIX="DPDK" +# Version information completed when this file is processed for a build +CONFIG_RTE_VER_YEAR=19 +CONFIG_RTE_VER_MONTH=11 +CONFIG_RTE_VER_MINOR=1 +CONFIG_RTE_VER_SUFFIX="" +CONFIG_RTE_VER_RELEASE=99 + # RTE_EXEC_ENV values are the directories in mk/exec-env/ +CONFIG_RTE_EXEC_ENV="linuxapp" +# RTE_ARCH values are architecture we compile for. directories in mk/arch/ +CONFIG_RTE_ARCH="arm64" +# machine can define specific variables or action for a specific board +# RTE_MACHINE values are architecture we compile for. directories in mk/machine/ +CONFIG_RTE_MACHINE="armv8a" +# The compiler we use. +# RTE_TOOLCHAIN values are architecture we compile for. directories in mk/toolchain/ +CONFIG_RTE_TOOLCHAIN="gcc" +# Use intrinsics or assembly code for key routines +CONFIG_RTE_FORCE_INTRINSICS=y +# Machine forces strict alignment constraints. +CONFIG_RTE_ARCH_STRICT_ALIGN=n +# Enable link time optimization +CONFIG_RTE_ENABLE_LTO=n +# Compile to share library +CONFIG_RTE_BUILD_SHARED_LIB=n +# Use newest code breaking previous ABI +CONFIG_RTE_NEXT_ABI=n +# Machine's cache line size +CONFIG_RTE_CACHE_LINE_SIZE=128 +# Memory model +CONFIG_RTE_USE_C11_MEM_MODEL=y +# Compile Environment Abstraction Layer +CONFIG_RTE_LIBRTE_EAL=y +CONFIG_RTE_MAX_LCORE=256 +CONFIG_RTE_MAX_NUMA_NODES=8 +CONFIG_RTE_MAX_HEAPS=32 +CONFIG_RTE_MAX_MEMSEG_LISTS=64 +# each memseg list will be limited to either RTE_MAX_MEMSEG_PER_LIST pages +# or RTE_MAX_MEM_MB_PER_LIST megabytes worth of memory, whichever is smaller +CONFIG_RTE_MAX_MEMSEG_PER_LIST=8192 +CONFIG_RTE_MAX_MEM_MB_PER_LIST=32768 +# a "type" is a combination of page size and NUMA node. total number of memseg +# lists per type will be limited to either RTE_MAX_MEMSEG_PER_TYPE pages (split +# over multiple lists of RTE_MAX_MEMSEG_PER_LIST pages), or +# RTE_MAX_MEM_MB_PER_TYPE megabytes of memory (split over multiple lists of +# RTE_MAX_MEM_MB_PER_LIST), whichever is smaller +CONFIG_RTE_MAX_MEMSEG_PER_TYPE=32768 +CONFIG_RTE_MAX_MEM_MB_PER_TYPE=131072 +# global maximum usable amount of VA, in megabytes +CONFIG_RTE_MAX_MEM_MB=524288 +CONFIG_RTE_MAX_MEMZONE=2560 +CONFIG_RTE_MAX_TAILQ=32 +CONFIG_RTE_ENABLE_ASSERT=n +CONFIG_RTE_LOG_DP_LEVEL=RTE_LOG_INFO +CONFIG_RTE_LOG_HISTORY=256 +CONFIG_RTE_BACKTRACE=y +CONFIG_RTE_LIBEAL_USE_HPET=n +CONFIG_RTE_EAL_ALWAYS_PANIC_ON_ERROR=n +CONFIG_RTE_EAL_IGB_UIO=n +CONFIG_RTE_EAL_VFIO=y +CONFIG_RTE_MAX_VFIO_GROUPS=64 +CONFIG_RTE_MAX_VFIO_CONTAINERS=64 +CONFIG_RTE_MALLOC_DEBUG=n +CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=y +CONFIG_RTE_USE_LIBBSD=n +# Recognize/ignore architecture we compile for. AVX/AVX512 CPU flags for performance/power testing. +# AVX512 is marked as experimental for now, will enable it after enough +# field test and possible optimization. +CONFIG_RTE_ENABLE_AVX=y +CONFIG_RTE_ENABLE_AVX512=n +# Use ARM LSE ATOMIC instructions +CONFIG_RTE_ARM_FEATURE_ATOMICS=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 architecture we compile for. PCI library +CONFIG_RTE_LIBRTE_PCI=y +# Compile architecture we compile for. 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=128 +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 +CONFIG_RTE_ETHDEV_PROFILE_WITH_VTUNE=n +# Turn off Tx preparation stage +# Warning: rte_eth_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 +# Common libraries, before Bus/PMDs +CONFIG_RTE_LIBRTE_COMMON_DPAAX=n +# Compile architecture we compile for. Intel FPGA bus +CONFIG_RTE_LIBRTE_IFPGA_BUS=n +# Compile PCI bus driver +CONFIG_RTE_LIBRTE_PCI_BUS=y +# Compile architecture we compile for. vdev bus +CONFIG_RTE_LIBRTE_VDEV_BUS=y +# Compile ARK PMD +CONFIG_RTE_LIBRTE_ARK_PMD=n +CONFIG_RTE_LIBRTE_ARK_PAD_TX=y +CONFIG_RTE_LIBRTE_ARK_DEBUG_RX=n +CONFIG_RTE_LIBRTE_ARK_DEBUG_TX=n +CONFIG_RTE_LIBRTE_ARK_DEBUG_STATS=n +CONFIG_RTE_LIBRTE_ARK_DEBUG_TRACE=n +# Compile Aquantia Atlantic PMD driver +CONFIG_RTE_LIBRTE_ATLANTIC_PMD=n +# Compile AMD PMD +CONFIG_RTE_LIBRTE_AXGBE_PMD=n +CONFIG_RTE_LIBRTE_AXGBE_PMD_DEBUG=n +# Compile burst-oriented Broadcom PMD driver +CONFIG_RTE_LIBRTE_BNX2X_PMD=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 Broadcom BNXT PMD driver +CONFIG_RTE_LIBRTE_BNXT_PMD=n +# Compile burst-oriented Chelsio Terminator (CXGBE) PMD +CONFIG_RTE_LIBRTE_CXGBE_PMD=n +# Compile burst-oriented NXP PFE PMD driver +CONFIG_RTE_LIBRTE_PFE_PMD=n +# NXP DPAA Bus +CONFIG_RTE_LIBRTE_DPAA_BUS=n +CONFIG_RTE_LIBRTE_DPAA_MEMPOOL=n +CONFIG_RTE_LIBRTE_DPAA_PMD=n +CONFIG_RTE_LIBRTE_DPAA_HWDEBUG=n +# Compile NXP DPAA2 FSL-MC Bus +CONFIG_RTE_LIBRTE_FSLMC_BUS=n +# Compile Support Libraries for NXP DPAA2 +CONFIG_RTE_LIBRTE_DPAA2_MEMPOOL=n +CONFIG_RTE_LIBRTE_DPAA2_USE_PHYS_IOVA=y +# Compile burst-oriented NXP DPAA2 PMD driver +CONFIG_RTE_LIBRTE_DPAA2_PMD=n +CONFIG_RTE_LIBRTE_DPAA2_DEBUG_DRIVER=n +# Compile NXP ENETC PMD Driver +CONFIG_RTE_LIBRTE_ENETC_PMD=n +# Compile burst-oriented Amazon ENA PMD driver +CONFIG_RTE_LIBRTE_ENA_PMD=n +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_COM_DEBUG=n +# Compile burst-oriented Cisco ENIC PMD driver +CONFIG_RTE_LIBRTE_ENIC_PMD=n +# Compile burst-oriented IGB & EM PMD drivers +CONFIG_RTE_LIBRTE_EM_PMD=n +CONFIG_RTE_LIBRTE_IGB_PMD=y +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_PF_DISABLE_STRIP_CRC=n +# Compile burst-oriented HINIC PMD driver +CONFIG_RTE_LIBRTE_HINIC_PMD=n +# Compile burst-oriented HNS3 PMD driver +CONFIG_RTE_LIBRTE_HNS3_PMD=n +# Compile burst-oriented IXGBE PMD driver +CONFIG_RTE_LIBRTE_IXGBE_PMD=y +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_PF_DISABLE_STRIP_CRC=n +CONFIG_RTE_IXGBE_INC_VECTOR=y +CONFIG_RTE_LIBRTE_IXGBE_BYPASS=n +# Compile burst-oriented I40E PMD driver +CONFIG_RTE_LIBRTE_I40E_PMD=y +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_RX_ALLOW_BULK_ALLOC=y +CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=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_VM=4 +# Compile burst-oriented FM10K PMD +CONFIG_RTE_LIBRTE_FM10K_PMD=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_RX_OLFLAGS_ENABLE=y +CONFIG_RTE_LIBRTE_FM10K_INC_VECTOR=y +# Compile burst-oriented ICE PMD driver +CONFIG_RTE_LIBRTE_ICE_PMD=n +CONFIG_RTE_LIBRTE_ICE_DEBUG_RX=n +CONFIG_RTE_LIBRTE_ICE_DEBUG_TX=n +CONFIG_RTE_LIBRTE_ICE_DEBUG_TX_FREE=n +CONFIG_RTE_LIBRTE_ICE_RX_ALLOW_BULK_ALLOC=y +CONFIG_RTE_LIBRTE_ICE_16BYTE_RX_DESC=n +# Compile burst-oriented IAVF PMD driver +CONFIG_RTE_LIBRTE_IAVF_PMD=n +CONFIG_RTE_LIBRTE_IAVF_DEBUG_TX=n +CONFIG_RTE_LIBRTE_IAVF_DEBUG_TX_FREE=n +CONFIG_RTE_LIBRTE_IAVF_DEBUG_RX=n +CONFIG_RTE_LIBRTE_IAVF_DEBUG_DUMP_DESC=n +CONFIG_RTE_LIBRTE_IAVF_16BYTE_RX_DESC=n +# Compile burst-oriented IPN3KE PMD driver +CONFIG_RTE_LIBRTE_IPN3KE_PMD=n +# Compile burst-oriented Mellanox ConnectX-3 (MLX4) PMD +CONFIG_RTE_LIBRTE_MLX4_PMD=n +CONFIG_RTE_LIBRTE_MLX4_DEBUG=n +# Compile burst-oriented Mellanox ConnectX-4, ConnectX-5, +# ConnectX-6 & BlueField (MLX5) PMD +CONFIG_RTE_LIBRTE_MLX5_PMD=n +CONFIG_RTE_LIBRTE_MLX5_DEBUG=n +# Linking method for mlx4/5 dependency on ibverbs and related libraries +# Default linking is dynamic by linker. +# Other options are: dynamic by dlopen at run-time, or statically embedded. +CONFIG_RTE_IBVERBS_LINK_DLOPEN=n +CONFIG_RTE_IBVERBS_LINK_STATIC=n +# Compile burst-oriented Netronome NFP PMD driver +CONFIG_RTE_LIBRTE_NFP_PMD=n +CONFIG_RTE_LIBRTE_NFP_DEBUG_TX=n +CONFIG_RTE_LIBRTE_NFP_DEBUG_RX=n +# QLogic 10G/25G/40G/50G/100G PMD +CONFIG_RTE_LIBRTE_QEDE_PMD=n +CONFIG_RTE_LIBRTE_QEDE_DEBUG_TX=n +CONFIG_RTE_LIBRTE_QEDE_DEBUG_RX=n +#Provides abs path/name of architecture we compile for. firmware file. +#Empty string denotes driver will use default firmware +CONFIG_RTE_LIBRTE_QEDE_FW="" +# Compile burst-oriented Solarflare libefx-based PMD +CONFIG_RTE_LIBRTE_SFC_EFX_PMD=n +CONFIG_RTE_LIBRTE_SFC_EFX_DEBUG=n +# Compile software PMD backed by SZEDATA2 device +CONFIG_RTE_LIBRTE_PMD_SZEDATA2=n +# Compile software PMD backed by NFB device +CONFIG_RTE_LIBRTE_NFB_PMD=n +# Compile burst-oriented Cavium Thunderx NICVF PMD driver +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD=n +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_RX=n +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_TX=n +# Compile burst-oriented Cavium LiquidIO PMD driver +CONFIG_RTE_LIBRTE_LIO_PMD=n +CONFIG_RTE_LIBRTE_LIO_DEBUG_RX=n +CONFIG_RTE_LIBRTE_LIO_DEBUG_TX=n +CONFIG_RTE_LIBRTE_LIO_DEBUG_MBOX=n +CONFIG_RTE_LIBRTE_LIO_DEBUG_REGS=n +# Compile burst-oriented Cavium OCTEONTX network PMD driver +CONFIG_RTE_LIBRTE_OCTEONTX_PMD=n +# Compile burst-oriented Marvell OCTEON TX2 network PMD driver +CONFIG_RTE_LIBRTE_OCTEONTX2_PMD=n +# Compile WRS accelerated virtual port (AVP) guest PMD driver +CONFIG_RTE_LIBRTE_AVP_PMD=n +CONFIG_RTE_LIBRTE_AVP_DEBUG_RX=n +CONFIG_RTE_LIBRTE_AVP_DEBUG_TX=n +CONFIG_RTE_LIBRTE_AVP_DEBUG_BUFFERS=n +# Compile burst-oriented VIRTIO PMD driver +CONFIG_RTE_LIBRTE_VIRTIO_PMD=y +CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_RX=n +CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_TX=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=n +CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_RX=n +CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX=n +CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX_FREE=n +# Compile software PMD backed by AF_PACKET sockets (Linux only) +CONFIG_RTE_LIBRTE_PMD_AF_PACKET=n +# Compile software PMD backed by AF_XDP sockets (Linux only) +CONFIG_RTE_LIBRTE_PMD_AF_XDP=n +# Compile Memory Interface PMD driver (Linux only) +CONFIG_RTE_LIBRTE_PMD_MEMIF=n +# Compile link bonding PMD library +CONFIG_RTE_LIBRTE_PMD_BOND=n +CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB=n +CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB_L1=n +# Compile fail-safe PMD +CONFIG_RTE_LIBRTE_PMD_FAILSAFE=y +# Compile Marvell PMD driver +CONFIG_RTE_LIBRTE_MVPP2_PMD=n +# Compile Marvell MVNETA PMD driver +CONFIG_RTE_LIBRTE_MVNETA_PMD=n +# Compile support for VMBus library +CONFIG_RTE_LIBRTE_VMBUS=n +# Compile native PMD for Hyper-V/Azure +CONFIG_RTE_LIBRTE_NETVSC_PMD=n +CONFIG_RTE_LIBRTE_NETVSC_DEBUG_RX=n +CONFIG_RTE_LIBRTE_NETVSC_DEBUG_TX=n +CONFIG_RTE_LIBRTE_NETVSC_DEBUG_DUMP=n +# Compile virtual device driver for NetVSC on Hyper-V/Azure +CONFIG_RTE_LIBRTE_VDEV_NETVSC_PMD=n +# Compile null PMD +CONFIG_RTE_LIBRTE_PMD_NULL=n +# Compile software PMD backed by PCAP files +CONFIG_RTE_LIBRTE_PMD_PCAP=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 SOFTNIC PMD +CONFIG_RTE_LIBRTE_PMD_SOFTNIC=n +# Compile architecture we compile for. TAP PMD +# It is enabled by default for Linux only. +CONFIG_RTE_LIBRTE_PMD_TAP=y +# Do prefetch of packet data within PMD driver receive function +CONFIG_RTE_PMD_PACKET_PREFETCH=y +# Compile generic wireless base band device library +# EXPERIMENTAL: API may change without prior notice +CONFIG_RTE_LIBRTE_BBDEV=n +CONFIG_RTE_LIBRTE_BBDEV_DEBUG=n +CONFIG_RTE_BBDEV_MAX_DEVS=128 +CONFIG_RTE_BBDEV_OFFLOAD_COST=y +CONFIG_RTE_BBDEV_SDK_AVX2=n +CONFIG_RTE_BBDEV_SDK_AVX512=n +# Compile PMD for NULL bbdev device +CONFIG_RTE_LIBRTE_PMD_BBDEV_NULL=n +# Compile PMD for turbo software bbdev device +CONFIG_RTE_LIBRTE_PMD_BBDEV_TURBO_SW=n +# Compile PMD for Intel FPGA LTE FEC bbdev device +CONFIG_RTE_LIBRTE_PMD_BBDEV_FPGA_LTE_FEC=n +# Compile generic crypto device library +CONFIG_RTE_LIBRTE_CRYPTODEV=n +CONFIG_RTE_CRYPTO_MAX_DEVS=64 +# Compile PMD for ARMv8 Crypto device +CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO=n +CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO_DEBUG=n +# Compile NXP CAAM JR crypto Driver +CONFIG_RTE_LIBRTE_PMD_CAAM_JR=n +CONFIG_RTE_LIBRTE_PMD_CAAM_JR_BE=n +# Compile NXP DPAA2 crypto sec driver for CAAM HW +CONFIG_RTE_LIBRTE_PMD_DPAA2_SEC=n +# NXP DPAA caam - crypto driver +CONFIG_RTE_LIBRTE_PMD_DPAA_SEC=n +CONFIG_RTE_LIBRTE_DPAA_MAX_CRYPTODEV=4 +# Compile PMD for Cavium OCTEON TX crypto device +CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO=n +# Compile PMD for Marvell OCTEON TX2 crypto device +CONFIG_RTE_LIBRTE_PMD_OCTEONTX2_CRYPTO=n +# Compile PMD for QuickAssist based devices - see docs for details +CONFIG_RTE_LIBRTE_PMD_QAT=n +CONFIG_RTE_LIBRTE_PMD_QAT_SYM=n +CONFIG_RTE_LIBRTE_PMD_QAT_ASYM=n +# Max. number of QuickAssist devices, which can be detected and attached +CONFIG_RTE_PMD_QAT_MAX_PCI_DEVICES=48 +CONFIG_RTE_PMD_QAT_COMP_IM_BUFFER_SIZE=65536 +# Compile PMD for virtio crypto devices +CONFIG_RTE_LIBRTE_PMD_VIRTIO_CRYPTO=n +# Number of maximum virtio crypto devices +CONFIG_RTE_MAX_VIRTIO_CRYPTO=32 +# Compile PMD for AESNI backed device +CONFIG_RTE_LIBRTE_PMD_AESNI_MB=n +# Compile PMD for Software backed device +CONFIG_RTE_LIBRTE_PMD_OPENSSL=n +# Compile PMD for AESNI GCM device +CONFIG_RTE_LIBRTE_PMD_AESNI_GCM=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 +# Compile PMD for ZUC device +CONFIG_RTE_LIBRTE_PMD_ZUC=n +# Compile PMD for Crypto Scheduler device +CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER=n +# Compile PMD for NULL Crypto device +CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO=n +# Compile PMD for AMD CCP crypto device +CONFIG_RTE_LIBRTE_PMD_CCP=n +# Compile PMD for Marvell Crypto device +CONFIG_RTE_LIBRTE_PMD_MVSAM_CRYPTO=n +# Compile PMD for NITROX crypto device +CONFIG_RTE_LIBRTE_PMD_NITROX=n +# Compile generic security library +CONFIG_RTE_LIBRTE_SECURITY=n +# Compile generic compression device library +CONFIG_RTE_LIBRTE_COMPRESSDEV=n +CONFIG_RTE_COMPRESS_MAX_DEVS=64 +# Compile compressdev unit test +CONFIG_RTE_COMPRESSDEV_TEST=n +# Compile PMD for Octeontx ZIPVF compression device +CONFIG_RTE_LIBRTE_PMD_OCTEONTX_ZIPVF=n +# Compile PMD for ISA-L compression device +CONFIG_RTE_LIBRTE_PMD_ISAL=n +# Compile PMD for ZLIB compression device +CONFIG_RTE_LIBRTE_PMD_ZLIB=n +# Compile generic event device library +CONFIG_RTE_LIBRTE_EVENTDEV=n +CONFIG_RTE_LIBRTE_EVENTDEV_DEBUG=n +CONFIG_RTE_EVENT_MAX_DEVS=16 +CONFIG_RTE_EVENT_MAX_QUEUES_PER_DEV=64 +CONFIG_RTE_EVENT_TIMER_ADAPTER_NUM_MAX=32 +CONFIG_RTE_EVENT_ETH_INTR_RING_SIZE=1024 +CONFIG_RTE_EVENT_CRYPTO_ADAPTER_MAX_INSTANCE=32 +CONFIG_RTE_EVENT_ETH_TX_ADAPTER_MAX_INSTANCE=32 +# Compile PMD for skeleton event device +CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV=n +CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV_DEBUG=n +# Compile PMD for software event device +CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV=n +# Compile PMD for distributed software event device +CONFIG_RTE_LIBRTE_PMD_DSW_EVENTDEV=n +# Compile PMD for octeontx sso event device +CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF=n +# Compile PMD for octeontx2 sso event device +CONFIG_RTE_LIBRTE_PMD_OCTEONTX2_EVENTDEV=n +# Compile PMD for OPDL event device +CONFIG_RTE_LIBRTE_PMD_OPDL_EVENTDEV=n +# Compile PMD for NXP DPAA event device +CONFIG_RTE_LIBRTE_PMD_DPAA_EVENTDEV=n +# Compile PMD for NXP DPAA2 event device +CONFIG_RTE_LIBRTE_PMD_DPAA2_EVENTDEV=n +# Compile raw device support +# EXPERIMENTAL: API may change without prior notice +CONFIG_RTE_LIBRTE_RAWDEV=n +CONFIG_RTE_RAWDEV_MAX_DEVS=64 +CONFIG_RTE_LIBRTE_PMD_SKELETON_RAWDEV=n +# Compile PMD for NXP DPAA2 CMDIF raw device +CONFIG_RTE_LIBRTE_PMD_DPAA2_CMDIF_RAWDEV=n +# Compile PMD for NXP DPAA2 QDMA raw device +CONFIG_RTE_LIBRTE_PMD_DPAA2_QDMA_RAWDEV=n +# Compile PMD for Intel FPGA raw device +CONFIG_RTE_LIBRTE_PMD_IFPGA_RAWDEV=n +# Compile PMD for Intel IOAT raw device +CONFIG_RTE_LIBRTE_PMD_IOAT_RAWDEV=n +# Compile PMD for octeontx2 DMA raw device +CONFIG_RTE_LIBRTE_PMD_OCTEONTX2_DMA_RAWDEV=n +# Compile PMD for NTB raw device +CONFIG_RTE_LIBRTE_PMD_NTB_RAWDEV=n +# Compile librte_ring +CONFIG_RTE_LIBRTE_RING=y +# Compile librte_stack +CONFIG_RTE_LIBRTE_STACK=y +# Compile librte_mempool +CONFIG_RTE_LIBRTE_MEMPOOL=y +CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=512 +CONFIG_RTE_LIBRTE_MEMPOOL_DEBUG=n +# Compile Mempool drivers +CONFIG_RTE_DRIVER_MEMPOOL_BUCKET=y +CONFIG_RTE_DRIVER_MEMPOOL_BUCKET_SIZE_KB=64 +CONFIG_RTE_DRIVER_MEMPOOL_RING=y +CONFIG_RTE_DRIVER_MEMPOOL_STACK=y +# Compile PMD for octeontx fpa mempool device +CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL=n +# Compile PMD for octeontx2 npa mempool device +CONFIG_RTE_LIBRTE_OCTEONTX2_MEMPOOL=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=n +CONFIG_RTE_LIBRTE_TIMER_DEBUG=n +# Compile librte_cfgfile +CONFIG_RTE_LIBRTE_CFGFILE=n +# 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=n +# Compile librte_member +CONFIG_RTE_LIBRTE_MEMBER=y +# Compile librte_jobstats +CONFIG_RTE_LIBRTE_JOBSTATS=n +# Compile architecture we compile for. device metrics library +CONFIG_RTE_LIBRTE_METRICS=y +# Compile architecture we compile for. bitrate statistics library +CONFIG_RTE_LIBRTE_BITRATE=y +# Compile architecture we compile for. latency statistics library +CONFIG_RTE_LIBRTE_LATENCY_STATS=y +# Compile librte_telemetry +CONFIG_RTE_LIBRTE_TELEMETRY=n +# Compile librte_rcu +CONFIG_RTE_LIBRTE_RCU=n +CONFIG_RTE_LIBRTE_RCU_DEBUG=n +# Compile librte_rib +CONFIG_RTE_LIBRTE_RIB=n +# Compile librte_fib +CONFIG_RTE_LIBRTE_FIB=n +CONFIG_RTE_LIBRTE_FIB_DEBUG=n +# Compile librte_lpm +CONFIG_RTE_LIBRTE_LPM=n +CONFIG_RTE_LIBRTE_LPM_DEBUG=n +# Compile librte_acl +CONFIG_RTE_LIBRTE_ACL=n +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 GRO library +CONFIG_RTE_LIBRTE_GRO=y +# Compile GSO library +CONFIG_RTE_LIBRTE_GSO=y +# Compile librte_meter +CONFIG_RTE_LIBRTE_METER=y +# Compile librte_classify +CONFIG_RTE_LIBRTE_FLOW_CLASSIFY=n +# Compile librte_sched +CONFIG_RTE_LIBRTE_SCHED=n +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 architecture we compile for. distributor library +CONFIG_RTE_LIBRTE_DISTRIBUTOR=n +# Compile architecture we compile for. reorder library +CONFIG_RTE_LIBRTE_REORDER=n +# Compile librte_port +CONFIG_RTE_LIBRTE_PORT=n +CONFIG_RTE_PORT_STATS_COLLECT=n +CONFIG_RTE_PORT_PCAP=n +# Compile librte_table +CONFIG_RTE_LIBRTE_TABLE=n +CONFIG_RTE_TABLE_STATS_COLLECT=n +# Compile librte_pipeline +CONFIG_RTE_LIBRTE_PIPELINE=n +CONFIG_RTE_PIPELINE_STATS_COLLECT=n +# Compile librte_kni +CONFIG_RTE_LIBRTE_KNI=n +CONFIG_RTE_LIBRTE_PMD_KNI=n +CONFIG_RTE_KNI_KMOD=n +CONFIG_RTE_KNI_PREEMPT_DEFAULT=y +# Compile architecture we compile for. pdump library +CONFIG_RTE_LIBRTE_PDUMP=y +# Compile vhost user library +CONFIG_RTE_LIBRTE_VHOST=y +CONFIG_RTE_LIBRTE_VHOST_NUMA=y +CONFIG_RTE_LIBRTE_VHOST_DEBUG=n +# Compile vhost PMD +# To compile, CONFIG_RTE_LIBRTE_VHOST should be enabled. +CONFIG_RTE_LIBRTE_PMD_VHOST=y +# Compile IFC driver +# To compile, CONFIG_RTE_LIBRTE_VHOST and CONFIG_RTE_EAL_VFIO +# should be enabled. +CONFIG_RTE_LIBRTE_IFC_PMD=n +# Compile librte_bpf +CONFIG_RTE_LIBRTE_BPF=n +# allow load BPF from ELF files (requires libelf) +CONFIG_RTE_LIBRTE_BPF_ELF=n +# Compile librte_ipsec +CONFIG_RTE_LIBRTE_IPSEC=n +# Compile architecture we compile for. test application +CONFIG_RTE_APP_TEST=y +CONFIG_RTE_APP_TEST_RESOURCE_TAR=n +# Compile architecture we compile for. procinfo application +CONFIG_RTE_PROC_INFO=n +# Compile architecture we compile for. PMD test application +CONFIG_RTE_TEST_PMD=n +CONFIG_RTE_TEST_PMD_RECORD_CORE_CYCLES=n +CONFIG_RTE_TEST_PMD_RECORD_BURST_STATS=n +# Compile architecture we compile for. bbdev test application +CONFIG_RTE_TEST_BBDEV=n +# Compile architecture we compile for. compression performance application +CONFIG_RTE_APP_COMPRESS_PERF=n +# Compile architecture we compile for. crypto performance application +CONFIG_RTE_APP_CRYPTO_PERF=n +# Compile architecture we compile for. eventdev application +CONFIG_RTE_APP_EVENTDEV=n +CONFIG_RTE_EXEC_ENV_LINUX=y +CONFIG_RTE_EXEC_ENV_LINUXAPP=y +CONFIG_RTE_LIBRTE_VHOST_POSTCOPY=n +# Common libraries, before Bus/PMDs +# NXP DPAA BUS and drivers +# NXP FSLMC BUS and DPAA2 drivers +# NXP ENETC PMD Driver +# HINIC PMD driver +# Hisilicon HNS3 PMD driver +# Compile PMD for Intel FPGA raw device +# To compile, CONFIG_RTE_EAL_VFIO should be enabled. +CONFIG_RTE_ARCH_ARM64=y +CONFIG_RTE_ARCH_64=y +# Maximum available cache line size in arm64 implementations. +# Setting to maximum available cache line size in generic config +# to address minimum DMA alignment across all arm64 implementations. +# Accelarate rte_memcpy. Be sure to run unit test (memcpy_perf_autotest) +# to determine architecture we compile for. best threshold in code. Refer to notes in source file +# (lib/librte_eal/common/include/arch/arm/rte_memcpy_64.h) for more info. +CONFIG_RTE_ARCH_ARM64_MEMCPY=n +#CONFIG_RTE_ARM64_MEMCPY_ALIGNED_THRESHOLD=2048 +#CONFIG_RTE_ARM64_MEMCPY_UNALIGNED_THRESHOLD=512 +# Leave below RTE_ARM64_MEMCPY_xxx options commented out, unless there're +# strong reasons. +#CONFIG_RTE_ARM64_MEMCPY_SKIP_GCC_VER_CHECK=n +#CONFIG_RTE_ARM64_MEMCPY_ALIGN_MASK=0xF +#CONFIG_RTE_ARM64_MEMCPY_STRICT_ALIGN=n +# NXP PFE PMD Driver +CONFIG_RTE_TOOLCHAIN_GCC=y +CONFIG_RTE_LIBRTE_PMD_XENVIRT=n diff --git a/SOURCES/configlib.sh b/SOURCES/configlib.sh new file mode 100644 index 0000000..a1049b3 --- /dev/null +++ b/SOURCES/configlib.sh @@ -0,0 +1,105 @@ +# Copyright (C) 2017, Red Hat, Inc. +# +# Core configuration file library. + +# Configurations are determined by sha values. The way to determine is by +# the special text: +# $FILE_COMMENT_TYPE -*- cfg-sha: $SHA256 -*- + +export LC_ALL=C + +# check required binaries +__check_reqd_binaries() { + local BIN __binaries=("egrep" "sort" "sha256sum" "sed") + for BIN in $__binaries; do + if ! type -P $BIN >/dev/null 2>&1; then + echo "Binary $BIN not found. Please install." + exit 1 + fi + done +} + +# Calculates a sha from a file +# The algorithm for generating a sha from a config is thus: +# +# 1. Remove all comment lines and blank lines +# 2. Sort the content +# 3. generate the sha-256 sum +# +# From a script perspective, this means: +# egrep -v ^\# %file% | egrep -v ^$ | sort -u | sha256sum +# +# Params: +# $1 = output variable +# $2 = file to use to calculate the shasum +# $3 = file comment type (defaults to # if unspecified) +calc_sha() { + __check_reqd_binaries + + if [ "$1" == "" ]; then + echo "Please pass in a storage variable." + return 1 + fi + + local __resultvar=$1 + __retval=1 + shift + + local __file=$1 + local cmnt=${2:-#} + + if [ -f "$__file" ]; then + local __shasum=$(egrep -v ^"$cmnt" "$__file" | egrep -v ^$ | sort -u | sha256sum -t | cut -d" " -f1) + eval $__resultvar="'$__shasum'" + __retval=0 + fi + return $__retval +} + +# Retrieves a sha stored in a file +# Param: +# $1 = output variable +# $2 = file to use to calculate the shasum +# $3 = file comment type (defaults to # if unspecified) +retr_sha() { + __check_reqd_binaries + + if [ "$1" == "" ]; then + echo "Please pass in a storage variable." + return 1 + fi + + local __resultvar=$1 + __retval=1 + shift + + local __file=$1 + local cmnt=${2:-#} + + if [ -f "$__file" ]; then + if grep -q "$cmnt -\*- cfg-sha:" "$__file"; then + local __shasum=$(grep "$cmnt -\*- cfg-sha:" "$__file" | sed -e "s@$cmnt -\*- cfg-sha: @@" | cut -d" " -f1) + eval $__resultvar="'$__shasum'" + __retval=0 + fi + fi + return $__retval +} + + +# Set a config value +# set_conf dpdk_build_tree parameter value +# dpdk_build_tree is the directory where the .config lives +# parameter is the config parameter +# value is the value to set for the config parameter +set_conf() { + c="$1/.config" + shift + + if grep -q "$1" "$c"; then + sed -i "s:^$1=.*$:$1=$2:g" $c + else + echo $1=$2 >> "$c" + fi +} + diff --git a/SOURCES/openvswitch-2.13.0.patch b/SOURCES/openvswitch-2.13.0.patch new file mode 100644 index 0000000..930e9e4 --- /dev/null +++ b/SOURCES/openvswitch-2.13.0.patch @@ -0,0 +1,1615 @@ +From 4ee0f6af9e601cbb5f69a486526d1011314bbfed Mon Sep 17 00:00:00 2001 +From: Ben Pfaff +Date: Thu, 19 Mar 2020 17:53:10 -0700 +Subject: [PATCH 01/15] ofproto-dpif-xlate: Fix recirculation when in_port is + OFPP_CONTROLLER. + +[ upstream commit c5a910dd92ecbad24f86b4c59b4ff8105b5149fd ] + +Recirculation usually requires finding the pre-recirculation input port. +Packets sent by the controller, with in_port of OFPP_CONTROLLER or +OFPP_NONE, do not have a real input port data structure, only a port +number. The code in xlate_lookup_ofproto_() mishandled this case, +failing to return the ofproto data structure. This commit fixes the +problem and adds a test to guard against regression. + +Reported-by: Numan Siddique +Reported-at: https://mail.openvswitch.org/pipermail/ovs-dev/2020-March/368642.html +Tested-by: Numan Siddique +Acked-by: Numan Siddique +Signed-off-by: Ben Pfaff + +Resolves: #1775160 +Signed-off-by: Numan Siddique +--- + ofproto/ofproto-dpif-xlate.c | 25 +++++++++++++++++++++---- + tests/ofproto-dpif.at | 30 ++++++++++++++++++++++++++++++ + 2 files changed, 51 insertions(+), 4 deletions(-) + +diff --git a/ofproto/ofproto-dpif-xlate.c b/ofproto/ofproto-dpif-xlate.c +index 4407f9c97a..54cfbfbdff 100644 +--- a/ofproto/ofproto-dpif-xlate.c ++++ b/ofproto/ofproto-dpif-xlate.c +@@ -1516,15 +1516,32 @@ xlate_lookup_ofproto_(const struct dpif_backer *backer, + return NULL; + } + +- /* If recirculation was initiated due to bond (in_port = OFPP_NONE) +- * then frozen state is static and xport_uuid is not defined, so xport +- * cannot be restored from frozen state. */ +- if (recirc_id_node->state.metadata.in_port != OFPP_NONE) { ++ ofp_port_t in_port = recirc_id_node->state.metadata.in_port; ++ if (in_port != OFPP_NONE && in_port != OFPP_CONTROLLER) { + struct uuid xport_uuid = recirc_id_node->state.xport_uuid; + xport = xport_lookup_by_uuid(xcfg, &xport_uuid); + if (xport && xport->xbridge && xport->xbridge->ofproto) { + goto out; + } ++ } else { ++ /* OFPP_NONE and OFPP_CONTROLLER are not real ports. They indicate ++ * that the packet originated from the controller via an OpenFlow ++ * "packet-out". The right thing to do is to find just the ++ * ofproto. There is no xport, which is OK. ++ * ++ * OFPP_NONE can also indicate that a bond caused recirculation. */ ++ struct uuid uuid = recirc_id_node->state.ofproto_uuid; ++ const struct xbridge *bridge = xbridge_lookup_by_uuid(xcfg, &uuid); ++ if (bridge && bridge->ofproto) { ++ if (errorp) { ++ *errorp = NULL; ++ } ++ *xportp = NULL; ++ if (ofp_in_port) { ++ *ofp_in_port = in_port; ++ } ++ return bridge->ofproto; ++ } + } + } + +diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at +index ff1cc93707..d444cf0844 100644 +--- a/tests/ofproto-dpif.at ++++ b/tests/ofproto-dpif.at +@@ -5171,6 +5171,36 @@ AT_CHECK_UNQUOTED([tail -1 stdout], [0], [Datapath actions: 2 + OVS_VSWITCHD_STOP + AT_CLEANUP + ++# Checks for regression against a bug in which OVS dropped packets ++# with in_port=CONTROLLER when they were recirculated (because ++# CONTROLLER isn't a real port and could not be looked up). ++AT_SETUP([ofproto-dpif - packet-out recirculation]) ++OVS_VSWITCHD_START ++add_of_ports br0 1 2 ++ ++AT_DATA([flows.txt], [dnl ++table=0 ip actions=mod_dl_dst:83:83:83:83:83:83,ct(table=1) ++table=1 ip actions=ct(commit),output:2 ++]) ++AT_CHECK([ovs-ofctl add-flows br0 flows.txt]) ++ ++packet=ffffffffffff00102030405008004500001c00000000401100000a000002ffffffff0035111100080000 ++AT_CHECK([ovs-ofctl packet-out br0 "in_port=controller packet=$packet actions=table"]) ++ ++# Dumps out the flow table, extracts the number of packets that have gone ++# through the (single) flow in table 1, and returns success if it's exactly 1. ++# ++# If this remains 0, then the recirculation isn't working properly since the ++# packet never goes through flow in table 1. ++check_flows () { ++ n=$(ovs-ofctl dump-flows br0 table=1 | sed -n 's/.*n_packets=\([[0-9]]\{1,\}\).*/\1/p') ++ echo "n_packets=$n" ++ test "$n" = 1 ++} ++OVS_WAIT_UNTIL([check_flows], [ovs dump-flows br0]) ++ ++OVS_VSWITCHD_STOP ++AT_CLEANUP + + AT_SETUP([ofproto-dpif - debug_slow action]) + OVS_VSWITCHD_START +-- +2.25.1 + + +From 71f25b7920093daa59827a0a4be4095309aec6ff Mon Sep 17 00:00:00 2001 +From: Timothy Redaelli +Date: Thu, 19 Mar 2020 20:05:39 +0100 +Subject: [PATCH 02/15] bugtool: Fix for Python3. + +Currently ovs-bugtool tool doesn't start on Python 3. +This commit fixes ovs-bugtool to make it works on Python 3. + +Replaced StringIO.StringIO with io.BytesIO since the script is +processing binary data. + +Reported-at: https://bugzilla.redhat.com/1809241 +Reported-by: Flavio Leitner +Signed-off-by: Timothy Redaelli +Co-authored-by: William Tu +Signed-off-by: William Tu +(cherry picked from commit 9e6c00bca9af29031d0e160d33174b7ae99b9244) +--- + utilities/bugtool/ovs-bugtool.in | 48 +++++++++++++++++--------------- + 1 file changed, 25 insertions(+), 23 deletions(-) + +diff --git a/utilities/bugtool/ovs-bugtool.in b/utilities/bugtool/ovs-bugtool.in +index e55bfc2ed5..47f3c4629f 100755 +--- a/utilities/bugtool/ovs-bugtool.in ++++ b/utilities/bugtool/ovs-bugtool.in +@@ -33,8 +33,7 @@ + # or func_output(). + # + +-import StringIO +-import commands ++from io import BytesIO + import fcntl + import getopt + import hashlib +@@ -48,7 +47,7 @@ import warnings + import zipfile + from select import select + from signal import SIGTERM +-from subprocess import PIPE, Popen ++from subprocess import PIPE, Popen, check_output + + from xml.dom.minidom import getDOMImplementation, parse + +@@ -348,7 +347,7 @@ def collect_data(): + cap = v['cap'] + if 'cmd_args' in v: + if 'output' not in v.keys(): +- v['output'] = StringIOmtime() ++ v['output'] = BytesIOmtime() + if v['repeat_count'] > 0: + if cap not in process_lists: + process_lists[cap] = [] +@@ -373,20 +372,23 @@ def collect_data(): + if 'filename' in v and v['filename'].startswith('/proc/'): + # proc files must be read into memory + try: +- f = open(v['filename'], 'r') ++ f = open(v['filename'], 'rb') + s = f.read() + f.close() + if check_space(cap, v['filename'], len(s)): +- v['output'] = StringIOmtime(s) ++ v['output'] = BytesIOmtime(s) + except: + pass + elif 'func' in v: + try: + s = v['func'](cap) + except Exception as e: +- s = str(e) ++ s = str(e).encode() + if check_space(cap, k, len(s)): +- v['output'] = StringIOmtime(s) ++ if isinstance(s, str): ++ v['output'] = BytesIOmtime(s.encode()) ++ else: ++ v['output'] = BytesIOmtime(s) + + + def main(argv=None): +@@ -704,7 +706,7 @@ exclude those logs from the archive. + + # permit the user to filter out data + # We cannot use iteritems, since we modify 'data' as we pass through +- for (k, v) in sorted(data.items()): ++ for (k, v) in data.items(): + cap = v['cap'] + if 'filename' in v: + key = k[0] +@@ -721,7 +723,7 @@ exclude those logs from the archive. + + # include inventory + data['inventory.xml'] = {'cap': None, +- 'output': StringIOmtime(make_inventory(data, subdir))} ++ 'output': BytesIOmtime(make_inventory(data, subdir))} + + # create archive + if output_fd == -1: +@@ -782,7 +784,7 @@ def dump_scsi_hosts(cap): + + + def module_info(cap): +- output = StringIO.StringIO() ++ output = BytesIO() + modules = open(PROC_MODULES, 'r') + procs = [] + +@@ -806,7 +808,7 @@ def multipathd_topology(cap): + + + def dp_list(): +- output = StringIO.StringIO() ++ output = BytesIO() + procs = [ProcOutput([OVS_DPCTL, 'dump-dps'], + caps[CAP_NETWORK_STATUS][MAX_TIME], output)] + +@@ -828,7 +830,7 @@ def collect_ovsdb(): + if os.path.isfile(OPENVSWITCH_COMPACT_DB): + os.unlink(OPENVSWITCH_COMPACT_DB) + +- output = StringIO.StringIO() ++ output = BytesIO() + max_time = 5 + procs = [ProcOutput(['ovsdb-tool', 'compact', + OPENVSWITCH_CONF_DB, OPENVSWITCH_COMPACT_DB], +@@ -871,7 +873,7 @@ def fd_usage(cap): + + + def dump_rdac_groups(cap): +- output = StringIO.StringIO() ++ output = BytesIO() + procs = [ProcOutput([MPPUTIL, '-a'], caps[cap][MAX_TIME], output)] + + run_procs([procs]) +@@ -896,7 +898,7 @@ def load_plugins(just_capabilities=False, filter=None): + for node in nodelist: + if node.nodeType == node.TEXT_NODE: + rc += node.data +- return rc.encode() ++ return rc + + def getBoolAttr(el, attr, default=False): + ret = default +@@ -1037,7 +1039,7 @@ def make_tar(subdir, suffix, output_fd, output_file): + s = os.stat(v['filename']) + ti.mtime = s.st_mtime + ti.size = s.st_size +- tf.addfile(ti, open(v['filename'])) ++ tf.addfile(ti, open(v['filename'], 'rb')) + except: + pass + finally: +@@ -1095,12 +1097,12 @@ def make_inventory(inventory, subdir): + s.setAttribute('date', time.strftime('%c')) + s.setAttribute('hostname', platform.node()) + s.setAttribute('uname', ' '.join(platform.uname())) +- s.setAttribute('uptime', commands.getoutput(UPTIME)) ++ s.setAttribute('uptime', check_output(UPTIME).decode()) + document.getElementsByTagName(INVENTORY_XML_ROOT)[0].appendChild(s) + + map(lambda k_v: inventory_entry(document, subdir, k_v[0], k_v[1]), + inventory.items()) +- return document.toprettyxml() ++ return document.toprettyxml().encode() + + + def inventory_entry(document, subdir, k, v): +@@ -1301,7 +1303,7 @@ class ProcOutput(object): + line = self.proc.stdout.readline() + else: + line = self.proc.stdout.read(self.bufsize) +- if line == '': ++ if line == b'': + # process exited + self.proc.stdout.close() + self.status = self.proc.wait() +@@ -1391,13 +1393,13 @@ def get_free_disk_space(path): + return s.f_frsize * s.f_bfree + + +-class StringIOmtime(StringIO.StringIO): +- def __init__(self, buf=''): +- StringIO.StringIO.__init__(self, buf) ++class BytesIOmtime(BytesIO): ++ def __init__(self, buf=b''): ++ BytesIO.__init__(self, buf) + self.mtime = time.time() + + def write(self, s): +- StringIO.StringIO.write(self, s) ++ BytesIO.write(self, s) + self.mtime = time.time() + + +-- +2.25.1 + + +From 914d885061c9f7e7e6e5f921065301e08837e122 Mon Sep 17 00:00:00 2001 +From: Han Zhou +Date: Fri, 28 Feb 2020 18:07:04 -0800 +Subject: [PATCH 03/15] raft-rpc: Fix message format. + +[ upstream commit 78c8011f58daec41ec97440f2e42795699322742 ] + +Signed-off-by: Han Zhou +Signed-off-by: Ben Pfaff + +Resolves: #1836305 +Signed-off-by: Dumitru Ceara +--- + ovsdb/raft-rpc.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/ovsdb/raft-rpc.c b/ovsdb/raft-rpc.c +index 18c83fe9c2..dd14d81091 100644 +--- a/ovsdb/raft-rpc.c ++++ b/ovsdb/raft-rpc.c +@@ -544,8 +544,8 @@ raft_format_install_snapshot_request( + ds_put_format(s, " last_index=%"PRIu64, rq->last_index); + ds_put_format(s, " last_term=%"PRIu64, rq->last_term); + ds_put_format(s, " last_eid="UUID_FMT, UUID_ARGS(&rq->last_eid)); +- ds_put_cstr(s, " last_servers="); + ds_put_format(s, " election_timer=%"PRIu64, rq->election_timer); ++ ds_put_cstr(s, " last_servers="); + + struct hmap servers; + struct ovsdb_error *error = +-- +2.25.1 + + +From 8ff30dfee6cb075e36ed38b77695ff03321ce12b Mon Sep 17 00:00:00 2001 +From: Han Zhou +Date: Fri, 28 Feb 2020 18:07:05 -0800 +Subject: [PATCH 04/15] ovsdb-server: Don't disconnect clients after raft + install_snapshot. + +[ upstream commit f0c8b44c5832c36989fad78927407fc14e64ce46 ] + +When "schema" field is found in read_db(), there can be two cases: +1. There is a schema change in clustered DB and the "schema" is the new one. +2. There is a install_snapshot RPC happened, which caused log compaction on the +server and the next log is just the snapshot, which always constains "schema" +field, even though the schema hasn't been changed. + +The current implementation doesn't handle case 2), and always assume the schema +is changed hence disconnect all clients of the server. It can cause stability +problem when there are big number of clients connected when this happens in +a large scale environment. + +Signed-off-by: Han Zhou +Signed-off-by: Ben Pfaff + +Resolves: #1836305 +Signed-off-by: Dumitru Ceara +--- + ovsdb/ovsdb-server.c | 3 ++- + tests/ovsdb-cluster.at | 56 ++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 58 insertions(+), 1 deletion(-) + +diff --git a/ovsdb/ovsdb-server.c b/ovsdb/ovsdb-server.c +index b6957d7300..d416f1b606 100644 +--- a/ovsdb/ovsdb-server.c ++++ b/ovsdb/ovsdb-server.c +@@ -543,7 +543,8 @@ parse_txn(struct server_config *config, struct db *db, + struct ovsdb_schema *schema, const struct json *txn_json, + const struct uuid *txnid) + { +- if (schema) { ++ if (schema && (!db->db->schema || strcmp(schema->version, ++ db->db->schema->version))) { + /* We're replacing the schema (and the data). Destroy the database + * (first grabbing its storage), then replace it with the new schema. + * The transaction must also include the replacement data. +diff --git a/tests/ovsdb-cluster.at b/tests/ovsdb-cluster.at +index 3a0bd4579e..5b6188b96f 100644 +--- a/tests/ovsdb-cluster.at ++++ b/tests/ovsdb-cluster.at +@@ -273,6 +273,62 @@ OVS_WAIT_UNTIL([ovs-appctl -t "`pwd`"/s4 cluster/status $schema_name | grep "Ele + + AT_CLEANUP + ++ ++AT_BANNER([OVSDB cluster install snapshot RPC]) ++ ++AT_SETUP([OVSDB cluster - install snapshot RPC]) ++AT_KEYWORDS([ovsdb server positive unix cluster snapshot]) ++ ++n=3 ++schema_name=`ovsdb-tool schema-name $abs_srcdir/idltest.ovsschema` ++ordinal_schema > schema ++AT_CHECK([ovsdb-tool '-vPATTERN:console:%c|%p|%m' create-cluster s1.db $abs_srcdir/idltest.ovsschema unix:s1.raft], [0], [], [stderr]) ++cid=`ovsdb-tool db-cid s1.db` ++schema_name=`ovsdb-tool schema-name $abs_srcdir/idltest.ovsschema` ++for i in `seq 2 $n`; do ++ AT_CHECK([ovsdb-tool join-cluster s$i.db $schema_name unix:s$i.raft unix:s1.raft]) ++done ++ ++on_exit 'kill `cat *.pid`' ++for i in `seq $n`; do ++ AT_CHECK([ovsdb-server -v -vconsole:off -vsyslog:off --detach --no-chdir --log-file=s$i.log --pidfile=s$i.pid --unixctl=s$i --remote=punix:s$i.ovsdb s$i.db]) ++done ++for i in `seq $n`; do ++ AT_CHECK([ovsdb_client_wait unix:s$i.ovsdb $schema_name connected]) ++done ++ ++# Kill one follower (s2) and write some data to cluster, so that the follower is falling behind ++printf "\ns2: stopping\n" ++OVS_APP_EXIT_AND_WAIT_BY_TARGET([`pwd`/s2], [s2.pid]) ++ ++AT_CHECK([ovsdb-client transact unix:s1.ovsdb '[["idltest", ++ {"op": "insert", ++ "table": "simple", ++ "row": {"i": 1}}]]'], [0], [ignore], [ignore]) ++ ++# Compact leader online to generate snapshot ++AT_CHECK([ovs-appctl -t "`pwd`"/s1 ovsdb-server/compact]) ++ ++# Start the follower s2 again. ++AT_CHECK([ovsdb-server -v -vconsole:off -vsyslog:off --detach --no-chdir --log-file=s2.log --pidfile=s2.pid --unixctl=s2 --remote=punix:s2.ovsdb s2.db]) ++AT_CHECK([ovsdb_client_wait unix:s2.ovsdb $schema_name connected]) ++ ++# A client transaction through s2. During this transaction, there will be a ++# install_snapshot RPC because s2 detects it is behind and s1 doesn't have the ++# pre_log_index requested by s2 because it is already compacted. ++# After the install_snapshot RPC process, the transaction through s2 should ++# succeed. ++AT_CHECK([ovsdb-client transact unix:s2.ovsdb '[["idltest", ++ {"op": "insert", ++ "table": "simple", ++ "row": {"i": 1}}]]'], [0], [ignore], [ignore]) ++ ++for i in `seq $n`; do ++ OVS_APP_EXIT_AND_WAIT_BY_TARGET([`pwd`/s$i], [s$i.pid]) ++done ++ ++AT_CLEANUP ++ + + + OVS_START_SHELL_HELPERS +-- +2.25.1 + + +From e732012d7be335650398ff03c2431c64b2c4aaba Mon Sep 17 00:00:00 2001 +From: Han Zhou +Date: Fri, 28 Feb 2020 18:07:06 -0800 +Subject: [PATCH 05/15] raft: Fix raft_is_connected() when there is no leader + yet. + +[ upstream commit adc64ab057345f7004c44bf92363b9adda862134 ] + +If there is never a leader known by the current server, it's status +should be "disconnected" to the cluster. Without this patch, when +a server in cluster is restarted, before it successfully connecting +back to the cluster it will appear as connected, which is wrong. + +Signed-off-by: Han Zhou +Signed-off-by: Ben Pfaff + +Resolves: #1836305 +Signed-off-by: Dumitru Ceara +--- + ovsdb/raft.c | 10 ++++++++-- + tests/ovsdb-cluster.at | 35 +++++++++++++++++++++++++++++++++++ + 2 files changed, 43 insertions(+), 2 deletions(-) + +diff --git a/ovsdb/raft.c b/ovsdb/raft.c +index 4789bc4f22..6cd7b0041a 100644 +--- a/ovsdb/raft.c ++++ b/ovsdb/raft.c +@@ -298,6 +298,11 @@ struct raft { + bool had_leader; /* There has been leader elected since last + election initiated. This is to help setting + candidate_retrying. */ ++ ++ /* For all. */ ++ bool ever_had_leader; /* There has been leader elected since the raft ++ is initialized, meaning it is ever ++ connected. */ + }; + + /* All Raft structures. */ +@@ -1024,7 +1029,8 @@ raft_is_connected(const struct raft *raft) + && !raft->joining + && !raft->leaving + && !raft->left +- && !raft->failed); ++ && !raft->failed ++ && raft->ever_had_leader); + VLOG_DBG("raft_is_connected: %s\n", ret? "true": "false"); + return ret; + } +@@ -2519,7 +2525,7 @@ static void + raft_set_leader(struct raft *raft, const struct uuid *sid) + { + raft->leader_sid = *sid; +- raft->had_leader = true; ++ raft->ever_had_leader = raft->had_leader = true; + raft->candidate_retrying = false; + } + +diff --git a/tests/ovsdb-cluster.at b/tests/ovsdb-cluster.at +index 5b6188b96f..0aa4564480 100644 +--- a/tests/ovsdb-cluster.at ++++ b/tests/ovsdb-cluster.at +@@ -179,6 +179,41 @@ AT_KEYWORDS([ovsdb server negative unix cluster disconnect]) + ovsdb_test_cluster_disconnect 5 leader yes + AT_CLEANUP + ++AT_SETUP([OVSDB cluster - initial status should be disconnected]) ++AT_KEYWORDS([ovsdb server negative unix cluster disconnect]) ++ ++n=3 ++schema_name=`ovsdb-tool schema-name $abs_srcdir/idltest.ovsschema` ++ordinal_schema > schema ++AT_CHECK([ovsdb-tool '-vPATTERN:console:%c|%p|%m' create-cluster s1.db $abs_srcdir/idltest.ovsschema unix:s1.raft], [0], [], [stderr]) ++cid=`ovsdb-tool db-cid s1.db` ++schema_name=`ovsdb-tool schema-name $abs_srcdir/idltest.ovsschema` ++for i in `seq 2 $n`; do ++ AT_CHECK([ovsdb-tool join-cluster s$i.db $schema_name unix:s$i.raft unix:s1.raft]) ++done ++ ++on_exit 'kill `cat *.pid`' ++for i in `seq $n`; do ++ AT_CHECK([ovsdb-server -v -vconsole:off -vsyslog:off --detach --no-chdir --log-file=s$i.log --pidfile=s$i.pid --unixctl=s$i --remote=punix:s$i.ovsdb s$i.db]) ++done ++for i in `seq $n`; do ++ AT_CHECK([ovsdb_client_wait unix:s$i.ovsdb $schema_name connected]) ++done ++ ++# Stop all servers, and start the s1 only, to test initial connection status ++# when there is no leader yet. ++for i in `seq 1 $n`; do ++ OVS_APP_EXIT_AND_WAIT_BY_TARGET([`pwd`/s$i], [s$i.pid]) ++done ++i=1 ++AT_CHECK([ovsdb-server -v -vconsole:off -vsyslog:off --detach --no-chdir --log-file=s$i.log --pidfile=s$i.pid --unixctl=s$i --remote=punix:s$i.ovsdb s$i.db]) ++ ++# The initial status should be disconnected. So wait should fail. ++AT_CHECK([ovsdb_client_wait --timeout=1 unix:s$i.ovsdb $schema_name connected], [142], [ignore], [ignore]) ++OVS_APP_EXIT_AND_WAIT_BY_TARGET([`pwd`/s$i], [s$i.pid]) ++ ++AT_CLEANUP ++ + + + AT_BANNER([OVSDB cluster election timer change]) +-- +2.25.1 + + +From 053b78c8d60ffb4d212fd7894f91be52027f291f Mon Sep 17 00:00:00 2001 +From: Han Zhou +Date: Fri, 28 Feb 2020 18:07:07 -0800 +Subject: [PATCH 06/15] raft: Avoid busy loop during leader election. + +[ upstream commit 3ae90e1899c5a05148ea1870d9bb4ac3c05e3a19 ] + +When a server doesn't see a leader yet, e.g. during leader re-election, +if a transaction comes from a client, it will cause 100% CPU busy loop. +With debug log enabled it is like: + +2020-02-28T04:04:35.631Z|00059|poll_loop|DBG|wakeup due to 0-ms timeout at ../ovsdb/trigger.c:164 +2020-02-28T04:04:35.631Z|00062|poll_loop|DBG|wakeup due to 0-ms timeout at ../ovsdb/trigger.c:164 +2020-02-28T04:04:35.631Z|00065|poll_loop|DBG|wakeup due to 0-ms timeout at ../ovsdb/trigger.c:164 +2020-02-28T04:04:35.631Z|00068|poll_loop|DBG|wakeup due to 0-ms timeout at ../ovsdb/trigger.c:164 +2020-02-28T04:04:35.631Z|00071|poll_loop|DBG|wakeup due to 0-ms timeout at ../ovsdb/trigger.c:164 +2020-02-28T04:04:35.631Z|00074|poll_loop|DBG|wakeup due to 0-ms timeout at ../ovsdb/trigger.c:164 +2020-02-28T04:04:35.631Z|00077|poll_loop|DBG|wakeup due to 0-ms timeout at ../ovsdb/trigger.c:164 +... + +The problem is that in ovsdb_trigger_try(), all cluster errors are treated +as temporary error and retry immediately. This patch fixes it by introducing +'run_triggers_now', which tells if a retry is needed immediately. When the +cluster error is with detail 'not leader', we don't immediately retry, but +will wait for the next poll event to trigger the retry. When 'not leader' +status changes, there must be a event, i.e. raft RPC that changes the +status, so the trigger is guaranteed to be triggered, without busy loop. + +Signed-off-by: Han Zhou +Signed-off-by: Ben Pfaff + +Resolves: #1836305 +Signed-off-by: Dumitru Ceara +--- + ovsdb/ovsdb.c | 2 +- + ovsdb/ovsdb.h | 1 + + ovsdb/transaction.c | 2 +- + ovsdb/trigger.c | 11 +++++++++-- + 4 files changed, 12 insertions(+), 4 deletions(-) + +diff --git a/ovsdb/ovsdb.c b/ovsdb/ovsdb.c +index cfc96b32f8..7e683e6815 100644 +--- a/ovsdb/ovsdb.c ++++ b/ovsdb/ovsdb.c +@@ -414,7 +414,7 @@ ovsdb_create(struct ovsdb_schema *schema, struct ovsdb_storage *storage) + db->storage = storage; + ovs_list_init(&db->monitors); + ovs_list_init(&db->triggers); +- db->run_triggers = false; ++ db->run_triggers_now = db->run_triggers = false; + + shash_init(&db->tables); + if (schema) { +diff --git a/ovsdb/ovsdb.h b/ovsdb/ovsdb.h +index 32e5333163..5c30a83d92 100644 +--- a/ovsdb/ovsdb.h ++++ b/ovsdb/ovsdb.h +@@ -83,6 +83,7 @@ struct ovsdb { + /* Triggers. */ + struct ovs_list triggers; /* Contains "struct ovsdb_trigger"s. */ + bool run_triggers; ++ bool run_triggers_now; + + struct ovsdb_table *rbac_role; + +diff --git a/ovsdb/transaction.c b/ovsdb/transaction.c +index 369436bffb..8ffefcf7c9 100644 +--- a/ovsdb/transaction.c ++++ b/ovsdb/transaction.c +@@ -967,7 +967,7 @@ ovsdb_txn_complete(struct ovsdb_txn *txn) + { + if (!ovsdb_txn_is_empty(txn)) { + +- txn->db->run_triggers = true; ++ txn->db->run_triggers_now = txn->db->run_triggers = true; + ovsdb_monitors_commit(txn->db, txn); + ovsdb_error_assert(for_each_txn_row(txn, ovsdb_txn_update_weak_refs)); + ovsdb_error_assert(for_each_txn_row(txn, ovsdb_txn_row_commit)); +diff --git a/ovsdb/trigger.c b/ovsdb/trigger.c +index 7e62e90ae3..0372302af4 100644 +--- a/ovsdb/trigger.c ++++ b/ovsdb/trigger.c +@@ -141,7 +141,7 @@ ovsdb_trigger_run(struct ovsdb *db, long long int now) + struct ovsdb_trigger *t, *next; + + bool run_triggers = db->run_triggers; +- db->run_triggers = false; ++ db->run_triggers_now = db->run_triggers = false; + + bool disconnect_all = false; + +@@ -160,7 +160,7 @@ ovsdb_trigger_run(struct ovsdb *db, long long int now) + void + ovsdb_trigger_wait(struct ovsdb *db, long long int now) + { +- if (db->run_triggers) { ++ if (db->run_triggers_now) { + poll_immediate_wake(); + } else { + long long int deadline = LLONG_MAX; +@@ -319,9 +319,16 @@ ovsdb_trigger_try(struct ovsdb_trigger *t, long long int now) + if (!strcmp(ovsdb_error_get_tag(error), "cluster error")) { + /* Temporary error. Transition back to "initialized" state to + * try again. */ ++ char *err_s = ovsdb_error_to_string(error); ++ VLOG_DBG("cluster error %s", err_s); ++ + jsonrpc_msg_destroy(t->reply); + t->reply = NULL; + t->db->run_triggers = true; ++ if (!strstr(err_s, "not leader")) { ++ t->db->run_triggers_now = true; ++ } ++ free(err_s); + ovsdb_error_destroy(error); + } else { + /* Permanent error. Transition to "completed" state to report +-- +2.25.1 + + +From cc3d02699203e2fe9d9fd384d09e268ba614828d Mon Sep 17 00:00:00 2001 +From: Han Zhou +Date: Fri, 28 Feb 2020 18:07:10 -0800 +Subject: [PATCH 07/15] raft: Fix next_index in install_snapshot reply + handling. + +[ upstream commit 877618fc833273d1e29e012b5e925d51cba80ff5 ] + +When a leader handles install_snapshot reply, the next_index for +the follower should be log_start instead of log_end, because there +can be new entries added in leader's log after initiating the +install_snapshot procedure. Also, it should send all the accumulated +entries to follower in the following append-request message, instead +of sending 0 entries, to speed up the converge. + +Without this fix, there is no functional problem, but it takes +uncessary extra rounds of append-requests responsed with "inconsistency" +by follower, although finally will be converged. + +Signed-off-by: Han Zhou +Signed-off-by: Ben Pfaff + +Resolves: #1836305 +Signed-off-by: Dumitru Ceara +--- + ovsdb/raft.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/ovsdb/raft.c b/ovsdb/raft.c +index 6cd7b0041a..fa04d8c80b 100644 +--- a/ovsdb/raft.c ++++ b/ovsdb/raft.c +@@ -3998,8 +3998,9 @@ raft_handle_install_snapshot_reply( + VLOG_INFO_RL(&rl, "cluster "CID_FMT": installed snapshot on server %s " + " up to %"PRIu64":%"PRIu64, CID_ARGS(&raft->cid), + s->nickname, rpy->last_term, rpy->last_index); +- s->next_index = raft->log_end; +- raft_send_append_request(raft, s, 0, "snapshot installed"); ++ s->next_index = raft->log_start; ++ raft_send_append_request(raft, s, raft->log_end - s->next_index, ++ "snapshot installed"); + } + + /* Returns true if 'raft' has grown enough since the last snapshot that +-- +2.25.1 + + +From 9c76350e271546eedfeb18720975e35b4e36e1f1 Mon Sep 17 00:00:00 2001 +From: Han Zhou +Date: Thu, 5 Mar 2020 23:48:45 -0800 +Subject: [PATCH 08/15] raft: Fix the problem of stuck in candidate role + forever. + +[ upstream commit 25a7e5547f1e107db0f032ad269f447c57401531 ] + +Sometimes a server can stay in candidate role forever, even if the server +already see the new leader and handles append-requests normally. However, +because of the wrong role, it appears as disconnected from cluster and +so the clients are disconnected. + +This problem happens when 2 servers become candidates in the same +term, and one of them is elected as leader in that term. It can be +reproduced by the test cases added in this patch. + +The root cause is that the current implementation only changes role to +follower when a bigger term is observed (in raft_receive_term__()). +According to the RAFT paper, if another candidate becomes leader with +the same term, the candidate should change to follower. + +This patch fixes it by changing the role to follower when leader +is being updated in raft_update_leader(). + +Signed-off-by: Han Zhou +Signed-off-by: Ben Pfaff + +Resolves: #1836305 +Signed-off-by: Dumitru Ceara +--- + ovsdb/raft.c | 19 +++++++++++++-- + tests/ovsdb-cluster.at | 55 ++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 72 insertions(+), 2 deletions(-) + +diff --git a/ovsdb/raft.c b/ovsdb/raft.c +index fa04d8c80b..6452182ba6 100644 +--- a/ovsdb/raft.c ++++ b/ovsdb/raft.c +@@ -73,7 +73,8 @@ enum raft_failure_test { + FT_CRASH_BEFORE_SEND_EXEC_REQ, + FT_CRASH_AFTER_SEND_EXEC_REQ, + FT_CRASH_AFTER_RECV_APPEND_REQ_UPDATE, +- FT_DELAY_ELECTION ++ FT_DELAY_ELECTION, ++ FT_DONT_SEND_VOTE_REQUEST + }; + static enum raft_failure_test failure_test; + +@@ -1647,6 +1648,7 @@ raft_start_election(struct raft *raft, bool leadership_transfer) + } + + ovs_assert(raft->role != RAFT_LEADER); ++ + raft->role = RAFT_CANDIDATE; + /* If there was no leader elected since last election, we know we are + * retrying now. */ +@@ -1690,7 +1692,9 @@ raft_start_election(struct raft *raft, bool leadership_transfer) + .leadership_transfer = leadership_transfer, + }, + }; +- raft_send(raft, &rq); ++ if (failure_test != FT_DONT_SEND_VOTE_REQUEST) { ++ raft_send(raft, &rq); ++ } + } + + /* Vote for ourselves. */ +@@ -2966,6 +2970,15 @@ raft_update_leader(struct raft *raft, const struct uuid *sid) + }; + ignore(ovsdb_log_write_and_free(raft->log, raft_record_to_json(&r))); + } ++ if (raft->role == RAFT_CANDIDATE) { ++ /* Section 3.4: While waiting for votes, a candidate may ++ * receive an AppendEntries RPC from another server claiming to ++ * be leader. If the leader’s term (included in its RPC) is at ++ * least as large as the candidate’s current term, then the ++ * candidate recognizes the leader as legitimate and returns to ++ * follower state. */ ++ raft->role = RAFT_FOLLOWER; ++ } + return true; + } + +@@ -4674,6 +4687,8 @@ raft_unixctl_failure_test(struct unixctl_conn *conn OVS_UNUSED, + raft_reset_election_timer(raft); + } + } ++ } else if (!strcmp(test, "dont-send-vote-request")) { ++ failure_test = FT_DONT_SEND_VOTE_REQUEST; + } else if (!strcmp(test, "clear")) { + failure_test = FT_NO_TEST; + unixctl_command_reply(conn, "test dismissed"); +diff --git a/tests/ovsdb-cluster.at b/tests/ovsdb-cluster.at +index 0aa4564480..9714545151 100644 +--- a/tests/ovsdb-cluster.at ++++ b/tests/ovsdb-cluster.at +@@ -527,6 +527,61 @@ AT_KEYWORDS([ovsdb server negative unix cluster pending-txn]) + ovsdb_cluster_failure_test 2 2 3 crash-after-receiving-append-request-update + AT_CLEANUP + ++ ++AT_SETUP([OVSDB cluster - competing candidates]) ++AT_KEYWORDS([ovsdb server negative unix cluster competing-candidates]) ++ ++n=3 ++schema_name=`ovsdb-tool schema-name $abs_srcdir/idltest.ovsschema` ++ordinal_schema > schema ++AT_CHECK([ovsdb-tool '-vPATTERN:console:%c|%p|%m' create-cluster s1.db $abs_srcdir/idltest.ovsschema unix:s1.raft], [0], [], [stderr]) ++cid=`ovsdb-tool db-cid s1.db` ++schema_name=`ovsdb-tool schema-name $abs_srcdir/idltest.ovsschema` ++for i in `seq 2 $n`; do ++ AT_CHECK([ovsdb-tool join-cluster s$i.db $schema_name unix:s$i.raft unix:s1.raft]) ++done ++ ++on_exit 'kill `cat *.pid`' ++for i in `seq $n`; do ++ AT_CHECK([ovsdb-server -v -vconsole:off -vsyslog:off --detach --no-chdir --log-file=s$i.log --pidfile=s$i.pid --unixctl=s$i --remote=punix:s$i.ovsdb s$i.db]) ++done ++for i in `seq $n`; do ++ AT_CHECK([ovsdb_client_wait unix:s$i.ovsdb $schema_name connected]) ++done ++ ++# We need to simulate the situation when 2 candidates starts election with same ++# term. ++# ++# Before triggering leader election, tell follower s2 don't send vote request (simulating ++# vote-request lost or not handled in time), and tell follower s3 to delay ++# election timer to make sure s3 doesn't send vote-request before s2 enters ++# term 2. ++AT_CHECK([ovs-appctl -t "`pwd`"/s2 cluster/failure-test dont-send-vote-request], [0], [ignore]) ++AT_CHECK([ovs-appctl -t "`pwd`"/s3 cluster/failure-test delay-election], [0], [ignore]) ++ ++# Restart leader, which will become follower, and both old followers will start ++# election as candidate. The new follower (old leader) will vote one of them, ++# and the other candidate should step back as follower as again. ++kill -9 `cat s1.pid` ++AT_CHECK([ovsdb-server -v -vconsole:off -vsyslog:off --detach --no-chdir --log-file=s1.log --pidfile=s1.pid --unixctl=s1 --remote=punix:s1.ovsdb s1.db]) ++ ++# Tell s1 to delay election timer so that it won't start election before s3 ++# becomes candidate. ++AT_CHECK([ovs-appctl -t "`pwd`"/s1 cluster/failure-test delay-election], [0], [ignore]) ++ ++OVS_WAIT_UNTIL([ovs-appctl -t "`pwd`"/s1 cluster/status $schema_name | grep "Term: 2"]) ++ ++for i in `seq $n`; do ++ OVS_WAIT_WHILE([ovs-appctl -t "`pwd`"/s$i cluster/status $schema_name | grep "candidate"]) ++ AT_CHECK([ovsdb_client_wait unix:s$i.ovsdb $schema_name connected]) ++done ++ ++for i in `seq $n`; do ++ OVS_APP_EXIT_AND_WAIT_BY_TARGET([`pwd`/s$i], [s$i.pid]) ++done ++ ++AT_CLEANUP ++ + + AT_BANNER([OVSDB - cluster tests]) + +-- +2.25.1 + + +From 5c38ccd52fb3925e82eda20f1897ec02abb390d9 Mon Sep 17 00:00:00 2001 +From: Ilya Maximets +Date: Mon, 4 May 2020 21:55:41 +0200 +Subject: [PATCH 09/15] raft: Fix leak of the incomplete command. + +[ upstream commit 168beb87ca63056e8896b09a60031565b7b60728 ] + +Function raft_command_initiate() returns correctly referenced command +instance. 'n_ref' equals 1 for complete commands and 2 for incomplete +commands because one more reference is in raft->commands list. +raft_handle_execute_command_request__() leaks the reference by not +returning pointer anywhere and not unreferencing incomplete commands. + + 792 bytes in 11 blocks are definitely lost in loss record 258 of 262 + at 0x483BB1A: calloc (vg_replace_malloc.c:762) + by 0x44BA32: xcalloc (util.c:121) + by 0x422E5F: raft_command_create_incomplete (raft.c:2038) + by 0x422E5F: raft_command_initiate (raft.c:2061) + by 0x428651: raft_handle_execute_command_request__ (raft.c:4161) + by 0x428651: raft_handle_execute_command_request (raft.c:4177) + by 0x428651: raft_handle_rpc (raft.c:4230) + by 0x428651: raft_conn_run (raft.c:1445) + by 0x428DEA: raft_run (raft.c:1803) + by 0x407392: main_loop (ovsdb-server.c:226) + by 0x407392: main (ovsdb-server.c:469) + +Fixes: 1b1d2e6daa56 ("ovsdb: Introduce experimental support for clustered databases.") +Signed-off-by: Ilya Maximets +Acked-by: Han Zhou +Signed-off-by: William Tu + +Resolves: #1836307 +Signed-off-by: Dumitru Ceara +--- + ovsdb/raft.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/ovsdb/raft.c b/ovsdb/raft.c +index 6452182ba6..1505814138 100644 +--- a/ovsdb/raft.c ++++ b/ovsdb/raft.c +@@ -4163,9 +4163,7 @@ raft_handle_execute_command_request__( + cmd->sid = rq->common.sid; + + enum raft_command_status status = cmd->status; +- if (status != RAFT_CMD_INCOMPLETE) { +- raft_command_unref(cmd); +- } ++ raft_command_unref(cmd); + return status; + } + +-- +2.25.1 + + +From 3d9b529afb098531190d57d6f35d1622bb4093cd Mon Sep 17 00:00:00 2001 +From: Zhen Wang +Date: Mon, 30 Mar 2020 17:21:04 -0700 +Subject: [PATCH 10/15] raft: Disable RAFT jsonrpc inactivity probe. + +[ upstream commit 1600e0040caded7eaa9b1f41926f9619d8e0ec8d ] + +With the scale test of 640 nodes k8s cluster, raft DB nodes' jsonrpc +session got closed due to the timeout of default 5 seconds probe. +It will cause disturbance of the raft cluster. Since we already have +the heartbeat for RAFT, just disable the probe between the servers +to avoid the unnecessary jsonrpc inactivity probe. + +Acked-by: Han Zhou +Signed-off-by: Zhen Wang +Signed-off-by: Ilya Maximets + +Resolves: #1836308 +Signed-off-by: Dumitru Ceara +--- + ovsdb/raft.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/ovsdb/raft.c b/ovsdb/raft.c +index 1505814138..395cc56113 100644 +--- a/ovsdb/raft.c ++++ b/ovsdb/raft.c +@@ -938,6 +938,7 @@ raft_add_conn(struct raft *raft, struct jsonrpc_session *js, + &conn->sid); + conn->incoming = incoming; + conn->js_seqno = jsonrpc_session_get_seqno(conn->js); ++ jsonrpc_session_set_probe_interval(js, 0); + } + + /* Starts the local server in an existing Raft cluster, using the local copy of +-- +2.25.1 + + +From 8b155475749cdb7a1817810d447e4cf6598cb6fa Mon Sep 17 00:00:00 2001 +From: Aaron Conole +Date: Fri, 15 May 2020 16:36:18 -0400 +Subject: [PATCH 11/15] netdev-linux: Update LAG in all cases. + +In some cases, when processing a netlink change event, it's possible for +an alternate part of OvS (like the IPv6 endpoint processing) to hold an +active netdev interface. This creates a race-condition, where sometimes +the OvS change processing will take the normal path. This doesn't work +because the netdev device object won't actually be enslaved to the +ovs-system (for instance, a linux bond) and ingress qdisc entries will +be missing. + +To address this, we update the LAG information in ALL cases where +LAG information could come in. + +Fixes: d22f8927c3c9 ("netdev-linux: monitor and offload LAG slaves to TC") +Cc: Marcelo Leitner +Cc: John Hurley +Acked-by: Roi Dayan +Signed-off-by: Aaron Conole +Signed-off-by: Ilya Maximets +--- + lib/netdev-linux.c | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c +index c6f3d27409..2bf8d4c477 100644 +--- a/lib/netdev-linux.c ++++ b/lib/netdev-linux.c +@@ -659,10 +659,6 @@ netdev_linux_update_lag(struct rtnetlink_change *change) + { + struct linux_lag_slave *lag; + +- if (!rtnetlink_type_is_rtnlgrp_link(change->nlmsg_type)) { +- return; +- } +- + if (change->slave && netdev_linux_kind_is_lag(change->slave)) { + lag = shash_find_data(&lag_shash, change->ifname); + +@@ -760,8 +756,11 @@ netdev_linux_run(const struct netdev_class *netdev_class OVS_UNUSED) + netdev_linux_update(netdev, nsid, &change); + ovs_mutex_unlock(&netdev->mutex); + } +- else if (!netdev_ && change.ifname) { +- /* Netdev is not present in OvS but its master could be. */ ++ ++ if (change.ifname && ++ rtnetlink_type_is_rtnlgrp_link(change.nlmsg_type)) { ++ ++ /* Need to try updating the LAG information. */ + ovs_mutex_lock(&lag_mutex); + netdev_linux_update_lag(&change); + ovs_mutex_unlock(&lag_mutex); +-- +2.25.1 + + +From d14e39f81bec29064a58df0177ce457765305f8b Mon Sep 17 00:00:00 2001 +From: Aaron Conole +Date: Fri, 15 May 2020 16:36:19 -0400 +Subject: [PATCH 12/15] netdev-offload-tc: Re-fetch block ID after probing. + +It's possible that block_id could changes after the probe for block +support. Therefore, fetch the block_id again after the probe. + +Fixes: edc2055a2bf7 ("netdev-offload-tc: Flush rules on ingress block when init tc flow api") +Cc: Dmytro Linkin +Acked-by: Roi Dayan +Co-authored-by: Marcelo Leitner +Signed-off-by: Marcelo Leitner +Signed-off-by: Aaron Conole +Signed-off-by: Ilya Maximets +--- + lib/netdev-offload-tc.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/lib/netdev-offload-tc.c b/lib/netdev-offload-tc.c +index 550e440b3a..f577311aec 100644 +--- a/lib/netdev-offload-tc.c ++++ b/lib/netdev-offload-tc.c +@@ -1922,6 +1922,8 @@ netdev_tc_init_flow_api(struct netdev *netdev) + + if (ovsthread_once_start(&block_once)) { + probe_tc_block_support(ifindex); ++ /* Need to re-fetch block id as it depends on feature availability. */ ++ block_id = get_block_id_from_netdev(netdev); + ovsthread_once_done(&block_once); + } + +-- +2.25.1 + + +From fb32a78921e50b1ffa0c52f873167f68622e8723 Mon Sep 17 00:00:00 2001 +From: Ilya Maximets +Date: Fri, 22 May 2020 18:31:19 +0200 +Subject: [PATCH 13/15] ovsdb: Add raft memory usage to memory report. + +[ upstream commit 3423cd97f88fe6a8de8b649d79fe6ac83bce94d1 ] + +Memory reports could be found in logs or by calling 'memory/show' +appctl command. For ovsdb-server it includes information about db +cells, monitor connections with their backlog size, etc. But it +doesn't contain any information about memory consumed by raft. +Backlogs of raft connections could be insanely large because of +snapshot installation requests that simply contains the whole database. +In not that healthy clusters where one of ovsdb servers is not able to +timely handle all the incoming raft traffic, backlog on a sender's side +could cause significant memory consumption issues. + +Adding new 'raft-connections' and 'raft-backlog' counters to the +memory report to better track such conditions. + +Acked-by: Han Zhou +Signed-off-by: Ilya Maximets + +Related: #1834838 +Signed-off-by: Ilya Maximets +--- + ovsdb/ovsdb.c | 4 ++++ + ovsdb/raft.c | 16 ++++++++++++++++ + ovsdb/raft.h | 2 ++ + ovsdb/storage.c | 10 ++++++++++ + ovsdb/storage.h | 3 +++ + 5 files changed, 35 insertions(+) + +diff --git a/ovsdb/ovsdb.c b/ovsdb/ovsdb.c +index 7e683e6815..2da117cb36 100644 +--- a/ovsdb/ovsdb.c ++++ b/ovsdb/ovsdb.c +@@ -502,6 +502,10 @@ ovsdb_get_memory_usage(const struct ovsdb *db, struct simap *usage) + } + + simap_increase(usage, "cells", cells); ++ ++ if (db->storage) { ++ ovsdb_storage_get_memory_usage(db->storage, usage); ++ } + } + + struct ovsdb_table * +diff --git a/ovsdb/raft.c b/ovsdb/raft.c +index 395cc56113..6ca63b4352 100644 +--- a/ovsdb/raft.c ++++ b/ovsdb/raft.c +@@ -36,6 +36,7 @@ + #include "ovsdb/log.h" + #include "raft-rpc.h" + #include "random.h" ++#include "simap.h" + #include "socket-util.h" + #include "stream.h" + #include "timeval.h" +@@ -1014,6 +1015,21 @@ raft_get_sid(const struct raft *raft) + return &raft->sid; + } + ++/* Adds memory consumption info to 'usage' for later use by memory_report(). */ ++void ++raft_get_memory_usage(const struct raft *raft, struct simap *usage) ++{ ++ struct raft_conn *conn; ++ int cnt = 0; ++ ++ LIST_FOR_EACH (conn, list_node, &raft->conns) { ++ simap_increase(usage, "raft-backlog", ++ jsonrpc_session_get_backlog(conn->js)); ++ cnt++; ++ } ++ simap_increase(usage, "raft-connections", cnt); ++} ++ + /* Returns true if 'raft' has completed joining its cluster, has not left or + * initiated leaving the cluster, does not have failed disk storage, and is + * apparently connected to the leader in a healthy way (or is itself the +diff --git a/ovsdb/raft.h b/ovsdb/raft.h +index 3d448995af..99d5307e54 100644 +--- a/ovsdb/raft.h ++++ b/ovsdb/raft.h +@@ -67,6 +67,7 @@ + struct json; + struct ovsdb_log; + struct raft; ++struct simap; + struct sset; + + #define RAFT_MAGIC "CLUSTER" +@@ -113,6 +114,7 @@ const struct uuid *raft_get_cid(const struct raft *); + const struct uuid *raft_get_sid(const struct raft *); + bool raft_is_connected(const struct raft *); + bool raft_is_leader(const struct raft *); ++void raft_get_memory_usage(const struct raft *, struct simap *usage); + + /* Joining a cluster. */ + bool raft_is_joining(const struct raft *); +diff --git a/ovsdb/storage.c b/ovsdb/storage.c +index e26252b066..7b4ad16f60 100644 +--- a/ovsdb/storage.c ++++ b/ovsdb/storage.c +@@ -26,6 +26,7 @@ + #include "ovsdb.h" + #include "raft.h" + #include "random.h" ++#include "simap.h" + #include "timeval.h" + #include "util.h" + +@@ -188,6 +189,15 @@ ovsdb_storage_get_applied_index(const struct ovsdb_storage *storage) + return storage->raft ? raft_get_applied_index(storage->raft) : 0; + } + ++void ++ovsdb_storage_get_memory_usage(const struct ovsdb_storage *storage, ++ struct simap *usage) ++{ ++ if (storage->raft) { ++ raft_get_memory_usage(storage->raft, usage); ++ } ++} ++ + void + ovsdb_storage_run(struct ovsdb_storage *storage) + { +diff --git a/ovsdb/storage.h b/ovsdb/storage.h +index 8a9bbab709..a223968912 100644 +--- a/ovsdb/storage.h ++++ b/ovsdb/storage.h +@@ -23,6 +23,7 @@ + struct json; + struct ovsdb_schema; + struct ovsdb_storage; ++struct simap; + struct uuid; + + struct ovsdb_error *ovsdb_storage_open(const char *filename, bool rw, +@@ -39,6 +40,8 @@ bool ovsdb_storage_is_leader(const struct ovsdb_storage *); + const struct uuid *ovsdb_storage_get_cid(const struct ovsdb_storage *); + const struct uuid *ovsdb_storage_get_sid(const struct ovsdb_storage *); + uint64_t ovsdb_storage_get_applied_index(const struct ovsdb_storage *); ++void ovsdb_storage_get_memory_usage(const struct ovsdb_storage *, ++ struct simap *usage); + + void ovsdb_storage_run(struct ovsdb_storage *); + void ovsdb_storage_wait(struct ovsdb_storage *); +-- +2.25.1 + + +From 92a1e56c8a37927441fb1742e6054a9118654ef0 Mon Sep 17 00:00:00 2001 +From: Ilya Maximets +Date: Thu, 14 May 2020 22:10:45 +0200 +Subject: [PATCH 14/15] ovsdb-server: Fix schema leak while reading db. + +[ upstream commit 16e3a80cf646f6c53d22ef98599d5aecb8310414 ] + +parse_txn() function doesn't always take ownership of the 'schema' +passed. So, if the schema of the clustered db has same version as the +one that already in use, parse_txn() will not use it, resulting with a +memory leak: + + 7,827 (56 direct, 7,771 indirect) bytes in 1 blocks are definitely lost + at 0x483BB1A: calloc (vg_replace_malloc.c:762) + by 0x44AD02: xcalloc (util.c:121) + by 0x40E70E: ovsdb_schema_create (ovsdb.c:41) + by 0x40EA6D: ovsdb_schema_from_json (ovsdb.c:217) + by 0x415EDD: ovsdb_storage_read (storage.c:280) + by 0x408968: read_db (ovsdb-server.c:607) + by 0x40733D: main_loop (ovsdb-server.c:227) + by 0x40733D: main (ovsdb-server.c:469) + +While we could put ovsdb_schema_destroy() in a few places inside +'parse_txn()', from the users' point of view it seems better to have a +constant argument and just clone the 'schema' if needed. The caller +will be responsible for destroying the 'schema' it owns. + +Fixes: 1b1d2e6daa56 ("ovsdb: Introduce experimental support for clustered databases.") +Acked-by: Han Zhou +Signed-off-by: Ilya Maximets + +Related: #1834838 +Signed-off-by: Ilya Maximets +--- + ovsdb/ovsdb-server.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/ovsdb/ovsdb-server.c b/ovsdb/ovsdb-server.c +index d416f1b606..ef4e996df2 100644 +--- a/ovsdb/ovsdb-server.c ++++ b/ovsdb/ovsdb-server.c +@@ -540,7 +540,7 @@ close_db(struct server_config *config, struct db *db, char *comment) + + static struct ovsdb_error * OVS_WARN_UNUSED_RESULT + parse_txn(struct server_config *config, struct db *db, +- struct ovsdb_schema *schema, const struct json *txn_json, ++ const struct ovsdb_schema *schema, const struct json *txn_json, + const struct uuid *txnid) + { + if (schema && (!db->db->schema || strcmp(schema->version, +@@ -565,7 +565,7 @@ parse_txn(struct server_config *config, struct db *db, + ? xasprintf("database %s schema changed", db->db->name) + : xasprintf("database %s connected to storage", db->db->name))); + +- ovsdb_replace(db->db, ovsdb_create(schema, NULL)); ++ ovsdb_replace(db->db, ovsdb_create(ovsdb_schema_clone(schema), NULL)); + + /* Force update to schema in _Server database. */ + db->row_uuid = UUID_ZERO; +@@ -614,6 +614,7 @@ read_db(struct server_config *config, struct db *db) + } else { + error = parse_txn(config, db, schema, txn_json, &txnid); + json_destroy(txn_json); ++ ovsdb_schema_destroy(schema); + if (error) { + break; + } +-- +2.25.1 + + +From 3168eba559cbce28937be4e785c3337030694455 Mon Sep 17 00:00:00 2001 +From: Ilya Maximets +Date: Fri, 22 May 2020 22:36:27 +0200 +Subject: [PATCH 15/15] raft: Avoid sending equal snapshots. + +[ upstream commit 8c2c503bdb0da1ce6044a53d462f905fd4f8acf5 ] + +Snapshots are huge. In some cases we could receive several outdated +append replies from the remote server. This could happen in high +scale cases if the remote server is overloaded and not able to process +all the raft requests in time. As an action to each outdated append +reply we're sending full database snapshot. While remote server is +already overloaded those snapshots will stuck in jsonrpc backlog for +a long time making it grow up to few GB. Since remote server wasn't +able to timely process incoming messages it will likely not able to +process snapshots leading to the same situation with low chances to +recover. Remote server will likely stuck in 'candidate' state, other +servers will grow their memory consumption due to growing jsonrpc +backlogs: + +jsonrpc|INFO|excessive sending backlog, jsonrpc: ssl:192.16.0.3:6644, + num of msgs: 3795, backlog: 8838994624. + +This patch is trying to avoid that situation by avoiding sending of +equal snapshot install requests. This helps maintain reasonable memory +consumption and allows the cluster to recover on a larger scale. + +Acked-by: Han Zhou +Signed-off-by: Ilya Maximets + +Related: #1834838 +Signed-off-by: Ilya Maximets +--- + ovsdb/raft-private.c | 1 + + ovsdb/raft-private.h | 4 ++++ + ovsdb/raft.c | 39 ++++++++++++++++++++++++++++++++++++++- + 3 files changed, 43 insertions(+), 1 deletion(-) + +diff --git a/ovsdb/raft-private.c b/ovsdb/raft-private.c +index 26d39a087f..9468fdaf4a 100644 +--- a/ovsdb/raft-private.c ++++ b/ovsdb/raft-private.c +@@ -137,6 +137,7 @@ raft_server_destroy(struct raft_server *s) + if (s) { + free(s->address); + free(s->nickname); ++ free(s->last_install_snapshot_request); + free(s); + } + } +diff --git a/ovsdb/raft-private.h b/ovsdb/raft-private.h +index ac8656d42f..1f366b4ab3 100644 +--- a/ovsdb/raft-private.h ++++ b/ovsdb/raft-private.h +@@ -27,6 +27,7 @@ + + struct ds; + struct ovsdb_parser; ++struct raft_install_snapshot_request; + + /* Formatting server IDs and cluster IDs for use in human-readable logs. Do + * not use these in cases where the whole server or cluster ID is needed; use +@@ -83,6 +84,9 @@ struct raft_server { + bool replied; /* Reply to append_request was received from this + node during current election_timeout interval. + */ ++ /* Copy of the last install_snapshot_request sent to this server. */ ++ struct raft_install_snapshot_request *last_install_snapshot_request; ++ + /* For use in adding and removing servers: */ + struct uuid requester_sid; /* Nonzero if requested via RPC. */ + struct unixctl_conn *requester_conn; /* Only if requested via unixctl. */ +diff --git a/ovsdb/raft.c b/ovsdb/raft.c +index 6ca63b4352..8df386fa19 100644 +--- a/ovsdb/raft.c ++++ b/ovsdb/raft.c +@@ -1421,8 +1421,20 @@ raft_conn_run(struct raft *raft, struct raft_conn *conn) + jsonrpc_session_run(conn->js); + + unsigned int new_seqno = jsonrpc_session_get_seqno(conn->js); +- bool just_connected = (new_seqno != conn->js_seqno ++ bool reconnected = new_seqno != conn->js_seqno; ++ bool just_connected = (reconnected + && jsonrpc_session_is_connected(conn->js)); ++ ++ if (reconnected) { ++ /* Clear 'last_install_snapshot_request' since it might not reach the ++ * destination or server was restarted. */ ++ struct raft_server *server = raft_find_server(raft, &conn->sid); ++ if (server) { ++ free(server->last_install_snapshot_request); ++ server->last_install_snapshot_request = NULL; ++ } ++ } ++ + conn->js_seqno = new_seqno; + if (just_connected) { + if (raft->joining) { +@@ -3296,6 +3308,31 @@ raft_send_install_snapshot_request(struct raft *raft, + .election_timer = raft->election_timer, /* use latest value */ + } + }; ++ ++ if (s->last_install_snapshot_request) { ++ struct raft_install_snapshot_request *old, *new; ++ ++ old = s->last_install_snapshot_request; ++ new = &rpc.install_snapshot_request; ++ if ( old->term == new->term ++ && old->last_index == new->last_index ++ && old->last_term == new->last_term ++ && old->last_servers == new->last_servers ++ && old->data == new->data ++ && old->election_timer == new->election_timer ++ && uuid_equals(&old->last_eid, &new->last_eid)) { ++ static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(5, 5); ++ ++ VLOG_WARN_RL(&rl, "not sending exact same install_snapshot_request" ++ " to server %s again", s->nickname); ++ return; ++ } ++ } ++ free(s->last_install_snapshot_request); ++ CONST_CAST(struct raft_server *, s)->last_install_snapshot_request ++ = xmemdup(&rpc.install_snapshot_request, ++ sizeof rpc.install_snapshot_request); ++ + raft_send(raft, &rpc); + } + +-- +2.25.1 + +diff --git a/dpdk/drivers/bus/pci/linux/pci_vfio.c b/dpdk/drivers/bus/pci/linux/pci_vfio.c +index 64cd84a689..ba60e7ce99 100644 +--- a/dpdk/drivers/bus/pci/linux/pci_vfio.c ++++ b/dpdk/drivers/bus/pci/linux/pci_vfio.c +@@ -149,6 +149,38 @@ pci_vfio_get_msix_bar(int fd, struct pci_msix_table *msix_table) + return 0; + } + ++/* enable PCI bus memory space */ ++static int ++pci_vfio_enable_bus_memory(int dev_fd) ++{ ++ uint16_t cmd; ++ int ret; ++ ++ ret = pread64(dev_fd, &cmd, sizeof(cmd), ++ VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) + ++ PCI_COMMAND); ++ ++ if (ret != sizeof(cmd)) { ++ RTE_LOG(ERR, EAL, "Cannot read command from PCI config space!\n"); ++ return -1; ++ } ++ ++ if (cmd & PCI_COMMAND_MEMORY) ++ return 0; ++ ++ cmd |= PCI_COMMAND_MEMORY; ++ ret = pwrite64(dev_fd, &cmd, sizeof(cmd), ++ VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) + ++ PCI_COMMAND); ++ ++ if (ret != sizeof(cmd)) { ++ RTE_LOG(ERR, EAL, "Cannot write command to PCI config space!\n"); ++ return -1; ++ } ++ ++ return 0; ++} ++ + /* set PCI bus mastering */ + static int + pci_vfio_set_bus_master(int dev_fd, bool op) +@@ -427,6 +459,11 @@ pci_rte_vfio_setup_device(struct rte_pci_device *dev, int vfio_dev_fd) + return -1; + } + ++ if (pci_vfio_enable_bus_memory(vfio_dev_fd)) { ++ RTE_LOG(ERR, EAL, "Cannot enable bus memory!\n"); ++ return -1; ++ } ++ + /* set bus mastering for the device */ + if (pci_vfio_set_bus_master(vfio_dev_fd, true)) { + RTE_LOG(ERR, EAL, "Cannot set up bus mastering!\n"); +diff --git a/dpdk/lib/librte_vhost/vhost_user.c b/dpdk/lib/librte_vhost/vhost_user.c +index 40c4520c08..8954f7930e 100644 +--- a/dpdk/lib/librte_vhost/vhost_user.c ++++ b/dpdk/lib/librte_vhost/vhost_user.c +@@ -206,7 +206,7 @@ vhost_backend_cleanup(struct virtio_net *dev) + dev->inflight_info->addr = NULL; + } + +- if (dev->inflight_info->fd > 0) { ++ if (dev->inflight_info->fd >= 0) { + close(dev->inflight_info->fd); + dev->inflight_info->fd = -1; + } +@@ -1408,6 +1408,7 @@ vhost_user_get_inflight_fd(struct virtio_net **pdev, + "failed to alloc dev inflight area\n"); + return RTE_VHOST_MSG_RESULT_ERR; + } ++ dev->inflight_info->fd = -1; + } + + num_queues = msg->payload.inflight.num_queues; +@@ -1433,6 +1434,16 @@ vhost_user_get_inflight_fd(struct virtio_net **pdev, + } + memset(addr, 0, mmap_size); + ++ if (dev->inflight_info->addr) { ++ munmap(dev->inflight_info->addr, dev->inflight_info->size); ++ dev->inflight_info->addr = NULL; ++ } ++ ++ if (dev->inflight_info->fd >= 0) { ++ close(dev->inflight_info->fd); ++ dev->inflight_info->fd = -1; ++ } ++ + dev->inflight_info->addr = addr; + dev->inflight_info->size = msg->payload.inflight.mmap_size = mmap_size; + dev->inflight_info->fd = msg->fds[0] = fd; +@@ -1515,10 +1526,13 @@ vhost_user_set_inflight_fd(struct virtio_net **pdev, VhostUserMsg *msg, + "failed to alloc dev inflight area\n"); + return RTE_VHOST_MSG_RESULT_ERR; + } ++ dev->inflight_info->fd = -1; + } + +- if (dev->inflight_info->addr) ++ if (dev->inflight_info->addr) { + munmap(dev->inflight_info->addr, dev->inflight_info->size); ++ dev->inflight_info->addr = NULL; ++ } + + addr = mmap(0, mmap_size, PROT_READ | PROT_WRITE, MAP_SHARED, + fd, mmap_offset); +@@ -1527,8 +1541,10 @@ vhost_user_set_inflight_fd(struct virtio_net **pdev, VhostUserMsg *msg, + return RTE_VHOST_MSG_RESULT_ERR; + } + +- if (dev->inflight_info->fd) ++ if (dev->inflight_info->fd >= 0) { + close(dev->inflight_info->fd); ++ dev->inflight_info->fd = -1; ++ } + + dev->inflight_info->fd = fd; + dev->inflight_info->addr = addr; +@@ -2059,10 +2075,10 @@ vhost_user_set_log_base(struct virtio_net **pdev, struct VhostUserMsg *msg, + size = msg->payload.log.mmap_size; + off = msg->payload.log.mmap_offset; + +- /* Don't allow mmap_offset to point outside the mmap region */ +- if (off > size) { ++ /* Check for mmap size and offset overflow. */ ++ if (off >= -size) { + RTE_LOG(ERR, VHOST_CONFIG, +- "log offset %#"PRIx64" exceeds log size %#"PRIx64"\n", ++ "log offset %#"PRIx64" and log size %#"PRIx64" overflow\n", + off, size); + return RTE_VHOST_MSG_RESULT_ERR; + } +@@ -2526,7 +2542,7 @@ static int + vhost_user_check_and_alloc_queue_pair(struct virtio_net *dev, + struct VhostUserMsg *msg) + { +- uint16_t vring_idx; ++ uint32_t vring_idx; + + switch (msg->request.master) { + case VHOST_USER_SET_VRING_KICK: +diff --git a/dpdk/lib/librte_vhost/virtio_net.c b/dpdk/lib/librte_vhost/virtio_net.c +index ac2842b2d2..33f10258cf 100644 +--- a/dpdk/lib/librte_vhost/virtio_net.c ++++ b/dpdk/lib/librte_vhost/virtio_net.c +@@ -1086,6 +1086,8 @@ virtio_dev_rx_batch_packed(struct virtio_net *dev, + VHOST_ACCESS_RW); + + vhost_for_each_try_unroll(i, 0, PACKED_BATCH_SIZE) { ++ if (unlikely(!desc_addrs[i])) ++ return -1; + if (unlikely(lens[i] != descs[avail_idx + i].len)) + return -1; + } +@@ -1841,6 +1843,8 @@ vhost_reserve_avail_batch_packed(struct virtio_net *dev, + } + + vhost_for_each_try_unroll(i, 0, PACKED_BATCH_SIZE) { ++ if (unlikely(!desc_addrs[i])) ++ return -1; + if (unlikely((lens[i] != descs[avail_idx + i].len))) + return -1; + } diff --git a/SOURCES/ppc_64-power8-linuxapp-gcc-config b/SOURCES/ppc_64-power8-linuxapp-gcc-config new file mode 100644 index 0000000..7b21579 --- /dev/null +++ b/SOURCES/ppc_64-power8-linuxapp-gcc-config @@ -0,0 +1,593 @@ +# -*- cfg-sha: f7b9a8671f1828542f6b8389a63bc60574d9c9ab21d06d5e8adefbaf7c929bc3 +# SPDX-License-Identifier: BSD-3-Clause +# Copyright (C) IBM Corporation 2014. +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2010-2016 Intel Corporation +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2010-2017 Intel Corporation +# String that appears before the version number +CONFIG_RTE_VER_PREFIX="DPDK" +# Version information completed when this file is processed for a build +CONFIG_RTE_VER_YEAR=19 +CONFIG_RTE_VER_MONTH=11 +CONFIG_RTE_VER_MINOR=1 +CONFIG_RTE_VER_SUFFIX="" +CONFIG_RTE_VER_RELEASE=99 + # RTE_EXEC_ENV values are the directories in mk/exec-env/ +CONFIG_RTE_EXEC_ENV="linuxapp" +# RTE_ARCH values are architecture we compile for. directories in mk/arch/ +CONFIG_RTE_ARCH="ppc_64" +# machine can define specific variables or action for a specific board +# RTE_MACHINE values are architecture we compile for. directories in mk/machine/ +CONFIG_RTE_MACHINE="power8" +# The compiler we use. +# RTE_TOOLCHAIN values are architecture we compile for. directories in mk/toolchain/ +CONFIG_RTE_TOOLCHAIN="gcc" +# Use intrinsics or assembly code for key routines +CONFIG_RTE_FORCE_INTRINSICS=n +# Machine forces strict alignment constraints. +CONFIG_RTE_ARCH_STRICT_ALIGN=n +# Enable link time optimization +CONFIG_RTE_ENABLE_LTO=n +# Compile to share library +CONFIG_RTE_BUILD_SHARED_LIB=n +# Use newest code breaking previous ABI +CONFIG_RTE_NEXT_ABI=n +# Machine's cache line size +CONFIG_RTE_CACHE_LINE_SIZE=128 +# Memory model +CONFIG_RTE_USE_C11_MEM_MODEL=n +# Compile Environment Abstraction Layer +CONFIG_RTE_LIBRTE_EAL=y +CONFIG_RTE_MAX_LCORE=1536 +CONFIG_RTE_MAX_NUMA_NODES=32 +CONFIG_RTE_MAX_HEAPS=32 +CONFIG_RTE_MAX_MEMSEG_LISTS=64 +# each memseg list will be limited to either RTE_MAX_MEMSEG_PER_LIST pages +# or RTE_MAX_MEM_MB_PER_LIST megabytes worth of memory, whichever is smaller +CONFIG_RTE_MAX_MEMSEG_PER_LIST=8192 +CONFIG_RTE_MAX_MEM_MB_PER_LIST=32768 +# a "type" is a combination of page size and NUMA node. total number of memseg +# lists per type will be limited to either RTE_MAX_MEMSEG_PER_TYPE pages (split +# over multiple lists of RTE_MAX_MEMSEG_PER_LIST pages), or +# RTE_MAX_MEM_MB_PER_TYPE megabytes of memory (split over multiple lists of +# RTE_MAX_MEM_MB_PER_LIST), whichever is smaller +CONFIG_RTE_MAX_MEMSEG_PER_TYPE=32768 +CONFIG_RTE_MAX_MEM_MB_PER_TYPE=131072 +# global maximum usable amount of VA, in megabytes +CONFIG_RTE_MAX_MEM_MB=524288 +CONFIG_RTE_MAX_MEMZONE=2560 +CONFIG_RTE_MAX_TAILQ=32 +CONFIG_RTE_ENABLE_ASSERT=n +CONFIG_RTE_LOG_DP_LEVEL=RTE_LOG_INFO +CONFIG_RTE_LOG_HISTORY=256 +CONFIG_RTE_BACKTRACE=y +CONFIG_RTE_LIBEAL_USE_HPET=n +CONFIG_RTE_EAL_ALWAYS_PANIC_ON_ERROR=n +CONFIG_RTE_EAL_IGB_UIO=n +CONFIG_RTE_EAL_VFIO=y +CONFIG_RTE_MAX_VFIO_GROUPS=64 +CONFIG_RTE_MAX_VFIO_CONTAINERS=64 +CONFIG_RTE_MALLOC_DEBUG=n +CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=y +CONFIG_RTE_USE_LIBBSD=n +# Recognize/ignore architecture we compile for. AVX/AVX512 CPU flags for performance/power testing. +# AVX512 is marked as experimental for now, will enable it after enough +# field test and possible optimization. +CONFIG_RTE_ENABLE_AVX=y +CONFIG_RTE_ENABLE_AVX512=n +# Use ARM LSE ATOMIC instructions +CONFIG_RTE_ARM_FEATURE_ATOMICS=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=n +# Compile architecture we compile for. PCI library +CONFIG_RTE_LIBRTE_PCI=y +# Compile architecture we compile for. 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=128 +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 +CONFIG_RTE_ETHDEV_PROFILE_WITH_VTUNE=n +# Turn off Tx preparation stage +# Warning: rte_eth_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 +# Common libraries, before Bus/PMDs +CONFIG_RTE_LIBRTE_COMMON_DPAAX=n +# Compile architecture we compile for. Intel FPGA bus +CONFIG_RTE_LIBRTE_IFPGA_BUS=n +# Compile PCI bus driver +CONFIG_RTE_LIBRTE_PCI_BUS=y +# Compile architecture we compile for. vdev bus +CONFIG_RTE_LIBRTE_VDEV_BUS=y +# Compile ARK PMD +CONFIG_RTE_LIBRTE_ARK_PMD=n +CONFIG_RTE_LIBRTE_ARK_PAD_TX=y +CONFIG_RTE_LIBRTE_ARK_DEBUG_RX=n +CONFIG_RTE_LIBRTE_ARK_DEBUG_TX=n +CONFIG_RTE_LIBRTE_ARK_DEBUG_STATS=n +CONFIG_RTE_LIBRTE_ARK_DEBUG_TRACE=n +# Compile Aquantia Atlantic PMD driver +CONFIG_RTE_LIBRTE_ATLANTIC_PMD=n +# Compile AMD PMD +CONFIG_RTE_LIBRTE_AXGBE_PMD=n +CONFIG_RTE_LIBRTE_AXGBE_PMD_DEBUG=n +# Compile burst-oriented Broadcom PMD driver +CONFIG_RTE_LIBRTE_BNX2X_PMD=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 Broadcom BNXT PMD driver +CONFIG_RTE_LIBRTE_BNXT_PMD=n +# Compile burst-oriented Chelsio Terminator (CXGBE) PMD +CONFIG_RTE_LIBRTE_CXGBE_PMD=n +# Compile burst-oriented NXP PFE PMD driver +CONFIG_RTE_LIBRTE_PFE_PMD=n +# NXP DPAA Bus +CONFIG_RTE_LIBRTE_DPAA_BUS=n +CONFIG_RTE_LIBRTE_DPAA_MEMPOOL=n +CONFIG_RTE_LIBRTE_DPAA_PMD=n +CONFIG_RTE_LIBRTE_DPAA_HWDEBUG=n +# Compile NXP DPAA2 FSL-MC Bus +CONFIG_RTE_LIBRTE_FSLMC_BUS=n +# Compile Support Libraries for NXP DPAA2 +CONFIG_RTE_LIBRTE_DPAA2_MEMPOOL=n +CONFIG_RTE_LIBRTE_DPAA2_USE_PHYS_IOVA=y +# Compile burst-oriented NXP DPAA2 PMD driver +CONFIG_RTE_LIBRTE_DPAA2_PMD=n +CONFIG_RTE_LIBRTE_DPAA2_DEBUG_DRIVER=n +# Compile NXP ENETC PMD Driver +CONFIG_RTE_LIBRTE_ENETC_PMD=n +# Compile burst-oriented Amazon ENA PMD driver +CONFIG_RTE_LIBRTE_ENA_PMD=n +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_COM_DEBUG=n +# Compile burst-oriented Cisco ENIC PMD driver +CONFIG_RTE_LIBRTE_ENIC_PMD=n +# Compile burst-oriented IGB & EM PMD drivers +CONFIG_RTE_LIBRTE_EM_PMD=n +CONFIG_RTE_LIBRTE_IGB_PMD=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_PF_DISABLE_STRIP_CRC=n +# Compile burst-oriented HINIC PMD driver +CONFIG_RTE_LIBRTE_HINIC_PMD=n +# Compile burst-oriented HNS3 PMD driver +CONFIG_RTE_LIBRTE_HNS3_PMD=n +# Compile burst-oriented IXGBE PMD driver +CONFIG_RTE_LIBRTE_IXGBE_PMD=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_PF_DISABLE_STRIP_CRC=n +CONFIG_RTE_IXGBE_INC_VECTOR=y +CONFIG_RTE_LIBRTE_IXGBE_BYPASS=n +# Compile burst-oriented I40E PMD driver +CONFIG_RTE_LIBRTE_I40E_PMD=y +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_RX_ALLOW_BULK_ALLOC=y +CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=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_VM=4 +# Compile burst-oriented FM10K PMD +CONFIG_RTE_LIBRTE_FM10K_PMD=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_RX_OLFLAGS_ENABLE=y +CONFIG_RTE_LIBRTE_FM10K_INC_VECTOR=y +# Compile burst-oriented ICE PMD driver +CONFIG_RTE_LIBRTE_ICE_PMD=n +CONFIG_RTE_LIBRTE_ICE_DEBUG_RX=n +CONFIG_RTE_LIBRTE_ICE_DEBUG_TX=n +CONFIG_RTE_LIBRTE_ICE_DEBUG_TX_FREE=n +CONFIG_RTE_LIBRTE_ICE_RX_ALLOW_BULK_ALLOC=y +CONFIG_RTE_LIBRTE_ICE_16BYTE_RX_DESC=n +# Compile burst-oriented IAVF PMD driver +CONFIG_RTE_LIBRTE_IAVF_PMD=n +CONFIG_RTE_LIBRTE_IAVF_DEBUG_TX=n +CONFIG_RTE_LIBRTE_IAVF_DEBUG_TX_FREE=n +CONFIG_RTE_LIBRTE_IAVF_DEBUG_RX=n +CONFIG_RTE_LIBRTE_IAVF_DEBUG_DUMP_DESC=n +CONFIG_RTE_LIBRTE_IAVF_16BYTE_RX_DESC=n +# Compile burst-oriented IPN3KE PMD driver +CONFIG_RTE_LIBRTE_IPN3KE_PMD=n +# Compile burst-oriented Mellanox ConnectX-3 (MLX4) PMD +CONFIG_RTE_LIBRTE_MLX4_PMD=n +CONFIG_RTE_LIBRTE_MLX4_DEBUG=n +# Compile burst-oriented Mellanox ConnectX-4, ConnectX-5, +# ConnectX-6 & BlueField (MLX5) PMD +CONFIG_RTE_LIBRTE_MLX5_PMD=n +CONFIG_RTE_LIBRTE_MLX5_DEBUG=n +# Linking method for mlx4/5 dependency on ibverbs and related libraries +# Default linking is dynamic by linker. +# Other options are: dynamic by dlopen at run-time, or statically embedded. +CONFIG_RTE_IBVERBS_LINK_DLOPEN=n +CONFIG_RTE_IBVERBS_LINK_STATIC=n +# Compile burst-oriented Netronome NFP PMD driver +CONFIG_RTE_LIBRTE_NFP_PMD=n +CONFIG_RTE_LIBRTE_NFP_DEBUG_TX=n +CONFIG_RTE_LIBRTE_NFP_DEBUG_RX=n +# QLogic 10G/25G/40G/50G/100G PMD +CONFIG_RTE_LIBRTE_QEDE_PMD=n +CONFIG_RTE_LIBRTE_QEDE_DEBUG_TX=n +CONFIG_RTE_LIBRTE_QEDE_DEBUG_RX=n +#Provides abs path/name of architecture we compile for. firmware file. +#Empty string denotes driver will use default firmware +CONFIG_RTE_LIBRTE_QEDE_FW="" +# Compile burst-oriented Solarflare libefx-based PMD +CONFIG_RTE_LIBRTE_SFC_EFX_PMD=n +CONFIG_RTE_LIBRTE_SFC_EFX_DEBUG=n +# Compile software PMD backed by SZEDATA2 device +CONFIG_RTE_LIBRTE_PMD_SZEDATA2=n +# Compile software PMD backed by NFB device +CONFIG_RTE_LIBRTE_NFB_PMD=n +# Compile burst-oriented Cavium Thunderx NICVF PMD driver +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD=n +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_RX=n +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_TX=n +# Compile burst-oriented Cavium LiquidIO PMD driver +CONFIG_RTE_LIBRTE_LIO_PMD=n +CONFIG_RTE_LIBRTE_LIO_DEBUG_RX=n +CONFIG_RTE_LIBRTE_LIO_DEBUG_TX=n +CONFIG_RTE_LIBRTE_LIO_DEBUG_MBOX=n +CONFIG_RTE_LIBRTE_LIO_DEBUG_REGS=n +# Compile burst-oriented Cavium OCTEONTX network PMD driver +CONFIG_RTE_LIBRTE_OCTEONTX_PMD=n +# Compile burst-oriented Marvell OCTEON TX2 network PMD driver +CONFIG_RTE_LIBRTE_OCTEONTX2_PMD=n +# Compile WRS accelerated virtual port (AVP) guest PMD driver +CONFIG_RTE_LIBRTE_AVP_PMD=n +CONFIG_RTE_LIBRTE_AVP_DEBUG_RX=n +CONFIG_RTE_LIBRTE_AVP_DEBUG_TX=n +CONFIG_RTE_LIBRTE_AVP_DEBUG_BUFFERS=n +# Compile burst-oriented VIRTIO PMD driver +CONFIG_RTE_LIBRTE_VIRTIO_PMD=y +CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_RX=n +CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_TX=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=n +CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_RX=n +CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX=n +CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX_FREE=n +# Compile software PMD backed by AF_PACKET sockets (Linux only) +CONFIG_RTE_LIBRTE_PMD_AF_PACKET=n +# Compile software PMD backed by AF_XDP sockets (Linux only) +CONFIG_RTE_LIBRTE_PMD_AF_XDP=n +# Compile Memory Interface PMD driver (Linux only) +CONFIG_RTE_LIBRTE_PMD_MEMIF=n +# Compile link bonding PMD library +CONFIG_RTE_LIBRTE_PMD_BOND=n +CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB=n +CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB_L1=n +# Compile fail-safe PMD +CONFIG_RTE_LIBRTE_PMD_FAILSAFE=y +# Compile Marvell PMD driver +CONFIG_RTE_LIBRTE_MVPP2_PMD=n +# Compile Marvell MVNETA PMD driver +CONFIG_RTE_LIBRTE_MVNETA_PMD=n +# Compile support for VMBus library +CONFIG_RTE_LIBRTE_VMBUS=n +# Compile native PMD for Hyper-V/Azure +CONFIG_RTE_LIBRTE_NETVSC_PMD=n +CONFIG_RTE_LIBRTE_NETVSC_DEBUG_RX=n +CONFIG_RTE_LIBRTE_NETVSC_DEBUG_TX=n +CONFIG_RTE_LIBRTE_NETVSC_DEBUG_DUMP=n +# Compile virtual device driver for NetVSC on Hyper-V/Azure +CONFIG_RTE_LIBRTE_VDEV_NETVSC_PMD=n +# Compile null PMD +CONFIG_RTE_LIBRTE_PMD_NULL=n +# Compile software PMD backed by PCAP files +CONFIG_RTE_LIBRTE_PMD_PCAP=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 SOFTNIC PMD +CONFIG_RTE_LIBRTE_PMD_SOFTNIC=n +# Compile architecture we compile for. TAP PMD +# It is enabled by default for Linux only. +CONFIG_RTE_LIBRTE_PMD_TAP=y +# Do prefetch of packet data within PMD driver receive function +CONFIG_RTE_PMD_PACKET_PREFETCH=y +# Compile generic wireless base band device library +# EXPERIMENTAL: API may change without prior notice +CONFIG_RTE_LIBRTE_BBDEV=n +CONFIG_RTE_LIBRTE_BBDEV_DEBUG=n +CONFIG_RTE_BBDEV_MAX_DEVS=128 +CONFIG_RTE_BBDEV_OFFLOAD_COST=y +CONFIG_RTE_BBDEV_SDK_AVX2=n +CONFIG_RTE_BBDEV_SDK_AVX512=n +# Compile PMD for NULL bbdev device +CONFIG_RTE_LIBRTE_PMD_BBDEV_NULL=n +# Compile PMD for turbo software bbdev device +CONFIG_RTE_LIBRTE_PMD_BBDEV_TURBO_SW=n +# Compile PMD for Intel FPGA LTE FEC bbdev device +CONFIG_RTE_LIBRTE_PMD_BBDEV_FPGA_LTE_FEC=n +# Compile generic crypto device library +CONFIG_RTE_LIBRTE_CRYPTODEV=n +CONFIG_RTE_CRYPTO_MAX_DEVS=64 +# Compile PMD for ARMv8 Crypto device +CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO=n +CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO_DEBUG=n +# Compile NXP CAAM JR crypto Driver +CONFIG_RTE_LIBRTE_PMD_CAAM_JR=n +CONFIG_RTE_LIBRTE_PMD_CAAM_JR_BE=n +# Compile NXP DPAA2 crypto sec driver for CAAM HW +CONFIG_RTE_LIBRTE_PMD_DPAA2_SEC=n +# NXP DPAA caam - crypto driver +CONFIG_RTE_LIBRTE_PMD_DPAA_SEC=n +CONFIG_RTE_LIBRTE_DPAA_MAX_CRYPTODEV=4 +# Compile PMD for Cavium OCTEON TX crypto device +CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO=n +# Compile PMD for Marvell OCTEON TX2 crypto device +CONFIG_RTE_LIBRTE_PMD_OCTEONTX2_CRYPTO=n +# Compile PMD for QuickAssist based devices - see docs for details +CONFIG_RTE_LIBRTE_PMD_QAT=n +CONFIG_RTE_LIBRTE_PMD_QAT_SYM=n +CONFIG_RTE_LIBRTE_PMD_QAT_ASYM=n +# Max. number of QuickAssist devices, which can be detected and attached +CONFIG_RTE_PMD_QAT_MAX_PCI_DEVICES=48 +CONFIG_RTE_PMD_QAT_COMP_IM_BUFFER_SIZE=65536 +# Compile PMD for virtio crypto devices +CONFIG_RTE_LIBRTE_PMD_VIRTIO_CRYPTO=n +# Number of maximum virtio crypto devices +CONFIG_RTE_MAX_VIRTIO_CRYPTO=32 +# Compile PMD for AESNI backed device +CONFIG_RTE_LIBRTE_PMD_AESNI_MB=n +# Compile PMD for Software backed device +CONFIG_RTE_LIBRTE_PMD_OPENSSL=n +# Compile PMD for AESNI GCM device +CONFIG_RTE_LIBRTE_PMD_AESNI_GCM=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 +# Compile PMD for ZUC device +CONFIG_RTE_LIBRTE_PMD_ZUC=n +# Compile PMD for Crypto Scheduler device +CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER=n +# Compile PMD for NULL Crypto device +CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO=n +# Compile PMD for AMD CCP crypto device +CONFIG_RTE_LIBRTE_PMD_CCP=n +# Compile PMD for Marvell Crypto device +CONFIG_RTE_LIBRTE_PMD_MVSAM_CRYPTO=n +# Compile PMD for NITROX crypto device +CONFIG_RTE_LIBRTE_PMD_NITROX=n +# Compile generic security library +CONFIG_RTE_LIBRTE_SECURITY=n +# Compile generic compression device library +CONFIG_RTE_LIBRTE_COMPRESSDEV=n +CONFIG_RTE_COMPRESS_MAX_DEVS=64 +# Compile compressdev unit test +CONFIG_RTE_COMPRESSDEV_TEST=n +# Compile PMD for Octeontx ZIPVF compression device +CONFIG_RTE_LIBRTE_PMD_OCTEONTX_ZIPVF=n +# Compile PMD for ISA-L compression device +CONFIG_RTE_LIBRTE_PMD_ISAL=n +# Compile PMD for ZLIB compression device +CONFIG_RTE_LIBRTE_PMD_ZLIB=n +# Compile generic event device library +CONFIG_RTE_LIBRTE_EVENTDEV=n +CONFIG_RTE_LIBRTE_EVENTDEV_DEBUG=n +CONFIG_RTE_EVENT_MAX_DEVS=16 +CONFIG_RTE_EVENT_MAX_QUEUES_PER_DEV=64 +CONFIG_RTE_EVENT_TIMER_ADAPTER_NUM_MAX=32 +CONFIG_RTE_EVENT_ETH_INTR_RING_SIZE=1024 +CONFIG_RTE_EVENT_CRYPTO_ADAPTER_MAX_INSTANCE=32 +CONFIG_RTE_EVENT_ETH_TX_ADAPTER_MAX_INSTANCE=32 +# Compile PMD for skeleton event device +CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV=n +CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV_DEBUG=n +# Compile PMD for software event device +CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV=n +# Compile PMD for distributed software event device +CONFIG_RTE_LIBRTE_PMD_DSW_EVENTDEV=n +# Compile PMD for octeontx sso event device +CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF=n +# Compile PMD for octeontx2 sso event device +CONFIG_RTE_LIBRTE_PMD_OCTEONTX2_EVENTDEV=n +# Compile PMD for OPDL event device +CONFIG_RTE_LIBRTE_PMD_OPDL_EVENTDEV=n +# Compile PMD for NXP DPAA event device +CONFIG_RTE_LIBRTE_PMD_DPAA_EVENTDEV=n +# Compile PMD for NXP DPAA2 event device +CONFIG_RTE_LIBRTE_PMD_DPAA2_EVENTDEV=n +# Compile raw device support +# EXPERIMENTAL: API may change without prior notice +CONFIG_RTE_LIBRTE_RAWDEV=n +CONFIG_RTE_RAWDEV_MAX_DEVS=64 +CONFIG_RTE_LIBRTE_PMD_SKELETON_RAWDEV=n +# Compile PMD for NXP DPAA2 CMDIF raw device +CONFIG_RTE_LIBRTE_PMD_DPAA2_CMDIF_RAWDEV=n +# Compile PMD for NXP DPAA2 QDMA raw device +CONFIG_RTE_LIBRTE_PMD_DPAA2_QDMA_RAWDEV=n +# Compile PMD for Intel FPGA raw device +CONFIG_RTE_LIBRTE_PMD_IFPGA_RAWDEV=n +# Compile PMD for Intel IOAT raw device +CONFIG_RTE_LIBRTE_PMD_IOAT_RAWDEV=n +# Compile PMD for octeontx2 DMA raw device +CONFIG_RTE_LIBRTE_PMD_OCTEONTX2_DMA_RAWDEV=n +# Compile PMD for NTB raw device +CONFIG_RTE_LIBRTE_PMD_NTB_RAWDEV=n +# Compile librte_ring +CONFIG_RTE_LIBRTE_RING=y +# Compile librte_stack +CONFIG_RTE_LIBRTE_STACK=y +# Compile librte_mempool +CONFIG_RTE_LIBRTE_MEMPOOL=y +CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=512 +CONFIG_RTE_LIBRTE_MEMPOOL_DEBUG=n +# Compile Mempool drivers +CONFIG_RTE_DRIVER_MEMPOOL_BUCKET=y +CONFIG_RTE_DRIVER_MEMPOOL_BUCKET_SIZE_KB=64 +CONFIG_RTE_DRIVER_MEMPOOL_RING=y +CONFIG_RTE_DRIVER_MEMPOOL_STACK=y +# Compile PMD for octeontx fpa mempool device +CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL=n +# Compile PMD for octeontx2 npa mempool device +CONFIG_RTE_LIBRTE_OCTEONTX2_MEMPOOL=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=n +CONFIG_RTE_LIBRTE_TIMER_DEBUG=n +# Compile librte_cfgfile +CONFIG_RTE_LIBRTE_CFGFILE=n +# 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=n +# Compile librte_member +CONFIG_RTE_LIBRTE_MEMBER=y +# Compile librte_jobstats +CONFIG_RTE_LIBRTE_JOBSTATS=n +# Compile architecture we compile for. device metrics library +CONFIG_RTE_LIBRTE_METRICS=y +# Compile architecture we compile for. bitrate statistics library +CONFIG_RTE_LIBRTE_BITRATE=y +# Compile architecture we compile for. latency statistics library +CONFIG_RTE_LIBRTE_LATENCY_STATS=y +# Compile librte_telemetry +CONFIG_RTE_LIBRTE_TELEMETRY=n +# Compile librte_rcu +CONFIG_RTE_LIBRTE_RCU=n +CONFIG_RTE_LIBRTE_RCU_DEBUG=n +# Compile librte_rib +CONFIG_RTE_LIBRTE_RIB=n +# Compile librte_fib +CONFIG_RTE_LIBRTE_FIB=n +CONFIG_RTE_LIBRTE_FIB_DEBUG=n +# Compile librte_lpm +CONFIG_RTE_LIBRTE_LPM=n +CONFIG_RTE_LIBRTE_LPM_DEBUG=n +# Compile librte_acl +CONFIG_RTE_LIBRTE_ACL=n +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 GRO library +CONFIG_RTE_LIBRTE_GRO=y +# Compile GSO library +CONFIG_RTE_LIBRTE_GSO=y +# Compile librte_meter +CONFIG_RTE_LIBRTE_METER=y +# Compile librte_classify +CONFIG_RTE_LIBRTE_FLOW_CLASSIFY=n +# Compile librte_sched +CONFIG_RTE_LIBRTE_SCHED=n +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 architecture we compile for. distributor library +CONFIG_RTE_LIBRTE_DISTRIBUTOR=n +# Compile architecture we compile for. reorder library +CONFIG_RTE_LIBRTE_REORDER=n +# Compile librte_port +CONFIG_RTE_LIBRTE_PORT=n +CONFIG_RTE_PORT_STATS_COLLECT=n +CONFIG_RTE_PORT_PCAP=n +# Compile librte_table +CONFIG_RTE_LIBRTE_TABLE=n +CONFIG_RTE_TABLE_STATS_COLLECT=n +# Compile librte_pipeline +CONFIG_RTE_LIBRTE_PIPELINE=n +CONFIG_RTE_PIPELINE_STATS_COLLECT=n +# Compile librte_kni +CONFIG_RTE_LIBRTE_KNI=n +CONFIG_RTE_LIBRTE_PMD_KNI=n +CONFIG_RTE_KNI_KMOD=n +CONFIG_RTE_KNI_PREEMPT_DEFAULT=y +# Compile architecture we compile for. pdump library +CONFIG_RTE_LIBRTE_PDUMP=y +# Compile vhost user library +CONFIG_RTE_LIBRTE_VHOST=y +CONFIG_RTE_LIBRTE_VHOST_NUMA=y +CONFIG_RTE_LIBRTE_VHOST_DEBUG=n +# Compile vhost PMD +# To compile, CONFIG_RTE_LIBRTE_VHOST should be enabled. +CONFIG_RTE_LIBRTE_PMD_VHOST=y +# Compile IFC driver +# To compile, CONFIG_RTE_LIBRTE_VHOST and CONFIG_RTE_EAL_VFIO +# should be enabled. +CONFIG_RTE_LIBRTE_IFC_PMD=n +# Compile librte_bpf +CONFIG_RTE_LIBRTE_BPF=n +# allow load BPF from ELF files (requires libelf) +CONFIG_RTE_LIBRTE_BPF_ELF=n +# Compile librte_ipsec +CONFIG_RTE_LIBRTE_IPSEC=n +# Compile architecture we compile for. test application +CONFIG_RTE_APP_TEST=y +CONFIG_RTE_APP_TEST_RESOURCE_TAR=n +# Compile architecture we compile for. procinfo application +CONFIG_RTE_PROC_INFO=n +# Compile architecture we compile for. PMD test application +CONFIG_RTE_TEST_PMD=n +CONFIG_RTE_TEST_PMD_RECORD_CORE_CYCLES=n +CONFIG_RTE_TEST_PMD_RECORD_BURST_STATS=n +# Compile architecture we compile for. bbdev test application +CONFIG_RTE_TEST_BBDEV=n +# Compile architecture we compile for. compression performance application +CONFIG_RTE_APP_COMPRESS_PERF=n +# Compile architecture we compile for. crypto performance application +CONFIG_RTE_APP_CRYPTO_PERF=n +# Compile architecture we compile for. eventdev application +CONFIG_RTE_APP_EVENTDEV=n +CONFIG_RTE_EXEC_ENV_LINUX=y +CONFIG_RTE_EXEC_ENV_LINUXAPP=y +CONFIG_RTE_LIBRTE_VHOST_POSTCOPY=n +# Common libraries, before Bus/PMDs +# NXP DPAA BUS and drivers +# NXP FSLMC BUS and DPAA2 drivers +# NXP ENETC PMD Driver +# HINIC PMD driver +# Hisilicon HNS3 PMD driver +# Compile PMD for Intel FPGA raw device +# To compile, CONFIG_RTE_EAL_VFIO should be enabled. +CONFIG_RTE_ARCH_PPC_64=y +CONFIG_RTE_ARCH_64=y +CONFIG_RTE_TOOLCHAIN_GCC=y +# Note: Power doesn't have this support +# Note: Initially, all of architecture we compile for. PMD drivers compilation are turned off on Power +# Will turn on them only after architecture we compile for. successful testing on Power +CONFIG_RTE_LIBRTE_PMD_XENVIRT=n diff --git a/SOURCES/set_config.sh b/SOURCES/set_config.sh new file mode 100755 index 0000000..002386b --- /dev/null +++ b/SOURCES/set_config.sh @@ -0,0 +1,48 @@ +#!/bin/bash +# Copyright (C) 2017, Red Hat, Inc. +# +# set_config.sh will copy a configuration from $1 to $2, in the process +# checking that the sha header for $1 matches the header in $2 + +source configlib.sh + +if (( $# < 2 )); then + echo "$0: source dest [comment-marker]" + exit 1 +fi + +if [ ! -f "$1" ]; then + echo "Source file $1 must exist." + exit 1 +fi +src_file=$1 +shift + +if [ ! -f "$1" ]; then + echo "Dest file $1 must exist." + exit 1 +fi +dst_file=$1 +shift + +comment_sep=${1:-#} + +export LANG=en_US.utf8 + +DEST_FILE_SHA="" +SRC_FILE_SHA="" + +calc_sha DEST_FILE_SHA "$dst_file" "$comment_sep" || echo "Failed to calc sha" +retr_sha SRC_FILE_SHA "$src_file" "$comment_sep" || echo "Failed to retrieve sha" + +if [ "$DEST_FILE_SHA" != "$SRC_FILE_SHA" ]; then + echo "ERROR: The requisite starting sha from $dst_file does not match the" + echo " specified sha in $src_file." + echo "[ $DEST_FILE_SHA ] vs [ $SRC_FILE_SHA ]" + exit 1 +fi + +mv "$dst_file" "$dst_file".OLD +cp "$src_file" "$dst_file" +echo "copied 1 config file." +exit 0 diff --git a/SOURCES/x86_64-native-linuxapp-gcc-config b/SOURCES/x86_64-native-linuxapp-gcc-config new file mode 100644 index 0000000..81175d1 --- /dev/null +++ b/SOURCES/x86_64-native-linuxapp-gcc-config @@ -0,0 +1,591 @@ +# -*- cfg-sha: 59724fb7100d28a9ee24efa79c4206bcde839bc29bb98eea771474514e57e022 +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2010-2014 Intel Corporation +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2010-2016 Intel Corporation +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2010-2017 Intel Corporation +# String that appears before the version number +CONFIG_RTE_VER_PREFIX="DPDK" +# Version information completed when this file is processed for a build +CONFIG_RTE_VER_YEAR=19 +CONFIG_RTE_VER_MONTH=11 +CONFIG_RTE_VER_MINOR=1 +CONFIG_RTE_VER_SUFFIX="" +CONFIG_RTE_VER_RELEASE=99 + # RTE_EXEC_ENV values are the directories in mk/exec-env/ +CONFIG_RTE_EXEC_ENV="linuxapp" +# RTE_ARCH values are architecture we compile for. directories in mk/arch/ +CONFIG_RTE_ARCH="x86_64" +# machine can define specific variables or action for a specific board +# RTE_MACHINE values are architecture we compile for. directories in mk/machine/ +CONFIG_RTE_MACHINE="default" +# The compiler we use. +# RTE_TOOLCHAIN values are architecture we compile for. directories in mk/toolchain/ +CONFIG_RTE_TOOLCHAIN="gcc" +# Use intrinsics or assembly code for key routines +CONFIG_RTE_FORCE_INTRINSICS=n +# Machine forces strict alignment constraints. +CONFIG_RTE_ARCH_STRICT_ALIGN=n +# Enable link time optimization +CONFIG_RTE_ENABLE_LTO=n +# Compile to share library +CONFIG_RTE_BUILD_SHARED_LIB=n +# Use newest code breaking previous ABI +CONFIG_RTE_NEXT_ABI=n +# Machine's cache line size +CONFIG_RTE_CACHE_LINE_SIZE=64 +# Memory model +CONFIG_RTE_USE_C11_MEM_MODEL=n +# Compile Environment Abstraction Layer +CONFIG_RTE_LIBRTE_EAL=y +CONFIG_RTE_MAX_LCORE=128 +CONFIG_RTE_MAX_NUMA_NODES=8 +CONFIG_RTE_MAX_HEAPS=32 +CONFIG_RTE_MAX_MEMSEG_LISTS=64 +# each memseg list will be limited to either RTE_MAX_MEMSEG_PER_LIST pages +# or RTE_MAX_MEM_MB_PER_LIST megabytes worth of memory, whichever is smaller +CONFIG_RTE_MAX_MEMSEG_PER_LIST=8192 +CONFIG_RTE_MAX_MEM_MB_PER_LIST=32768 +# a "type" is a combination of page size and NUMA node. total number of memseg +# lists per type will be limited to either RTE_MAX_MEMSEG_PER_TYPE pages (split +# over multiple lists of RTE_MAX_MEMSEG_PER_LIST pages), or +# RTE_MAX_MEM_MB_PER_TYPE megabytes of memory (split over multiple lists of +# RTE_MAX_MEM_MB_PER_LIST), whichever is smaller +CONFIG_RTE_MAX_MEMSEG_PER_TYPE=32768 +CONFIG_RTE_MAX_MEM_MB_PER_TYPE=131072 +# global maximum usable amount of VA, in megabytes +CONFIG_RTE_MAX_MEM_MB=524288 +CONFIG_RTE_MAX_MEMZONE=2560 +CONFIG_RTE_MAX_TAILQ=32 +CONFIG_RTE_ENABLE_ASSERT=n +CONFIG_RTE_LOG_DP_LEVEL=RTE_LOG_INFO +CONFIG_RTE_LOG_HISTORY=256 +CONFIG_RTE_BACKTRACE=y +CONFIG_RTE_LIBEAL_USE_HPET=n +CONFIG_RTE_EAL_ALWAYS_PANIC_ON_ERROR=n +CONFIG_RTE_EAL_IGB_UIO=n +CONFIG_RTE_EAL_VFIO=y +CONFIG_RTE_MAX_VFIO_GROUPS=64 +CONFIG_RTE_MAX_VFIO_CONTAINERS=64 +CONFIG_RTE_MALLOC_DEBUG=n +CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=y +CONFIG_RTE_USE_LIBBSD=n +# Recognize/ignore architecture we compile for. AVX/AVX512 CPU flags for performance/power testing. +# AVX512 is marked as experimental for now, will enable it after enough +# field test and possible optimization. +CONFIG_RTE_ENABLE_AVX=y +CONFIG_RTE_ENABLE_AVX512=n +# Use ARM LSE ATOMIC instructions +CONFIG_RTE_ARM_FEATURE_ATOMICS=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 architecture we compile for. PCI library +CONFIG_RTE_LIBRTE_PCI=y +# Compile architecture we compile for. 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=128 +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 +CONFIG_RTE_ETHDEV_PROFILE_WITH_VTUNE=n +# Turn off Tx preparation stage +# Warning: rte_eth_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 +# Common libraries, before Bus/PMDs +CONFIG_RTE_LIBRTE_COMMON_DPAAX=n +# Compile architecture we compile for. Intel FPGA bus +CONFIG_RTE_LIBRTE_IFPGA_BUS=n +# Compile PCI bus driver +CONFIG_RTE_LIBRTE_PCI_BUS=y +# Compile architecture we compile for. vdev bus +CONFIG_RTE_LIBRTE_VDEV_BUS=y +# Compile ARK PMD +CONFIG_RTE_LIBRTE_ARK_PMD=n +CONFIG_RTE_LIBRTE_ARK_PAD_TX=y +CONFIG_RTE_LIBRTE_ARK_DEBUG_RX=n +CONFIG_RTE_LIBRTE_ARK_DEBUG_TX=n +CONFIG_RTE_LIBRTE_ARK_DEBUG_STATS=n +CONFIG_RTE_LIBRTE_ARK_DEBUG_TRACE=n +# Compile Aquantia Atlantic PMD driver +CONFIG_RTE_LIBRTE_ATLANTIC_PMD=n +# Compile AMD PMD +CONFIG_RTE_LIBRTE_AXGBE_PMD=n +CONFIG_RTE_LIBRTE_AXGBE_PMD_DEBUG=n +# Compile burst-oriented Broadcom PMD driver +CONFIG_RTE_LIBRTE_BNX2X_PMD=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 Broadcom BNXT PMD driver +CONFIG_RTE_LIBRTE_BNXT_PMD=y +# Compile burst-oriented Chelsio Terminator (CXGBE) PMD +CONFIG_RTE_LIBRTE_CXGBE_PMD=n +# Compile burst-oriented NXP PFE PMD driver +CONFIG_RTE_LIBRTE_PFE_PMD=n +# NXP DPAA Bus +CONFIG_RTE_LIBRTE_DPAA_BUS=n +CONFIG_RTE_LIBRTE_DPAA_MEMPOOL=n +CONFIG_RTE_LIBRTE_DPAA_PMD=n +CONFIG_RTE_LIBRTE_DPAA_HWDEBUG=n +# Compile NXP DPAA2 FSL-MC Bus +CONFIG_RTE_LIBRTE_FSLMC_BUS=n +# Compile Support Libraries for NXP DPAA2 +CONFIG_RTE_LIBRTE_DPAA2_MEMPOOL=n +CONFIG_RTE_LIBRTE_DPAA2_USE_PHYS_IOVA=y +# Compile burst-oriented NXP DPAA2 PMD driver +CONFIG_RTE_LIBRTE_DPAA2_PMD=n +CONFIG_RTE_LIBRTE_DPAA2_DEBUG_DRIVER=n +# Compile NXP ENETC PMD Driver +CONFIG_RTE_LIBRTE_ENETC_PMD=n +# Compile burst-oriented Amazon ENA PMD driver +CONFIG_RTE_LIBRTE_ENA_PMD=n +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_COM_DEBUG=n +# Compile burst-oriented Cisco ENIC PMD driver +CONFIG_RTE_LIBRTE_ENIC_PMD=y +# Compile burst-oriented IGB & EM PMD drivers +CONFIG_RTE_LIBRTE_EM_PMD=n +CONFIG_RTE_LIBRTE_IGB_PMD=y +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_PF_DISABLE_STRIP_CRC=n +# Compile burst-oriented HINIC PMD driver +CONFIG_RTE_LIBRTE_HINIC_PMD=n +# Compile burst-oriented HNS3 PMD driver +CONFIG_RTE_LIBRTE_HNS3_PMD=n +# Compile burst-oriented IXGBE PMD driver +CONFIG_RTE_LIBRTE_IXGBE_PMD=y +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_PF_DISABLE_STRIP_CRC=n +CONFIG_RTE_IXGBE_INC_VECTOR=y +CONFIG_RTE_LIBRTE_IXGBE_BYPASS=n +# Compile burst-oriented I40E PMD driver +CONFIG_RTE_LIBRTE_I40E_PMD=y +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_RX_ALLOW_BULK_ALLOC=y +CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=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_VM=4 +# Compile burst-oriented FM10K PMD +CONFIG_RTE_LIBRTE_FM10K_PMD=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_RX_OLFLAGS_ENABLE=y +CONFIG_RTE_LIBRTE_FM10K_INC_VECTOR=y +# Compile burst-oriented ICE PMD driver +CONFIG_RTE_LIBRTE_ICE_PMD=n +CONFIG_RTE_LIBRTE_ICE_DEBUG_RX=n +CONFIG_RTE_LIBRTE_ICE_DEBUG_TX=n +CONFIG_RTE_LIBRTE_ICE_DEBUG_TX_FREE=n +CONFIG_RTE_LIBRTE_ICE_RX_ALLOW_BULK_ALLOC=y +CONFIG_RTE_LIBRTE_ICE_16BYTE_RX_DESC=n +# Compile burst-oriented IAVF PMD driver +CONFIG_RTE_LIBRTE_IAVF_PMD=n +CONFIG_RTE_LIBRTE_IAVF_DEBUG_TX=n +CONFIG_RTE_LIBRTE_IAVF_DEBUG_TX_FREE=n +CONFIG_RTE_LIBRTE_IAVF_DEBUG_RX=n +CONFIG_RTE_LIBRTE_IAVF_DEBUG_DUMP_DESC=n +CONFIG_RTE_LIBRTE_IAVF_16BYTE_RX_DESC=n +# Compile burst-oriented IPN3KE PMD driver +CONFIG_RTE_LIBRTE_IPN3KE_PMD=n +# Compile burst-oriented Mellanox ConnectX-3 (MLX4) PMD +CONFIG_RTE_LIBRTE_MLX4_PMD=y +CONFIG_RTE_LIBRTE_MLX4_DEBUG=n +# Compile burst-oriented Mellanox ConnectX-4, ConnectX-5, +# ConnectX-6 & BlueField (MLX5) PMD +CONFIG_RTE_LIBRTE_MLX5_PMD=y +CONFIG_RTE_LIBRTE_MLX5_DEBUG=n +# Linking method for mlx4/5 dependency on ibverbs and related libraries +# Default linking is dynamic by linker. +# Other options are: dynamic by dlopen at run-time, or statically embedded. +CONFIG_RTE_IBVERBS_LINK_DLOPEN=n +CONFIG_RTE_IBVERBS_LINK_STATIC=n +# Compile burst-oriented Netronome NFP PMD driver +CONFIG_RTE_LIBRTE_NFP_PMD=y +CONFIG_RTE_LIBRTE_NFP_DEBUG_TX=n +CONFIG_RTE_LIBRTE_NFP_DEBUG_RX=n +# QLogic 10G/25G/40G/50G/100G PMD +CONFIG_RTE_LIBRTE_QEDE_PMD=y +CONFIG_RTE_LIBRTE_QEDE_DEBUG_TX=n +CONFIG_RTE_LIBRTE_QEDE_DEBUG_RX=n +#Provides abs path/name of architecture we compile for. firmware file. +#Empty string denotes driver will use default firmware +CONFIG_RTE_LIBRTE_QEDE_FW="" +# Compile burst-oriented Solarflare libefx-based PMD +CONFIG_RTE_LIBRTE_SFC_EFX_PMD=n +CONFIG_RTE_LIBRTE_SFC_EFX_DEBUG=n +# Compile software PMD backed by SZEDATA2 device +CONFIG_RTE_LIBRTE_PMD_SZEDATA2=n +# Compile software PMD backed by NFB device +CONFIG_RTE_LIBRTE_NFB_PMD=n +# Compile burst-oriented Cavium Thunderx NICVF PMD driver +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD=n +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_RX=n +CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_TX=n +# Compile burst-oriented Cavium LiquidIO PMD driver +CONFIG_RTE_LIBRTE_LIO_PMD=n +CONFIG_RTE_LIBRTE_LIO_DEBUG_RX=n +CONFIG_RTE_LIBRTE_LIO_DEBUG_TX=n +CONFIG_RTE_LIBRTE_LIO_DEBUG_MBOX=n +CONFIG_RTE_LIBRTE_LIO_DEBUG_REGS=n +# Compile burst-oriented Cavium OCTEONTX network PMD driver +CONFIG_RTE_LIBRTE_OCTEONTX_PMD=n +# Compile burst-oriented Marvell OCTEON TX2 network PMD driver +CONFIG_RTE_LIBRTE_OCTEONTX2_PMD=n +# Compile WRS accelerated virtual port (AVP) guest PMD driver +CONFIG_RTE_LIBRTE_AVP_PMD=n +CONFIG_RTE_LIBRTE_AVP_DEBUG_RX=n +CONFIG_RTE_LIBRTE_AVP_DEBUG_TX=n +CONFIG_RTE_LIBRTE_AVP_DEBUG_BUFFERS=n +# Compile burst-oriented VIRTIO PMD driver +CONFIG_RTE_LIBRTE_VIRTIO_PMD=y +CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_RX=n +CONFIG_RTE_LIBRTE_VIRTIO_DEBUG_TX=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=n +CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_RX=n +CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX=n +CONFIG_RTE_LIBRTE_VMXNET3_DEBUG_TX_FREE=n +# Compile software PMD backed by AF_PACKET sockets (Linux only) +CONFIG_RTE_LIBRTE_PMD_AF_PACKET=n +# Compile software PMD backed by AF_XDP sockets (Linux only) +CONFIG_RTE_LIBRTE_PMD_AF_XDP=n +# Compile Memory Interface PMD driver (Linux only) +CONFIG_RTE_LIBRTE_PMD_MEMIF=n +# Compile link bonding PMD library +CONFIG_RTE_LIBRTE_PMD_BOND=n +CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB=n +CONFIG_RTE_LIBRTE_BOND_DEBUG_ALB_L1=n +# Compile fail-safe PMD +CONFIG_RTE_LIBRTE_PMD_FAILSAFE=y +# Compile Marvell PMD driver +CONFIG_RTE_LIBRTE_MVPP2_PMD=n +# Compile Marvell MVNETA PMD driver +CONFIG_RTE_LIBRTE_MVNETA_PMD=n +# Compile support for VMBus library +CONFIG_RTE_LIBRTE_VMBUS=y +# Compile native PMD for Hyper-V/Azure +CONFIG_RTE_LIBRTE_NETVSC_PMD=y +CONFIG_RTE_LIBRTE_NETVSC_DEBUG_RX=n +CONFIG_RTE_LIBRTE_NETVSC_DEBUG_TX=n +CONFIG_RTE_LIBRTE_NETVSC_DEBUG_DUMP=n +# Compile virtual device driver for NetVSC on Hyper-V/Azure +CONFIG_RTE_LIBRTE_VDEV_NETVSC_PMD=y +# Compile null PMD +CONFIG_RTE_LIBRTE_PMD_NULL=n +# Compile software PMD backed by PCAP files +CONFIG_RTE_LIBRTE_PMD_PCAP=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 SOFTNIC PMD +CONFIG_RTE_LIBRTE_PMD_SOFTNIC=n +# Compile architecture we compile for. TAP PMD +# It is enabled by default for Linux only. +CONFIG_RTE_LIBRTE_PMD_TAP=y +# Do prefetch of packet data within PMD driver receive function +CONFIG_RTE_PMD_PACKET_PREFETCH=y +# Compile generic wireless base band device library +# EXPERIMENTAL: API may change without prior notice +CONFIG_RTE_LIBRTE_BBDEV=n +CONFIG_RTE_LIBRTE_BBDEV_DEBUG=n +CONFIG_RTE_BBDEV_MAX_DEVS=128 +CONFIG_RTE_BBDEV_OFFLOAD_COST=y +CONFIG_RTE_BBDEV_SDK_AVX2=n +CONFIG_RTE_BBDEV_SDK_AVX512=n +# Compile PMD for NULL bbdev device +CONFIG_RTE_LIBRTE_PMD_BBDEV_NULL=n +# Compile PMD for turbo software bbdev device +CONFIG_RTE_LIBRTE_PMD_BBDEV_TURBO_SW=n +# Compile PMD for Intel FPGA LTE FEC bbdev device +CONFIG_RTE_LIBRTE_PMD_BBDEV_FPGA_LTE_FEC=n +# Compile generic crypto device library +CONFIG_RTE_LIBRTE_CRYPTODEV=n +CONFIG_RTE_CRYPTO_MAX_DEVS=64 +# Compile PMD for ARMv8 Crypto device +CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO=n +CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO_DEBUG=n +# Compile NXP CAAM JR crypto Driver +CONFIG_RTE_LIBRTE_PMD_CAAM_JR=n +CONFIG_RTE_LIBRTE_PMD_CAAM_JR_BE=n +# Compile NXP DPAA2 crypto sec driver for CAAM HW +CONFIG_RTE_LIBRTE_PMD_DPAA2_SEC=n +# NXP DPAA caam - crypto driver +CONFIG_RTE_LIBRTE_PMD_DPAA_SEC=n +CONFIG_RTE_LIBRTE_DPAA_MAX_CRYPTODEV=4 +# Compile PMD for Cavium OCTEON TX crypto device +CONFIG_RTE_LIBRTE_PMD_OCTEONTX_CRYPTO=n +# Compile PMD for Marvell OCTEON TX2 crypto device +CONFIG_RTE_LIBRTE_PMD_OCTEONTX2_CRYPTO=n +# Compile PMD for QuickAssist based devices - see docs for details +CONFIG_RTE_LIBRTE_PMD_QAT=n +CONFIG_RTE_LIBRTE_PMD_QAT_SYM=n +CONFIG_RTE_LIBRTE_PMD_QAT_ASYM=n +# Max. number of QuickAssist devices, which can be detected and attached +CONFIG_RTE_PMD_QAT_MAX_PCI_DEVICES=48 +CONFIG_RTE_PMD_QAT_COMP_IM_BUFFER_SIZE=65536 +# Compile PMD for virtio crypto devices +CONFIG_RTE_LIBRTE_PMD_VIRTIO_CRYPTO=n +# Number of maximum virtio crypto devices +CONFIG_RTE_MAX_VIRTIO_CRYPTO=32 +# Compile PMD for AESNI backed device +CONFIG_RTE_LIBRTE_PMD_AESNI_MB=n +# Compile PMD for Software backed device +CONFIG_RTE_LIBRTE_PMD_OPENSSL=n +# Compile PMD for AESNI GCM device +CONFIG_RTE_LIBRTE_PMD_AESNI_GCM=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 +# Compile PMD for ZUC device +CONFIG_RTE_LIBRTE_PMD_ZUC=n +# Compile PMD for Crypto Scheduler device +CONFIG_RTE_LIBRTE_PMD_CRYPTO_SCHEDULER=n +# Compile PMD for NULL Crypto device +CONFIG_RTE_LIBRTE_PMD_NULL_CRYPTO=n +# Compile PMD for AMD CCP crypto device +CONFIG_RTE_LIBRTE_PMD_CCP=n +# Compile PMD for Marvell Crypto device +CONFIG_RTE_LIBRTE_PMD_MVSAM_CRYPTO=n +# Compile PMD for NITROX crypto device +CONFIG_RTE_LIBRTE_PMD_NITROX=n +# Compile generic security library +CONFIG_RTE_LIBRTE_SECURITY=n +# Compile generic compression device library +CONFIG_RTE_LIBRTE_COMPRESSDEV=n +CONFIG_RTE_COMPRESS_MAX_DEVS=64 +# Compile compressdev unit test +CONFIG_RTE_COMPRESSDEV_TEST=n +# Compile PMD for Octeontx ZIPVF compression device +CONFIG_RTE_LIBRTE_PMD_OCTEONTX_ZIPVF=n +# Compile PMD for ISA-L compression device +CONFIG_RTE_LIBRTE_PMD_ISAL=n +# Compile PMD for ZLIB compression device +CONFIG_RTE_LIBRTE_PMD_ZLIB=n +# Compile generic event device library +CONFIG_RTE_LIBRTE_EVENTDEV=n +CONFIG_RTE_LIBRTE_EVENTDEV_DEBUG=n +CONFIG_RTE_EVENT_MAX_DEVS=16 +CONFIG_RTE_EVENT_MAX_QUEUES_PER_DEV=64 +CONFIG_RTE_EVENT_TIMER_ADAPTER_NUM_MAX=32 +CONFIG_RTE_EVENT_ETH_INTR_RING_SIZE=1024 +CONFIG_RTE_EVENT_CRYPTO_ADAPTER_MAX_INSTANCE=32 +CONFIG_RTE_EVENT_ETH_TX_ADAPTER_MAX_INSTANCE=32 +# Compile PMD for skeleton event device +CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV=n +CONFIG_RTE_LIBRTE_PMD_SKELETON_EVENTDEV_DEBUG=n +# Compile PMD for software event device +CONFIG_RTE_LIBRTE_PMD_SW_EVENTDEV=n +# Compile PMD for distributed software event device +CONFIG_RTE_LIBRTE_PMD_DSW_EVENTDEV=n +# Compile PMD for octeontx sso event device +CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF=n +# Compile PMD for octeontx2 sso event device +CONFIG_RTE_LIBRTE_PMD_OCTEONTX2_EVENTDEV=n +# Compile PMD for OPDL event device +CONFIG_RTE_LIBRTE_PMD_OPDL_EVENTDEV=n +# Compile PMD for NXP DPAA event device +CONFIG_RTE_LIBRTE_PMD_DPAA_EVENTDEV=n +# Compile PMD for NXP DPAA2 event device +CONFIG_RTE_LIBRTE_PMD_DPAA2_EVENTDEV=n +# Compile raw device support +# EXPERIMENTAL: API may change without prior notice +CONFIG_RTE_LIBRTE_RAWDEV=n +CONFIG_RTE_RAWDEV_MAX_DEVS=64 +CONFIG_RTE_LIBRTE_PMD_SKELETON_RAWDEV=n +# Compile PMD for NXP DPAA2 CMDIF raw device +CONFIG_RTE_LIBRTE_PMD_DPAA2_CMDIF_RAWDEV=n +# Compile PMD for NXP DPAA2 QDMA raw device +CONFIG_RTE_LIBRTE_PMD_DPAA2_QDMA_RAWDEV=n +# Compile PMD for Intel FPGA raw device +CONFIG_RTE_LIBRTE_PMD_IFPGA_RAWDEV=n +# Compile PMD for Intel IOAT raw device +CONFIG_RTE_LIBRTE_PMD_IOAT_RAWDEV=n +# Compile PMD for octeontx2 DMA raw device +CONFIG_RTE_LIBRTE_PMD_OCTEONTX2_DMA_RAWDEV=n +# Compile PMD for NTB raw device +CONFIG_RTE_LIBRTE_PMD_NTB_RAWDEV=n +# Compile librte_ring +CONFIG_RTE_LIBRTE_RING=y +# Compile librte_stack +CONFIG_RTE_LIBRTE_STACK=y +# Compile librte_mempool +CONFIG_RTE_LIBRTE_MEMPOOL=y +CONFIG_RTE_MEMPOOL_CACHE_MAX_SIZE=512 +CONFIG_RTE_LIBRTE_MEMPOOL_DEBUG=n +# Compile Mempool drivers +CONFIG_RTE_DRIVER_MEMPOOL_BUCKET=y +CONFIG_RTE_DRIVER_MEMPOOL_BUCKET_SIZE_KB=64 +CONFIG_RTE_DRIVER_MEMPOOL_RING=y +CONFIG_RTE_DRIVER_MEMPOOL_STACK=y +# Compile PMD for octeontx fpa mempool device +CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL=n +# Compile PMD for octeontx2 npa mempool device +CONFIG_RTE_LIBRTE_OCTEONTX2_MEMPOOL=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=n +CONFIG_RTE_LIBRTE_TIMER_DEBUG=n +# Compile librte_cfgfile +CONFIG_RTE_LIBRTE_CFGFILE=n +# 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=n +# Compile librte_member +CONFIG_RTE_LIBRTE_MEMBER=y +# Compile librte_jobstats +CONFIG_RTE_LIBRTE_JOBSTATS=n +# Compile architecture we compile for. device metrics library +CONFIG_RTE_LIBRTE_METRICS=y +# Compile architecture we compile for. bitrate statistics library +CONFIG_RTE_LIBRTE_BITRATE=y +# Compile architecture we compile for. latency statistics library +CONFIG_RTE_LIBRTE_LATENCY_STATS=y +# Compile librte_telemetry +CONFIG_RTE_LIBRTE_TELEMETRY=n +# Compile librte_rcu +CONFIG_RTE_LIBRTE_RCU=n +CONFIG_RTE_LIBRTE_RCU_DEBUG=n +# Compile librte_rib +CONFIG_RTE_LIBRTE_RIB=n +# Compile librte_fib +CONFIG_RTE_LIBRTE_FIB=n +CONFIG_RTE_LIBRTE_FIB_DEBUG=n +# Compile librte_lpm +CONFIG_RTE_LIBRTE_LPM=n +CONFIG_RTE_LIBRTE_LPM_DEBUG=n +# Compile librte_acl +CONFIG_RTE_LIBRTE_ACL=n +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 GRO library +CONFIG_RTE_LIBRTE_GRO=y +# Compile GSO library +CONFIG_RTE_LIBRTE_GSO=y +# Compile librte_meter +CONFIG_RTE_LIBRTE_METER=y +# Compile librte_classify +CONFIG_RTE_LIBRTE_FLOW_CLASSIFY=n +# Compile librte_sched +CONFIG_RTE_LIBRTE_SCHED=n +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 architecture we compile for. distributor library +CONFIG_RTE_LIBRTE_DISTRIBUTOR=n +# Compile architecture we compile for. reorder library +CONFIG_RTE_LIBRTE_REORDER=n +# Compile librte_port +CONFIG_RTE_LIBRTE_PORT=n +CONFIG_RTE_PORT_STATS_COLLECT=n +CONFIG_RTE_PORT_PCAP=n +# Compile librte_table +CONFIG_RTE_LIBRTE_TABLE=n +CONFIG_RTE_TABLE_STATS_COLLECT=n +# Compile librte_pipeline +CONFIG_RTE_LIBRTE_PIPELINE=n +CONFIG_RTE_PIPELINE_STATS_COLLECT=n +# Compile librte_kni +CONFIG_RTE_LIBRTE_KNI=n +CONFIG_RTE_LIBRTE_PMD_KNI=n +CONFIG_RTE_KNI_KMOD=n +CONFIG_RTE_KNI_PREEMPT_DEFAULT=y +# Compile architecture we compile for. pdump library +CONFIG_RTE_LIBRTE_PDUMP=y +# Compile vhost user library +CONFIG_RTE_LIBRTE_VHOST=y +CONFIG_RTE_LIBRTE_VHOST_NUMA=y +CONFIG_RTE_LIBRTE_VHOST_DEBUG=n +# Compile vhost PMD +# To compile, CONFIG_RTE_LIBRTE_VHOST should be enabled. +CONFIG_RTE_LIBRTE_PMD_VHOST=y +# Compile IFC driver +# To compile, CONFIG_RTE_LIBRTE_VHOST and CONFIG_RTE_EAL_VFIO +# should be enabled. +CONFIG_RTE_LIBRTE_IFC_PMD=n +# Compile librte_bpf +CONFIG_RTE_LIBRTE_BPF=n +# allow load BPF from ELF files (requires libelf) +CONFIG_RTE_LIBRTE_BPF_ELF=n +# Compile librte_ipsec +CONFIG_RTE_LIBRTE_IPSEC=n +# Compile architecture we compile for. test application +CONFIG_RTE_APP_TEST=y +CONFIG_RTE_APP_TEST_RESOURCE_TAR=n +# Compile architecture we compile for. procinfo application +CONFIG_RTE_PROC_INFO=n +# Compile architecture we compile for. PMD test application +CONFIG_RTE_TEST_PMD=n +CONFIG_RTE_TEST_PMD_RECORD_CORE_CYCLES=n +CONFIG_RTE_TEST_PMD_RECORD_BURST_STATS=n +# Compile architecture we compile for. bbdev test application +CONFIG_RTE_TEST_BBDEV=n +# Compile architecture we compile for. compression performance application +CONFIG_RTE_APP_COMPRESS_PERF=n +# Compile architecture we compile for. crypto performance application +CONFIG_RTE_APP_CRYPTO_PERF=n +# Compile architecture we compile for. eventdev application +CONFIG_RTE_APP_EVENTDEV=n +CONFIG_RTE_EXEC_ENV_LINUX=y +CONFIG_RTE_EXEC_ENV_LINUXAPP=y +CONFIG_RTE_LIBRTE_VHOST_POSTCOPY=n +# Common libraries, before Bus/PMDs +# NXP DPAA BUS and drivers +# NXP FSLMC BUS and DPAA2 drivers +# NXP ENETC PMD Driver +# HINIC PMD driver +# Hisilicon HNS3 PMD driver +# Compile PMD for Intel FPGA raw device +# To compile, CONFIG_RTE_EAL_VFIO should be enabled. +CONFIG_RTE_ARCH_X86_64=y +CONFIG_RTE_ARCH_X86=y +CONFIG_RTE_ARCH_64=y +CONFIG_RTE_TOOLCHAIN_GCC=y +CONFIG_RTE_LIBRTE_PMD_XENVIRT=n diff --git a/SPECS/openvswitch2.13.spec b/SPECS/openvswitch2.13.spec new file mode 100644 index 0000000..8258d7e --- /dev/null +++ b/SPECS/openvswitch2.13.spec @@ -0,0 +1,1563 @@ +# Copyright (C) 2009, 2010, 2013, 2014 Nicira Networks, Inc. +# +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. This file is offered as-is, +# without warranty of any kind. +# +# If tests have to be skipped while building, specify the '--without check' +# option. For example: +# rpmbuild -bb --without check rhel/openvswitch-fedora.spec + +# This defines the base package name's version. + +%define pkgname openvswitch2.13 + +#%%global commit0 2a4f006c79c06628634490627ac72d8c76477e56 +#%%global date 20200121 +#%%global shortcommit0 %(c=%{commit0}; echo ${c:0:7}) +# DPDK commit +#%%global commit1 ef8b7c505f10897621c0801d8ef3e961385246f8 +#%%global shortcommit1 %(c=%{commit1}; echo ${c:0:7}) + +# Enable PIE, bz#955181 +%global _hardened_build 1 + +# RHEL-7 doesn't define _rundir macro yet +# Fedora 15 onwards uses /run as _rundir +%if 0%{!?_rundir:1} +%define _rundir /run +%endif + +# FIXME Test "STP - flush the fdb and mdb when topology changed" fails on s390x +# FIXME 2 tests fails on ppc64le. They will be hopefully fixed before official 2.11 +# Disable Tests due to https://bugs.centos.org/view.php?id=16969, tests failing +# as build is running on CentOS7 builder, once builders are CentOS8 based tests can +# be re enabled. +%ifarch %{ix86} x86_64 aarch64 +%bcond_with check +%else +%bcond_with check +%endif +# option to run kernel datapath tests, requires building as root! +%bcond_with check_datapath_kernel +# option to build with libcap-ng, needed for running OVS as regular user +%bcond_without libcapng +# option to build with ipsec support +%bcond_with ipsec + +# Build python2 (that provides python) and python3 subpackages on Fedora +# Build only python3 (that provides python) subpackage on RHEL8 +# Build only python subpackage on RHEL7 +%if 0%{?rhel} > 7 || 0%{?fedora} +# On RHEL8 Sphinx is included in buildroot +%global external_sphinx 1 +%else +# Don't use external sphinx (RHV doesn't have optional repositories enabled) +%global external_sphinx 0 +%endif + +Name: %{pkgname} +Summary: Open vSwitch +Group: System Environment/Daemons daemon/database/utilities +URL: http://www.openvswitch.org/ +Version: 2.13.0 +Release: 39%{?commit0:.%{date}git%{shortcommit0}}%{?commit1:dpdk%{shortcommit1}}%{?dist} + +# Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the +# lib/sflow*.[ch] files are SISSL +# datapath/ is GPLv2 (although not built into any of the binary packages) +License: ASL 2.0 and LGPLv2+ and SISSL + +%define dpdkver %{?commit1}%{!?commit1:19.11.1} +%define dpdkdir dpdk +%define dpdksver %(echo %{dpdkver} | cut -d. -f-2) +# NOTE: DPDK does not currently build for s390x +# DPDK on aarch64 is not stable enough to be enabled in FDP +%define dpdkarches x86_64 ppc64le + +%if 0%{?commit0:1} +Source: https://github.com/openvswitch/ovs/archive/%{commit0}.tar.gz#/openvswitch-%{shortcommit0}.tar.gz +%else +Source: https://github.com/openvswitch/ovs/archive/v%{version}.tar.gz#/openvswitch-%{version}.tar.gz +%endif +%if 0%{?commit1:1} +Source10: https://git.dpdk.org/dpdk/snapshot/dpdk-%{dpdkver}.tar.xz +%else +Source10: https://fast.dpdk.org/rel/dpdk-%{dpdkver}.tar.xz +%endif + +%define docutilsver 0.12 +%define pygmentsver 1.4 +%define sphinxver 1.1.3 +Source100: https://pypi.io/packages/source/d/docutils/docutils-%{docutilsver}.tar.gz +Source101: https://pypi.io/packages/source/P/Pygments/Pygments-%{pygmentsver}.tar.gz +Source102: https://pypi.io/packages/source/S/Sphinx/Sphinx-%{sphinxver}.tar.gz + +Source500: configlib.sh +Source502: set_config.sh + +# Important: source503 is used as the actual copy file +# @TODO: this causes a warning - fix it? +Source504: arm64-armv8a-linuxapp-gcc-config +Source505: ppc_64-power8-linuxapp-gcc-config +Source506: x86_64-native-linuxapp-gcc-config + +Patch: openvswitch-%{version}.patch + +# The DPDK is designed to optimize througput of network traffic using, among +# other techniques, carefully crafted assembly instructions. As such it +# needs extensive work to port it to other architectures. +ExclusiveArch: x86_64 aarch64 ppc64le s390x + +# Do not enable this otherwise YUM will break on any upgrade. +# Provides: openvswitch +Conflicts: openvswitch < 2.13 +Conflicts: openvswitch-dpdk < 2.13 + +# dpdk_mach_arch maps between rpm and dpdk arch name, often same as _target_cpu +# dpdk_mach_tmpl is the config template dpdk_mach name, often "native" +# dpdk_mach is the actual dpdk_mach name used in the dpdk make system +%ifarch x86_64 +%define dpdk_mach_arch x86_64 +%define dpdk_mach_tmpl native +%define dpdk_mach default +%endif +%ifarch aarch64 +%define dpdk_mach_arch arm64 +%define dpdk_mach_tmpl armv8a +%define dpdk_mach armv8a +%endif +%ifarch ppc64le +%define dpdk_mach_arch ppc_64 +%define dpdk_mach_tmpl power8 +%define dpdk_mach power8 +%endif + +%define dpdktarget %{dpdk_mach_arch}-%{dpdk_mach_tmpl}-linuxapp-gcc + +# FIXME Sphinx is used to generate some manpages, unfortunately, on RHEL, it's +# in the -optional repository and so we can't require it directly since RHV +# doesn't have the -optional repository enabled and so TPS fails +%if %{external_sphinx} +BuildRequires: python3-sphinx +%else +# Sphinx dependencies +BuildRequires: python-devel +BuildRequires: python-setuptools +#BuildRequires: python2-docutils +BuildRequires: python-jinja2 +BuildRequires: python-nose +#BuildRequires: python2-pygments +# docutils dependencies +BuildRequires: python-imaging +# pygments dependencies +BuildRequires: python-nose +%endif + +BuildRequires: gcc gcc-c++ make +BuildRequires: autoconf automake libtool +BuildRequires: systemd-units openssl openssl-devel +BuildRequires: python3-devel python3-setuptools +BuildRequires: desktop-file-utils +BuildRequires: groff-base graphviz +BuildRequires: unbound-devel +# make check dependencies +BuildRequires: procps-ng +%if 0%{?rhel} > 7 || 0%{?fedora} +BuildRequires: python3-pyOpenSSL +%endif +%if %{with check_datapath_kernel} +BuildRequires: nmap-ncat +# would be useful but not available in RHEL or EPEL +#BuildRequires: pyftpdlib +%endif + +%if %{with libcapng} +BuildRequires: libcap-ng libcap-ng-devel +%endif + +%ifarch %{dpdkarches} +# DPDK driver dependencies +BuildRequires: zlib-devel numactl-devel +%ifarch x86_64 +BuildRequires: rdma-core-devel >= 15 libmnl-devel +%endif + +# Required by packaging policy for the bundled DPDK +Provides: bundled(dpdk) = %{dpdkver} +%endif + +Requires: openssl iproute module-init-tools +#Upstream kernel commit 4f647e0a3c37b8d5086214128614a136064110c3 +#Requires: kernel >= 3.15.0-0 +Requires: openvswitch-selinux-extra-policy + +Requires(pre): shadow-utils +Requires(post): /bin/sed +Requires(post): /usr/sbin/usermod +Requires(post): /usr/sbin/groupadd +Requires(post): systemd-units +Requires(preun): systemd-units +Requires(postun): systemd-units +Obsoletes: openvswitch-controller <= 0:2.1.0-1 + +%description +Open vSwitch provides standard network bridging functions and +support for the OpenFlow protocol for remote per-flow control of +traffic. + +%package -n python3-%{pkgname} +Summary: Open vSwitch python3 bindings +License: ASL 2.0 +Requires: %{pkgname} = %{?epoch:%{epoch}:}%{version}-%{release} +Provides: python-%{pkgname} = %{?epoch:%{epoch}:}%{version}-%{release} + +%description -n python3-%{pkgname} +Python bindings for the Open vSwitch database + +%package test +Summary: Open vSwitch testing utilities +License: ASL 2.0 +BuildArch: noarch +Requires: python3-%{pkgname} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: tcpdump + +%description test +Utilities that are useful to diagnose performance and connectivity +issues in Open vSwitch setup. + +%package devel +Summary: Open vSwitch OpenFlow development package (library, headers) +License: ASL 2.0 +Requires: %{pkgname} = %{?epoch:%{epoch}:}%{version}-%{release} + +%description devel +This provides shared library, libopenswitch.so and the openvswitch header +files needed to build an external application. + +%if 0%{?rhel} > 7 || 0%{?fedora} > 28 +%package -n network-scripts-%{name} +Summary: Open vSwitch legacy network service support +License: ASL 2.0 +Requires: network-scripts +Supplements: (%{name} and network-scripts) + +%description -n network-scripts-%{name} +This provides the ifup and ifdown scripts for use with the legacy network +service. +%endif + +%if %{with ipsec} +%package ipsec +Summary: Open vSwitch IPsec tunneling support +License: ASL 2.0 +Requires: python3-%{pkgname} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: libreswan + +%description ipsec +This package provides IPsec tunneling support for OVS tunnels. +%endif + +%prep +%if 0%{?commit0:1} +%setup -q -n ovs-%{commit0} -a 10 +%else +%setup -q -n ovs-%{version} -a 10 +%endif +%if ! %{external_sphinx} +%if 0%{?commit0:1} +%setup -n ovs-%{commit0} -q -D -T -a 100 -a 101 -a 102 +%else +%setup -n ovs-%{version} -q -D -T -a 100 -a 101 -a 102 +%endif +%endif + +mv dpdk-*/ %{dpdkdir}/ + +%patch -p1 + +%build +# Build Sphinx on RHEL +%if ! %{external_sphinx} +export PYTHONPATH="${PYTHONPATH:+$PYTHONPATH:}%{_builddir}/pytmp/lib/python" +for x in docutils-%{docutilsver} Pygments-%{pygmentsver} Sphinx-%{sphinxver}; do + pushd "$x" + python2 setup.py install --home %{_builddir}/pytmp + popd +done + +export PATH="$PATH:%{_builddir}/pytmp/bin" +%endif + +%if 0%{?commit0:1} +# fix the snapshot unreleased version to be the released one. +sed -i.old -e "s/^AC_INIT(openvswitch,.*,/AC_INIT(openvswitch, %{version},/" configure.ac +%endif +./boot.sh + +%ifarch %{dpdkarches} # build dpdk +# Lets build DPDK first +cd %{dpdkdir} + +# In case dpdk-devel is installed +unset RTE_SDK RTE_INCLUDE RTE_TARGET + +# Avoid appending second -Wall to everything, it breaks upstream warning +# disablers in makefiles. Strip explicit -march= from optflags since they +# will only guarantee build failures, DPDK is picky with that. +# Note: _hardening_ldflags has to go on the extra cflags line because dpdk is +# astoundingly convoluted in how it processes its linker flags. Fixing it in +# dpdk is the preferred solution, but adjusting to allow a gcc option in the +# ldflags, even when gcc is used as the linker, requires large tree-wide changes +touch obj.o +gcc -### obj.o 2>&1 | awk '/.*collect2.*/ { print $0}' | sed -e 's/\S*\.res\S*//g' -e 's/-z \S*//g' -e 's/[^ ]*\.o//g' -e 's/ /\n/g' | sort -u > ./noopts.txt +gcc -### $RPM_LD_FLAGS obj.o 2>&1 | awk '/.*collect2.*/ {print $0}' | sed -e 's/\S*\.res\S*//g' -e 's/-z \S*//g' -e 's/[^ ]*\.o//g' -e 's/ /\n/g' | sort -u > ./opts.txt +EXTRA_RPM_LDFLAGS=$(comm -13 ./noopts.txt ./opts.txt) +rm -f obj.o + +export EXTRA_CFLAGS="$(echo %{optflags} | sed -e 's:-Wall::g' -e 's:-march=[[:alnum:]]* ::g') -Wformat -fPIC -fcommon %{_hardening_ldflags}" +export EXTRA_LDFLAGS=$(echo %{__global_ldflags} | sed -e's/-Wl,//g' -e's/-spec.*//') +export HOST_EXTRA_CFLAGS="$EXTRA_CFLAGS $EXTRA_RPM_LDFLAGS" +export EXTRA_HOST_LDFLAGS="$EXTRA_RPM_LDFLAGS $(echo %{__global_ldflags} | sed -e's/-spec.*//')" + +# DPDK defaults to using builder-specific compiler flags. However, +# the config has been changed by specifying CONFIG_RTE_MACHINE=default +# in order to build for a more generic host. NOTE: It is possible that +# the compiler flags used still won't work for all Fedora-supported +# dpdk_machs, but runtime checks in DPDK will catch those situations. + +make V=1 O=%{dpdktarget} T=%{dpdktarget} %{?_smp_mflags} config + +cp -f %{SOURCE500} %{SOURCE502} "%{_sourcedir}/%{dpdktarget}-config" . +%{SOURCE502} %{dpdktarget}-config "%{dpdktarget}/.config" + +make V=1 O=%{dpdktarget} %{?_smp_mflags} + +# Generate a list of supported drivers, its hard to tell otherwise. +cat << EOF > README.DPDK-PMDS +DPDK drivers included in this package: + +EOF + +for f in $(ls %{dpdk_mach_arch}-%{dpdk_mach_tmpl}-linuxapp-gcc/lib/lib*_pmd_*); do + basename ${f} | cut -c12- | cut -d. -f1 | tr [:lower:] [:upper:] +done >> README.DPDK-PMDS + +cat << EOF >> README.DPDK-PMDS + +For further information about the drivers, see +http://dpdk.org/doc/guides-%{dpdksver}/nics/index.html +EOF + +cd - +%endif # build dpdk + +# And now for OVS... +mkdir build-shared build-static +pushd build-shared +ln -s ../configure +%configure \ +%if %{with libcapng} + --enable-libcapng \ +%else + --disable-libcapng \ +%endif + --disable-static \ + --enable-shared \ + --enable-ssl \ + --with-pkidir=%{_sharedstatedir}/openvswitch/pki +make %{?_smp_mflags} +popd +pushd build-static +ln -s ../configure +%configure \ +%if %{with libcapng} + --enable-libcapng \ +%else + --disable-libcapng \ +%endif + --enable-ssl \ +%ifarch %{dpdkarches} + --with-dpdk=$(pwd)/../%{dpdkdir}/%{dpdktarget} \ +%endif + --with-pkidir=%{_sharedstatedir}/openvswitch/pki \ + ac_cv_search_mlx5dv_create_wq=-lmlx5 + # mlx5dv_create_wq was added in rdma-core 16 since it's the first + # officially released release that adds support for mlx offloading, + # but currently on RHEL 7.7 we still have rdma-core 15 (with the + # offloading commits backported) and so configure is not able to detect + # it. +make %{?_smp_mflags} +popd + +/usr/bin/python3 build-aux/dpdkstrip.py \ + --dpdk \ + < rhel/usr_lib_systemd_system_ovs-vswitchd.service.in \ + > rhel/usr_lib_systemd_system_ovs-vswitchd.service + +%install +rm -rf $RPM_BUILD_ROOT +make -C build-shared install-libLTLIBRARIES DESTDIR=$RPM_BUILD_ROOT +make -C build-static install DESTDIR=$RPM_BUILD_ROOT + +install -d -m 0755 $RPM_BUILD_ROOT%{_rundir}/openvswitch +install -d -m 0750 $RPM_BUILD_ROOT%{_localstatedir}/log/openvswitch +install -d -m 0755 $RPM_BUILD_ROOT%{_sysconfdir}/openvswitch + +install -p -D -m 0644 rhel/usr_lib_udev_rules.d_91-vfio.rules \ + $RPM_BUILD_ROOT%{_udevrulesdir}/91-vfio.rules + +install -p -D -m 0644 \ + rhel/usr_share_openvswitch_scripts_systemd_sysconfig.template \ + $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/openvswitch + +for service in openvswitch ovsdb-server ovs-vswitchd \ + ovs-delete-transient-ports; do + install -p -D -m 0644 \ + rhel/usr_lib_systemd_system_${service}.service \ + $RPM_BUILD_ROOT%{_unitdir}/${service}.service +done + +%if %{with ipsec} +install -p -D -m 0644 rhel/usr_lib_systemd_system_openvswitch-ipsec.service \ + $RPM_BUILD_ROOT%{_unitdir}/openvswitch-ipsec.service +%endif + +install -m 0755 rhel/etc_init.d_openvswitch \ + $RPM_BUILD_ROOT%{_datadir}/openvswitch/scripts/openvswitch.init + +install -p -D -m 0644 rhel/etc_openvswitch_default.conf \ + $RPM_BUILD_ROOT/%{_sysconfdir}/openvswitch/default.conf + +install -p -D -m 0644 rhel/etc_logrotate.d_openvswitch \ + $RPM_BUILD_ROOT/%{_sysconfdir}/logrotate.d/openvswitch + +install -m 0644 vswitchd/vswitch.ovsschema \ + $RPM_BUILD_ROOT/%{_datadir}/openvswitch/vswitch.ovsschema + +install -d -m 0755 $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/network-scripts/ +install -p -m 0755 rhel/etc_sysconfig_network-scripts_ifdown-ovs \ + $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/network-scripts/ifdown-ovs +install -p -m 0755 rhel/etc_sysconfig_network-scripts_ifup-ovs \ + $RPM_BUILD_ROOT/%{_sysconfdir}/sysconfig/network-scripts/ifup-ovs + +install -d -m 0755 $RPM_BUILD_ROOT%{python3_sitelib} +cp -a $RPM_BUILD_ROOT/%{_datadir}/openvswitch/python/ovstest \ + $RPM_BUILD_ROOT%{python3_sitelib} + +# Build the JSON C extension for the Python lib (#1417738) +pushd python +( +export CPPFLAGS="-I ../include -I ../build-shared/include" +export LDFLAGS="%{__global_ldflags} -L $RPM_BUILD_ROOT%{_libdir}" +%py3_build +%py3_install +[ -f "$RPM_BUILD_ROOT/%{python3_sitearch}/ovs/_json.cpython-%{python3_version_nodots}$(python3-config --abiflags)-%{_arch}-%{_target_os}%{?_gnu}.so" ] +) +popd + +rm -rf $RPM_BUILD_ROOT/%{_datadir}/openvswitch/python/ + +install -d -m 0755 $RPM_BUILD_ROOT/%{_sharedstatedir}/openvswitch + +install -d -m 0755 $RPM_BUILD_ROOT%{_prefix}/lib/firewalld/services/ + +install -p -D -m 0755 \ + rhel/usr_share_openvswitch_scripts_ovs-systemd-reload \ + $RPM_BUILD_ROOT%{_datadir}/openvswitch/scripts/ovs-systemd-reload + +touch $RPM_BUILD_ROOT%{_sysconfdir}/openvswitch/conf.db +touch $RPM_BUILD_ROOT%{_sysconfdir}/openvswitch/system-id.conf + +# remove unpackaged files +rm -f $RPM_BUILD_ROOT/%{_bindir}/ovs-benchmark \ + $RPM_BUILD_ROOT/%{_bindir}/ovs-docker \ + $RPM_BUILD_ROOT/%{_bindir}/ovs-parse-backtrace \ + $RPM_BUILD_ROOT/%{_bindir}/ovs-testcontroller \ + $RPM_BUILD_ROOT/%{_sbindir}/ovs-vlan-bug-workaround \ + $RPM_BUILD_ROOT/%{_mandir}/man1/ovs-benchmark.1* \ + $RPM_BUILD_ROOT/%{_mandir}/man8/ovs-testcontroller.* \ + $RPM_BUILD_ROOT/%{_mandir}/man8/ovs-vlan-bug-workaround.8* + +%if ! %{with ipsec} +rm -f $RPM_BUILD_ROOT/%{_datadir}/openvswitch/scripts/ovs-monitor-ipsec +%endif + +# remove ovn unpackages files +rm -f $RPM_BUILD_ROOT%{_bindir}/ovn* +rm -f $RPM_BUILD_ROOT%{_mandir}/man1/ovn* +rm -f $RPM_BUILD_ROOT%{_mandir}/man5/ovn* +rm -f $RPM_BUILD_ROOT%{_mandir}/man7/ovn* +rm -f $RPM_BUILD_ROOT%{_mandir}/man8/ovn* +rm -f $RPM_BUILD_ROOT%{_datadir}/openvswitch/ovn* +rm -f $RPM_BUILD_ROOT%{_datadir}/openvswitch/scripts/ovn* +rm -f $RPM_BUILD_ROOT%{_includedir}/ovn/* + +%check +%if %{with check} + pushd build-static + touch resolv.conf + export OVS_RESOLV_CONF=$(pwd)/resolv.conf + if make check TESTSUITEFLAGS='%{_smp_mflags}' || + make check TESTSUITEFLAGS='--recheck'; then :; + else + cat tests/testsuite.log + exit 1 + fi + popd +%endif +%if %{with check_datapath_kernel} + pushd build-static + if make check-kernel RECHECK=yes; then :; + else + cat tests/system-kmod-testsuite.log + exit 1 + fi + popd +%endif + +%clean +rm -rf $RPM_BUILD_ROOT + +%preun +%if 0%{?systemd_preun:1} + %systemd_preun openvswitch.service +%else + if [ $1 -eq 0 ] ; then + # Package removal, not upgrade + /bin/systemctl --no-reload disable openvswitch.service >/dev/null 2>&1 || : + /bin/systemctl stop openvswitch.service >/dev/null 2>&1 || : + fi +%endif + +%pre +getent group openvswitch >/dev/null || groupadd -r openvswitch +getent passwd openvswitch >/dev/null || \ + useradd -r -g openvswitch -d / -s /sbin/nologin \ + -c "Open vSwitch Daemons" openvswitch + +%ifarch %{dpdkarches} + getent group hugetlbfs >/dev/null || groupadd hugetlbfs + usermod -a -G hugetlbfs openvswitch +%endif +exit 0 + +%post +if [ $1 -eq 1 ]; then + sed -i 's:^#OVS_USER_ID=:OVS_USER_ID=:' /etc/sysconfig/openvswitch + +%ifarch %{dpdkarches} + sed -i \ + 's@OVS_USER_ID="openvswitch:openvswitch"@OVS_USER_ID="openvswitch:hugetlbfs"@'\ + /etc/sysconfig/openvswitch +%endif +fi +chown -R openvswitch:openvswitch /etc/openvswitch + +%if 0%{?systemd_post:1} + %systemd_post openvswitch.service +%else + # Package install, not upgrade + if [ $1 -eq 1 ]; then + /bin/systemctl daemon-reload >dev/null || : + fi +%endif + +%postun +%if 0%{?systemd_postun:1} + %systemd_postun openvswitch.service +%else + /bin/systemctl daemon-reload >/dev/null 2>&1 || : +%endif + +%triggerun -- openvswitch < 2.5.0-22.git20160727%{?dist} +# old rpm versions restart the service in postun, but +# due to systemd some preparation is needed. +if systemctl is-active openvswitch >/dev/null 2>&1 ; then + /usr/share/openvswitch/scripts/ovs-ctl stop >/dev/null 2>&1 || : + systemctl daemon-reload >/dev/null 2>&1 || : + systemctl stop openvswitch ovsdb-server ovs-vswitchd >/dev/null 2>&1 || : + systemctl start openvswitch >/dev/null 2>&1 || : +fi +exit 0 + +%files -n python3-%{pkgname} +%{python3_sitearch}/ovs +%{python3_sitearch}/ovs-*.egg-info +%doc LICENSE + +%files test +%{_bindir}/ovs-pcap +%{_bindir}/ovs-tcpdump +%{_bindir}/ovs-tcpundump +%{_mandir}/man1/ovs-pcap.1* +%{_mandir}/man8/ovs-tcpdump.8* +%{_mandir}/man1/ovs-tcpundump.1* +%{_bindir}/ovs-test +%{_bindir}/ovs-vlan-test +%{_bindir}/ovs-l3ping +%{_mandir}/man8/ovs-test.8* +%{_mandir}/man8/ovs-vlan-test.8* +%{_mandir}/man8/ovs-l3ping.8* +%{python3_sitelib}/ovstest + +%files devel +%{_libdir}/*.so +%{_libdir}/pkgconfig/*.pc +%{_includedir}/openvswitch/* +%{_includedir}/openflow/* +%exclude %{_libdir}/*.a +%exclude %{_libdir}/*.la + +%if 0%{?rhel} > 7 || 0%{?fedora} > 28 +%files -n network-scripts-%{name} +%{_sysconfdir}/sysconfig/network-scripts/ifup-ovs +%{_sysconfdir}/sysconfig/network-scripts/ifdown-ovs +%endif + +%files +%defattr(-,openvswitch,openvswitch) +%dir %{_sysconfdir}/openvswitch +%{_sysconfdir}/openvswitch/default.conf +%config %ghost %verify(not owner group md5 size mtime) %{_sysconfdir}/openvswitch/conf.db +%ghost %attr(0600,-,-) %verify(not owner group md5 size mtime) %{_sysconfdir}/openvswitch/.conf.db.~lock~ +%config %ghost %{_sysconfdir}/openvswitch/system-id.conf +%defattr(-,root,root) +%config(noreplace) %verify(not md5 size mtime) %{_sysconfdir}/sysconfig/openvswitch +%{_sysconfdir}/bash_completion.d/ovs-appctl-bashcomp.bash +%{_sysconfdir}/bash_completion.d/ovs-vsctl-bashcomp.bash +%config(noreplace) %{_sysconfdir}/logrotate.d/openvswitch +%{_unitdir}/openvswitch.service +%{_unitdir}/ovsdb-server.service +%{_unitdir}/ovs-vswitchd.service +%{_unitdir}/ovs-delete-transient-ports.service +%{_datadir}/openvswitch/scripts/openvswitch.init +%{_datadir}/openvswitch/scripts/ovs-check-dead-ifs +%{_datadir}/openvswitch/scripts/ovs-lib +%{_datadir}/openvswitch/scripts/ovs-save +%{_datadir}/openvswitch/scripts/ovs-vtep +%{_datadir}/openvswitch/scripts/ovs-ctl +%{_datadir}/openvswitch/scripts/ovs-kmod-ctl +%{_datadir}/openvswitch/scripts/ovs-systemd-reload +%config %{_datadir}/openvswitch/vswitch.ovsschema +%config %{_datadir}/openvswitch/vtep.ovsschema +%{_bindir}/ovs-appctl +%{_bindir}/ovs-dpctl +%{_bindir}/ovs-ofctl +%{_bindir}/ovs-vsctl +%{_bindir}/ovsdb-client +%{_bindir}/ovsdb-tool +%{_bindir}/ovs-pki +%{_bindir}/vtep-ctl +%{_libdir}/*.so.* +%{_sbindir}/ovs-vswitchd +%{_sbindir}/ovsdb-server +%{_mandir}/man1/ovsdb-client.1* +%{_mandir}/man1/ovsdb-server.1* +%{_mandir}/man1/ovsdb-tool.1* +%{_mandir}/man5/ovsdb.5* +%{_mandir}/man5/ovsdb-server.5.* +%{_mandir}/man5/ovs-vswitchd.conf.db.5* +%{_mandir}/man5/vtep.5* +%{_mandir}/man7/ovsdb-server.7* +%{_mandir}/man7/ovsdb.7* +%{_mandir}/man7/ovs-actions.7* +%{_mandir}/man7/ovs-fields.7* +%{_mandir}/man8/vtep-ctl.8* +%{_mandir}/man8/ovs-appctl.8* +%{_mandir}/man8/ovs-ctl.8* +%{_mandir}/man8/ovs-dpctl.8* +%{_mandir}/man8/ovs-kmod-ctl.8.* +%{_mandir}/man8/ovs-ofctl.8* +%{_mandir}/man8/ovs-pki.8* +%{_mandir}/man8/ovs-vsctl.8* +%{_mandir}/man8/ovs-vswitchd.8* +%{_mandir}/man8/ovs-parse-backtrace.8* +%{_udevrulesdir}/91-vfio.rules +%doc LICENSE NOTICE README.rst NEWS rhel/README.RHEL.rst +%ifarch %{dpdkarches} +%doc %{dpdkdir}/README.DPDK-PMDS +%endif +/var/lib/openvswitch +%attr(750,openvswitch,openvswitch) %verify(not owner group) /var/log/openvswitch +%ghost %attr(755,root,root) %verify(not owner group) %{_rundir}/openvswitch +%{_datadir}/openvswitch/bugtool-plugins/ +%{_datadir}/openvswitch/scripts/ovs-bugtool-* +%{_bindir}/ovs-dpctl-top +%{_sbindir}/ovs-bugtool +%{_mandir}/man8/ovs-dpctl-top.8* +%{_mandir}/man8/ovs-bugtool.8* +%if (0%{?rhel} && 0%{?rhel} <= 7) || (0%{?fedora} && 0%{?fedora} < 29) +%{_sysconfdir}/sysconfig/network-scripts/ifup-ovs +%{_sysconfdir}/sysconfig/network-scripts/ifdown-ovs +%endif + +%if %{with ipsec} +%files ipsec +%{_datadir}/openvswitch/scripts/ovs-monitor-ipsec +%{_unitdir}/openvswitch-ipsec.service +%endif + +%changelog +* Thu Jun 25 2020 Timothy Redaelli - 2.13.0-39 +- bus/pci: fix VF memory access (#1851169) + [2b22bcd9ad02d0180ad5c46a2cccf34a3afba600] + +* Fri Jun 05 2020 Ilya Maximets - 2.13.0-38 +- raft: Avoid sending equal snapshots. (#1834838) + [3168eba559cbce28937be4e785c3337030694455] + +* Fri Jun 05 2020 Ilya Maximets - 2.13.0-37 +- ovsdb-server: Fix schema leak while reading db. (#1834838) + [92a1e56c8a37927441fb1742e6054a9118654ef0] + +* Fri Jun 05 2020 Ilya Maximets - 2.13.0-36 +- ovsdb: Add raft memory usage to memory report. (#1834838) + [fb32a78921e50b1ffa0c52f873167f68622e8723] + +* Tue Jun 02 2020 Aaron Conole - 2.13.0-35 +- netdev-offload-tc: Re-fetch block ID after probing. + [d14e39f81bec29064a58df0177ce457765305f8b] + +* Tue Jun 02 2020 Aaron Conole - 2.13.0-34 +- netdev-linux: Update LAG in all cases. + [8b155475749cdb7a1817810d447e4cf6598cb6fa] + +* Wed May 20 2020 Timothy Redaelli - 2.13.0-33 +- vhost: fix potential fd leak + [a9e6e358142634f1cd4d6555c5835f0062aa2a34] + +* Wed May 20 2020 Timothy Redaelli - 2.13.0-32 +- vhost: fix potential memory space leak + [b39bac1377f5ece651b3ddb1485f6327036e7c38] + +* Wed May 20 2020 Timothy Redaelli - 2.13.0-31 +- vhost: fix translated address not checked + [7da906164278fc5142607d5c94d20bb2b6e3ca8f] + +* Wed May 20 2020 Timothy Redaelli - 2.13.0-30 +- vhost: fix vring index check + [7c4cfd12e3b2693b68ee995f65421577248c34d9] + +* Wed May 20 2020 Timothy Redaelli - 2.13.0-29 +- vhost: check log mmap offset and size overflow + [517d8488dcf0ca7bb7f7db2fe8167389141aff9d] + +* Fri May 15 2020 Dumitru Ceara - 2.13.0-28 +- raft: Disable RAFT jsonrpc inactivity probe. (#1836308) + [3d9b529afb098531190d57d6f35d1622bb4093cd] + +* Fri May 15 2020 Dumitru Ceara - 2.13.0-27 +- raft: Fix leak of the incomplete command. (#1836307) + [5c38ccd52fb3925e82eda20f1897ec02abb390d9] + +* Fri May 15 2020 Dumitru Ceara - 2.13.0-26 +- raft: Fix the problem of stuck in candidate role forever. (#1836305) + [9c76350e271546eedfeb18720975e35b4e36e1f1] + +* Fri May 15 2020 Dumitru Ceara - 2.13.0-25 +- raft: Fix next_index in install_snapshot reply handling. (#1836305) + [cc3d02699203e2fe9d9fd384d09e268ba614828d] + +* Fri May 15 2020 Dumitru Ceara - 2.13.0-24 +- raft: Avoid busy loop during leader election. (#1836305) + [053b78c8d60ffb4d212fd7894f91be52027f291f] + +* Fri May 15 2020 Dumitru Ceara - 2.13.0-23 +- raft: Fix raft_is_connected() when there is no leader yet. (#1836305) + [e732012d7be335650398ff03c2431c64b2c4aaba] + +* Fri May 15 2020 Dumitru Ceara - 2.13.0-22 +- ovsdb-server: Don't disconnect clients after raft install_snapshot. (#1836305) + [8ff30dfee6cb075e36ed38b77695ff03321ce12b] + +* Fri May 15 2020 Dumitru Ceara - 2.13.0-21 +- raft-rpc: Fix message format. (#1836305) + [914d885061c9f7e7e6e5f921065301e08837e122] + +* Wed Apr 22 2020 Timothy Redaelli - 2.13.0-20 +- redhat: pkgtool: Use the oldest sha1 + [4c657a79de8221c769d4622ff4110b6aaccf938a] + +* Mon Apr 20 2020 Timothy Redaelli - 2.13.0-19 +- Fix building locally on Fedora 32+ + [d1c89e4d998507fcd18a1e94bc6459f016e6310e] + +* Thu Apr 16 2020 Timothy Redaelli - 2.13.0-18 +- Set -fcommon in DPDK CFLAGS + [f8a379e95e8617d9371cd87bfa559fa14e88fc33] + +* Thu Apr 16 2020 Timothy Redaelli - 2.13.0-17 +- Update DPDK config files for 19.11.1 + [d771330907cee39a6c08409f866c3abcb9d90351] + +* Thu Apr 16 2020 Timothy Redaelli - 2.13.0-16 +- Merge tag 'v19.11.1' into fast-datapath-rhel-8 + [0b3abfb0e63fc2838c15eb119a1876f9691fd70e] + +* Tue Apr 14 2020 Timothy Redaelli - 2.13.0-15 +- bugtool: Fix for Python3. (#1809241) + [71f25b7920093daa59827a0a4be4095309aec6ff] + +* Tue Apr 07 2020 Flavio Leitner - 2.13.0-14 +- redhat: Skip NVR check only if building rhel-8 on rhel-7. + [2b9f32bef20febced3dbcd85b6cb986b8475d121] + +* Mon Apr 06 2020 Flavio Leitner - 2.13.0-13 +- redhat: rh-dgit-brew: Skip NVR check in RHEL-7. + [6280d8d29ff80c38b076bae005b3a19ec2375bc7] + +* Mon Apr 06 2020 Flavio Leitner - 2.13.0-12 +- redhat: pkgtool: Use BZ id from reported-at tag. + [3ee7ec51b693eaf1715c0bbf8da2500405c7d8fe] + +* Fri Mar 27 2020 Flavio Leitner - 2.13.0-11 +- redhat: ovsci: Schedule the CI job while brew is building. + [1551e1e70e9ce98e61b9597f90c6c23b5dee6f1c] + +* Tue Mar 24 2020 Flavio Leitner - 2.13.0-10 +- redhat: ovsci: Use the correct job name and params. + [220f32afb2a3ce5437b6a502937cda7f887e9304] + +* Mon Mar 23 2020 Timothy Redaelli - 2.13.0-9 +- Add compatibility with RHEL7 git + [34929957833d71263e072c24842eaba3d61ad235] + +* Mon Mar 23 2020 Timothy Redaelli - 2.13.0-8 +- Use the date in UTC + [b53bdb16b8575fd3fbb28af2b704abd1eccb27d8] + +* Mon Mar 23 2020 Numan Siddique - 2.13.0-7 +- ofproto-dpif-xlate: Fix recirculation when in_port is OFPP_CONTROLLER. (#1775160) + [4ee0f6af9e601cbb5f69a486526d1011314bbfed] + +* Wed Mar 11 2020 Timothy Redaelli - 2.13.0-6 +- vhost: fix packed virtqueue ready condition (#1812620) + [0b4e7827b873c8a420171d840bde5d3c77a67e60] + +* Thu Feb 27 2020 Timothy Redaelli - 2.13.0-5 +- redhat: permit make to fail when pkgtool --gen{spec,patches} exist badly + [61807f941ec5ddcbfb0cf1f4ba6a52d934c72f06] + +* Tue Feb 25 2020 Timothy Redaelli - 2.13.0-4 +- vhost: protect log address translation in IOTLB update (#1806599) + [0d4370404fa971cb07ca2bf9cb0cdf98ecc54d4b] + +* Tue Feb 25 2020 Timothy Redaelli - 2.13.0-3 +- Remove Docutils, Pygments and Sphinx directories + [0857b41c11694061bc94122c3c026ff552745703] + +* Tue Feb 25 2020 Timothy Redaelli - 2.13.0-2 +- Update Red Hat build files to use upstream tarballs and one patch + [b14f867126d5d9cfbe24d54c89aa917384c8c133] + +* Thu Feb 20 2020 Flavio Leitner - 2.13.0-1 +- Open vSwitch version 2.13.0 + [44ed4ed8d98d8c21e715a7014d89a2f14f56b96b] + +* Wed Jan 22 2020 Open vSwitch Bot - 2.13.0-0.20200121git2a4f006 +- Snapshot of branch-2.13 2a4f006c79c0 + +* Fri Jan 17 2020 Open vSwitch Bot - 2.13.0-0.20200117git8ae6a5f +- Snapshot of master 8ae6a5f98c3a + +* Tue Jan 14 2020 Open vSwitch Bot - 2.13.0-0.20200114gitb9b7b98 +- Snapshot of master b9b7b989d105 + +* Tue Jan 14 2020 Open vSwitch Bot - 2.13.0-0.20200114gitb9b7b98 +- Snapshot of master b9b7b989d105 + +* Tue Jan 14 2020 Open vSwitch Bot - 2.13.0-0.20200114gitb9b7b98 +- Snapshot of master b9b7b989d105 +- Remove MLX{4,5} glue libraries, since Python3 is included in RHEL 7.6 that + ships the correct libibverbs library. + +* Tue Jan 14 2020 Open vSwitch Bot - 2.13.0-0.20200113git67eb811 +- Snapshot of master 67eb8110171f + +* Mon Jan 13 2020 Timothy Redaelli - 2.13.0-0.20200109git2109841.1 +- Add a not-upstream-yet patch to remove dependency for python3-netifaces, + since it's not available on RHEL7 + +* Mon Jan 13 2020 Open vSwitch Bot - 2.13.0-0.20200109git2109841 +- Snapshot of master 2109841b7984 + +* Thu Jan 09 2020 Open vSwitch Bot - 2.13.0-0.20200109gitb926f57 +- Snapshot of master b926f577aaf1 + +* Tue Jan 07 2020 David Marchand - 2.11.0-16 +- Backport DPDK interrupt fixes for qede (#1788515) + +* Mon Dec 23 2019 Eelco Chaudron - 2.12.0-15 + +- Backport "vhost: add device op when notification to guest is sent" (#1726579) +- Backport "netdev-dpdk: Add coverage counter to count vhost IRQs" (#1726579) + +* Mon Dec 23 2019 Eelco Chaudron - 2.12.0-14 +- Backport "net/i40e: downgrade error log" (#1719644) +- Backport "net/i40e: re-program promiscuous mode on VF interface" (#1733402) +- Backport "bridge: Allow manual notifications about interfaces' updates" (#1719644) +- Backport "netdev-dpdk: add support for the RTE_ETH_EVENT_INTR_RESET" (#1719644) + +* Thu Dec 19 2019 Timothy Redaelli - 2.12.0-13 +- Add --with ipsec flag to build OVS with IPSEC support + +* Tue Dec 10 2019 Timothy Redaelli - 2.12.0-12 +- Fix librte_pmd_mlx{4,5}_glue.so error in Execshield part of RPMDiff + by backporting the DPDK flags from dpdk spec file. + +* Fri Dec 06 2019 Timothy Redaelli - 2.12.0-11 +- Backport "ovs-tcpundump: allow multiple packet lengths" (#1780553) +- Backport "ovs-tcpundump: exit when getting version" (#1780555) +- Backport "ovs-check-dead-ifs: python3 print format" (#1780563) +- Backport "ovs-check-dead-ifs: unshadow pid variable" (#1780563) +- Backport "flake8: also check the ovs-check-dead-ifs script" (#1780563) + +* Wed Dec 04 2019 Timothy Redaelli - 2.12.0-10 +- Rebase internal DPDK to 18.11.5 (#1773780) (CVE-2019-14818) + +* Tue Nov 26 2019 Lorenzo Bianconi - 2.12.0-9 +- Backport "jsonrpc: increase input buffer size from 512 to 4096" (#1720653) + +* Fri Nov 22 2019 Flavio Leitner - 2.12.0-8 +- updated spec to conflict with previous versions. + +* Fri Nov 22 2019 Flavio Leitner - 2.12.0-7 +- Backport "ofproto-dpif: Allow IPv6 ND Extensions only if supported" (#1773598) + [df5db2a7a0fe9a4b6f5eafaada20a9b834aebbac] + +* Wed Nov 13 2019 Numan Siddique - 2.12.0-6 +- Backport "ovsdb-server: Allow replication from older schema version servers" (#1771854) + +* Tue Nov 12 2019 David Marchand - 2.12.0-5 +- Backport "netdev-dpdk: Track vhost tx contention." (#1771390) + +* Tue Nov 05 2019 David Marchand - 2.12.0-4 +- Renumbered dpdk patches +- Backport IOVA fixes (#1769027) + +* Mon Oct 14 2019 Numan Siddique - 2.12.0-3 +- Backport "ovsdb-server: Don't drop all connections on read/write status change" (#1761573) + +* Tue Oct 08 2019 Flavio Leitner - 2.12.0-2 +- updated to 2.12.0 plus patches till 093fd99a4c12d (#1758820) + +* Mon Oct 07 2019 Aaron Conole - 2.12.0-1.20190723gitcbff264 +- Backport "vswitch: ratelimit the device add log" (#1737146) + +* Wed Jul 24 2019 Open vSwitch Bot - 2.12.0-0.20190723gitcbff264 +- Snapshot of branch-2.12 cbff264a084a + +* Tue Jul 16 2019 Timothy Redaelli - 2.11.0-18 +- Increase CONFIG_RTE_MAX_ETHPORTS to 128 (#1730421) + +* Tue Jul 16 2019 Timothy Redaelli - 2.11.0-17 +- Backport "tunnel: Add layer 2 IPv6 GRE encapsulation support." and + "netdev-vport: Make ip6gre netdev type to use TC rules" (#1725623) + +* Fri Jul 12 2019 Timothy Redaelli - 2.11.0-16 +- Rebase internal DPDK to 18.11.2 (#1713698) + +* Tue Jul 09 2019 David Marchand - 2.11.0-15 +- Backport "net/i40e: fix dropped packets statistics name" (#1728610) + +* Tue Jul 02 2019 Timothy Redaelli - 2.11.0-14 +- Backport "netdev-tc-offloads: Use correct hook qdisc at init tc flow" (#1721219) + +* Fri Jun 21 2019 Timothy Redaelli - 2.11.0-13 +- Backport "netdev-tc-offloads: Support match on priority tags" (#1722249) + +* Thu Jun 13 2019 Maxime Coquelin - 2.11.0-12 +- Backport Vhost performance regression fixes (#1672538) + +* Thu Jun 13 2019 Flavio Leitner - 2.11.0-11 +- Backport "rhel: limit stack size to 2M." (#1720315) + +* Thu May 16 2019 Pablo Cascón - 2.11.0-10 +- Backport "ovs-tc: support OvS internal port offload" and deps (#1702334) + +* Wed Apr 24 2019 Numan Siddique - 2.11.0-9 +- Backport "[OVN] Fragmentation support - check_pkt_larger action" (#1702564) + +* Thu Apr 11 2019 Kevin Traynor - 2.11.0-8 +- Backport "net/qede: support IOVA VA mode" (#1684605) + +* Wed Apr 10 2019 David Marchand - 2.11.0-7 +- Backport cpu affinity fixes (#1687320) + +* Tue Apr 09 2019 Timothy Redaelli - 2.11.0-6 +- Add missing dependencies for ovs-tcpdump (#1697978) + +* Tue Mar 26 2019 Flavio Leitner - 2.11.0-5 +- fixed netlink msg corruption when updating netdev. (#1692812) + +* Tue Mar 12 2019 Davide Caratti - 2.11.0-4 +- Backport "net/bnxt: support IOVA VA mode" (#1645523) + +* Tue Mar 12 2019 Timothy Redaelli - 2.11.0-3 +- Backport "ovs-ctl: Permit to specify additional options" (#1687775) +- Remove useless -fPIC from DPDK + +* Fri Mar 01 2019 Timothy Redaelli - 2.11.0-2 +- Backport "rhel: Use PIDFile on forking systemd service files" (#1684477) + +* Thu Feb 28 2019 Timothy Redaelli - 2.11.0-1 +- Update to official 2.11 release + +* Thu Jan 31 2019 Open vSwitch Bot - 2.11.0-0.20190129gitd3a10db +- Snapshot of branch-2.11 d3a10db4fd38 + +* Sun Jan 27 2019 Open vSwitch Bot - 2.11.0-0.20190126gitd4ff5b2 +- Snapshot of branch-2.11 d4ff5b2be7fc + +* Mon Jan 14 2019 Timothy Redaelli - 2.11.0-0.20190114gitadb3f0b +- Update to a snapshot of OVS 2.11 from master + +* Mon Jan 7 2019 Lorenzo Bianconi - 2.10.0-42 +- Backport "OVN: add static IP support to IPAM" (#1664028) + +* Thu Jan 03 2019 Timothy Redaelli - 2.10.0-41 +- Backport some patches to improve offload indications (#1655990) + +* Wed Jan 02 2019 Timothy Redaelli - 2.10.0-40 +- Add "Requires: openvswitch = %%{version}-%%{release}" to python-openvswitch2.10 (#1662944) + +* Wed Jan 2 2019 Lorenzo Bianconi - 2.10.0-39 +- Backport "OVN: add mac address only support to IPAM/MACAM" (#1662905) + +* Thu Dec 20 2018 Numan Siddique - 2.10.0-38 +- Backport "ovn-controller: Inject GARPs to logical switch pipeline to update neighbors" (#1643902) + +* Tue Dec 18 2018 David Marchand - 2.10.0-37 +- Backport 'ovs-ctl: fix system-id.conf owner' (#1659391) +- Do not check /var/log/openvswitch owner/group (#1659391) + +* Tue Dec 18 2018 Numan Siddique - 2.10.0-36 +- Backport "ovn: Fix the invalid eth.dst and ip6.dst set by nd_ns action for certain cases." (#1656018) + +* Mon Dec 10 2018 Timothy Redaelli - 2.10.0-35 +- Backport "dpif-netdev: Add vlan to mask for flow_put operation" (#1649516) + +* Tue Nov 27 2018 Numan Siddique - 2.10.0-34 +- Backport "ovn: Avoid tunneling for VLAN packets redirected to a gateway chassis" (#1561880) + +* Fri Nov 23 2018 Eelco Chaudron - 2.10.0-33 +- Backport "mem: fix memory initialization time" (#1647498) + +* Thu Nov 22 2018 Timothy Redaelli - 2.10.0-32 +- Backport "tests: Use the default key length when generating RSA keys" + +* Wed Nov 14 2018 Timothy Redaelli - 2.10.0-31 +- Backport "net/qede: fix crash when configure fails" (#1648183) + +* Tue Nov 13 2018 Lorenzo Bianconi - 2.10.0-30 +- Backport 'pinctrl: Fix dp_packet structure leak' and 'pinctrl: Fix crash on + buffered packets hmap double remove'. Moreover align 'ovn -- 3 HVs, 3 LS, 3 + lports/LS, 1 LR' test to upstream one (#1649008) + +* Tue Nov 13 2018 Eelco Chaudron - 2.10.0-29 +- Backup "netdev-dpdk: Bring link down when NETDEV_UP is not set" (#1645288) + +* Fri Nov 09 2018 Lorenzo Bianconi - 2.10.0-28 +- OVN: configure L2 address according to the used IP address (#1648272) + +* Thu Nov 08 2018 Timothy Redaelli - 2.10.0-27 +- Backport "bond: Honor updelay and downdelay when LACP is in use" (#1646923) + +* Thu Nov 08 2018 Lorenzo Bianconi - 2.10.0-26 +- OVN: introduce mac_prefix support to IPAM (#1647750) + +* Tue Nov 06 2018 Timothy Redaelli - 2.10.0-25 +- Backport "ofproto-dpif-xlate: Avoid deadlock on multicast snooping recursion" (#1643065) + +* Tue Nov 06 2018 Timothy Redaelli - 2.10.0-24 +- Re-enable "make check" + +* Fri Nov 02 2018 Kevin Traynor - 2.10.0-23 +- Update to DPDK 17.11.4 (#1566069) + +* Thu Oct 25 2018 Timothy Redaelli - 2.10.0-22 +- Ship statically linked OVS binaries (#1643478) + +* Tue Oct 23 2018 Numan Siddique - 2.10.0-21 +- Backport connmgr: Fix vswitchd abort when a port is added and the controller is down (#1637926) + +* Mon Oct 22 2018 Timothy Redaelli - 2.10.0-20 +- Backport "ovn: Add DHCP support for option 252" (#1641740) + +* Wed Oct 17 2018 Timothy Redaelli - 2.10.0-19 +- Backport "net/i40e: fix VLAN offload setting issue" (#1637893) + +* Wed Oct 17 2018 Timothy Redaelli - 2.10.0-18 +- Backport "Python: Make Row's __getattr__ less error prone" (#1639963) + +* Fri Oct 12 2018 Numan Siddique - 2.10.0-17 +- OVN: ovn-ctl: Fix the wrong pidfile argument passed to ovsdb-servers (#1636714) + +* Fri Oct 12 2018 Numan Siddique - 2.10.0-16 +- OVN: Support processing DHCPv6 information request message type (#1636874) + +* Fri Oct 12 2018 Numan Siddique - 2.10.0-15 +- OVN: Fix IPv6 DAD failure for container ports (#1616129) + +* Thu Oct 11 2018 Numan Siddique - 2.10.0-14 +- OVN: Fix the issue in IPv6 Neigh Solicitation responder for router IPs (#1567735) + +* Tue Oct 09 2018 Lorenzo Bianconi - 2.10.0-13 +- OVN: add buffering support for ip packets (#1637466) + +* Mon Oct 08 2018 Matteo Croce - 2.10.0-12 +- Fix null pointer (#1634015) +* Tue Oct 02 2018 Lorenzo Bianconi - 2.10.0-11 +- OVN: add CT_LB action to ovn-trace (#1635344) + +* Mon Oct 01 2018 Timothy Redaelli - 2.10.0-10 +- Backport NFP PMD's non-root related commits for > 1TB of RAM (#1634820): + - net/nfp: support IOVA VA mode + - bus/pci: forbid IOVA mode if IOMMU address width too small + - net/nfp: check hugepages IOVAs based on DMA mask + - mem: use address hint for mapping hugepages + - bus/pci: use IOVAs check when setting IOVA mode + - mem: add function for checking memsegs IOVAs addresses + - mem: fix max DMA maskbit size + +* Thu Sep 27 2018 Matteo Croce - 2.10.0-9 +- Backport "Remove support for multiple queues per port" (#1634015) + +* Wed Sep 26 2018 Matteo Croce - 2.10.0-8 +- Backport EMC reorder fix (#1565205) + +* Wed Sep 26 2018 Matteo Croce - 2.10.0-7 +- Backport per-port socket netlink creation with EPOLLEXCLUSIVE (#1634015) + +* Fri Sep 21 2018 Kevin Traynor - 2.10.0-6 +- Backport roundrobin rxq to pmd assignment (#1631797) + +* Fri Sep 14 2018 Timothy Redaelli - 2.10.0-5 +- Backport "ovs-save: Don't always include the default flow during restore" (#1628905) + +* Thu Sep 13 2018 Flavio Leitner - 2.10.0-4 +- applied Fix translation of groups with no buckets (#1626488) + +* Thu Sep 13 2018 Flavio Leitner - 2.10.0-3 +- Removed provides and obsoletes for openvswitch-dpdk (#1628603) + +* Tue Sep 11 2018 Timothy Redaelli - 2.10.0-2 +- Backported "net/mlx{4,5}: avoid stripping the glue library" (#1627700) + +* Tue Aug 21 2018 Flavio Leitner - 2.10-1 +- Updated with 2.10.0 official tarball (#1618551) + +* Fri Aug 17 2018 Flavio Leitner - 2.10-0 +- Sync'ed with fd-next (4452afaa58) +- vhost: flush IOTLB cache on new mem table handling (#1609643) +- OVN: introduce ovs-appctl command to monitor HVs sb (#1593804) + +* Thu Aug 16 2018 Open vSwitch Bot - 2.10-0 +- Snapshot of branch-2.10 6bced903bb50 + +* Fri Aug 10 2018 Open vSwitch Bot - 2.10-0 +- Snapshot of branch-2.10 58a7ce60b9f7 + +* Wed Aug 08 2018 Open vSwitch Bot - 2.10-0 +- Snapshot of branch-2.10 faf64fb8861f + +* Tue Aug 07 2018 Flavio Leitner - 2.10-0 +- Snapshot of branch master 7a78d1c1ad73 + +* Tue Jul 31 2018 Flavio Leitner - 2.10-0 +- Sync'ed spec file with fd-next-57 (shared linking). + (DPDK patches not included) +- Fixed package dependencies (#1610603) + +* Fri Jul 27 2018 Open vSwitch Bot - 2.10-0 +- Snapshot of branch master b1ca64f020f7 + +* Fri Jul 27 2018 Flavio Leitner - 2.10-0 +- Replace macro %%{name} with 'openvswitch'. + +* Tue Jul 24 2018 Open vSwitch Bot - 2.10-0 +- Snapshot of branch master 1ac690899592 + +* Tue Jul 24 2018 Flavio Leitner - 2.10-0 +- Versioned conflict to be less than 2.10. + +* Thu Jul 19 2018 Open vSwitch Bot - 2.10-0 +- Snapshot of branch master 3c921cc2b6b7 + +* Wed Jul 18 2018 Flavio Leitner - 2.10-0 +- Fixed unbound requires and buildrequires. + +* Tue Jul 10 2018 Open vSwitch Bot - 2.10-0 +- Snapshot of branch master 93c0ef12039c + +* Tue Jul 03 2018 Open vSwitch Bot - 2.10-0 +- Snapshot of branch master 79d0dfa4e99a + +* Wed Jun 27 2018 Open vSwitch Bot - 2.10-0 +- Snapshot of branch master e46148133067 + +* Wed Jun 27 2018 Open vSwitch Bot - 2.10-0 +- Snapshot of branch master 61677bf976e9 + +* Tue Jun 26 2018 Flavio Leitner - 2.10-0 +- snapshot of branch master + +* Mon Jun 11 2018 Aaron Conole - 2.9.0-47 +- Backport "net/mlx5: fix memory region cache lookup" (#1581230) +- Backport "net/mlx5: fix memory region boundary checks" (#1581230) + +* Mon Jun 11 2018 Timothy Redaelli - 2.9.0-46 +- Backport "net/qede: fix memory alloc for multiple port reconfig" (#1589866) + +* Thu Jun 07 2018 Timothy Redaelli - 2.9.0-45 +- Backport "net/qede: fix unicast filter routine return code" (#1578590) + +* Thu Jun 07 2018 Timothy Redaelli - 2.9.0-44 +- Backport "net/qede: fix L2-handles used for RSS hash update" (#1578981) + +* Tue May 29 2018 Timothy Redaelli - 2.9.0-43 +- Backport "net/nfp: fix lock file usage" (#1583670) + +* Mon May 28 2018 Timothy Redaelli - 2.9.0-42 +- Backport "net/nfp: configure default RSS reta table" (#1583161) + +* Mon May 28 2018 Timothy Redaelli - 2.9.0-41 +- Backport "netdev-dpdk: don't enable scatter for jumbo RX support for nfp" (#1578324) + +* Mon May 28 2018 Timothy Redaelli - 2.9.0-40 +- Backport "ovn pacemaker: Fix promotion issue when the master node is reset" (#1579025) + +* Thu May 24 2018 Timothy Redaelli - 2.9.0-39 +- Backport spec file modfications from "rhel: Use openvswitch user/group for + the log directory" + +* Wed May 23 2018 Maxime Coquelin - 2.9.0-38 +- Backport "vhost: improve dirty pages logging performance" (#1552465) + +* Wed May 16 2018 Timothy Redaelli - 2.9.0-37 +- Backport "ovn: Set proper Neighbour Adv flag when replying for NS request for + router IP" (#1567735) + +* Mon May 14 2018 Timothy Redaelli - 2.9.0-36 +- Enable QEDE PMDs (only on x86_64) (#1578003) + +* Thu May 10 2018 Lorenzo Bianconi - 2.9.0-35 +- ovn-nbctl: Show gw chassis in decreasing prio order (#1576725) + +* Wed May 09 2018 Timothy Redaelli - 2.9.0-34 +- Fix hugetlbfs group when DPDK is enabled + +* Wed May 09 2018 Timothy Redaelli - 2.9.0-33 +- Backport "eal: abstract away the auxiliary vector" (#1560728) +- Re-enable DPDK on ppc64le + +* Wed May 09 2018 Aaron Conole - 2.9.0-32 +- Require the selinux policy module (#1555440) + +* Tue May 08 2018 Timothy Redaelli - 2.9.0-31 +- Backport fix QEDE PMD (#1494616) + +* Tue May 08 2018 Timothy Redaelli - 2.9.0-30 +- Backport "net/nfp: fix mbufs releasing when stop or close" (#1575067) + +* Sun May 06 2018 Timothy Redaelli - 2.9.0-29 +- Backport net/mlx4: fix broadcast Rx (#1568908) + +* Fri May 04 2018 Kevin Traynor - 2.9.0-28 +- Backport mempool use after free fix and debug (#1575016) + +* Fri May 04 2018 Aaron Conole - 2.9.0-27 +- Fix the email address in the changelog. + +* Wed May 02 2018 Aaron Conole - 2.9.0-26 +- Backport fix for missing user during install/upgrade (#1559374) + +* Mon Apr 30 2018 Jakub Sitnicki - 2.9.0-25 +- Backport fix for Unicode encoding in Python IDL (#1547065) + +* Thu Apr 26 2018 Aaron Conole - 2.9.0-24 +- Backport the cisco enic patches + +* Thu Apr 26 2018 Timothy Redaelli - 2.9.0-23 +- Backport a fix for "Offload of Fragment Matching in OvS Userspace" (#1559111) + +* Thu Apr 26 2018 Timothy Redaelli - 2.9.0-22 +- Backport "ovn-controller: Handle Port_Binding's "requested-chassis" option" (#1559222) + +* Thu Apr 26 2018 Timothy Redaelli - 2.9.0-21 +- Backport "python: avoid useless JSON conversion to enhance performance" (#1551016) + +* Thu Apr 26 2018 Timothy Redaelli - 2.9.0-20 +- Backport "ovn: Set router lifetime value for IPv6 periodic RA" (#1567735) +- Remove useless libpcap-devel dependency + +* Mon Apr 23 2018 Kevin Traynor - 2.9.0-19 +- Backport DPDK CVE-2018-1059 (#1544298) + +* Fri Apr 20 2018 Davide Caratti - 2.9.0-18 +- Backport fix for PMD segfault when BNXT receives tunneled traffic (#1567634) + +* Mon Apr 16 2018 Timothy Redaelli - 2.9.0-17 +- Backport patches to make NFP detect the correct firmware (#1566712) +- Backport "rhel: Fix literal dollar sign usage in systemd service files" + +* Fri Mar 30 2018 Timothy Redaelli - 2.9.0-16 +- Backport "rhel: don't drop capabilities when running as root" +- Change owner of /etc/openvswitch during upgrade + +* Tue Mar 27 2018 Timothy Redaelli - 2.9.0-14 +- Disable DPDK on ppc64le + +* Sun Mar 25 2018 Timothy Redaelli - 2.9.0-13 +- Disable DPDK on aarch64 + +* Thu Mar 22 2018 Flavio Leitner - 2.9.0-12 +- fixes i40e link status timeout trough direct register access (#1559612) + +* Thu Mar 22 2018 Timothy Redaelli - 2.9.0-11 +- Enable BNXT, MLX4, MLX5 and NFP (aligned from FDB) + +* Thu Mar 22 2018 Timothy Redaelli - 2.9.0-10 +- Backport "Offload of Fragment Matching in OvS Userspace" (#1559111) + +* Thu Mar 15 2018 Timothy Redaelli - 2.9.0-9 +- Avoid to unpack openvswitch 2 times and to overwrite all the patched files + Fixes 2.9.0-4 + +* Thu Mar 08 2018 Eric Garver - 2.9.0-8 +- Backport "ofproto-dpif-xlate: translate action_set in clone action" (#1544892) + +* Thu Mar 08 2018 Timothy Redaelli - 2.9.0-7 +- Backport "ovn: Calculate UDP checksum for DNS over IPv6" (#1553023) + +* Tue Mar 06 2018 Aaron Conole - 2.9.0-6 +- Require the latest rhel selinux policy (#1549673) + +* Fri Mar 02 2018 Matteo Croce - 2.9.0-5 +- Backport vhost patches (#1541881) + +* Fri Mar 02 2018 Timothy Redaelli - 2.9.0-4 +- Don't require python-sphinx directly, but built it since python-sphinx is in + the optional repository that is not available on RHEV and TPS test fails. + +* Tue Feb 20 2018 Timothy Redaelli - 2.9.0-3 +- Don't verify the user and group of /etc/openvswitch and /etc/sysconfig/openvswitch + This is needed since we cannot change the user and group if you upgrade from + an old version that still uses root:root. + +* Tue Feb 20 2018 Timothy Redaelli - 2.9.0-1 +- Update to OVS 2.9.0 + DPDK 17.11 (#1475436) +- Backport of ofproto-dpif: Delete system tunnel interface when remove ovs bridge (#1505776) +- Backport DPDK patches from FDB (vhost user async fix and enic fixes) +- Backport 94cd8383e297 and 951d79e638ec to fix permissions (#1489465) +- Use a static configuration file for DPDK + +* Fri Jan 12 2018 Timothy Redaelli - 2.7.3-3.git20180112 +- Rebase to latest OVS branch-2.7 fixes + DPDK 16.11.4 (#1533872) + +* Wed Oct 18 2017 Timothy Redaelli - 2.7.3-2.git20171010 +- Remove ovs-test and ovs-vlan-test from openvswitch-test package +- Add an option to enable openvswitch-ovn-docker package (disabled by default) + +* Tue Oct 10 2017 Timothy Redaelli - 2.7.3-1.git20171010 +- Update to OVS 2.7.3 + branch-2.7 bugfixes (#1502742) + +* Mon Sep 18 2017 Kevin Traynor - 2.7.2-10.git20170914 +- Backport of fix for i40e flow control get (#1491791) + +* Thu Sep 14 2017 Timothy Redaelli - 2.7.2-9.git20170914 +- Rebase to latest OVS branch fixes + DPDK 16.11.3 + +* Wed Sep 06 2017 Timothy Redaelli - 2.7.2-8.git20170719 +- Backport of enic driver crash fix to dpdk-16.11 (#1489010) + +* Tue Aug 22 2017 Aaron Conole - 2.7.2-7.git20170719 +- Re-enable Cisco enic PMD (#1482675) + +* Tue Aug 22 2017 Aaron Conole - 2.7.2-6.git20170719 +- Update based on multi-arch + +* Tue Aug 22 2017 Aaron Conole - 2.7.2-5.git20170719 +- Disable unsupported PMDs (#1482675) +- software and hardware PMDs audited by the team + +* Thu Aug 03 2017 John W. Linville - 2.7.2-4.git20170719 +- Backport mmap fix for memory initialization on ppc64le to dpdk-16.11 + +* Thu Aug 03 2017 John W. Linville - 2.7.2-3.git20170719 +- Backport support for vfio-pci based PMD in ppc64le to dpdk-16.11 + +* Thu Aug 03 2017 John W. Linville - 2.7.2-2.git20170719 +- Backport support for Intel XL710 (i40e) pmd in ppc64le to dpdk-16.11 + +* Wed Jul 19 2017 Timothy Redaelli - 2.7.2-1.git20170719 +- Update to OVS 2.7.2 + branch-2.7 bugfixes (#1472854) +- Add a symlink of the OCF script in the OCF resources folder (#1472729) + +* Mon Jul 10 2017 Timothy Redaelli - 2.7.1-1.git20170710 +- Align to FDB openvswitch-2.7.1-1.git20170710.el7fdb (#1459286) + +* Wed Jun 07 2017 Timothy Redaelli - 2.6.1-20.git20161206 +- backport "mcast-snooping: Avoid segfault for vswitchd" (#1456356) +- backport "mcast-snooping: Flush ports mdb when VLAN cfg changed." (#1456358) + +* Sun May 21 2017 Lance Richardson - 2.6.1-19.git20161206 +- backport patch to not automatically restard ovn svcs after upgrade (#1438901) + +* Tue May 09 2017 Timothy Redaelli - 2.6.1-18.git20161206 +- rconn: Avoid abort for ill-behaved remote (#1449109) + +* Fri May 05 2017 Timothy Redaelli - 2.6.1-17.git20161206 +- Fix race in "PMD - change numa node" test (#1447714) +- Report only un-deleted groups in group stats replies. (#1447724) +- Workaround some races in "ofproto - asynchronous message control" tests (#1448536) + +* Mon Apr 10 2017 Eric Garver - 2.6.1-16.git20161206 +- Fix an issue using set_field action on nw_ecn (#1410715) + +* Fri Mar 31 2017 Kevin Traynor - 2.6.1-15.git20161206 +- backport patch to fix uni-dir vhost perf drop (#1414919) + +* Wed Mar 29 2017 Lance Richardson - 2.6.1-14.git20161206 +- backport patch to correct port number in firewalld service file (#1390938) + +* Fri Mar 10 2017 Timothy Redaelli - 2.6.1-13.git20161206 +- backport patch to enable/disable libcap-ng support (--with libcapng) + +* Thu Mar 09 2017 Aaron Conole - 2.6.1-12.git20161206 +- Fix an MTU issue with ovs mirror ports (#1426342) + +* Wed Mar 08 2017 Lance Richardson - 2.6.1-11.git20161206 +- update spec file to install firewalld service files (#1390938) + +* Thu Feb 16 2017 Aaron Conole - 2.6.1-10.git20161206 +- vhostuser client mode support for ifup/ifdown (#1418957) + +* Thu Feb 16 2017 Lance Richardson - 2.6.1-9.git20161206 +- OVN-DHCP is not sending DHCP responses after a MAC change in north db (#1418261) + +* Thu Feb 16 2017 Timothy Redaelli - 2.6.1-8.git20161206 +- systemd service starts too fast (#1422227) + +* Fri Feb 10 2017 Lance Richardson - 2.6.1-7.git20161206 +- iptables should be easily configurable for OVN hosts and OVN central server (#1390938) + +* Thu Feb 09 2017 Aaron Conole - 2.6.1-6.git20161206 +- ovn: IPAM has no reply to DHCP request for renewal (#1415449) + +* Tue Feb 07 2017 Timothy Redaelli - 2.6.1-5.git20161206 +- ovn-controller: Provide the option to set Encap.options:csum (#1418742) + +* Mon Feb 06 2017 Flavio Leitner 2.5.0-23.git20160727 +- fixed broken service after a package upgrade (#1403958) + +* Wed Dec 21 2016 Lance Richardson 2.6.1-3.git20161206 +- ovsdb-idlc: Initialize nonnull string columns for inserted rows. (#1405094) + +* Fri Dec 09 2016 Lance Richardson 2.6.1-2.git20161206 +- OVN: Support IPAM with externally specified MAC (#1368043) + +* Tue Dec 06 2016 Kevin Traynor 2.6.1-1.git20161206 +- Update to OVS 2.6.1 + branch-2.6 bugfixes (#1335865) +- Update to use DPDK 16.11 (#1335865) +- Enable OVN + +* Tue Nov 22 2016 Flavio Leitner 2.5.0-22.git20160727 +- ifnotifier: do not wake up when there is no db connection (#1397504) + +* Tue Nov 22 2016 Flavio Leitner 2.5.0-21.git20160727 +- Use instant sending instead of queue (#1397481) + +* Mon Nov 21 2016 Flavio Leitner 2.5.0-20.git20160727 +- dpdk vhost: workaround stale vring base (#1376217) + +* Thu Oct 20 2016 Aaron Conole - 2.5.0-19.git20160727 +- Applied tnl fix (#1346232) + +* Tue Oct 18 2016 Aaron Conole - 2.5.0-18.git20160727 +- Applied the systemd backports + +* Tue Oct 18 2016 Flavio Leitner - 2.5.0-17.git20160727 +- Fixed OVS to not require SSSE3 if DPDK is not used (#1378501) + +* Tue Oct 18 2016 Flavio Leitner - 2.5.0-16.git20160727 +- Fixed a typo (#1385096) + +* Tue Oct 18 2016 Flavio Leitner - 2.5.0-15.git20160727 +- Do not restart the service after a package upgrade (#1385096) + +* Mon Sep 26 2016 Panu Matilainen - 2.5.0-14.git20160727 +- Permit running just the kernel datapath tests (#1375660) + +* Wed Sep 14 2016 Panu Matilainen - 2.5.0-13.git20160727 +- Obsolete openvswitch-dpdk < 2.6.0 to provide migration path +- Add spec option to run kernel datapath tests (#1375660) + +* Fri Sep 09 2016 Panu Matilainen - 2.5.0-12.git20160727 +- Backport ovs-tcpdump support (#1335560) +- Add ovs-pcap, ovs-tcpdump and ovs-tcpundump to -test package + +* Thu Sep 08 2016 Panu Matilainen - 2.5.0-11.git20160727 +- Add openvswitch-dpdk provide for testing and depending on dpdk-enablement +- Disable bnx2x driver, it's not stable +- Build dpdk with -Wno-error to permit for newer compilers +- Drop subpkgs conditional from spec, its not useful anymore + +* Fri Aug 26 2016 Panu Matilainen - 2.5.0-10.git20160727 +- Fix adding ukeys for same flow by different pmds (#1364898) + +* Thu Jul 28 2016 Flavio Leitner - 2.5.0-9.git20160727 +- Fixed ifup-ovs to support DPDK Bond (#1360426) + +* Thu Jul 28 2016 Flavio Leitner - 2.5.0-8.git20160727 +- Fixed ifup-ovs to delete the ports first (#1359890) + +* Wed Jul 27 2016 Flavio Leitner - 2.5.0-7.git20160727 +- pull bugfixes from upstream 2.5 branch (#1360431) + +* Tue Jul 26 2016 Flavio Leitner - 2.5.0-6.git20160628 +- Removed redundant provides for openvswitch +- Added epoch to the provides for -static package + +* Thu Jul 21 2016 Flavio Leitner - 2.5.0-5.git20160628 +- Renamed to openvswitch (dpdk enabled) +- Enabled sub-packages +- Removed conflicts to openvswitch +- Increased epoch to give this package preference over stable + +* Tue Jun 28 2016 Panu Matilainen - 2.5.0-4.git20160628 +- pull bugfixes from upstream 2.5 branch (#1346313) + +* Wed Apr 27 2016 Panu Matilainen - 2.5.0-4 +- Enable DPDK bnx2x driver (#1330589) +- Add README.DPDK-PMDS document listing drivers included in this package + +* Thu Mar 17 2016 Flavio Leitner - 2.5.0-3 +- Run testsuite by default on x86 arches (#1318786) + (this sync the spec with non-dpdk version though the testsuite + was already enabled here) + +* Thu Mar 17 2016 Panu Matilainen - 2.5.0-2 +- eliminate debuginfo-artifacts (#1281913) + +* Thu Mar 17 2016 Panu Matilainen - 2.5.0-1 +- Update to OVS to 2.5.0 and bundled DPDK to 2.2.0 (#1317889) + +* Mon Nov 23 2015 Panu Matilainen +- Provide openvswitch ver-rel (#1281894) + +* Thu Aug 13 2015 Flavio Leitner +- ExclusiveArch to x86_64 (dpdk) +- Provides bundled(dpdk) +- Re-enable testsuite + +* Fri Aug 07 2015 Panu Matilainen +- Enable building from pre-release snapshots, update to pre 2.4 version +- Bundle a minimal, private build of DPDK 2.0 and link statically +- Rename package to openvswitch-dpdk, conflict with regular openvswitch +- Disable all sub-packages + +* Wed Jan 12 2011 Ralf Spenneberg +- First build on F14