Merge ~paelzer/ubuntu/+source/dpdk:lp-1940913-MRE-19.11.10-FOCAL into ubuntu/+source/dpdk:ubuntu/focal-devel

Proposed by Christian Ehrhardt 
Status: Merged
Approved by: Christian Ehrhardt 
Approved revision: c78c4df84c9e53821650ac10b1e40cdcbc368bac
Merged at revision: c78c4df84c9e53821650ac10b1e40cdcbc368bac
Proposed branch: ~paelzer/ubuntu/+source/dpdk:lp-1940913-MRE-19.11.10-FOCAL
Merge into: ubuntu/+source/dpdk:ubuntu/focal-devel
Diff against target: 19632 lines (+5367/-2346)
459 files modified
MAINTAINERS (+0/-2)
VERSION (+1/-1)
app/meson.build (+0/-3)
app/test-bbdev/test_bbdev_perf.c (+2/-2)
app/test-compress-perf/comp_perf_options_parse.c (+1/-1)
app/test-crypto-perf/cperf_options_parsing.c (+7/-1)
app/test-crypto-perf/cperf_test_common.c (+1/-1)
app/test-eventdev/evt_options.c (+2/-2)
app/test-eventdev/parser.c (+3/-1)
app/test-eventdev/parser.h (+1/-1)
app/test-pmd/bpf_cmd.c (+1/-1)
app/test-pmd/cmdline.c (+23/-16)
app/test-pmd/cmdline_flow.c (+5/-1)
app/test-pmd/config.c (+70/-9)
app/test-pmd/csumonly.c (+11/-10)
app/test-pmd/parameters.c (+2/-2)
app/test-pmd/testpmd.c (+76/-99)
app/test-pmd/testpmd.h (+1/-2)
app/test/autotest_test_funcs.py (+4/-1)
app/test/meson.build (+1/-2)
app/test/packet_burst_generator.c (+3/-2)
app/test/process.h (+8/-2)
app/test/test.c (+6/-5)
app/test/test_bpf.c (+1/-1)
app/test/test_cmdline_ipaddr.c (+1/-1)
app/test/test_cmdline_num.c (+2/-2)
app/test/test_cryptodev.c (+24/-14)
app/test/test_cryptodev_aes_test_vectors.h (+1/-1)
app/test/test_distributor_perf.c (+4/-2)
app/test/test_eal_flags.c (+1/-0)
app/test/test_event_crypto_adapter.c (+4/-5)
app/test/test_event_timer_adapter.c (+3/-1)
app/test/test_flow_classify.c (+6/-0)
app/test/test_kni.c (+6/-2)
app/test/test_mbuf.c (+1/-1)
app/test/test_mempool.c (+1/-1)
app/test/test_power_cpufreq.c (+77/-20)
app/test/test_prefetch.c (+1/-1)
app/test/test_reciprocal_division_perf.c (+24/-17)
app/test/test_stack.c (+4/-0)
app/test/test_stack_perf.c (+4/-0)
app/test/test_table_tables.c (+2/-1)
app/test/test_timer_secondary.c (+4/-4)
buildtools/check-experimental-syms.sh (+1/-1)
buildtools/map-list-symbol.sh (+1/-1)
config/meson.build (+6/-3)
config/ppc_64/meson.build (+14/-3)
debian/changelog (+12/-0)
debian/patches/series (+1/-7)
debian/patches/ubuntu/lp-1940957-net-i40e-support-25G-AOC-ACC-cables.patch (+42/-0)
dev/null (+0/-50)
devtools/check-maintainers.sh (+2/-2)
devtools/test-meson-builds.sh (+1/-1)
doc/build-sdk-meson.txt (+1/-1)
doc/guides/bbdevs/fpga_lte_fec.rst (+1/-1)
doc/guides/conf.py (+4/-2)
doc/guides/contributing/stable.rst (+1/-1)
doc/guides/cryptodevs/caam_jr.rst (+1/-1)
doc/guides/cryptodevs/scheduler.rst (+1/-1)
doc/guides/cryptodevs/virtio.rst (+1/-1)
doc/guides/howto/pvp_reference_benchmark.rst (+1/-1)
doc/guides/linux_gsg/linux_drivers.rst (+10/-0)
doc/guides/nics/bnxt.rst (+3/-3)
doc/guides/nics/ena.rst (+1/-1)
doc/guides/nics/hns3.rst (+3/-3)
doc/guides/nics/mlx5.rst (+8/-1)
doc/guides/nics/netvsc.rst (+1/-1)
doc/guides/nics/nfp.rst (+5/-5)
doc/guides/nics/octeontx2.rst (+1/-1)
doc/guides/nics/virtio.rst (+4/-3)
doc/guides/nics/vmxnet3.rst (+2/-1)
doc/guides/prog_guide/bbdev.rst (+1/-1)
doc/guides/prog_guide/dev_kit_build_system.rst (+1/-1)
doc/guides/prog_guide/env_abstraction_layer.rst (+1/-1)
doc/guides/prog_guide/eventdev.rst (+1/-1)
doc/guides/prog_guide/multi_proc_support.rst (+1/-1)
doc/guides/prog_guide/qos_framework.rst (+1/-1)
doc/guides/prog_guide/writing_efficient_code.rst (+8/-7)
doc/guides/rawdevs/ntb.rst (+1/-1)
doc/guides/rel_notes/deprecation.rst (+6/-0)
doc/guides/rel_notes/known_issues.rst (+5/-5)
doc/guides/rel_notes/release_16_11.rst (+1/-1)
doc/guides/rel_notes/release_19_08.rst (+1/-1)
doc/guides/rel_notes/release_19_11.rst (+738/-7)
doc/guides/rel_notes/release_2_2.rst (+1/-1)
doc/guides/sample_app_ug/l2_forward_cat.rst (+1/-1)
doc/guides/sample_app_ug/performance_thread.rst (+1/-1)
doc/guides/sample_app_ug/vhost.rst (+1/-1)
doc/guides/testpmd_app_ug/testpmd_funcs.rst (+3/-2)
drivers/bus/dpaa/base/fman/fman.c (+1/-1)
drivers/bus/dpaa/base/fman/fman_hw.c (+16/-17)
drivers/bus/dpaa/base/fman/netcfg_layer.c (+2/-2)
drivers/bus/dpaa/base/qbman/bman_driver.c (+9/-4)
drivers/bus/dpaa/base/qbman/qman_driver.c (+12/-5)
drivers/bus/dpaa/include/fsl_qman.h (+1/-1)
drivers/bus/dpaa/include/netcfg.h (+0/-1)
drivers/bus/fslmc/fslmc_logs.h (+0/-2)
drivers/bus/fslmc/qbman/qbman_portal.c (+3/-11)
drivers/bus/pci/pci_common.c (+4/-1)
drivers/bus/vmbus/vmbus_common.c (+4/-1)
drivers/common/dpaax/Makefile (+2/-1)
drivers/common/dpaax/caamflib.c (+16/-0)
drivers/common/dpaax/caamflib/compat.h (+6/-6)
drivers/common/dpaax/compat.h (+0/-1)
drivers/common/dpaax/dpaax_iova_table.c (+3/-1)
drivers/common/dpaax/meson.build (+3/-1)
drivers/common/dpaax/rte_common_dpaax_version.map (+4/-0)
drivers/common/octeontx2/otx2_dev.h (+3/-0)
drivers/common/qat/qat_device.h (+1/-1)
drivers/compress/qat/qat_comp.c (+4/-3)
drivers/compress/qat/qat_comp_pmd.c (+75/-36)
drivers/crypto/caam_jr/Makefile (+0/-7)
drivers/crypto/caam_jr/caam_jr.c (+0/-2)
drivers/crypto/caam_jr/meson.build (+0/-5)
drivers/crypto/dpaa2_sec/Makefile (+0/-7)
drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c (+26/-28)
drivers/crypto/dpaa2_sec/meson.build (+0/-5)
drivers/crypto/dpaa_sec/Makefile (+0/-7)
drivers/crypto/dpaa_sec/dpaa_sec.c (+14/-2)
drivers/crypto/dpaa_sec/meson.build (+0/-5)
drivers/crypto/mvsam/rte_mrvl_pmd.c (+10/-2)
drivers/crypto/mvsam/rte_mrvl_pmd_ops.c (+7/-7)
drivers/crypto/octeontx/otx_cryptodev.c (+4/-1)
drivers/crypto/qat/qat_sym.c (+7/-3)
drivers/crypto/qat/qat_sym_session.c (+3/-0)
drivers/event/dpaa2/dpaa2_eventdev_logs.h (+0/-2)
drivers/event/octeontx2/otx2_evdev.c (+16/-18)
drivers/event/octeontx2/otx2_worker.h (+1/-1)
drivers/mempool/octeontx2/otx2_mempool_ops.c (+4/-2)
drivers/meson.build (+1/-1)
drivers/net/af_xdp/rte_eth_af_xdp.c (+5/-1)
drivers/net/ark/ark_ethdev.c (+4/-0)
drivers/net/ark/ark_ethdev_rx.c (+11/-38)
drivers/net/ark/ark_pktdir.c (+1/-1)
drivers/net/ark/ark_pktdir.h (+1/-1)
drivers/net/avp/avp_ethdev.c (+3/-0)
drivers/net/bnx2x/bnx2x.h (+7/-6)
drivers/net/bnx2x/bnx2x_rxtx.c (+7/-6)
drivers/net/bnxt/bnxt.h (+61/-1)
drivers/net/bnxt/bnxt_cpr.c (+2/-0)
drivers/net/bnxt/bnxt_cpr.h (+36/-8)
drivers/net/bnxt/bnxt_ethdev.c (+418/-131)
drivers/net/bnxt/bnxt_filter.c (+5/-0)
drivers/net/bnxt/bnxt_flow.c (+114/-57)
drivers/net/bnxt/bnxt_hwrm.c (+245/-108)
drivers/net/bnxt/bnxt_hwrm.h (+6/-9)
drivers/net/bnxt/bnxt_irq.c (+7/-4)
drivers/net/bnxt/bnxt_ring.c (+14/-16)
drivers/net/bnxt/bnxt_ring.h (+1/-1)
drivers/net/bnxt/bnxt_rxq.c (+4/-33)
drivers/net/bnxt/bnxt_rxq.h (+1/-0)
drivers/net/bnxt/bnxt_rxr.c (+118/-16)
drivers/net/bnxt/bnxt_rxr.h (+5/-2)
drivers/net/bnxt/bnxt_rxtx_vec_sse.c (+30/-10)
drivers/net/bnxt/bnxt_stats.c (+78/-17)
drivers/net/bnxt/bnxt_stats.h (+1/-6)
drivers/net/bnxt/bnxt_txq.c (+2/-2)
drivers/net/bnxt/bnxt_txr.c (+12/-14)
drivers/net/bnxt/bnxt_util.h (+2/-0)
drivers/net/bnxt/bnxt_vnic.c (+4/-3)
drivers/net/bnxt/bnxt_vnic.h (+1/-3)
drivers/net/bnxt/hsi_struct_def_dpdk.h (+9/-2)
drivers/net/bonding/eth_bond_private.h (+1/-1)
drivers/net/bonding/rte_eth_bond_8023ad.c (+16/-1)
drivers/net/bonding/rte_eth_bond_api.c (+17/-9)
drivers/net/bonding/rte_eth_bond_args.c (+4/-4)
drivers/net/bonding/rte_eth_bond_pmd.c (+18/-8)
drivers/net/cxgbe/base/common.h (+9/-9)
drivers/net/cxgbe/cxgbe_ethdev.c (+3/-0)
drivers/net/dpaa2/dpaa2_ethdev.c (+16/-5)
drivers/net/e1000/base/e1000_i210.c (+2/-0)
drivers/net/e1000/em_ethdev.c (+12/-6)
drivers/net/e1000/igb_ethdev.c (+17/-12)
drivers/net/e1000/igb_flow.c (+1/-1)
drivers/net/e1000/igb_rxtx.c (+6/-3)
drivers/net/ena/base/ena_com.c (+5/-5)
drivers/net/ena/base/ena_plat_dpdk.h (+6/-1)
drivers/net/ena/ena_ethdev.c (+16/-4)
drivers/net/ena/ena_platform.h (+0/-12)
drivers/net/enetc/enetc_ethdev.c (+3/-0)
drivers/net/enic/enic_ethdev.c (+3/-0)
drivers/net/failsafe/failsafe_ops.c (+8/-2)
drivers/net/fm10k/fm10k_ethdev.c (+2/-7)
drivers/net/hinic/base/hinic_compat.h (+8/-17)
drivers/net/hinic/base/hinic_pmd_nicio.c (+2/-2)
drivers/net/hinic/hinic_pmd_ethdev.c (+11/-0)
drivers/net/hns3/hns3_cmd.c (+9/-10)
drivers/net/hns3/hns3_cmd.h (+1/-3)
drivers/net/hns3/hns3_dcb.c (+46/-25)
drivers/net/hns3/hns3_dcb.h (+1/-1)
drivers/net/hns3/hns3_ethdev.c (+104/-100)
drivers/net/hns3/hns3_ethdev.h (+2/-4)
drivers/net/hns3/hns3_ethdev_vf.c (+9/-8)
drivers/net/hns3/hns3_fdir.c (+5/-1)
drivers/net/hns3/hns3_fdir.h (+1/-1)
drivers/net/hns3/hns3_flow.c (+36/-37)
drivers/net/hns3/hns3_intr.c (+3/-3)
drivers/net/hns3/hns3_intr.h (+1/-1)
drivers/net/hns3/hns3_logs.h (+1/-1)
drivers/net/hns3/hns3_mbx.c (+13/-6)
drivers/net/hns3/hns3_mbx.h (+1/-11)
drivers/net/hns3/hns3_mp.c (+3/-3)
drivers/net/hns3/hns3_mp.h (+1/-1)
drivers/net/hns3/hns3_regs.c (+3/-6)
drivers/net/hns3/hns3_regs.h (+1/-1)
drivers/net/hns3/hns3_rss.c (+1/-1)
drivers/net/hns3/hns3_rss.h (+1/-1)
drivers/net/hns3/hns3_rxtx.c (+3/-2)
drivers/net/hns3/hns3_rxtx.h (+1/-4)
drivers/net/hns3/hns3_stats.c (+1/-1)
drivers/net/hns3/hns3_stats.h (+1/-1)
drivers/net/i40e/base/virtchnl.h (+28/-1)
drivers/net/i40e/i40e_ethdev.c (+150/-61)
drivers/net/i40e/i40e_ethdev.h (+6/-5)
drivers/net/i40e/i40e_ethdev_vf.c (+51/-47)
drivers/net/i40e/i40e_fdir.c (+1/-1)
drivers/net/i40e/i40e_flow.c (+80/-11)
drivers/net/i40e/i40e_pf.c (+65/-0)
drivers/net/i40e/i40e_rxtx.c (+15/-7)
drivers/net/i40e/i40e_rxtx_vec_neon.c (+16/-4)
drivers/net/i40e/i40e_vf_representor.c (+20/-17)
drivers/net/iavf/base/virtchnl.h (+28/-1)
drivers/net/iavf/iavf.h (+3/-3)
drivers/net/iavf/iavf_ethdev.c (+14/-11)
drivers/net/iavf/iavf_rxtx.c (+7/-1)
drivers/net/iavf/iavf_rxtx.h (+1/-1)
drivers/net/iavf/iavf_vchnl.c (+18/-7)
drivers/net/ice/base/ice_lan_tx_rx.h (+1/-1)
drivers/net/ice/base/ice_osdep.h (+4/-3)
drivers/net/ice/base/ice_switch.c (+2/-1)
drivers/net/ice/base/meson.build (+6/-0)
drivers/net/ice/ice_ethdev.c (+66/-27)
drivers/net/ifc/base/ifcvf.c (+6/-1)
drivers/net/ipn3ke/ipn3ke_representor.c (+3/-0)
drivers/net/ixgbe/ixgbe_ethdev.c (+19/-3)
drivers/net/ixgbe/ixgbe_flow.c (+1/-0)
drivers/net/kni/rte_eth_kni.c (+10/-2)
drivers/net/liquidio/lio_ethdev.c (+3/-0)
drivers/net/memif/rte_eth_memif.c (+1/-0)
drivers/net/mlx4/mlx4.c (+3/-0)
drivers/net/mlx4/mlx4_flow.c (+2/-1)
drivers/net/mlx4/mlx4_mp.c (+1/-1)
drivers/net/mlx4/mlx4_rxtx.c (+0/-4)
drivers/net/mlx4/mlx4_txq.c (+9/-10)
drivers/net/mlx5/Makefile (+10/-0)
drivers/net/mlx5/meson.build (+4/-0)
drivers/net/mlx5/mlx5.c (+125/-55)
drivers/net/mlx5/mlx5.h (+2/-3)
drivers/net/mlx5/mlx5_ethdev.c (+2/-2)
drivers/net/mlx5/mlx5_flow.c (+37/-12)
drivers/net/mlx5/mlx5_flow.h (+1/-0)
drivers/net/mlx5/mlx5_flow_dv.c (+94/-13)
drivers/net/mlx5/mlx5_glue.c (+47/-10)
drivers/net/mlx5/mlx5_glue.h (+15/-1)
drivers/net/mlx5/mlx5_mp.c (+1/-1)
drivers/net/mlx5/mlx5_mr.c (+3/-3)
drivers/net/mlx5/mlx5_nl.c (+21/-1)
drivers/net/mlx5/mlx5_rxq.c (+2/-8)
drivers/net/mlx5/mlx5_rxtx.c (+12/-4)
drivers/net/mlx5/mlx5_rxtx.h (+1/-0)
drivers/net/mlx5/mlx5_rxtx_vec_altivec.h (+7/-6)
drivers/net/mlx5/mlx5_rxtx_vec_neon.h (+15/-11)
drivers/net/mlx5/mlx5_rxtx_vec_sse.h (+6/-5)
drivers/net/mlx5/mlx5_txq.c (+1/-1)
drivers/net/mvneta/mvneta_ethdev.c (+3/-0)
drivers/net/mvpp2/mrvl_ethdev.c (+12/-3)
drivers/net/mvpp2/mrvl_ethdev.h (+2/-0)
drivers/net/mvpp2/mrvl_tm.c (+66/-1)
drivers/net/netvsc/hn_ethdev.c (+2/-0)
drivers/net/nfb/nfb_ethdev.c (+3/-0)
drivers/net/nfp/nfp_net.c (+18/-11)
drivers/net/octeontx/base/octeontx_pkivf.h (+0/-1)
drivers/net/octeontx/octeontx_ethdev.c (+2/-0)
drivers/net/octeontx2/otx2_ethdev.c (+41/-31)
drivers/net/octeontx2/otx2_ethdev.h (+12/-1)
drivers/net/octeontx2/otx2_ethdev_devargs.c (+1/-1)
drivers/net/octeontx2/otx2_ethdev_ops.c (+1/-2)
drivers/net/octeontx2/otx2_flow.c (+14/-2)
drivers/net/octeontx2/otx2_flow.h (+0/-1)
drivers/net/octeontx2/otx2_tx.c (+6/-2)
drivers/net/octeontx2/otx2_tx.h (+7/-5)
drivers/net/octeontx2/otx2_vlan.c (+4/-4)
drivers/net/pcap/rte_eth_pcap.c (+1/-1)
drivers/net/pfe/pfe_ethdev.c (+3/-5)
drivers/net/qede/base/ecore_int.c (+1/-1)
drivers/net/qede/qede_ethdev.c (+4/-2)
drivers/net/sfc/base/efx_mcdi.c (+3/-0)
drivers/net/sfc/sfc.h (+3/-2)
drivers/net/sfc/sfc_ethdev.c (+66/-52)
drivers/net/sfc/sfc_port.c (+32/-17)
drivers/net/softnic/conn.c (+1/-0)
drivers/net/softnic/rte_eth_softnic_action.c (+1/-0)
drivers/net/szedata2/rte_eth_szedata2.c (+3/-0)
drivers/net/tap/rte_eth_tap.c (+4/-1)
drivers/net/tap/tap_flow.c (+7/-1)
drivers/net/tap/tap_intr.c (+1/-1)
drivers/net/thunderx/nicvf_ethdev.c (+3/-4)
drivers/net/vhost/rte_eth_vhost.c (+3/-4)
drivers/net/virtio/meson.build (+1/-1)
drivers/net/virtio/virtio_ethdev.c (+3/-0)
drivers/net/virtio/virtio_rxtx.c (+51/-19)
drivers/net/virtio/virtio_rxtx_simple_altivec.c (+6/-6)
drivers/net/virtio/virtio_rxtx_simple_neon.c (+6/-6)
drivers/net/virtio/virtio_rxtx_simple_sse.c (+6/-6)
drivers/net/virtio/virtio_user_ethdev.c (+54/-18)
drivers/net/vmxnet3/vmxnet3_ethdev.c (+2/-0)
drivers/raw/ntb/ntb.c (+13/-0)
drivers/raw/ntb/ntb_hw_intel.c (+5/-0)
drivers/raw/skeleton/skeleton_rawdev_test.c (+1/-0)
examples/bbdev_app/Makefile (+1/-1)
examples/bbdev_app/main.c (+4/-1)
examples/bond/Makefile (+1/-1)
examples/bond/main.c (+4/-0)
examples/cmdline/Makefile (+1/-1)
examples/cmdline/main.c (+3/-0)
examples/distributor/Makefile (+1/-1)
examples/distributor/main.c (+3/-0)
examples/ethtool/ethtool-app/ethapp.c (+0/-1)
examples/ethtool/ethtool-app/main.c (+3/-0)
examples/eventdev_pipeline/Makefile (+1/-1)
examples/fips_validation/Makefile (+1/-1)
examples/fips_validation/main.c (+3/-0)
examples/flow_classify/Makefile (+1/-1)
examples/flow_classify/flow_classify.c (+4/-1)
examples/flow_filtering/Makefile (+1/-1)
examples/flow_filtering/main.c (+3/-0)
examples/helloworld/Makefile (+1/-1)
examples/helloworld/main.c (+4/-0)
examples/ioat/Makefile (+1/-1)
examples/ioat/ioatfwd.c (+3/-0)
examples/ip_fragmentation/Makefile (+1/-1)
examples/ip_fragmentation/main.c (+3/-0)
examples/ip_pipeline/Makefile (+1/-1)
examples/ip_pipeline/main.c (+3/-0)
examples/ip_reassembly/Makefile (+1/-1)
examples/ip_reassembly/main.c (+3/-0)
examples/ipsec-secgw/Makefile (+1/-1)
examples/ipsec-secgw/ipsec-secgw.c (+2/-0)
examples/ipv4_multicast/Makefile (+1/-1)
examples/ipv4_multicast/main.c (+3/-0)
examples/kni/Makefile (+1/-1)
examples/kni/main.c (+3/-0)
examples/l2fwd-cat/Makefile (+1/-1)
examples/l2fwd-cat/l2fwd-cat.c (+4/-1)
examples/l2fwd-crypto/Makefile (+1/-1)
examples/l2fwd-crypto/main.c (+23/-0)
examples/l2fwd-event/Makefile (+1/-1)
examples/l2fwd-event/main.c (+3/-0)
examples/l2fwd-jobstats/Makefile (+1/-1)
examples/l2fwd-jobstats/main.c (+3/-0)
examples/l2fwd-keepalive/Makefile (+1/-1)
examples/l2fwd-keepalive/main.c (+4/-0)
examples/l2fwd/Makefile (+1/-1)
examples/l2fwd/main.c (+3/-0)
examples/l3fwd-acl/Makefile (+1/-1)
examples/l3fwd-acl/main.c (+3/-0)
examples/l3fwd-power/Makefile (+1/-1)
examples/l3fwd-power/main.c (+2/-2)
examples/l3fwd/Makefile (+1/-1)
examples/l3fwd/l3fwd_lpm.c (+16/-10)
examples/l3fwd/main.c (+4/-0)
examples/link_status_interrupt/Makefile (+1/-1)
examples/link_status_interrupt/main.c (+3/-0)
examples/meson.build (+10/-6)
examples/multi_process/client_server_mp/mp_client/client.c (+3/-0)
examples/multi_process/client_server_mp/mp_server/main.c (+4/-0)
examples/multi_process/simple_mp/main.c (+4/-0)
examples/multi_process/symmetric_mp/main.c (+3/-0)
examples/ntb/Makefile (+1/-1)
examples/ntb/ntb_fwd.c (+3/-0)
examples/packet_ordering/Makefile (+1/-1)
examples/packet_ordering/main.c (+5/-1)
examples/performance-thread/l3fwd-thread/main.c (+3/-0)
examples/performance-thread/pthread_shim/main.c (+4/-0)
examples/ptpclient/Makefile (+1/-1)
examples/ptpclient/ptpclient.c (+3/-4)
examples/qos_meter/Makefile (+1/-1)
examples/qos_meter/main.c (+3/-0)
examples/qos_sched/Makefile (+1/-1)
examples/qos_sched/main.c (+3/-0)
examples/rxtx_callbacks/Makefile (+1/-1)
examples/rxtx_callbacks/main.c (+5/-1)
examples/server_node_efd/node/node.c (+3/-0)
examples/server_node_efd/server/main.c (+4/-0)
examples/service_cores/Makefile (+1/-1)
examples/service_cores/main.c (+3/-0)
examples/skeleton/Makefile (+1/-1)
examples/skeleton/basicfwd.c (+4/-1)
examples/tep_termination/Makefile (+1/-1)
examples/timer/Makefile (+1/-1)
examples/timer/main.c (+13/-10)
examples/vdpa/Makefile (+1/-1)
examples/vdpa/main.c (+3/-0)
examples/vhost/Makefile (+1/-1)
examples/vhost/main.c (+3/-1)
examples/vhost/virtio_net.c (+7/-1)
examples/vhost_blk/Makefile (+1/-1)
examples/vhost_blk/vhost_blk.c (+3/-0)
examples/vhost_crypto/Makefile (+1/-1)
examples/vhost_crypto/main.c (+4/-1)
examples/vm_power_manager/guest_cli/main.c (+3/-0)
examples/vm_power_manager/main.c (+3/-0)
examples/vmdq/Makefile (+1/-1)
examples/vmdq/main.c (+3/-0)
examples/vmdq_dcb/Makefile (+1/-1)
examples/vmdq_dcb/main.c (+3/-0)
kernel/linux/kni/kni_net.c (+3/-3)
lib/librte_bpf/bpf_validate.c (+1/-1)
lib/librte_cryptodev/rte_cryptodev_pmd.c (+2/-1)
lib/librte_distributor/rte_distributor.c (+1/-1)
lib/librte_eal/common/arch/arm/rte_cpuflags.c (+1/-1)
lib/librte_eal/common/eal_common_fbarray.c (+3/-4)
lib/librte_eal/common/eal_common_options.c (+4/-2)
lib/librte_eal/common/eal_common_proc.c (+27/-22)
lib/librte_eal/common/eal_common_thread.c (+38/-28)
lib/librte_eal/common/include/rte_bitmap.h (+1/-2)
lib/librte_eal/common/include/rte_reciprocal.h (+8/-0)
lib/librte_eal/common/include/rte_service.h (+1/-4)
lib/librte_eal/common/include/rte_vfio.h (+5/-3)
lib/librte_eal/common/malloc_mp.c (+1/-3)
lib/librte_eal/freebsd/eal/include/rte_os.h (+2/-3)
lib/librte_eal/linux/eal/eal_log.c (+3/-3)
lib/librte_eal/linux/eal/eal_memalloc.c (+2/-12)
lib/librte_eal/linux/eal/eal_vfio.c (+41/-57)
lib/librte_eal/linux/eal/eal_vfio.h (+1/-0)
lib/librte_eal/linux/eal/include/rte_os.h (+2/-3)
lib/librte_eal/rte_eal_exports.def (+1/-0)
lib/librte_eal/rte_eal_version.map (+0/-1)
lib/librte_eal/windows/eal/eal.c (+6/-0)
lib/librte_eal/windows/eal/eal_thread.c (+2/-2)
lib/librte_ethdev/rte_ethdev.c (+13/-1)
lib/librte_ethdev/rte_ethdev.h (+5/-0)
lib/librte_ethdev/rte_flow.c (+2/-20)
lib/librte_ethdev/rte_flow.h (+3/-3)
lib/librte_ethdev/rte_flow_driver.h (+2/-0)
lib/librte_eventdev/rte_event_crypto_adapter.c (+1/-0)
lib/librte_eventdev/rte_event_eth_rx_adapter.c (+2/-3)
lib/librte_eventdev/rte_event_eth_tx_adapter.c (+0/-1)
lib/librte_flow_classify/rte_flow_classify.c (+2/-2)
lib/librte_kni/rte_kni.c (+3/-2)
lib/librte_mbuf/rte_mbuf_dyn.c (+8/-2)
lib/librte_net/rte_ip.h (+1/-1)
lib/librte_power/guest_channel.c (+11/-11)
lib/librte_power/power_acpi_cpufreq.c (+20/-19)
lib/librte_power/power_pstate_cpufreq.c (+3/-2)
lib/librte_power/rte_power_guest_channel.h (+0/-8)
lib/librte_power/rte_power_version.map (+0/-2)
lib/librte_rib/rte_rib6.c (+21/-8)
lib/librte_stack/rte_stack.c (+3/-1)
lib/librte_stack/rte_stack.h (+2/-1)
lib/librte_stack/rte_stack_lf.h (+5/-0)
lib/librte_telemetry/rte_telemetry.c (+1/-1)
lib/librte_vhost/vhost.c (+1/-1)
lib/librte_vhost/vhost_crypto.c (+4/-2)
lib/librte_vhost/vhost_user.c (+41/-10)
lib/librte_vhost/virtio_net.c (+14/-9)
lib/meson.build (+1/-1)
license/README (+2/-2)
meson.build (+29/-3)
Reviewer Review Type Date Requested Status
Bryce Harrington (community) Approve
Canonical Server packageset reviewers Pending
Canonical Server Team Pending
Review via email: mp+408163@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Christian Ehrhardt  (paelzer) wrote :
Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

FYI this follows Debians model of importing the upstream not as a single commit, but as

To ease comparison I recommend from <email address hidden>:debian/dpdk.git the branch upstream-19.11-stable

With that you can easily see that it matches the upstream release and other than that doesn't change too much.

Revision history for this message
Bryce Harrington (bryce) wrote :

* Changelog:
  - [√] old content and logical tag match as expected
  - [√] changelog entry correct version and targeted codename
  - [√] changelog entries correct
  - [√] update-maintainer has been run

* Actual changes:
  - [-] no upstream changes to consider
  - [-] no further upstream version to consider
  - [√] debian changes look safe

* Old Delta:
  - [√] dropped changes are ok to be dropped
  - [√] nothing else to drop
  - [√] changes forwarded upstream/debian (if appropriate)

* New Delta:
  - [-] no new patches added
  - [√] patches match what was proposed upstream
  - [√] patches correctly included in debian/patches/series
  - [√] patches have correct DEP3 metadata

* Build/Test:
  - [√] build is ok
  - [-] verified PPA package installs/uninstalls
  - [-] autopkgtest against the PPA package passes
  - [-] sanity checks test fine

LGTM, +1

I didn't do the local installation/testing but the ppa builds look fine and the tests will get exercised through SRU process. The SRU bug report looks good, the patches match what's forwarded at the upstream links, and code changes themselves are super modest as mentioned.

review: Approve
Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

Thank you, uploaded

Uploading to ubuntu (via ftp to upload.ubuntu.com):
  Uploading dpdk_19.11.10-0ubuntu0.20.04.1.dsc: done.
  Uploading dpdk_19.11.10.orig.tar.xz: done.
  Uploading dpdk_19.11.10-0ubuntu0.20.04.1.debian.tar.xz: done.
  Uploading dpdk_19.11.10-0ubuntu0.20.04.1_source.buildinfo: done.
  Uploading dpdk_19.11.10-0ubuntu0.20.04.1_source.changes: done.
Successfully uploaded packages.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/MAINTAINERS b/MAINTAINERS
2index 952ded7..75431e3 100644
3--- a/MAINTAINERS
4+++ b/MAINTAINERS
5@@ -131,8 +131,6 @@ F: config/rte_config.h
6 F: buildtools/call-sphinx-build.py
7 F: buildtools/gen-pmdinfo-cfile.sh
8 F: buildtools/map_to_def.py
9-F: buildtools/list-dir-globs.py
10-F: buildtools/pkg-config/
11 F: buildtools/symlink-drivers-solibs.sh
12
13 Public CI
14diff --git a/VERSION b/VERSION
15index 8bda737..67d8753 100644
16--- a/VERSION
17+++ b/VERSION
18@@ -1 +1 @@
19-19.11.7
20+19.11.10
21diff --git a/app/meson.build b/app/meson.build
22index c7f689e..4bdfaf4 100644
23--- a/app/meson.build
24+++ b/app/meson.build
25@@ -18,8 +18,6 @@ apps = [
26 'test-pmd',
27 'test-sad']
28
29-# for BSD only
30-lib_execinfo = cc.find_library('execinfo', required: false)
31
32 default_cflags = machine_args
33 default_ldflags = []
34@@ -51,7 +49,6 @@ foreach app:apps
35 dep_objs += get_variable(get_option('default_library')
36 + '_rte_' + d)
37 endforeach
38- dep_objs += lib_execinfo
39
40 link_libs = []
41 if get_option('default_library') == 'static'
42diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
43index d8db58e..d6da21c 100644
44--- a/app/test-bbdev/test_bbdev_perf.c
45+++ b/app/test-bbdev/test_bbdev_perf.c
46@@ -327,14 +327,14 @@ check_dev_cap(const struct rte_bbdev_info *dev_info)
47 if (nb_harq_inputs > cap->num_buffers_hard_out) {
48 printf(
49 "Too many HARQ inputs defined: %u, max: %u\n",
50- nb_hard_outputs,
51+ nb_harq_inputs,
52 cap->num_buffers_hard_out);
53 return TEST_FAILED;
54 }
55 if (nb_harq_outputs > cap->num_buffers_hard_out) {
56 printf(
57 "Too many HARQ outputs defined: %u, max: %u\n",
58- nb_hard_outputs,
59+ nb_harq_outputs,
60 cap->num_buffers_hard_out);
61 return TEST_FAILED;
62 }
63diff --git a/app/test-compress-perf/comp_perf_options_parse.c b/app/test-compress-perf/comp_perf_options_parse.c
64index 12d0a6c..898dd31 100644
65--- a/app/test-compress-perf/comp_perf_options_parse.c
66+++ b/app/test-compress-perf/comp_perf_options_parse.c
67@@ -598,7 +598,7 @@ comp_perf_options_parse(struct comp_test_data *test_data, int argc, char **argv)
68 switch (opt) {
69 case 'h':
70 usage(argv[0]);
71- rte_exit(EXIT_SUCCESS, "Displayed help\n");
72+ exit(EXIT_SUCCESS);
73 break;
74 /* long options */
75 case 0:
76diff --git a/app/test-crypto-perf/cperf_options_parsing.c b/app/test-crypto-perf/cperf_options_parsing.c
77index 49b4697..e16e8ec 100644
78--- a/app/test-crypto-perf/cperf_options_parsing.c
79+++ b/app/test-crypto-perf/cperf_options_parsing.c
80@@ -495,6 +495,12 @@ parse_test_name(struct cperf_options *opts,
81 {
82 char *test_name = (char *) rte_zmalloc(NULL,
83 sizeof(char) * (strlen(arg) + 3), 0);
84+ if (test_name == NULL) {
85+ RTE_LOG(ERR, USER1, "Failed to rte zmalloc with size: %zu\n",
86+ strlen(arg) + 3);
87+ return -1;
88+ }
89+
90 snprintf(test_name, strlen(arg) + 3, "[%s]", arg);
91 opts->test_name = test_name;
92
93@@ -953,7 +959,7 @@ cperf_options_parse(struct cperf_options *options, int argc, char **argv)
94 switch (opt) {
95 case 'h':
96 usage(argv[0]);
97- rte_exit(EXIT_SUCCESS, "Displayed help\n");
98+ exit(EXIT_SUCCESS);
99 break;
100 /* long options */
101 case 0:
102diff --git a/app/test-crypto-perf/cperf_test_common.c b/app/test-crypto-perf/cperf_test_common.c
103index 85603ee..b7347ad 100644
104--- a/app/test-crypto-perf/cperf_test_common.c
105+++ b/app/test-crypto-perf/cperf_test_common.c
106@@ -194,7 +194,7 @@ cperf_alloc_common_memory(const struct cperf_options *options,
107 (mbuf_size * segments_nb);
108 params.dst_buf_offset = *dst_buf_offset;
109 /* Destination buffer will be one segment only */
110- obj_size += max_size;
111+ obj_size += max_size + sizeof(struct rte_mbuf);
112 }
113
114 *pool = rte_mempool_create_empty(pool_name,
115diff --git a/app/test-eventdev/evt_options.c b/app/test-eventdev/evt_options.c
116index 4f4800d..3c80c1a 100644
117--- a/app/test-eventdev/evt_options.c
118+++ b/app/test-eventdev/evt_options.c
119@@ -218,7 +218,7 @@ evt_parse_plcores(struct evt_options *opt, const char *corelist)
120 {
121 int ret;
122
123- ret = parse_lcores_list(opt->plcores, corelist);
124+ ret = parse_lcores_list(opt->plcores, RTE_MAX_LCORE, corelist);
125 if (ret == -E2BIG)
126 evt_err("duplicate lcores in plcores");
127
128@@ -230,7 +230,7 @@ evt_parse_work_lcores(struct evt_options *opt, const char *corelist)
129 {
130 int ret;
131
132- ret = parse_lcores_list(opt->wlcores, corelist);
133+ ret = parse_lcores_list(opt->wlcores, RTE_MAX_LCORE, corelist);
134 if (ret == -E2BIG)
135 evt_err("duplicate lcores in wlcores");
136
137diff --git a/app/test-eventdev/parser.c b/app/test-eventdev/parser.c
138index 24f1855..8818c37 100644
139--- a/app/test-eventdev/parser.c
140+++ b/app/test-eventdev/parser.c
141@@ -310,7 +310,7 @@ parse_hex_string(char *src, uint8_t *dst, uint32_t *size)
142 }
143
144 int
145-parse_lcores_list(bool lcores[], const char *corelist)
146+parse_lcores_list(bool lcores[], int lcores_num, const char *corelist)
147 {
148 int i, idx = 0;
149 int min, max;
150@@ -332,6 +332,8 @@ parse_lcores_list(bool lcores[], const char *corelist)
151 if (*corelist == '\0')
152 return -1;
153 idx = strtoul(corelist, &end, 10);
154+ if (idx < 0 || idx > lcores_num)
155+ return -1;
156
157 if (end == NULL)
158 return -1;
159diff --git a/app/test-eventdev/parser.h b/app/test-eventdev/parser.h
160index 673ff22..696b40a 100644
161--- a/app/test-eventdev/parser.h
162+++ b/app/test-eventdev/parser.h
163@@ -46,5 +46,5 @@ int parse_hex_string(char *src, uint8_t *dst, uint32_t *size);
164
165 int parse_tokenize_string(char *string, char *tokens[], uint32_t *n_tokens);
166
167-int parse_lcores_list(bool lcores[], const char *corelist);
168+int parse_lcores_list(bool lcores[], int lcores_num, const char *corelist);
169 #endif
170diff --git a/app/test-pmd/bpf_cmd.c b/app/test-pmd/bpf_cmd.c
171index d2deadd..3899d9f 100644
172--- a/app/test-pmd/bpf_cmd.c
173+++ b/app/test-pmd/bpf_cmd.c
174@@ -20,7 +20,7 @@ static const struct rte_bpf_xsym bpf_xsym[] = {
175 .name = RTE_STR(stdout),
176 .type = RTE_BPF_XTYPE_VAR,
177 .var = {
178- .val = &stdout,
179+ .val = (void *)(uintptr_t)&stdout,
180 .desc = {
181 .type = RTE_BPF_ARG_PTR,
182 .size = sizeof(stdout),
183diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
184index 9a9da74..e6c053a 100644
185--- a/app/test-pmd/cmdline.c
186+++ b/app/test-pmd/cmdline.c
187@@ -1324,7 +1324,7 @@ cmdline_parse_token_string_t cmd_operate_port_all_all =
188 cmdline_parse_inst_t cmd_operate_port = {
189 .f = cmd_operate_port_parsed,
190 .data = NULL,
191- .help_str = "port start|stop|close all: Start/Stop/Close/Reset all ports",
192+ .help_str = "port start|stop|close|reset all: Start/Stop/Close/Reset all ports",
193 .tokens = {
194 (void *)&cmd_operate_port_all_cmd,
195 (void *)&cmd_operate_port_all_port,
196@@ -1371,7 +1371,7 @@ cmdline_parse_token_num_t cmd_operate_specific_port_id =
197 cmdline_parse_inst_t cmd_operate_specific_port = {
198 .f = cmd_operate_specific_port_parsed,
199 .data = NULL,
200- .help_str = "port start|stop|close <port_id>: Start/Stop/Close/Reset port_id",
201+ .help_str = "port start|stop|close|reset <port_id>: Start/Stop/Close/Reset port_id",
202 .tokens = {
203 (void *)&cmd_operate_specific_port_cmd,
204 (void *)&cmd_operate_specific_port_port,
205@@ -1618,6 +1618,9 @@ parse_and_check_speed_duplex(char *speedstr, char *duplexstr, uint32_t *speed)
206 }
207 }
208
209+ if (*speed != ETH_LINK_SPEED_AUTONEG)
210+ *speed |= ETH_LINK_SPEED_FIXED;
211+
212 return 0;
213 }
214
215@@ -1701,13 +1704,13 @@ cmd_config_speed_specific_parsed(void *parsed_result,
216 struct cmd_config_speed_specific *res = parsed_result;
217 uint32_t link_speed;
218
219- if (!all_ports_stopped()) {
220- printf("Please stop all ports first\n");
221+ if (port_id_is_invalid(res->id, ENABLED_WARN))
222 return;
223- }
224
225- if (port_id_is_invalid(res->id, ENABLED_WARN))
226+ if (!port_is_stopped(res->id)) {
227+ printf("Please stop port %d first\n", res->id);
228 return;
229+ }
230
231 if (parse_and_check_speed_duplex(res->value1, res->value2,
232 &link_speed) < 0)
233@@ -2846,6 +2849,10 @@ cmd_setup_rxtx_queue_parsed(
234 if (!numa_support || socket_id == NUMA_NO_CONFIG)
235 socket_id = port->socket_id;
236
237+ if (port->nb_tx_desc[res->qid] < tx_pkt_nb_segs) {
238+ printf("Failed to setup TX queue: not enough descriptors\n");
239+ return;
240+ }
241 ret = rte_eth_tx_queue_setup(res->portid,
242 res->qid,
243 port->nb_tx_desc[res->qid],
244@@ -4461,7 +4468,7 @@ cmd_config_queue_tx_offloads(struct rte_port *port)
245 int k;
246
247 /* Apply queue tx offloads configuration */
248- for (k = 0; k < port->dev_info.max_rx_queues; k++)
249+ for (k = 0; k < port->dev_info.max_tx_queues; k++)
250 port->tx_conf[k].offloads =
251 port->dev_conf.txmode.offloads;
252 }
253@@ -9100,7 +9107,7 @@ cmdline_parse_inst_t cmd_tunnel_filter = {
254
255 /* *** CONFIGURE TUNNEL UDP PORT *** */
256 struct cmd_tunnel_udp_config {
257- cmdline_fixed_string_t cmd;
258+ cmdline_fixed_string_t rx_vxlan_port;
259 cmdline_fixed_string_t what;
260 uint16_t udp_port;
261 portid_t port_id;
262@@ -9116,9 +9123,7 @@ cmd_tunnel_udp_config_parsed(void *parsed_result,
263 int ret;
264
265 tunnel_udp.udp_port = res->udp_port;
266-
267- if (!strcmp(res->cmd, "rx_vxlan_port"))
268- tunnel_udp.prot_type = RTE_TUNNEL_TYPE_VXLAN;
269+ tunnel_udp.prot_type = RTE_TUNNEL_TYPE_VXLAN;
270
271 if (!strcmp(res->what, "add"))
272 ret = rte_eth_dev_udp_tunnel_port_add(res->port_id,
273@@ -9131,9 +9136,9 @@ cmd_tunnel_udp_config_parsed(void *parsed_result,
274 printf("udp tunneling add error: (%s)\n", strerror(-ret));
275 }
276
277-cmdline_parse_token_string_t cmd_tunnel_udp_config_cmd =
278+cmdline_parse_token_string_t cmd_tunnel_udp_config_rx_vxlan_port =
279 TOKEN_STRING_INITIALIZER(struct cmd_tunnel_udp_config,
280- cmd, "rx_vxlan_port");
281+ rx_vxlan_port, "rx_vxlan_port");
282 cmdline_parse_token_string_t cmd_tunnel_udp_config_what =
283 TOKEN_STRING_INITIALIZER(struct cmd_tunnel_udp_config,
284 what, "add#rm");
285@@ -9150,7 +9155,7 @@ cmdline_parse_inst_t cmd_tunnel_udp_config = {
286 .help_str = "rx_vxlan_port add|rm <udp_port> <port_id>: "
287 "Add/Remove a tunneling UDP port filter",
288 .tokens = {
289- (void *)&cmd_tunnel_udp_config_cmd,
290+ (void *)&cmd_tunnel_udp_config_rx_vxlan_port,
291 (void *)&cmd_tunnel_udp_config_what,
292 (void *)&cmd_tunnel_udp_config_udp_port,
293 (void *)&cmd_tunnel_udp_config_port_id,
294@@ -19038,7 +19043,8 @@ cmd_show_rx_tx_desc_status_parsed(void *parsed_result,
295 rc = rte_eth_rx_descriptor_status(res->cmd_pid, res->cmd_qid,
296 res->cmd_did);
297 if (rc < 0) {
298- printf("Invalid queueid = %d\n", res->cmd_qid);
299+ printf("Invalid input: queue id = %d, desc id = %d\n",
300+ res->cmd_qid, res->cmd_did);
301 return;
302 }
303 if (rc == RTE_ETH_RX_DESC_AVAIL)
304@@ -19051,7 +19057,8 @@ cmd_show_rx_tx_desc_status_parsed(void *parsed_result,
305 rc = rte_eth_tx_descriptor_status(res->cmd_pid, res->cmd_qid,
306 res->cmd_did);
307 if (rc < 0) {
308- printf("Invalid queueid = %d\n", res->cmd_qid);
309+ printf("Invalid input: queue id = %d, desc id = %d\n",
310+ res->cmd_qid, res->cmd_did);
311 return;
312 }
313 if (rc == RTE_ETH_TX_DESC_FULL)
314diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
315index da3533c..0b76f7e 100644
316--- a/app/test-pmd/cmdline_flow.c
317+++ b/app/test-pmd/cmdline_flow.c
318@@ -4250,7 +4250,11 @@ parse_vc_action_nvgre_encap(struct context *ctx, const struct token *token,
319 .src_addr = nvgre_encap_conf.ipv4_src,
320 .dst_addr = nvgre_encap_conf.ipv4_dst,
321 },
322- .item_nvgre.flow_id = 0,
323+ .item_nvgre = {
324+ .c_k_s_rsvd0_ver = RTE_BE16(0x2000),
325+ .protocol = RTE_BE16(RTE_ETHER_TYPE_TEB),
326+ .flow_id = 0,
327+ },
328 };
329 memcpy(action_nvgre_encap_data->item_eth.dst.addr_bytes,
330 nvgre_encap_conf.eth_dst, RTE_ETHER_ADDR_LEN);
331diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
332index e14ff42..bee9fa6 100644
333--- a/app/test-pmd/config.c
334+++ b/app/test-pmd/config.c
335@@ -2138,7 +2138,7 @@ port_rss_hash_conf_show(portid_t port_id, int show_rss_key)
336
337 void
338 port_rss_hash_key_update(portid_t port_id, char rss_type[], uint8_t *hash_key,
339- uint hash_key_len)
340+ uint8_t hash_key_len)
341 {
342 struct rte_eth_rss_conf rss_conf;
343 int diag;
344@@ -2328,6 +2328,21 @@ rss_fwd_config_setup(void)
345 }
346 }
347
348+static uint16_t
349+get_fwd_port_total_tc_num(void)
350+{
351+ struct rte_eth_dcb_info dcb_info;
352+ uint16_t total_tc_num = 0;
353+ unsigned int i;
354+
355+ for (i = 0; i < nb_fwd_ports; i++) {
356+ (void)rte_eth_dev_get_dcb_info(fwd_ports_ids[i], &dcb_info);
357+ total_tc_num += dcb_info.nb_tcs;
358+ }
359+
360+ return total_tc_num;
361+}
362+
363 /**
364 * For the DCB forwarding test, each core is assigned on each traffic class.
365 *
366@@ -2347,12 +2362,42 @@ dcb_fwd_config_setup(void)
367 lcoreid_t lc_id;
368 uint16_t nb_rx_queue, nb_tx_queue;
369 uint16_t i, j, k, sm_id = 0;
370+ uint16_t total_tc_num;
371+ struct rte_port *port;
372 uint8_t tc = 0;
373+ portid_t pid;
374+ int ret;
375+
376+ /*
377+ * The fwd_config_setup() is called when the port is RTE_PORT_STARTED
378+ * or RTE_PORT_STOPPED.
379+ *
380+ * Re-configure ports to get updated mapping between tc and queue in
381+ * case the queue number of the port is changed. Skip for started ports
382+ * since modifying queue number and calling dev_configure need to stop
383+ * ports first.
384+ */
385+ for (pid = 0; pid < nb_fwd_ports; pid++) {
386+ if (port_is_started(pid) == 1)
387+ continue;
388+
389+ port = &ports[pid];
390+ ret = rte_eth_dev_configure(pid, nb_rxq, nb_txq,
391+ &port->dev_conf);
392+ if (ret < 0) {
393+ printf("Failed to re-configure port %d, ret = %d.\n",
394+ pid, ret);
395+ return;
396+ }
397+ }
398
399 cur_fwd_config.nb_fwd_lcores = (lcoreid_t) nb_fwd_lcores;
400 cur_fwd_config.nb_fwd_ports = nb_fwd_ports;
401 cur_fwd_config.nb_fwd_streams =
402 (streamid_t) (nb_rxq * cur_fwd_config.nb_fwd_ports);
403+ total_tc_num = get_fwd_port_total_tc_num();
404+ if (cur_fwd_config.nb_fwd_lcores > total_tc_num)
405+ cur_fwd_config.nb_fwd_lcores = total_tc_num;
406
407 /* reinitialize forwarding streams */
408 init_fwd_streams();
409@@ -2843,13 +2888,15 @@ nb_segs_is_invalid(unsigned int nb_segs)
410 RTE_ETH_FOREACH_DEV(port_id) {
411 for (queue_id = 0; queue_id < nb_txq; queue_id++) {
412 ret = get_tx_ring_size(port_id, queue_id, &ring_size);
413-
414- if (ret)
415- return true;
416-
417+ if (ret) {
418+ /* Port may not be initialized yet, can't say
419+ * the port is invalid in this stage.
420+ */
421+ continue;
422+ }
423 if (ring_size < nb_segs) {
424- printf("nb segments per TX packets=%u >= "
425- "TX queue(%u) ring_size=%u - ignored\n",
426+ printf("nb segments per TX packets=%u >= TX "
427+ "queue(%u) ring_size=%u - txpkts ignored\n",
428 nb_segs, queue_id, ring_size);
429 return true;
430 }
431@@ -2865,12 +2912,26 @@ set_tx_pkt_segments(unsigned *seg_lengths, unsigned nb_segs)
432 uint16_t tx_pkt_len;
433 unsigned i;
434
435- if (nb_segs_is_invalid(nb_segs))
436+ /*
437+ * For single segment settings failed check is ignored.
438+ * It is a very basic capability to send the single segment
439+ * packets, suppose it is always supported.
440+ */
441+ if (nb_segs > 1 && nb_segs_is_invalid(nb_segs)) {
442+ printf("Tx segment size(%u) is not supported - txpkts ignored\n",
443+ nb_segs);
444 return;
445+ }
446+
447+ if (nb_segs > RTE_MAX_SEGS_PER_PKT) {
448+ printf("Tx segment size(%u) is bigger than max number of segment(%u)\n",
449+ nb_segs, RTE_MAX_SEGS_PER_PKT);
450+ return;
451+ }
452
453 /*
454 * Check that each segment length is greater or equal than
455- * the mbuf data sise.
456+ * the mbuf data size.
457 * Check also that the total packet length is greater or equal than the
458 * size of an empty UDP/IP packet (sizeof(struct rte_ether_hdr) +
459 * 20 + 8).
460diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c
461index 7b92ab1..29044c4 100644
462--- a/app/test-pmd/csumonly.c
463+++ b/app/test-pmd/csumonly.c
464@@ -451,17 +451,18 @@ process_inner_cksums(void *l3_hdr, const struct testpmd_offload_info *info,
465
466 if (info->ethertype == _htons(RTE_ETHER_TYPE_IPV4)) {
467 ipv4_hdr = l3_hdr;
468- ipv4_hdr->hdr_checksum = 0;
469
470 ol_flags |= PKT_TX_IPV4;
471 if (info->l4_proto == IPPROTO_TCP && tso_segsz) {
472 ol_flags |= PKT_TX_IP_CKSUM;
473 } else {
474- if (tx_offloads & DEV_TX_OFFLOAD_IPV4_CKSUM)
475+ if (tx_offloads & DEV_TX_OFFLOAD_IPV4_CKSUM) {
476 ol_flags |= PKT_TX_IP_CKSUM;
477- else
478+ } else {
479+ ipv4_hdr->hdr_checksum = 0;
480 ipv4_hdr->hdr_checksum =
481 rte_ipv4_cksum(ipv4_hdr);
482+ }
483 }
484 } else if (info->ethertype == _htons(RTE_ETHER_TYPE_IPV6))
485 ol_flags |= PKT_TX_IPV6;
486@@ -472,10 +473,10 @@ process_inner_cksums(void *l3_hdr, const struct testpmd_offload_info *info,
487 udp_hdr = (struct rte_udp_hdr *)((char *)l3_hdr + info->l3_len);
488 /* do not recalculate udp cksum if it was 0 */
489 if (udp_hdr->dgram_cksum != 0) {
490- udp_hdr->dgram_cksum = 0;
491- if (tx_offloads & DEV_TX_OFFLOAD_UDP_CKSUM)
492+ if (tx_offloads & DEV_TX_OFFLOAD_UDP_CKSUM) {
493 ol_flags |= PKT_TX_UDP_CKSUM;
494- else {
495+ } else {
496+ udp_hdr->dgram_cksum = 0;
497 udp_hdr->dgram_cksum =
498 get_udptcp_checksum(l3_hdr, udp_hdr,
499 info->ethertype);
500@@ -485,12 +486,12 @@ process_inner_cksums(void *l3_hdr, const struct testpmd_offload_info *info,
501 ol_flags |= PKT_TX_UDP_SEG;
502 } else if (info->l4_proto == IPPROTO_TCP) {
503 tcp_hdr = (struct rte_tcp_hdr *)((char *)l3_hdr + info->l3_len);
504- tcp_hdr->cksum = 0;
505 if (tso_segsz)
506 ol_flags |= PKT_TX_TCP_SEG;
507- else if (tx_offloads & DEV_TX_OFFLOAD_TCP_CKSUM)
508+ else if (tx_offloads & DEV_TX_OFFLOAD_TCP_CKSUM) {
509 ol_flags |= PKT_TX_TCP_CKSUM;
510- else {
511+ } else {
512+ tcp_hdr->cksum = 0;
513 tcp_hdr->cksum =
514 get_udptcp_checksum(l3_hdr, tcp_hdr,
515 info->ethertype);
516@@ -500,13 +501,13 @@ process_inner_cksums(void *l3_hdr, const struct testpmd_offload_info *info,
517 } else if (info->l4_proto == IPPROTO_SCTP) {
518 sctp_hdr = (struct rte_sctp_hdr *)
519 ((char *)l3_hdr + info->l3_len);
520- sctp_hdr->cksum = 0;
521 /* sctp payload must be a multiple of 4 to be
522 * offloaded */
523 if ((tx_offloads & DEV_TX_OFFLOAD_SCTP_CKSUM) &&
524 ((ipv4_hdr->total_length & 0x3) == 0)) {
525 ol_flags |= PKT_TX_SCTP_CKSUM;
526 } else {
527+ sctp_hdr->cksum = 0;
528 /* XXX implement CRC32c, example available in
529 * RFC3309 */
530 }
531diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
532index a1c08a4..9ce3b4f 100644
533--- a/app/test-pmd/parameters.c
534+++ b/app/test-pmd/parameters.c
535@@ -694,7 +694,7 @@ launch_args_parse(int argc, char** argv)
536 case 0: /*long options */
537 if (!strcmp(lgopts[opt_idx].name, "help")) {
538 usage(argv[0]);
539- rte_exit(EXIT_SUCCESS, "Displayed help\n");
540+ exit(EXIT_SUCCESS);
541 }
542 #ifdef RTE_LIBRTE_CMDLINE
543 if (!strcmp(lgopts[opt_idx].name, "interactive")) {
544@@ -1356,7 +1356,7 @@ launch_args_parse(int argc, char** argv)
545 break;
546 case 'h':
547 usage(argv[0]);
548- rte_exit(EXIT_SUCCESS, "Displayed help\n");
549+ exit(EXIT_SUCCESS);
550 break;
551 default:
552 usage(argv[0]);
553diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
554index 0c3361e..dca10e7 100644
555--- a/app/test-pmd/testpmd.c
556+++ b/app/test-pmd/testpmd.c
557@@ -228,9 +228,6 @@ uint16_t mb_mempool_cache = DEF_MBUF_CACHE; /**< Size of mbuf mempool cache. */
558 /* current configuration is in DCB or not,0 means it is not in DCB mode */
559 uint8_t dcb_config = 0;
560
561-/* Whether the dcb is in testing status */
562-uint8_t dcb_test = 0;
563-
564 /*
565 * Configurable number of RX/TX queues.
566 */
567@@ -1293,22 +1290,68 @@ check_nb_hairpinq(queueid_t hairpinq)
568 }
569
570 static void
571+init_config_port_offloads(portid_t pid, uint32_t socket_id)
572+{
573+ struct rte_port *port = &ports[pid];
574+ uint16_t data_size;
575+ int ret;
576+ int i;
577+
578+ port->dev_conf.txmode = tx_mode;
579+ port->dev_conf.rxmode = rx_mode;
580+
581+ ret = eth_dev_info_get_print_err(pid, &port->dev_info);
582+ if (ret != 0)
583+ rte_exit(EXIT_FAILURE, "rte_eth_dev_info_get() failed\n");
584+
585+ ret = update_jumbo_frame_offload(pid);
586+ if (ret != 0)
587+ printf("Updating jumbo frame offload failed for port %u\n",
588+ pid);
589+
590+ if (!(port->dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE))
591+ port->dev_conf.txmode.offloads &=
592+ ~DEV_TX_OFFLOAD_MBUF_FAST_FREE;
593+
594+ /* Apply Rx offloads configuration */
595+ for (i = 0; i < port->dev_info.max_rx_queues; i++)
596+ port->rx_conf[i].offloads = port->dev_conf.rxmode.offloads;
597+ /* Apply Tx offloads configuration */
598+ for (i = 0; i < port->dev_info.max_tx_queues; i++)
599+ port->tx_conf[i].offloads = port->dev_conf.txmode.offloads;
600+
601+ /* set flag to initialize port/queue */
602+ port->need_reconfig = 1;
603+ port->need_reconfig_queues = 1;
604+ port->socket_id = socket_id;
605+ port->tx_metadata = 0;
606+
607+ /*
608+ * Check for maximum number of segments per MTU.
609+ * Accordingly update the mbuf data size.
610+ */
611+ if (port->dev_info.rx_desc_lim.nb_mtu_seg_max != UINT16_MAX &&
612+ port->dev_info.rx_desc_lim.nb_mtu_seg_max != 0) {
613+ data_size = rx_mode.max_rx_pkt_len /
614+ port->dev_info.rx_desc_lim.nb_mtu_seg_max;
615+
616+ if ((data_size + RTE_PKTMBUF_HEADROOM) > mbuf_data_size) {
617+ mbuf_data_size = data_size + RTE_PKTMBUF_HEADROOM;
618+ TESTPMD_LOG(WARNING, "Configured mbuf size %hu\n",
619+ mbuf_data_size);
620+ }
621+ }
622+}
623+
624+static void
625 init_config(void)
626 {
627 portid_t pid;
628- struct rte_port *port;
629 struct rte_mempool *mbp;
630 unsigned int nb_mbuf_per_pool;
631 lcoreid_t lc_id;
632- uint8_t port_per_socket[RTE_MAX_NUMA_NODES];
633 struct rte_gro_param gro_param;
634 uint32_t gso_types;
635- uint16_t data_size;
636- bool warning = 0;
637- int k;
638- int ret;
639-
640- memset(port_per_socket,0,RTE_MAX_NUMA_NODES);
641
642 /* Configuration of logical cores. */
643 fwd_lcores = rte_zmalloc("testpmd: fwd_lcores",
644@@ -1330,30 +1373,12 @@ init_config(void)
645 }
646
647 RTE_ETH_FOREACH_DEV(pid) {
648- port = &ports[pid];
649- /* Apply default TxRx configuration for all ports */
650- port->dev_conf.txmode = tx_mode;
651- port->dev_conf.rxmode = rx_mode;
652-
653- ret = eth_dev_info_get_print_err(pid, &port->dev_info);
654- if (ret != 0)
655- rte_exit(EXIT_FAILURE,
656- "rte_eth_dev_info_get() failed\n");
657-
658- ret = update_jumbo_frame_offload(pid);
659- if (ret != 0)
660- printf("Updating jumbo frame offload failed for port %u\n",
661- pid);
662+ uint32_t socket_id;
663
664- if (!(port->dev_info.tx_offload_capa &
665- DEV_TX_OFFLOAD_MBUF_FAST_FREE))
666- port->dev_conf.txmode.offloads &=
667- ~DEV_TX_OFFLOAD_MBUF_FAST_FREE;
668 if (numa_support) {
669- if (port_numa[pid] != NUMA_NO_CONFIG)
670- port_per_socket[port_numa[pid]]++;
671- else {
672- uint32_t socket_id = rte_eth_dev_socket_id(pid);
673+ socket_id = port_numa[pid];
674+ if (port_numa[pid] == NUMA_NO_CONFIG) {
675+ socket_id = rte_eth_dev_socket_id(pid);
676
677 /*
678 * if socket_id is invalid,
679@@ -1361,45 +1386,15 @@ init_config(void)
680 */
681 if (check_socket_id(socket_id) < 0)
682 socket_id = socket_ids[0];
683- port_per_socket[socket_id]++;
684- }
685- }
686-
687- /* Apply Rx offloads configuration */
688- for (k = 0; k < port->dev_info.max_rx_queues; k++)
689- port->rx_conf[k].offloads =
690- port->dev_conf.rxmode.offloads;
691- /* Apply Tx offloads configuration */
692- for (k = 0; k < port->dev_info.max_tx_queues; k++)
693- port->tx_conf[k].offloads =
694- port->dev_conf.txmode.offloads;
695-
696- /* set flag to initialize port/queue */
697- port->need_reconfig = 1;
698- port->need_reconfig_queues = 1;
699- port->tx_metadata = 0;
700-
701- /* Check for maximum number of segments per MTU. Accordingly
702- * update the mbuf data size.
703- */
704- if (port->dev_info.rx_desc_lim.nb_mtu_seg_max != UINT16_MAX &&
705- port->dev_info.rx_desc_lim.nb_mtu_seg_max != 0) {
706- data_size = rx_mode.max_rx_pkt_len /
707- port->dev_info.rx_desc_lim.nb_mtu_seg_max;
708-
709- if ((data_size + RTE_PKTMBUF_HEADROOM) >
710- mbuf_data_size) {
711- mbuf_data_size = data_size +
712- RTE_PKTMBUF_HEADROOM;
713- warning = 1;
714 }
715+ } else {
716+ socket_id = (socket_num == UMA_NO_CONFIG) ?
717+ 0 : socket_num;
718 }
719+ /* Apply default TxRx configuration for all ports */
720+ init_config_port_offloads(pid, socket_id);
721 }
722
723- if (warning)
724- TESTPMD_LOG(WARNING, "Configured mbuf size %hu\n",
725- mbuf_data_size);
726-
727 /*
728 * Create pools of mbuf.
729 * If NUMA support is disabled, create a single pool of mbuf in
730@@ -1482,7 +1477,7 @@ init_config(void)
731 #if defined RTE_LIBRTE_PMD_SOFTNIC
732 if (strcmp(cur_fwd_eng->fwd_mode_name, "softnic") == 0) {
733 RTE_ETH_FOREACH_DEV(pid) {
734- port = &ports[pid];
735+ struct rte_port *port = &ports[pid];
736 const char *driver = port->dev_info.driver_name;
737
738 if (strcmp(driver, "net_softnic") == 0)
739@@ -1497,21 +1492,8 @@ init_config(void)
740 void
741 reconfig(portid_t new_port_id, unsigned socket_id)
742 {
743- struct rte_port *port;
744- int ret;
745-
746 /* Reconfiguration of Ethernet ports. */
747- port = &ports[new_port_id];
748-
749- ret = eth_dev_info_get_print_err(new_port_id, &port->dev_info);
750- if (ret != 0)
751- return;
752-
753- /* set flag to initialize port/queue */
754- port->need_reconfig = 1;
755- port->need_reconfig_queues = 1;
756- port->socket_id = socket_id;
757-
758+ init_config_port_offloads(new_port_id, socket_id);
759 init_port_config();
760 }
761
762@@ -2105,8 +2087,7 @@ start_packet_forwarding(int with_tx_first)
763 return;
764 }
765
766-
767- if(dcb_test) {
768+ if (dcb_config) {
769 for (i = 0; i < nb_fwd_ports; i++) {
770 pt_id = fwd_ports_ids[i];
771 port = &ports[pt_id];
772@@ -2321,14 +2302,11 @@ start_port(portid_t pid)
773 portid_t pi;
774 queueid_t qi;
775 struct rte_port *port;
776- struct rte_ether_addr mac_addr;
777 struct rte_eth_hairpin_cap cap;
778
779 if (port_id_is_invalid(pid, ENABLED_WARN))
780 return 0;
781
782- if(dcb_config)
783- dcb_test = 1;
784 RTE_ETH_FOREACH_DEV(pi) {
785 if (pid != pi && pid != (portid_t)RTE_PORT_ALL)
786 continue;
787@@ -2487,11 +2465,14 @@ start_port(portid_t pid)
788 RTE_PORT_HANDLING, RTE_PORT_STARTED) == 0)
789 printf("Port %d can not be set into started\n", pi);
790
791- if (eth_macaddr_get_print_err(pi, &mac_addr) == 0)
792+ if (eth_macaddr_get_print_err(pi, &port->eth_addr) == 0)
793 printf("Port %d: %02X:%02X:%02X:%02X:%02X:%02X\n", pi,
794- mac_addr.addr_bytes[0], mac_addr.addr_bytes[1],
795- mac_addr.addr_bytes[2], mac_addr.addr_bytes[3],
796- mac_addr.addr_bytes[4], mac_addr.addr_bytes[5]);
797+ port->eth_addr.addr_bytes[0],
798+ port->eth_addr.addr_bytes[1],
799+ port->eth_addr.addr_bytes[2],
800+ port->eth_addr.addr_bytes[3],
801+ port->eth_addr.addr_bytes[4],
802+ port->eth_addr.addr_bytes[5]);
803
804 /* at least one port started, need checking link status */
805 need_check_link_status = 1;
806@@ -2513,11 +2494,6 @@ stop_port(portid_t pid)
807 struct rte_port *port;
808 int need_check_link_status = 0;
809
810- if (dcb_test) {
811- dcb_test = 0;
812- dcb_config = 0;
813- }
814-
815 if (port_id_is_invalid(pid, ENABLED_WARN))
816 return;
817
818@@ -3499,8 +3475,6 @@ init_port_dcb_config(portid_t pid,
819 rte_port = &ports[pid];
820
821 memset(&port_conf, 0, sizeof(struct rte_eth_conf));
822- /* Enter DCB configuration status */
823- dcb_config = 1;
824
825 port_conf.rxmode = rte_port->dev_conf.rxmode;
826 port_conf.txmode = rte_port->dev_conf.txmode;
827@@ -3570,6 +3544,9 @@ init_port_dcb_config(portid_t pid,
828
829 rte_port->dcb_flag = 1;
830
831+ /* Enter DCB configuration status */
832+ dcb_config = 1;
833+
834 return 0;
835 }
836
837diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
838index 4dbcee3..bbe18a7 100644
839--- a/app/test-pmd/testpmd.h
840+++ b/app/test-pmd/testpmd.h
841@@ -404,7 +404,6 @@ extern uint64_t noisy_lkup_num_reads;
842 extern uint64_t noisy_lkup_num_reads_writes;
843
844 extern uint8_t dcb_config;
845-extern uint8_t dcb_test;
846
847 extern uint16_t mbuf_data_size; /**< Mbuf data space size. */
848 extern uint32_t param_total_num_mbufs;
849@@ -820,7 +819,7 @@ int set_vf_rate_limit(portid_t port_id, uint16_t vf, uint16_t rate,
850
851 void port_rss_hash_conf_show(portid_t port_id, int show_rss_key);
852 void port_rss_hash_key_update(portid_t port_id, char rss_type[],
853- uint8_t *hash_key, uint hash_key_len);
854+ uint8_t *hash_key, uint8_t hash_key_len);
855 int rx_queue_id_is_invalid(queueid_t rxq_id);
856 int tx_queue_id_is_invalid(queueid_t txq_id);
857 void setup_gro(const char *onoff, portid_t port_id);
858diff --git a/app/test/autotest_test_funcs.py b/app/test/autotest_test_funcs.py
859index 26688b7..016d99c 100644
860--- a/app/test/autotest_test_funcs.py
861+++ b/app/test/autotest_test_funcs.py
862@@ -12,13 +12,16 @@ import pexpect
863 def default_autotest(child, test_name):
864 child.sendline(test_name)
865 result = child.expect(["Test OK", "Test Failed",
866- "Command not found", pexpect.TIMEOUT], timeout=900)
867+ "Command not found", pexpect.TIMEOUT,
868+ "Test Skipped"], timeout=900)
869 if result == 1:
870 return -1, "Fail"
871 elif result == 2:
872 return -1, "Fail [Not found]"
873 elif result == 3:
874 return -1, "Fail [Timeout]"
875+ elif result == 4:
876+ return 0, "Skipped [Not Run]"
877 return 0, "Success"
878
879 # autotest used to run dump commands
880diff --git a/app/test/meson.build b/app/test/meson.build
881index 24fb59f..2e35e93 100644
882--- a/app/test/meson.build
883+++ b/app/test/meson.build
884@@ -387,11 +387,10 @@ foreach d:test_deps
885 def_lib = get_option('default_library')
886 test_dep_objs += get_variable(def_lib + '_rte_' + d)
887 endforeach
888-test_dep_objs += cc.find_library('execinfo', required: false)
889
890 link_libs = []
891 if get_option('default_library') == 'static'
892- link_libs = dpdk_static_libraries + dpdk_drivers
893+ link_libs = dpdk_drivers
894 endif
895
896 dpdk_test = executable('dpdk-test',
897diff --git a/app/test/packet_burst_generator.c b/app/test/packet_burst_generator.c
898index f203f9d..0fd7290 100644
899--- a/app/test/packet_burst_generator.c
900+++ b/app/test/packet_burst_generator.c
901@@ -117,6 +117,7 @@ initialize_tcp_header(struct rte_tcp_hdr *tcp_hdr, uint16_t src_port,
902 memset(tcp_hdr, 0, sizeof(struct rte_tcp_hdr));
903 tcp_hdr->src_port = rte_cpu_to_be_16(src_port);
904 tcp_hdr->dst_port = rte_cpu_to_be_16(dst_port);
905+ tcp_hdr->data_off = (sizeof(struct rte_tcp_hdr) << 2) & 0xF0;
906
907 return pkt_len;
908 }
909@@ -141,8 +142,8 @@ uint16_t
910 initialize_ipv6_header(struct rte_ipv6_hdr *ip_hdr, uint8_t *src_addr,
911 uint8_t *dst_addr, uint16_t pkt_data_len)
912 {
913- ip_hdr->vtc_flow = 0;
914- ip_hdr->payload_len = pkt_data_len;
915+ ip_hdr->vtc_flow = rte_cpu_to_be_32(0x60000000); /* Set version to 6. */
916+ ip_hdr->payload_len = rte_cpu_to_be_16(pkt_data_len);
917 ip_hdr->proto = IPPROTO_UDP;
918 ip_hdr->hop_limits = IP_DEFTTL;
919
920diff --git a/app/test/process.h b/app/test/process.h
921index c3b3780..20e8eed 100644
922--- a/app/test/process.h
923+++ b/app/test/process.h
924@@ -48,6 +48,7 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
925 #ifdef RTE_LIBRTE_PDUMP
926 #ifdef RTE_LIBRTE_RING_PMD
927 pthread_t thread;
928+ int rc;
929 #endif
930 #endif
931
932@@ -126,8 +127,13 @@ process_dup(const char *const argv[], int numargs, const char *env_value)
933 /* parent process does a wait */
934 #ifdef RTE_LIBRTE_PDUMP
935 #ifdef RTE_LIBRTE_RING_PMD
936- if ((strcmp(env_value, "run_pdump_server_tests") == 0))
937- pthread_create(&thread, NULL, &send_pkts, NULL);
938+ if ((strcmp(env_value, "run_pdump_server_tests") == 0)) {
939+ rc = pthread_create(&thread, NULL, &send_pkts, NULL);
940+ if (rc != 0) {
941+ rte_panic("Cannot start send pkts thread: %s\n",
942+ strerror(rc));
943+ }
944+ }
945 #endif
946 #endif
947
948diff --git a/app/test/test.c b/app/test/test.c
949index 4736a17..3e063af 100644
950--- a/app/test/test.c
951+++ b/app/test/test.c
952@@ -134,8 +134,13 @@ main(int argc, char **argv)
953 goto out;
954 }
955
956+ argv += ret;
957+
958+ prgname = argv[0];
959+
960 #ifdef RTE_LIBRTE_TIMER
961- if (rte_timer_subsystem_init() < 0) {
962+ ret = rte_timer_subsystem_init();
963+ if (ret < 0 && ret != -EALREADY) {
964 ret = -1;
965 goto out;
966 }
967@@ -146,10 +151,6 @@ main(int argc, char **argv)
968 goto out;
969 }
970
971- argv += ret;
972-
973- prgname = argv[0];
974-
975 recursive_call = getenv(RECURSIVE_ENV_VAR);
976 if (recursive_call != NULL) {
977 ret = do_recursive_call();
978diff --git a/app/test/test_bpf.c b/app/test/test_bpf.c
979index 4a61a7d..88048b4 100644
980--- a/app/test/test_bpf.c
981+++ b/app/test/test_bpf.c
982@@ -2744,7 +2744,7 @@ run_test(const struct bpf_test *tst)
983 printf("%s@%d: check_result(%s) failed, "
984 "error: %d(%s);\n",
985 __func__, __LINE__, tst->name,
986- rv, strerror(ret));
987+ rv, strerror(rv));
988 }
989 }
990
991diff --git a/app/test/test_cmdline_ipaddr.c b/app/test/test_cmdline_ipaddr.c
992index 088cd5a..312ed79 100644
993--- a/app/test/test_cmdline_ipaddr.c
994+++ b/app/test/test_cmdline_ipaddr.c
995@@ -255,7 +255,7 @@ const char * ipaddr_invalid_strs[] = {
996 /** misc **/
997
998 /* too long */
999- "1234:1234:1234:1234:1234:1234:1234:1234:1234:1234:1234"
1000+ "1234:1234:1234:1234:1234:1234:1234:1234:1234:1234:1234",
1001 "random invalid text",
1002 "",
1003 "\0",
1004diff --git a/app/test/test_cmdline_num.c b/app/test/test_cmdline_num.c
1005index 4c97caf..481fc38 100644
1006--- a/app/test/test_cmdline_num.c
1007+++ b/app/test/test_cmdline_num.c
1008@@ -200,8 +200,8 @@ const char * num_invalid_strs[] = {
1009 "-0x1234580A",
1010 "-0b0111010101",
1011 /* too long (128+ chars) */
1012- "0b1111000011110000111100001111000011110000111100001111000011110000"
1013- "1111000011110000111100001111000011110000111100001111000011110000",
1014+ ("0b1111000011110000111100001111000011110000111100001111000011110000"
1015+ "1111000011110000111100001111000011110000111100001111000011110000"),
1016 "1E3",
1017 "0A",
1018 "-B",
1019diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c
1020index a852040..42c5736 100644
1021--- a/app/test/test_cryptodev.c
1022+++ b/app/test/test_cryptodev.c
1023@@ -112,10 +112,11 @@ setup_test_string(struct rte_mempool *mpool,
1024 struct rte_mbuf *m = rte_pktmbuf_alloc(mpool);
1025 size_t t_len = len - (blocksize ? (len % blocksize) : 0);
1026
1027- memset(m->buf_addr, 0, m->buf_len);
1028 if (m) {
1029- char *dst = rte_pktmbuf_append(m, t_len);
1030+ char *dst;
1031
1032+ memset(m->buf_addr, 0, m->buf_len);
1033+ dst = rte_pktmbuf_append(m, t_len);
1034 if (!dst) {
1035 rte_pktmbuf_free(m);
1036 return NULL;
1037@@ -4761,16 +4762,20 @@ test_snow3g_auth_cipher(const struct snow3g_test_data *tdata,
1038
1039 /* Validate obuf */
1040 if (verify) {
1041- TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT(
1042+ TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT_OFFSET(
1043 plaintext,
1044 tdata->plaintext.data,
1045- tdata->plaintext.len >> 3,
1046+ (tdata->plaintext.len - tdata->cipher.offset_bits -
1047+ (tdata->digest.len << 3)),
1048+ tdata->cipher.offset_bits,
1049 "SNOW 3G Plaintext data not as expected");
1050 } else {
1051- TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT(
1052+ TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT_OFFSET(
1053 ciphertext,
1054 tdata->ciphertext.data,
1055- tdata->validDataLenInBits.len,
1056+ (tdata->validDataLenInBits.len -
1057+ tdata->cipher.offset_bits),
1058+ tdata->cipher.offset_bits,
1059 "SNOW 3G Ciphertext data not as expected");
1060
1061 TEST_ASSERT_BUFFERS_ARE_EQUAL(
1062@@ -4945,16 +4950,20 @@ test_snow3g_auth_cipher_sgl(const struct snow3g_test_data *tdata,
1063
1064 /* Validate obuf */
1065 if (verify) {
1066- TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT(
1067+ TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT_OFFSET(
1068 plaintext,
1069 tdata->plaintext.data,
1070- tdata->plaintext.len >> 3,
1071+ (tdata->plaintext.len - tdata->cipher.offset_bits -
1072+ (tdata->digest.len << 3)),
1073+ tdata->cipher.offset_bits,
1074 "SNOW 3G Plaintext data not as expected");
1075 } else {
1076- TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT(
1077+ TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT_OFFSET(
1078 ciphertext,
1079 tdata->ciphertext.data,
1080- tdata->validDataLenInBits.len,
1081+ (tdata->validDataLenInBits.len -
1082+ tdata->cipher.offset_bits),
1083+ tdata->cipher.offset_bits,
1084 "SNOW 3G Ciphertext data not as expected");
1085
1086 TEST_ASSERT_BUFFERS_ARE_EQUAL(
1087@@ -9653,8 +9662,8 @@ test_multi_session(void)
1088 rte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info);
1089
1090 sessions = rte_malloc(NULL,
1091- (sizeof(struct rte_cryptodev_sym_session *) *
1092- MAX_NB_SESSIONS) + 1, 0);
1093+ sizeof(struct rte_cryptodev_sym_session *) *
1094+ (MAX_NB_SESSIONS + 1), 0);
1095
1096 /* Create multiple crypto sessions*/
1097 for (i = 0; i < MAX_NB_SESSIONS; i++) {
1098@@ -9699,6 +9708,7 @@ test_multi_session(void)
1099 }
1100 }
1101
1102+ sessions[i] = NULL;
1103 /* Next session create should fail */
1104 rte_cryptodev_sym_session_init(ts_params->valid_devs[0],
1105 sessions[i], &ut_params->auth_xform,
1106@@ -11202,7 +11212,7 @@ test_authenticated_decryption_fail_when_corruption(
1107 }
1108
1109 static int
1110-test_authenticated_encryt_with_esn(
1111+test_authenticated_encrypt_with_esn(
1112 struct crypto_testsuite_params *ts_params,
1113 struct crypto_unittest_params *ut_params,
1114 const struct test_crypto_vector *reference)
1115@@ -11867,7 +11877,7 @@ auth_decryption_AES128CBC_HMAC_SHA1_fail_tag_corrupt(void)
1116 static int
1117 auth_encrypt_AES128CBC_HMAC_SHA1_esn_check(void)
1118 {
1119- return test_authenticated_encryt_with_esn(
1120+ return test_authenticated_encrypt_with_esn(
1121 &testsuite_params,
1122 &unittest_params,
1123 &aes128cbc_hmac_sha1_aad_test_vector);
1124diff --git a/app/test/test_cryptodev_aes_test_vectors.h b/app/test/test_cryptodev_aes_test_vectors.h
1125index 66994b6..2b5d417 100644
1126--- a/app/test/test_cryptodev_aes_test_vectors.h
1127+++ b/app/test/test_cryptodev_aes_test_vectors.h
1128@@ -2212,7 +2212,7 @@ static const struct blockcipher_test_case aes_cipheronly_test_cases[] = {
1129 BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX2
1130 },
1131 {
1132- .test_descr = "AES-192-CBC Encryption Scater gather",
1133+ .test_descr = "AES-192-CBC Encryption Scatter gather",
1134 .test_data = &aes_test_data_10,
1135 .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT,
1136 .feature_mask = BLOCKCIPHER_TEST_FEATURE_SG |
1137diff --git a/app/test/test_distributor_perf.c b/app/test/test_distributor_perf.c
1138index f153bcf..1f5db4c 100644
1139--- a/app/test/test_distributor_perf.c
1140+++ b/app/test/test_distributor_perf.c
1141@@ -188,13 +188,15 @@ quit_workers(struct rte_distributor *d, struct rte_mempool *p)
1142 rte_mempool_get_bulk(p, (void *)bufs, num_workers);
1143
1144 quit = 1;
1145- for (i = 0; i < num_workers; i++)
1146+ for (i = 0; i < num_workers; i++) {
1147 bufs[i]->hash.usr = i << 1;
1148- rte_distributor_process(d, bufs, num_workers);
1149+ rte_distributor_process(d, &bufs[i], 1);
1150+ }
1151
1152 rte_mempool_put_bulk(p, (void *)bufs, num_workers);
1153
1154 rte_distributor_process(d, NULL, 0);
1155+ rte_distributor_flush(d);
1156 rte_eal_mp_wait_lcore();
1157 quit = 0;
1158 worker_idx = 0;
1159diff --git a/app/test/test_eal_flags.c b/app/test/test_eal_flags.c
1160index 5b2c0f5..654bebf 100644
1161--- a/app/test/test_eal_flags.c
1162+++ b/app/test/test_eal_flags.c
1163@@ -125,6 +125,7 @@ process_hugefiles(const char * prefix, enum hugepage_action action)
1164 case HUGEPAGE_CHECK_EXISTS:
1165 {
1166 /* file exists, return */
1167+ closedir(hugepage_dir);
1168 result = 1;
1169 goto end;
1170 }
1171diff --git a/app/test/test_event_crypto_adapter.c b/app/test/test_event_crypto_adapter.c
1172index 1c0a0fa..b30e0f8 100644
1173--- a/app/test/test_event_crypto_adapter.c
1174+++ b/app/test/test_event_crypto_adapter.c
1175@@ -224,8 +224,7 @@ test_op_forward_mode(uint8_t session_less)
1176 op->sess_type = RTE_CRYPTO_OP_SESSIONLESS;
1177 first_xform = &cipher_xform;
1178 sym_op->xform = first_xform;
1179- uint32_t len = IV_OFFSET + MAXIMUM_IV_LENGTH +
1180- (sizeof(struct rte_crypto_sym_xform) * 2);
1181+ uint32_t len = IV_OFFSET + MAXIMUM_IV_LENGTH;
1182 op->private_data_offset = len;
1183 /* Fill in private data information */
1184 rte_memcpy(&m_data.response_info, &response_info,
1185@@ -419,8 +418,7 @@ test_op_new_mode(uint8_t session_less)
1186 op->sess_type = RTE_CRYPTO_OP_SESSIONLESS;
1187 first_xform = &cipher_xform;
1188 sym_op->xform = first_xform;
1189- uint32_t len = IV_OFFSET + MAXIMUM_IV_LENGTH +
1190- (sizeof(struct rte_crypto_sym_xform) * 2);
1191+ uint32_t len = IV_OFFSET + MAXIMUM_IV_LENGTH;
1192 op->private_data_offset = len;
1193 /* Fill in private data information */
1194 rte_memcpy(&m_data.response_info, &response_info,
1195@@ -516,7 +514,8 @@ configure_cryptodev(void)
1196 NUM_MBUFS, MBUF_CACHE_SIZE,
1197 DEFAULT_NUM_XFORMS *
1198 sizeof(struct rte_crypto_sym_xform) +
1199- MAXIMUM_IV_LENGTH,
1200+ MAXIMUM_IV_LENGTH +
1201+ sizeof(union rte_event_crypto_metadata),
1202 rte_socket_id());
1203 if (params.op_mpool == NULL) {
1204 RTE_LOG(ERR, USER1, "Can't create CRYPTO_OP_POOL\n");
1205diff --git a/app/test/test_event_timer_adapter.c b/app/test/test_event_timer_adapter.c
1206index ad3f4dc..b536dde 100644
1207--- a/app/test/test_event_timer_adapter.c
1208+++ b/app/test/test_event_timer_adapter.c
1209@@ -3,6 +3,8 @@
1210 * Copyright(c) 2017-2018 Intel Corporation.
1211 */
1212
1213+#include <math.h>
1214+
1215 #include <rte_atomic.h>
1216 #include <rte_common.h>
1217 #include <rte_cycles.h>
1218@@ -46,7 +48,7 @@ static uint64_t global_info_bkt_tck_ns;
1219 static volatile uint8_t arm_done;
1220
1221 #define CALC_TICKS(tks) \
1222- ((tks * global_bkt_tck_ns) / global_info_bkt_tck_ns)
1223+ ceil((double)(tks * global_bkt_tck_ns) / global_info_bkt_tck_ns)
1224
1225
1226 static bool using_services;
1227diff --git a/app/test/test_flow_classify.c b/app/test/test_flow_classify.c
1228index ef0b6fd..951606f 100644
1229--- a/app/test/test_flow_classify.c
1230+++ b/app/test/test_flow_classify.c
1231@@ -828,6 +828,12 @@ test_flow_classify(void)
1232 cls_params.name = "flow_classifier";
1233 cls_params.socket_id = 0;
1234 cls->cls = rte_flow_classifier_create(&cls_params);
1235+ if (cls->cls == NULL) {
1236+ printf("Line %i: flow classifier create has failed!\n",
1237+ __LINE__);
1238+ rte_free(cls);
1239+ return TEST_FAILED;
1240+ }
1241
1242 /* initialise ACL table params */
1243 table_acl_params.n_rule_fields = RTE_DIM(ipv4_defs);
1244diff --git a/app/test/test_kni.c b/app/test/test_kni.c
1245index e47ab36..b338c91 100644
1246--- a/app/test/test_kni.c
1247+++ b/app/test/test_kni.c
1248@@ -562,8 +562,12 @@ test_kni(void)
1249 }
1250 closedir(dir);
1251
1252- /* Initialize KNI subsytem */
1253- rte_kni_init(KNI_TEST_MAX_PORTS);
1254+ /* Initialize KNI subsystem */
1255+ ret = rte_kni_init(KNI_TEST_MAX_PORTS);
1256+ if (ret < 0) {
1257+ printf("fail to initialize KNI subsystem\n");
1258+ return -1;
1259+ }
1260
1261 if (test_kni_allocate_lcores() < 0) {
1262 printf("No enough lcores for kni processing\n");
1263diff --git a/app/test/test_mbuf.c b/app/test/test_mbuf.c
1264index a5bd169..3224272 100644
1265--- a/app/test/test_mbuf.c
1266+++ b/app/test/test_mbuf.c
1267@@ -2344,7 +2344,7 @@ test_pktmbuf_ext_shinfo_init_helper(struct rte_mempool *pktmbuf_pool)
1268 if (rte_mbuf_refcnt_read(m) != 1)
1269 GOTO_FAIL("%s: Invalid refcnt in mbuf\n", __func__);
1270
1271- buf_iova = rte_mempool_virt2iova(ext_buf_addr);
1272+ buf_iova = rte_mem_virt2iova(ext_buf_addr);
1273 rte_pktmbuf_attach_extbuf(m, ext_buf_addr, buf_iova, buf_len,
1274 ret_shinfo);
1275 if (m->ol_flags != EXT_ATTACHED_MBUF)
1276diff --git a/app/test/test_mempool.c b/app/test/test_mempool.c
1277index c32a5d3..06a0f7a 100644
1278--- a/app/test/test_mempool.c
1279+++ b/app/test/test_mempool.c
1280@@ -552,7 +552,7 @@ test_mempool(void)
1281 GOTO_ERR(ret, err);
1282
1283 /* test to initialize mempool objects and memory */
1284- nb_objs = rte_mempool_obj_iter(mp_stack_mempool_iter, rte_pktmbuf_init,
1285+ nb_objs = rte_mempool_obj_iter(mp_stack_mempool_iter, my_obj_init,
1286 NULL);
1287 if (nb_objs == 0)
1288 GOTO_ERR(ret, err);
1289diff --git a/app/test/test_power_cpufreq.c b/app/test/test_power_cpufreq.c
1290index d203810..d0c7e60 100644
1291--- a/app/test/test_power_cpufreq.c
1292+++ b/app/test/test_power_cpufreq.c
1293@@ -8,6 +8,7 @@
1294 #include <limits.h>
1295 #include <string.h>
1296 #include <inttypes.h>
1297+#include <rte_cycles.h>
1298
1299 #include "test.h"
1300
1301@@ -34,37 +35,79 @@ test_power_caps(void)
1302 #define TEST_POWER_LCORE_INVALID ((unsigned)RTE_MAX_LCORE)
1303 #define TEST_POWER_FREQS_NUM_MAX ((unsigned)RTE_MAX_LCORE_FREQS)
1304
1305-#define TEST_POWER_SYSFILE_CUR_FREQ \
1306+/* macros used for rounding frequency to nearest 100000 */
1307+#define TEST_FREQ_ROUNDING_DELTA 50000
1308+#define TEST_ROUND_FREQ_TO_N_100000 100000
1309+
1310+#define TEST_POWER_SYSFILE_CPUINFO_FREQ \
1311 "/sys/devices/system/cpu/cpu%u/cpufreq/cpuinfo_cur_freq"
1312+#define TEST_POWER_SYSFILE_SCALING_FREQ \
1313+ "/sys/devices/system/cpu/cpu%u/cpufreq/scaling_cur_freq"
1314
1315 static uint32_t total_freq_num;
1316 static uint32_t freqs[TEST_POWER_FREQS_NUM_MAX];
1317
1318 static int
1319-check_cur_freq(unsigned lcore_id, uint32_t idx)
1320+check_cur_freq(unsigned int lcore_id, uint32_t idx, bool turbo)
1321 {
1322 #define TEST_POWER_CONVERT_TO_DECIMAL 10
1323+#define MAX_LOOP 100
1324 FILE *f;
1325 char fullpath[PATH_MAX];
1326 char buf[BUFSIZ];
1327 uint32_t cur_freq;
1328 int ret = -1;
1329+ int i;
1330
1331 if (snprintf(fullpath, sizeof(fullpath),
1332- TEST_POWER_SYSFILE_CUR_FREQ, lcore_id) < 0) {
1333+ TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) {
1334 return 0;
1335 }
1336 f = fopen(fullpath, "r");
1337 if (f == NULL) {
1338- return 0;
1339- }
1340- if (fgets(buf, sizeof(buf), f) == NULL) {
1341- goto fail_get_cur_freq;
1342+ if (snprintf(fullpath, sizeof(fullpath),
1343+ TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) {
1344+ return 0;
1345+ }
1346+ f = fopen(fullpath, "r");
1347+ if (f == NULL) {
1348+ return 0;
1349+ }
1350+ }
1351+ for (i = 0; i < MAX_LOOP; i++) {
1352+ fflush(f);
1353+ if (fgets(buf, sizeof(buf), f) == NULL)
1354+ goto fail_all;
1355+
1356+ cur_freq = strtoul(buf, NULL, TEST_POWER_CONVERT_TO_DECIMAL);
1357+
1358+ /* convert the frequency to nearest 100000 value
1359+ * Ex: if cur_freq=1396789 then freq_conv=1400000
1360+ * Ex: if cur_freq=800030 then freq_conv=800000
1361+ */
1362+ unsigned int freq_conv = 0;
1363+ freq_conv = (cur_freq + TEST_FREQ_ROUNDING_DELTA)
1364+ / TEST_ROUND_FREQ_TO_N_100000;
1365+ freq_conv = freq_conv * TEST_ROUND_FREQ_TO_N_100000;
1366+
1367+ if (turbo)
1368+ ret = (freqs[idx] <= freq_conv ? 0 : -1);
1369+ else
1370+ ret = (freqs[idx] == freq_conv ? 0 : -1);
1371+
1372+ if (ret == 0)
1373+ break;
1374+
1375+ if (fseek(f, 0, SEEK_SET) < 0) {
1376+ printf("Fail to set file position indicator to 0\n");
1377+ goto fail_all;
1378+ }
1379+
1380+ /* wait for the value to be updated */
1381+ rte_delay_ms(10);
1382 }
1383- cur_freq = strtoul(buf, NULL, TEST_POWER_CONVERT_TO_DECIMAL);
1384- ret = (freqs[idx] == cur_freq ? 0 : -1);
1385
1386-fail_get_cur_freq:
1387+fail_all:
1388 fclose(f);
1389
1390 return ret;
1391@@ -143,7 +186,7 @@ check_power_get_freq(void)
1392 }
1393
1394 /* Check the current frequency */
1395- ret = check_cur_freq(TEST_POWER_LCORE_ID, count);
1396+ ret = check_cur_freq(TEST_POWER_LCORE_ID, count, false);
1397 if (ret < 0)
1398 return -1;
1399
1400@@ -193,7 +236,7 @@ check_power_set_freq(void)
1401 }
1402
1403 /* Check the current frequency */
1404- ret = check_cur_freq(TEST_POWER_LCORE_ID, total_freq_num - 1);
1405+ ret = check_cur_freq(TEST_POWER_LCORE_ID, total_freq_num - 1, false);
1406 if (ret < 0)
1407 return -1;
1408
1409@@ -206,6 +249,8 @@ check_power_freq_down(void)
1410 {
1411 int ret;
1412
1413+ rte_power_freq_enable_turbo(TEST_POWER_LCORE_ID);
1414+
1415 /* test with an invalid lcore id */
1416 ret = rte_power_freq_down(TEST_POWER_LCORE_INVALID);
1417 if (ret >= 0) {
1418@@ -229,7 +274,7 @@ check_power_freq_down(void)
1419 }
1420
1421 /* Check the current frequency */
1422- ret = check_cur_freq(TEST_POWER_LCORE_ID, total_freq_num - 1);
1423+ ret = check_cur_freq(TEST_POWER_LCORE_ID, total_freq_num - 1, false);
1424 if (ret < 0)
1425 return -1;
1426
1427@@ -248,7 +293,7 @@ check_power_freq_down(void)
1428 }
1429
1430 /* Check the current frequency */
1431- ret = check_cur_freq(TEST_POWER_LCORE_ID, 1);
1432+ ret = check_cur_freq(TEST_POWER_LCORE_ID, 1, false);
1433 if (ret < 0)
1434 return -1;
1435
1436@@ -284,7 +329,7 @@ check_power_freq_up(void)
1437 }
1438
1439 /* Check the current frequency */
1440- ret = check_cur_freq(TEST_POWER_LCORE_ID, total_freq_num - 2);
1441+ ret = check_cur_freq(TEST_POWER_LCORE_ID, total_freq_num - 2, false);
1442 if (ret < 0)
1443 return -1;
1444
1445@@ -303,7 +348,7 @@ check_power_freq_up(void)
1446 }
1447
1448 /* Check the current frequency */
1449- ret = check_cur_freq(TEST_POWER_LCORE_ID, 0);
1450+ ret = check_cur_freq(TEST_POWER_LCORE_ID, 0, true);
1451 if (ret < 0)
1452 return -1;
1453
1454@@ -331,7 +376,7 @@ check_power_freq_max(void)
1455 }
1456
1457 /* Check the current frequency */
1458- ret = check_cur_freq(TEST_POWER_LCORE_ID, 0);
1459+ ret = check_cur_freq(TEST_POWER_LCORE_ID, 0, true);
1460 if (ret < 0)
1461 return -1;
1462
1463@@ -359,7 +404,7 @@ check_power_freq_min(void)
1464 }
1465
1466 /* Check the current frequency */
1467- ret = check_cur_freq(TEST_POWER_LCORE_ID, total_freq_num - 1);
1468+ ret = check_cur_freq(TEST_POWER_LCORE_ID, total_freq_num - 1, false);
1469 if (ret < 0)
1470 return -1;
1471
1472@@ -391,9 +436,15 @@ check_power_turbo(void)
1473 TEST_POWER_LCORE_ID);
1474 return -1;
1475 }
1476+ ret = rte_power_freq_max(TEST_POWER_LCORE_ID);
1477+ if (ret < 0) {
1478+ printf("Fail to scale up the freq to max on lcore %u\n",
1479+ TEST_POWER_LCORE_ID);
1480+ return -1;
1481+ }
1482
1483 /* Check the current frequency */
1484- ret = check_cur_freq(TEST_POWER_LCORE_ID, 0);
1485+ ret = check_cur_freq(TEST_POWER_LCORE_ID, 0, true);
1486 if (ret < 0)
1487 return -1;
1488
1489@@ -410,9 +461,15 @@ check_power_turbo(void)
1490 TEST_POWER_LCORE_ID);
1491 return -1;
1492 }
1493+ ret = rte_power_freq_max(TEST_POWER_LCORE_ID);
1494+ if (ret < 0) {
1495+ printf("Fail to scale up the freq to max on lcore %u\n",
1496+ TEST_POWER_LCORE_ID);
1497+ return -1;
1498+ }
1499
1500 /* Check the current frequency */
1501- ret = check_cur_freq(TEST_POWER_LCORE_ID, 1);
1502+ ret = check_cur_freq(TEST_POWER_LCORE_ID, 1, false);
1503 if (ret < 0)
1504 return -1;
1505
1506diff --git a/app/test/test_prefetch.c b/app/test/test_prefetch.c
1507index 41f219a..086c686 100644
1508--- a/app/test/test_prefetch.c
1509+++ b/app/test/test_prefetch.c
1510@@ -20,7 +20,7 @@
1511 static int
1512 test_prefetch(void)
1513 {
1514- int a;
1515+ int a = 0;
1516
1517 rte_prefetch0(&a);
1518 rte_prefetch1(&a);
1519diff --git a/app/test/test_reciprocal_division_perf.c b/app/test/test_reciprocal_division_perf.c
1520index a7be8aa..4f62587 100644
1521--- a/app/test/test_reciprocal_division_perf.c
1522+++ b/app/test/test_reciprocal_division_perf.c
1523@@ -71,10 +71,12 @@ test_reciprocal_division_perf(void)
1524 tot_cyc_n);
1525 printf("Total number of cycles reciprocal division : %"PRIu64"\n",
1526 tot_cyc_r);
1527- printf("Cycles per division(normal) : %3.2f\n",
1528- ((double)tot_cyc_n)/i);
1529- printf("Cycles per division(reciprocal) : %3.2f\n\n",
1530- ((double)tot_cyc_r)/i);
1531+ if (i != 0) {
1532+ printf("Cycles per division(normal) : %3.2f\n",
1533+ ((double)tot_cyc_n)/i);
1534+ printf("Cycles per division(reciprocal) : %3.2f\n\n",
1535+ ((double)tot_cyc_r)/i);
1536+ }
1537
1538 tot_cyc_n = 0;
1539 tot_cyc_r = 0;
1540@@ -111,11 +113,12 @@ test_reciprocal_division_perf(void)
1541 tot_cyc_n);
1542 printf("Total number of cycles reciprocal division : %"PRIu64"\n",
1543 tot_cyc_r);
1544- printf("Cycles per division(normal) : %3.2f\n",
1545- ((double)tot_cyc_n)/i);
1546- printf("Cycles per division(reciprocal) : %3.2f\n\n",
1547- ((double)tot_cyc_r)/i);
1548-
1549+ if (i != 0) {
1550+ printf("Cycles per division(normal) : %3.2f\n",
1551+ ((double)tot_cyc_n)/i);
1552+ printf("Cycles per division(reciprocal) : %3.2f\n\n",
1553+ ((double)tot_cyc_r)/i);
1554+ }
1555 tot_cyc_n = 0;
1556 tot_cyc_r = 0;
1557
1558@@ -152,10 +155,12 @@ test_reciprocal_division_perf(void)
1559 tot_cyc_n);
1560 printf("Total number of cycles reciprocal division : %"PRIu64"\n",
1561 tot_cyc_r);
1562- printf("Cycles per division(normal) : %3.2f\n",
1563- ((double)tot_cyc_n)/i);
1564- printf("Cycles per division(reciprocal) : %3.2f\n\n",
1565- ((double)tot_cyc_r)/i);
1566+ if (i != 0) {
1567+ printf("Cycles per division(normal) : %3.2f\n",
1568+ ((double)tot_cyc_n)/i);
1569+ printf("Cycles per division(reciprocal) : %3.2f\n\n",
1570+ ((double)tot_cyc_r)/i);
1571+ }
1572
1573 tot_cyc_n = 0;
1574 tot_cyc_r = 0;
1575@@ -190,10 +195,12 @@ test_reciprocal_division_perf(void)
1576 tot_cyc_n);
1577 printf("Total number of cycles reciprocal division : %"PRIu64"\n",
1578 tot_cyc_r);
1579- printf("Cycles per division(normal) : %3.2f\n",
1580- ((double)tot_cyc_n)/i);
1581- printf("Cycles per division(reciprocal) : %3.2f\n",
1582- ((double)tot_cyc_r)/i);
1583+ if (i != 0) {
1584+ printf("Cycles per division(normal) : %3.2f\n",
1585+ ((double)tot_cyc_n)/i);
1586+ printf("Cycles per division(reciprocal) : %3.2f\n",
1587+ ((double)tot_cyc_r)/i);
1588+ }
1589
1590 return result;
1591 }
1592diff --git a/app/test/test_stack.c b/app/test/test_stack.c
1593index c8dac1f..fe6f1aa 100644
1594--- a/app/test/test_stack.c
1595+++ b/app/test/test_stack.c
1596@@ -419,7 +419,11 @@ test_stack(void)
1597 static int
1598 test_lf_stack(void)
1599 {
1600+#if defined(RTE_STACK_LF_SUPPORTED)
1601 return __test_stack(RTE_STACK_F_LF);
1602+#else
1603+ return TEST_SKIPPED;
1604+#endif
1605 }
1606
1607 REGISTER_TEST_COMMAND(stack_autotest, test_stack);
1608diff --git a/app/test/test_stack_perf.c b/app/test/test_stack_perf.c
1609index 3ab7267..a0c7d4d 100644
1610--- a/app/test/test_stack_perf.c
1611+++ b/app/test/test_stack_perf.c
1612@@ -349,7 +349,11 @@ test_stack_perf(void)
1613 static int
1614 test_lf_stack_perf(void)
1615 {
1616+#if defined(RTE_STACK_LF_SUPPORTED)
1617 return __test_stack_perf(RTE_STACK_F_LF);
1618+#else
1619+ return TEST_SKIPPED;
1620+#endif
1621 }
1622
1623 REGISTER_TEST_COMMAND(stack_perf_autotest, test_stack_perf);
1624diff --git a/app/test/test_table_tables.c b/app/test/test_table_tables.c
1625index 1aa269f..4ff6ab1 100644
1626--- a/app/test/test_table_tables.c
1627+++ b/app/test/test_table_tables.c
1628@@ -28,7 +28,8 @@ table_test table_tests[] = {
1629 APP_METADATA_OFFSET(0)); \
1630 key = RTE_MBUF_METADATA_UINT8_PTR(mbuf, \
1631 APP_METADATA_OFFSET(32)); \
1632- memset(key, 0, 32); \
1633+ if (mbuf->priv_size + mbuf->buf_len >= 64) \
1634+ memset(key, 0, 32); \
1635 k32 = (uint32_t *) key; \
1636 k32[0] = (value); \
1637 *signature = pipeline_test_hash(key, NULL, 0, 0); \
1638diff --git a/app/test/test_timer_secondary.c b/app/test/test_timer_secondary.c
1639index 790f180..a4033b6 100644
1640--- a/app/test/test_timer_secondary.c
1641+++ b/app/test/test_timer_secondary.c
1642@@ -126,9 +126,9 @@ test_timer_secondary(void)
1643
1644 mz = rte_memzone_reserve(TEST_INFO_MZ_NAME, sizeof(*test_info),
1645 SOCKET_ID_ANY, 0);
1646- test_info = mz->addr;
1647- TEST_ASSERT_NOT_NULL(test_info, "Couldn't allocate memory for "
1648+ TEST_ASSERT_NOT_NULL(mz, "Couldn't allocate memory for "
1649 "test data");
1650+ test_info = mz->addr;
1651
1652 test_info->tim_mempool = rte_mempool_create("test_timer_mp",
1653 NUM_TIMERS, sizeof(struct rte_timer), 0, 0,
1654@@ -172,9 +172,9 @@ test_timer_secondary(void)
1655 int i;
1656
1657 mz = rte_memzone_lookup(TEST_INFO_MZ_NAME);
1658- test_info = mz->addr;
1659- TEST_ASSERT_NOT_NULL(test_info, "Couldn't lookup memzone for "
1660+ TEST_ASSERT_NOT_NULL(mz, "Couldn't lookup memzone for "
1661 "test info");
1662+ test_info = mz->addr;
1663
1664 for (i = 0; i < NUM_TIMERS; i++) {
1665 rte_mempool_get(test_info->tim_mempool, (void **)&tim);
1666diff --git a/buildtools/check-experimental-syms.sh b/buildtools/check-experimental-syms.sh
1667index f3603e5..fe07dd3 100755
1668--- a/buildtools/check-experimental-syms.sh
1669+++ b/buildtools/check-experimental-syms.sh
1670@@ -18,7 +18,7 @@ then
1671 exit 0
1672 fi
1673
1674-DUMPFILE=$(mktemp -t dpdk.${0##*/}.XXX.objdump)
1675+DUMPFILE=$(mktemp -t dpdk.${0##*/}.objdump.XXXXXX)
1676 trap 'rm -f "$DUMPFILE"' EXIT
1677 objdump -t $OBJFILE >$DUMPFILE
1678
1679diff --git a/buildtools/map-list-symbol.sh b/buildtools/map-list-symbol.sh
1680index 5509b4a..3bf9bd6 100755
1681--- a/buildtools/map-list-symbol.sh
1682+++ b/buildtools/map-list-symbol.sh
1683@@ -44,7 +44,7 @@ for file in $@; do
1684 ret = 1;
1685 }
1686 }
1687- /^.*{/ {
1688+ /^.*\{/ {
1689 if ("'$section'" == "all" || $1 == "'$section'") {
1690 current_section = $1;
1691 }
1692diff --git a/buildtools/pkg-config/meson.build b/buildtools/pkg-config/meson.build
1693deleted file mode 100644
1694index 39a8fd1..0000000
1695--- a/buildtools/pkg-config/meson.build
1696+++ /dev/null
1697@@ -1,59 +0,0 @@
1698-# SPDX-License-Identifier: BSD-3-Clause
1699-# Copyright(c) 2020 Intel Corporation
1700-
1701-pkg = import('pkgconfig')
1702-pkg_extra_cflags = ['-include', 'rte_config.h'] + machine_args
1703-if is_freebsd
1704- pkg_extra_cflags += ['-D__BSD_VISIBLE']
1705-endif
1706-
1707-# When calling pkg-config --static --libs, pkg-config will always output the
1708-# regular libs first, and then the extra libs from Libs.private field,
1709-# since the assumption is that those are additional dependencies for building
1710-# statically that the .a files depend upon. The output order of .pc fields is:
1711-# Libs Libs.private Requires Requires.private
1712-# The fields Requires* are for package names.
1713-# The flags of the DPDK libraries must be defined in Libs* fields.
1714-# However, the DPDK drivers are linked only in static builds (Libs.private),
1715-# and those need to come *before* the regular libraries (Libs field).
1716-# This requirement is satisfied by moving the regular libs in a separate file
1717-# included in the field Requires (after Libs.private).
1718-# Another requirement is to allow linking dependencies as shared libraries,
1719-# while linking static DPDK libraries and drivers. It is satisfied by
1720-# listing the static files in Libs.private with the explicit syntax -l:libfoo.a.
1721-# As a consequence, the regular DPDK libraries are already listed as static
1722-# in the field Libs.private. The second occurences of DPDK libraries,
1723-# included from Requires and used for shared library linkage case,
1724-# are skipped in the case of static linkage thanks to the flag --as-needed.
1725-
1726-
1727-pkg.generate(name: 'dpdk-libs',
1728- filebase: 'libdpdk-libs',
1729- description: '''Internal-only DPDK pkgconfig file. Not for direct use.
1730-Use libdpdk.pc instead of this file to query DPDK compile/link arguments''',
1731- version: meson.project_version(),
1732- subdirs: [get_option('include_subdir_arch'), '.'],
1733- extra_cflags: pkg_extra_cflags,
1734- libraries: ['-Wl,--as-needed'] + dpdk_libraries,
1735- libraries_private: dpdk_extra_ldflags)
1736-
1737-platform_flags = []
1738-if not is_windows
1739- platform_flags += ['-Wl,--export-dynamic'] # ELF only
1740-endif
1741-pkg.generate(name: 'DPDK', # main DPDK pkgconfig file
1742- filebase: 'libdpdk',
1743- version: meson.project_version(),
1744- description: '''The Data Plane Development Kit (DPDK).
1745-Note that CFLAGS might contain an -march flag higher than typical baseline.
1746-This is required for a number of static inline functions in the public headers.''',
1747- requires: ['libdpdk-libs', libbsd], # may need libbsd for string funcs
1748- # if libbsd is not enabled, then this is blank
1749- libraries_private: ['-Wl,--whole-archive'] +
1750- dpdk_drivers + dpdk_static_libraries +
1751- ['-Wl,--no-whole-archive'] + platform_flags
1752-)
1753-
1754-# For static linking with dependencies as shared libraries,
1755-# the internal static libraries must be flagged explicitly.
1756-run_command(py3, 'set-static-linker-flags.py', check: true)
1757diff --git a/buildtools/pkg-config/set-static-linker-flags.py b/buildtools/pkg-config/set-static-linker-flags.py
1758deleted file mode 100644
1759index 2745db3..0000000
1760--- a/buildtools/pkg-config/set-static-linker-flags.py
1761+++ /dev/null
1762@@ -1,38 +0,0 @@
1763-#!/usr/bin/env python3
1764-# SPDX-License-Identifier: BSD-3-Clause
1765-# Copyright(c) 2020 Intel Corporation
1766-
1767-# Script to fix flags for static linking in pkgconfig files from meson
1768-# Should be called from meson build itself
1769-import os
1770-import sys
1771-
1772-
1773-def fix_ldflag(f):
1774- if not f.startswith('-lrte_'):
1775- return f
1776- return '-l:lib' + f[2:] + '.a'
1777-
1778-
1779-def fix_libs_private(line):
1780- if not line.startswith('Libs.private'):
1781- return line
1782- ldflags = [fix_ldflag(flag) for flag in line.split()]
1783- return ' '.join(ldflags) + '\n'
1784-
1785-
1786-def process_pc_file(filepath):
1787- print('Processing', filepath)
1788- with open(filepath) as src:
1789- lines = src.readlines()
1790- with open(filepath, 'w') as dst:
1791- dst.writelines([fix_libs_private(line) for line in lines])
1792-
1793-
1794-if 'MESON_BUILD_ROOT' not in os.environ:
1795- print('This script must be called from a meson build environment')
1796- sys.exit(1)
1797-for root, dirs, files in os.walk(os.environ['MESON_BUILD_ROOT']):
1798- pc_files = [f for f in files if f.endswith('.pc')]
1799- for f in pc_files:
1800- process_pc_file(os.path.join(root, f))
1801diff --git a/config/meson.build b/config/meson.build
1802index b1f728e..4007b8f 100644
1803--- a/config/meson.build
1804+++ b/config/meson.build
1805@@ -121,11 +121,8 @@ if cc.find_library('m', required : false).found()
1806 dpdk_extra_ldflags += '-lm'
1807 endif
1808
1809-# for linux link against dl, for bsd execinfo
1810 if is_linux
1811 link_lib = 'dl'
1812-elif is_freebsd
1813- link_lib = 'execinfo'
1814 else
1815 link_lib = ''
1816 endif
1817@@ -155,6 +152,12 @@ if fdt_dep.found() and cc.has_header('fdt.h')
1818 dpdk_extra_ldflags += '-lfdt'
1819 endif
1820
1821+libexecinfo = cc.find_library('libexecinfo', required: false)
1822+if libexecinfo.found() and cc.has_header('execinfo.h')
1823+ add_project_link_arguments('-lexecinfo', language: 'c')
1824+ dpdk_extra_ldflags += '-lexecinfo'
1825+endif
1826+
1827 # check for libbsd
1828 libbsd = dependency('libbsd', required: false, method: 'pkg-config')
1829 if libbsd.found()
1830diff --git a/config/ppc_64/meson.build b/config/ppc_64/meson.build
1831index aa7d73d..54a94d6 100644
1832--- a/config/ppc_64/meson.build
1833+++ b/config/ppc_64/meson.build
1834@@ -17,9 +17,20 @@ if not power9_supported
1835 dpdk_conf.set('RTE_MACHINE','power8')
1836 endif
1837
1838-# overrides specific to ppc64
1839-dpdk_conf.set('RTE_MAX_LCORE', 1536)
1840-dpdk_conf.set('RTE_MAX_NUMA_NODES', 32)
1841+# Certain POWER9 systems can scale as high as 1536 LCORES, but setting such a
1842+# high value can waste memory, cause timeouts in time limited autotests, and is
1843+# unlikely to be used in many production situations. Similarly, keeping the
1844+# default 64 LCORES seems too small as most POWER9 dual socket systems will have
1845+# at least 128 LCORES available. Set RTE_MAX_LCORE to 128 for POWER systems as
1846+# a compromise.
1847+dpdk_conf.set('RTE_MAX_LCORE', 128)
1848+
1849+# POWER systems do not allocate NUMA nodes sequentially. A dual socket system
1850+# will have CPUs associated with NUMA nodes 0 & 8, so ensure that the second
1851+# NUMA node will be supported by setting RTE_MAX_NUMA_NODES to 16. High end
1852+# systems can scale even higher with as many as 32 NUMA nodes.
1853+dpdk_conf.set('RTE_MAX_NUMA_NODES', 16)
1854+
1855 dpdk_conf.set('RTE_CACHE_LINE_SIZE', 128)
1856 dpdk_conf.set('RTE_MACHINE_CPUFLAG_ALTIVEC', 1)
1857 dpdk_conf.set('RTE_MACHINE_CPUFLAG_VSX', 1)
1858diff --git a/debian/changelog b/debian/changelog
1859index 9426c2e..b4bc5e4 100644
1860--- a/debian/changelog
1861+++ b/debian/changelog
1862@@ -1,3 +1,15 @@
1863+dpdk (19.11.10-0ubuntu0.20.04.1) focal; urgency=medium
1864+
1865+ * Merge the latest upstream stable minor release 19.11.10 (LP: #1940913)
1866+ Release notes available at:
1867+ https://doc.dpdk.org/guides-19.11/rel_notes/release_19_11.html
1868+ - Revert "fix linking back to pre be like 19.11.6 behavior (LP 1920141)"
1869+ [now part of upstream]
1870+ * d/p/u/lp-1940957-net-i40e-support-25G-AOC-ACC-cables.patch: fix issues
1871+ with 25G AOC cables (LP: #1940957)
1872+
1873+ -- Christian Ehrhardt <christian.ehrhardt@canonical.com> Tue, 24 Aug 2021 11:51:47 +0200
1874+
1875 dpdk (19.11.7-0ubuntu0.20.04.1) focal; urgency=medium
1876
1877 * Merge the latest upstream stable minor release 19.11.7-rc1
1878diff --git a/debian/patches/lp-1920141-01-Revert-Revert-Revert-build-pkg-config-prevent-overli.patch b/debian/patches/lp-1920141-01-Revert-Revert-Revert-build-pkg-config-prevent-overli.patch
1879deleted file mode 100644
1880index cd5adec..0000000
1881--- a/debian/patches/lp-1920141-01-Revert-Revert-Revert-build-pkg-config-prevent-overli.patch
1882+++ /dev/null
1883@@ -1,46 +0,0 @@
1884-From 9a776641702dcfdccc53feff143b4d3fea3d84f8 Mon Sep 17 00:00:00 2001
1885-From: Christian Ehrhardt <christian.ehrhardt@canonical.com>
1886-Date: Mon, 22 Mar 2021 10:51:03 +0100
1887-Subject: [PATCH 1/7] Revert "Revert "Revert "build/pkg-config: prevent
1888- overlinking"""
1889-
1890-This reverts commit f49248a990b5c34938c5246e013bc82f1296959f.
1891-This series changes linking behavior in 19.11.x and thereby should stay
1892-out. It breaks - for example - a rebuild of OVS 2.13 or builds
1893-of later OVS 2.13.x stable releases.
1894-
1895-Bug-Ubuntu: https://bugs.launchpad.net/bugs/1920141
1896-Forwarded: http://mails.dpdk.org/archives/stable/2021-March/029484.html
1897-Last-Update: 2021-03-22
1898----
1899- buildtools/pkg-config/meson.build | 7 +------
1900- 1 file changed, 1 insertion(+), 6 deletions(-)
1901-
1902-diff --git a/buildtools/pkg-config/meson.build b/buildtools/pkg-config/meson.build
1903-index 39a8fd1c8e..63a76b56d3 100644
1904---- a/buildtools/pkg-config/meson.build
1905-+++ b/buildtools/pkg-config/meson.build
1906-@@ -21,11 +21,6 @@ endif
1907- # Another requirement is to allow linking dependencies as shared libraries,
1908- # while linking static DPDK libraries and drivers. It is satisfied by
1909- # listing the static files in Libs.private with the explicit syntax -l:libfoo.a.
1910--# As a consequence, the regular DPDK libraries are already listed as static
1911--# in the field Libs.private. The second occurences of DPDK libraries,
1912--# included from Requires and used for shared library linkage case,
1913--# are skipped in the case of static linkage thanks to the flag --as-needed.
1914--
1915-
1916- pkg.generate(name: 'dpdk-libs',
1917- filebase: 'libdpdk-libs',
1918-@@ -34,7 +29,7 @@ Use libdpdk.pc instead of this file to query DPDK compile/link arguments''',
1919- version: meson.project_version(),
1920- subdirs: [get_option('include_subdir_arch'), '.'],
1921- extra_cflags: pkg_extra_cflags,
1922-- libraries: ['-Wl,--as-needed'] + dpdk_libraries,
1923-+ libraries: dpdk_libraries,
1924- libraries_private: dpdk_extra_ldflags)
1925-
1926- platform_flags = []
1927---
1928-2.30.0
1929-
1930diff --git a/debian/patches/lp-1920141-02-Revert-Revert-Revert-build-pkg-config-improve-static.patch b/debian/patches/lp-1920141-02-Revert-Revert-Revert-build-pkg-config-improve-static.patch
1931deleted file mode 100644
1932index 67fe965..0000000
1933--- a/debian/patches/lp-1920141-02-Revert-Revert-Revert-build-pkg-config-improve-static.patch
1934+++ /dev/null
1935@@ -1,708 +0,0 @@
1936-From 44763bcba2cd7853065458db6dd214b47ac91a1c Mon Sep 17 00:00:00 2001
1937-From: Christian Ehrhardt <christian.ehrhardt@canonical.com>
1938-Date: Mon, 22 Mar 2021 10:56:06 +0100
1939-Subject: [PATCH 2/7] Revert "Revert "Revert "build/pkg-config: improve static
1940- linking flags"""
1941-
1942-This reverts commit 39586a4cf0e320a15392342411532e398e0c5c8d.
1943-This series changes linking behavior in 19.11.x and thereby should stay
1944-out. It breaks - for example - a rebuild of OVS 2.13 or builds
1945-of later OVS 2.13.x stable releases.
1946-
1947-Bug-Ubuntu: https://bugs.launchpad.net/bugs/1920141
1948-Forwarded: http://mails.dpdk.org/archives/stable/2021-March/029484.html
1949-Last-Update: 2021-03-22
1950----
1951- buildtools/pkg-config/meson.build | 16 +++-----
1952- .../pkg-config/set-static-linker-flags.py | 38 -------------------
1953- doc/build-sdk-meson.txt | 2 +-
1954- examples/bbdev_app/Makefile | 2 +-
1955- examples/bond/Makefile | 2 +-
1956- examples/cmdline/Makefile | 2 +-
1957- examples/distributor/Makefile | 2 +-
1958- examples/eventdev_pipeline/Makefile | 2 +-
1959- examples/fips_validation/Makefile | 2 +-
1960- examples/flow_classify/Makefile | 2 +-
1961- examples/flow_filtering/Makefile | 2 +-
1962- examples/helloworld/Makefile | 2 +-
1963- examples/ioat/Makefile | 2 +-
1964- examples/ip_fragmentation/Makefile | 2 +-
1965- examples/ip_pipeline/Makefile | 2 +-
1966- examples/ip_reassembly/Makefile | 2 +-
1967- examples/ipsec-secgw/Makefile | 2 +-
1968- examples/ipv4_multicast/Makefile | 2 +-
1969- examples/kni/Makefile | 2 +-
1970- examples/l2fwd-cat/Makefile | 2 +-
1971- examples/l2fwd-crypto/Makefile | 2 +-
1972- examples/l2fwd-event/Makefile | 2 +-
1973- examples/l2fwd-jobstats/Makefile | 2 +-
1974- examples/l2fwd-keepalive/Makefile | 2 +-
1975- examples/l2fwd/Makefile | 2 +-
1976- examples/l3fwd-acl/Makefile | 2 +-
1977- examples/l3fwd-power/Makefile | 2 +-
1978- examples/l3fwd/Makefile | 2 +-
1979- examples/link_status_interrupt/Makefile | 2 +-
1980- examples/ntb/Makefile | 2 +-
1981- examples/packet_ordering/Makefile | 2 +-
1982- examples/ptpclient/Makefile | 2 +-
1983- examples/qos_meter/Makefile | 2 +-
1984- examples/qos_sched/Makefile | 2 +-
1985- examples/rxtx_callbacks/Makefile | 2 +-
1986- examples/service_cores/Makefile | 2 +-
1987- examples/skeleton/Makefile | 2 +-
1988- examples/tep_termination/Makefile | 2 +-
1989- examples/timer/Makefile | 2 +-
1990- examples/vdpa/Makefile | 2 +-
1991- examples/vhost/Makefile | 2 +-
1992- examples/vhost_blk/Makefile | 2 +-
1993- examples/vhost_crypto/Makefile | 2 +-
1994- examples/vmdq/Makefile | 2 +-
1995- examples/vmdq_dcb/Makefile | 2 +-
1996- 45 files changed, 49 insertions(+), 91 deletions(-)
1997- delete mode 100644 buildtools/pkg-config/set-static-linker-flags.py
1998-
1999-diff --git a/buildtools/pkg-config/meson.build b/buildtools/pkg-config/meson.build
2000-index 63a76b56d3..ccb34dcab3 100644
2001---- a/buildtools/pkg-config/meson.build
2002-+++ b/buildtools/pkg-config/meson.build
2003-@@ -1,6 +1,10 @@
2004- # SPDX-License-Identifier: BSD-3-Clause
2005- # Copyright(c) 2020 Intel Corporation
2006-
2007-+# for static builds, include the drivers as libs and we need to "whole-archive"
2008-+# them.
2009-+dpdk_drivers = ['-Wl,--whole-archive'] + dpdk_drivers + ['-Wl,--no-whole-archive']
2010-+
2011- pkg = import('pkgconfig')
2012- pkg_extra_cflags = ['-include', 'rte_config.h'] + machine_args
2013- if is_freebsd
2014-@@ -18,9 +22,6 @@ endif
2015- # and those need to come *before* the regular libraries (Libs field).
2016- # This requirement is satisfied by moving the regular libs in a separate file
2017- # included in the field Requires (after Libs.private).
2018--# Another requirement is to allow linking dependencies as shared libraries,
2019--# while linking static DPDK libraries and drivers. It is satisfied by
2020--# listing the static files in Libs.private with the explicit syntax -l:libfoo.a.
2021-
2022- pkg.generate(name: 'dpdk-libs',
2023- filebase: 'libdpdk-libs',
2024-@@ -44,11 +45,6 @@ Note that CFLAGS might contain an -march flag higher than typical baseline.
2025- This is required for a number of static inline functions in the public headers.''',
2026- requires: ['libdpdk-libs', libbsd], # may need libbsd for string funcs
2027- # if libbsd is not enabled, then this is blank
2028-- libraries_private: ['-Wl,--whole-archive'] +
2029-- dpdk_drivers + dpdk_static_libraries +
2030-- ['-Wl,--no-whole-archive'] + platform_flags
2031-+ libraries_private: dpdk_drivers + dpdk_static_libraries +
2032-+ ['-Wl,-Bdynamic'] + platform_flags
2033- )
2034--
2035--# For static linking with dependencies as shared libraries,
2036--# the internal static libraries must be flagged explicitly.
2037--run_command(py3, 'set-static-linker-flags.py', check: true)
2038-diff --git a/buildtools/pkg-config/set-static-linker-flags.py b/buildtools/pkg-config/set-static-linker-flags.py
2039-deleted file mode 100644
2040-index 2745db34c2..0000000000
2041---- a/buildtools/pkg-config/set-static-linker-flags.py
2042-+++ /dev/null
2043-@@ -1,38 +0,0 @@
2044--#!/usr/bin/env python3
2045--# SPDX-License-Identifier: BSD-3-Clause
2046--# Copyright(c) 2020 Intel Corporation
2047--
2048--# Script to fix flags for static linking in pkgconfig files from meson
2049--# Should be called from meson build itself
2050--import os
2051--import sys
2052--
2053--
2054--def fix_ldflag(f):
2055-- if not f.startswith('-lrte_'):
2056-- return f
2057-- return '-l:lib' + f[2:] + '.a'
2058--
2059--
2060--def fix_libs_private(line):
2061-- if not line.startswith('Libs.private'):
2062-- return line
2063-- ldflags = [fix_ldflag(flag) for flag in line.split()]
2064-- return ' '.join(ldflags) + '\n'
2065--
2066--
2067--def process_pc_file(filepath):
2068-- print('Processing', filepath)
2069-- with open(filepath) as src:
2070-- lines = src.readlines()
2071-- with open(filepath, 'w') as dst:
2072-- dst.writelines([fix_libs_private(line) for line in lines])
2073--
2074--
2075--if 'MESON_BUILD_ROOT' not in os.environ:
2076-- print('This script must be called from a meson build environment')
2077-- sys.exit(1)
2078--for root, dirs, files in os.walk(os.environ['MESON_BUILD_ROOT']):
2079-- pc_files = [f for f in files if f.endswith('.pc')]
2080-- for f in pc_files:
2081-- process_pc_file(os.path.join(root, f))
2082-diff --git a/doc/build-sdk-meson.txt b/doc/build-sdk-meson.txt
2083-index 8fb60a7c11..61c8e3515c 100644
2084---- a/doc/build-sdk-meson.txt
2085-+++ b/doc/build-sdk-meson.txt
2086-@@ -190,7 +190,7 @@ From examples/helloworld/Makefile::
2087- PC_FILE := $(shell pkg-config --path libdpdk)
2088- CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
2089- LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
2090-- LDFLAGS_STATIC = $(shell pkg-config --static --libs libdpdk)
2091-+ LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
2092-
2093- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2094- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2095-diff --git a/examples/bbdev_app/Makefile b/examples/bbdev_app/Makefile
2096-index 3c8eb75a4e..ead3f016b8 100644
2097---- a/examples/bbdev_app/Makefile
2098-+++ b/examples/bbdev_app/Makefile
2099-@@ -22,7 +22,7 @@ PKGCONF ?= pkg-config
2100- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2101- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2102- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2103--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2104-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2105-
2106- CFLAGS += -DALLOW_EXPERIMENTAL_API
2107-
2108-diff --git a/examples/bond/Makefile b/examples/bond/Makefile
2109-index 4e4289e151..2030ca410a 100644
2110---- a/examples/bond/Makefile
2111-+++ b/examples/bond/Makefile
2112-@@ -24,7 +24,7 @@ PKGCONF ?= pkg-config
2113- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2114- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2115- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2116--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2117-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2118-
2119- CFLAGS += -DALLOW_EXPERIMENTAL_API
2120-
2121-diff --git a/examples/cmdline/Makefile b/examples/cmdline/Makefile
2122-index 9418b50b87..0b6b54540a 100644
2123---- a/examples/cmdline/Makefile
2124-+++ b/examples/cmdline/Makefile
2125-@@ -22,7 +22,7 @@ PKGCONF ?= pkg-config
2126- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2127- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2128- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2129--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2130-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2131-
2132- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2133- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2134-diff --git a/examples/distributor/Makefile b/examples/distributor/Makefile
2135-index 5253780793a..4192d8a4ae 100644
2136---- a/examples/distributor/Makefile
2137-+++ b/examples/distributor/Makefile
2138-@@ -22,7 +22,7 @@ PKGCONF ?= pkg-config
2139- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2140- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2141- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2142--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2143-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2144-
2145- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2146- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2147-diff --git a/examples/eventdev_pipeline/Makefile b/examples/eventdev_pipeline/Makefile
2148-index 95a8d0884a..96cd244378 100644
2149---- a/examples/eventdev_pipeline/Makefile
2150-+++ b/examples/eventdev_pipeline/Makefile
2151-@@ -24,7 +24,7 @@ PKGCONF ?= pkg-config
2152- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2153- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2154- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2155--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2156-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2157-
2158- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2159- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2160-diff --git a/examples/fips_validation/Makefile b/examples/fips_validation/Makefile
2161-index 5bcf1872c4..e5ae22b521 100644
2162---- a/examples/fips_validation/Makefile
2163-+++ b/examples/fips_validation/Makefile
2164-@@ -31,7 +31,7 @@ PKGCONF ?= pkg-config
2165- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2166- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2167- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2168--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2169-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2170-
2171- CFLAGS += -DALLOW_EXPERIMENTAL_API
2172-
2173-diff --git a/examples/flow_classify/Makefile b/examples/flow_classify/Makefile
2174-index 161d576b60..6864941b3e 100644
2175---- a/examples/flow_classify/Makefile
2176-+++ b/examples/flow_classify/Makefile
2177-@@ -22,7 +22,7 @@ PKGCONF ?= pkg-config
2178- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2179- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2180- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2181--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2182-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2183-
2184- CFLAGS += -DALLOW_EXPERIMENTAL_API
2185-
2186-diff --git a/examples/flow_filtering/Makefile b/examples/flow_filtering/Makefile
2187-index 0ce20d3485..6c51c0b7a0 100644
2188---- a/examples/flow_filtering/Makefile
2189-+++ b/examples/flow_filtering/Makefile
2190-@@ -20,7 +20,7 @@ PKGCONF ?= pkg-config
2191- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2192- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2193- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2194--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2195-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2196-
2197- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2198- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2199-diff --git a/examples/helloworld/Makefile b/examples/helloworld/Makefile
2200-index 9a07f89efc..16d82b02f0 100644
2201---- a/examples/helloworld/Makefile
2202-+++ b/examples/helloworld/Makefile
2203-@@ -22,7 +22,7 @@ PKGCONF ?= pkg-config
2204- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2205- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2206- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2207--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2208-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2209-
2210- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2211- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2212-diff --git a/examples/ioat/Makefile b/examples/ioat/Makefile
2213-index dd4930136e..ef63f5d689 100644
2214---- a/examples/ioat/Makefile
2215-+++ b/examples/ioat/Makefile
2216-@@ -22,7 +22,7 @@ PKGCONF ?= pkg-config
2217- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2218- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2219- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2220--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2221-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2222-
2223- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2224- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2225-diff --git a/examples/ip_fragmentation/Makefile b/examples/ip_fragmentation/Makefile
2226-index d200cc627d..ede0c4f02b 100644
2227---- a/examples/ip_fragmentation/Makefile
2228-+++ b/examples/ip_fragmentation/Makefile
2229-@@ -23,7 +23,7 @@ PKGCONF ?= pkg-config
2230- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2231- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2232- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2233--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2234-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2235-
2236- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2237- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2238-diff --git a/examples/ip_pipeline/Makefile b/examples/ip_pipeline/Makefile
2239-index b8e086267b..1e404ff5d0 100644
2240---- a/examples/ip_pipeline/Makefile
2241-+++ b/examples/ip_pipeline/Makefile
2242-@@ -35,7 +35,7 @@ PKGCONF ?= pkg-config
2243- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2244- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2245- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2246--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2247-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2248-
2249- CFLAGS += -I. -DALLOW_EXPERIMENTAL_API -D_GNU_SOURCE
2250-
2251-diff --git a/examples/ip_reassembly/Makefile b/examples/ip_reassembly/Makefile
2252-index c7424da2b7..3f2888b338 100644
2253---- a/examples/ip_reassembly/Makefile
2254-+++ b/examples/ip_reassembly/Makefile
2255-@@ -23,7 +23,7 @@ PKGCONF ?= pkg-config
2256- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2257- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2258- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2259--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2260-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2261-
2262- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2263- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2264-diff --git a/examples/ipsec-secgw/Makefile b/examples/ipsec-secgw/Makefile
2265-index 38c456daa2..a4977f61f8 100644
2266---- a/examples/ipsec-secgw/Makefile
2267-+++ b/examples/ipsec-secgw/Makefile
2268-@@ -33,7 +33,7 @@ PKGCONF ?= pkg-config
2269- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2270- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2271- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2272--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2273-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2274-
2275- CFLAGS += -DALLOW_EXPERIMENTAL_API
2276-
2277-diff --git a/examples/ipv4_multicast/Makefile b/examples/ipv4_multicast/Makefile
2278-index 5e34bbba00..92d3db0f4d 100644
2279---- a/examples/ipv4_multicast/Makefile
2280-+++ b/examples/ipv4_multicast/Makefile
2281-@@ -23,7 +23,7 @@ PKGCONF ?= pkg-config
2282- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2283- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2284- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2285--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2286-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2287-
2288- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2289- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2290-diff --git a/examples/kni/Makefile b/examples/kni/Makefile
2291-index 10b42891da..f687765510 100644
2292---- a/examples/kni/Makefile
2293-+++ b/examples/kni/Makefile
2294-@@ -23,7 +23,7 @@ PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2295- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2296- CFLAGS += -DALLOW_EXPERIMENTAL_API
2297- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2298--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2299-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2300-
2301- LDFLAGS += -pthread
2302-
2303-diff --git a/examples/l2fwd-cat/Makefile b/examples/l2fwd-cat/Makefile
2304-index e8fdc46d74..b0e53c37e8 100644
2305---- a/examples/l2fwd-cat/Makefile
2306-+++ b/examples/l2fwd-cat/Makefile
2307-@@ -22,7 +22,7 @@ PKGCONF ?= pkg-config
2308- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2309- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2310- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2311--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2312-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2313-
2314- LDFLAGS += -lpqos
2315-
2316-diff --git a/examples/l2fwd-crypto/Makefile b/examples/l2fwd-crypto/Makefile
2317-index cafe778fc6..7c170cfb53 100644
2318---- a/examples/l2fwd-crypto/Makefile
2319-+++ b/examples/l2fwd-crypto/Makefile
2320-@@ -22,7 +22,7 @@ PKGCONF ?= pkg-config
2321- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2322- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2323- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2324--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2325-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2326-
2327- CFLAGS += -DALLOW_EXPERIMENTAL_API
2328- CONFIG_DEFINES = $(shell $(CC) $(CFLAGS) -dM -E - < /dev/null)
2329-diff --git a/examples/l2fwd-event/Makefile b/examples/l2fwd-event/Makefile
2330-index bf0ee890d5..4cdae36f17 100644
2331---- a/examples/l2fwd-event/Makefile
2332-+++ b/examples/l2fwd-event/Makefile
2333-@@ -28,7 +28,7 @@ PKGCONF ?= pkg-config
2334- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2335- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2336- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2337--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2338-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2339-
2340- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2341- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2342-diff --git a/examples/l2fwd-jobstats/Makefile b/examples/l2fwd-jobstats/Makefile
2343-index c26803909f..73c91faa8d 100644
2344---- a/examples/l2fwd-jobstats/Makefile
2345-+++ b/examples/l2fwd-jobstats/Makefile
2346-@@ -22,7 +22,7 @@ PKGCONF ?= pkg-config
2347- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2348- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2349- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2350--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2351-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2352-
2353- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2354- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2355-diff --git a/examples/l2fwd-keepalive/Makefile b/examples/l2fwd-keepalive/Makefile
2356-index ea3a9cbbf3..94d1e58bb5 100644
2357---- a/examples/l2fwd-keepalive/Makefile
2358-+++ b/examples/l2fwd-keepalive/Makefile
2359-@@ -24,7 +24,7 @@ PKGCONF ?= pkg-config
2360- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2361- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2362- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2363--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2364-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2365-
2366- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2367- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2368-diff --git a/examples/l2fwd/Makefile b/examples/l2fwd/Makefile
2369-index 15105ac57e..8b7b26cb90 100644
2370---- a/examples/l2fwd/Makefile
2371-+++ b/examples/l2fwd/Makefile
2372-@@ -24,7 +24,7 @@ CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2373- # Add flag to allow experimental API as l2fwd uses rte_ethdev_set_ptype API
2374- CFLAGS += -DALLOW_EXPERIMENTAL_API
2375- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2376--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2377-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2378-
2379- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2380- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2381-diff --git a/examples/l3fwd-acl/Makefile b/examples/l3fwd-acl/Makefile
2382-index 156dc19606..d9909584b1 100644
2383---- a/examples/l3fwd-acl/Makefile
2384-+++ b/examples/l3fwd-acl/Makefile
2385-@@ -22,7 +22,7 @@ PKGCONF ?= pkg-config
2386- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2387- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2388- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2389--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2390-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2391-
2392- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2393- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2394-diff --git a/examples/l3fwd-power/Makefile b/examples/l3fwd-power/Makefile
2395-index 74441f98cf..729d49639b 100644
2396---- a/examples/l3fwd-power/Makefile
2397-+++ b/examples/l3fwd-power/Makefile
2398-@@ -22,7 +22,7 @@ PKGCONF ?= pkg-config
2399- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2400- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2401- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2402--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2403-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2404-
2405- CFLAGS += -DALLOW_EXPERIMENTAL_API
2406-
2407-diff --git a/examples/l3fwd/Makefile b/examples/l3fwd/Makefile
2408-index 38a370c2cf..b2dbf26075 100644
2409---- a/examples/l3fwd/Makefile
2410-+++ b/examples/l3fwd/Makefile
2411-@@ -22,7 +22,7 @@ PKGCONF ?= pkg-config
2412- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2413- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2414- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2415--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2416-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2417-
2418- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2419- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2420-diff --git a/examples/link_status_interrupt/Makefile b/examples/link_status_interrupt/Makefile
2421-index 879ee7384d..4f02a89013 100644
2422---- a/examples/link_status_interrupt/Makefile
2423-+++ b/examples/link_status_interrupt/Makefile
2424-@@ -22,7 +22,7 @@ PKGCONF ?= pkg-config
2425- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2426- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2427- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2428--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2429-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2430-
2431- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2432- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2433-diff --git a/examples/ntb/Makefile b/examples/ntb/Makefile
2434-index f41ccfac27..bdc0d6e80f 100644
2435---- a/examples/ntb/Makefile
2436-+++ b/examples/ntb/Makefile
2437-@@ -26,7 +26,7 @@ LDFLAGS += -pthread
2438- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2439- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2440- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2441--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2442-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2443-
2444- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2445- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2446-diff --git a/examples/packet_ordering/Makefile b/examples/packet_ordering/Makefile
2447-index 1e50389421..261b7f06a8 100644
2448---- a/examples/packet_ordering/Makefile
2449-+++ b/examples/packet_ordering/Makefile
2450-@@ -22,7 +22,7 @@ PKGCONF ?= pkg-config
2451- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2452- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2453- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2454--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2455-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2456-
2457- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2458- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2459-diff --git a/examples/ptpclient/Makefile b/examples/ptpclient/Makefile
2460-index 9e47a60117..82d72b3e31 100644
2461---- a/examples/ptpclient/Makefile
2462-+++ b/examples/ptpclient/Makefile
2463-@@ -22,7 +22,7 @@ PKGCONF ?= pkg-config
2464- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2465- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2466- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2467--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2468-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2469-
2470- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2471- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2472-diff --git a/examples/qos_meter/Makefile b/examples/qos_meter/Makefile
2473-index f733facaeb..7c2bf88a90 100644
2474---- a/examples/qos_meter/Makefile
2475-+++ b/examples/qos_meter/Makefile
2476-@@ -22,7 +22,7 @@ PKGCONF ?= pkg-config
2477- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2478- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2479- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2480--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2481-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2482-
2483- CFLAGS += -DALLOW_EXPERIMENTAL_API
2484-
2485-diff --git a/examples/qos_sched/Makefile b/examples/qos_sched/Makefile
2486-index 736ac00a36..525061ca07 100644
2487---- a/examples/qos_sched/Makefile
2488-+++ b/examples/qos_sched/Makefile
2489-@@ -22,7 +22,7 @@ PKGCONF ?= pkg-config
2490- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2491- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2492- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2493--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2494-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2495-
2496- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2497- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2498-diff --git a/examples/rxtx_callbacks/Makefile b/examples/rxtx_callbacks/Makefile
2499-index eecdcada3e..418f47c4d7 100644
2500---- a/examples/rxtx_callbacks/Makefile
2501-+++ b/examples/rxtx_callbacks/Makefile
2502-@@ -22,7 +22,7 @@ PKGCONF ?= pkg-config
2503- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2504- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2505- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2506--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2507-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2508-
2509- CFLAGS += -DALLOW_EXPERIMENTAL_API
2510-
2511-diff --git a/examples/service_cores/Makefile b/examples/service_cores/Makefile
2512-index b8669fdf7e..c47055813e 100644
2513---- a/examples/service_cores/Makefile
2514-+++ b/examples/service_cores/Makefile
2515-@@ -22,7 +22,7 @@ PKGCONF ?= pkg-config
2516- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2517- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2518- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2519--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2520-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2521-
2522- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2523- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2524-diff --git a/examples/skeleton/Makefile b/examples/skeleton/Makefile
2525-index 5059f3123f..2c29004d79 100644
2526---- a/examples/skeleton/Makefile
2527-+++ b/examples/skeleton/Makefile
2528-@@ -22,7 +22,7 @@ PKGCONF ?= pkg-config
2529- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2530- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2531- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2532--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2533-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2534-
2535- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2536- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2537-diff --git a/examples/tep_termination/Makefile b/examples/tep_termination/Makefile
2538-index 548ca3cee3..645112498d 100644
2539---- a/examples/tep_termination/Makefile
2540-+++ b/examples/tep_termination/Makefile
2541-@@ -24,7 +24,7 @@ PKGCONF ?= pkg-config
2542- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2543- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2544- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2545--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2546-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2547-
2548- CFLAGS += -Wno-deprecated-declarations
2549-
2550-diff --git a/examples/timer/Makefile b/examples/timer/Makefile
2551-index b34c8baa6b..bf86339ab7 100644
2552---- a/examples/timer/Makefile
2553-+++ b/examples/timer/Makefile
2554-@@ -22,7 +22,7 @@ PKGCONF ?= pkg-config
2555- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2556- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2557- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2558--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2559-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2560-
2561- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2562- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2563-diff --git a/examples/vdpa/Makefile b/examples/vdpa/Makefile
2564-index bc0b6793e6..6a25497cd8 100644
2565---- a/examples/vdpa/Makefile
2566-+++ b/examples/vdpa/Makefile
2567-@@ -23,7 +23,7 @@ PKGCONF ?= pkg-config
2568- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2569- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2570- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2571--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2572-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2573-
2574- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2575- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2576-diff --git a/examples/vhost/Makefile b/examples/vhost/Makefile
2577-index ef6f3550f3..f2b1615418 100644
2578---- a/examples/vhost/Makefile
2579-+++ b/examples/vhost/Makefile
2580-@@ -24,7 +24,7 @@ PKGCONF ?= pkg-config
2581- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2582- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2583- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2584--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2585-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2586-
2587- CFLAGS += -DALLOW_EXPERIMENTAL_API
2588-
2589-diff --git a/examples/vhost_blk/Makefile b/examples/vhost_blk/Makefile
2590-index 3952791784..39244320d8 100644
2591---- a/examples/vhost_blk/Makefile
2592-+++ b/examples/vhost_blk/Makefile
2593-@@ -25,7 +25,7 @@ LDFLAGS += -pthread
2594- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2595- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2596- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2597--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2598-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2599-
2600- CFLAGS += -DALLOW_EXPERIMENTAL_API
2601-
2602-diff --git a/examples/vhost_crypto/Makefile b/examples/vhost_crypto/Makefile
2603-index 28e3e4de74..ae8cb81f87 100644
2604---- a/examples/vhost_crypto/Makefile
2605-+++ b/examples/vhost_crypto/Makefile
2606-@@ -23,7 +23,7 @@ PKGCONF ?= pkg-config
2607- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2608- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2609- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2610--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2611-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2612-
2613- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2614- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2615-diff --git a/examples/vmdq/Makefile b/examples/vmdq/Makefile
2616-index 7e59e4d658..0767c715a1 100644
2617---- a/examples/vmdq/Makefile
2618-+++ b/examples/vmdq/Makefile
2619-@@ -22,7 +22,7 @@ PKGCONF ?= pkg-config
2620- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2621- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2622- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2623--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2624-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2625-
2626- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2627- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2628-diff --git a/examples/vmdq_dcb/Makefile b/examples/vmdq_dcb/Makefile
2629-index 2302577d00..2a9b04143f 100644
2630---- a/examples/vmdq_dcb/Makefile
2631-+++ b/examples/vmdq_dcb/Makefile
2632-@@ -22,7 +22,7 @@ PKGCONF ?= pkg-config
2633- PC_FILE := $(shell $(PKGCONF) --path libdpdk 2>/dev/null)
2634- CFLAGS += -O3 $(shell $(PKGCONF) --cflags libdpdk)
2635- LDFLAGS_SHARED = $(shell $(PKGCONF) --libs libdpdk)
2636--LDFLAGS_STATIC = $(shell $(PKGCONF) --static --libs libdpdk)
2637-+LDFLAGS_STATIC = -Wl,-Bstatic $(shell $(PKGCONF) --static --libs libdpdk)
2638-
2639- build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
2640- $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
2641---
2642-2.30.0
2643-
2644diff --git a/debian/patches/lp-1920141-03-Revert-Revert-Revert-build-pkg-config-output-drivers.patch b/debian/patches/lp-1920141-03-Revert-Revert-Revert-build-pkg-config-output-drivers.patch
2645deleted file mode 100644
2646index 93b582d..0000000
2647--- a/debian/patches/lp-1920141-03-Revert-Revert-Revert-build-pkg-config-output-drivers.patch
2648+++ /dev/null
2649@@ -1,74 +0,0 @@
2650-From d4b956825f34022474bf98cbfde999e87ba940b5 Mon Sep 17 00:00:00 2001
2651-From: Christian Ehrhardt <christian.ehrhardt@canonical.com>
2652-Date: Mon, 22 Mar 2021 11:19:54 +0100
2653-Subject: [PATCH 3/7] Revert "Revert "Revert "build/pkg-config: output drivers
2654- first for static build"""
2655-
2656-This reverts commit 906e935a1fd1f6cf01ff12d70c2f040aa91984c6.
2657-This series changes linking behavior in 19.11.x and thereby should stay
2658-out. It breaks - for example - a rebuild of OVS 2.13 or builds
2659-of later OVS 2.13.x stable releases.
2660-
2661-Reverting this drops the two following 19.11.7 changes which need to be
2662-re-created in the new (old) place of meson.build
2663-
2664-Bug-Ubuntu: https://bugs.launchpad.net/bugs/1920141
2665-Forwarded: http://mails.dpdk.org/archives/stable/2021-March/029484.html
2666-Last-Update: 2021-03-22
2667----
2668- buildtools/pkg-config/meson.build | 36 ++++---------------------------
2669- 1 file changed, 4 insertions(+), 32 deletions(-)
2670-
2671-diff --git a/buildtools/pkg-config/meson.build b/buildtools/pkg-config/meson.build
2672-index ccb34dcab3..c93711b5e8 100644
2673---- a/buildtools/pkg-config/meson.build
2674-+++ b/buildtools/pkg-config/meson.build
2675-@@ -10,41 +10,13 @@ pkg_extra_cflags = ['-include', 'rte_config.h'] + machine_args
2676- if is_freebsd
2677- pkg_extra_cflags += ['-D__BSD_VISIBLE']
2678- endif
2679--
2680--# When calling pkg-config --static --libs, pkg-config will always output the
2681--# regular libs first, and then the extra libs from Libs.private field,
2682--# since the assumption is that those are additional dependencies for building
2683--# statically that the .a files depend upon. The output order of .pc fields is:
2684--# Libs Libs.private Requires Requires.private
2685--# The fields Requires* are for package names.
2686--# The flags of the DPDK libraries must be defined in Libs* fields.
2687--# However, the DPDK drivers are linked only in static builds (Libs.private),
2688--# and those need to come *before* the regular libraries (Libs field).
2689--# This requirement is satisfied by moving the regular libs in a separate file
2690--# included in the field Requires (after Libs.private).
2691--
2692--pkg.generate(name: 'dpdk-libs',
2693-- filebase: 'libdpdk-libs',
2694-- description: '''Internal-only DPDK pkgconfig file. Not for direct use.
2695--Use libdpdk.pc instead of this file to query DPDK compile/link arguments''',
2696-+pkg.generate(name: meson.project_name(),
2697-+ filebase: 'lib' + meson.project_name().to_lower(),
2698- version: meson.project_version(),
2699-- subdirs: [get_option('include_subdir_arch'), '.'],
2700-- extra_cflags: pkg_extra_cflags,
2701- libraries: dpdk_libraries,
2702-- libraries_private: dpdk_extra_ldflags)
2703--
2704--platform_flags = []
2705--if not is_windows
2706-- platform_flags += ['-Wl,--export-dynamic'] # ELF only
2707--endif
2708--pkg.generate(name: 'DPDK', # main DPDK pkgconfig file
2709-- filebase: 'libdpdk',
2710-- version: meson.project_version(),
2711- description: '''The Data Plane Development Kit (DPDK).
2712- Note that CFLAGS might contain an -march flag higher than typical baseline.
2713- This is required for a number of static inline functions in the public headers.''',
2714-- requires: ['libdpdk-libs', libbsd], # may need libbsd for string funcs
2715-- # if libbsd is not enabled, then this is blank
2716-- libraries_private: dpdk_drivers + dpdk_static_libraries +
2717-- ['-Wl,-Bdynamic'] + platform_flags
2718-+ subdirs: [get_option('include_subdir_arch'), '.'],
2719-+ extra_cflags: pkg_extra_cflag
2720- )
2721---
2722-2.30.0
2723-
2724diff --git a/debian/patches/lp-1920141-04-Revert-Revert-Revert-build-pkg-config-move-pkg-confi.patch b/debian/patches/lp-1920141-04-Revert-Revert-Revert-build-pkg-config-move-pkg-confi.patch
2725deleted file mode 100644
2726index d79fc04..0000000
2727--- a/debian/patches/lp-1920141-04-Revert-Revert-Revert-build-pkg-config-move-pkg-confi.patch
2728+++ /dev/null
2729@@ -1,101 +0,0 @@
2730-From 9171fe0b7f859c082ca648d2a84af7490dc4f93a Mon Sep 17 00:00:00 2001
2731-From: Christian Ehrhardt <christian.ehrhardt@canonical.com>
2732-Date: Mon, 22 Mar 2021 11:22:04 +0100
2733-Subject: [PATCH 4/7] Revert "Revert "Revert "build/pkg-config: move pkg-config
2734- file creation"""
2735-
2736-This reverts commit deebf952394cef1d14912f3dc2fc5121431c16a5.
2737-This series changes linking behavior in 19.11.x and thereby should stay
2738-out. It breaks - for example - a rebuild of OVS 2.13 or builds
2739-of later OVS 2.13.x stable releases.
2740-
2741-Bug-Ubuntu: https://bugs.launchpad.net/bugs/1920141
2742-Forwarded: http://mails.dpdk.org/archives/stable/2021-March/029484.html
2743-Last-Update: 2021-03-22
2744----
2745- MAINTAINERS | 2 --
2746- buildtools/pkg-config/meson.build | 22 ----------------------
2747- meson.build | 25 +++++++++++++++++++++++--
2748- 3 files changed, 23 insertions(+), 26 deletions(-)
2749- delete mode 100644 buildtools/pkg-config/meson.build
2750-
2751-diff --git a/MAINTAINERS b/MAINTAINERS
2752-index 952ded7b00..75431e333b 100644
2753---- a/MAINTAINERS
2754-+++ b/MAINTAINERS
2755-@@ -131,8 +131,6 @@ F: config/rte_config.h
2756- F: buildtools/call-sphinx-build.py
2757- F: buildtools/gen-pmdinfo-cfile.sh
2758- F: buildtools/map_to_def.py
2759--F: buildtools/list-dir-globs.py
2760--F: buildtools/pkg-config/
2761- F: buildtools/symlink-drivers-solibs.sh
2762-
2763- Public CI
2764-diff --git a/buildtools/pkg-config/meson.build b/buildtools/pkg-config/meson.build
2765-deleted file mode 100644
2766-index c93711b5e8..0000000000
2767---- a/buildtools/pkg-config/meson.build
2768-+++ /dev/null
2769-@@ -1,22 +0,0 @@
2770--# SPDX-License-Identifier: BSD-3-Clause
2771--# Copyright(c) 2020 Intel Corporation
2772--
2773--# for static builds, include the drivers as libs and we need to "whole-archive"
2774--# them.
2775--dpdk_drivers = ['-Wl,--whole-archive'] + dpdk_drivers + ['-Wl,--no-whole-archive']
2776--
2777--pkg = import('pkgconfig')
2778--pkg_extra_cflags = ['-include', 'rte_config.h'] + machine_args
2779--if is_freebsd
2780-- pkg_extra_cflags += ['-D__BSD_VISIBLE']
2781--endif
2782--pkg.generate(name: meson.project_name(),
2783-- filebase: 'lib' + meson.project_name().to_lower(),
2784-- version: meson.project_version(),
2785-- libraries: dpdk_libraries,
2786-- description: '''The Data Plane Development Kit (DPDK).
2787--Note that CFLAGS might contain an -march flag higher than typical baseline.
2788--This is required for a number of static inline functions in the public headers.''',
2789-- subdirs: [get_option('include_subdir_arch'), '.'],
2790-- extra_cflags: pkg_extra_cflag
2791--)
2792-diff --git a/meson.build b/meson.build
2793-index 00949de995..58995252bd 100644
2794---- a/meson.build
2795-+++ b/meson.build
2796-@@ -64,8 +64,29 @@ configure_file(output: build_cfg,
2797- install_dir: join_paths(get_option('includedir'),
2798- get_option('include_subdir_arch')))
2799-
2800--# build pkg-config files for dpdk
2801--subdir('buildtools/pkg-config')
2802-+# for static builds, include the drivers as libs and we need to "whole-archive"
2803-+# them.
2804-+dpdk_drivers = ['-Wl,--whole-archive'] + dpdk_drivers + ['-Wl,--no-whole-archive']
2805-+
2806-+pkg = import('pkgconfig')
2807-+pkg_extra_cflags = ['-include', 'rte_config.h'] + machine_args
2808-+if is_freebsd
2809-+ pkg_extra_cflags += ['-D__BSD_VISIBLE']
2810-+endif
2811-+pkg.generate(name: meson.project_name(),
2812-+ filebase: 'lib' + meson.project_name().to_lower(),
2813-+ version: meson.project_version(),
2814-+ libraries: dpdk_libraries,
2815-+ libraries_private: dpdk_drivers + dpdk_static_libraries +
2816-+ ['-Wl,-Bdynamic'] + dpdk_extra_ldflags,
2817-+ requires: libbsd, # apps using rte_string_fns.h may need this if enabled
2818-+ # if libbsd is not enabled, then this is blank
2819-+ description: '''The Data Plane Development Kit (DPDK).
2820-+Note that CFLAGS might contain an -march flag higher than typical baseline.
2821-+This is required for a number of static inline functions in the public headers.''',
2822-+ subdirs: [get_option('include_subdir_arch'), '.'],
2823-+ extra_cflags: pkg_extra_cflags
2824-+)
2825-
2826- # final output, list all the libs and drivers to be built
2827- # this does not affect any part of the build, for information only.
2828---
2829-2.30.0
2830-
2831diff --git a/debian/patches/lp-1920141-05-Revert-Revert-Revert-build-always-link-whole-DPDK-st.patch b/debian/patches/lp-1920141-05-Revert-Revert-Revert-build-always-link-whole-DPDK-st.patch
2832deleted file mode 100644
2833index d250888..0000000
2834--- a/debian/patches/lp-1920141-05-Revert-Revert-Revert-build-always-link-whole-DPDK-st.patch
2835+++ /dev/null
2836@@ -1,88 +0,0 @@
2837-From 4fad50ad66b511904ae3729a115e14db4bf2d94e Mon Sep 17 00:00:00 2001
2838-From: Christian Ehrhardt <christian.ehrhardt@canonical.com>
2839-Date: Mon, 22 Mar 2021 11:25:54 +0100
2840-Subject: [PATCH 5/7] Revert "Revert "Revert "build: always link whole DPDK
2841- static libraries"""
2842-
2843-This reverts commit a3bd9a34bf9988de641b6e78b825fafb69d2d13f.
2844-This series changes linking behavior in 19.11.x and thereby should stay
2845-out. It breaks - for example - a rebuild of OVS 2.13 or builds
2846-of later OVS 2.13.x stable releases.
2847-
2848-Bug-Ubuntu: https://bugs.launchpad.net/bugs/1920141
2849-Forwarded: http://mails.dpdk.org/archives/stable/2021-March/029484.html
2850-Last-Update: 2021-03-22
2851----
2852- app/test/meson.build | 2 +-
2853- drivers/meson.build | 2 +-
2854- examples/meson.build | 6 +++---
2855- lib/meson.build | 2 +-
2856- 4 files changed, 6 insertions(+), 6 deletions(-)
2857-
2858-diff --git a/app/test/meson.build b/app/test/meson.build
2859-index 24fb59f74f..860728bb07 100644
2860---- a/app/test/meson.build
2861-+++ b/app/test/meson.build
2862-@@ -391,7 +391,7 @@ test_dep_objs += cc.find_library('execinfo', required: false)
2863-
2864- link_libs = []
2865- if get_option('default_library') == 'static'
2866-- link_libs = dpdk_static_libraries + dpdk_drivers
2867-+ link_libs = dpdk_drivers
2868- endif
2869-
2870- dpdk_test = executable('dpdk-test',
2871-diff --git a/drivers/meson.build b/drivers/meson.build
2872-index 696079680b..0400d84675 100644
2873---- a/drivers/meson.build
2874-+++ b/drivers/meson.build
2875-@@ -198,7 +198,7 @@ foreach class:dpdk_driver_classes
2876- shared_dep = declare_dependency(link_with: shared_lib,
2877- include_directories: includes,
2878- dependencies: shared_deps)
2879-- static_dep = declare_dependency(
2880-+ static_dep = declare_dependency(link_with: static_lib,
2881- include_directories: includes,
2882- dependencies: static_deps)
2883-
2884-diff --git a/examples/meson.build b/examples/meson.build
2885-index 9e081f3fb7..4dc292fbd1 100644
2886---- a/examples/meson.build
2887-+++ b/examples/meson.build
2888-@@ -1,9 +1,9 @@
2889- # SPDX-License-Identifier: BSD-3-Clause
2890- # Copyright(c) 2017-2019 Intel Corporation
2891-
2892--link_whole_libs = []
2893-+driver_libs = []
2894- if get_option('default_library') == 'static'
2895-- link_whole_libs = dpdk_static_libraries + dpdk_drivers
2896-+ driver_libs = dpdk_drivers
2897- endif
2898-
2899- execinfo = cc.find_library('execinfo', required: false)
2900-@@ -97,7 +97,7 @@ foreach example: examples
2901- endif
2902- executable('dpdk-' + name, sources,
2903- include_directories: includes,
2904-- link_whole: link_whole_libs,
2905-+ link_whole: driver_libs,
2906- link_args: ldflags,
2907- c_args: cflags,
2908- dependencies: dep_objs)
2909-diff --git a/lib/meson.build b/lib/meson.build
2910-index b60396428c..f8da4f3168 100644
2911---- a/lib/meson.build
2912-+++ b/lib/meson.build
2913-@@ -127,7 +127,7 @@ foreach l:libraries
2914- dependencies: static_deps,
2915- include_directories: includes,
2916- install: true)
2917-- static_dep = declare_dependency(
2918-+ static_dep = declare_dependency(link_with: static_lib,
2919- include_directories: includes,
2920- dependencies: static_deps)
2921-
2922---
2923-2.30.0
2924-
2925diff --git a/debian/patches/lp-1920141-06-Revert-Revert-Revert-devtools-test-static-linkage-wi.patch b/debian/patches/lp-1920141-06-Revert-Revert-Revert-devtools-test-static-linkage-wi.patch
2926deleted file mode 100644
2927index a040740..0000000
2928--- a/debian/patches/lp-1920141-06-Revert-Revert-Revert-devtools-test-static-linkage-wi.patch
2929+++ /dev/null
2930@@ -1,33 +0,0 @@
2931-From b6473c5a0b7f8fa314d4fd47d6c0931da8c8d083 Mon Sep 17 00:00:00 2001
2932-From: Christian Ehrhardt <christian.ehrhardt@canonical.com>
2933-Date: Mon, 22 Mar 2021 11:26:09 +0100
2934-Subject: [PATCH 6/7] Revert "Revert "Revert "devtools: test static linkage
2935- with pkg-config"""
2936-
2937-This reverts commit d4bc12443836ccb8a5032b34f1d412b33a1d2384.
2938-This series changes linking behavior in 19.11.x and thereby should stay
2939-out. It breaks - for example - a rebuild of OVS 2.13 or builds
2940-of later OVS 2.13.x stable releases.
2941-
2942-Bug-Ubuntu: https://bugs.launchpad.net/bugs/1920141
2943-Forwarded: http://mails.dpdk.org/archives/stable/2021-March/029484.html
2944-Last-Update: 2021-03-22
2945----
2946- devtools/test-meson-builds.sh | 2 +-
2947- 1 file changed, 1 insertion(+), 1 deletion(-)
2948-
2949-diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
2950-index 8678a3d824..47fdb9dfb5 100755
2951---- a/devtools/test-meson-builds.sh
2952-+++ b/devtools/test-meson-builds.sh
2953-@@ -146,6 +146,6 @@ if pkg-config --define-prefix libdpdk >/dev/null 2>&1; then
2954- export PKGCONF="pkg-config --define-prefix"
2955- for example in cmdline helloworld l2fwd l3fwd skeleton timer; do
2956- echo "## Building $example"
2957-- $MAKE -C $DESTDIR/usr/local/share/dpdk/examples/$example clean shared static
2958-+ $MAKE -C $DESTDIR/usr/local/share/dpdk/examples/$example clean all
2959- done
2960- fi
2961---
2962-2.30.0
2963-
2964diff --git a/debian/patches/lp-1920141-07-Regenerate-meson.build-changes-required-due-to-rever.patch b/debian/patches/lp-1920141-07-Regenerate-meson.build-changes-required-due-to-rever.patch
2965deleted file mode 100644
2966index e4649f7..0000000
2967--- a/debian/patches/lp-1920141-07-Regenerate-meson.build-changes-required-due-to-rever.patch
2968+++ /dev/null
2969@@ -1,50 +0,0 @@
2970-From 2604819f25ff15066d5c67bc4ae340183cd4eef1 Mon Sep 17 00:00:00 2001
2971-From: Christian Ehrhardt <christian.ehrhardt@canonical.com>
2972-Date: Mon, 22 Mar 2021 11:29:01 +0100
2973-Subject: [PATCH 7/7] Regenerate meson.build changes required due to reverts
2974-
2975-Due to a series of re-re-reverts by this case:
2976-http://mails.dpdk.org/archives/stable/2021-March/029418.html
2977-http://mails.dpdk.org/archives/stable/2020-September/024796.html
2978-The two changes of:
2979- 3f33f5056 build: fix plugin load on static build
2980- 4a2baf099 build: fix linker flags on Windows
2981-would have been lost.
2982-Re-apply them here to have the reverts only remove what was added by them.
2983-
2984-Fixes: 16ade738fd0d ("app/testpmd: build with meson")
2985-Fixes: 89f0711f9ddf ("examples: build some samples with meson")
2986-Fixes: b031e13d7f0d ("build: fix plugin load on static build")
2987-
2988-Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
2989-
2990-Bug-Ubuntu: https://bugs.launchpad.net/bugs/1920141
2991-Forwarded: http://mails.dpdk.org/archives/stable/2021-March/029484.html
2992-Last-Update: 2021-03-22
2993----
2994- meson.build | 7 ++++++-
2995- 1 file changed, 6 insertions(+), 1 deletion(-)
2996-
2997-diff --git a/meson.build b/meson.build
2998-index 58995252bd..01bbb556ec 100644
2999---- a/meson.build
3000-+++ b/meson.build
3001-@@ -64,9 +64,14 @@ configure_file(output: build_cfg,
3002- install_dir: join_paths(get_option('includedir'),
3003- get_option('include_subdir_arch')))
3004-
3005-+platform_flags = []
3006-+if not is_windows
3007-+ platform_flags += ['-Wl,--export-dynamic'] # ELF only
3008-+endif
3009-+
3010- # for static builds, include the drivers as libs and we need to "whole-archive"
3011- # them.
3012--dpdk_drivers = ['-Wl,--whole-archive'] + dpdk_drivers + ['-Wl,--no-whole-archive']
3013-+dpdk_drivers = ['-Wl,--whole-archive'] + dpdk_drivers + ['-Wl,--no-whole-archive'] + platform_flags
3014-
3015- pkg = import('pkgconfig')
3016- pkg_extra_cflags = ['-include', 'rte_config.h'] + machine_args
3017---
3018-2.30.0
3019-
3020diff --git a/debian/patches/series b/debian/patches/series
3021index eac907e..24934be 100644
3022--- a/debian/patches/series
3023+++ b/debian/patches/series
3024@@ -1,8 +1,2 @@
3025 revert-net-ipn3ke-fix-meson-build.patch
3026-lp-1920141-01-Revert-Revert-Revert-build-pkg-config-prevent-overli.patch
3027-lp-1920141-02-Revert-Revert-Revert-build-pkg-config-improve-static.patch
3028-lp-1920141-03-Revert-Revert-Revert-build-pkg-config-output-drivers.patch
3029-lp-1920141-04-Revert-Revert-Revert-build-pkg-config-move-pkg-confi.patch
3030-lp-1920141-05-Revert-Revert-Revert-build-always-link-whole-DPDK-st.patch
3031-lp-1920141-06-Revert-Revert-Revert-devtools-test-static-linkage-wi.patch
3032-lp-1920141-07-Regenerate-meson.build-changes-required-due-to-rever.patch
3033+ubuntu/lp-1940957-net-i40e-support-25G-AOC-ACC-cables.patch
3034diff --git a/debian/patches/ubuntu/lp-1940957-net-i40e-support-25G-AOC-ACC-cables.patch b/debian/patches/ubuntu/lp-1940957-net-i40e-support-25G-AOC-ACC-cables.patch
3035new file mode 100644
3036index 0000000..8606792
3037--- /dev/null
3038+++ b/debian/patches/ubuntu/lp-1940957-net-i40e-support-25G-AOC-ACC-cables.patch
3039@@ -0,0 +1,42 @@
3040+From f81d60e607bb8c13fcb13450e85d74721f1d9c8f Mon Sep 17 00:00:00 2001
3041+From: Yury Kylulin <yury.kylulin@intel.com>
3042+Date: Tue, 13 Apr 2021 18:29:50 +0300
3043+Subject: [PATCH] net/i40e: support 25G AOC/ACC cables
3044+
3045+[ upstream commit b1daa3461429e7674206a714c17adca65e9b44b4 ]
3046+
3047+Enable additional PHY types (25G-AOC and 25G-ACC) for set PHY config
3048+command.
3049+
3050+Ubuntu bug: https://bugs.launchpad.net/ubuntu/+source/dpdk/+bug/1940957
3051+Cc: stable@dpdk.org
3052+
3053+Signed-off-by: Yury Kylulin <yury.kylulin@intel.com>
3054+Tested-by: Ashish Paul <apaul@juniper.net>
3055+Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
3056+
3057+Origin: upstream, https://github.com/cpaelzer/dpdk-stable-queue/commit/f81d60e607bb8c13fcb13450e85d74721f1d9c8f
3058+Bug-Ubuntu: https://bugs.launchpad.net/bugs/1940957
3059+Last-Update: 2021-09-06
3060+
3061+---
3062+ drivers/net/i40e/i40e_ethdev.c | 3 ++-
3063+ 1 file changed, 2 insertions(+), 1 deletion(-)
3064+
3065+diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
3066+index 508f90595f..0c896ea915 100644
3067+--- a/drivers/net/i40e/i40e_ethdev.c
3068++++ b/drivers/net/i40e/i40e_ethdev.c
3069+@@ -2264,7 +2264,8 @@ i40e_phy_conf_link(struct i40e_hw *hw,
3070+ phy_conf.phy_type = is_up ? cpu_to_le32(phy_type_mask) : 0;
3071+ phy_conf.phy_type_ext = is_up ? (I40E_AQ_PHY_TYPE_EXT_25G_KR |
3072+ I40E_AQ_PHY_TYPE_EXT_25G_CR | I40E_AQ_PHY_TYPE_EXT_25G_SR |
3073+- I40E_AQ_PHY_TYPE_EXT_25G_LR) : 0;
3074++ I40E_AQ_PHY_TYPE_EXT_25G_LR | I40E_AQ_PHY_TYPE_EXT_25G_AOC |
3075++ I40E_AQ_PHY_TYPE_EXT_25G_ACC) : 0;
3076+ phy_conf.fec_config = phy_ab.fec_cfg_curr_mod_ext_info;
3077+ phy_conf.eee_capability = phy_ab.eee_capability;
3078+ phy_conf.eeer = phy_ab.eeer_val;
3079+--
3080+2.32.0
3081+
3082diff --git a/devtools/check-maintainers.sh b/devtools/check-maintainers.sh
3083index 85a300f..49d38fb 100755
3084--- a/devtools/check-maintainers.sh
3085+++ b/devtools/check-maintainers.sh
3086@@ -15,10 +15,10 @@ files () # <path> [<path> ...]
3087 if [ -z "$1" ] ; then
3088 return
3089 fi
3090- if [ -d .git ] ; then
3091+ if [ -r .git ] ; then
3092 git ls-files "$1"
3093 else
3094- find "$1" -type f |
3095+ find $1 -type f |
3096 sed 's,^\./,,'
3097 fi |
3098 # if not ended by /
3099diff --git a/devtools/test-meson-builds.sh b/devtools/test-meson-builds.sh
3100index 8678a3d..47fdb9d 100755
3101--- a/devtools/test-meson-builds.sh
3102+++ b/devtools/test-meson-builds.sh
3103@@ -146,6 +146,6 @@ if pkg-config --define-prefix libdpdk >/dev/null 2>&1; then
3104 export PKGCONF="pkg-config --define-prefix"
3105 for example in cmdline helloworld l2fwd l3fwd skeleton timer; do
3106 echo "## Building $example"
3107- $MAKE -C $DESTDIR/usr/local/share/dpdk/examples/$example clean shared static
3108+ $MAKE -C $DESTDIR/usr/local/share/dpdk/examples/$example clean all
3109 done
3110 fi
3111diff --git a/doc/build-sdk-meson.txt b/doc/build-sdk-meson.txt
3112index 8fb60a7..61c8e35 100644
3113--- a/doc/build-sdk-meson.txt
3114+++ b/doc/build-sdk-meson.txt
3115@@ -190,7 +190,7 @@ From examples/helloworld/Makefile::
3116 PC_FILE := $(shell pkg-config --path libdpdk)
3117 CFLAGS += -O3 $(shell pkg-config --cflags libdpdk)
3118 LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk)
3119- LDFLAGS_STATIC = $(shell pkg-config --static --libs libdpdk)
3120+ LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk)
3121
3122 build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build
3123 $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED)
3124diff --git a/doc/guides/bbdevs/fpga_lte_fec.rst b/doc/guides/bbdevs/fpga_lte_fec.rst
3125index 206b6f4..8509de9 100644
3126--- a/doc/guides/bbdevs/fpga_lte_fec.rst
3127+++ b/doc/guides/bbdevs/fpga_lte_fec.rst
3128@@ -50,7 +50,7 @@ FPGA LTE FEC does not support the following:
3129 Installation
3130 --------------
3131
3132-Section 3 of the DPDK manual provides instuctions on installing and compiling DPDK. The
3133+Section 3 of the DPDK manual provides instructions on installing and compiling DPDK. The
3134 default set of bbdev compile flags may be found in config/common_base, where for example
3135 the flag to build the FPGA LTE FEC device, ``CONFIG_RTE_LIBRTE_PMD_BBDEV_FPGA_LTE_FEC``, is already
3136 set. It is assumed DPDK has been compiled using for instance:
3137diff --git a/doc/guides/conf.py b/doc/guides/conf.py
3138index c1a82be..279b830 100644
3139--- a/doc/guides/conf.py
3140+++ b/doc/guides/conf.py
3141@@ -25,7 +25,6 @@ try:
3142 import sphinx_rtd_theme
3143
3144 html_theme = "sphinx_rtd_theme"
3145- html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
3146 except:
3147 print('Install the sphinx ReadTheDocs theme for improved html documentation '
3148 'layout: pip install sphinx_rtd_theme')
3149@@ -34,7 +33,10 @@ except:
3150 project = 'Data Plane Development Kit'
3151 html_logo = '../logo/DPDK_logo_vertical_rev_small.png'
3152 latex_logo = '../logo/DPDK_logo_horizontal_tag.png'
3153-html_add_permalinks = ""
3154+if LooseVersion(sphinx_version) >= LooseVersion('3.5'):
3155+ html_permalinks = False
3156+else:
3157+ html_add_permalinks = ""
3158 html_show_copyright = False
3159 highlight_language = 'none'
3160
3161diff --git a/doc/guides/contributing/stable.rst b/doc/guides/contributing/stable.rst
3162index 021c762..40f4280 100644
3163--- a/doc/guides/contributing/stable.rst
3164+++ b/doc/guides/contributing/stable.rst
3165@@ -95,7 +95,7 @@ Features should not be backported to stable releases. It may be acceptable, in
3166 limited cases, to back port features for the LTS release where:
3167
3168 * There is a justifiable use case (for example a new PMD).
3169-* The change is non-invasive.
3170+* The change is noninvasive.
3171 * The work of preparing the backport is done by the proposer.
3172 * There is support within the community.
3173
3174diff --git a/doc/guides/cryptodevs/caam_jr.rst b/doc/guides/cryptodevs/caam_jr.rst
3175index 6d9daf7..4ee0100 100644
3176--- a/doc/guides/cryptodevs/caam_jr.rst
3177+++ b/doc/guides/cryptodevs/caam_jr.rst
3178@@ -24,7 +24,7 @@ accelerators. This provides significant improvement to system level performance.
3179
3180 SEC HW accelerator above 4.x+ version are also known as CAAM.
3181
3182-caam_jr PMD is one of DPAA drivers which uses uio interface to interact with
3183+caam_jr PMD is one of DPAA drivers which uses UIO interface to interact with
3184 Linux kernel for configure and destroy the device instance (ring).
3185
3186
3187diff --git a/doc/guides/cryptodevs/scheduler.rst b/doc/guides/cryptodevs/scheduler.rst
3188index 7004ca4..dd3de7f 100644
3189--- a/doc/guides/cryptodevs/scheduler.rst
3190+++ b/doc/guides/cryptodevs/scheduler.rst
3191@@ -126,7 +126,7 @@ operation:
3192 than the designated threshold, otherwise it will be handled by the secondary
3193 slave.
3194
3195- A typical usecase in this mode is with the QAT cryptodev as the primary and
3196+ A typical use case in this mode is with the QAT cryptodev as the primary and
3197 a software cryptodev as the secondary slave. This may help applications to
3198 process additional crypto workload than what the QAT cryptodev can handle on
3199 its own, by making use of the available CPU cycles to deal with smaller
3200diff --git a/doc/guides/cryptodevs/virtio.rst b/doc/guides/cryptodevs/virtio.rst
3201index 1496ec9..18bea62 100644
3202--- a/doc/guides/cryptodevs/virtio.rst
3203+++ b/doc/guides/cryptodevs/virtio.rst
3204@@ -63,7 +63,7 @@ QEMU can then be started using the following parameters:
3205 -device virtio-crypto-pci,id=crypto0,cryptodev=cryptodev0
3206 [...]
3207
3208-Secondly bind the uio_generic driver for the virtio-crypto device.
3209+Secondly bind the uio_pci_generic driver for the virtio-crypto device.
3210 For example, 0000:00:04.0 is the domain, bus, device and function
3211 number of the virtio-crypto device:
3212
3213diff --git a/doc/guides/howto/pvp_reference_benchmark.rst b/doc/guides/howto/pvp_reference_benchmark.rst
3214index 64b1f4d..971cb25 100644
3215--- a/doc/guides/howto/pvp_reference_benchmark.rst
3216+++ b/doc/guides/howto/pvp_reference_benchmark.rst
3217@@ -26,7 +26,7 @@ Setup overview
3218
3219 PVP setup using 2 NICs
3220
3221-In this diagram, each red arrow represents one logical core. This use-case
3222+In this diagram, each red arrow represents one logical core. This use case
3223 requires 6 dedicated logical cores. A forwarding configuration with a single
3224 NIC is also possible, requiring 3 logical cores.
3225
3226diff --git a/doc/guides/linux_gsg/linux_drivers.rst b/doc/guides/linux_gsg/linux_drivers.rst
3227index 96817e7..d8e5ad7 100644
3228--- a/doc/guides/linux_gsg/linux_drivers.rst
3229+++ b/doc/guides/linux_gsg/linux_drivers.rst
3230@@ -72,6 +72,16 @@ Note that in order to use VFIO, your kernel must support it.
3231 VFIO kernel modules have been included in the Linux kernel since version 3.6.0 and are usually present by default,
3232 however please consult your distributions documentation to make sure that is the case.
3233
3234+For DMA mapping of either external memory or hugepages, VFIO interface is used.
3235+VFIO does not support partial unmap of once mapped memory. Hence DPDK's memory is
3236+mapped in hugepage granularity or system page granularity. Number of DMA
3237+mappings is limited by kernel with user locked memory limit of a process (rlimit)
3238+for system/hugepage memory. Another per-container overall limit applicable both
3239+for external memory and system memory was added in kernel 5.1 defined by
3240+VFIO module parameter ``dma_entry_limit`` with a default value of 64K.
3241+When application is out of DMA entries, these limits need to be adjusted to
3242+increase the allowed limit.
3243+
3244 Also, to use VFIO, both kernel and BIOS must support and be configured to use IO virtualization (such as Intel® VT-d).
3245
3246 .. note::
3247diff --git a/doc/guides/nics/bnxt.rst b/doc/guides/nics/bnxt.rst
3248index 434ba9d..60ad312 100644
3249--- a/doc/guides/nics/bnxt.rst
3250+++ b/doc/guides/nics/bnxt.rst
3251@@ -54,14 +54,14 @@ automatically when the port is started if allowed by the current configuration.
3252 RX Requirements for Vector Mode
3253 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3254
3255-Vector mode receive will be enabled if the following constrainsts are met:
3256+Vector mode receive will be enabled if the following constraints are met:
3257 * Packets must fit within a single mbuf (no scatter RX).
3258 * LRO offload must be disabled.
3259
3260 TX Requirements for Vector Mode
3261 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3262
3263-Vector mode transmit will be enabled if the following constrainsts are met:
3264+Vector mode transmit will be enabled if the following constraints are met:
3265 * Packets must be contained within a single mbuf (no gather TX).
3266 * All transmit offloads other than VLAN insertion must be disabled.
3267
3268@@ -123,7 +123,7 @@ Chipsets and adapters supported by the bnxt PMD include:
3269 <https://www.broadcom.com/products/ethernet-connectivity/smartnic/>`_
3270 of the `Broadcom website <http://www.broadcom.com/>`_.
3271
3272- * **Broadcom StrataGX® BCM5871X Series of Communucations Processors**
3273+ * **Broadcom StrataGX® BCM5871X Series of Communications Processors**
3274
3275 These ARM based processors target a broad range of networking applications
3276 including virtual CPE (vCPE) and NFV appliances, 10G service routers and
3277diff --git a/doc/guides/nics/ena.rst b/doc/guides/nics/ena.rst
3278index bbf27f2..d39201c 100644
3279--- a/doc/guides/nics/ena.rst
3280+++ b/doc/guides/nics/ena.rst
3281@@ -198,7 +198,7 @@ Example output:
3282
3283 [...]
3284 EAL: PCI device 0000:00:06.0 on NUMA socket -1
3285- EAL: Invalid NUMA socket, default to 0
3286+ EAL: Device 0000:00:06.0 is not NUMA-aware, defaulting socket to 0
3287 EAL: probe driver: 1d0f:ec20 net_ena
3288
3289 Interactive-mode selected
3290diff --git a/doc/guides/nics/hns3.rst b/doc/guides/nics/hns3.rst
3291index 567c65d..7eb6d72 100644
3292--- a/doc/guides/nics/hns3.rst
3293+++ b/doc/guides/nics/hns3.rst
3294@@ -1,12 +1,12 @@
3295 .. SPDX-License-Identifier: BSD-3-Clause
3296- Copyright(c) 2018-2019 Hisilicon Limited.
3297+ Copyright(c) 2018-2019 HiSilicon Limited.
3298
3299 HNS3 Poll Mode Driver
3300 ===============================
3301
3302 The hns3 PMD (librte_pmd_hns3) provides poll mode driver support
3303-for the inbuilt Hisilicon Network Subsystem(HNS) network engine
3304-found in the Hisilicon Kunpeng 920 SoC.
3305+for the inbuilt HiSilicon Network Subsystem(HNS) network engine
3306+found in the HiSilicon Kunpeng 920 SoC.
3307
3308 Features
3309 --------
3310diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst
3311index bbad7d0..e81875d 100644
3312--- a/doc/guides/nics/mlx5.rst
3313+++ b/doc/guides/nics/mlx5.rst
3314@@ -498,6 +498,13 @@ Run-time configuration
3315 it is not recommended and may prevent NIC from sending packets over
3316 some configurations.
3317
3318+ For ConnectX-4 and ConnectX-4 Lx NICs, automatically configured value
3319+ is insufficient for some traffic, because they require at least all L2 headers
3320+ to be inlined. For example, Q-in-Q adds 4 bytes to default 18 bytes
3321+ of Ethernet and VLAN, thus ``txq_inline_min`` must be set to 22.
3322+ MPLS would add 4 bytes per label. Final value must account for all possible
3323+ L2 encapsulation headers used in particular environment.
3324+
3325 Please, note, this minimal data inlining disengages eMPW feature (Enhanced
3326 Multi-Packet Write), because last one does not support partial packet inlining.
3327 This is not very critical due to minimal data inlining is mostly required
3328@@ -1088,7 +1095,7 @@ the DPDK application.
3329
3330 echo -n "<device pci address" > /sys/bus/pci/drivers/mlx5_core/unbind
3331
3332-5. Enbale switchdev mode::
3333+5. Enable switchdev mode::
3334
3335 echo switchdev > /sys/class/net/<net device>/compat/devlink/mode
3336
3337diff --git a/doc/guides/nics/netvsc.rst b/doc/guides/nics/netvsc.rst
3338index 6dbb9a5..09cb6db 100644
3339--- a/doc/guides/nics/netvsc.rst
3340+++ b/doc/guides/nics/netvsc.rst
3341@@ -62,7 +62,7 @@ store it in a shell variable:
3342
3343 .. _`UUID`: https://en.wikipedia.org/wiki/Universally_unique_identifier
3344
3345-There are several possible ways to assign the uio device driver for a device.
3346+There are several possible ways to assign the UIO device driver for a device.
3347 The easiest way (but only on 4.18 or later)
3348 is to use the `driverctl Device Driver control utility`_ to override
3349 the normal kernel device.
3350diff --git a/doc/guides/nics/nfp.rst b/doc/guides/nics/nfp.rst
3351index 020e37d..7d8ed38 100644
3352--- a/doc/guides/nics/nfp.rst
3353+++ b/doc/guides/nics/nfp.rst
3354@@ -121,15 +121,15 @@ although once they are created, DPDK apps should be able to use them as normal
3355 PCI ports.
3356
3357 NFP ports belonging to same PF can be seen inside PMD initialization with a
3358-suffix added to the PCI ID: wwww:xx:yy.z_port_n. For example, a PF with PCI ID
3359+suffix added to the PCI ID: wwww:xx:yy.z_portn. For example, a PF with PCI ID
3360 0000:03:00.0 and four ports is seen by the PMD code as:
3361
3362 .. code-block:: console
3363
3364- 0000:03:00.0_port_0
3365- 0000:03:00.0_port_1
3366- 0000:03:00.0_port_2
3367- 0000:03:00.0_port_3
3368+ 0000:03:00.0_port0
3369+ 0000:03:00.0_port1
3370+ 0000:03:00.0_port2
3371+ 0000:03:00.0_port3
3372
3373 .. Note::
3374
3375diff --git a/doc/guides/nics/octeontx2.rst b/doc/guides/nics/octeontx2.rst
3376index db62a45..cad4a75 100644
3377--- a/doc/guides/nics/octeontx2.rst
3378+++ b/doc/guides/nics/octeontx2.rst
3379@@ -162,7 +162,7 @@ Runtime Config Options
3380
3381 -w 0002:02:00.0,max_sqb_count=64
3382
3383- With the above configuration, each send queue's decscriptor buffer count is
3384+ With the above configuration, each send queue's descriptor buffer count is
3385 limited to a maximum of 64 buffers.
3386
3387 - ``switch header enable`` (default ``none``)
3388diff --git a/doc/guides/nics/virtio.rst b/doc/guides/nics/virtio.rst
3389index d1f5fb8..2b1a3a6 100644
3390--- a/doc/guides/nics/virtio.rst
3391+++ b/doc/guides/nics/virtio.rst
3392@@ -71,7 +71,7 @@ In this release, the virtio PMD driver provides the basic functionality of packe
3393
3394 * Virtio supports software vlan stripping and inserting.
3395
3396-* Virtio supports using port IO to get PCI resource when uio/igb_uio module is not available.
3397+* Virtio supports using port IO to get PCI resource when UIO module is not available.
3398
3399 Prerequisites
3400 -------------
3401@@ -103,7 +103,8 @@ Host2VM communication example
3402
3403 insmod rte_kni.ko
3404
3405- Other basic DPDK preparations like hugepage enabling, uio port binding are not listed here.
3406+ Other basic DPDK preparations like hugepage enabling,
3407+ UIO port binding are not listed here.
3408 Please refer to the *DPDK Getting Started Guide* for detailed instructions.
3409
3410 #. Launch the kni user application:
3411@@ -473,7 +474,7 @@ are shown in below table:
3412 Split virtqueue in-order non-mergeable path virtio_recv_pkts_inorder virtio_xmit_pkts_inorder
3413 Split virtqueue vectorized Rx path virtio_recv_pkts_vec virtio_xmit_pkts
3414 Packed virtqueue mergeable path virtio_recv_mergeable_pkts_packed virtio_xmit_pkts_packed
3415- Packed virtqueue non-meregable path virtio_recv_pkts_packed virtio_xmit_pkts_packed
3416+ Packed virtqueue non-mergeable path virtio_recv_pkts_packed virtio_xmit_pkts_packed
3417 Packed virtqueue in-order mergeable path virtio_recv_mergeable_pkts_packed virtio_xmit_pkts_packed
3418 Packed virtqueue in-order non-mergeable path virtio_recv_pkts_packed virtio_xmit_pkts_packed
3419 ============================================ ================================= ========================
3420diff --git a/doc/guides/nics/vmxnet3.rst b/doc/guides/nics/vmxnet3.rst
3421index ae146f0..190cf91 100644
3422--- a/doc/guides/nics/vmxnet3.rst
3423+++ b/doc/guides/nics/vmxnet3.rst
3424@@ -119,7 +119,8 @@ This section describes an example setup for Phy-vSwitch-VM-Phy communication.
3425
3426 .. note::
3427
3428- Other instructions on preparing to use DPDK such as, hugepage enabling, uio port binding are not listed here.
3429+ Other instructions on preparing to use DPDK such as,
3430+ hugepage enabling, UIO port binding are not listed here.
3431 Please refer to *DPDK Getting Started Guide and DPDK Sample Application's User Guide* for detailed instructions.
3432
3433 The packet reception and transmission flow path is::
3434diff --git a/doc/guides/prog_guide/bbdev.rst b/doc/guides/prog_guide/bbdev.rst
3435index d39167a..27e6848 100644
3436--- a/doc/guides/prog_guide/bbdev.rst
3437+++ b/doc/guides/prog_guide/bbdev.rst
3438@@ -639,7 +639,7 @@ optionally the ``soft_output`` mbuf data pointers.
3439 "soft output","soft LLR output buffer (optional)"
3440 "op_flags","bitmask of all active operation capabilities"
3441 "rv_index","redundancy version index [0..3]"
3442- "iter_max","maximum number of iterations to perofrm in decode all CBs"
3443+ "iter_max","maximum number of iterations to perform in decode all CBs"
3444 "iter_min","minimum number of iterations to perform in decoding all CBs"
3445 "iter_count","number of iterations to performed in decoding all CBs"
3446 "ext_scale","scale factor on extrinsic info (5 bits)"
3447diff --git a/doc/guides/prog_guide/dev_kit_build_system.rst b/doc/guides/prog_guide/dev_kit_build_system.rst
3448index 74dba4d..5e36e38 100644
3449--- a/doc/guides/prog_guide/dev_kit_build_system.rst
3450+++ b/doc/guides/prog_guide/dev_kit_build_system.rst
3451@@ -9,7 +9,7 @@ Development Kit Build System
3452 The DPDK requires a build system for compilation activities and so on.
3453 This section describes the constraints and the mechanisms used in the DPDK framework.
3454
3455-There are two use-cases for the framework:
3456+There are two use cases for the framework:
3457
3458 * Compilation of the DPDK libraries and sample applications;
3459 the framework generates specific binary libraries,
3460diff --git a/doc/guides/prog_guide/env_abstraction_layer.rst b/doc/guides/prog_guide/env_abstraction_layer.rst
3461index 48a2fec..6c84566 100644
3462--- a/doc/guides/prog_guide/env_abstraction_layer.rst
3463+++ b/doc/guides/prog_guide/env_abstraction_layer.rst
3464@@ -465,7 +465,7 @@ devices would fail anyway.
3465 - By default, the mempool, first asks for IOVA-contiguous memory using
3466 ``RTE_MEMZONE_IOVA_CONTIG``. This is slow in RTE_IOVA_PA mode and it may
3467 affect the application boot time.
3468- - It is easy to enable large amount of IOVA-contiguous memory use-cases
3469+ - It is easy to enable large amount of IOVA-contiguous memory use cases
3470 with IOVA in VA mode.
3471
3472 It is expected that all PCI drivers work in both RTE_IOVA_PA and
3473diff --git a/doc/guides/prog_guide/eventdev.rst b/doc/guides/prog_guide/eventdev.rst
3474index 7bcd760..b415d63 100644
3475--- a/doc/guides/prog_guide/eventdev.rst
3476+++ b/doc/guides/prog_guide/eventdev.rst
3477@@ -120,7 +120,7 @@ Ports
3478 ~~~~~
3479
3480 Ports are the points of contact between worker cores and the eventdev. The
3481-general use-case will see one CPU core using one port to enqueue and dequeue
3482+general use case will see one CPU core using one port to enqueue and dequeue
3483 events from an eventdev. Ports are linked to queues in order to retrieve events
3484 from those queues (more details in `Linking Queues and Ports`_ below).
3485
3486diff --git a/doc/guides/prog_guide/multi_proc_support.rst b/doc/guides/prog_guide/multi_proc_support.rst
3487index 1a4a9e2..f2e1664 100644
3488--- a/doc/guides/prog_guide/multi_proc_support.rst
3489+++ b/doc/guides/prog_guide/multi_proc_support.rst
3490@@ -325,7 +325,7 @@ supported. However, since sending messages (not requests) does not involve an
3491 IPC thread, sending messages while processing another message or request is
3492 supported.
3493
3494-Since the memory sybsystem uses IPC internally, memory allocations and IPC must
3495+Since the memory subsystem uses IPC internally, memory allocations and IPC must
3496 not be mixed: it is not safe to use IPC inside a memory-related callback, nor is
3497 it safe to allocate/free memory inside IPC callbacks. Attempting to do so may
3498 lead to a deadlock.
3499diff --git a/doc/guides/prog_guide/qos_framework.rst b/doc/guides/prog_guide/qos_framework.rst
3500index a159709..f39b099 100644
3501--- a/doc/guides/prog_guide/qos_framework.rst
3502+++ b/doc/guides/prog_guide/qos_framework.rst
3503@@ -737,7 +737,7 @@ Strict priority scheduling of traffic classes within the same pipe is implemente
3504 which selects the queues in ascending order.
3505 Therefore, queue 0 (associated with TC 0, highest priority TC) is handled before
3506 queue 1 (TC 1, lower priority than TC 0),
3507-which is handled before queue 2 (TC 2, lower priority than TC 1) and it conitnues until queues of all TCs except the
3508+which is handled before queue 2 (TC 2, lower priority than TC 1) and it continues until queues of all TCs except the
3509 lowest priority TC are handled. At last, queues 12..15 (best effort TC, lowest priority TC) are handled.
3510
3511 Upper Limit Enforcement
3512diff --git a/doc/guides/prog_guide/writing_efficient_code.rst b/doc/guides/prog_guide/writing_efficient_code.rst
3513index 849f63e..88e6bde 100644
3514--- a/doc/guides/prog_guide/writing_efficient_code.rst
3515+++ b/doc/guides/prog_guide/writing_efficient_code.rst
3516@@ -143,20 +143,21 @@ In order to achieve higher throughput,
3517 the DPDK attempts to aggregate the cost of processing each packet individually by processing packets in bursts.
3518
3519 Using the testpmd application as an example,
3520-the burst size can be set on the command line to a value of 16 (also the default value).
3521-This allows the application to request 16 packets at a time from the PMD.
3522+the burst size can be set on the command line to a value of 32 (also the default value).
3523+This allows the application to request 32 packets at a time from the PMD.
3524 The testpmd application then immediately attempts to transmit all the packets that were received,
3525-in this case, all 16 packets.
3526+in this case, all 32 packets.
3527
3528 The packets are not transmitted until the tail pointer is updated on the corresponding TX queue of the network port.
3529 This behavior is desirable when tuning for high throughput because
3530-the cost of tail pointer updates to both the RX and TX queues can be spread across 16 packets,
3531+the cost of tail pointer updates to both the RX and TX queues can be spread
3532+across 32 packets,
3533 effectively hiding the relatively slow MMIO cost of writing to the PCIe* device.
3534 However, this is not very desirable when tuning for low latency because
3535-the first packet that was received must also wait for another 15 packets to be received.
3536-It cannot be transmitted until the other 15 packets have also been processed because
3537+the first packet that was received must also wait for another 31 packets to be received.
3538+It cannot be transmitted until the other 31 packets have also been processed because
3539 the NIC will not know to transmit the packets until the TX tail pointer has been updated,
3540-which is not done until all 16 packets have been processed for transmission.
3541+which is not done until all 32 packets have been processed for transmission.
3542
3543 To consistently achieve low latency, even under heavy system load,
3544 the application developer should avoid processing packets in bunches.
3545diff --git a/doc/guides/rawdevs/ntb.rst b/doc/guides/rawdevs/ntb.rst
3546index aa7d809..439bc51 100644
3547--- a/doc/guides/rawdevs/ntb.rst
3548+++ b/doc/guides/rawdevs/ntb.rst
3549@@ -18,7 +18,7 @@ BIOS setting on Intel Skylake
3550 -----------------------------
3551
3552 Intel Non-transparent Bridge needs special BIOS setting. Since the PMD only
3553-supports Intel Skylake platform, introduce BIOS setting here. The referencce
3554+supports Intel Skylake platform, introduce BIOS setting here. The reference
3555 is https://www.intel.com/content/dam/support/us/en/documents/server-products/Intel_Xeon_Processor_Scalable_Family_BIOS_User_Guide.pdf
3556
3557 - Set the needed PCIe port as NTB to NTB mode on both hosts.
3558diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
3559index 5810959..7ac8360 100644
3560--- a/doc/guides/rel_notes/deprecation.rst
3561+++ b/doc/guides/rel_notes/deprecation.rst
3562@@ -59,6 +59,12 @@ Deprecation Notices
3563 - ``rte_eth_dev_stop``
3564 - ``rte_eth_dev_close``
3565
3566+* ethdev: Will add ``RTE_ETH_`` prefix to all ethdev macros/enums in v21.11.
3567+ Macros will be added for backward compatibility.
3568+ Backward compatibility macros will be removed on v22.11.
3569+ A few old backward compatibility macros from 2013 that does not have
3570+ proper prefix will be removed on v21.11.
3571+
3572 * ethdev: New offload flags ``DEV_RX_OFFLOAD_FLOW_MARK`` will be added in 19.11.
3573 This will allow application to enable or disable PMDs from updating
3574 ``rte_mbuf::hash::fdir``.
3575diff --git a/doc/guides/rel_notes/known_issues.rst b/doc/guides/rel_notes/known_issues.rst
3576index 68c3d22..21a4764 100644
3577--- a/doc/guides/rel_notes/known_issues.rst
3578+++ b/doc/guides/rel_notes/known_issues.rst
3579@@ -419,7 +419,7 @@ Binding PCI devices to igb_uio fails on Linux kernel 3.9 when more than one devi
3580 ------------------------------------------------------------------------------------------
3581
3582 **Description**:
3583- A known bug in the uio driver included in Linux kernel version 3.9 prevents more than one PCI device to be
3584+ A known bug in the UIO driver included in Linux kernel version 3.9 prevents more than one PCI device to be
3585 bound to the igb_uio driver.
3586
3587 **Implication**:
3588@@ -614,7 +614,7 @@ I40e VF may not receive packets in the promiscuous mode
3589 Poll Mode Driver (PMD).
3590
3591
3592-uio pci generic module bind failed in X710/XL710/XXV710
3593+uio_pci_generic module bind failed in X710/XL710/XXV710
3594 -------------------------------------------------------
3595
3596 **Description**:
3597@@ -671,7 +671,7 @@ virtio tx_burst() function cannot do TSO on shared packets
3598 Poll Mode Driver (PMD).
3599
3600
3601-igb uio legacy mode can not be used in X710/XL710/XXV710
3602+igb_uio legacy mode can not be used in X710/XL710/XXV710
3603 --------------------------------------------------------
3604
3605 **Description**:
3606@@ -752,7 +752,7 @@ Netvsc driver and application restart
3607 handshake sequence with the host.
3608
3609 **Resolution/Workaround**:
3610- Either reboot the guest or remove and reinsert the hv_uio_generic module.
3611+ Either reboot the guest or remove and reinsert the uio_hv_generic module.
3612
3613 **Affected Environment/Platform**:
3614 Linux Hyper-V.
3615@@ -816,7 +816,7 @@ Kernel crash when hot-unplug igb_uio device while DPDK application is running
3616
3617 **Reason**:
3618 When device is hot-unplugged, igb_uio driver will be removed which will destroy UIO resources.
3619- Later trying to access any uio resource will cause kernel crash.
3620+ Later trying to access any UIO resource will cause kernel crash.
3621
3622 **Resolution/Workaround**:
3623 If using DPDK for PCI HW hot-unplug, prefer to bind device with VFIO instead of IGB_UIO.
3624diff --git a/doc/guides/rel_notes/release_16_11.rst b/doc/guides/rel_notes/release_16_11.rst
3625index 92e0ec6..3cec914 100644
3626--- a/doc/guides/rel_notes/release_16_11.rst
3627+++ b/doc/guides/rel_notes/release_16_11.rst
3628@@ -77,7 +77,7 @@ New Features
3629 the current version, even 64 bytes packets take two slots with Virtio PMD on guest
3630 side.
3631
3632- The main impact is better performance for 0% packet loss use-cases, as it
3633+ The main impact is better performance for 0% packet loss use cases, as it
3634 behaves as if the virtqueue size was enlarged, so more packets can be buffered
3635 in the case of system perturbations. On the downside, small performance degradations
3636 were measured when running micro-benchmarks.
3637diff --git a/doc/guides/rel_notes/release_19_08.rst b/doc/guides/rel_notes/release_19_08.rst
3638index cbb27e8..d2baa82 100644
3639--- a/doc/guides/rel_notes/release_19_08.rst
3640+++ b/doc/guides/rel_notes/release_19_08.rst
3641@@ -151,7 +151,7 @@ New Features
3642 * Added multi-queue support to allow one af_xdp vdev with multiple netdev
3643 queues.
3644 * Enabled "need_wakeup" feature which can provide efficient support for the
3645- usecase where the application and driver executing on the same core.
3646+ use case where the application and driver executing on the same core.
3647
3648 * **Enabled infinite Rx in the PCAP PMD.**
3649
3650diff --git a/doc/guides/rel_notes/release_19_11.rst b/doc/guides/rel_notes/release_19_11.rst
3651index 511d7f8..63108dd 100644
3652--- a/doc/guides/rel_notes/release_19_11.rst
3653+++ b/doc/guides/rel_notes/release_19_11.rst
3654@@ -3095,13 +3095,12 @@ Tested Platforms
3655 * rib: fix insertion in some cases
3656 * rib: fix missing header include
3657 * rib: fix missing header includes
3658-* (tag: 19.11.7-20.11-21.02-rc2) app/testpmd: fix setting maximum packet length
3659-* (tag: 19.11.7-20.11-21.02-rc2-backports) net/mlx5: fix port attach in secondary process
3660-* (tag: 19.11.7-21.02rc2-21.02-rc3-backports) net/mlx5: fix VXLAN decap on non-VXLAN flow
3661-* (tag: 19.11.7-21.02rc2-21.02-rc3) mempool: fix panic on dump or audit
3662-* (tag: 19.11.7-21.02rc3-21.02-backports) mem: fix build
3663-* (tag: 19.11.7-21.02rc3-21.02) usertools: fix binding built-in kernel driver
3664-* (tag: v19.11.7-rc1) version: 19.11.7-rc1
3665+* app/testpmd: fix setting maximum packet length
3666+* net/mlx5: fix port attach in secondary process
3667+* net/mlx5: fix VXLAN decap on non-VXLAN flow
3668+* mempool: fix panic on dump or audit
3669+* mem: fix build
3670+* usertools: fix binding built-in kernel driver
3671 * test/distributor: fix return buffer queue overload
3672 * test/event_crypto: set cipher operation in transform
3673 * test: fix buffer overflow in Tx burst
3674@@ -3227,3 +3226,735 @@ Tested Platforms
3675 * The UDP fragmentation offload feature of Virtio-net device can not be turned on in the VM. Bug: https://bugzilla.kernel.org/show_bug.cgi?id=207075
3676
3677 * mlx5 VLAN packets will not do RSS. Bug: https://bugs.dpdk.org/show_bug.cgi?id=661
3678+
3679+19.11.8 Release Notes
3680+---------------------
3681+
3682+19.11.8 Fixes
3683+~~~~~~~~~~~~~
3684+
3685+* Regenerate meson.build changes required due to reverts
3686+* Revert "Revert "Revert "build: always link whole DPDK static libraries"""
3687+* Revert "Revert "Revert "build/pkg-config: improve static linking flags"""
3688+* Revert "Revert "Revert "build/pkg-config: move pkg-config file creation"""
3689+* Revert "Revert "Revert "build/pkg-config: output drivers first for static build"""
3690+* Revert "Revert "Revert "build/pkg-config: prevent overlinking"""
3691+* Revert "Revert "Revert "devtools: test static linkage with pkg-config"""
3692+
3693+19.11.8 Validation
3694+~~~~~~~~~~~~~~~~~~
3695+
3696+* Intel(R) Testing
3697+
3698+ * Builds
3699+
3700+ * Basic Intel NIC (ixgbe, i40e) testing
3701+
3702+ * PF (i40e)
3703+ * PF (ixgbe)
3704+ * VF (i40e)
3705+ * VF (ixgbe)
3706+ * Compile Testing
3707+ * Intel NIC single core/NIC performance
3708+
3709+ * Basic cryptodev and virtio testing
3710+
3711+ * vhost/virtio basic loopback, PVP and performance test
3712+ * cryptodev Function/Performance
3713+
3714+* Intel(R) Testing with Open vSwitch
3715+
3716+ * OVS build and link testing with OVS 2.13 (make based)
3717+ * OVS build and link testing with OVS 2.14 (make based)
3718+
3719+* Canonical(R) Testing
3720+
3721+ * Build tests of DPDK & OVS 2.13.3 on Ubuntu 20.04 (meson based)
3722+ * Build tests of DPDK & OVS 2.13.3 on Ubuntu 20.10 (meson based)
3723+ * OVS-DPDK tests on x86_64
3724+
3725+19.11.9 Release Notes
3726+---------------------
3727+
3728+19.11.9 Fixes
3729+~~~~~~~~~~~~~
3730+
3731+* app/bbdev: fix HARQ error messages
3732+* app/crypto-perf: check memory allocation
3733+* app/eventdev: fix lcore parsing skipping last core
3734+* app/eventdev: fix overflow in lcore list parsing
3735+* app: fix exit messages
3736+* app/testpmd: fix bitmap of link speeds when force speed
3737+* app/testpmd: fix build with musl
3738+* app/testpmd: fix DCB forwarding configuration
3739+* app/testpmd: fix DCB re-configuration
3740+* app/testpmd: fix forward lcores number for DCB
3741+* app/testpmd: fix max queue number for Tx offloads
3742+* app/testpmd: fix NVGRE encap configuration
3743+* app/testpmd: fix segment number check
3744+* app/testpmd: fix Tx/Rx descriptor query error log
3745+* app/testpmd: remove unnecessary UDP tunnel check
3746+* bpf: fix JSLT validation
3747+* build: detect execinfo library on Linux
3748+* build: exclude meson files from examples installation
3749+* buildtools: fix build with busybox
3750+* bus/dpaa: fix 64-bit arch detection
3751+* bus/dpaa: fix build with musl
3752+* bus/dpaa: fix statistics reading
3753+* bus/fslmc: fix random portal hangs with qbman 5.0
3754+* bus/fslmc: remove unused debug macro
3755+* common/dpaax/caamflib: fix build with musl
3756+* common/dpaax: fix possible null pointer access
3757+* common/iavf: use pad byte to specify MAC type
3758+* common/qat: increase IM buffer size for GEN3
3759+* common/sfc_efx/base: limit reported MCDI response length
3760+* compress/qat: enable compression on GEN3
3761+* config/ppc: reduce number of cores and NUMA nodes
3762+* crypto/dpaa2_sec: fix close and uninit functions
3763+* crypto/dpaa_sec: affine the thread portal affinity
3764+* crypto/qat: fix null authentication request
3765+* crypto/qat: fix offset for out-of-place scatter-gather
3766+* doc: fix build with Sphinx 4
3767+* doc: fix HiSilicon copyright syntax
3768+* doc: fix multiport syntax in nfp guide
3769+* doc: fix names of UIO drivers
3770+* doc: fix sphinx rtd theme import in GHA
3771+* drivers/crypto: fix build with -fno-common
3772+* drivers/net: check process type in close operation
3773+* eal: add C++ include guard for reciprocal header
3774+* eal/arm64: fix platform register bit
3775+* eal: fix comment of OS-specific header files
3776+* eal: fix hang in control thread creation
3777+* eal: fix race in control thread creation
3778+* eal: fix service core list parsing
3779+* eal/windows: add cleanup function stub
3780+* eal/windows: fix default thread priority
3781+* ethdev: add missing buses in device iterator
3782+* ethdev: fix redundant flow after RSS expansion
3783+* ethdev: update flow item GTP QFI definition
3784+* ethdev: validate input in EEPROM info
3785+* ethdev: validate input in module EEPROM dump
3786+* ethdev: validate input in register info
3787+* eventdev: fix case to initiate crypto adapter service
3788+* eventdev: fix memory leakage on thread creation failure
3789+* eventdev: remove redundant thread name setting
3790+* event/dpaa2: remove unused macros
3791+* event/octeontx2: fix device reconfigure for single slot
3792+* examples: add eal cleanup to examples
3793+* examples/bbdev: fix header include for musl
3794+* examples/ethtool: remove unused parsing
3795+* examples/flow_classify: fix NUMA check of port and core
3796+* examples/l2fwd-cat: fix NUMA check of port and core
3797+* examples/l2fwd-crypto: fix packet length while decryption
3798+* examples/l2fwd-crypto: skip masked devices
3799+* examples/l3fwd: fix LPM IPv6 subnets
3800+* examples/l3fwd-power: fix empty poll thresholds
3801+* examples/packet_ordering: fix port configuration
3802+* examples/ptpclient: remove wrong comment
3803+* examples/rxtx_callbacks: fix port ID format specifier
3804+* examples/skeleton: fix NUMA check of port and core
3805+* examples/timer: fix time interval
3806+* examples/vhost: check memory table query
3807+* examples/vhost_crypto: remove unused short option
3808+* fbarray: fix log message on truncation error
3809+* net/mlx5: fix flow split combined with counter
3810+* ipc: check malloc sync reply result
3811+* ipc: use monotonic clock
3812+* kni: fix compilation on SLES15-SP3
3813+* license: fix typos
3814+* log/linux: make default output stderr
3815+* mbuf: check shared memory before dumping dynamic space
3816+* mem: fix freeing segments in --huge-unlink mode
3817+* net/af_xdp: fix error handling during Rx queue setup
3818+* net/ark: refactor Rx buffer recovery
3819+* net/ark: update packet director initial state
3820+* net/bnx2x: fix build with GCC 11
3821+* net/bnx2x: fix build with GCC 11
3822+* net/bnxt: check PCI config read
3823+* net/bnxt: drop unused attribute
3824+* net/bnxt: fix build failures after merging patches
3825+* net/bnxt: fix configuring LRO
3826+* net/bnxt: fix device readiness check
3827+* net/bnxt: fix double free in port start failure
3828+* net/bnxt: fix dynamic VNIC count
3829+* net/bnxt: fix firmware fatal error handling
3830+* net/bnxt: fix FW readiness check during recovery
3831+* net/bnxt: fix handling of null flow mask
3832+* net/bnxt: fix health check alarm cancellation
3833+* net/bnxt: fix HWRM and FW incompatibility handling
3834+* net/bnxt: fix link state operations
3835+* net/bnxt: fix memory allocation for command response
3836+* net/bnxt: fix mismatched type comparison in MAC restore
3837+* net/bnxt: fix PCI write check
3838+* net/bnxt: fix PTP support for Thor
3839+* net/bnxt: fix queues per VNIC
3840+* net/bnxt: fix ring count calculation for Thor
3841+* net/bnxt: fix RSS context cleanup
3842+* net/bnxt: fix Rx and Tx timestamps
3843+* net/bnxt: fix Rx buffer posting
3844+* net/bnxt: fix Rx descriptor status
3845+* net/bnxt: fix Rx queue count
3846+* net/bnxt: fix Rx timestamp when FIFO pending bit is set
3847+* net/bnxt: fix single PF per port check
3848+* net/bnxt: fix timesync when PTP is not supported
3849+* net/bnxt: fix Tx length hint threshold
3850+* net/bnxt: fix Tx timestamp init
3851+* net/bnxt: fix VF info allocation
3852+* net/bnxt: fix VNIC configuration
3853+* net/bnxt: fix xstats get
3854+* net/bnxt: prevent device access in error state
3855+* net/bnxt: refactor multi-queue Rx configuration
3856+* net/bnxt: remove unnecessary forward declarations
3857+* net/bnxt: remove unused function parameters
3858+* net/bnxt: remove unused macro
3859+* net/bnxt: reset filter indices on free
3860+* net/bnxt: use prefix on global function
3861+* net/bonding: fix adding itself as its slave
3862+* net/bonding: fix LACP system address check
3863+* net/bonding: fix leak on remove
3864+* net/bonding: fix socket ID check
3865+* net/cxgbe: remove use of uint type
3866+* net/dpaa2: fix getting link status
3867+* net/e1000/base: fix timeout for shadow RAM write
3868+* net/e1000: fix flow error message object
3869+* net/e1000: fix max Rx packet size
3870+* net/e1000: fix Rx error counter for bad length
3871+* net/e1000: remove MTU setting limitation
3872+* net/ena/base: fix type conversions by explicit casting
3873+* net/ena: fix releasing Tx ring mbufs
3874+* net/ena: remove endian swap functions
3875+* net/ena: switch memcpy to optimized version
3876+* net/failsafe: fix RSS hash offload reporting
3877+* net/failsafe: report minimum and maximum MTU
3878+* net: fix comment in IPv6 header
3879+* net/hinic: fix crash in secondary process
3880+* net/hns3: clear hash map on flow director clear
3881+* net/hns3: delete redundant blank line
3882+* net/hns3: fix DCB mode check
3883+* net/hns3: fix DCB reconfiguration
3884+* net/hns3: fix flow control exception
3885+* net/hns3: fix flow control mode
3886+* net/hns3: fix flow counter value
3887+* net/hns3: fix FLR miss detection
3888+* net/hns3: fix handling link update
3889+* net/hns3: fix HW buffer size on MTU update
3890+* net/hns3: fix mailbox error message
3891+* net/hns3: fix MTU config complexity
3892+* net/hns3: fix ordering in secondary process initialization
3893+* net/hns3: fix processing Tx offload flags
3894+* net/hns3: fix querying flow director counter for out param
3895+* net/hns3: fix requested FC mode rollback
3896+* net/hns3: fix rollback after setting PVID failure
3897+* net/hns3: fix secondary process request start/stop Rx/Tx
3898+* net/hns3: fix typos on comments
3899+* net/hns3: fix VF mailbox head field
3900+* net/hns3: fix VMDq mode check
3901+* net/hns3: log time delta in decimal format
3902+* net/hns3: remove meaningless packet buffer rollback
3903+* net/hns3: remove unused macro
3904+* net/hns3: remove unused macros
3905+* net/hns3: remove unused macros
3906+* net/hns3: remove unused mailbox macro and struct
3907+* net/hns3: remove unused VMDq code
3908+* net/hns3: return error on PCI config write failure
3909+* net/hns3: support get device version when dump register
3910+* net/hns3: update HiSilicon copyright syntax
3911+* net/i40e: announce request queue capability in PF
3912+* net/i40e: fix input set field mask
3913+* net/i40e: fix IPv4 fragment offload
3914+* net/i40e: fix lack of MAC type when set MAC address
3915+* net/i40e: fix negative VEB index
3916+* net/i40e: fix parsing packet type for NEON
3917+* net/i40e: fix primary MAC type when starting port
3918+* net/i40e: fix VF RSS configuration
3919+* net/i40e: remove redundant VSI check in Tx queue setup
3920+* net/i40evf: fix packet loss for X722
3921+* net/iavf: fix lack of MAC type when set MAC address
3922+* net/iavf: fix primary MAC type when starting port
3923+* net/iavf: fix TSO max segment size
3924+* net/iavf: fix Tx context descriptor
3925+* net/iavf: fix VF to PF command failure handling
3926+* net/ice/base: cleanup filter list on error
3927+* net/ice/base: fix build with GCC 11
3928+* net/ice/base: fix memory allocation for MAC addresses
3929+* net/ice/base: fix memory allocation wrapper
3930+* net/ice/base: fix payload indicator on ptype
3931+* net/ice: check some functions return
3932+* net/ice: fix disabling promiscuous mode
3933+* net/ice: fix fast mbuf freeing
3934+* net/ice: fix illegal access when removing MAC filter
3935+* net/ice: fix VLAN filter with PF
3936+* net/ice: fix VSI array out of bounds access
3937+* net/ixgbe: fix RSS RETA being reset after port start
3938+* net/ixgbe: fix Rx errors statistics for UDP checksum
3939+* net/kni: check init result
3940+* net/memif: fix Tx bps statistics for zero-copy
3941+* net/mlx4: fix buffer leakage on device close
3942+* net/mlx4: fix leak when configured repeatedly
3943+* net/mlx4: fix RSS action with null hash key
3944+* net/mlx4: fix secondary process initialization ordering
3945+* net/mlx5: fix drop action for Direct Rules/Verbs
3946+* net/mlx5: fix leak when configured repeatedly
3947+* net/mlx5: fix metadata item validation for ingress flows
3948+* net/mlx5: fix probing device in legacy bonding mode
3949+* net/mlx5: fix Rx metadata leftovers
3950+* net/mlx5: fix Rx segmented packets on mbuf starvation
3951+* net/mlx5: fix secondary process initialization ordering
3952+* net/mlx5: remove drop queue function prototypes
3953+* net/mlx5: support RSS expansion for IPv6 GRE
3954+* net/nfp: fix reporting of RSS capabilities
3955+* net/octeontx2: fix VLAN filter
3956+* net/pcap: fix format string
3957+* net/qede: accept bigger RSS table
3958+* net/qede: reduce log verbosity
3959+* net/tap: check ioctl on restore
3960+* net/tap: fix build with GCC 11
3961+* net/tap: fix interrupt vector array size
3962+* net/virtio: fix interrupt unregistering for listening socket
3963+* net/virtio: fix vectorized Rx queue rearm
3964+* power: do not skip saving original P-state governor
3965+* power: fix sanity checks for guest channel read
3966+* power: remove duplicated symbols from map file
3967+* power: save original ACPI governor always
3968+* raw/ntb: check memory allocations
3969+* raw/ntb: check SPAD user index
3970+* raw/skeleton: add missing check after setting attribute
3971+* Revert "kni: fix compilation on SLES15-SP3"
3972+* service: clean references to removed symbol
3973+* stack: allow lock-free only on relevant architectures
3974+* test/bpf: fix error message
3975+* test: check flow classifier creation
3976+* test: check thread creation
3977+* test/cmdline: fix inputs array
3978+* test/cmdline: silence clang 12 warning
3979+* test/crypto: fix auth-cipher compare length in OOP
3980+* test/crypto: fix build with GCC 11
3981+* test/distributor: fix burst flush on worker quit
3982+* test/distributor: fix worker notification in burst mode
3983+* test/event: fix timeout accuracy
3984+* test: fix autotest handling of skipped tests
3985+* test: fix build with GCC 11
3986+* test: fix division by zero
3987+* test: fix TCP header initialization
3988+* test/kni: check init result
3989+* test/kni: fix a comment
3990+* test/mempool: fix object initializer
3991+* test/power: add delay before checking CPU frequency
3992+* test/power: add turbo mode to frequency check
3993+* test/power: fix CPU frequency check
3994+* test/power: fix low frequency test when turbo enabled
3995+* test/power: fix turbo test
3996+* test/power: round CPU frequency to check
3997+* test: proceed if timer subsystem already initialized
3998+* test/table: fix build with GCC 11
3999+* test/timer: check memzone allocation
4000+* vdpa/ifc: check PCI config read
4001+* vfio: do not merge contiguous areas
4002+* vfio: fix API description
4003+* vfio: fix DMA mapping granularity for IOVA as VA
4004+* vfio: fix duplicated user mem map
4005+* vfio: fix stdbool usage without include
4006+* vhost: fix batch dequeue potential buffer overflow
4007+* vhost: fix initialization of temporary header
4008+* vhost: fix packed ring potential buffer overflow
4009+* vhost: fix queue initialization
4010+* vhost: fix split ring potential buffer overflow
4011+
4012+19.11.9 Validation
4013+~~~~~~~~~~~~~~~~~~
4014+
4015+* [Intel(R) Testing](http://mails.dpdk.org/archives/stable/2021-July/032349.html)
4016+
4017+ * Builds
4018+
4019+ * Basic Intel NIC (ixgbe, i40e) testing
4020+
4021+ * PF (i40e)
4022+ * PF (ixgbe)
4023+ * VF (i40e)
4024+ * VF (ixgbe)
4025+ * Compile Testing
4026+ * Intel NIC single core/NIC performance
4027+
4028+ * Basic cryptodev and virtio testing
4029+
4030+ * vhost/virtio basic loopback, PVP and performance test
4031+ * cryptodev Function/Performance
4032+
4033+* [Intel(R) Testing with Open vSwitch](http://mails.dpdk.org/archives/stable/2021-June/031702.html)
4034+
4035+ * OVS build and link testing with OVS 2.13 (make based)
4036+ * OVS build and link testing with OVS 2.14 (make based)
4037+ * VSPERF tests
4038+
4039+ * phy2phy_tput
4040+ * pvp_tput
4041+ * pvp_cont
4042+ * pvvp_tput
4043+ * pvpv_cont
4044+ * ovsdpdk_jumbo_p2p
4045+ * ovsdpdk_jumbo_pvp
4046+ * ovsdpdk_jumbo_p2p_upper_bound
4047+ * ovsdpdk_mq_pvp_rxqs_testpmd
4048+ * ovsdpdk_mq_pvp_rxqs_linux_bridge
4049+
4050+* [Canonical(R) Testing](http://mails.dpdk.org/archives/stable/2021-July/031997.html)
4051+
4052+ * Build tests of DPDK & OVS 2.13.3 on Ubuntu 20.04 (meson based)
4053+ * Build tests of DPDK & OVS 2.13.3 on Ubuntu 20.10 (meson based)
4054+ * Functional and performance tests based on OVS-DPDK on x86_64
4055+ * Autopkgtests for DPDK and OpenvSwitch
4056+
4057+* [Red Hat(R) Testing](http://mails.dpdk.org/archives/stable/2021-June/031619.html)
4058+
4059+ * Platform
4060+
4061+ * RHEL 8
4062+ * Kernel 4.18
4063+ * Qemu 6.0
4064+ * X540-AT2 NIC(ixgbe, 10G)
4065+ * Tested on 19.11.9-RC3
4066+
4067+ * Tests
4068+
4069+ * Guest with device assignment(PF) throughput testing(1G hugepage size): PASS
4070+ * Guest with device assignment(PF) throughput testing(2M hugepage size) : PASS
4071+ * Guest with device assignment(VF) throughput testing: PASS
4072+ * PVP (host dpdk testpmd as vswitch) 1Q: throughput testing: PASS
4073+ * PVP vhost-user 2Q throughput testing: PASS
4074+ * PVP vhost-user 1Q - cross numa node throughput testing: PASS
4075+ * Guest with vhost-user 2 queues throughput testing: PASS
4076+ * vhost-user reconnect with dpdk-client, qemu-server: qemu reconnect: PASS
4077+ * vhost-user reconnect with dpdk-client, qemu-server: ovs reconnect: PASS
4078+ * PVP 1Q live migration testing: PASS
4079+ * PVP 1Q cross numa node live migration testing: PASS
4080+ * Guest with ovs+dpdk+vhost-user 1Q live migration testing: PASS
4081+ * Guest with ovs+dpdk+vhost-user 1Q live migration testing (2M): PASS
4082+ * Guest with ovs+dpdk+vhost-user 2Q live migration testing: PASS
4083+ * Host PF + DPDK testing: PASS
4084+ * Host VF + DPDK testing: PASS
4085+
4086+* [Nvidia (R) Testing](http://mails.dpdk.org/archives/stable/2021-July/032381.html)
4087+
4088+ * functional tests on Mellanox hardware
4089+
4090+ * NIC: ConnectX-4 Lx / OS: Ubuntu 20.04 LTS / Driver: MLNX_OFED_LINUX-5.3-1.0.0.1 / Firmware: 14.30.1004
4091+ * NIC: ConnectX-5 / OS: Ubuntu 20.04 LTS / Driver: MLNX_OFED_LINUX-5.3-1.0.0.1 / Firmware: 16.30.1004
4092+
4093+ * Basic functionality:
4094+
4095+ * Send and receive multiple types of traffic.
4096+ * testpmd xstats counter test.
4097+ * testpmd timestamp test.
4098+ * Changing/checking link status through testpmd.
4099+ * RTE flow tests: Items: eth / vlan / ipv4 / ipv6 / tcp / udp / icmp / gre / nvgre / vxlan ip in ip / mplsoudp / mplsogre
4100+ * Actions: drop / queue / rss / mark / flag / jump / count / raw_encap / raw_decap / vxlan_encap / vxlan_decap / NAT / dec_ttl
4101+ * Some RSS tests.
4102+ * VLAN filtering, stripping and insertion tests.
4103+ * Checksum and TSO tests.
4104+ * ptype tests.
4105+ * link_status_interrupt example application tests.
4106+ * l3fwd-power example application tests.
4107+ * Multi-process example applications tests.
4108+
4109+ * Compilation tests with multiple configurations in the following OS/driver combinations are also passing:
4110+
4111+ * Ubuntu 20.04.2 with MLNX_OFED_LINUX-5.3-1.0.0.1.
4112+ * Ubuntu 20.04.2 with rdma-core master (a66e2a5).
4113+ * Ubuntu 20.04.2 with rdma-core v28.0.
4114+ * Ubuntu 18.04.5 with rdma-core v17.1.
4115+ * Ubuntu 18.04.5 with rdma-core master (a66e2a5) (i386).
4116+ * Ubuntu 16.04.7 with rdma-core v22.7.
4117+ * Fedora 34 with rdma-core v35.0.
4118+ * Fedora 35 (Rawhide) with rdma-core v35.0 (only with gcc).
4119+ * CentOS 7 7.9.2009 with rdma-core master (a66e2a5).
4120+ * CentOS 7 7.9.2009 with MLNX_OFED_LINUX-5.3-1.0.0.1.
4121+ * CentOS 8 8.3.2011 with rdma-core master (7f2d460).
4122+ * OpenSUSE Leap 15.3 with rdma-core v31.0.
4123+
4124+19.11.9 Known Issues
4125+~~~~~~~~~~~~~~~~~~~~
4126+
4127+This time there are a few issues which were identified in the tests. But none
4128+of them is an in-place regression. So far they are all issues with newer
4129+compilers, toolchains and kernels that happen to be incompatible with the
4130+19.11.x code.
4131+
4132+* Due to a kernel patch backport in SUSE Linux Enterprise Server 15 SP3
4133+ [compilation of kni fails there](https://bugs.dpdk.org/show_bug.cgi?id=728).
4134+ A fix would break existing SP2 installation and
4135+ [further options are discussed](http://mails.dpdk.org/archives/stable/2021-June/031210.html)
4136+
4137+* A [Build issue with clang 12.0.1](https://bugs.dpdk.org/show_bug.cgi?id=745)
4138+
4139+* A make [build issue with Fedora 34 with GCC11](https://bugs.dpdk.org/show_bug.cgi?id=744)
4140+
4141+* Meson based [build issues with ICC-19.1.1](https://bugs.dpdk.org/show_bug.cgi?id=747)
4142+
4143+19.11.10 Release Notes
4144+
4145+
4146+
4147+19.11.10 Fixes
4148+~~~~~~~~~~~~~~
4149+
4150+* app/crypto-perf: fix out-of-place mempool allocation
4151+* app/test: fix IPv6 header initialization
4152+* app/testpmd: change port link speed without stopping all
4153+* app/testpmd: fix help string for port reset
4154+* app/testpmd: fix IPv4 checksum
4155+* app/testpmd: fix MAC address after port reset
4156+* app/testpmd: fix offloads for newly attached port
4157+* app/testpmd: fix Tx checksum calculation for tunnel
4158+* bitmap: fix buffer overrun in bitmap init
4159+* bus: clarify log for non-NUMA-aware devices
4160+* bus/dpaa: fix freeing in FMAN interface destructor
4161+* common/mlx5: fix compatibility with OFED port query API
4162+* common/mlx5: fix Netlink port name padding in probing
4163+* common/mlx5: use new port query API if available
4164+* cryptodev: fix freeing after device release
4165+* crypto/mvsam: fix AES-GCM session parameters
4166+* crypto/mvsam: fix capabilities
4167+* crypto/mvsam: fix options parsing
4168+* crypto/mvsam: fix session data reset
4169+* crypto/octeontx: fix freeing after device release
4170+* crypto/qat: fix Arm build with special memcpy
4171+* devtools: fix file listing in maintainers check
4172+* distributor: fix 128-bit write alignment
4173+* doc: add limitation for ConnectX-4 with L2 in mlx5 guide
4174+* doc: announce common prefix for ethdev
4175+* doc: fix default burst size in testpmd
4176+* doc: fix spelling
4177+* drivers/net: fix memzone allocations for DMA memory
4178+* ethdev: fix doc of flow action
4179+* eventdev: fix event port setup in tx adapter
4180+* flow_classify: fix leaking rules on delete
4181+* (github-cpaelzer-stable/19.11) telemetry: fix race in telemetry control thread creation
4182+* (HEAD -> 19.11, tag: v19.11.10-rc2, origin-stable/19.11) version: 19.11.10-rc2
4183+* ipc: stop mp control thread on cleanup
4184+* kni: fix crash on userspace VA for segmented packets
4185+* kni: fix mbuf allocation for kernel side use
4186+* mempool/octeontx2: fix shift calculation
4187+* net/bnxt: check access to possible null pointer
4188+* net/bnxt: cleanup code
4189+* net/bnxt: clear cached statistics
4190+* net/bnxt: detect bad opaque in Rx completion
4191+* net/bnxt: fix auto-negotiation on Whitney+
4192+* net/bnxt: fix check for PTP support in FW
4193+* net/bnxt: fix error handling in VNIC prepare
4194+* net/bnxt: fix error messages in VNIC prepare
4195+* net/bnxt: fix missing barriers in completion handling
4196+* net/bnxt: fix nested lock during bonding
4197+* net/bnxt: fix ring and context memory allocation
4198+* net/bnxt: fix Rx burst size constraint
4199+* net/bnxt: fix Rx interrupt setting
4200+* net/bnxt: fix scalar Tx completion handling
4201+* net/bnxt: fix Tx descriptor status implementation
4202+* net/bnxt: fix typo in log message
4203+* net/bnxt: improve probing log message
4204+* net/bnxt: invoke device removal event on recovery failure
4205+* net/bnxt: remove unnecessary code
4206+* net/bnxt: remove unnecessary comment
4207+* net/bnxt: set flow error after tunnel redirection free
4208+* net/bnxt: set flow error when free filter not available
4209+* net/bnxt: use common function to free VNIC resource
4210+* net/bnxt: workaround spurious zero stats in Thor
4211+* net/bonding: check flow setting
4212+* net/bonding: fix error message on flow verify
4213+* net/ena: enable multi-segment in Tx offload flags
4214+* net/ena: trigger reset on Tx prepare failure
4215+* net/hinic/base: fix LRO
4216+* net/hinic: increase protection of the VLAN
4217+* net/hns3: fix delay for waiting to stop Rx/Tx
4218+* net/hns3: fix filter parsing comment
4219+* net/hns3: fix Tx prepare after stop
4220+* net/hns3: fix VLAN strip log
4221+* net/hns3: increase VF reset retry maximum
4222+* net/i40e: fix descriptor scan on Arm
4223+* net/i40e: fix multi-process shared data
4224+* net/iavf: fix RSS key access out of bound
4225+* net/iavf: fix Tx threshold check
4226+* net/ice/base: fix first profile mask
4227+* net/ice/base: revert change of first profile mask
4228+* net/ice: fix default RSS key generation
4229+* net/ice: fix memzone leak when firmware is missing
4230+* net/ixgbe: fix flow entry access after freeing
4231+* net/mlx5: fix incorrect r/w lock usage in DMA unmap
4232+* net/mlx5: fix IPIP multi-tunnel validation
4233+* net/mlx5: fix match MPLS over GRE with key
4234+* net/mlx5: fix MPLS RSS expansion
4235+* net/mlx5: fix overflow in mempool argument
4236+* net/mlx5: fix representor interrupt handler
4237+* net/mlx5: fix RoCE LAG bond device probing
4238+* net/mlx5: fix RSS flow item expansion for GRE key
4239+* net/mlx5: fix Rx/Tx queue checks
4240+* net/mlx5: fix switchdev mode recognition
4241+* net/mlx5: fix typo in vectorized Rx comments
4242+* net/mlx5: limit implicit MPLS RSS expansion over GRE
4243+* net/mlx5: limit inner RSS expansion for MPLS
4244+* net/mlx5: remove redundant operations in NEON Rx
4245+* net/mlx5: remove unsupported flow item MPLS over IP
4246+* net/mlx5: workaround drop action with old kernel
4247+* net/mvpp2: fix configured state dependency
4248+* net/mvpp2: fix port speed overflow
4249+* net/octeontx2: fix default MCAM allocation size
4250+* net/octeontx2: fix flow creation limit on CN98xx
4251+* net/octeontx2: use runtime LSO format indices
4252+* net/octeontx/base: fix debug build with clang
4253+* net/pfe: remove unnecessary null check
4254+* net/sfc: fix MAC stats lock in xstats query by ID
4255+* net/sfc: fix MAC stats update for stopped device
4256+* net/sfc: fix reading adapter state without locking
4257+* net/sfc: fix xstats query by ID according to ethdev
4258+* net/sfc: fix xstats query by unsorted list of IDs
4259+* net/softnic: fix connection memory leak
4260+* net/softnic: fix memory leak as profile is freed
4261+* net/virtio: fix aarch32 build
4262+* net/virtio: fix refill order in packed ring datapath
4263+* net/virtio: report maximum MTU in device info
4264+* power: fix namespace for internal struct
4265+* rib: fix max depth IPv6 lookup
4266+* (tag: v19.11.10-rc1) version: 19.11.10-rc1
4267+* test/crypto: fix mbuf reset after null check
4268+* test/crypto: fix mempool size for session-less
4269+* test/crypto: fix typo in AES case
4270+* test/crypto: fix typo in ESN case
4271+* test/mbuf: fix virtual address conversion
4272+* tests/eal: fix memory leak
4273+* vhost/crypto: check request pointer before dereference
4274+* vhost: fix crash on reconnect
4275+* vhost: fix missing guest pages table NUMA realloc
4276+* vhost: fix missing memory table NUMA realloc
4277+* vhost: utilize dynamic memory allocator
4278+
4279+19.11.10 Validation
4280+~~~~~~~~~~~~~~~~~~~
4281+
4282+* [Intel(R) Testing](http://mails.dpdk.org/archives/stable/2021-August/033130.html)
4283+
4284+ * Builds
4285+
4286+ * Basic Intel NIC (ixgbe, i40e) testing
4287+
4288+ * PF (i40e)
4289+ * PF (ixgbe)
4290+ * VF (i40e)
4291+ * VF (ixgbe)
4292+ * Compile Testing
4293+ * Intel NIC single core/NIC performance
4294+
4295+ * Basic cryptodev and virtio testing
4296+
4297+ * vhost/virtio basic loopback, PVP and performance test
4298+ * cryptodev Function/Performance
4299+
4300+* [Intel(R) Testing with Open vSwitch]
4301+
4302+ * OVS build and link testing with OVS 2.13 (make based)
4303+ * OVS build and link testing with OVS 2.14 (make based)
4304+ * VSPERF tests
4305+
4306+ * phy2phy_tput
4307+ * pvp_tput
4308+ * pvp_cont
4309+ * pvvp_tput
4310+ * pvpv_cont
4311+ * ovsdpdk_jumbo_p2p
4312+ * ovsdpdk_jumbo_pvp
4313+ * ovsdpdk_jumbo_p2p_upper_bound
4314+ * ovsdpdk_mq_pvp_rxqs_testpmd
4315+ * ovsdpdk_mq_pvp_rxqs_linux_bridge
4316+
4317+* [Canonical(R) Testing](http://mails.dpdk.org/archives/stable/2021-August/033126.html)
4318+
4319+ * Build tests of DPDK & OVS 2.13.3 on Ubuntu 20.04 (meson based)
4320+ * Build tests of DPDK & OVS 2.13.3 on Ubuntu 20.10 (meson based)
4321+ * Functional and performance tests based on OVS-DPDK on x86_64
4322+ * Autopkgtests for DPDK and OpenvSwitch
4323+
4324+* [Red Hat(R) Testing](http://mails.dpdk.org/archives/stable/2021-September/033218.html)
4325+
4326+ * Platform
4327+
4328+ * RHEL 8
4329+ * Kernel 4.18
4330+ * Qemu 6.0
4331+ * X540-AT2 NIC(ixgbe, 10G)
4332+ * Tested on 19.11.9-RC3
4333+
4334+ * Tests
4335+
4336+ * Guest with device assignment(PF) throughput testing(1G hugepage size): PASS
4337+ * Guest with device assignment(PF) throughput testing(2M hugepage size) : PASS
4338+ * Guest with device assignment(VF) throughput testing: PASS
4339+ * PVP (host dpdk testpmd as vswitch) 1Q: throughput testing: PASS
4340+ * PVP vhost-user 2Q throughput testing: PASS
4341+ * PVP vhost-user 1Q - cross numa node throughput testing: PASS
4342+ * Guest with vhost-user 2 queues throughput testing: PASS
4343+ * vhost-user reconnect with dpdk-client, qemu-server: qemu reconnect: PASS
4344+ * vhost-user reconnect with dpdk-client, qemu-server: ovs reconnect: PASS
4345+ * PVP 1Q live migration testing: PASS
4346+ * PVP 1Q cross numa node live migration testing: PASS
4347+ * Guest with ovs+dpdk+vhost-user 1Q live migration testing: PASS
4348+ * Guest with ovs+dpdk+vhost-user 1Q live migration testing (2M): PASS
4349+ * Guest with ovs+dpdk+vhost-user 2Q live migration testing: PASS
4350+ * Host PF + DPDK testing: PASS
4351+ * Host VF + DPDK testing: PASS
4352+
4353+* [Nvidia (R) Testing](http://mails.dpdk.org/archives/stable/2021-August/033131.html)
4354+
4355+ * functional tests on Mellanox hardware
4356+
4357+ * NIC: ConnectX-4 Lx / OS: Ubuntu 20.04 LTS / Driver: MLNX_OFED_LINUX-5.4-1.0.3.0 / Firmware: 14.31.1014
4358+ * NIC: ConnectX-4 Lx / OS: Ubuntu 20.04 LTS / kernel: 5.14.0-rc7 / Driver: rdma-core v36.0 / Firmware: 14.31.1014
4359+ * NIC: ConnectX-5 / OS: Ubuntu 20.04 LTS / Driver: MLNX_OFED_LINUX-5.4-1.0.3.0 / Firmware: 16.31.1014
4360+ * NIC: ConnectX-5 / OS: Ubuntu 20.04 LTS / kernel: 5.14.0-rc7 / Driver: v36.0 / Firmware: 16.31.1014
4361+
4362+ * Basic functionality:
4363+
4364+ * Send and receive multiple types of traffic.
4365+ * testpmd xstats counter test.
4366+ * testpmd timestamp test.
4367+ * Changing/checking link status through testpmd.
4368+ * RTE flow tests: Items: eth / vlan / ipv4 / ipv6 / tcp / udp / icmp / gre / nvgre / vxlan ip in ip / mplsoudp / mplsogre
4369+ * Actions: drop / queue / rss / mark / flag / jump / count / raw_encap / raw_decap / vxlan_encap / vxlan_decap / NAT / dec_ttl
4370+ * Some RSS tests.
4371+ * VLAN filtering, stripping and insertion tests.
4372+ * Checksum and TSO tests.
4373+ * ptype tests.
4374+ * link_status_interrupt example application tests.
4375+ * l3fwd-power example application tests.
4376+ * Multi-process example applications tests.
4377+
4378+ * Compilation tests with multiple configurations in the following OS/driver combinations are also passing:
4379+
4380+ * Ubuntu 20.04.2 with MLNX_OFED_LINUX-5.4-1.0.3.0.
4381+ * Ubuntu 20.04.2 with rdma-core master (64d1ae5).
4382+ * Ubuntu 20.04.2 with rdma-core v28.0.
4383+ * Ubuntu 18.04.5 with rdma-core v17.1.
4384+ * Ubuntu 18.04.5 with rdma-core master (5b0f5b2) (i386).
4385+ * Ubuntu 16.04.7 with rdma-core v22.7.
4386+ * Fedora 34 with rdma-core v36.0.
4387+ * Fedora 35 (Rawhide) with rdma-core v36.0 (only with gcc).
4388+ * CentOS 7 7.9.2009 with rdma-core master (64d1ae5).
4389+ * CentOS 7 7.9.2009 with MLNX_OFED_LINUX-5.4-1.0.3.0.
4390+ * CentOS 8 8.3.2011 with rdma-core master (64d1ae5).
4391+ * OpenSUSE Leap 15.3 with rdma-core v31.0.
4392+
4393+19.11.10 Known Issues
4394+~~~~~~~~~~~~~~~~~~~~~
4395+
4396+A few issues are still present, but none of them is an in-place regression.
4397+So far they are all issues with newer compilers, toolchains and kernels that
4398+happen to be incompatible with the 19.11.x code.
4399+
4400+* Due to a kernel patch backport in SUSE Linux Enterprise Server 15 SP3
4401+ [compilation of kni fails there](https://bugs.dpdk.org/show_bug.cgi?id=728).
4402+ A fix would break existing SP2 installation and
4403+ [further options are discussed](http://mails.dpdk.org/archives/stable/2021-June/031210.html)
4404+
4405+* A [Build issue with clang 12.0.1](https://bugs.dpdk.org/show_bug.cgi?id=745)
4406+
4407+* A make [build issue with Fedora 34 with GCC11](https://bugs.dpdk.org/show_bug.cgi?id=744)
4408+
4409+* Meson based [build issues with ICC-19.1.1](https://bugs.dpdk.org/show_bug.cgi?id=747)
4410diff --git a/doc/guides/rel_notes/release_2_2.rst b/doc/guides/rel_notes/release_2_2.rst
4411index cea5c87..8273473 100644
4412--- a/doc/guides/rel_notes/release_2_2.rst
4413+++ b/doc/guides/rel_notes/release_2_2.rst
4414@@ -322,7 +322,7 @@ Drivers
4415
4416 Several customers have reported a link flap issue on 82579. The symptoms
4417 are random and intermittent link losses when 82579 is connected to specific
4418- switches. the Issue was root caused as an inter-operability problem between
4419+ switches. the Issue was root caused as an interoperability problem between
4420 the NIC and at least some Broadcom PHYs in the Energy Efficient Ethernet
4421 wake mechanism.
4422
4423diff --git a/doc/guides/sample_app_ug/l2_forward_cat.rst b/doc/guides/sample_app_ug/l2_forward_cat.rst
4424index 0a81320..2b4651e 100644
4425--- a/doc/guides/sample_app_ug/l2_forward_cat.rst
4426+++ b/doc/guides/sample_app_ug/l2_forward_cat.rst
4427@@ -198,7 +198,7 @@ queried for system CPU information and L3CA capabilities via
4428 ``pqos_cap_get(...)`` and ``pqos_cap_get_type(..., PQOS_CAP_TYPE_L3CA, ...)``
4429 calls. When all capability and topology information is collected, the requested
4430 CAT configuration is validated. A check is then performed (on per socket basis)
4431-for a sufficient number of un-associated COS. COS are selected and
4432+for a sufficient number of unassociated COS. COS are selected and
4433 configured via the ``pqos_l3ca_set(...)`` call. Finally, COS are associated to
4434 relevant CPUs via ``pqos_l3ca_assoc_set(...)`` calls.
4435
4436diff --git a/doc/guides/sample_app_ug/performance_thread.rst b/doc/guides/sample_app_ug/performance_thread.rst
4437index 5fed464..a2db452 100644
4438--- a/doc/guides/sample_app_ug/performance_thread.rst
4439+++ b/doc/guides/sample_app_ug/performance_thread.rst
4440@@ -1194,7 +1194,7 @@ Tracing of events can be individually masked, and the mask may be programmed
4441 at run time. An unmasked event results in a callback that provides information
4442 about the event. The default callback simply prints trace information. The
4443 default mask is 0 (all events off) the mask can be modified by calling the
4444-function ``lthread_diagniostic_set_mask()``.
4445+function ``lthread_diagnostic_set_mask()``.
4446
4447 It is possible register a user callback function to implement more
4448 sophisticated diagnostic functions.
4449diff --git a/doc/guides/sample_app_ug/vhost.rst b/doc/guides/sample_app_ug/vhost.rst
4450index a71ada6..66e804d 100644
4451--- a/doc/guides/sample_app_ug/vhost.rst
4452+++ b/doc/guides/sample_app_ug/vhost.rst
4453@@ -72,7 +72,7 @@ Run testpmd inside guest
4454 ~~~~~~~~~~~~~~~~~~~~~~~~
4455
4456 Make sure you have DPDK built inside the guest. Also make sure the
4457-corresponding virtio-net PCI device is bond to a uio driver, which
4458+corresponding virtio-net PCI device is bond to a UIO driver, which
4459 could be done by:
4460
4461 .. code-block:: console
4462diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
4463index 17a41c2..e727126 100644
4464--- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst
4465+++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst
4466@@ -3944,7 +3944,8 @@ This section lists supported pattern items and their attributes, if any.
4467 - ``gtp_psc``: match GTP PDU extension header with type 0x85.
4468
4469 - ``pdu_type {unsigned}``: PDU type.
4470- - ``qfi {unsigned}``: QoS flow identifier.
4471+
4472+ - ``qfi {unsigned}``: PPP, RQI and QoS flow identifier.
4473
4474 - ``pppoes``, ``pppoed``: match PPPoE header.
4475
4476@@ -4732,7 +4733,7 @@ Sample Raw encapsulation rule
4477
4478 Raw encapsulation configuration can be set by the following commands
4479
4480-Eecapsulating VxLAN::
4481+Encapsulating VxLAN::
4482
4483 testpmd> set raw_encap 4 eth src is 10:11:22:33:44:55 / vlan tci is 1
4484 inner_type is 0x0800 / ipv4 / udp dst is 4789 / vxlan vni
4485diff --git a/drivers/bus/dpaa/base/fman/fman.c b/drivers/bus/dpaa/base/fman/fman.c
4486index 6d77a7e..4affce4 100644
4487--- a/drivers/bus/dpaa/base/fman/fman.c
4488+++ b/drivers/bus/dpaa/base/fman/fman.c
4489@@ -50,7 +50,7 @@ if_destructor(struct __fman_if *__if)
4490 free(bp);
4491 }
4492 cleanup:
4493- free(__if);
4494+ rte_free(__if);
4495 }
4496
4497 static int
4498diff --git a/drivers/bus/dpaa/base/fman/fman_hw.c b/drivers/bus/dpaa/base/fman/fman_hw.c
4499index 9ab8e83..d28ed0b 100644
4500--- a/drivers/bus/dpaa/base/fman/fman_hw.c
4501+++ b/drivers/bus/dpaa/base/fman/fman_hw.c
4502@@ -1,6 +1,6 @@
4503 /* SPDX-License-Identifier: BSD-3-Clause
4504 *
4505- * Copyright 2017 NXP
4506+ * Copyright 2017,2020 NXP
4507 *
4508 */
4509
4510@@ -219,20 +219,20 @@ fman_if_stats_get(struct fman_if *p, struct rte_eth_stats *stats)
4511 struct memac_regs *regs = m->ccsr_map;
4512
4513 /* read recved packet count */
4514- stats->ipackets = ((u64)in_be32(&regs->rfrm_u)) << 32 |
4515- in_be32(&regs->rfrm_l);
4516- stats->ibytes = ((u64)in_be32(&regs->roct_u)) << 32 |
4517- in_be32(&regs->roct_l);
4518- stats->ierrors = ((u64)in_be32(&regs->rerr_u)) << 32 |
4519- in_be32(&regs->rerr_l);
4520+ stats->ipackets = (u64)in_be32(&regs->rfrm_l) |
4521+ ((u64)in_be32(&regs->rfrm_u)) << 32;
4522+ stats->ibytes = (u64)in_be32(&regs->roct_l) |
4523+ ((u64)in_be32(&regs->roct_u)) << 32;
4524+ stats->ierrors = (u64)in_be32(&regs->rerr_l) |
4525+ ((u64)in_be32(&regs->rerr_u)) << 32;
4526
4527 /* read xmited packet count */
4528- stats->opackets = ((u64)in_be32(&regs->tfrm_u)) << 32 |
4529- in_be32(&regs->tfrm_l);
4530- stats->obytes = ((u64)in_be32(&regs->toct_u)) << 32 |
4531- in_be32(&regs->toct_l);
4532- stats->oerrors = ((u64)in_be32(&regs->terr_u)) << 32 |
4533- in_be32(&regs->terr_l);
4534+ stats->opackets = (u64)in_be32(&regs->tfrm_l) |
4535+ ((u64)in_be32(&regs->tfrm_u)) << 32;
4536+ stats->obytes = (u64)in_be32(&regs->toct_l) |
4537+ ((u64)in_be32(&regs->toct_u)) << 32;
4538+ stats->oerrors = (u64)in_be32(&regs->terr_l) |
4539+ ((u64)in_be32(&regs->terr_u)) << 32;
4540 }
4541
4542 void
4543@@ -244,10 +244,9 @@ fman_if_stats_get_all(struct fman_if *p, uint64_t *value, int n)
4544 uint64_t base_offset = offsetof(struct memac_regs, reoct_l);
4545
4546 for (i = 0; i < n; i++)
4547- value[i] = ((u64)in_be32((char *)regs
4548- + base_offset + 8 * i + 4)) << 32 |
4549- ((u64)in_be32((char *)regs
4550- + base_offset + 8 * i));
4551+ value[i] = (((u64)in_be32((char *)regs + base_offset + 8 * i) |
4552+ (u64)in_be32((char *)regs + base_offset +
4553+ 8 * i + 4)) << 32);
4554 }
4555
4556 void
4557diff --git a/drivers/bus/dpaa/base/fman/netcfg_layer.c b/drivers/bus/dpaa/base/fman/netcfg_layer.c
4558index 36eca88..2ec504c 100644
4559--- a/drivers/bus/dpaa/base/fman/netcfg_layer.c
4560+++ b/drivers/bus/dpaa/base/fman/netcfg_layer.c
4561@@ -8,7 +8,7 @@
4562 #include <dpaa_of.h>
4563 #include <net/if.h>
4564 #include <sys/ioctl.h>
4565-#include <error.h>
4566+#include <err.h>
4567 #include <net/if_arp.h>
4568 #include <assert.h>
4569 #include <unistd.h>
4570@@ -89,7 +89,7 @@ netcfg_acquire(void)
4571 */
4572 skfd = socket(AF_PACKET, SOCK_RAW, 0);
4573 if (unlikely(skfd < 0)) {
4574- error(0, errno, "%s(): open(SOCK_RAW)", __func__);
4575+ err(0, "%s(): open(SOCK_RAW)", __func__);
4576 return NULL;
4577 }
4578
4579diff --git a/drivers/bus/dpaa/base/qbman/bman_driver.c b/drivers/bus/dpaa/base/qbman/bman_driver.c
4580index 750b756..ee35e03 100644
4581--- a/drivers/bus/dpaa/base/qbman/bman_driver.c
4582+++ b/drivers/bus/dpaa/base/qbman/bman_driver.c
4583@@ -11,6 +11,7 @@
4584 #include <process.h>
4585 #include "bman_priv.h"
4586 #include <sys/ioctl.h>
4587+#include <err.h>
4588
4589 /*
4590 * Global variables of the max portal/pool number this bman version supported
4591@@ -40,7 +41,8 @@ static int fsl_bman_portal_init(uint32_t idx, int is_shared)
4592 ret = pthread_getaffinity_np(pthread_self(), sizeof(cpu_set_t),
4593 &cpuset);
4594 if (ret) {
4595- error(0, ret, "pthread_getaffinity_np()");
4596+ errno = ret;
4597+ err(0, "pthread_getaffinity_np()");
4598 return ret;
4599 }
4600 pcfg.cpu = -1;
4601@@ -60,7 +62,8 @@ static int fsl_bman_portal_init(uint32_t idx, int is_shared)
4602 map.index = idx;
4603 ret = process_portal_map(&map);
4604 if (ret) {
4605- error(0, ret, "process_portal_map()");
4606+ errno = ret;
4607+ err(0, "process_portal_map()");
4608 return ret;
4609 }
4610 /* Make the portal's cache-[enabled|inhibited] regions */
4611@@ -104,8 +107,10 @@ static int fsl_bman_portal_finish(void)
4612 cfg = bman_destroy_affine_portal();
4613 DPAA_BUG_ON(cfg != &pcfg);
4614 ret = process_portal_unmap(&map.addr);
4615- if (ret)
4616- error(0, ret, "process_portal_unmap()");
4617+ if (ret) {
4618+ errno = ret;
4619+ err(0, "process_portal_unmap()");
4620+ }
4621 return ret;
4622 }
4623
4624diff --git a/drivers/bus/dpaa/base/qbman/qman_driver.c b/drivers/bus/dpaa/base/qbman/qman_driver.c
4625index e1dee17..2aa3b68 100644
4626--- a/drivers/bus/dpaa/base/qbman/qman_driver.c
4627+++ b/drivers/bus/dpaa/base/qbman/qman_driver.c
4628@@ -9,6 +9,8 @@
4629 #include <process.h>
4630 #include "qman_priv.h"
4631 #include <sys/ioctl.h>
4632+#include <err.h>
4633+
4634 #include <rte_branch_prediction.h>
4635
4636 /* Global variable containing revision id (even on non-control plane systems
4637@@ -40,7 +42,8 @@ static int fsl_qman_portal_init(uint32_t index, int is_shared)
4638 map.index = index;
4639 ret = process_portal_map(&map);
4640 if (ret) {
4641- error(0, ret, "process_portal_map()");
4642+ errno = ret;
4643+ err(0, "process_portal_map()");
4644 return ret;
4645 }
4646 qpcfg.channel = map.channel;
4647@@ -86,8 +89,10 @@ static int fsl_qman_portal_finish(void)
4648 cfg = qman_destroy_affine_portal(NULL);
4649 DPAA_BUG_ON(cfg != &qpcfg);
4650 ret = process_portal_unmap(&map.addr);
4651- if (ret)
4652- error(0, ret, "process_portal_unmap()");
4653+ if (ret) {
4654+ errno = ret;
4655+ err(0, "process_portal_unmap()");
4656+ }
4657 return ret;
4658 }
4659
4660@@ -136,7 +141,8 @@ struct qman_portal *fsl_qman_fq_portal_create(int *fd)
4661
4662 q_pcfg = kzalloc((sizeof(struct qm_portal_config)), 0);
4663 if (!q_pcfg) {
4664- error(0, -1, "q_pcfg kzalloc failed");
4665+ /* kzalloc sets errno */
4666+ err(0, "q_pcfg kzalloc failed");
4667 return NULL;
4668 }
4669
4670@@ -145,7 +151,8 @@ struct qman_portal *fsl_qman_fq_portal_create(int *fd)
4671 q_map.index = QBMAN_ANY_PORTAL_IDX;
4672 ret = process_portal_map(&q_map);
4673 if (ret) {
4674- error(0, ret, "process_portal_map()");
4675+ errno = ret;
4676+ err(0, "process_portal_map()");
4677 kfree(q_pcfg);
4678 return NULL;
4679 }
4680diff --git a/drivers/bus/dpaa/include/fsl_qman.h b/drivers/bus/dpaa/include/fsl_qman.h
4681index 4deea5e..2660234 100644
4682--- a/drivers/bus/dpaa/include/fsl_qman.h
4683+++ b/drivers/bus/dpaa/include/fsl_qman.h
4684@@ -16,7 +16,7 @@ extern "C" {
4685 #include <rte_eventdev.h>
4686
4687 /* FQ lookups (turn this on for 64bit user-space) */
4688-#if (__WORDSIZE == 64)
4689+#ifdef RTE_ARCH_64
4690 #define CONFIG_FSL_QMAN_FQ_LOOKUP
4691 /* if FQ lookups are supported, this controls the number of initialised,
4692 * s/w-consumed FQs that can be supported at any one time.
4693diff --git a/drivers/bus/dpaa/include/netcfg.h b/drivers/bus/dpaa/include/netcfg.h
4694index bf7bfae..e1f0461 100644
4695--- a/drivers/bus/dpaa/include/netcfg.h
4696+++ b/drivers/bus/dpaa/include/netcfg.h
4697@@ -9,7 +9,6 @@
4698 #define __NETCFG_H
4699
4700 #include <fman.h>
4701-#include <argp.h>
4702
4703 /* Configuration information related to a specific ethernet port */
4704 struct fm_eth_port_cfg {
4705diff --git a/drivers/bus/fslmc/fslmc_logs.h b/drivers/bus/fslmc/fslmc_logs.h
4706index dd74cb7..a1e14dd 100644
4707--- a/drivers/bus/fslmc/fslmc_logs.h
4708+++ b/drivers/bus/fslmc/fslmc_logs.h
4709@@ -18,8 +18,6 @@ extern int dpaa2_logtype_bus;
4710 rte_log(RTE_LOG_DEBUG, dpaa2_logtype_bus, "fslmc: %s(): " fmt "\n", \
4711 __func__, ##args)
4712
4713-#define BUS_INIT_FUNC_TRACE() DPAA2_BUS_DEBUG(" >>")
4714-
4715 #define DPAA2_BUS_INFO(fmt, args...) \
4716 DPAA2_BUS_LOG(INFO, fmt, ## args)
4717 #define DPAA2_BUS_ERR(fmt, args...) \
4718diff --git a/drivers/bus/fslmc/qbman/qbman_portal.c b/drivers/bus/fslmc/qbman/qbman_portal.c
4719index 54bea97..e88cecc 100644
4720--- a/drivers/bus/fslmc/qbman/qbman_portal.c
4721+++ b/drivers/bus/fslmc/qbman/qbman_portal.c
4722@@ -311,17 +311,9 @@ struct qbman_swp *qbman_swp_init(const struct qbman_swp_desc *d)
4723 eqcr_pi = qbman_cinh_read(&p->sys, QBMAN_CINH_SWP_EQCR_PI);
4724 p->eqcr.pi = eqcr_pi & p->eqcr.pi_ci_mask;
4725 p->eqcr.pi_vb = eqcr_pi & QB_VALID_BIT;
4726- if ((p->desc.qman_version & QMAN_REV_MASK) >= QMAN_REV_5000
4727- && (d->cena_access_mode == qman_cena_fastest_access))
4728- p->eqcr.ci = qbman_cinh_read(&p->sys, QBMAN_CINH_SWP_EQCR_PI)
4729- & p->eqcr.pi_ci_mask;
4730- else
4731- p->eqcr.ci = qbman_cinh_read(&p->sys, QBMAN_CINH_SWP_EQCR_CI)
4732- & p->eqcr.pi_ci_mask;
4733- p->eqcr.available = p->eqcr.pi_ring_size -
4734- qm_cyc_diff(p->eqcr.pi_ring_size,
4735- p->eqcr.ci & (p->eqcr.pi_ci_mask<<1),
4736- p->eqcr.pi & (p->eqcr.pi_ci_mask<<1));
4737+ p->eqcr.ci = qbman_cinh_read(&p->sys, QBMAN_CINH_SWP_EQCR_CI)
4738+ & p->eqcr.pi_ci_mask;
4739+ p->eqcr.available = p->eqcr.pi_ring_size;
4740
4741 portal_idx_map[p->desc.idx] = p;
4742 return p;
4743diff --git a/drivers/bus/pci/pci_common.c b/drivers/bus/pci/pci_common.c
4744index ab73c00..cabfe69 100644
4745--- a/drivers/bus/pci/pci_common.c
4746+++ b/drivers/bus/pci/pci_common.c
4747@@ -18,6 +18,7 @@
4748 #include <rte_bus.h>
4749 #include <rte_pci.h>
4750 #include <rte_bus_pci.h>
4751+#include <rte_lcore.h>
4752 #include <rte_per_lcore.h>
4753 #include <rte_memory.h>
4754 #include <rte_eal.h>
4755@@ -150,7 +151,9 @@ rte_pci_probe_one_driver(struct rte_pci_driver *dr,
4756 }
4757
4758 if (dev->device.numa_node < 0) {
4759- RTE_LOG(WARNING, EAL, " Invalid NUMA socket, default to 0\n");
4760+ if (rte_socket_count() > 1)
4761+ RTE_LOG(INFO, EAL, "Device %s is not NUMA-aware, defaulting socket to 0\n",
4762+ dev->name);
4763 dev->device.numa_node = 0;
4764 }
4765
4766diff --git a/drivers/bus/vmbus/vmbus_common.c b/drivers/bus/vmbus/vmbus_common.c
4767index 3adef01..34676c4 100644
4768--- a/drivers/bus/vmbus/vmbus_common.c
4769+++ b/drivers/bus/vmbus/vmbus_common.c
4770@@ -15,6 +15,7 @@
4771 #include <rte_eal.h>
4772 #include <rte_tailq.h>
4773 #include <rte_devargs.h>
4774+#include <rte_lcore.h>
4775 #include <rte_malloc.h>
4776 #include <rte_errno.h>
4777 #include <rte_memory.h>
4778@@ -113,7 +114,9 @@ vmbus_probe_one_driver(struct rte_vmbus_driver *dr,
4779 dev->driver = dr;
4780
4781 if (dev->device.numa_node < 0) {
4782- VMBUS_LOG(WARNING, " Invalid NUMA socket, default to 0");
4783+ if (rte_socket_count() > 1)
4784+ VMBUS_LOG(INFO, "Device %s is not NUMA-aware, defaulting socket to 0",
4785+ guid);
4786 dev->device.numa_node = 0;
4787 }
4788
4789diff --git a/drivers/common/dpaax/Makefile b/drivers/common/dpaax/Makefile
4790index 59bd8ae..ff4f898 100644
4791--- a/drivers/common/dpaax/Makefile
4792+++ b/drivers/common/dpaax/Makefile
4793@@ -16,6 +16,7 @@ CFLAGS += -Wno-pointer-arith
4794 CFLAGS += -Wno-cast-qual
4795
4796 CFLAGS += -I$(RTE_SDK)/drivers/common/dpaax
4797+CFLAGS += -I$(RTE_SDK)/drivers/common/dpaax/caamflib
4798
4799 # versioning export map
4800 EXPORT_MAP := rte_common_dpaax_version.map
4801@@ -23,7 +24,7 @@ EXPORT_MAP := rte_common_dpaax_version.map
4802 #
4803 # all source are stored in SRCS-y
4804 #
4805-SRCS-y += dpaax_iova_table.c dpaa_of.c
4806+SRCS-y += dpaax_iova_table.c dpaa_of.c caamflib.c
4807
4808 LDLIBS += -lrte_eal
4809
4810diff --git a/drivers/common/dpaax/caamflib.c b/drivers/common/dpaax/caamflib.c
4811new file mode 100644
4812index 0000000..55e2028
4813--- /dev/null
4814+++ b/drivers/common/dpaax/caamflib.c
4815@@ -0,0 +1,16 @@
4816+/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
4817+ *
4818+ * Copyright 2020 NXP
4819+ *
4820+ */
4821+
4822+#include <rta.h>
4823+
4824+/*
4825+ * SEC HW block revision.
4826+ *
4827+ * This *must not be confused with SEC version*:
4828+ * - SEC HW block revision format is "v"
4829+ * - SEC revision format is "x.y"
4830+ */
4831+enum rta_sec_era rta_sec_era;
4832diff --git a/drivers/common/dpaax/caamflib/compat.h b/drivers/common/dpaax/caamflib/compat.h
4833index ce946cc..95d887a 100644
4834--- a/drivers/common/dpaax/caamflib/compat.h
4835+++ b/drivers/common/dpaax/caamflib/compat.h
4836@@ -11,7 +11,7 @@
4837 #include <stdint.h>
4838 #include <errno.h>
4839
4840-#ifdef __GLIBC__
4841+#ifdef RTE_EXEC_ENV_LINUX
4842 #include <string.h>
4843 #include <stdlib.h>
4844 #include <stdio.h>
4845@@ -24,7 +24,7 @@
4846 #error "Undefined endianness"
4847 #endif
4848
4849-#else
4850+#else /* !RTE_EXEC_ENV_LINUX */
4851 #error Environment not supported!
4852 #endif
4853
4854@@ -40,7 +40,7 @@
4855 #define __maybe_unused __attribute__((unused))
4856 #endif
4857
4858-#if defined(__GLIBC__) && !defined(pr_debug)
4859+#if !defined(pr_debug)
4860 #if !defined(SUPPRESS_PRINTS) && defined(RTA_DEBUG)
4861 #define pr_debug(fmt, ...) \
4862 RTE_LOG(DEBUG, PMD, "%s(): " fmt "\n", __func__, ##__VA_ARGS__)
4863@@ -49,7 +49,7 @@
4864 #endif
4865 #endif /* pr_debug */
4866
4867-#if defined(__GLIBC__) && !defined(pr_err)
4868+#if !defined(pr_err)
4869 #if !defined(SUPPRESS_PRINTS)
4870 #define pr_err(fmt, ...) \
4871 RTE_LOG(ERR, PMD, "%s(): " fmt "\n", __func__, ##__VA_ARGS__)
4872@@ -58,7 +58,7 @@
4873 #endif
4874 #endif /* pr_err */
4875
4876-#if defined(__GLIBC__) && !defined(pr_warn)
4877+#if !defined(pr_warn)
4878 #if !defined(SUPPRESS_PRINTS)
4879 #define pr_warn(fmt, ...) \
4880 RTE_LOG(WARNING, PMD, "%s(): " fmt "\n", __func__, ##__VA_ARGS__)
4881@@ -101,7 +101,7 @@
4882 #endif
4883
4884 /* Use Linux naming convention */
4885-#ifdef __GLIBC__
4886+#if defined(RTE_EXEC_ENV_LINUX) || defined(__GLIBC__)
4887 #define swab16(x) rte_bswap16(x)
4888 #define swab32(x) rte_bswap32(x)
4889 #define swab64(x) rte_bswap64(x)
4890diff --git a/drivers/common/dpaax/compat.h b/drivers/common/dpaax/compat.h
4891index 12c9d99..d2883d0 100644
4892--- a/drivers/common/dpaax/compat.h
4893+++ b/drivers/common/dpaax/compat.h
4894@@ -34,7 +34,6 @@
4895 #include <assert.h>
4896 #include <dirent.h>
4897 #include <inttypes.h>
4898-#include <error.h>
4899 #include <rte_byteorder.h>
4900 #include <rte_atomic.h>
4901 #include <rte_spinlock.h>
4902diff --git a/drivers/common/dpaax/dpaax_iova_table.c b/drivers/common/dpaax/dpaax_iova_table.c
4903index 98b076e..3f3be4f 100644
4904--- a/drivers/common/dpaax/dpaax_iova_table.c
4905+++ b/drivers/common/dpaax/dpaax_iova_table.c
4906@@ -369,8 +369,10 @@ dpaax_iova_table_dump(void)
4907 }
4908
4909 DPAAX_DEBUG(" === Start of PA->VA Translation Table ===");
4910- if (dpaax_iova_table_p == NULL)
4911+ if (dpaax_iova_table_p == NULL) {
4912 DPAAX_DEBUG("\tNULL");
4913+ return;
4914+ }
4915
4916 entry = dpaax_iova_table_p->entries;
4917 for (i = 0; i < dpaax_iova_table_p->count; i++) {
4918diff --git a/drivers/common/dpaax/meson.build b/drivers/common/dpaax/meson.build
4919index d41bb50..dc3e26d 100644
4920--- a/drivers/common/dpaax/meson.build
4921+++ b/drivers/common/dpaax/meson.build
4922@@ -8,7 +8,9 @@ if not is_linux
4923 reason = 'only supported on linux'
4924 endif
4925
4926-sources = files('dpaax_iova_table.c', 'dpaa_of.c')
4927+sources = files('dpaax_iova_table.c', 'dpaa_of.c', 'caamflib.c')
4928+
4929+includes += include_directories('caamflib')
4930
4931 cflags += ['-D_GNU_SOURCE']
4932 if cc.has_argument('-Wno-cast-qual')
4933diff --git a/drivers/common/dpaax/rte_common_dpaax_version.map b/drivers/common/dpaax/rte_common_dpaax_version.map
4934index f72eba7..837ce01 100644
4935--- a/drivers/common/dpaax/rte_common_dpaax_version.map
4936+++ b/drivers/common/dpaax/rte_common_dpaax_version.map
4937@@ -21,3 +21,7 @@ DPDK_20.0 {
4938
4939 local: *;
4940 };
4941+
4942+INTERNAL {
4943+ rta_sec_era;
4944+};
4945diff --git a/drivers/common/octeontx2/otx2_dev.h b/drivers/common/octeontx2/otx2_dev.h
4946index 7d9839c..61d8ff6 100644
4947--- a/drivers/common/octeontx2/otx2_dev.h
4948+++ b/drivers/common/octeontx2/otx2_dev.h
4949@@ -46,6 +46,9 @@
4950 ((RVU_PCI_REV_MAJOR(otx2_dev_revid(dev)) == 0x0) && \
4951 (RVU_PCI_REV_MIDR_ID(otx2_dev_revid(dev)) == 0x0))
4952
4953+#define otx2_dev_is_98xx(dev) \
4954+ (RVU_PCI_REV_MIDR_ID(otx2_dev_revid(dev)) == 0x3)
4955+
4956 struct otx2_dev;
4957
4958 /* Link status callback */
4959diff --git a/drivers/common/qat/qat_device.h b/drivers/common/qat/qat_device.h
4960index c3f5ae8..7460dfd 100644
4961--- a/drivers/common/qat/qat_device.h
4962+++ b/drivers/common/qat/qat_device.h
4963@@ -29,7 +29,7 @@ struct qat_dev_cmd_param {
4964 enum qat_comp_num_im_buffers {
4965 QAT_NUM_INTERM_BUFS_GEN1 = 12,
4966 QAT_NUM_INTERM_BUFS_GEN2 = 20,
4967- QAT_NUM_INTERM_BUFS_GEN3 = 20
4968+ QAT_NUM_INTERM_BUFS_GEN3 = 64
4969 };
4970
4971 struct qat_device_info {
4972diff --git a/drivers/compress/qat/qat_comp.c b/drivers/compress/qat/qat_comp.c
4973index 533e34f..cd06809 100644
4974--- a/drivers/compress/qat/qat_comp.c
4975+++ b/drivers/compress/qat/qat_comp.c
4976@@ -68,8 +68,8 @@ qat_comp_build_request(void *in_op, uint8_t *out_msg,
4977 ICP_QAT_FW_COMP_EOP
4978 : ICP_QAT_FW_COMP_NOT_EOP,
4979 ICP_QAT_FW_COMP_NOT_BFINAL,
4980- ICP_QAT_FW_COMP_NO_CNV,
4981- ICP_QAT_FW_COMP_NO_CNV_RECOVERY);
4982+ ICP_QAT_FW_COMP_CNV,
4983+ ICP_QAT_FW_COMP_CNV_RECOVERY);
4984 }
4985
4986 if (likely(qat_xform->qat_comp_request_type ==
4987@@ -286,7 +286,8 @@ qat_comp_process_response(void **op, uint8_t *resp, void *op_cookie,
4988 rx_op->status = RTE_COMP_OP_STATUS_ERROR;
4989 rx_op->debug_status = ERR_CODE_QAT_COMP_WRONG_FW;
4990 *op = (void *)rx_op;
4991- QAT_DP_LOG(ERR, "QAT has wrong firmware");
4992+ QAT_DP_LOG(ERR,
4993+ "This QAT hardware doesn't support compression operation");
4994 ++(*dequeue_err_count);
4995 return 0;
4996 }
4997diff --git a/drivers/compress/qat/qat_comp_pmd.c b/drivers/compress/qat/qat_comp_pmd.c
4998index 5cdabad..dafd3da 100644
4999--- a/drivers/compress/qat/qat_comp_pmd.c
5000+++ b/drivers/compress/qat/qat_comp_pmd.c
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches