Merge ~paelzer/ubuntu/+source/dpdk:lp-1940913-MRE-20.11.3-HIRSUTE into ubuntu/+source/dpdk:ubuntu/hirsute-devel
- Git
- lp:~paelzer/ubuntu/+source/dpdk
- lp-1940913-MRE-20.11.3-HIRSUTE
- Merge into ubuntu/hirsute-devel
Proposed by
Christian Ehrhardt
Status: | Merged | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Approved by: | Christian Ehrhardt | ||||||||||||
Approved revision: | f653bcabc24a827c0b729dbd38641dbcbfebdc31 | ||||||||||||
Merged at revision: | be80662c09bee7713b6316b704757d7c80311268 | ||||||||||||
Proposed branch: | ~paelzer/ubuntu/+source/dpdk:lp-1940913-MRE-20.11.3-HIRSUTE | ||||||||||||
Merge into: | ubuntu/+source/dpdk:ubuntu/hirsute-devel | ||||||||||||
Diff against target: |
35145 lines (+11003/-4997) 627 files modified
.ci/linux-build.sh (+48/-11) .github/workflows/build.yml (+130/-0) .travis.yml (+39/-12) MAINTAINERS (+2/-0) VERSION (+1/-1) app/meson.build (+0/-4) app/test-bbdev/test_bbdev_perf.c (+5/-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-eventdev/test_perf_common.c (+14/-8) app/test-flow-perf/main.c (+22/-25) app/test-pmd/bpf_cmd.c (+1/-1) app/test-pmd/cmdline.c (+27/-20) app/test-pmd/cmdline_flow.c (+2/-0) app/test-pmd/config.c (+99/-14) app/test-pmd/csumonly.c (+11/-10) app/test-pmd/parameters.c (+10/-29) app/test-pmd/testpmd.c (+75/-117) app/test-pmd/testpmd.h (+2/-3) app/test-regex/main.c (+3/-4) app/test/autotest_test_funcs.py (+4/-1) app/test/meson.build (+0/-3) 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_lib.c (+27/-12) app/test/test_cmdline_num.c (+2/-2) app/test/test_cryptodev.c (+50/-25) app/test/test_cryptodev_aes_test_vectors.h (+1/-1) app/test/test_cryptodev_blockcipher.c (+1/-1) app/test/test_debug.c (+9/-2) 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_external_mem.c (+2/-1) app/test/test_flow_classify.c (+6/-0) app/test/test_kni.c (+6/-2) app/test/test_mbuf.c (+9/-2) app/test/test_mempool.c (+1/-1) app/test/test_power_cpufreq.c (+84/-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) app/test/test_trace_perf.c (+2/-3) buildtools/binutils-avx512-check.sh (+1/-1) buildtools/check-symbols.sh (+1/-1) buildtools/list-dir-globs.py (+1/-1) buildtools/map-list-symbol.sh (+1/-1) buildtools/meson.build (+2/-2) buildtools/symlink-drivers-solibs.py (+49/-0) config/meson.build (+10/-3) config/ppc/meson.build (+14/-3) debian/changelog (+23/-0) debian/control (+2/-1) debian/patches/disable_armhf_autopkgtest_fails.patch (+32/-0) debian/patches/disable_autopkgtest_fails.patch (+49/-0) debian/patches/disable_lcores_autotest_ppc.patch (+26/-0) debian/patches/disable_ppc64_autopkgtest_fails.patch (+27/-0) debian/patches/series (+5/-1) debian/patches/ubuntu/lp-1940957-net-i40e-support-25G-AOC-ACC-cables.patch (+42/-0) dev/null (+0/-66) devtools/check-maintainers.sh (+2/-2) devtools/check-symbol-maps.sh (+1/-2) devtools/checkpatches.sh (+1/-2) doc/api/doxy-api.conf.in (+2/-1) doc/guides/conf.py (+4/-45) doc/guides/contributing/coding_style.rst (+1/-1) doc/guides/contributing/documentation.rst (+10/-64) doc/guides/cryptodevs/caam_jr.rst (+1/-1) doc/guides/cryptodevs/qat.rst (+1/-1) doc/guides/cryptodevs/scheduler.rst (+1/-1) doc/guides/cryptodevs/virtio.rst (+1/-1) doc/guides/eventdevs/dlb2.rst (+10/-31) doc/guides/howto/pvp_reference_benchmark.rst (+1/-1) doc/guides/linux_gsg/linux_drivers.rst (+10/-0) doc/guides/nics/bnx2x.rst (+1/-1) doc/guides/nics/dpaa.rst (+3/-3) doc/guides/nics/ena.rst (+1/-1) doc/guides/nics/enic.rst (+14/-18) doc/guides/nics/hns3.rst (+3/-3) doc/guides/nics/i40e.rst (+1/-1) doc/guides/nics/ice.rst (+1/-1) 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 (+2/-2) doc/guides/nics/virtio.rst (+4/-3) doc/guides/nics/vmxnet3.rst (+2/-1) doc/guides/platform/dpaa.rst (+1/-1) doc/guides/prog_guide/bbdev.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/regexdev.rst (+1/-1) doc/guides/prog_guide/vhost_lib.rst (+12/-0) doc/guides/prog_guide/writing_efficient_code.rst (+8/-7) doc/guides/rawdevs/ioat.rst (+1/-1) doc/guides/rawdevs/ntb.rst (+1/-1) doc/guides/regexdevs/features_overview.rst (+1/-1) doc/guides/rel_notes/deprecation.rst (+10/-14) 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_20_05.rst (+7/-0) doc/guides/rel_notes/release_20_11.rst (+896/-0) doc/guides/rel_notes/release_2_2.rst (+1/-1) doc/guides/sample_app_ug/fips_validation.rst (+1/-1) doc/guides/sample_app_ug/hello_world.rst (+1/-1) doc/guides/sample_app_ug/ipsec_secgw.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/run_app.rst (+7/-5) doc/guides/testpmd_app_ug/testpmd_funcs.rst (+4/-3) doc/guides/tools/hugepages.rst (+3/-3) doc/meson.build (+1/-1) 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/include/compat.h (+0/-3) drivers/bus/fslmc/qbman/qbman_portal.c (+3/-11) drivers/bus/pci/linux/pci.c (+2/-2) drivers/bus/pci/linux/pci_uio.c (+12/-0) drivers/bus/pci/pci_common.c (+4/-1) drivers/bus/pci/rte_bus_pci.h (+7/-6) drivers/bus/pci/windows/pci.c (+15/-13) drivers/bus/vmbus/vmbus_common.c (+4/-1) drivers/common/dpaax/caamflib/compat.h (+6/-6) drivers/common/dpaax/compat.h (+0/-5) drivers/common/dpaax/dpaax_iova_table.c (+3/-1) drivers/common/dpaax/meson.build (+0/-1) drivers/common/iavf/iavf_impl.c (+3/-2) drivers/common/iavf/virtchnl.h (+3/-3) drivers/common/mlx5/linux/meson.build (+4/-0) drivers/common/mlx5/linux/mlx5_glue.c (+64/-9) drivers/common/mlx5/linux/mlx5_glue.h (+17/-1) drivers/common/mlx5/linux/mlx5_nl.c (+76/-15) drivers/common/mlx5/mlx5_common.c (+1/-8) drivers/common/mlx5/mlx5_common_mr.c (+89/-0) drivers/common/mlx5/mlx5_common_mr.h (+3/-0) drivers/common/mlx5/mlx5_devx_cmds.c (+135/-5) drivers/common/mlx5/mlx5_devx_cmds.h (+16/-0) drivers/common/mlx5/mlx5_prm.h (+151/-4) drivers/common/mlx5/version.map (+5/-1) drivers/common/octeontx2/otx2_dev.h (+3/-0) drivers/common/octeontx2/otx2_mbox.h (+7/-0) drivers/common/qat/qat_device.h (+1/-1) drivers/common/sfc_efx/base/ef10_filter.c (+9/-2) drivers/common/sfc_efx/base/ef10_nic.c (+9/-1) drivers/common/sfc_efx/base/efx_mae.c (+50/-11) drivers/common/sfc_efx/base/efx_mcdi.c (+10/-0) drivers/common/sfc_efx/base/efx_pci.c (+2/-1) drivers/common/sfc_efx/base/rhead_nic.c (+0/-1) drivers/common/sfc_efx/meson.build (+1/-1) drivers/compress/qat/qat_comp.c (+4/-3) drivers/compress/qat/qat_comp_pmd.c (+75/-36) drivers/crypto/aesni_gcm/aesni_gcm_pmd.c (+8/-2) drivers/crypto/bcmfs/bcmfs_logs.c (+2/-15) drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c (+24/-26) drivers/crypto/dpaa_sec/dpaa_sec.c (+14/-0) 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/octeontx/otx_cryptodev_ops.c (+2/-2) drivers/crypto/octeontx2/otx2_cryptodev_qp.h (+3/-1) drivers/crypto/octeontx2/otx2_ipsec_po_ops.h (+2/-12) drivers/crypto/octeontx2/otx2_security.h (+6/-4) drivers/crypto/qat/qat_asym_pmd.c (+4/-0) drivers/crypto/qat/qat_sym.c (+7/-3) drivers/crypto/qat/qat_sym_session.c (+3/-0) drivers/crypto/zuc/rte_zuc_pmd.c (+4/-4) drivers/event/dlb/dlb.c (+1/-1) drivers/event/dlb/pf/dlb_pf.c (+2/-1) drivers/event/dlb2/dlb2.c (+1/-1) drivers/event/dlb2/dlb2_priv.h (+0/-3) drivers/event/dlb2/pf/dlb2_pf.c (+2/-1) drivers/event/dpaa2/dpaa2_eventdev_logs.h (+0/-2) drivers/event/octeontx2/otx2_evdev.c (+41/-24) drivers/event/octeontx2/otx2_evdev_adptr.c (+1/-1) drivers/event/octeontx2/otx2_evdev_crypto_adptr.c (+80/-30) 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 (+2/-1) drivers/net/ark/ark_ethdev.c (+3/-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/atlantic/atl_ethdev.c (+4/-3) drivers/net/bnx2x/bnx2x.h (+7/-6) drivers/net/bnx2x/bnx2x_rxtx.c (+7/-6) drivers/net/bnxt/bnxt.h (+59/-9) drivers/net/bnxt/bnxt_cpr.c (+2/-0) drivers/net/bnxt/bnxt_cpr.h (+36/-4) drivers/net/bnxt/bnxt_ethdev.c (+501/-144) drivers/net/bnxt/bnxt_flow.c (+114/-56) drivers/net/bnxt/bnxt_hwrm.c (+294/-174) drivers/net/bnxt/bnxt_hwrm.h (+5/-10) drivers/net/bnxt/bnxt_irq.c (+8/-4) drivers/net/bnxt/bnxt_reps.c (+2/-2) 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 (+116/-17) drivers/net/bnxt/bnxt_rxr.h (+4/-1) drivers/net/bnxt/bnxt_rxtx_vec_neon.c (+24/-7) drivers/net/bnxt/bnxt_rxtx_vec_sse.c (+24/-7) drivers/net/bnxt/bnxt_stats.c (+141/-25) 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/meson.build (+1/-1) 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/dpaa/dpaa_ethdev.c (+19/-7) drivers/net/dpaa/dpaa_flow.c (+4/-1) drivers/net/dpaa2/dpaa2_ethdev.c (+19/-6) drivers/net/e1000/base/e1000_i210.c (+2/-0) drivers/net/e1000/e1000_logs.c (+5/-44) drivers/net/e1000/em_ethdev.c (+9/-12) drivers/net/e1000/igb_ethdev.c (+14/-19) drivers/net/e1000/igb_flow.c (+1/-1) drivers/net/e1000/igb_rxtx.c (+6/-3) drivers/net/ena/base/ena_com.c (+36/-24) drivers/net/ena/base/ena_defs/ena_admin_defs.h (+41/-44) drivers/net/ena/base/ena_eth_com.c (+9/-7) drivers/net/ena/base/ena_plat_dpdk.h (+7/-2) drivers/net/ena/ena_ethdev.c (+29/-15) drivers/net/ena/ena_platform.h (+0/-12) drivers/net/enic/base/vnic_dev.c (+1/-1) drivers/net/enic/base/vnic_enet.h (+1/-0) drivers/net/enic/enic.h (+2/-2) drivers/net/enic/enic_ethdev.c (+49/-36) drivers/net/enic/enic_fm_flow.c (+4/-2) drivers/net/enic/enic_main.c (+94/-67) drivers/net/enic/enic_res.c (+3/-4) drivers/net/failsafe/failsafe_ops.c (+8/-2) drivers/net/hinic/base/hinic_compat.h (+8/-17) drivers/net/hinic/base/hinic_pmd_niccfg.h (+0/-9) drivers/net/hinic/base/hinic_pmd_nicio.c (+2/-2) drivers/net/hinic/hinic_pmd_ethdev.c (+8/-9) drivers/net/hinic/hinic_pmd_ethdev.h (+17/-0) drivers/net/hns3/hns3_cmd.c (+17/-11) drivers/net/hns3/hns3_cmd.h (+9/-12) drivers/net/hns3/hns3_dcb.c (+60/-49) drivers/net/hns3/hns3_dcb.h (+2/-2) drivers/net/hns3/hns3_ethdev.c (+295/-214) drivers/net/hns3/hns3_ethdev.h (+32/-17) drivers/net/hns3/hns3_ethdev_vf.c (+78/-92) drivers/net/hns3/hns3_fdir.c (+31/-21) drivers/net/hns3/hns3_fdir.h (+3/-9) drivers/net/hns3/hns3_flow.c (+167/-85) drivers/net/hns3/hns3_intr.c (+36/-41) drivers/net/hns3/hns3_intr.h (+3/-1) drivers/net/hns3/hns3_logs.h (+1/-1) drivers/net/hns3/hns3_mbx.c (+190/-66) drivers/net/hns3/hns3_mbx.h (+19/-13) 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 (+237/-77) drivers/net/hns3/hns3_rxtx.h (+23/-14) drivers/net/hns3/hns3_rxtx_vec.c (+29/-9) drivers/net/hns3/hns3_rxtx_vec.h (+4/-1) drivers/net/hns3/hns3_rxtx_vec_neon.h (+1/-1) drivers/net/hns3/hns3_rxtx_vec_sve.c (+27/-7) drivers/net/hns3/hns3_stats.c (+5/-5) drivers/net/hns3/hns3_stats.h (+3/-3) drivers/net/hns3/meson.build (+20/-2) drivers/net/i40e/base/virtchnl.h (+28/-1) drivers/net/i40e/i40e_ethdev.c (+157/-63) drivers/net/i40e/i40e_ethdev.h (+8/-6) drivers/net/i40e/i40e_ethdev_vf.c (+48/-47) drivers/net/i40e/i40e_fdir.c (+95/-4) drivers/net/i40e/i40e_flow.c (+87/-98) 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/iavf.h (+3/-3) drivers/net/iavf/iavf_ethdev.c (+8/-10) drivers/net/iavf/iavf_rxtx.c (+11/-1) drivers/net/iavf/iavf_rxtx.h (+1/-1) drivers/net/iavf/iavf_rxtx_vec_avx2.c (+2/-118) drivers/net/iavf/iavf_rxtx_vec_avx512.c (+8/-5) drivers/net/iavf/iavf_rxtx_vec_common.h (+203/-0) drivers/net/iavf/iavf_vchnl.c (+20/-9) drivers/net/ice/base/ice_flow.c (+8/-3) 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 (+5/-0) drivers/net/ice/ice_dcf_ethdev.c (+4/-3) drivers/net/ice/ice_dcf_parent.c (+2/-1) drivers/net/ice/ice_ethdev.c (+75/-36) drivers/net/ice/ice_ethdev.h (+6/-3) drivers/net/ice/ice_fdir_filter.c (+3/-3) drivers/net/ice/ice_hash.c (+14/-0) drivers/net/ice/ice_rxtx.c (+31/-37) drivers/net/ice/ice_rxtx.h (+2/-2) drivers/net/ice/ice_rxtx_vec_avx2.c (+3/-119) drivers/net/ice/ice_rxtx_vec_avx512.c (+5/-2) drivers/net/ice/ice_rxtx_vec_common.h (+204/-1) drivers/net/ice/ice_rxtx_vec_sse.c (+1/-1) drivers/net/ice/ice_switch_filter.c (+3/-3) drivers/net/ice/meson.build (+2/-0) drivers/net/igc/igc_ethdev.c (+23/-23) drivers/net/igc/igc_ethdev.h (+2/-1) drivers/net/igc/igc_flow.c (+1/-1) drivers/net/igc/igc_txrx.c (+16/-14) drivers/net/ionic/ionic_ethdev.c (+9/-6) drivers/net/ionic/ionic_lif.c (+3/-2) drivers/net/ixgbe/ixgbe_ethdev.c (+18/-4) drivers/net/ixgbe/ixgbe_flow.c (+1/-0) drivers/net/kni/rte_eth_kni.c (+10/-2) drivers/net/memif/memif_socket.c (+12/-3) drivers/net/memif/rte_eth_memif.c (+1/-0) drivers/net/memif/rte_eth_memif.h (+0/-4) drivers/net/mlx4/mlx4.c (+1/-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/linux/mlx5_ethdev_os.c (+2/-2) drivers/net/mlx5/linux/mlx5_mp_os.c (+1/-1) drivers/net/mlx5/linux/mlx5_os.c (+194/-58) drivers/net/mlx5/linux/mlx5_socket.c (+0/-4) drivers/net/mlx5/linux/mlx5_verbs.c (+121/-0) drivers/net/mlx5/linux/mlx5_verbs.h (+2/-0) drivers/net/mlx5/meson.build (+1/-0) drivers/net/mlx5/mlx5.c (+20/-8) drivers/net/mlx5/mlx5.h (+20/-3) drivers/net/mlx5/mlx5_devx.c (+6/-0) drivers/net/mlx5/mlx5_flow.c (+184/-82) drivers/net/mlx5/mlx5_flow.h (+48/-21) drivers/net/mlx5/mlx5_flow_age.c (+3/-2) drivers/net/mlx5/mlx5_flow_dv.c (+304/-100) drivers/net/mlx5/mlx5_flow_verbs.c (+6/-4) drivers/net/mlx5/mlx5_mr.c (+16/-96) drivers/net/mlx5/mlx5_rxq.c (+3/-9) drivers/net/mlx5/mlx5_rxtx.c (+27/-20) drivers/net/mlx5/mlx5_rxtx.h (+1/-0) drivers/net/mlx5/mlx5_rxtx_vec.c (+2/-1) 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_trigger.c (+15/-7) drivers/net/mlx5/mlx5_txpp.c (+17/-6) drivers/net/mlx5/mlx5_txq.c (+1/-1) drivers/net/mvpp2/mrvl_ethdev.c (+9/-3) drivers/net/mvpp2/mrvl_ethdev.h (+2/-1) drivers/net/mvpp2/mrvl_tm.c (+66/-1) drivers/net/nfp/nfp_net.c (+15/-11) drivers/net/octeontx/base/octeontx_pkivf.h (+0/-1) 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 (+2/-3) drivers/net/octeontx2/otx2_flow.c (+14/-2) drivers/net/octeontx2/otx2_flow.h (+0/-1) drivers/net/octeontx2/otx2_tm.c (+6/-0) 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 (+8/-4) drivers/net/pfe/pfe_ethdev.c (+0/-5) drivers/net/qede/base/ecore_int.c (+1/-1) drivers/net/qede/qede_ethdev.c (+4/-5) drivers/net/sfc/meson.build (+1/-1) drivers/net/sfc/sfc.h (+3/-2) drivers/net/sfc/sfc_ef100_rx.c (+14/-9) drivers/net/sfc/sfc_ethdev.c (+50/-44) drivers/net/sfc/sfc_mae.c (+35/-25) drivers/net/sfc/sfc_mae.h (+2/-1) drivers/net/sfc/sfc_port.c (+32/-17) drivers/net/softnic/conn.c (+1/-0) drivers/net/softnic/rte_eth_softnic.c (+28/-4) drivers/net/softnic/rte_eth_softnic_action.c (+1/-0) drivers/net/softnic/rte_eth_softnic_internals.h (+3/-2) drivers/net/tap/rte_eth_tap.c (+18/-9) drivers/net/tap/tap_flow.c (+7/-1) drivers/net/tap/tap_intr.c (+1/-1) drivers/net/txgbe/base/txgbe_eeprom.c (+2/-74) drivers/net/txgbe/base/txgbe_eeprom.h (+0/-2) drivers/net/txgbe/base/txgbe_type.h (+1/-0) drivers/net/txgbe/txgbe_ethdev.c (+39/-8) drivers/net/txgbe/txgbe_ptypes.c (+3/-1) drivers/net/virtio/meson.build (+1/-1) drivers/net/virtio/virtio_ethdev.c (+67/-0) drivers/net/virtio/virtio_ethdev.h (+5/-0) drivers/net/virtio/virtio_pci.h (+2/-0) drivers/net/virtio/virtio_rxtx.c (+61/-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/virtio_user_dev.c (+6/-0) drivers/net/virtio/virtio_user_ethdev.c (+56/-19) drivers/raw/ifpga/ifpga_rawdev.c (+2/-2) drivers/raw/ifpga/ifpga_rawdev.h (+2/-0) drivers/raw/ioat/dpdk_idxd_cfg.py (+7/-7) drivers/raw/ntb/ntb.c (+13/-0) drivers/raw/ntb/ntb_hw_intel.c (+5/-0) drivers/raw/octeontx2_dma/otx2_dpi_rawdev.c (+1/-0) drivers/raw/skeleton/skeleton_rawdev_test.c (+1/-0) drivers/regex/mlx5/mlx5_regex.c (+1/-2) drivers/regex/mlx5/mlx5_regex.h (+1/-0) drivers/regex/mlx5/mlx5_regex_control.c (+1/-0) drivers/regex/mlx5/mlx5_regex_fastpath.c (+2/-2) drivers/regex/octeontx2/meson.build (+0/-1) drivers/vdpa/ifc/base/ifcvf.c (+6/-1) drivers/vdpa/mlx5/mlx5_vdpa.c (+3/-0) drivers/vdpa/mlx5/mlx5_vdpa.h (+1/-0) drivers/vdpa/mlx5/mlx5_vdpa_event.c (+3/-1) drivers/vdpa/mlx5/mlx5_vdpa_virtq.c (+9/-6) examples/bbdev_app/Makefile (+3/-3) examples/bbdev_app/main.c (+4/-1) examples/bond/Makefile (+3/-3) examples/bond/main.c (+4/-0) examples/cmdline/Makefile (+3/-3) examples/cmdline/main.c (+3/-0) examples/distributor/Makefile (+3/-3) examples/distributor/main.c (+3/-0) examples/ethtool/ethtool-app/Makefile (+3/-3) examples/ethtool/ethtool-app/ethapp.c (+0/-1) examples/ethtool/ethtool-app/main.c (+3/-0) examples/ethtool/lib/Makefile (+3/-3) examples/eventdev_pipeline/Makefile (+3/-3) examples/fips_validation/Makefile (+3/-3) examples/fips_validation/main.c (+3/-0) examples/flow_classify/Makefile (+3/-3) examples/flow_classify/flow_classify.c (+4/-1) examples/flow_filtering/Makefile (+3/-3) examples/flow_filtering/main.c (+6/-1) examples/helloworld/Makefile (+3/-3) examples/helloworld/main.c (+4/-0) examples/ioat/Makefile (+3/-3) examples/ioat/ioatfwd.c (+3/-0) examples/ip_fragmentation/Makefile (+3/-3) examples/ip_fragmentation/main.c (+3/-0) examples/ip_pipeline/Makefile (+3/-3) examples/ip_reassembly/Makefile (+3/-3) examples/ip_reassembly/main.c (+3/-0) examples/ipsec-secgw/Makefile (+3/-3) examples/ipsec-secgw/ipsec-secgw.c (+3/-0) examples/ipv4_multicast/Makefile (+3/-3) examples/ipv4_multicast/main.c (+3/-0) examples/kni/Makefile (+3/-3) examples/kni/main.c (+3/-0) examples/l2fwd-cat/Makefile (+3/-3) examples/l2fwd-cat/l2fwd-cat.c (+4/-1) examples/l2fwd-crypto/Makefile (+3/-3) examples/l2fwd-crypto/main.c (+23/-0) examples/l2fwd-event/Makefile (+3/-3) examples/l2fwd-event/main.c (+3/-0) examples/l2fwd-jobstats/Makefile (+3/-3) examples/l2fwd-jobstats/main.c (+3/-0) examples/l2fwd-keepalive/Makefile (+3/-3) examples/l2fwd-keepalive/ka-agent/Makefile (+3/-3) examples/l2fwd-keepalive/main.c (+4/-0) examples/l2fwd/Makefile (+3/-3) examples/l2fwd/main.c (+17/-3) examples/l3fwd-acl/Makefile (+3/-3) examples/l3fwd-acl/main.c (+3/-0) examples/l3fwd-graph/Makefile (+3/-3) examples/l3fwd-graph/main.c (+3/-0) examples/l3fwd-power/Makefile (+3/-3) examples/l3fwd-power/main.c (+2/-2) examples/l3fwd/Makefile (+3/-3) examples/l3fwd/l3fwd_lpm.c (+16/-10) examples/l3fwd/main.c (+4/-0) examples/link_status_interrupt/Makefile (+3/-3) examples/link_status_interrupt/main.c (+3/-0) examples/meson.build (+7/-3) examples/multi_process/client_server_mp/mp_client/Makefile (+3/-3) examples/multi_process/client_server_mp/mp_client/client.c (+3/-0) examples/multi_process/client_server_mp/mp_server/Makefile (+3/-3) examples/multi_process/client_server_mp/mp_server/main.c (+4/-0) examples/multi_process/hotplug_mp/Makefile (+3/-3) examples/multi_process/simple_mp/Makefile (+3/-3) examples/multi_process/simple_mp/main.c (+4/-0) examples/multi_process/symmetric_mp/Makefile (+3/-3) examples/multi_process/symmetric_mp/main.c (+3/-0) examples/ntb/Makefile (+3/-3) examples/ntb/ntb_fwd.c (+3/-0) examples/packet_ordering/Makefile (+3/-3) examples/packet_ordering/main.c (+5/-1) examples/performance-thread/l3fwd-thread/Makefile (+3/-2) examples/performance-thread/l3fwd-thread/main.c (+3/-0) examples/performance-thread/pthread_shim/Makefile (+3/-3) examples/performance-thread/pthread_shim/main.c (+4/-0) examples/pipeline/Makefile (+3/-3) examples/pipeline/main.c (+3/-0) examples/ptpclient/Makefile (+3/-3) examples/ptpclient/ptpclient.c (+3/-4) examples/qos_meter/Makefile (+3/-3) examples/qos_meter/main.c (+3/-0) examples/qos_sched/Makefile (+3/-3) examples/qos_sched/main.c (+3/-0) examples/rxtx_callbacks/Makefile (+3/-3) examples/rxtx_callbacks/main.c (+5/-1) examples/server_node_efd/node/Makefile (+3/-3) examples/server_node_efd/node/node.c (+3/-0) examples/server_node_efd/server/Makefile (+3/-3) examples/server_node_efd/server/main.c (+4/-0) examples/service_cores/Makefile (+3/-3) examples/service_cores/main.c (+3/-0) examples/skeleton/Makefile (+3/-3) examples/skeleton/basicfwd.c (+4/-1) examples/timer/Makefile (+3/-3) examples/timer/main.c (+13/-10) examples/vdpa/Makefile (+3/-3) examples/vdpa/main.c (+3/-0) examples/vhost/Makefile (+3/-3) examples/vhost/main.c (+26/-22) examples/vhost/virtio_net.c (+7/-1) examples/vhost_blk/Makefile (+3/-3) examples/vhost_blk/vhost_blk.c (+3/-0) examples/vhost_crypto/Makefile (+3/-3) examples/vhost_crypto/main.c (+4/-1) examples/vm_power_manager/Makefile (+3/-3) examples/vm_power_manager/guest_cli/Makefile (+3/-3) examples/vm_power_manager/guest_cli/main.c (+3/-0) examples/vm_power_manager/main.c (+3/-0) examples/vmdq/Makefile (+3/-3) examples/vmdq/main.c (+3/-0) examples/vmdq_dcb/Makefile (+3/-3) examples/vmdq_dcb/main.c (+3/-0) kernel/linux/kni/kni_net.c (+36/-18) lib/librte_acl/acl_run_avx512_common.h (+24/-0) 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/arm/rte_cpuflags.c (+1/-1) lib/librte_eal/common/eal_common_fbarray.c (+3/-4) lib/librte_eal/common/eal_common_options.c (+9/-3) lib/librte_eal/common/eal_common_proc.c (+27/-22) lib/librte_eal/common/eal_common_thread.c (+38/-28) lib/librte_eal/common/malloc_mp.c (+1/-3) lib/librte_eal/freebsd/eal.c (+4/-0) lib/librte_eal/freebsd/include/rte_os.h (+3/-3) lib/librte_eal/include/rte_bitmap.h (+1/-2) lib/librte_eal/include/rte_eal_paging.h (+1/-1) lib/librte_eal/include/rte_lcore.h (+8/-0) lib/librte_eal/include/rte_malloc.h (+1/-1) lib/librte_eal/include/rte_reciprocal.h (+8/-0) lib/librte_eal/include/rte_service.h (+1/-4) lib/librte_eal/include/rte_vfio.h (+5/-3) lib/librte_eal/linux/eal.c (+4/-0) lib/librte_eal/linux/eal_log.c (+3/-3) lib/librte_eal/linux/eal_memalloc.c (+2/-12) lib/librte_eal/linux/eal_vfio.c (+41/-57) lib/librte_eal/linux/eal_vfio.h (+1/-0) lib/librte_eal/linux/include/rte_os.h (+5/-3) lib/librte_eal/unix/eal_file.c (+1/-0) lib/librte_eal/unix/eal_unix_memory.c (+6/-5) lib/librte_eal/version.map (+0/-1) lib/librte_eal/windows/eal.c (+5/-0) lib/librte_eal/windows/eal_alarm.c (+12/-0) lib/librte_eal/windows/eal_hugepages.c (+4/-0) lib/librte_eal/windows/eal_memory.c (+8/-1) lib/librte_eal/windows/eal_thread.c (+2/-2) lib/librte_eal/windows/eal_windows.h (+5/-0) lib/librte_eal/windows/include/pthread.h (+11/-5) lib/librte_eal/windows/include/rte_os.h (+2/-3) lib/librte_eal/windows/include/sched.h (+1/-0) lib/librte_ethdev/rte_ethdev.c (+13/-1) lib/librte_ethdev/rte_ethdev.h (+5/-0) lib/librte_ethdev/rte_flow.h (+3/-3) 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_graph/graph_stats.c (+5/-2) lib/librte_ip_frag/rte_ipv4_fragmentation.c (+21/-13) lib/librte_kni/rte_kni.c (+8/-4) lib/librte_kni/rte_kni_common.h (+1/-0) lib/librte_mbuf/rte_mbuf_dyn.c (+8/-2) lib/librte_net/rte_ip.h (+1/-1) lib/librte_pipeline/rte_swx_pipeline.c (+394/-100) lib/librte_power/guest_channel.c (+11/-11) lib/librte_power/power_acpi_cpufreq.c (+3/-2) lib/librte_power/power_pstate_cpufreq.c (+3/-2) lib/librte_power/rte_power_guest_channel.h (+0/-8) lib/librte_power/version.map (+0/-2) lib/librte_rib/rte_rib6.c (+21/-8) lib/librte_sched/rte_sched.c (+33/-29) 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_table/rte_swx_table_em.c (+3/-5) lib/librte_telemetry/rte_telemetry.h (+4/-0) lib/librte_telemetry/telemetry.c (+2/-0) lib/librte_vhost/rte_vhost.h (+1/-0) lib/librte_vhost/socket.c (+4/-1) lib/librte_vhost/vhost.c (+6/-2) lib/librte_vhost/vhost.h (+8/-6) lib/librte_vhost/vhost_crypto.c (+4/-2) lib/librte_vhost/vhost_user.c (+42/-11) lib/librte_vhost/virtio_net.c (+265/-59) license/README (+2/-2) meson.build (+1/-1) |
||||||||||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Bryce Harrington (community) | Approve | ||
Canonical Server | Pending | ||
Canonical Server packageset reviewers | Pending | ||
Review via email: mp+408162@code.launchpad.net |
Commit message
Description of the change
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>
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 : | # |
LGTM, see focal MP for detail.
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_20.
Uploading dpdk_20.
Uploading dpdk_20.
Uploading dpdk_20.
Uploading dpdk_20.
Successfully uploaded packages.
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh |
2 | index d079801..26c30a2 100755 |
3 | --- a/.ci/linux-build.sh |
4 | +++ b/.ci/linux-build.sh |
5 | @@ -4,7 +4,10 @@ on_error() { |
6 | if [ $? = 0 ]; then |
7 | exit |
8 | fi |
9 | - FILES_TO_PRINT="build/meson-logs/testlog.txt build/.ninja_log build/meson-logs/meson-log.txt" |
10 | + FILES_TO_PRINT="build/meson-logs/testlog.txt" |
11 | + FILES_TO_PRINT="$FILES_TO_PRINT build/.ninja_log" |
12 | + FILES_TO_PRINT="$FILES_TO_PRINT build/meson-logs/meson-log.txt" |
13 | + FILES_TO_PRINT="$FILES_TO_PRINT build/gdb.log" |
14 | |
15 | for pr_file in $FILES_TO_PRINT; do |
16 | if [ -e "$pr_file" ]; then |
17 | @@ -12,7 +15,9 @@ on_error() { |
18 | fi |
19 | done |
20 | } |
21 | -trap on_error EXIT |
22 | +# We capture the error logs as artifacts in Github Actions, no need to dump |
23 | +# them via a EXIT handler. |
24 | +[ -n "$GITHUB_WORKFLOW" ] || trap on_error EXIT |
25 | |
26 | install_libabigail() { |
27 | version=$1 |
28 | @@ -28,16 +33,36 @@ install_libabigail() { |
29 | rm ${version}.tar.gz |
30 | } |
31 | |
32 | -if [ "$AARCH64" = "1" ]; then |
33 | +configure_coredump() { |
34 | + # No point in configuring coredump without gdb |
35 | + which gdb >/dev/null || return 0 |
36 | + ulimit -c unlimited |
37 | + sudo sysctl -w kernel.core_pattern=/tmp/dpdk-core.%e.%p |
38 | +} |
39 | + |
40 | +catch_coredump() { |
41 | + ls /tmp/dpdk-core.*.* 2>/dev/null || return 0 |
42 | + for core in /tmp/dpdk-core.*.*; do |
43 | + binary=$(sudo readelf -n $core |grep $(pwd)/build/ 2>/dev/null |head -n1) |
44 | + [ -x $binary ] || binary= |
45 | + sudo gdb $binary -c $core \ |
46 | + -ex 'info threads' \ |
47 | + -ex 'thread apply all bt full' \ |
48 | + -ex 'quit' |
49 | + done |tee -a build/gdb.log |
50 | + return 1 |
51 | +} |
52 | + |
53 | +if [ "$AARCH64" = "true" ]; then |
54 | # convert the arch specifier |
55 | OPTS="$OPTS --cross-file config/arm/arm64_armv8_linux_gcc" |
56 | fi |
57 | |
58 | -if [ "$BUILD_DOCS" = "1" ]; then |
59 | +if [ "$BUILD_DOCS" = "true" ]; then |
60 | OPTS="$OPTS -Denable_docs=true" |
61 | fi |
62 | |
63 | -if [ "$BUILD_32BIT" = "1" ]; then |
64 | +if [ "$BUILD_32BIT" = "true" ]; then |
65 | OPTS="$OPTS -Dc_args=-m32 -Dc_link_args=-m32" |
66 | export PKG_CONFIG_LIBDIR="/usr/lib32/pkgconfig" |
67 | fi |
68 | @@ -48,16 +73,21 @@ else |
69 | OPTS="$OPTS -Dexamples=all" |
70 | fi |
71 | |
72 | +OPTS="$OPTS -Dmachine=default" |
73 | OPTS="$OPTS --default-library=$DEF_LIB" |
74 | OPTS="$OPTS --buildtype=debugoptimized" |
75 | meson build --werror $OPTS |
76 | ninja -C build |
77 | |
78 | -if [ "$AARCH64" != "1" ]; then |
79 | - devtools/test-null.sh |
80 | +if [ "$AARCH64" != "true" ]; then |
81 | + failed= |
82 | + configure_coredump |
83 | + devtools/test-null.sh || failed="true" |
84 | + catch_coredump |
85 | + [ "$failed" != "true" ] |
86 | fi |
87 | |
88 | -if [ "$ABI_CHECKS" = "1" ]; then |
89 | +if [ "$ABI_CHECKS" = "true" ]; then |
90 | LIBABIGAIL_VERSION=${LIBABIGAIL_VERSION:-libabigail-1.6} |
91 | |
92 | if [ "$(cat libabigail/VERSION 2>/dev/null)" != "$LIBABIGAIL_VERSION" ]; then |
93 | @@ -83,10 +113,13 @@ if [ "$ABI_CHECKS" = "1" ]; then |
94 | if [ ! -d reference ]; then |
95 | refsrcdir=$(readlink -f $(pwd)/../dpdk-$REF_GIT_TAG) |
96 | git clone --single-branch -b $REF_GIT_TAG $REF_GIT_REPO $refsrcdir |
97 | - meson --werror $OPTS $refsrcdir $refsrcdir/build |
98 | + meson $OPTS -Dexamples= $refsrcdir $refsrcdir/build |
99 | ninja -C $refsrcdir/build |
100 | DESTDIR=$(pwd)/reference ninja -C $refsrcdir/build install |
101 | devtools/gen-abi.sh reference |
102 | + find reference/usr/local -name '*.a' -delete |
103 | + rm -rf reference/usr/local/bin |
104 | + rm -rf reference/usr/local/share |
105 | echo $REF_GIT_TAG > reference/VERSION |
106 | fi |
107 | |
108 | @@ -95,6 +128,10 @@ if [ "$ABI_CHECKS" = "1" ]; then |
109 | devtools/check-abi.sh reference install ${ABI_CHECKS_WARN_ONLY:-} |
110 | fi |
111 | |
112 | -if [ "$RUN_TESTS" = "1" ]; then |
113 | - sudo meson test -C build --suite fast-tests -t 3 |
114 | +if [ "$RUN_TESTS" = "true" ]; then |
115 | + failed= |
116 | + configure_coredump |
117 | + sudo meson test -C build --suite fast-tests -t 3 || failed="true" |
118 | + catch_coredump |
119 | + [ "$failed" != "true" ] |
120 | fi |
121 | diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml |
122 | new file mode 100644 |
123 | index 0000000..4093b32 |
124 | --- /dev/null |
125 | +++ b/.github/workflows/build.yml |
126 | @@ -0,0 +1,130 @@ |
127 | +name: build |
128 | + |
129 | +on: |
130 | + push: |
131 | + schedule: |
132 | + - cron: '0 0 * * 1' |
133 | + |
134 | +defaults: |
135 | + run: |
136 | + shell: bash --noprofile --norc -exo pipefail {0} |
137 | + |
138 | +jobs: |
139 | + build: |
140 | + name: ${{ join(matrix.config.*, '-') }} |
141 | + runs-on: ${{ matrix.config.os }} |
142 | + env: |
143 | + AARCH64: ${{ matrix.config.cross == 'aarch64' }} |
144 | + ABI_CHECKS: ${{ contains(matrix.config.checks, 'abi') }} |
145 | + BUILD_32BIT: ${{ matrix.config.cross == 'i386' }} |
146 | + BUILD_DOCS: ${{ contains(matrix.config.checks, 'doc') }} |
147 | + CC: ccache ${{ matrix.config.compiler }} |
148 | + DEF_LIB: ${{ matrix.config.library }} |
149 | + LIBABIGAIL_VERSION: libabigail-1.8 |
150 | + REF_GIT_TAG: v20.11 |
151 | + RUN_TESTS: ${{ contains(matrix.config.checks, 'tests') }} |
152 | + |
153 | + strategy: |
154 | + fail-fast: false |
155 | + matrix: |
156 | + config: |
157 | + - os: ubuntu-18.04 |
158 | + compiler: gcc |
159 | + library: static |
160 | + - os: ubuntu-18.04 |
161 | + compiler: gcc |
162 | + library: shared |
163 | + checks: abi+doc+tests |
164 | + - os: ubuntu-18.04 |
165 | + compiler: clang |
166 | + library: static |
167 | + - os: ubuntu-18.04 |
168 | + compiler: clang |
169 | + library: shared |
170 | + checks: doc+tests |
171 | + - os: ubuntu-18.04 |
172 | + compiler: gcc |
173 | + library: static |
174 | + cross: i386 |
175 | + - os: ubuntu-18.04 |
176 | + compiler: gcc |
177 | + library: static |
178 | + cross: aarch64 |
179 | + - os: ubuntu-18.04 |
180 | + compiler: gcc |
181 | + library: shared |
182 | + cross: aarch64 |
183 | + |
184 | + steps: |
185 | + - name: Checkout sources |
186 | + uses: actions/checkout@v2 |
187 | + - name: Generate cache keys |
188 | + id: get_ref_keys |
189 | + run: | |
190 | + echo -n '::set-output name=ccache::' |
191 | + echo 'ccache-${{ matrix.config.os }}-${{ matrix.config.compiler }}-${{ matrix.config.cross }}-'$(date -u +%Y-w%W) |
192 | + echo -n '::set-output name=libabigail::' |
193 | + echo 'libabigail-${{ matrix.config.os }}' |
194 | + echo -n '::set-output name=abi::' |
195 | + echo 'abi-${{ matrix.config.os }}-${{ matrix.config.compiler }}-${{ matrix.config.cross }}-${{ env.LIBABIGAIL_VERSION }}-${{ env.REF_GIT_TAG }}' |
196 | + - name: Retrieve ccache cache |
197 | + uses: actions/cache@v2 |
198 | + with: |
199 | + path: ~/.ccache |
200 | + key: ${{ steps.get_ref_keys.outputs.ccache }}-${{ github.ref }} |
201 | + restore-keys: | |
202 | + ${{ steps.get_ref_keys.outputs.ccache }}-refs/heads/main |
203 | + - name: Retrieve libabigail cache |
204 | + id: libabigail-cache |
205 | + uses: actions/cache@v2 |
206 | + if: env.ABI_CHECKS == 'true' |
207 | + with: |
208 | + path: libabigail |
209 | + key: ${{ steps.get_ref_keys.outputs.libabigail }} |
210 | + - name: Retrieve ABI reference cache |
211 | + uses: actions/cache@v2 |
212 | + if: env.ABI_CHECKS == 'true' |
213 | + with: |
214 | + path: reference |
215 | + key: ${{ steps.get_ref_keys.outputs.abi }} |
216 | + - name: Update APT cache |
217 | + run: sudo apt update || true |
218 | + - name: Install packages |
219 | + run: sudo apt install -y ccache libnuma-dev python3-setuptools |
220 | + python3-wheel python3-pip ninja-build libbsd-dev libpcap-dev |
221 | + libibverbs-dev libcrypto++-dev libfdt-dev libjansson-dev |
222 | + - name: Install libabigail build dependencies if no cache is available |
223 | + if: env.ABI_CHECKS == 'true' && steps.libabigail-cache.outputs.cache-hit != 'true' |
224 | + run: sudo apt install -y autoconf automake libtool pkg-config libxml2-dev |
225 | + libdw-dev |
226 | + - name: Install i386 cross compiling packages |
227 | + if: env.BUILD_32BIT == 'true' |
228 | + run: sudo apt install -y gcc-multilib |
229 | + - name: Install aarch64 cross compiling packages |
230 | + if: env.AARCH64 == 'true' |
231 | + run: sudo apt install -y gcc-aarch64-linux-gnu libc6-dev-arm64-cross |
232 | + pkg-config-aarch64-linux-gnu |
233 | + - name: Install test tools packages |
234 | + if: env.AARCH64 != 'true' || env.RUN_TESTS == 'true' |
235 | + run: sudo apt install -y gdb |
236 | + - name: Install doc generation packages |
237 | + if: env.BUILD_DOCS == 'true' |
238 | + run: sudo apt install -y doxygen graphviz python3-sphinx |
239 | + python3-sphinx-rtd-theme |
240 | + - name: Run setup |
241 | + run: | |
242 | + .ci/linux-setup.sh |
243 | + # Workaround on $HOME permissions as EAL checks them for plugin loading |
244 | + chmod o-w $HOME |
245 | + - name: Build and test |
246 | + run: .ci/linux-build.sh |
247 | + - name: Upload logs on failure |
248 | + if: failure() |
249 | + uses: actions/upload-artifact@v2 |
250 | + with: |
251 | + name: meson-logs-${{ join(matrix.config.*, '-') }} |
252 | + path: | |
253 | + build/meson-logs/testlog.txt |
254 | + build/.ninja_log |
255 | + build/meson-logs/meson-log.txt |
256 | + build/gdb.log |
257 | diff --git a/.travis.yml b/.travis.yml |
258 | index 5e12db2..5aa7ad4 100644 |
259 | --- a/.travis.yml |
260 | +++ b/.travis.yml |
261 | @@ -2,6 +2,9 @@ |
262 | language: c |
263 | cache: |
264 | ccache: true |
265 | + directories: |
266 | + - libabigail |
267 | + - reference |
268 | |
269 | dist: bionic |
270 | |
271 | @@ -18,6 +21,9 @@ _aarch64_packages: &aarch64_packages |
272 | - *required_packages |
273 | - [gcc-aarch64-linux-gnu, libc6-dev-arm64-cross, pkg-config-aarch64-linux-gnu] |
274 | |
275 | +_libabigail_build_packages: &libabigail_build_packages |
276 | + - [autoconf, automake, libtool, pkg-config, libxml2-dev, libdw-dev] |
277 | + |
278 | _build_32b_packages: &build_32b_packages |
279 | - *required_packages |
280 | - [gcc-multilib] |
281 | @@ -28,16 +34,21 @@ _doc_packages: &doc_packages |
282 | before_install: ./.ci/${TRAVIS_OS_NAME}-setup.sh |
283 | script: ./.ci/${TRAVIS_OS_NAME}-build.sh |
284 | |
285 | +env: |
286 | + global: |
287 | + - LIBABIGAIL_VERSION=libabigail-1.8 |
288 | + - REF_GIT_TAG=v20.11 |
289 | + |
290 | jobs: |
291 | include: |
292 | # x86_64 gcc jobs |
293 | - env: DEF_LIB="static" |
294 | arch: amd64 |
295 | compiler: gcc |
296 | - - env: DEF_LIB="shared" RUN_TESTS=1 |
297 | + - env: DEF_LIB="shared" RUN_TESTS=true |
298 | arch: amd64 |
299 | compiler: gcc |
300 | - - env: DEF_LIB="shared" BUILD_DOCS=1 |
301 | + - env: DEF_LIB="shared" BUILD_DOCS=true |
302 | arch: amd64 |
303 | compiler: gcc |
304 | addons: |
305 | @@ -45,14 +56,22 @@ jobs: |
306 | packages: |
307 | - *required_packages |
308 | - *doc_packages |
309 | + - env: DEF_LIB="shared" ABI_CHECKS=true |
310 | + arch: amd64 |
311 | + compiler: gcc |
312 | + addons: |
313 | + apt: |
314 | + packages: |
315 | + - *required_packages |
316 | + - *libabigail_build_packages |
317 | # x86_64 clang jobs |
318 | - env: DEF_LIB="static" |
319 | arch: amd64 |
320 | compiler: clang |
321 | - - env: DEF_LIB="shared" RUN_TESTS=1 |
322 | + - env: DEF_LIB="shared" RUN_TESTS=true |
323 | arch: amd64 |
324 | compiler: clang |
325 | - - env: DEF_LIB="shared" BUILD_DOCS=1 |
326 | + - env: DEF_LIB="shared" BUILD_DOCS=true |
327 | arch: amd64 |
328 | compiler: clang |
329 | addons: |
330 | @@ -61,7 +80,7 @@ jobs: |
331 | - *required_packages |
332 | - *doc_packages |
333 | # x86_64 cross-compiling 32-bits jobs |
334 | - - env: DEF_LIB="static" BUILD_32BIT=1 |
335 | + - env: DEF_LIB="static" BUILD_32BIT=true |
336 | arch: amd64 |
337 | compiler: gcc |
338 | addons: |
339 | @@ -69,14 +88,14 @@ jobs: |
340 | packages: |
341 | - *build_32b_packages |
342 | # x86_64 cross-compiling aarch64 jobs |
343 | - - env: DEF_LIB="static" AARCH64=1 |
344 | + - env: DEF_LIB="static" AARCH64=true |
345 | arch: amd64 |
346 | compiler: gcc |
347 | addons: |
348 | apt: |
349 | packages: |
350 | - *aarch64_packages |
351 | - - env: DEF_LIB="shared" AARCH64=1 |
352 | + - env: DEF_LIB="shared" AARCH64=true |
353 | arch: amd64 |
354 | compiler: gcc |
355 | addons: |
356 | @@ -87,16 +106,16 @@ jobs: |
357 | - env: DEF_LIB="static" |
358 | arch: arm64 |
359 | compiler: gcc |
360 | - - env: DEF_LIB="shared" RUN_TESTS=1 |
361 | + - env: DEF_LIB="shared" RUN_TESTS=true |
362 | arch: arm64 |
363 | compiler: gcc |
364 | - - env: DEF_LIB="shared" RUN_TESTS=1 |
365 | + - env: DEF_LIB="shared" RUN_TESTS=true |
366 | dist: focal |
367 | arch: arm64-graviton2 |
368 | virt: vm |
369 | group: edge |
370 | compiler: gcc |
371 | - - env: DEF_LIB="shared" BUILD_DOCS=1 |
372 | + - env: DEF_LIB="shared" BUILD_DOCS=true |
373 | arch: arm64 |
374 | compiler: gcc |
375 | addons: |
376 | @@ -104,14 +123,22 @@ jobs: |
377 | packages: |
378 | - *required_packages |
379 | - *doc_packages |
380 | + - env: DEF_LIB="shared" ABI_CHECKS=true |
381 | + arch: arm64 |
382 | + compiler: gcc |
383 | + addons: |
384 | + apt: |
385 | + packages: |
386 | + - *required_packages |
387 | + - *libabigail_build_packages |
388 | # aarch64 clang jobs |
389 | - env: DEF_LIB="static" |
390 | arch: arm64 |
391 | compiler: clang |
392 | - - env: DEF_LIB="shared" RUN_TESTS=1 |
393 | + - env: DEF_LIB="shared" RUN_TESTS=true |
394 | arch: arm64 |
395 | compiler: clang |
396 | - - env: DEF_LIB="shared" RUN_TESTS=1 |
397 | + - env: DEF_LIB="shared" RUN_TESTS=true |
398 | dist: focal |
399 | arch: arm64-graviton2 |
400 | virt: vm |
401 | diff --git a/MAINTAINERS b/MAINTAINERS |
402 | index eafe9f8..dcde2ab 100644 |
403 | --- a/MAINTAINERS |
404 | +++ b/MAINTAINERS |
405 | @@ -103,12 +103,14 @@ F: buildtools/gen-pmdinfo-cfile.sh |
406 | F: buildtools/list-dir-globs.py |
407 | F: buildtools/pkg-config/ |
408 | F: buildtools/symlink-drivers-solibs.sh |
409 | +F: buildtools/symlink-drivers-solibs.py |
410 | F: devtools/test-meson-builds.sh |
411 | |
412 | Public CI |
413 | M: Aaron Conole <aconole@redhat.com> |
414 | M: Michael Santana <maicolgabriel@hotmail.com> |
415 | F: .travis.yml |
416 | +F: .github/workflows/build.yml |
417 | F: .ci/ |
418 | |
419 | ABI Policy & Versioning |
420 | diff --git a/VERSION b/VERSION |
421 | index 2dbbe00..bc6fac4 100644 |
422 | --- a/VERSION |
423 | +++ b/VERSION |
424 | @@ -1 +1 @@ |
425 | -20.11.1 |
426 | +20.11.3 |
427 | diff --git a/app/meson.build b/app/meson.build |
428 | index 87fc195..50a53db 100644 |
429 | --- a/app/meson.build |
430 | +++ b/app/meson.build |
431 | @@ -21,9 +21,6 @@ apps = [ |
432 | 'test-regex', |
433 | 'test-sad'] |
434 | |
435 | -# for BSD only |
436 | -lib_execinfo = cc.find_library('execinfo', required: false) |
437 | - |
438 | default_cflags = machine_args + ['-DALLOW_EXPERIMENTAL_API'] |
439 | default_ldflags = [] |
440 | if get_option('default_library') == 'static' and not is_windows |
441 | @@ -53,7 +50,6 @@ foreach app:apps |
442 | dep_objs += get_variable(get_option('default_library') |
443 | + '_rte_' + d) |
444 | endforeach |
445 | - dep_objs += lib_execinfo |
446 | |
447 | link_libs = [] |
448 | if get_option('default_library') == 'static' |
449 | diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c |
450 | index 59b37ed..36589f3 100644 |
451 | --- a/app/test-bbdev/test_bbdev_perf.c |
452 | +++ b/app/test-bbdev/test_bbdev_perf.c |
453 | @@ -372,14 +372,14 @@ check_dev_cap(const struct rte_bbdev_info *dev_info) |
454 | if (nb_harq_inputs > cap->num_buffers_hard_out) { |
455 | printf( |
456 | "Too many HARQ inputs defined: %u, max: %u\n", |
457 | - nb_hard_outputs, |
458 | + nb_harq_inputs, |
459 | cap->num_buffers_hard_out); |
460 | return TEST_FAILED; |
461 | } |
462 | if (nb_harq_outputs > cap->num_buffers_hard_out) { |
463 | printf( |
464 | "Too many HARQ outputs defined: %u, max: %u\n", |
465 | - nb_hard_outputs, |
466 | + nb_harq_outputs, |
467 | cap->num_buffers_hard_out); |
468 | return TEST_FAILED; |
469 | } |
470 | @@ -957,6 +957,9 @@ init_op_data_objs(struct rte_bbdev_op_data *bufs, |
471 | if ((op_type == DATA_INPUT) && large_input) { |
472 | /* Allocate a fake overused mbuf */ |
473 | data = rte_malloc(NULL, seg->length, 0); |
474 | + TEST_ASSERT_NOT_NULL(data, |
475 | + "rte malloc failed with %u bytes", |
476 | + seg->length); |
477 | memcpy(data, seg->addr, seg->length); |
478 | m_head->buf_addr = data; |
479 | m_head->buf_iova = rte_malloc_virt2iova(data); |
480 | diff --git a/app/test-compress-perf/comp_perf_options_parse.c b/app/test-compress-perf/comp_perf_options_parse.c |
481 | index 04a8d2f..019eddb 100644 |
482 | --- a/app/test-compress-perf/comp_perf_options_parse.c |
483 | +++ b/app/test-compress-perf/comp_perf_options_parse.c |
484 | @@ -620,7 +620,7 @@ comp_perf_options_parse(struct comp_test_data *test_data, int argc, char **argv) |
485 | switch (opt) { |
486 | case 'h': |
487 | usage(argv[0]); |
488 | - rte_exit(EXIT_SUCCESS, "Displayed help\n"); |
489 | + exit(EXIT_SUCCESS); |
490 | break; |
491 | /* long options */ |
492 | case 0: |
493 | diff --git a/app/test-crypto-perf/cperf_options_parsing.c b/app/test-crypto-perf/cperf_options_parsing.c |
494 | index 0466f7b..e84f56c 100644 |
495 | --- a/app/test-crypto-perf/cperf_options_parsing.c |
496 | +++ b/app/test-crypto-perf/cperf_options_parsing.c |
497 | @@ -506,6 +506,12 @@ parse_test_name(struct cperf_options *opts, |
498 | { |
499 | char *test_name = (char *) rte_zmalloc(NULL, |
500 | sizeof(char) * (strlen(arg) + 3), 0); |
501 | + if (test_name == NULL) { |
502 | + RTE_LOG(ERR, USER1, "Failed to rte zmalloc with size: %zu\n", |
503 | + strlen(arg) + 3); |
504 | + return -1; |
505 | + } |
506 | + |
507 | snprintf(test_name, strlen(arg) + 3, "[%s]", arg); |
508 | opts->test_name = test_name; |
509 | |
510 | @@ -983,7 +989,7 @@ cperf_options_parse(struct cperf_options *options, int argc, char **argv) |
511 | switch (opt) { |
512 | case 'h': |
513 | usage(argv[0]); |
514 | - rte_exit(EXIT_SUCCESS, "Displayed help\n"); |
515 | + exit(EXIT_SUCCESS); |
516 | break; |
517 | /* long options */ |
518 | case 0: |
519 | diff --git a/app/test-crypto-perf/cperf_test_common.c b/app/test-crypto-perf/cperf_test_common.c |
520 | index 058e0ba..12925c7 100644 |
521 | --- a/app/test-crypto-perf/cperf_test_common.c |
522 | +++ b/app/test-crypto-perf/cperf_test_common.c |
523 | @@ -194,7 +194,7 @@ cperf_alloc_common_memory(const struct cperf_options *options, |
524 | (mbuf_size * segments_nb); |
525 | params.dst_buf_offset = *dst_buf_offset; |
526 | /* Destination buffer will be one segment only */ |
527 | - obj_size += max_size; |
528 | + obj_size += max_size + sizeof(struct rte_mbuf); |
529 | } |
530 | |
531 | *pool = rte_mempool_create_empty(pool_name, |
532 | diff --git a/app/test-eventdev/evt_options.c b/app/test-eventdev/evt_options.c |
533 | index 0d04ea9..8c9d3fc 100644 |
534 | --- a/app/test-eventdev/evt_options.c |
535 | +++ b/app/test-eventdev/evt_options.c |
536 | @@ -218,7 +218,7 @@ evt_parse_plcores(struct evt_options *opt, const char *corelist) |
537 | { |
538 | int ret; |
539 | |
540 | - ret = parse_lcores_list(opt->plcores, corelist); |
541 | + ret = parse_lcores_list(opt->plcores, RTE_MAX_LCORE, corelist); |
542 | if (ret == -E2BIG) |
543 | evt_err("duplicate lcores in plcores"); |
544 | |
545 | @@ -230,7 +230,7 @@ evt_parse_work_lcores(struct evt_options *opt, const char *corelist) |
546 | { |
547 | int ret; |
548 | |
549 | - ret = parse_lcores_list(opt->wlcores, corelist); |
550 | + ret = parse_lcores_list(opt->wlcores, RTE_MAX_LCORE, corelist); |
551 | if (ret == -E2BIG) |
552 | evt_err("duplicate lcores in wlcores"); |
553 | |
554 | diff --git a/app/test-eventdev/parser.c b/app/test-eventdev/parser.c |
555 | index 24f1855..8818c37 100644 |
556 | --- a/app/test-eventdev/parser.c |
557 | +++ b/app/test-eventdev/parser.c |
558 | @@ -310,7 +310,7 @@ parse_hex_string(char *src, uint8_t *dst, uint32_t *size) |
559 | } |
560 | |
561 | int |
562 | -parse_lcores_list(bool lcores[], const char *corelist) |
563 | +parse_lcores_list(bool lcores[], int lcores_num, const char *corelist) |
564 | { |
565 | int i, idx = 0; |
566 | int min, max; |
567 | @@ -332,6 +332,8 @@ parse_lcores_list(bool lcores[], const char *corelist) |
568 | if (*corelist == '\0') |
569 | return -1; |
570 | idx = strtoul(corelist, &end, 10); |
571 | + if (idx < 0 || idx > lcores_num) |
572 | + return -1; |
573 | |
574 | if (end == NULL) |
575 | return -1; |
576 | diff --git a/app/test-eventdev/parser.h b/app/test-eventdev/parser.h |
577 | index 673ff22..696b40a 100644 |
578 | --- a/app/test-eventdev/parser.h |
579 | +++ b/app/test-eventdev/parser.h |
580 | @@ -46,5 +46,5 @@ int parse_hex_string(char *src, uint8_t *dst, uint32_t *size); |
581 | |
582 | int parse_tokenize_string(char *string, char *tokens[], uint32_t *n_tokens); |
583 | |
584 | -int parse_lcores_list(bool lcores[], const char *corelist); |
585 | +int parse_lcores_list(bool lcores[], int lcores_num, const char *corelist); |
586 | #endif |
587 | diff --git a/app/test-eventdev/test_perf_common.c b/app/test-eventdev/test_perf_common.c |
588 | index 955edb7..2fe15ed 100644 |
589 | --- a/app/test-eventdev/test_perf_common.c |
590 | +++ b/app/test-eventdev/test_perf_common.c |
591 | @@ -2,6 +2,8 @@ |
592 | * Copyright(c) 2017 Cavium, Inc |
593 | */ |
594 | |
595 | +#include <math.h> |
596 | + |
597 | #include "test_perf_common.h" |
598 | |
599 | int |
600 | @@ -95,11 +97,13 @@ perf_event_timer_producer(void *arg) |
601 | uint64_t timeout_ticks = opt->expiry_nsec / opt->timer_tick_nsec; |
602 | |
603 | memset(&tim, 0, sizeof(struct rte_event_timer)); |
604 | - timeout_ticks = opt->optm_timer_tick_nsec ? |
605 | - (timeout_ticks * opt->timer_tick_nsec) |
606 | - / opt->optm_timer_tick_nsec : timeout_ticks; |
607 | + timeout_ticks = |
608 | + opt->optm_timer_tick_nsec |
609 | + ? ceil((double)(timeout_ticks * opt->timer_tick_nsec) / |
610 | + opt->optm_timer_tick_nsec) |
611 | + : timeout_ticks; |
612 | timeout_ticks += timeout_ticks ? 0 : 1; |
613 | - tim.ev.event_type = RTE_EVENT_TYPE_TIMER; |
614 | + tim.ev.event_type = RTE_EVENT_TYPE_TIMER; |
615 | tim.ev.op = RTE_EVENT_OP_NEW; |
616 | tim.ev.sched_type = t->opt->sched_type_list[0]; |
617 | tim.ev.queue_id = p->queue_id; |
618 | @@ -159,11 +163,13 @@ perf_event_timer_producer_burst(void *arg) |
619 | uint64_t timeout_ticks = opt->expiry_nsec / opt->timer_tick_nsec; |
620 | |
621 | memset(&tim, 0, sizeof(struct rte_event_timer)); |
622 | - timeout_ticks = opt->optm_timer_tick_nsec ? |
623 | - (timeout_ticks * opt->timer_tick_nsec) |
624 | - / opt->optm_timer_tick_nsec : timeout_ticks; |
625 | + timeout_ticks = |
626 | + opt->optm_timer_tick_nsec |
627 | + ? ceil((double)(timeout_ticks * opt->timer_tick_nsec) / |
628 | + opt->optm_timer_tick_nsec) |
629 | + : timeout_ticks; |
630 | timeout_ticks += timeout_ticks ? 0 : 1; |
631 | - tim.ev.event_type = RTE_EVENT_TYPE_TIMER; |
632 | + tim.ev.event_type = RTE_EVENT_TYPE_TIMER; |
633 | tim.ev.op = RTE_EVENT_OP_NEW; |
634 | tim.ev.sched_type = t->opt->sched_type_list[0]; |
635 | tim.ev.queue_id = p->queue_id; |
636 | diff --git a/app/test-flow-perf/main.c b/app/test-flow-perf/main.c |
637 | index e2fc5b7..f525bc9 100644 |
638 | --- a/app/test-flow-perf/main.c |
639 | +++ b/app/test-flow-perf/main.c |
640 | @@ -606,7 +606,7 @@ args_parse(int argc, char **argv) |
641 | case 0: |
642 | if (strcmp(lgopts[opt_idx].name, "help") == 0) { |
643 | usage(argv[0]); |
644 | - rte_exit(EXIT_SUCCESS, "Displayed help\n"); |
645 | + exit(EXIT_SUCCESS); |
646 | } |
647 | |
648 | if (strcmp(lgopts[opt_idx].name, "group") == 0) { |
649 | @@ -614,7 +614,7 @@ args_parse(int argc, char **argv) |
650 | if (n >= 0) |
651 | flow_group = n; |
652 | else |
653 | - rte_exit(EXIT_SUCCESS, |
654 | + rte_exit(EXIT_FAILURE, |
655 | "flow group should be >= 0\n"); |
656 | printf("group %d / ", flow_group); |
657 | } |
658 | @@ -634,7 +634,7 @@ args_parse(int argc, char **argv) |
659 | if (n > 0) |
660 | hairpin_queues_num = n; |
661 | else |
662 | - rte_exit(EXIT_SUCCESS, |
663 | + rte_exit(EXIT_FAILURE, |
664 | "Hairpin queues should be > 0\n"); |
665 | |
666 | flow_actions[actions_idx++] = |
667 | @@ -647,7 +647,7 @@ args_parse(int argc, char **argv) |
668 | if (n > 0) |
669 | hairpin_queues_num = n; |
670 | else |
671 | - rte_exit(EXIT_SUCCESS, |
672 | + rte_exit(EXIT_FAILURE, |
673 | "Hairpin queues should be > 0\n"); |
674 | |
675 | flow_actions[actions_idx++] = |
676 | @@ -671,11 +671,9 @@ args_parse(int argc, char **argv) |
677 | break; |
678 | } |
679 | /* Reached last item with no match */ |
680 | - if (i == (RTE_DIM(flow_options) - 1)) { |
681 | - fprintf(stderr, "Invalid encap item: %s\n", token); |
682 | - usage(argv[0]); |
683 | - rte_exit(EXIT_SUCCESS, "Invalid encap item\n"); |
684 | - } |
685 | + if (i == (RTE_DIM(flow_options) - 1)) |
686 | + rte_exit(EXIT_FAILURE, |
687 | + "Invalid encap item: %s\n", token); |
688 | } |
689 | token = strtok(NULL, ","); |
690 | } |
691 | @@ -693,15 +691,13 @@ args_parse(int argc, char **argv) |
692 | for (i = 0; i < RTE_DIM(flow_options); i++) { |
693 | if (strcmp(flow_options[i].str, token) == 0) { |
694 | printf("%s,", token); |
695 | - encap_data |= flow_options[i].mask; |
696 | + decap_data |= flow_options[i].mask; |
697 | break; |
698 | } |
699 | /* Reached last item with no match */ |
700 | - if (i == (RTE_DIM(flow_options) - 1)) { |
701 | - fprintf(stderr, "Invalid decap item: %s\n", token); |
702 | - usage(argv[0]); |
703 | - rte_exit(EXIT_SUCCESS, "Invalid decap item\n"); |
704 | - } |
705 | + if (i == (RTE_DIM(flow_options) - 1)) |
706 | + rte_exit(EXIT_FAILURE, |
707 | + "Invalid decap item %s\n", token); |
708 | } |
709 | token = strtok(NULL, ","); |
710 | } |
711 | @@ -714,9 +710,9 @@ args_parse(int argc, char **argv) |
712 | if (n >= DEFAULT_RULES_BATCH) |
713 | rules_batch = n; |
714 | else { |
715 | - printf("\n\nrules_batch should be >= %d\n", |
716 | + rte_exit(EXIT_FAILURE, |
717 | + "rules_batch should be >= %d\n", |
718 | DEFAULT_RULES_BATCH); |
719 | - rte_exit(EXIT_SUCCESS, " "); |
720 | } |
721 | } |
722 | if (strcmp(lgopts[opt_idx].name, |
723 | @@ -725,7 +721,8 @@ args_parse(int argc, char **argv) |
724 | if (n >= (int) rules_batch) |
725 | rules_count = n; |
726 | else { |
727 | - printf("\n\nrules_count should be >= %d\n", |
728 | + rte_exit(EXIT_FAILURE, |
729 | + "rules_count should be >= %d\n", |
730 | rules_batch); |
731 | } |
732 | } |
733 | @@ -752,9 +749,9 @@ args_parse(int argc, char **argv) |
734 | } |
735 | break; |
736 | default: |
737 | - fprintf(stderr, "Invalid option: %s\n", argv[optind]); |
738 | usage(argv[0]); |
739 | - rte_exit(EXIT_SUCCESS, "Invalid option\n"); |
740 | + rte_exit(EXIT_FAILURE, "Invalid option: %s\n", |
741 | + argv[optind]); |
742 | break; |
743 | } |
744 | } |
745 | @@ -853,7 +850,7 @@ destroy_flows(int port_id, struct rte_flow **flow_list) |
746 | memset(&error, 0x33, sizeof(error)); |
747 | if (rte_flow_destroy(port_id, flow_list[i], &error)) { |
748 | print_flow_error(error); |
749 | - rte_exit(EXIT_FAILURE, "Error in deleting flow"); |
750 | + rte_exit(EXIT_FAILURE, "Error in deleting flow\n"); |
751 | } |
752 | |
753 | if (i && !((i + 1) % rules_batch)) { |
754 | @@ -924,7 +921,7 @@ flows_handler(void) |
755 | flow_list = rte_zmalloc("flow_list", |
756 | (sizeof(struct rte_flow *) * rules_count) + 1, 0); |
757 | if (flow_list == NULL) |
758 | - rte_exit(EXIT_FAILURE, "No Memory available!"); |
759 | + rte_exit(EXIT_FAILURE, "No Memory available!\n"); |
760 | |
761 | for (port_id = 0; port_id < nr_ports; port_id++) { |
762 | /* If port outside portmask */ |
763 | @@ -947,7 +944,7 @@ flows_handler(void) |
764 | |
765 | if (flow == NULL) { |
766 | print_flow_error(error); |
767 | - rte_exit(EXIT_FAILURE, "error in creating flow"); |
768 | + rte_exit(EXIT_FAILURE, "Error in creating flow\n"); |
769 | } |
770 | flow_list[flow_index++] = flow; |
771 | } |
772 | @@ -968,7 +965,7 @@ flows_handler(void) |
773 | |
774 | if (!flow) { |
775 | print_flow_error(error); |
776 | - rte_exit(EXIT_FAILURE, "error in creating flow"); |
777 | + rte_exit(EXIT_FAILURE, "Error in creating flow\n"); |
778 | } |
779 | |
780 | flow_list[flow_index++] = flow; |
781 | @@ -1087,7 +1084,7 @@ packet_per_second_stats(void) |
782 | old = rte_zmalloc("old", |
783 | sizeof(struct lcore_info) * MAX_LCORES, 0); |
784 | if (old == NULL) |
785 | - rte_exit(EXIT_FAILURE, "No Memory available!"); |
786 | + rte_exit(EXIT_FAILURE, "No Memory available!\n"); |
787 | |
788 | memcpy(old, lcore_infos, |
789 | sizeof(struct lcore_info) * MAX_LCORES); |
790 | diff --git a/app/test-pmd/bpf_cmd.c b/app/test-pmd/bpf_cmd.c |
791 | index 066619e..6980291 100644 |
792 | --- a/app/test-pmd/bpf_cmd.c |
793 | +++ b/app/test-pmd/bpf_cmd.c |
794 | @@ -20,7 +20,7 @@ static const struct rte_bpf_xsym bpf_xsym[] = { |
795 | .name = RTE_STR(stdout), |
796 | .type = RTE_BPF_XTYPE_VAR, |
797 | .var = { |
798 | - .val = &stdout, |
799 | + .val = (void *)(uintptr_t)&stdout, |
800 | .desc = { |
801 | .type = RTE_BPF_ARG_PTR, |
802 | .size = sizeof(stdout), |
803 | diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c |
804 | index 2b9dd3e..58ebff5 100644 |
805 | --- a/app/test-pmd/cmdline.c |
806 | +++ b/app/test-pmd/cmdline.c |
807 | @@ -1225,7 +1225,7 @@ cmdline_parse_token_string_t cmd_operate_port_all_all = |
808 | cmdline_parse_inst_t cmd_operate_port = { |
809 | .f = cmd_operate_port_parsed, |
810 | .data = NULL, |
811 | - .help_str = "port start|stop|close all: Start/Stop/Close/Reset all ports", |
812 | + .help_str = "port start|stop|close|reset all: Start/Stop/Close/Reset all ports", |
813 | .tokens = { |
814 | (void *)&cmd_operate_port_all_cmd, |
815 | (void *)&cmd_operate_port_all_port, |
816 | @@ -1272,7 +1272,7 @@ cmdline_parse_token_num_t cmd_operate_specific_port_id = |
817 | cmdline_parse_inst_t cmd_operate_specific_port = { |
818 | .f = cmd_operate_specific_port_parsed, |
819 | .data = NULL, |
820 | - .help_str = "port start|stop|close <port_id>: Start/Stop/Close/Reset port_id", |
821 | + .help_str = "port start|stop|close|reset <port_id>: Start/Stop/Close/Reset port_id", |
822 | .tokens = { |
823 | (void *)&cmd_operate_specific_port_cmd, |
824 | (void *)&cmd_operate_specific_port_port, |
825 | @@ -1521,6 +1521,9 @@ parse_and_check_speed_duplex(char *speedstr, char *duplexstr, uint32_t *speed) |
826 | } |
827 | } |
828 | |
829 | + if (*speed != ETH_LINK_SPEED_AUTONEG) |
830 | + *speed |= ETH_LINK_SPEED_FIXED; |
831 | + |
832 | return 0; |
833 | } |
834 | |
835 | @@ -1604,13 +1607,13 @@ cmd_config_speed_specific_parsed(void *parsed_result, |
836 | struct cmd_config_speed_specific *res = parsed_result; |
837 | uint32_t link_speed; |
838 | |
839 | - if (!all_ports_stopped()) { |
840 | - printf("Please stop all ports first\n"); |
841 | + if (port_id_is_invalid(res->id, ENABLED_WARN)) |
842 | return; |
843 | - } |
844 | |
845 | - if (port_id_is_invalid(res->id, ENABLED_WARN)) |
846 | + if (!port_is_stopped(res->id)) { |
847 | + printf("Please stop port %d first\n", res->id); |
848 | return; |
849 | + } |
850 | |
851 | if (parse_and_check_speed_duplex(res->value1, res->value2, |
852 | &link_speed) < 0) |
853 | @@ -2805,6 +2808,10 @@ cmd_setup_rxtx_queue_parsed( |
854 | if (!numa_support || socket_id == NUMA_NO_CONFIG) |
855 | socket_id = port->socket_id; |
856 | |
857 | + if (port->nb_tx_desc[res->qid] < tx_pkt_nb_segs) { |
858 | + printf("Failed to setup TX queue: not enough descriptors\n"); |
859 | + return; |
860 | + } |
861 | ret = rte_eth_tx_queue_setup(res->portid, |
862 | res->qid, |
863 | port->nb_tx_desc[res->qid], |
864 | @@ -4561,7 +4568,7 @@ cmd_config_queue_tx_offloads(struct rte_port *port) |
865 | int k; |
866 | |
867 | /* Apply queue tx offloads configuration */ |
868 | - for (k = 0; k < port->dev_info.max_rx_queues; k++) |
869 | + for (k = 0; k < port->dev_info.max_tx_queues; k++) |
870 | port->tx_conf[k].offloads = |
871 | port->dev_conf.txmode.offloads; |
872 | } |
873 | @@ -9096,7 +9103,7 @@ cmdline_parse_inst_t cmd_vf_rate_limit = { |
874 | |
875 | /* *** CONFIGURE TUNNEL UDP PORT *** */ |
876 | struct cmd_tunnel_udp_config { |
877 | - cmdline_fixed_string_t cmd; |
878 | + cmdline_fixed_string_t rx_vxlan_port; |
879 | cmdline_fixed_string_t what; |
880 | uint16_t udp_port; |
881 | portid_t port_id; |
882 | @@ -9112,9 +9119,7 @@ cmd_tunnel_udp_config_parsed(void *parsed_result, |
883 | int ret; |
884 | |
885 | tunnel_udp.udp_port = res->udp_port; |
886 | - |
887 | - if (!strcmp(res->cmd, "rx_vxlan_port")) |
888 | - tunnel_udp.prot_type = RTE_TUNNEL_TYPE_VXLAN; |
889 | + tunnel_udp.prot_type = RTE_TUNNEL_TYPE_VXLAN; |
890 | |
891 | if (!strcmp(res->what, "add")) |
892 | ret = rte_eth_dev_udp_tunnel_port_add(res->port_id, |
893 | @@ -9127,9 +9132,9 @@ cmd_tunnel_udp_config_parsed(void *parsed_result, |
894 | printf("udp tunneling add error: (%s)\n", strerror(-ret)); |
895 | } |
896 | |
897 | -cmdline_parse_token_string_t cmd_tunnel_udp_config_cmd = |
898 | +cmdline_parse_token_string_t cmd_tunnel_udp_config_rx_vxlan_port = |
899 | TOKEN_STRING_INITIALIZER(struct cmd_tunnel_udp_config, |
900 | - cmd, "rx_vxlan_port"); |
901 | + rx_vxlan_port, "rx_vxlan_port"); |
902 | cmdline_parse_token_string_t cmd_tunnel_udp_config_what = |
903 | TOKEN_STRING_INITIALIZER(struct cmd_tunnel_udp_config, |
904 | what, "add#rm"); |
905 | @@ -9146,7 +9151,7 @@ cmdline_parse_inst_t cmd_tunnel_udp_config = { |
906 | .help_str = "rx_vxlan_port add|rm <udp_port> <port_id>: " |
907 | "Add/Remove a tunneling UDP port filter", |
908 | .tokens = { |
909 | - (void *)&cmd_tunnel_udp_config_cmd, |
910 | + (void *)&cmd_tunnel_udp_config_rx_vxlan_port, |
911 | (void *)&cmd_tunnel_udp_config_what, |
912 | (void *)&cmd_tunnel_udp_config_udp_port, |
913 | (void *)&cmd_tunnel_udp_config_port_id, |
914 | @@ -9552,7 +9557,7 @@ dump_socket_mem(FILE *f) |
915 | fprintf(f, |
916 | "Total : size(M) total: %.6lf alloc: %.6lf(%.3lf%%) free: %.6lf \tcount alloc: %-4u free: %u\n", |
917 | (double)total / (1024 * 1024), (double)alloc / (1024 * 1024), |
918 | - (double)alloc * 100 / (double)total, |
919 | + total ? ((double)alloc * 100 / (double)total) : 0, |
920 | (double)free / (1024 * 1024), |
921 | n_alloc, n_free); |
922 | if (last_allocs) |
923 | @@ -16444,17 +16449,17 @@ cmd_set_port_fec_mode_parsed( |
924 | { |
925 | struct cmd_set_port_fec_mode *res = parsed_result; |
926 | uint16_t port_id = res->port_id; |
927 | - uint32_t mode; |
928 | + uint32_t fec_capa; |
929 | int ret; |
930 | |
931 | - ret = parse_fec_mode(res->fec_value, &mode); |
932 | + ret = parse_fec_mode(res->fec_value, &fec_capa); |
933 | if (ret < 0) { |
934 | printf("Unknown fec mode: %s for Port %d\n", res->fec_value, |
935 | port_id); |
936 | return; |
937 | } |
938 | |
939 | - ret = rte_eth_fec_set(port_id, mode); |
940 | + ret = rte_eth_fec_set(port_id, fec_capa); |
941 | if (ret == -ENOTSUP) { |
942 | printf("Function not implemented\n"); |
943 | return; |
944 | @@ -16615,7 +16620,8 @@ cmd_show_rx_tx_desc_status_parsed(void *parsed_result, |
945 | rc = rte_eth_rx_descriptor_status(res->cmd_pid, res->cmd_qid, |
946 | res->cmd_did); |
947 | if (rc < 0) { |
948 | - printf("Invalid queueid = %d\n", res->cmd_qid); |
949 | + printf("Invalid input: queue id = %d, desc id = %d\n", |
950 | + res->cmd_qid, res->cmd_did); |
951 | return; |
952 | } |
953 | if (rc == RTE_ETH_RX_DESC_AVAIL) |
954 | @@ -16628,7 +16634,8 @@ cmd_show_rx_tx_desc_status_parsed(void *parsed_result, |
955 | rc = rte_eth_tx_descriptor_status(res->cmd_pid, res->cmd_qid, |
956 | res->cmd_did); |
957 | if (rc < 0) { |
958 | - printf("Invalid queueid = %d\n", res->cmd_qid); |
959 | + printf("Invalid input: queue id = %d, desc id = %d\n", |
960 | + res->cmd_qid, res->cmd_did); |
961 | return; |
962 | } |
963 | if (rc == RTE_ETH_TX_DESC_FULL) |
964 | diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c |
965 | index de80924..c67ac71 100644 |
966 | --- a/app/test-pmd/cmdline_flow.c |
967 | +++ b/app/test-pmd/cmdline_flow.c |
968 | @@ -5203,6 +5203,8 @@ parse_vc_action_nvgre_encap(struct context *ctx, const struct token *token, |
969 | .src_addr = nvgre_encap_conf.ipv4_src, |
970 | .dst_addr = nvgre_encap_conf.ipv4_dst, |
971 | }, |
972 | + .item_nvgre.c_k_s_rsvd0_ver = RTE_BE16(0x2000), |
973 | + .item_nvgre.protocol = RTE_BE16(RTE_ETHER_TYPE_TEB), |
974 | .item_nvgre.flow_id = 0, |
975 | }; |
976 | memcpy(action_nvgre_encap_data->item_eth.dst.addr_bytes, |
977 | diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c |
978 | index dab8afe..4847c36 100644 |
979 | --- a/app/test-pmd/config.c |
980 | +++ b/app/test-pmd/config.c |
981 | @@ -2115,6 +2115,9 @@ port_flow_create(portid_t port_id, |
982 | memset(&error, 0x22, sizeof(error)); |
983 | flow = rte_flow_create(port_id, attr, pattern, actions, &error); |
984 | if (!flow) { |
985 | + if (tunnel_ops->enabled) |
986 | + port_flow_tunnel_offload_cmd_release(port_id, |
987 | + tunnel_ops, pft); |
988 | free(pf); |
989 | return port_flow_complain(&error); |
990 | } |
991 | @@ -2963,7 +2966,7 @@ port_rss_hash_conf_show(portid_t port_id, int show_rss_key) |
992 | |
993 | void |
994 | port_rss_hash_key_update(portid_t port_id, char rss_type[], uint8_t *hash_key, |
995 | - uint hash_key_len) |
996 | + uint8_t hash_key_len) |
997 | { |
998 | struct rte_eth_rss_conf rss_conf; |
999 | int diag; |
1000 | @@ -3153,6 +3156,21 @@ rss_fwd_config_setup(void) |
1001 | } |
1002 | } |
1003 | |
1004 | +static uint16_t |
1005 | +get_fwd_port_total_tc_num(void) |
1006 | +{ |
1007 | + struct rte_eth_dcb_info dcb_info; |
1008 | + uint16_t total_tc_num = 0; |
1009 | + unsigned int i; |
1010 | + |
1011 | + for (i = 0; i < nb_fwd_ports; i++) { |
1012 | + (void)rte_eth_dev_get_dcb_info(fwd_ports_ids[i], &dcb_info); |
1013 | + total_tc_num += dcb_info.nb_tcs; |
1014 | + } |
1015 | + |
1016 | + return total_tc_num; |
1017 | +} |
1018 | + |
1019 | /** |
1020 | * For the DCB forwarding test, each core is assigned on each traffic class. |
1021 | * |
1022 | @@ -3172,12 +3190,42 @@ dcb_fwd_config_setup(void) |
1023 | lcoreid_t lc_id; |
1024 | uint16_t nb_rx_queue, nb_tx_queue; |
1025 | uint16_t i, j, k, sm_id = 0; |
1026 | + uint16_t total_tc_num; |
1027 | + struct rte_port *port; |
1028 | uint8_t tc = 0; |
1029 | + portid_t pid; |
1030 | + int ret; |
1031 | + |
1032 | + /* |
1033 | + * The fwd_config_setup() is called when the port is RTE_PORT_STARTED |
1034 | + * or RTE_PORT_STOPPED. |
1035 | + * |
1036 | + * Re-configure ports to get updated mapping between tc and queue in |
1037 | + * case the queue number of the port is changed. Skip for started ports |
1038 | + * since modifying queue number and calling dev_configure need to stop |
1039 | + * ports first. |
1040 | + */ |
1041 | + for (pid = 0; pid < nb_fwd_ports; pid++) { |
1042 | + if (port_is_started(pid) == 1) |
1043 | + continue; |
1044 | + |
1045 | + port = &ports[pid]; |
1046 | + ret = rte_eth_dev_configure(pid, nb_rxq, nb_txq, |
1047 | + &port->dev_conf); |
1048 | + if (ret < 0) { |
1049 | + printf("Failed to re-configure port %d, ret = %d.\n", |
1050 | + pid, ret); |
1051 | + return; |
1052 | + } |
1053 | + } |
1054 | |
1055 | cur_fwd_config.nb_fwd_lcores = (lcoreid_t) nb_fwd_lcores; |
1056 | cur_fwd_config.nb_fwd_ports = nb_fwd_ports; |
1057 | cur_fwd_config.nb_fwd_streams = |
1058 | (streamid_t) (nb_rxq * cur_fwd_config.nb_fwd_ports); |
1059 | + total_tc_num = get_fwd_port_total_tc_num(); |
1060 | + if (cur_fwd_config.nb_fwd_lcores > total_tc_num) |
1061 | + cur_fwd_config.nb_fwd_lcores = total_tc_num; |
1062 | |
1063 | /* reinitialize forwarding streams */ |
1064 | init_fwd_streams(); |
1065 | @@ -3299,6 +3347,10 @@ icmp_echo_config_setup(void) |
1066 | void |
1067 | fwd_config_setup(void) |
1068 | { |
1069 | + struct rte_port *port; |
1070 | + portid_t pt_id; |
1071 | + unsigned int i; |
1072 | + |
1073 | cur_fwd_config.fwd_eng = cur_fwd_eng; |
1074 | if (strcmp(cur_fwd_eng->fwd_mode_name, "icmpecho") == 0) { |
1075 | icmp_echo_config_setup(); |
1076 | @@ -3306,9 +3358,24 @@ fwd_config_setup(void) |
1077 | } |
1078 | |
1079 | if ((nb_rxq > 1) && (nb_txq > 1)){ |
1080 | - if (dcb_config) |
1081 | + if (dcb_config) { |
1082 | + for (i = 0; i < nb_fwd_ports; i++) { |
1083 | + pt_id = fwd_ports_ids[i]; |
1084 | + port = &ports[pt_id]; |
1085 | + if (!port->dcb_flag) { |
1086 | + printf("In DCB mode, all forwarding ports must " |
1087 | + "be configured in this mode.\n"); |
1088 | + return; |
1089 | + } |
1090 | + } |
1091 | + if (nb_fwd_lcores == 1) { |
1092 | + printf("In DCB mode,the nb forwarding cores " |
1093 | + "should be larger than 1.\n"); |
1094 | + return; |
1095 | + } |
1096 | + |
1097 | dcb_fwd_config_setup(); |
1098 | - else |
1099 | + } else |
1100 | rss_fwd_config_setup(); |
1101 | } |
1102 | else |
1103 | @@ -3693,13 +3760,14 @@ set_tx_pkt_split(const char *name) |
1104 | } |
1105 | |
1106 | int |
1107 | -parse_fec_mode(const char *name, uint32_t *mode) |
1108 | +parse_fec_mode(const char *name, uint32_t *fec_capa) |
1109 | { |
1110 | uint8_t i; |
1111 | |
1112 | for (i = 0; i < RTE_DIM(fec_mode_name); i++) { |
1113 | if (strcmp(fec_mode_name[i].name, name) == 0) { |
1114 | - *mode = RTE_ETH_FEC_MODE_TO_CAPA(fec_mode_name[i].mode); |
1115 | + *fec_capa = |
1116 | + RTE_ETH_FEC_MODE_TO_CAPA(fec_mode_name[i].mode); |
1117 | return 0; |
1118 | } |
1119 | } |
1120 | @@ -3842,13 +3910,15 @@ nb_segs_is_invalid(unsigned int nb_segs) |
1121 | RTE_ETH_FOREACH_DEV(port_id) { |
1122 | for (queue_id = 0; queue_id < nb_txq; queue_id++) { |
1123 | ret = get_tx_ring_size(port_id, queue_id, &ring_size); |
1124 | - |
1125 | - if (ret) |
1126 | - return true; |
1127 | - |
1128 | + if (ret) { |
1129 | + /* Port may not be initialized yet, can't say |
1130 | + * the port is invalid in this stage. |
1131 | + */ |
1132 | + continue; |
1133 | + } |
1134 | if (ring_size < nb_segs) { |
1135 | - printf("nb segments per TX packets=%u >= " |
1136 | - "TX queue(%u) ring_size=%u - ignored\n", |
1137 | + printf("nb segments per TX packets=%u >= TX " |
1138 | + "queue(%u) ring_size=%u - txpkts ignored\n", |
1139 | nb_segs, queue_id, ring_size); |
1140 | return true; |
1141 | } |
1142 | @@ -3864,12 +3934,26 @@ set_tx_pkt_segments(unsigned int *seg_lengths, unsigned int nb_segs) |
1143 | uint16_t tx_pkt_len; |
1144 | unsigned int i; |
1145 | |
1146 | - if (nb_segs_is_invalid(nb_segs)) |
1147 | + /* |
1148 | + * For single segment settings failed check is ignored. |
1149 | + * It is a very basic capability to send the single segment |
1150 | + * packets, suppose it is always supported. |
1151 | + */ |
1152 | + if (nb_segs > 1 && nb_segs_is_invalid(nb_segs)) { |
1153 | + printf("Tx segment size(%u) is not supported - txpkts ignored\n", |
1154 | + nb_segs); |
1155 | + return; |
1156 | + } |
1157 | + |
1158 | + if (nb_segs > RTE_MAX_SEGS_PER_PKT) { |
1159 | + printf("Tx segment size(%u) is bigger than max number of segment(%u)\n", |
1160 | + nb_segs, RTE_MAX_SEGS_PER_PKT); |
1161 | return; |
1162 | + } |
1163 | |
1164 | /* |
1165 | * Check that each segment length is greater or equal than |
1166 | - * the mbuf data sise. |
1167 | + * the mbuf data size. |
1168 | * Check also that the total packet length is greater or equal than the |
1169 | * size of an empty UDP/IP packet (sizeof(struct rte_ether_hdr) + |
1170 | * 20 + 8). |
1171 | @@ -5219,7 +5303,8 @@ show_macs(portid_t port_id) |
1172 | |
1173 | dev = &rte_eth_devices[port_id]; |
1174 | |
1175 | - rte_eth_dev_info_get(port_id, &dev_info); |
1176 | + if (eth_dev_info_get_print_err(port_id, &dev_info)) |
1177 | + return; |
1178 | |
1179 | for (i = 0; i < dev_info.max_mac_addrs; i++) { |
1180 | addr = &dev->data->mac_addrs[i]; |
1181 | diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c |
1182 | index d813d4f..b0a58e8 100644 |
1183 | --- a/app/test-pmd/csumonly.c |
1184 | +++ b/app/test-pmd/csumonly.c |
1185 | @@ -480,17 +480,18 @@ process_inner_cksums(void *l3_hdr, const struct testpmd_offload_info *info, |
1186 | |
1187 | if (info->ethertype == _htons(RTE_ETHER_TYPE_IPV4)) { |
1188 | ipv4_hdr = l3_hdr; |
1189 | - ipv4_hdr->hdr_checksum = 0; |
1190 | |
1191 | ol_flags |= PKT_TX_IPV4; |
1192 | if (info->l4_proto == IPPROTO_TCP && tso_segsz) { |
1193 | ol_flags |= PKT_TX_IP_CKSUM; |
1194 | } else { |
1195 | - if (tx_offloads & DEV_TX_OFFLOAD_IPV4_CKSUM) |
1196 | + if (tx_offloads & DEV_TX_OFFLOAD_IPV4_CKSUM) { |
1197 | ol_flags |= PKT_TX_IP_CKSUM; |
1198 | - else |
1199 | + } else { |
1200 | + ipv4_hdr->hdr_checksum = 0; |
1201 | ipv4_hdr->hdr_checksum = |
1202 | rte_ipv4_cksum(ipv4_hdr); |
1203 | + } |
1204 | } |
1205 | } else if (info->ethertype == _htons(RTE_ETHER_TYPE_IPV6)) |
1206 | ol_flags |= PKT_TX_IPV6; |
1207 | @@ -501,10 +502,10 @@ process_inner_cksums(void *l3_hdr, const struct testpmd_offload_info *info, |
1208 | udp_hdr = (struct rte_udp_hdr *)((char *)l3_hdr + info->l3_len); |
1209 | /* do not recalculate udp cksum if it was 0 */ |
1210 | if (udp_hdr->dgram_cksum != 0) { |
1211 | - udp_hdr->dgram_cksum = 0; |
1212 | - if (tx_offloads & DEV_TX_OFFLOAD_UDP_CKSUM) |
1213 | + if (tx_offloads & DEV_TX_OFFLOAD_UDP_CKSUM) { |
1214 | ol_flags |= PKT_TX_UDP_CKSUM; |
1215 | - else { |
1216 | + } else { |
1217 | + udp_hdr->dgram_cksum = 0; |
1218 | udp_hdr->dgram_cksum = |
1219 | get_udptcp_checksum(l3_hdr, udp_hdr, |
1220 | info->ethertype); |
1221 | @@ -514,12 +515,12 @@ process_inner_cksums(void *l3_hdr, const struct testpmd_offload_info *info, |
1222 | ol_flags |= PKT_TX_UDP_SEG; |
1223 | } else if (info->l4_proto == IPPROTO_TCP) { |
1224 | tcp_hdr = (struct rte_tcp_hdr *)((char *)l3_hdr + info->l3_len); |
1225 | - tcp_hdr->cksum = 0; |
1226 | if (tso_segsz) |
1227 | ol_flags |= PKT_TX_TCP_SEG; |
1228 | - else if (tx_offloads & DEV_TX_OFFLOAD_TCP_CKSUM) |
1229 | + else if (tx_offloads & DEV_TX_OFFLOAD_TCP_CKSUM) { |
1230 | ol_flags |= PKT_TX_TCP_CKSUM; |
1231 | - else { |
1232 | + } else { |
1233 | + tcp_hdr->cksum = 0; |
1234 | tcp_hdr->cksum = |
1235 | get_udptcp_checksum(l3_hdr, tcp_hdr, |
1236 | info->ethertype); |
1237 | @@ -529,13 +530,13 @@ process_inner_cksums(void *l3_hdr, const struct testpmd_offload_info *info, |
1238 | } else if (info->l4_proto == IPPROTO_SCTP) { |
1239 | sctp_hdr = (struct rte_sctp_hdr *) |
1240 | ((char *)l3_hdr + info->l3_len); |
1241 | - sctp_hdr->cksum = 0; |
1242 | /* sctp payload must be a multiple of 4 to be |
1243 | * offloaded */ |
1244 | if ((tx_offloads & DEV_TX_OFFLOAD_SCTP_CKSUM) && |
1245 | ((ipv4_hdr->total_length & 0x3) == 0)) { |
1246 | ol_flags |= PKT_TX_SCTP_CKSUM; |
1247 | } else { |
1248 | + sctp_hdr->cksum = 0; |
1249 | /* XXX implement CRC32c, example available in |
1250 | * RFC3309 */ |
1251 | } |
1252 | diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c |
1253 | index df5eb10..bf6df7e 100644 |
1254 | --- a/app/test-pmd/parameters.c |
1255 | +++ b/app/test-pmd/parameters.c |
1256 | @@ -49,29 +49,7 @@ |
1257 | static void |
1258 | usage(char* progname) |
1259 | { |
1260 | - printf("usage: %s [EAL options] -- " |
1261 | -#ifdef RTE_LIB_CMDLINE |
1262 | - "[--interactive|-i] " |
1263 | - "[--cmdline-file=FILENAME] " |
1264 | -#endif |
1265 | - "[--help|-h] | [--auto-start|-a] | [" |
1266 | - "--tx-first | --stats-period=PERIOD | " |
1267 | - "--coremask=COREMASK --portmask=PORTMASK --numa " |
1268 | - "--portlist=PORTLIST " |
1269 | - "--mbuf-size= | --total-num-mbufs= | " |
1270 | - "--nb-cores= | --nb-ports= | " |
1271 | -#ifdef RTE_LIB_CMDLINE |
1272 | - "--eth-peers-configfile= | " |
1273 | - "--eth-peer=X,M:M:M:M:M:M | " |
1274 | - "--tx-ip=SRC,DST | --tx-udp=PORT | " |
1275 | -#endif |
1276 | - "--pkt-filter-mode= |" |
1277 | - "--rss-ip | --rss-udp | --rss-level-inner | --rss-level-outer |" |
1278 | - "--rxpt= | --rxht= | --rxwt= |" |
1279 | - " --rxfreet= | --txpt= | --txht= | --txwt= | --txfreet= | " |
1280 | - "--txrst= | --tx-offloads= | | --rx-offloads= | " |
1281 | - "--vxlan-gpe-port= | --geneve-parsed-port= | " |
1282 | - "--record-core-cycles | --record-burst-stats]\n", |
1283 | + printf("\nUsage: %s [EAL options] -- [testpmd options]\n\n", |
1284 | progname); |
1285 | #ifdef RTE_LIB_CMDLINE |
1286 | printf(" --interactive: run in interactive mode.\n"); |
1287 | @@ -97,6 +75,7 @@ usage(char* progname) |
1288 | printf(" --portlist=PORTLIST: list of forwarding ports\n"); |
1289 | printf(" --numa: enable NUMA-aware allocation of RX/TX rings and of " |
1290 | "RX memory buffers (mbufs).\n"); |
1291 | + printf(" --no-numa: disable NUMA-aware allocation.\n"); |
1292 | printf(" --port-numa-config=(port,socket)[,(port,socket)]: " |
1293 | "specify the socket on which the memory pool " |
1294 | "used by the port will be allocated.\n"); |
1295 | @@ -136,6 +115,7 @@ usage(char* progname) |
1296 | "monitoring on forwarding lcore id N.\n"); |
1297 | #endif |
1298 | printf(" --disable-crc-strip: disable CRC stripping by hardware.\n"); |
1299 | + printf(" --enable-scatter: enable scattered Rx.\n"); |
1300 | printf(" --enable-lro: enable large receive offload.\n"); |
1301 | printf(" --enable-rx-cksum: enable rx hardware checksum offload.\n"); |
1302 | printf(" --enable-rx-timestamp: enable rx hardware timestamp offload.\n"); |
1303 | @@ -183,6 +163,8 @@ usage(char* progname) |
1304 | printf(" --txpkts=X[,Y]*: set TX segment sizes" |
1305 | " or total packet length.\n"); |
1306 | printf(" --txonly-multi-flow: generate multiple flows in txonly mode\n"); |
1307 | + printf(" --tx-ip=src,dst: IP addresses in Tx-only mode\n"); |
1308 | + printf(" --tx-udp=src[,dst]: UDP ports in Tx-only mode\n"); |
1309 | printf(" --disable-link-check: disable check on link status when " |
1310 | "starting/stopping ports.\n"); |
1311 | printf(" --disable-device-start: do not automatically start port\n"); |
1312 | @@ -213,14 +195,14 @@ usage(char* progname) |
1313 | printf(" --noisy-lkup-memory=N: allocate N MB of VNF memory\n"); |
1314 | printf(" --noisy-lkup-num-writes=N: do N random writes per packet\n"); |
1315 | printf(" --noisy-lkup-num-reads=N: do N random reads per packet\n"); |
1316 | - printf(" --noisy-lkup-num-writes=N: do N random reads and writes per packet\n"); |
1317 | + printf(" --noisy-lkup-num-reads-writes=N: do N random reads and writes per packet\n"); |
1318 | printf(" --no-iova-contig: mempool memory can be IOVA non contiguous. " |
1319 | "valid only with --mp-alloc=anon\n"); |
1320 | printf(" --rx-mq-mode=0xX: hexadecimal bitmask of RX mq mode can be " |
1321 | "enabled\n"); |
1322 | printf(" --record-core-cycles: enable measurement of CPU cycles.\n"); |
1323 | printf(" --record-burst-stats: enable display of RX and TX bursts.\n"); |
1324 | - printf(" --hairpin-mode=0xXX: bitmask set the hairpin port mode.\n " |
1325 | + printf(" --hairpin-mode=0xXX: bitmask set the hairpin port mode.\n" |
1326 | " 0x10 - explicit Tx rule, 0x02 - hairpin ports paired\n" |
1327 | " 0x01 - hairpin ports loop, 0x00 - hairpin port self\n"); |
1328 | } |
1329 | @@ -510,7 +492,6 @@ launch_args_parse(int argc, char** argv) |
1330 | #endif |
1331 | { "tx-first", 0, 0, 0 }, |
1332 | { "stats-period", 1, 0, 0 }, |
1333 | - { "ports", 1, 0, 0 }, |
1334 | { "nb-cores", 1, 0, 0 }, |
1335 | { "nb-ports", 1, 0, 0 }, |
1336 | { "coremask", 1, 0, 0 }, |
1337 | @@ -518,7 +499,7 @@ launch_args_parse(int argc, char** argv) |
1338 | { "portlist", 1, 0, 0 }, |
1339 | { "numa", 0, 0, 0 }, |
1340 | { "no-numa", 0, 0, 0 }, |
1341 | - { "mp-anon", 0, 0, 0 }, |
1342 | + { "mp-anon", 0, 0, 0 }, /* deprecated */ |
1343 | { "port-numa-config", 1, 0, 0 }, |
1344 | { "ring-numa-config", 1, 0, 0 }, |
1345 | { "socket-num", 1, 0, 0 }, |
1346 | @@ -630,7 +611,7 @@ launch_args_parse(int argc, char** argv) |
1347 | case 0: /*long options */ |
1348 | if (!strcmp(lgopts[opt_idx].name, "help")) { |
1349 | usage(argv[0]); |
1350 | - rte_exit(EXIT_SUCCESS, "Displayed help\n"); |
1351 | + exit(EXIT_SUCCESS); |
1352 | } |
1353 | #ifdef RTE_LIB_CMDLINE |
1354 | if (!strcmp(lgopts[opt_idx].name, "interactive")) { |
1355 | @@ -1359,7 +1340,7 @@ launch_args_parse(int argc, char** argv) |
1356 | break; |
1357 | case 'h': |
1358 | usage(argv[0]); |
1359 | - rte_exit(EXIT_SUCCESS, "Displayed help\n"); |
1360 | + exit(EXIT_SUCCESS); |
1361 | break; |
1362 | default: |
1363 | usage(argv[0]); |
1364 | diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c |
1365 | index 555852a..5288c04 100644 |
1366 | --- a/app/test-pmd/testpmd.c |
1367 | +++ b/app/test-pmd/testpmd.c |
1368 | @@ -245,9 +245,6 @@ uint16_t mb_mempool_cache = DEF_MBUF_CACHE; /**< Size of mbuf mempool cache. */ |
1369 | /* current configuration is in DCB or not,0 means it is not in DCB mode */ |
1370 | uint8_t dcb_config = 0; |
1371 | |
1372 | -/* Whether the dcb is in testing status */ |
1373 | -uint8_t dcb_test = 0; |
1374 | - |
1375 | /* |
1376 | * Configurable number of RX/TX queues. |
1377 | */ |
1378 | @@ -1402,22 +1399,69 @@ check_nb_hairpinq(queueid_t hairpinq) |
1379 | } |
1380 | |
1381 | static void |
1382 | +init_config_port_offloads(portid_t pid, uint32_t socket_id) |
1383 | +{ |
1384 | + struct rte_port *port = &ports[pid]; |
1385 | + uint16_t data_size; |
1386 | + int ret; |
1387 | + int i; |
1388 | + |
1389 | + port->dev_conf.txmode = tx_mode; |
1390 | + port->dev_conf.rxmode = rx_mode; |
1391 | + |
1392 | + ret = eth_dev_info_get_print_err(pid, &port->dev_info); |
1393 | + if (ret != 0) |
1394 | + rte_exit(EXIT_FAILURE, "rte_eth_dev_info_get() failed\n"); |
1395 | + |
1396 | + ret = update_jumbo_frame_offload(pid); |
1397 | + if (ret != 0) |
1398 | + printf("Updating jumbo frame offload failed for port %u\n", |
1399 | + pid); |
1400 | + |
1401 | + if (!(port->dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE)) |
1402 | + port->dev_conf.txmode.offloads &= |
1403 | + ~DEV_TX_OFFLOAD_MBUF_FAST_FREE; |
1404 | + |
1405 | + /* Apply Rx offloads configuration */ |
1406 | + for (i = 0; i < port->dev_info.max_rx_queues; i++) |
1407 | + port->rx_conf[i].offloads = port->dev_conf.rxmode.offloads; |
1408 | + /* Apply Tx offloads configuration */ |
1409 | + for (i = 0; i < port->dev_info.max_tx_queues; i++) |
1410 | + port->tx_conf[i].offloads = port->dev_conf.txmode.offloads; |
1411 | + |
1412 | + /* set flag to initialize port/queue */ |
1413 | + port->need_reconfig = 1; |
1414 | + port->need_reconfig_queues = 1; |
1415 | + port->socket_id = socket_id; |
1416 | + port->tx_metadata = 0; |
1417 | + |
1418 | + /* |
1419 | + * Check for maximum number of segments per MTU. |
1420 | + * Accordingly update the mbuf data size. |
1421 | + */ |
1422 | + if (port->dev_info.rx_desc_lim.nb_mtu_seg_max != UINT16_MAX && |
1423 | + port->dev_info.rx_desc_lim.nb_mtu_seg_max != 0) { |
1424 | + data_size = rx_mode.max_rx_pkt_len / |
1425 | + port->dev_info.rx_desc_lim.nb_mtu_seg_max; |
1426 | + |
1427 | + if ((data_size + RTE_PKTMBUF_HEADROOM) > mbuf_data_size[0]) { |
1428 | + mbuf_data_size[0] = data_size + RTE_PKTMBUF_HEADROOM; |
1429 | + TESTPMD_LOG(WARNING, |
1430 | + "Configured mbuf size of the first segment %hu\n", |
1431 | + mbuf_data_size[0]); |
1432 | + } |
1433 | + } |
1434 | +} |
1435 | + |
1436 | +static void |
1437 | init_config(void) |
1438 | { |
1439 | portid_t pid; |
1440 | - struct rte_port *port; |
1441 | struct rte_mempool *mbp; |
1442 | unsigned int nb_mbuf_per_pool; |
1443 | lcoreid_t lc_id; |
1444 | - uint8_t port_per_socket[RTE_MAX_NUMA_NODES]; |
1445 | struct rte_gro_param gro_param; |
1446 | uint32_t gso_types; |
1447 | - uint16_t data_size; |
1448 | - bool warning = 0; |
1449 | - int k; |
1450 | - int ret; |
1451 | - |
1452 | - memset(port_per_socket,0,RTE_MAX_NUMA_NODES); |
1453 | |
1454 | /* Configuration of logical cores. */ |
1455 | fwd_lcores = rte_zmalloc("testpmd: fwd_lcores", |
1456 | @@ -1439,30 +1483,12 @@ init_config(void) |
1457 | } |
1458 | |
1459 | RTE_ETH_FOREACH_DEV(pid) { |
1460 | - port = &ports[pid]; |
1461 | - /* Apply default TxRx configuration for all ports */ |
1462 | - port->dev_conf.txmode = tx_mode; |
1463 | - port->dev_conf.rxmode = rx_mode; |
1464 | - |
1465 | - ret = eth_dev_info_get_print_err(pid, &port->dev_info); |
1466 | - if (ret != 0) |
1467 | - rte_exit(EXIT_FAILURE, |
1468 | - "rte_eth_dev_info_get() failed\n"); |
1469 | - |
1470 | - ret = update_jumbo_frame_offload(pid); |
1471 | - if (ret != 0) |
1472 | - printf("Updating jumbo frame offload failed for port %u\n", |
1473 | - pid); |
1474 | + uint32_t socket_id; |
1475 | |
1476 | - if (!(port->dev_info.tx_offload_capa & |
1477 | - DEV_TX_OFFLOAD_MBUF_FAST_FREE)) |
1478 | - port->dev_conf.txmode.offloads &= |
1479 | - ~DEV_TX_OFFLOAD_MBUF_FAST_FREE; |
1480 | if (numa_support) { |
1481 | - if (port_numa[pid] != NUMA_NO_CONFIG) |
1482 | - port_per_socket[port_numa[pid]]++; |
1483 | - else { |
1484 | - uint32_t socket_id = rte_eth_dev_socket_id(pid); |
1485 | + socket_id = port_numa[pid]; |
1486 | + if (port_numa[pid] == NUMA_NO_CONFIG) { |
1487 | + socket_id = rte_eth_dev_socket_id(pid); |
1488 | |
1489 | /* |
1490 | * if socket_id is invalid, |
1491 | @@ -1470,45 +1496,14 @@ init_config(void) |
1492 | */ |
1493 | if (check_socket_id(socket_id) < 0) |
1494 | socket_id = socket_ids[0]; |
1495 | - port_per_socket[socket_id]++; |
1496 | - } |
1497 | - } |
1498 | - |
1499 | - /* Apply Rx offloads configuration */ |
1500 | - for (k = 0; k < port->dev_info.max_rx_queues; k++) |
1501 | - port->rx_conf[k].offloads = |
1502 | - port->dev_conf.rxmode.offloads; |
1503 | - /* Apply Tx offloads configuration */ |
1504 | - for (k = 0; k < port->dev_info.max_tx_queues; k++) |
1505 | - port->tx_conf[k].offloads = |
1506 | - port->dev_conf.txmode.offloads; |
1507 | - |
1508 | - /* set flag to initialize port/queue */ |
1509 | - port->need_reconfig = 1; |
1510 | - port->need_reconfig_queues = 1; |
1511 | - port->tx_metadata = 0; |
1512 | - |
1513 | - /* Check for maximum number of segments per MTU. Accordingly |
1514 | - * update the mbuf data size. |
1515 | - */ |
1516 | - if (port->dev_info.rx_desc_lim.nb_mtu_seg_max != UINT16_MAX && |
1517 | - port->dev_info.rx_desc_lim.nb_mtu_seg_max != 0) { |
1518 | - data_size = rx_mode.max_rx_pkt_len / |
1519 | - port->dev_info.rx_desc_lim.nb_mtu_seg_max; |
1520 | - |
1521 | - if ((data_size + RTE_PKTMBUF_HEADROOM) > |
1522 | - mbuf_data_size[0]) { |
1523 | - mbuf_data_size[0] = data_size + |
1524 | - RTE_PKTMBUF_HEADROOM; |
1525 | - warning = 1; |
1526 | } |
1527 | + } else { |
1528 | + socket_id = (socket_num == UMA_NO_CONFIG) ? |
1529 | + 0 : socket_num; |
1530 | } |
1531 | + /* Apply default TxRx configuration for all ports */ |
1532 | + init_config_port_offloads(pid, socket_id); |
1533 | } |
1534 | - |
1535 | - if (warning) |
1536 | - TESTPMD_LOG(WARNING, |
1537 | - "Configured mbuf size of the first segment %hu\n", |
1538 | - mbuf_data_size[0]); |
1539 | /* |
1540 | * Create pools of mbuf. |
1541 | * If NUMA support is disabled, create a single pool of mbuf in |
1542 | @@ -1595,21 +1590,8 @@ init_config(void) |
1543 | void |
1544 | reconfig(portid_t new_port_id, unsigned socket_id) |
1545 | { |
1546 | - struct rte_port *port; |
1547 | - int ret; |
1548 | - |
1549 | /* Reconfiguration of Ethernet ports. */ |
1550 | - port = &ports[new_port_id]; |
1551 | - |
1552 | - ret = eth_dev_info_get_print_err(new_port_id, &port->dev_info); |
1553 | - if (ret != 0) |
1554 | - return; |
1555 | - |
1556 | - /* set flag to initialize port/queue */ |
1557 | - port->need_reconfig = 1; |
1558 | - port->need_reconfig_queues = 1; |
1559 | - port->socket_id = socket_id; |
1560 | - |
1561 | + init_config_port_offloads(new_port_id, socket_id); |
1562 | init_port_config(); |
1563 | } |
1564 | |
1565 | @@ -2123,9 +2105,7 @@ start_packet_forwarding(int with_tx_first) |
1566 | { |
1567 | port_fwd_begin_t port_fwd_begin; |
1568 | port_fwd_end_t port_fwd_end; |
1569 | - struct rte_port *port; |
1570 | unsigned int i; |
1571 | - portid_t pt_id; |
1572 | |
1573 | if (strcmp(cur_fwd_eng->fwd_mode_name, "rxonly") == 0 && !nb_rxq) |
1574 | rte_exit(EXIT_FAILURE, "rxq are 0, cannot use rxonly fwd mode\n"); |
1575 | @@ -2148,24 +2128,6 @@ start_packet_forwarding(int with_tx_first) |
1576 | printf("Packet forwarding already started\n"); |
1577 | return; |
1578 | } |
1579 | - |
1580 | - |
1581 | - if(dcb_test) { |
1582 | - for (i = 0; i < nb_fwd_ports; i++) { |
1583 | - pt_id = fwd_ports_ids[i]; |
1584 | - port = &ports[pt_id]; |
1585 | - if (!port->dcb_flag) { |
1586 | - printf("In DCB mode, all forwarding ports must " |
1587 | - "be configured in this mode.\n"); |
1588 | - return; |
1589 | - } |
1590 | - } |
1591 | - if (nb_fwd_lcores == 1) { |
1592 | - printf("In DCB mode,the nb forwarding cores " |
1593 | - "should be larger than 1.\n"); |
1594 | - return; |
1595 | - } |
1596 | - } |
1597 | test_done = 0; |
1598 | |
1599 | fwd_config_setup(); |
1600 | @@ -2452,14 +2414,11 @@ start_port(portid_t pid) |
1601 | int peer_pi; |
1602 | queueid_t qi; |
1603 | struct rte_port *port; |
1604 | - struct rte_ether_addr mac_addr; |
1605 | struct rte_eth_hairpin_cap cap; |
1606 | |
1607 | if (port_id_is_invalid(pid, ENABLED_WARN)) |
1608 | return 0; |
1609 | |
1610 | - if(dcb_config) |
1611 | - dcb_test = 1; |
1612 | RTE_ETH_FOREACH_DEV(pi) { |
1613 | if (pid != pi && pid != (portid_t)RTE_PORT_ALL) |
1614 | continue; |
1615 | @@ -2623,11 +2582,14 @@ start_port(portid_t pid) |
1616 | RTE_PORT_HANDLING, RTE_PORT_STARTED) == 0) |
1617 | printf("Port %d can not be set into started\n", pi); |
1618 | |
1619 | - if (eth_macaddr_get_print_err(pi, &mac_addr) == 0) |
1620 | + if (eth_macaddr_get_print_err(pi, &port->eth_addr) == 0) |
1621 | printf("Port %d: %02X:%02X:%02X:%02X:%02X:%02X\n", pi, |
1622 | - mac_addr.addr_bytes[0], mac_addr.addr_bytes[1], |
1623 | - mac_addr.addr_bytes[2], mac_addr.addr_bytes[3], |
1624 | - mac_addr.addr_bytes[4], mac_addr.addr_bytes[5]); |
1625 | + port->eth_addr.addr_bytes[0], |
1626 | + port->eth_addr.addr_bytes[1], |
1627 | + port->eth_addr.addr_bytes[2], |
1628 | + port->eth_addr.addr_bytes[3], |
1629 | + port->eth_addr.addr_bytes[4], |
1630 | + port->eth_addr.addr_bytes[5]); |
1631 | |
1632 | /* at least one port started, need checking link status */ |
1633 | need_check_link_status = 1; |
1634 | @@ -2697,11 +2659,6 @@ stop_port(portid_t pid) |
1635 | portid_t peer_pl[RTE_MAX_ETHPORTS]; |
1636 | int peer_pi; |
1637 | |
1638 | - if (dcb_test) { |
1639 | - dcb_test = 0; |
1640 | - dcb_config = 0; |
1641 | - } |
1642 | - |
1643 | if (port_id_is_invalid(pid, ENABLED_WARN)) |
1644 | return; |
1645 | |
1646 | @@ -3604,8 +3561,6 @@ init_port_dcb_config(portid_t pid, |
1647 | rte_port = &ports[pid]; |
1648 | |
1649 | memset(&port_conf, 0, sizeof(struct rte_eth_conf)); |
1650 | - /* Enter DCB configuration status */ |
1651 | - dcb_config = 1; |
1652 | |
1653 | port_conf.rxmode = rte_port->dev_conf.rxmode; |
1654 | port_conf.txmode = rte_port->dev_conf.txmode; |
1655 | @@ -3673,6 +3628,9 @@ init_port_dcb_config(portid_t pid, |
1656 | |
1657 | rte_port->dcb_flag = 1; |
1658 | |
1659 | + /* Enter DCB configuration status */ |
1660 | + dcb_config = 1; |
1661 | + |
1662 | return 0; |
1663 | } |
1664 | |
1665 | diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h |
1666 | index 2f8f5a9..927ca58 100644 |
1667 | --- a/app/test-pmd/testpmd.h |
1668 | +++ b/app/test-pmd/testpmd.h |
1669 | @@ -423,7 +423,6 @@ extern uint64_t noisy_lkup_num_reads; |
1670 | extern uint64_t noisy_lkup_num_reads_writes; |
1671 | |
1672 | extern uint8_t dcb_config; |
1673 | -extern uint8_t dcb_test; |
1674 | |
1675 | extern uint32_t mbuf_data_size_n; |
1676 | extern uint16_t mbuf_data_size[MAX_SEGS_BUFFER_SPLIT]; |
1677 | @@ -879,7 +878,7 @@ void show_tx_pkt_segments(void); |
1678 | void set_tx_pkt_times(unsigned int *tx_times); |
1679 | void show_tx_pkt_times(void); |
1680 | void set_tx_pkt_split(const char *name); |
1681 | -int parse_fec_mode(const char *name, enum rte_eth_fec_mode *mode); |
1682 | +int parse_fec_mode(const char *name, uint32_t *fec_capa); |
1683 | void show_fec_capability(uint32_t num, struct rte_eth_fec_capa *speed_fec_capa); |
1684 | void set_nb_pkt_per_burst(uint16_t pkt_burst); |
1685 | char *list_pkt_forwarding_modes(void); |
1686 | @@ -934,7 +933,7 @@ int set_vf_rate_limit(portid_t port_id, uint16_t vf, uint16_t rate, |
1687 | |
1688 | void port_rss_hash_conf_show(portid_t port_id, int show_rss_key); |
1689 | void port_rss_hash_key_update(portid_t port_id, char rss_type[], |
1690 | - uint8_t *hash_key, uint hash_key_len); |
1691 | + uint8_t *hash_key, uint8_t hash_key_len); |
1692 | int rx_queue_id_is_invalid(queueid_t rxq_id); |
1693 | int tx_queue_id_is_invalid(queueid_t txq_id); |
1694 | void setup_gro(const char *onoff, portid_t port_id); |
1695 | diff --git a/app/test-regex/main.c b/app/test-regex/main.c |
1696 | index ac6152d..6a8eb07 100644 |
1697 | --- a/app/test-regex/main.c |
1698 | +++ b/app/test-regex/main.c |
1699 | @@ -105,12 +105,11 @@ args_parse(int argc, char **argv, char *rules_file, char *data_file, |
1700 | *nb_iterations = atoi(optarg); |
1701 | break; |
1702 | case ARG_HELP: |
1703 | - usage("RegEx test app"); |
1704 | + usage(argv[0]); |
1705 | break; |
1706 | default: |
1707 | - fprintf(stderr, "Invalid option: %s\n", argv[optind]); |
1708 | - usage("RegEx test app"); |
1709 | - rte_exit(EXIT_FAILURE, "Invalid option\n"); |
1710 | + usage(argv[0]); |
1711 | + rte_exit(EXIT_FAILURE, "Invalid option: %s\n", argv[optind]); |
1712 | break; |
1713 | } |
1714 | } |
1715 | diff --git a/app/test/autotest_test_funcs.py b/app/test/autotest_test_funcs.py |
1716 | index 0811066..6c717bd 100644 |
1717 | --- a/app/test/autotest_test_funcs.py |
1718 | +++ b/app/test/autotest_test_funcs.py |
1719 | @@ -13,13 +13,16 @@ import pexpect |
1720 | def default_autotest(child, test_name): |
1721 | child.sendline(test_name) |
1722 | result = child.expect(["Test OK", "Test Failed", |
1723 | - "Command not found", pexpect.TIMEOUT], timeout=900) |
1724 | + "Command not found", pexpect.TIMEOUT, |
1725 | + "Test Skipped"], timeout=900) |
1726 | if result == 1: |
1727 | return -1, "Fail" |
1728 | elif result == 2: |
1729 | return -1, "Fail [Not found]" |
1730 | elif result == 3: |
1731 | return -1, "Fail [Timeout]" |
1732 | + elif result == 4: |
1733 | + return 0, "Skipped [Not Run]" |
1734 | return 0, "Success" |
1735 | |
1736 | # autotest used to run dump commands |
1737 | diff --git a/app/test/meson.build b/app/test/meson.build |
1738 | index bdbc619..49fbb5e 100644 |
1739 | --- a/app/test/meson.build |
1740 | +++ b/app/test/meson.build |
1741 | @@ -396,8 +396,6 @@ if cc.has_argument('-Wno-format-truncation') |
1742 | cflags += '-Wno-format-truncation' |
1743 | endif |
1744 | |
1745 | -# specify -D_GNU_SOURCE unconditionally |
1746 | -cflags += '-D_GNU_SOURCE' |
1747 | # Strict-aliasing rules are violated by uint8_t[] to context size casts. |
1748 | cflags += '-fno-strict-aliasing' |
1749 | |
1750 | @@ -424,7 +422,6 @@ foreach d:test_deps |
1751 | def_lib = get_option('default_library') |
1752 | test_dep_objs += get_variable(def_lib + '_rte_' + d) |
1753 | endforeach |
1754 | -test_dep_objs += cc.find_library('execinfo', required: false) |
1755 | |
1756 | link_libs = [] |
1757 | if get_option('default_library') == 'static' |
1758 | diff --git a/app/test/packet_burst_generator.c b/app/test/packet_burst_generator.c |
1759 | index f203f9d..0fd7290 100644 |
1760 | --- a/app/test/packet_burst_generator.c |
1761 | +++ b/app/test/packet_burst_generator.c |
1762 | @@ -117,6 +117,7 @@ initialize_tcp_header(struct rte_tcp_hdr *tcp_hdr, uint16_t src_port, |
1763 | memset(tcp_hdr, 0, sizeof(struct rte_tcp_hdr)); |
1764 | tcp_hdr->src_port = rte_cpu_to_be_16(src_port); |
1765 | tcp_hdr->dst_port = rte_cpu_to_be_16(dst_port); |
1766 | + tcp_hdr->data_off = (sizeof(struct rte_tcp_hdr) << 2) & 0xF0; |
1767 | |
1768 | return pkt_len; |
1769 | } |
1770 | @@ -141,8 +142,8 @@ uint16_t |
1771 | initialize_ipv6_header(struct rte_ipv6_hdr *ip_hdr, uint8_t *src_addr, |
1772 | uint8_t *dst_addr, uint16_t pkt_data_len) |
1773 | { |
1774 | - ip_hdr->vtc_flow = 0; |
1775 | - ip_hdr->payload_len = pkt_data_len; |
1776 | + ip_hdr->vtc_flow = rte_cpu_to_be_32(0x60000000); /* Set version to 6. */ |
1777 | + ip_hdr->payload_len = rte_cpu_to_be_16(pkt_data_len); |
1778 | ip_hdr->proto = IPPROTO_UDP; |
1779 | ip_hdr->hop_limits = IP_DEFTTL; |
1780 | |
1781 | diff --git a/app/test/process.h b/app/test/process.h |
1782 | index 27f1b1c..a09a088 100644 |
1783 | --- a/app/test/process.h |
1784 | +++ b/app/test/process.h |
1785 | @@ -48,6 +48,7 @@ process_dup(const char *const argv[], int numargs, const char *env_value) |
1786 | #ifdef RTE_LIB_PDUMP |
1787 | #ifdef RTE_NET_RING |
1788 | pthread_t thread; |
1789 | + int rc; |
1790 | #endif |
1791 | #endif |
1792 | |
1793 | @@ -126,8 +127,13 @@ process_dup(const char *const argv[], int numargs, const char *env_value) |
1794 | /* parent process does a wait */ |
1795 | #ifdef RTE_LIB_PDUMP |
1796 | #ifdef RTE_NET_RING |
1797 | - if ((strcmp(env_value, "run_pdump_server_tests") == 0)) |
1798 | - pthread_create(&thread, NULL, &send_pkts, NULL); |
1799 | + if ((strcmp(env_value, "run_pdump_server_tests") == 0)) { |
1800 | + rc = pthread_create(&thread, NULL, &send_pkts, NULL); |
1801 | + if (rc != 0) { |
1802 | + rte_panic("Cannot start send pkts thread: %s\n", |
1803 | + strerror(rc)); |
1804 | + } |
1805 | + } |
1806 | #endif |
1807 | #endif |
1808 | |
1809 | diff --git a/app/test/test.c b/app/test/test.c |
1810 | index 624dd48..864523e 100644 |
1811 | --- a/app/test/test.c |
1812 | +++ b/app/test/test.c |
1813 | @@ -134,8 +134,13 @@ main(int argc, char **argv) |
1814 | goto out; |
1815 | } |
1816 | |
1817 | + argv += ret; |
1818 | + |
1819 | + prgname = argv[0]; |
1820 | + |
1821 | #ifdef RTE_LIB_TIMER |
1822 | - if (rte_timer_subsystem_init() < 0) { |
1823 | + ret = rte_timer_subsystem_init(); |
1824 | + if (ret < 0 && ret != -EALREADY) { |
1825 | ret = -1; |
1826 | goto out; |
1827 | } |
1828 | @@ -146,10 +151,6 @@ main(int argc, char **argv) |
1829 | goto out; |
1830 | } |
1831 | |
1832 | - argv += ret; |
1833 | - |
1834 | - prgname = argv[0]; |
1835 | - |
1836 | recursive_call = getenv(RECURSIVE_ENV_VAR); |
1837 | if (recursive_call != NULL) { |
1838 | ret = do_recursive_call(); |
1839 | diff --git a/app/test/test_bpf.c b/app/test/test_bpf.c |
1840 | index 7c3de96..527c06b 100644 |
1841 | --- a/app/test/test_bpf.c |
1842 | +++ b/app/test/test_bpf.c |
1843 | @@ -3207,7 +3207,7 @@ run_test(const struct bpf_test *tst) |
1844 | printf("%s@%d: check_result(%s) failed, " |
1845 | "error: %d(%s);\n", |
1846 | __func__, __LINE__, tst->name, |
1847 | - rv, strerror(ret)); |
1848 | + rv, strerror(rv)); |
1849 | } |
1850 | } |
1851 | |
1852 | diff --git a/app/test/test_cmdline_ipaddr.c b/app/test/test_cmdline_ipaddr.c |
1853 | index b3f50d8..2a1ee12 100644 |
1854 | --- a/app/test/test_cmdline_ipaddr.c |
1855 | +++ b/app/test/test_cmdline_ipaddr.c |
1856 | @@ -255,7 +255,7 @@ const char * ipaddr_invalid_strs[] = { |
1857 | /** misc **/ |
1858 | |
1859 | /* too long */ |
1860 | - "1234:1234:1234:1234:1234:1234:1234:1234:1234:1234:1234" |
1861 | + "1234:1234:1234:1234:1234:1234:1234:1234:1234:1234:1234", |
1862 | "random invalid text", |
1863 | "", |
1864 | "\0", |
1865 | diff --git a/app/test/test_cmdline_lib.c b/app/test/test_cmdline_lib.c |
1866 | index bd72df0..d5a09b4 100644 |
1867 | --- a/app/test/test_cmdline_lib.c |
1868 | +++ b/app/test/test_cmdline_lib.c |
1869 | @@ -71,10 +71,12 @@ test_cmdline_parse_fns(void) |
1870 | if (cmdline_complete(cl, "buffer", &i, NULL, sizeof(dst)) >= 0) |
1871 | goto error; |
1872 | |
1873 | + cmdline_free(cl); |
1874 | return 0; |
1875 | |
1876 | error: |
1877 | printf("Error: function accepted null parameter!\n"); |
1878 | + cmdline_free(cl); |
1879 | return -1; |
1880 | } |
1881 | |
1882 | @@ -140,22 +142,31 @@ static int |
1883 | test_cmdline_socket_fns(void) |
1884 | { |
1885 | cmdline_parse_ctx_t ctx; |
1886 | + struct cmdline *cl; |
1887 | |
1888 | - if (cmdline_stdin_new(NULL, "prompt") != NULL) |
1889 | + cl = cmdline_stdin_new(NULL, "prompt"); |
1890 | + if (cl != NULL) |
1891 | goto error; |
1892 | - if (cmdline_stdin_new(&ctx, NULL) != NULL) |
1893 | + cl = cmdline_stdin_new(&ctx, NULL); |
1894 | + if (cl != NULL) |
1895 | goto error; |
1896 | - if (cmdline_file_new(NULL, "prompt", "/dev/null") != NULL) |
1897 | + cl = cmdline_file_new(NULL, "prompt", "/dev/null"); |
1898 | + if (cl != NULL) |
1899 | goto error; |
1900 | - if (cmdline_file_new(&ctx, NULL, "/dev/null") != NULL) |
1901 | + cl = cmdline_file_new(&ctx, NULL, "/dev/null"); |
1902 | + if (cl != NULL) |
1903 | goto error; |
1904 | - if (cmdline_file_new(&ctx, "prompt", NULL) != NULL) |
1905 | + cl = cmdline_file_new(&ctx, "prompt", NULL); |
1906 | + if (cl != NULL) |
1907 | goto error; |
1908 | - if (cmdline_file_new(&ctx, "prompt", "-/invalid/~/path") != NULL) { |
1909 | + cl = cmdline_file_new(&ctx, "prompt", "-/invalid/~/path"); |
1910 | + if (cl != NULL) { |
1911 | printf("Error: succeeded in opening invalid file for reading!"); |
1912 | + cmdline_free(cl); |
1913 | return -1; |
1914 | } |
1915 | - if (cmdline_file_new(&ctx, "prompt", "/dev/null") == NULL) { |
1916 | + cl = cmdline_file_new(&ctx, "prompt", "/dev/null"); |
1917 | + if (cl == NULL) { |
1918 | printf("Error: failed to open /dev/null for reading!"); |
1919 | return -1; |
1920 | } |
1921 | @@ -163,9 +174,11 @@ test_cmdline_socket_fns(void) |
1922 | /* void functions */ |
1923 | cmdline_stdin_exit(NULL); |
1924 | |
1925 | + cmdline_free(cl); |
1926 | return 0; |
1927 | error: |
1928 | printf("Error: function accepted null parameter!\n"); |
1929 | + cmdline_free(cl); |
1930 | return -1; |
1931 | } |
1932 | |
1933 | @@ -176,13 +189,14 @@ test_cmdline_fns(void) |
1934 | struct cmdline *cl; |
1935 | |
1936 | memset(&ctx, 0, sizeof(ctx)); |
1937 | - cl = cmdline_new(&ctx, "test", -1, -1); |
1938 | - if (cl == NULL) |
1939 | + cl = cmdline_new(NULL, "prompt", 0, 0); |
1940 | + if (cl != NULL) |
1941 | goto error; |
1942 | - |
1943 | - if (cmdline_new(NULL, "prompt", 0, 0) != NULL) |
1944 | + cl = cmdline_new(&ctx, NULL, 0, 0); |
1945 | + if (cl != NULL) |
1946 | goto error; |
1947 | - if (cmdline_new(&ctx, NULL, 0, 0) != NULL) |
1948 | + cl = cmdline_new(&ctx, "test", -1, -1); |
1949 | + if (cl == NULL) |
1950 | goto error; |
1951 | if (cmdline_in(NULL, "buffer", CMDLINE_TEST_BUFSIZE) >= 0) |
1952 | goto error; |
1953 | @@ -198,6 +212,7 @@ test_cmdline_fns(void) |
1954 | cmdline_interact(NULL); |
1955 | cmdline_quit(NULL); |
1956 | |
1957 | + cmdline_free(cl); |
1958 | return 0; |
1959 | |
1960 | error: |
1961 | diff --git a/app/test/test_cmdline_num.c b/app/test/test_cmdline_num.c |
1962 | index ec479cd..9276de5 100644 |
1963 | --- a/app/test/test_cmdline_num.c |
1964 | +++ b/app/test/test_cmdline_num.c |
1965 | @@ -200,8 +200,8 @@ const char * num_invalid_strs[] = { |
1966 | "-0x1234580A", |
1967 | "-0b0111010101", |
1968 | /* too long (128+ chars) */ |
1969 | - "0b1111000011110000111100001111000011110000111100001111000011110000" |
1970 | - "1111000011110000111100001111000011110000111100001111000011110000", |
1971 | + ("0b1111000011110000111100001111000011110000111100001111000011110000" |
1972 | + "1111000011110000111100001111000011110000111100001111000011110000"), |
1973 | "1E3", |
1974 | "0A", |
1975 | "-B", |
1976 | diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c |
1977 | index 8189053..dd2b035 100644 |
1978 | --- a/app/test/test_cryptodev.c |
1979 | +++ b/app/test/test_cryptodev.c |
1980 | @@ -135,10 +135,11 @@ setup_test_string(struct rte_mempool *mpool, |
1981 | struct rte_mbuf *m = rte_pktmbuf_alloc(mpool); |
1982 | size_t t_len = len - (blocksize ? (len % blocksize) : 0); |
1983 | |
1984 | - memset(m->buf_addr, 0, m->buf_len); |
1985 | if (m) { |
1986 | - char *dst = rte_pktmbuf_append(m, t_len); |
1987 | + char *dst; |
1988 | |
1989 | + memset(m->buf_addr, 0, m->buf_len); |
1990 | + dst = rte_pktmbuf_append(m, t_len); |
1991 | if (!dst) { |
1992 | rte_pktmbuf_free(m); |
1993 | return NULL; |
1994 | @@ -2630,6 +2631,21 @@ create_wireless_algo_auth_cipher_operation( |
1995 | iv_ptr += cipher_iv_len; |
1996 | rte_memcpy(iv_ptr, auth_iv, auth_iv_len); |
1997 | |
1998 | + /* Only copy over the offset data needed from src to dst in OOP, |
1999 | + * if the auth and cipher offsets are not aligned |
2000 | + */ |
2001 | + if (op_mode == OUT_OF_PLACE) { |
2002 | + if (cipher_offset > auth_offset) |
2003 | + rte_memcpy( |
2004 | + rte_pktmbuf_mtod_offset( |
2005 | + sym_op->m_dst, |
2006 | + uint8_t *, auth_offset >> 3), |
2007 | + rte_pktmbuf_mtod_offset( |
2008 | + sym_op->m_src, |
2009 | + uint8_t *, auth_offset >> 3), |
2010 | + ((cipher_offset >> 3) - (auth_offset >> 3))); |
2011 | + } |
2012 | + |
2013 | if (cipher_algo == RTE_CRYPTO_CIPHER_SNOW3G_UEA2 || |
2014 | cipher_algo == RTE_CRYPTO_CIPHER_KASUMI_F8 || |
2015 | cipher_algo == RTE_CRYPTO_CIPHER_ZUC_EEA3) { |
2016 | @@ -4672,16 +4688,20 @@ test_snow3g_auth_cipher(const struct snow3g_test_data *tdata, |
2017 | |
2018 | /* Validate obuf */ |
2019 | if (verify) { |
2020 | - TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT( |
2021 | + TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT_OFFSET( |
2022 | plaintext, |
2023 | tdata->plaintext.data, |
2024 | - tdata->plaintext.len >> 3, |
2025 | + (tdata->plaintext.len - tdata->cipher.offset_bits - |
2026 | + (tdata->digest.len << 3)), |
2027 | + tdata->cipher.offset_bits, |
2028 | "SNOW 3G Plaintext data not as expected"); |
2029 | } else { |
2030 | - TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT( |
2031 | + TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT_OFFSET( |
2032 | ciphertext, |
2033 | tdata->ciphertext.data, |
2034 | - tdata->validDataLenInBits.len, |
2035 | + (tdata->validDataLenInBits.len - |
2036 | + tdata->cipher.offset_bits), |
2037 | + tdata->cipher.offset_bits, |
2038 | "SNOW 3G Ciphertext data not as expected"); |
2039 | |
2040 | TEST_ASSERT_BUFFERS_ARE_EQUAL( |
2041 | @@ -4883,16 +4903,20 @@ test_snow3g_auth_cipher_sgl(const struct snow3g_test_data *tdata, |
2042 | |
2043 | /* Validate obuf */ |
2044 | if (verify) { |
2045 | - TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT( |
2046 | + TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT_OFFSET( |
2047 | plaintext, |
2048 | tdata->plaintext.data, |
2049 | - tdata->plaintext.len >> 3, |
2050 | + (tdata->plaintext.len - tdata->cipher.offset_bits - |
2051 | + (tdata->digest.len << 3)), |
2052 | + tdata->cipher.offset_bits, |
2053 | "SNOW 3G Plaintext data not as expected"); |
2054 | } else { |
2055 | - TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT( |
2056 | + TEST_ASSERT_BUFFERS_ARE_EQUAL_BIT_OFFSET( |
2057 | ciphertext, |
2058 | tdata->ciphertext.data, |
2059 | - tdata->validDataLenInBits.len, |
2060 | + (tdata->validDataLenInBits.len - |
2061 | + tdata->cipher.offset_bits), |
2062 | + tdata->cipher.offset_bits, |
2063 | "SNOW 3G Ciphertext data not as expected"); |
2064 | |
2065 | TEST_ASSERT_BUFFERS_ARE_EQUAL( |
2066 | @@ -10388,8 +10412,8 @@ test_multi_session(void) |
2067 | rte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info); |
2068 | |
2069 | sessions = rte_malloc(NULL, |
2070 | - (sizeof(struct rte_cryptodev_sym_session *) * |
2071 | - MAX_NB_SESSIONS) + 1, 0); |
2072 | + sizeof(struct rte_cryptodev_sym_session *) * |
2073 | + (MAX_NB_SESSIONS + 1), 0); |
2074 | |
2075 | /* Create multiple crypto sessions*/ |
2076 | for (i = 0; i < MAX_NB_SESSIONS; i++) { |
2077 | @@ -10434,6 +10458,7 @@ test_multi_session(void) |
2078 | } |
2079 | } |
2080 | |
2081 | + sessions[i] = NULL; |
2082 | /* Next session create should fail */ |
2083 | rte_cryptodev_sym_session_init(ts_params->valid_devs[0], |
2084 | sessions[i], &ut_params->auth_xform, |
2085 | @@ -12000,7 +12025,7 @@ test_authenticated_decryption_fail_when_corruption( |
2086 | } |
2087 | |
2088 | static int |
2089 | -test_authenticated_encryt_with_esn( |
2090 | +test_authenticated_encrypt_with_esn( |
2091 | struct crypto_testsuite_params *ts_params, |
2092 | struct crypto_unittest_params *ut_params, |
2093 | const struct test_crypto_vector *reference) |
2094 | @@ -12787,7 +12812,7 @@ auth_decryption_AES128CBC_HMAC_SHA1_fail_tag_corrupt(void) |
2095 | static int |
2096 | auth_encrypt_AES128CBC_HMAC_SHA1_esn_check(void) |
2097 | { |
2098 | - return test_authenticated_encryt_with_esn( |
2099 | + return test_authenticated_encrypt_with_esn( |
2100 | &testsuite_params, |
2101 | &unittest_params, |
2102 | &aes128cbc_hmac_sha1_aad_test_vector); |
2103 | @@ -13762,7 +13787,7 @@ static struct unit_test_suite cryptodev_ccp_testsuite = { |
2104 | }; |
2105 | |
2106 | static int |
2107 | -test_cryptodev_qat(void /*argv __rte_unused, int argc __rte_unused*/) |
2108 | +test_cryptodev_qat(void) |
2109 | { |
2110 | gbl_driver_id = rte_cryptodev_driver_id_get( |
2111 | RTE_STR(CRYPTODEV_NAME_QAT_SYM_PMD)); |
2112 | @@ -13776,7 +13801,7 @@ test_cryptodev_qat(void /*argv __rte_unused, int argc __rte_unused*/) |
2113 | } |
2114 | |
2115 | static int |
2116 | -test_cryptodev_virtio(void /*argv __rte_unused, int argc __rte_unused*/) |
2117 | +test_cryptodev_virtio(void) |
2118 | { |
2119 | gbl_driver_id = rte_cryptodev_driver_id_get( |
2120 | RTE_STR(CRYPTODEV_NAME_VIRTIO_PMD)); |
2121 | @@ -13790,7 +13815,7 @@ test_cryptodev_virtio(void /*argv __rte_unused, int argc __rte_unused*/) |
2122 | } |
2123 | |
2124 | static int |
2125 | -test_cryptodev_aesni_mb(void /*argv __rte_unused, int argc __rte_unused*/) |
2126 | +test_cryptodev_aesni_mb(void) |
2127 | { |
2128 | gbl_driver_id = rte_cryptodev_driver_id_get( |
2129 | RTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD)); |
2130 | @@ -13888,7 +13913,7 @@ test_cryptodev_null(void) |
2131 | } |
2132 | |
2133 | static int |
2134 | -test_cryptodev_sw_snow3g(void /*argv __rte_unused, int argc __rte_unused*/) |
2135 | +test_cryptodev_sw_snow3g(void) |
2136 | { |
2137 | gbl_driver_id = rte_cryptodev_driver_id_get( |
2138 | RTE_STR(CRYPTODEV_NAME_SNOW3G_PMD)); |
2139 | @@ -13902,7 +13927,7 @@ test_cryptodev_sw_snow3g(void /*argv __rte_unused, int argc __rte_unused*/) |
2140 | } |
2141 | |
2142 | static int |
2143 | -test_cryptodev_sw_kasumi(void /*argv __rte_unused, int argc __rte_unused*/) |
2144 | +test_cryptodev_sw_kasumi(void) |
2145 | { |
2146 | gbl_driver_id = rte_cryptodev_driver_id_get( |
2147 | RTE_STR(CRYPTODEV_NAME_KASUMI_PMD)); |
2148 | @@ -13916,7 +13941,7 @@ test_cryptodev_sw_kasumi(void /*argv __rte_unused, int argc __rte_unused*/) |
2149 | } |
2150 | |
2151 | static int |
2152 | -test_cryptodev_sw_zuc(void /*argv __rte_unused, int argc __rte_unused*/) |
2153 | +test_cryptodev_sw_zuc(void) |
2154 | { |
2155 | gbl_driver_id = rte_cryptodev_driver_id_get( |
2156 | RTE_STR(CRYPTODEV_NAME_ZUC_PMD)); |
2157 | @@ -13960,7 +13985,7 @@ test_cryptodev_mrvl(void) |
2158 | #ifdef RTE_CRYPTO_SCHEDULER |
2159 | |
2160 | static int |
2161 | -test_cryptodev_scheduler(void /*argv __rte_unused, int argc __rte_unused*/) |
2162 | +test_cryptodev_scheduler(void) |
2163 | { |
2164 | gbl_driver_id = rte_cryptodev_driver_id_get( |
2165 | RTE_STR(CRYPTODEV_NAME_SCHEDULER_PMD)); |
2166 | @@ -13983,7 +14008,7 @@ REGISTER_TEST_COMMAND(cryptodev_scheduler_autotest, test_cryptodev_scheduler); |
2167 | #endif |
2168 | |
2169 | static int |
2170 | -test_cryptodev_dpaa2_sec(void /*argv __rte_unused, int argc __rte_unused*/) |
2171 | +test_cryptodev_dpaa2_sec(void) |
2172 | { |
2173 | gbl_driver_id = rte_cryptodev_driver_id_get( |
2174 | RTE_STR(CRYPTODEV_NAME_DPAA2_SEC_PMD)); |
2175 | @@ -13997,7 +14022,7 @@ test_cryptodev_dpaa2_sec(void /*argv __rte_unused, int argc __rte_unused*/) |
2176 | } |
2177 | |
2178 | static int |
2179 | -test_cryptodev_dpaa_sec(void /*argv __rte_unused, int argc __rte_unused*/) |
2180 | +test_cryptodev_dpaa_sec(void) |
2181 | { |
2182 | gbl_driver_id = rte_cryptodev_driver_id_get( |
2183 | RTE_STR(CRYPTODEV_NAME_DPAA_SEC_PMD)); |
2184 | @@ -14049,7 +14074,7 @@ test_cryptodev_octeontx2(void) |
2185 | } |
2186 | |
2187 | static int |
2188 | -test_cryptodev_caam_jr(void /*argv __rte_unused, int argc __rte_unused*/) |
2189 | +test_cryptodev_caam_jr(void) |
2190 | { |
2191 | gbl_driver_id = rte_cryptodev_driver_id_get( |
2192 | RTE_STR(CRYPTODEV_NAME_CAAM_JR_PMD)); |
2193 | @@ -14091,7 +14116,7 @@ test_cryptodev_bcmfs(void) |
2194 | } |
2195 | |
2196 | static int |
2197 | -test_cryptodev_qat_raw_api(void /*argv __rte_unused, int argc __rte_unused*/) |
2198 | +test_cryptodev_qat_raw_api(void) |
2199 | { |
2200 | int ret; |
2201 | |
2202 | diff --git a/app/test/test_cryptodev_aes_test_vectors.h b/app/test/test_cryptodev_aes_test_vectors.h |
2203 | index c192d75..bb5f09f 100644 |
2204 | --- a/app/test/test_cryptodev_aes_test_vectors.h |
2205 | +++ b/app/test/test_cryptodev_aes_test_vectors.h |
2206 | @@ -2650,7 +2650,7 @@ static const struct blockcipher_test_case aes_cipheronly_test_cases[] = { |
2207 | .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT, |
2208 | }, |
2209 | { |
2210 | - .test_descr = "AES-192-CBC Encryption Scater gather", |
2211 | + .test_descr = "AES-192-CBC Encryption Scatter gather", |
2212 | .test_data = &aes_test_data_10, |
2213 | .op_mask = BLOCKCIPHER_TEST_OP_ENCRYPT, |
2214 | .feature_mask = BLOCKCIPHER_TEST_FEATURE_SG | |
2215 | diff --git a/app/test/test_cryptodev_blockcipher.c b/app/test/test_cryptodev_blockcipher.c |
2216 | index 135e57b..8e16872 100644 |
2217 | --- a/app/test/test_cryptodev_blockcipher.c |
2218 | +++ b/app/test/test_cryptodev_blockcipher.c |
2219 | @@ -160,7 +160,7 @@ test_blockcipher_one_case(const struct blockcipher_test_case *t, |
2220 | printf("Raw Data Path APIs do not support OOP, " |
2221 | "Test Skipped.\n"); |
2222 | snprintf(test_msg, BLOCKCIPHER_TEST_MSG_LEN, "SKIPPED"); |
2223 | - status = TEST_SUCCESS; |
2224 | + status = TEST_SKIPPED; |
2225 | goto error_exit; |
2226 | } |
2227 | } |
2228 | diff --git a/app/test/test_debug.c b/app/test/test_debug.c |
2229 | index 834a738..23b24db 100644 |
2230 | --- a/app/test/test_debug.c |
2231 | +++ b/app/test/test_debug.c |
2232 | @@ -4,6 +4,8 @@ |
2233 | |
2234 | #include <stdio.h> |
2235 | #include <stdint.h> |
2236 | +#include <sys/resource.h> |
2237 | +#include <sys/time.h> |
2238 | #include <sys/wait.h> |
2239 | #include <unistd.h> |
2240 | |
2241 | @@ -28,9 +30,14 @@ test_panic(void) |
2242 | |
2243 | pid = fork(); |
2244 | |
2245 | - if (pid == 0) |
2246 | + if (pid == 0) { |
2247 | + struct rlimit rl; |
2248 | + |
2249 | + /* No need to generate a coredump when panicking. */ |
2250 | + rl.rlim_cur = rl.rlim_max = 0; |
2251 | + setrlimit(RLIMIT_CORE, &rl); |
2252 | rte_panic("Test Debug\n"); |
2253 | - else if (pid < 0){ |
2254 | + } else if (pid < 0) { |
2255 | printf("Fork Failed\n"); |
2256 | return -1; |
2257 | } |
2258 | diff --git a/app/test/test_distributor_perf.c b/app/test/test_distributor_perf.c |
2259 | index b25f79a..fdbeae6 100644 |
2260 | --- a/app/test/test_distributor_perf.c |
2261 | +++ b/app/test/test_distributor_perf.c |
2262 | @@ -188,13 +188,15 @@ quit_workers(struct rte_distributor *d, struct rte_mempool *p) |
2263 | rte_mempool_get_bulk(p, (void *)bufs, num_workers); |
2264 | |
2265 | quit = 1; |
2266 | - for (i = 0; i < num_workers; i++) |
2267 | + for (i = 0; i < num_workers; i++) { |
2268 | bufs[i]->hash.usr = i << 1; |
2269 | - rte_distributor_process(d, bufs, num_workers); |
2270 | + rte_distributor_process(d, &bufs[i], 1); |
2271 | + } |
2272 | |
2273 | rte_mempool_put_bulk(p, (void *)bufs, num_workers); |
2274 | |
2275 | rte_distributor_process(d, NULL, 0); |
2276 | + rte_distributor_flush(d); |
2277 | rte_eal_mp_wait_lcore(); |
2278 | quit = 0; |
2279 | worker_idx = 0; |
2280 | diff --git a/app/test/test_eal_flags.c b/app/test/test_eal_flags.c |
2281 | index 932fbe3..b4880ee 100644 |
2282 | --- a/app/test/test_eal_flags.c |
2283 | +++ b/app/test/test_eal_flags.c |
2284 | @@ -124,6 +124,7 @@ process_hugefiles(const char * prefix, enum hugepage_action action) |
2285 | case HUGEPAGE_CHECK_EXISTS: |
2286 | { |
2287 | /* file exists, return */ |
2288 | + closedir(hugepage_dir); |
2289 | result = 1; |
2290 | goto end; |
2291 | } |
2292 | diff --git a/app/test/test_event_crypto_adapter.c b/app/test/test_event_crypto_adapter.c |
2293 | index 335211c..71b58fc 100644 |
2294 | --- a/app/test/test_event_crypto_adapter.c |
2295 | +++ b/app/test/test_event_crypto_adapter.c |
2296 | @@ -224,8 +224,7 @@ test_op_forward_mode(uint8_t session_less) |
2297 | op->sess_type = RTE_CRYPTO_OP_SESSIONLESS; |
2298 | first_xform = &cipher_xform; |
2299 | sym_op->xform = first_xform; |
2300 | - uint32_t len = IV_OFFSET + MAXIMUM_IV_LENGTH + |
2301 | - (sizeof(struct rte_crypto_sym_xform) * 2); |
2302 | + uint32_t len = IV_OFFSET + MAXIMUM_IV_LENGTH; |
2303 | op->private_data_offset = len; |
2304 | /* Fill in private data information */ |
2305 | rte_memcpy(&m_data.response_info, &response_info, |
2306 | @@ -419,8 +418,7 @@ test_op_new_mode(uint8_t session_less) |
2307 | op->sess_type = RTE_CRYPTO_OP_SESSIONLESS; |
2308 | first_xform = &cipher_xform; |
2309 | sym_op->xform = first_xform; |
2310 | - uint32_t len = IV_OFFSET + MAXIMUM_IV_LENGTH + |
2311 | - (sizeof(struct rte_crypto_sym_xform) * 2); |
2312 | + uint32_t len = IV_OFFSET + MAXIMUM_IV_LENGTH; |
2313 | op->private_data_offset = len; |
2314 | /* Fill in private data information */ |
2315 | rte_memcpy(&m_data.response_info, &response_info, |
2316 | @@ -516,7 +514,8 @@ configure_cryptodev(void) |
2317 | NUM_MBUFS, MBUF_CACHE_SIZE, |
2318 | DEFAULT_NUM_XFORMS * |
2319 | sizeof(struct rte_crypto_sym_xform) + |
2320 | - MAXIMUM_IV_LENGTH, |
2321 | + MAXIMUM_IV_LENGTH + |
2322 | + sizeof(union rte_event_crypto_metadata), |
2323 | rte_socket_id()); |
2324 | if (params.op_mpool == NULL) { |
2325 | RTE_LOG(ERR, USER1, "Can't create CRYPTO_OP_POOL\n"); |
2326 | diff --git a/app/test/test_event_timer_adapter.c b/app/test/test_event_timer_adapter.c |
2327 | index ad3f4dc..b536dde 100644 |
2328 | --- a/app/test/test_event_timer_adapter.c |
2329 | +++ b/app/test/test_event_timer_adapter.c |
2330 | @@ -3,6 +3,8 @@ |
2331 | * Copyright(c) 2017-2018 Intel Corporation. |
2332 | */ |
2333 | |
2334 | +#include <math.h> |
2335 | + |
2336 | #include <rte_atomic.h> |
2337 | #include <rte_common.h> |
2338 | #include <rte_cycles.h> |
2339 | @@ -46,7 +48,7 @@ static uint64_t global_info_bkt_tck_ns; |
2340 | static volatile uint8_t arm_done; |
2341 | |
2342 | #define CALC_TICKS(tks) \ |
2343 | - ((tks * global_bkt_tck_ns) / global_info_bkt_tck_ns) |
2344 | + ceil((double)(tks * global_bkt_tck_ns) / global_info_bkt_tck_ns) |
2345 | |
2346 | |
2347 | static bool using_services; |
2348 | diff --git a/app/test/test_external_mem.c b/app/test/test_external_mem.c |
2349 | index 7eb81f6..5edf88b 100644 |
2350 | --- a/app/test/test_external_mem.c |
2351 | +++ b/app/test/test_external_mem.c |
2352 | @@ -13,6 +13,7 @@ |
2353 | #include <rte_common.h> |
2354 | #include <rte_debug.h> |
2355 | #include <rte_eal.h> |
2356 | +#include <rte_eal_paging.h> |
2357 | #include <rte_errno.h> |
2358 | #include <rte_malloc.h> |
2359 | #include <rte_ring.h> |
2360 | @@ -532,8 +533,8 @@ fail: |
2361 | static int |
2362 | test_external_mem(void) |
2363 | { |
2364 | + size_t pgsz = rte_mem_page_size(); |
2365 | size_t len = EXTERNAL_MEM_SZ; |
2366 | - size_t pgsz = RTE_PGSIZE_4K; |
2367 | rte_iova_t iova[len / pgsz]; |
2368 | void *addr; |
2369 | int ret, n_pages; |
2370 | diff --git a/app/test/test_flow_classify.c b/app/test/test_flow_classify.c |
2371 | index ef0b6fd..951606f 100644 |
2372 | --- a/app/test/test_flow_classify.c |
2373 | +++ b/app/test/test_flow_classify.c |
2374 | @@ -828,6 +828,12 @@ test_flow_classify(void) |
2375 | cls_params.name = "flow_classifier"; |
2376 | cls_params.socket_id = 0; |
2377 | cls->cls = rte_flow_classifier_create(&cls_params); |
2378 | + if (cls->cls == NULL) { |
2379 | + printf("Line %i: flow classifier create has failed!\n", |
2380 | + __LINE__); |
2381 | + rte_free(cls); |
2382 | + return TEST_FAILED; |
2383 | + } |
2384 | |
2385 | /* initialise ACL table params */ |
2386 | table_acl_params.n_rule_fields = RTE_DIM(ipv4_defs); |
2387 | diff --git a/app/test/test_kni.c b/app/test/test_kni.c |
2388 | index f53a53e..9673355 100644 |
2389 | --- a/app/test/test_kni.c |
2390 | +++ b/app/test/test_kni.c |
2391 | @@ -562,8 +562,12 @@ test_kni(void) |
2392 | } |
2393 | closedir(dir); |
2394 | |
2395 | - /* Initialize KNI subsytem */ |
2396 | - rte_kni_init(KNI_TEST_MAX_PORTS); |
2397 | + /* Initialize KNI subsystem */ |
2398 | + ret = rte_kni_init(KNI_TEST_MAX_PORTS); |
2399 | + if (ret < 0) { |
2400 | + printf("fail to initialize KNI subsystem\n"); |
2401 | + return -1; |
2402 | + } |
2403 | |
2404 | if (test_kni_allocate_lcores() < 0) { |
2405 | printf("No enough lcores for kni processing\n"); |
2406 | diff --git a/app/test/test_mbuf.c b/app/test/test_mbuf.c |
2407 | index a40f7d4..5bb4786 100644 |
2408 | --- a/app/test/test_mbuf.c |
2409 | +++ b/app/test/test_mbuf.c |
2410 | @@ -1174,6 +1174,8 @@ err: |
2411 | } |
2412 | |
2413 | #include <unistd.h> |
2414 | +#include <sys/resource.h> |
2415 | +#include <sys/time.h> |
2416 | #include <sys/wait.h> |
2417 | |
2418 | /* use fork() to test mbuf errors panic */ |
2419 | @@ -1186,9 +1188,14 @@ verify_mbuf_check_panics(struct rte_mbuf *buf) |
2420 | pid = fork(); |
2421 | |
2422 | if (pid == 0) { |
2423 | + struct rlimit rl; |
2424 | + |
2425 | + /* No need to generate a coredump when panicking. */ |
2426 | + rl.rlim_cur = rl.rlim_max = 0; |
2427 | + setrlimit(RLIMIT_CORE, &rl); |
2428 | rte_mbuf_sanity_check(buf, 1); /* should panic */ |
2429 | exit(0); /* return normally if it doesn't panic */ |
2430 | - } else if (pid < 0){ |
2431 | + } else if (pid < 0) { |
2432 | printf("Fork Failed\n"); |
2433 | return -1; |
2434 | } |
2435 | @@ -2356,7 +2363,7 @@ test_pktmbuf_ext_shinfo_init_helper(struct rte_mempool *pktmbuf_pool) |
2436 | if (rte_mbuf_refcnt_read(m) != 1) |
2437 | GOTO_FAIL("%s: Invalid refcnt in mbuf\n", __func__); |
2438 | |
2439 | - buf_iova = rte_mempool_virt2iova(ext_buf_addr); |
2440 | + buf_iova = rte_mem_virt2iova(ext_buf_addr); |
2441 | rte_pktmbuf_attach_extbuf(m, ext_buf_addr, buf_iova, buf_len, |
2442 | ret_shinfo); |
2443 | if (m->ol_flags != EXT_ATTACHED_MBUF) |
2444 | diff --git a/app/test/test_mempool.c b/app/test/test_mempool.c |
2445 | index 084842f..3adadd6 100644 |
2446 | --- a/app/test/test_mempool.c |
2447 | +++ b/app/test/test_mempool.c |
2448 | @@ -552,7 +552,7 @@ test_mempool(void) |
2449 | GOTO_ERR(ret, err); |
2450 | |
2451 | /* test to initialize mempool objects and memory */ |
2452 | - nb_objs = rte_mempool_obj_iter(mp_stack_mempool_iter, rte_pktmbuf_init, |
2453 | + nb_objs = rte_mempool_obj_iter(mp_stack_mempool_iter, my_obj_init, |
2454 | NULL); |
2455 | if (nb_objs == 0) |
2456 | GOTO_ERR(ret, err); |
2457 | diff --git a/app/test/test_power_cpufreq.c b/app/test/test_power_cpufreq.c |
2458 | index 731c6b4..94a3801 100644 |
2459 | --- a/app/test/test_power_cpufreq.c |
2460 | +++ b/app/test/test_power_cpufreq.c |
2461 | @@ -8,6 +8,7 @@ |
2462 | #include <limits.h> |
2463 | #include <string.h> |
2464 | #include <inttypes.h> |
2465 | +#include <rte_cycles.h> |
2466 | |
2467 | #include "test.h" |
2468 | |
2469 | @@ -34,37 +35,86 @@ test_power_caps(void) |
2470 | #define TEST_POWER_LCORE_INVALID ((unsigned)RTE_MAX_LCORE) |
2471 | #define TEST_POWER_FREQS_NUM_MAX ((unsigned)RTE_MAX_LCORE_FREQS) |
2472 | |
2473 | -#define TEST_POWER_SYSFILE_CUR_FREQ \ |
2474 | +/* macros used for rounding frequency to nearest 100000 */ |
2475 | +#define TEST_FREQ_ROUNDING_DELTA 50000 |
2476 | +#define TEST_ROUND_FREQ_TO_N_100000 100000 |
2477 | + |
2478 | +#define TEST_POWER_SYSFILE_CPUINFO_FREQ \ |
2479 | "/sys/devices/system/cpu/cpu%u/cpufreq/cpuinfo_cur_freq" |
2480 | +#define TEST_POWER_SYSFILE_SCALING_FREQ \ |
2481 | + "/sys/devices/system/cpu/cpu%u/cpufreq/scaling_cur_freq" |
2482 | |
2483 | static uint32_t total_freq_num; |
2484 | static uint32_t freqs[TEST_POWER_FREQS_NUM_MAX]; |
2485 | |
2486 | static int |
2487 | -check_cur_freq(unsigned lcore_id, uint32_t idx) |
2488 | +check_cur_freq(unsigned int lcore_id, uint32_t idx, bool turbo) |
2489 | { |
2490 | #define TEST_POWER_CONVERT_TO_DECIMAL 10 |
2491 | +#define MAX_LOOP 100 |
2492 | FILE *f; |
2493 | char fullpath[PATH_MAX]; |
2494 | char buf[BUFSIZ]; |
2495 | + enum power_management_env env; |
2496 | uint32_t cur_freq; |
2497 | + uint32_t freq_conv; |
2498 | int ret = -1; |
2499 | + int i; |
2500 | |
2501 | if (snprintf(fullpath, sizeof(fullpath), |
2502 | - TEST_POWER_SYSFILE_CUR_FREQ, lcore_id) < 0) { |
2503 | + TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) { |
2504 | return 0; |
2505 | } |
2506 | f = fopen(fullpath, "r"); |
2507 | if (f == NULL) { |
2508 | - return 0; |
2509 | + if (snprintf(fullpath, sizeof(fullpath), |
2510 | + TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) { |
2511 | + return 0; |
2512 | + } |
2513 | + f = fopen(fullpath, "r"); |
2514 | + if (f == NULL) { |
2515 | + return 0; |
2516 | + } |
2517 | + } |
2518 | + for (i = 0; i < MAX_LOOP; i++) { |
2519 | + fflush(f); |
2520 | + if (fgets(buf, sizeof(buf), f) == NULL) |
2521 | + goto fail_all; |
2522 | + |
2523 | + cur_freq = strtoul(buf, NULL, TEST_POWER_CONVERT_TO_DECIMAL); |
2524 | + freq_conv = cur_freq; |
2525 | + |
2526 | + env = rte_power_get_env(); |
2527 | + |
2528 | + if (env == PM_ENV_PSTATE_CPUFREQ) { |
2529 | + /* convert the frequency to nearest 100000 value |
2530 | + * Ex: if cur_freq=1396789 then freq_conv=1400000 |
2531 | + * Ex: if cur_freq=800030 then freq_conv=800000 |
2532 | + */ |
2533 | + unsigned int freq_conv = 0; |
2534 | + freq_conv = (cur_freq + TEST_FREQ_ROUNDING_DELTA) |
2535 | + / TEST_ROUND_FREQ_TO_N_100000; |
2536 | + freq_conv = freq_conv * TEST_ROUND_FREQ_TO_N_100000; |
2537 | + } |
2538 | + |
2539 | + if (turbo) |
2540 | + ret = (freqs[idx] <= freq_conv ? 0 : -1); |
2541 | + else |
2542 | + ret = (freqs[idx] == freq_conv ? 0 : -1); |
2543 | + |
2544 | + if (ret == 0) |
2545 | + break; |
2546 | + |
2547 | + if (fseek(f, 0, SEEK_SET) < 0) { |
2548 | + printf("Fail to set file position indicator to 0\n"); |
2549 | + goto fail_all; |
2550 | + } |
2551 | + |
2552 | + /* wait for the value to be updated */ |
2553 | + rte_delay_ms(10); |
2554 | } |
2555 | - if (fgets(buf, sizeof(buf), f) == NULL) { |
2556 | - goto fail_get_cur_freq; |
2557 | - } |
2558 | - cur_freq = strtoul(buf, NULL, TEST_POWER_CONVERT_TO_DECIMAL); |
2559 | - ret = (freqs[idx] == cur_freq ? 0 : -1); |
2560 | |
2561 | -fail_get_cur_freq: |
2562 | +fail_all: |
2563 | fclose(f); |
2564 | |
2565 | return ret; |
2566 | @@ -143,7 +193,7 @@ check_power_get_freq(void) |
2567 | } |
2568 | |
2569 | /* Check the current frequency */ |
2570 | - ret = check_cur_freq(TEST_POWER_LCORE_ID, count); |
2571 | + ret = check_cur_freq(TEST_POWER_LCORE_ID, count, false); |
2572 | if (ret < 0) |
2573 | return -1; |
2574 | |
2575 | @@ -193,7 +243,7 @@ check_power_set_freq(void) |
2576 | } |
2577 | |
2578 | /* Check the current frequency */ |
2579 | - ret = check_cur_freq(TEST_POWER_LCORE_ID, total_freq_num - 1); |
2580 | + ret = check_cur_freq(TEST_POWER_LCORE_ID, total_freq_num - 1, false); |
2581 | if (ret < 0) |
2582 | return -1; |
2583 | |
2584 | @@ -206,6 +256,8 @@ check_power_freq_down(void) |
2585 | { |
2586 | int ret; |
2587 | |
2588 | + rte_power_freq_enable_turbo(TEST_POWER_LCORE_ID); |
2589 | + |
2590 | /* test with an invalid lcore id */ |
2591 | ret = rte_power_freq_down(TEST_POWER_LCORE_INVALID); |
2592 | if (ret >= 0) { |
2593 | @@ -229,7 +281,7 @@ check_power_freq_down(void) |
2594 | } |
2595 | |
2596 | /* Check the current frequency */ |
2597 | - ret = check_cur_freq(TEST_POWER_LCORE_ID, total_freq_num - 1); |
2598 | + ret = check_cur_freq(TEST_POWER_LCORE_ID, total_freq_num - 1, false); |
2599 | if (ret < 0) |
2600 | return -1; |
2601 | |
2602 | @@ -248,7 +300,7 @@ check_power_freq_down(void) |
2603 | } |
2604 | |
2605 | /* Check the current frequency */ |
2606 | - ret = check_cur_freq(TEST_POWER_LCORE_ID, 1); |
2607 | + ret = check_cur_freq(TEST_POWER_LCORE_ID, 1, false); |
2608 | if (ret < 0) |
2609 | return -1; |
2610 | |
2611 | @@ -284,7 +336,7 @@ check_power_freq_up(void) |
2612 | } |
2613 | |
2614 | /* Check the current frequency */ |
2615 | - ret = check_cur_freq(TEST_POWER_LCORE_ID, total_freq_num - 2); |
2616 | + ret = check_cur_freq(TEST_POWER_LCORE_ID, total_freq_num - 2, false); |
2617 | if (ret < 0) |
2618 | return -1; |
2619 | |
2620 | @@ -303,7 +355,7 @@ check_power_freq_up(void) |
2621 | } |
2622 | |
2623 | /* Check the current frequency */ |
2624 | - ret = check_cur_freq(TEST_POWER_LCORE_ID, 0); |
2625 | + ret = check_cur_freq(TEST_POWER_LCORE_ID, 0, true); |
2626 | if (ret < 0) |
2627 | return -1; |
2628 | |
2629 | @@ -331,7 +383,7 @@ check_power_freq_max(void) |
2630 | } |
2631 | |
2632 | /* Check the current frequency */ |
2633 | - ret = check_cur_freq(TEST_POWER_LCORE_ID, 0); |
2634 | + ret = check_cur_freq(TEST_POWER_LCORE_ID, 0, true); |
2635 | if (ret < 0) |
2636 | return -1; |
2637 | |
2638 | @@ -359,7 +411,7 @@ check_power_freq_min(void) |
2639 | } |
2640 | |
2641 | /* Check the current frequency */ |
2642 | - ret = check_cur_freq(TEST_POWER_LCORE_ID, total_freq_num - 1); |
2643 | + ret = check_cur_freq(TEST_POWER_LCORE_ID, total_freq_num - 1, false); |
2644 | if (ret < 0) |
2645 | return -1; |
2646 | |
2647 | @@ -391,9 +443,15 @@ check_power_turbo(void) |
2648 | TEST_POWER_LCORE_ID); |
2649 | return -1; |
2650 | } |
2651 | + ret = rte_power_freq_max(TEST_POWER_LCORE_ID); |
2652 | + if (ret < 0) { |
2653 | + printf("Fail to scale up the freq to max on lcore %u\n", |
2654 | + TEST_POWER_LCORE_ID); |
2655 | + return -1; |
2656 | + } |
2657 | |
2658 | /* Check the current frequency */ |
2659 | - ret = check_cur_freq(TEST_POWER_LCORE_ID, 0); |
2660 | + ret = check_cur_freq(TEST_POWER_LCORE_ID, 0, true); |
2661 | if (ret < 0) |
2662 | return -1; |
2663 | |
2664 | @@ -410,9 +468,15 @@ check_power_turbo(void) |
2665 | TEST_POWER_LCORE_ID); |
2666 | return -1; |
2667 | } |
2668 | + ret = rte_power_freq_max(TEST_POWER_LCORE_ID); |
2669 | + if (ret < 0) { |
2670 | + printf("Fail to scale up the freq to max on lcore %u\n", |
2671 | + TEST_POWER_LCORE_ID); |
2672 | + return -1; |
2673 | + } |
2674 | |
2675 | /* Check the current frequency */ |
2676 | - ret = check_cur_freq(TEST_POWER_LCORE_ID, 1); |
2677 | + ret = check_cur_freq(TEST_POWER_LCORE_ID, 1, false); |
2678 | if (ret < 0) |
2679 | return -1; |
2680 | |
2681 | diff --git a/app/test/test_prefetch.c b/app/test/test_prefetch.c |
2682 | index 5489885..7b4a8e4 100644 |
2683 | --- a/app/test/test_prefetch.c |
2684 | +++ b/app/test/test_prefetch.c |
2685 | @@ -20,7 +20,7 @@ |
2686 | static int |
2687 | test_prefetch(void) |
2688 | { |
2689 | - int a; |
2690 | + int a = 0; |
2691 | |
2692 | rte_prefetch0(&a); |
2693 | rte_prefetch1(&a); |
2694 | diff --git a/app/test/test_reciprocal_division_perf.c b/app/test/test_reciprocal_division_perf.c |
2695 | index a7be8aa..4f62587 100644 |
2696 | --- a/app/test/test_reciprocal_division_perf.c |
2697 | +++ b/app/test/test_reciprocal_division_perf.c |
2698 | @@ -71,10 +71,12 @@ test_reciprocal_division_perf(void) |
2699 | tot_cyc_n); |
2700 | printf("Total number of cycles reciprocal division : %"PRIu64"\n", |
2701 | tot_cyc_r); |
2702 | - printf("Cycles per division(normal) : %3.2f\n", |
2703 | - ((double)tot_cyc_n)/i); |
2704 | - printf("Cycles per division(reciprocal) : %3.2f\n\n", |
2705 | - ((double)tot_cyc_r)/i); |
2706 | + if (i != 0) { |
2707 | + printf("Cycles per division(normal) : %3.2f\n", |
2708 | + ((double)tot_cyc_n)/i); |
2709 | + printf("Cycles per division(reciprocal) : %3.2f\n\n", |
2710 | + ((double)tot_cyc_r)/i); |
2711 | + } |
2712 | |
2713 | tot_cyc_n = 0; |
2714 | tot_cyc_r = 0; |
2715 | @@ -111,11 +113,12 @@ test_reciprocal_division_perf(void) |
2716 | tot_cyc_n); |
2717 | printf("Total number of cycles reciprocal division : %"PRIu64"\n", |
2718 | tot_cyc_r); |
2719 | - printf("Cycles per division(normal) : %3.2f\n", |
2720 | - ((double)tot_cyc_n)/i); |
2721 | - printf("Cycles per division(reciprocal) : %3.2f\n\n", |
2722 | - ((double)tot_cyc_r)/i); |
2723 | - |
2724 | + if (i != 0) { |
2725 | + printf("Cycles per division(normal) : %3.2f\n", |
2726 | + ((double)tot_cyc_n)/i); |
2727 | + printf("Cycles per division(reciprocal) : %3.2f\n\n", |
2728 | + ((double)tot_cyc_r)/i); |
2729 | + } |
2730 | tot_cyc_n = 0; |
2731 | tot_cyc_r = 0; |
2732 | |
2733 | @@ -152,10 +155,12 @@ test_reciprocal_division_perf(void) |
2734 | tot_cyc_n); |
2735 | printf("Total number of cycles reciprocal division : %"PRIu64"\n", |
2736 | tot_cyc_r); |
2737 | - printf("Cycles per division(normal) : %3.2f\n", |
2738 | - ((double)tot_cyc_n)/i); |
2739 | - printf("Cycles per division(reciprocal) : %3.2f\n\n", |
2740 | - ((double)tot_cyc_r)/i); |
2741 | + if (i != 0) { |
2742 | + printf("Cycles per division(normal) : %3.2f\n", |
2743 | + ((double)tot_cyc_n)/i); |
2744 | + printf("Cycles per division(reciprocal) : %3.2f\n\n", |
2745 | + ((double)tot_cyc_r)/i); |
2746 | + } |
2747 | |
2748 | tot_cyc_n = 0; |
2749 | tot_cyc_r = 0; |
2750 | @@ -190,10 +195,12 @@ test_reciprocal_division_perf(void) |
2751 | tot_cyc_n); |
2752 | printf("Total number of cycles reciprocal division : %"PRIu64"\n", |
2753 | tot_cyc_r); |
2754 | - printf("Cycles per division(normal) : %3.2f\n", |
2755 | - ((double)tot_cyc_n)/i); |
2756 | - printf("Cycles per division(reciprocal) : %3.2f\n", |
2757 | - ((double)tot_cyc_r)/i); |
2758 | + if (i != 0) { |
2759 | + printf("Cycles per division(normal) : %3.2f\n", |
2760 | + ((double)tot_cyc_n)/i); |
2761 | + printf("Cycles per division(reciprocal) : %3.2f\n", |
2762 | + ((double)tot_cyc_r)/i); |
2763 | + } |
2764 | |
2765 | return result; |
2766 | } |
2767 | diff --git a/app/test/test_stack.c b/app/test/test_stack.c |
2768 | index 02422a3..00efb38 100644 |
2769 | --- a/app/test/test_stack.c |
2770 | +++ b/app/test/test_stack.c |
2771 | @@ -373,7 +373,11 @@ test_stack(void) |
2772 | static int |
2773 | test_lf_stack(void) |
2774 | { |
2775 | +#if defined(RTE_STACK_LF_SUPPORTED) |
2776 | return __test_stack(RTE_STACK_F_LF); |
2777 | +#else |
2778 | + return TEST_SKIPPED; |
2779 | +#endif |
2780 | } |
2781 | |
2782 | REGISTER_TEST_COMMAND(stack_autotest, test_stack); |
2783 | diff --git a/app/test/test_stack_perf.c b/app/test/test_stack_perf.c |
2784 | index 3590625..4ee40d5 100644 |
2785 | --- a/app/test/test_stack_perf.c |
2786 | +++ b/app/test/test_stack_perf.c |
2787 | @@ -349,7 +349,11 @@ test_stack_perf(void) |
2788 | static int |
2789 | test_lf_stack_perf(void) |
2790 | { |
2791 | +#if defined(RTE_STACK_LF_SUPPORTED) |
2792 | return __test_stack_perf(RTE_STACK_F_LF); |
2793 | +#else |
2794 | + return TEST_SKIPPED; |
2795 | +#endif |
2796 | } |
2797 | |
2798 | REGISTER_TEST_COMMAND(stack_perf_autotest, test_stack_perf); |
2799 | diff --git a/app/test/test_table_tables.c b/app/test/test_table_tables.c |
2800 | index 1aa269f..4ff6ab1 100644 |
2801 | --- a/app/test/test_table_tables.c |
2802 | +++ b/app/test/test_table_tables.c |
2803 | @@ -28,7 +28,8 @@ table_test table_tests[] = { |
2804 | APP_METADATA_OFFSET(0)); \ |
2805 | key = RTE_MBUF_METADATA_UINT8_PTR(mbuf, \ |
2806 | APP_METADATA_OFFSET(32)); \ |
2807 | - memset(key, 0, 32); \ |
2808 | + if (mbuf->priv_size + mbuf->buf_len >= 64) \ |
2809 | + memset(key, 0, 32); \ |
2810 | k32 = (uint32_t *) key; \ |
2811 | k32[0] = (value); \ |
2812 | *signature = pipeline_test_hash(key, NULL, 0, 0); \ |
2813 | diff --git a/app/test/test_timer_secondary.c b/app/test/test_timer_secondary.c |
2814 | index 1e8f1d4..16a9f18 100644 |
2815 | --- a/app/test/test_timer_secondary.c |
2816 | +++ b/app/test/test_timer_secondary.c |
2817 | @@ -125,9 +125,9 @@ test_timer_secondary(void) |
2818 | |
2819 | mz = rte_memzone_reserve(TEST_INFO_MZ_NAME, sizeof(*test_info), |
2820 | SOCKET_ID_ANY, 0); |
2821 | - test_info = mz->addr; |
2822 | - TEST_ASSERT_NOT_NULL(test_info, "Couldn't allocate memory for " |
2823 | + TEST_ASSERT_NOT_NULL(mz, "Couldn't allocate memory for " |
2824 | "test data"); |
2825 | + test_info = mz->addr; |
2826 | |
2827 | test_info->tim_mempool = rte_mempool_create("test_timer_mp", |
2828 | NUM_TIMERS, sizeof(struct rte_timer), 0, 0, |
2829 | @@ -171,9 +171,9 @@ test_timer_secondary(void) |
2830 | int i; |
2831 | |
2832 | mz = rte_memzone_lookup(TEST_INFO_MZ_NAME); |
2833 | - test_info = mz->addr; |
2834 | - TEST_ASSERT_NOT_NULL(test_info, "Couldn't lookup memzone for " |
2835 | + TEST_ASSERT_NOT_NULL(mz, "Couldn't lookup memzone for " |
2836 | "test info"); |
2837 | + test_info = mz->addr; |
2838 | |
2839 | for (i = 0; i < NUM_TIMERS; i++) { |
2840 | rte_mempool_get(test_info->tim_mempool, (void **)&tim); |
2841 | diff --git a/app/test/test_trace_perf.c b/app/test/test_trace_perf.c |
2842 | index e1ad8e6..46ae7d8 100644 |
2843 | --- a/app/test/test_trace_perf.c |
2844 | +++ b/app/test/test_trace_perf.c |
2845 | @@ -79,7 +79,6 @@ signal_workers_to_finish(struct test_data *data) |
2846 | |
2847 | for (workers = 0; workers < data->nb_workers; workers++) { |
2848 | data->ldata[workers].done = 1; |
2849 | - rte_smp_wmb(); |
2850 | } |
2851 | } |
2852 | |
2853 | @@ -102,7 +101,6 @@ worker_fn_##func(void *arg) \ |
2854 | { \ |
2855 | struct lcore_data *ldata = arg; \ |
2856 | ldata->started = 1; \ |
2857 | - rte_smp_wmb(); \ |
2858 | __worker_##func(ldata); \ |
2859 | return 0; \ |
2860 | } |
2861 | @@ -137,11 +135,12 @@ run_test(const char *str, lcore_function_t f, struct test_data *data, size_t sz) |
2862 | |
2863 | wait_till_workers_are_ready(data); |
2864 | rte_delay_ms(100); /* Wait for some time to accumulate the stats */ |
2865 | - measure_perf(str, data); |
2866 | signal_workers_to_finish(data); |
2867 | |
2868 | RTE_LCORE_FOREACH_WORKER(id) |
2869 | rte_eal_wait_lcore(id); |
2870 | + |
2871 | + measure_perf(str, data); |
2872 | } |
2873 | |
2874 | static int |
2875 | diff --git a/buildtools/binutils-avx512-check.sh b/buildtools/binutils-avx512-check.sh |
2876 | index a7e0681..2a833b6 100755 |
2877 | --- a/buildtools/binutils-avx512-check.sh |
2878 | +++ b/buildtools/binutils-avx512-check.sh |
2879 | @@ -3,7 +3,7 @@ |
2880 | # Copyright(c) 2020 Intel Corporation |
2881 | |
2882 | AS=${AS:-as} |
2883 | -OBJFILE=$(mktemp -t dpdk.binutils-check.XXXXXX.o) |
2884 | +OBJFILE=$(mktemp -t dpdk.binutils-check.XXXXXX) |
2885 | trap 'rm -f "$OBJFILE"' EXIT |
2886 | # from https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90028 |
2887 | GATHER_PARAMS='0x8(,%ymm1,1),%ymm0{%k2}' |
2888 | diff --git a/buildtools/check-symbols.sh b/buildtools/check-symbols.sh |
2889 | index e407553..83b3a01 100755 |
2890 | --- a/buildtools/check-symbols.sh |
2891 | +++ b/buildtools/check-symbols.sh |
2892 | @@ -18,7 +18,7 @@ then |
2893 | exit 0 |
2894 | fi |
2895 | |
2896 | -DUMPFILE=$(mktemp -t dpdk.${0##*/}.XXX.objdump) |
2897 | +DUMPFILE=$(mktemp -t dpdk.${0##*/}.objdump.XXXXXX) |
2898 | trap 'rm -f "$DUMPFILE"' EXIT |
2899 | objdump -t $OBJFILE >$DUMPFILE |
2900 | |
2901 | diff --git a/buildtools/list-dir-globs.py b/buildtools/list-dir-globs.py |
2902 | index 80b5e80..f5f7d73 100755 |
2903 | --- a/buildtools/list-dir-globs.py |
2904 | +++ b/buildtools/list-dir-globs.py |
2905 | @@ -16,4 +16,4 @@ root = os.path.join(os.getenv('MESON_SOURCE_ROOT', '.'), |
2906 | for path in sys.argv[1].split(','): |
2907 | for p in iglob(os.path.join(root, path)): |
2908 | if os.path.isdir(p): |
2909 | - print(os.path.relpath(p)) |
2910 | + print(os.path.relpath(p).replace('\\', '/')) |
2911 | diff --git a/buildtools/map-list-symbol.sh b/buildtools/map-list-symbol.sh |
2912 | index 5509b4a..3bf9bd6 100755 |
2913 | --- a/buildtools/map-list-symbol.sh |
2914 | +++ b/buildtools/map-list-symbol.sh |
2915 | @@ -44,7 +44,7 @@ for file in $@; do |
2916 | ret = 1; |
2917 | } |
2918 | } |
2919 | - /^.*{/ { |
2920 | + /^.*\{/ { |
2921 | if ("'$section'" == "all" || $1 == "'$section'") { |
2922 | current_section = $1; |
2923 | } |
2924 | diff --git a/buildtools/meson.build b/buildtools/meson.build |
2925 | index 04808da..cfad51f 100644 |
2926 | --- a/buildtools/meson.build |
2927 | +++ b/buildtools/meson.build |
2928 | @@ -3,17 +3,17 @@ |
2929 | |
2930 | pkgconf = find_program('pkg-config', 'pkgconf', required: false) |
2931 | pmdinfo = find_program('gen-pmdinfo-cfile.sh') |
2932 | -list_dir_globs = find_program('list-dir-globs.py') |
2933 | check_symbols = find_program('check-symbols.sh') |
2934 | ldflags_ibverbs_static = find_program('options-ibverbs-static.sh') |
2935 | binutils_avx512_check = find_program('binutils-avx512-check.sh') |
2936 | |
2937 | -# set up map-to-win script using python, either built-in or external |
2938 | python3 = import('python').find_installation(required: false) |
2939 | if python3.found() |
2940 | py3 = [python3] |
2941 | else |
2942 | py3 = ['meson', 'runpython'] |
2943 | endif |
2944 | +echo = py3 + ['-c', 'import sys; print(*sys.argv[1:])'] |
2945 | +list_dir_globs = py3 + files('list-dir-globs.py') |
2946 | map_to_win_cmd = py3 + files('map_to_win.py') |
2947 | sphinx_wrapper = py3 + files('call-sphinx-build.py') |
2948 | diff --git a/buildtools/symlink-drivers-solibs.py b/buildtools/symlink-drivers-solibs.py |
2949 | new file mode 100644 |
2950 | index 0000000..9c99950 |
2951 | --- /dev/null |
2952 | +++ b/buildtools/symlink-drivers-solibs.py |
2953 | @@ -0,0 +1,49 @@ |
2954 | +#!/usr/bin/env python3 |
2955 | +# SPDX-License-Identifier: BSD-3-Clause |
2956 | +# Copyright(c) 2021 Intel Corporation |
2957 | + |
2958 | +import os |
2959 | +import sys |
2960 | +import glob |
2961 | +import shutil |
2962 | + |
2963 | +# post-install script for meson/ninja builds to symlink the PMDs stored in |
2964 | +# $libdir/dpdk/pmds-*/ to $libdir. This is needed as some PMDs depend on |
2965 | +# others, e.g. PCI device PMDs depending on the PCI bus driver. |
2966 | + |
2967 | +# parameters to script are paths relative to install prefix: |
2968 | +# 1. directory for installed regular libs e.g. lib64 |
2969 | +# 2. subdirectory of libdir where the PMDs are |
2970 | +# 3. directory for installed regular binaries e.g. bin |
2971 | + |
2972 | +os.chdir(os.environ['MESON_INSTALL_DESTDIR_PREFIX']) |
2973 | + |
2974 | +lib_dir = sys.argv[1] |
2975 | +pmd_subdir = sys.argv[2] |
2976 | +bin_dir = sys.argv[3] |
2977 | +pmd_dir = os.path.join(lib_dir, pmd_subdir) |
2978 | + |
2979 | +# copy Windows PMDs to avoid any issues with symlinks since the |
2980 | +# build could be a cross-compilation under WSL, Msys or Cygnus. |
2981 | +# the filenames are dependent upon the specific toolchain in use. |
2982 | + |
2983 | +def copy_pmd_files(pattern, to_dir): |
2984 | + for file in glob.glob(os.path.join(pmd_dir, pattern)): |
2985 | + to = os.path.join(to_dir, os.path.basename(file)) |
2986 | + shutil.copy2(file, to) |
2987 | + print(to + ' -> ' + file) |
2988 | + |
2989 | +copy_pmd_files('*rte_*.dll', bin_dir) |
2990 | +copy_pmd_files('*rte_*.pdb', bin_dir) |
2991 | +copy_pmd_files('*rte_*.lib', lib_dir) |
2992 | +copy_pmd_files('*rte_*.dll.a', lib_dir) |
2993 | + |
2994 | +# symlink shared objects |
2995 | + |
2996 | +os.chdir(lib_dir) |
2997 | +for file in glob.glob(os.path.join(pmd_subdir, 'librte_*.so*')): |
2998 | + to = os.path.basename(file) |
2999 | + if os.path.exists(to): |
3000 | + os.remove(to) |
3001 | + os.symlink(file, to) |
3002 | + print(to + ' -> ' + file) |
3003 | diff --git a/config/meson.build b/config/meson.build |
3004 | index 2f150de..b2734fc 100644 |
3005 | --- a/config/meson.build |
3006 | +++ b/config/meson.build |
3007 | @@ -61,6 +61,10 @@ if not is_windows |
3008 | meson.add_install_script('../buildtools/symlink-drivers-solibs.sh', |
3009 | get_option('libdir'), |
3010 | pmd_subdir_opt) |
3011 | +elif meson.version().version_compare('>=0.55.0') |
3012 | + # 0.55.0 is required to use external program with add_install_script |
3013 | + meson.add_install_script(py3, '../buildtools/symlink-drivers-solibs.py', |
3014 | + get_option('libdir'), pmd_subdir_opt, get_option('bindir')) |
3015 | endif |
3016 | |
3017 | # set the machine type and cflags for it |
3018 | @@ -125,11 +129,8 @@ if cc.find_library('m', required : false).found() |
3019 | dpdk_extra_ldflags += '-lm' |
3020 | endif |
3021 | |
3022 | -# for linux link against dl, for bsd execinfo |
3023 | if is_linux |
3024 | link_lib = 'dl' |
3025 | -elif is_freebsd |
3026 | - link_lib = 'execinfo' |
3027 | else |
3028 | link_lib = '' |
3029 | endif |
3030 | @@ -159,6 +160,12 @@ if fdt_dep.found() and cc.has_header('fdt.h') |
3031 | dpdk_extra_ldflags += '-lfdt' |
3032 | endif |
3033 | |
3034 | +libexecinfo = cc.find_library('libexecinfo', required: false) |
3035 | +if libexecinfo.found() and cc.has_header('execinfo.h') |
3036 | + add_project_link_arguments('-lexecinfo', language: 'c') |
3037 | + dpdk_extra_ldflags += '-lexecinfo' |
3038 | +endif |
3039 | + |
3040 | # check for libbsd |
3041 | libbsd = dependency('libbsd', required: false, method: 'pkg-config') |
3042 | if libbsd.found() |
3043 | diff --git a/config/ppc/meson.build b/config/ppc/meson.build |
3044 | index 0d8da87..ed6ea07 100644 |
3045 | --- a/config/ppc/meson.build |
3046 | +++ b/config/ppc/meson.build |
3047 | @@ -17,7 +17,18 @@ if not power9_supported |
3048 | dpdk_conf.set('RTE_MACHINE','power8') |
3049 | endif |
3050 | |
3051 | -# overrides specific to ppc64 |
3052 | -dpdk_conf.set('RTE_MAX_LCORE', 1536) |
3053 | -dpdk_conf.set('RTE_MAX_NUMA_NODES', 32) |
3054 | +# Certain POWER9 systems can scale as high as 1536 LCORES, but setting such a |
3055 | +# high value can waste memory, cause timeouts in time limited autotests, and is |
3056 | +# unlikely to be used in many production situations. Similarly, keeping the |
3057 | +# default 64 LCORES seems too small as most POWER9 dual socket systems will have |
3058 | +# at least 128 LCORES available. Set RTE_MAX_LCORE to 128 for POWER systems as |
3059 | +# a compromise. |
3060 | +dpdk_conf.set('RTE_MAX_LCORE', 128) |
3061 | + |
3062 | +# POWER systems do not allocate NUMA nodes sequentially. A dual socket system |
3063 | +# will have CPUs associated with NUMA nodes 0 & 8, so ensure that the second |
3064 | +# NUMA node will be supported by setting RTE_MAX_NUMA_NODES to 16. High end |
3065 | +# systems can scale even higher with as many as 32 NUMA nodes. |
3066 | +dpdk_conf.set('RTE_MAX_NUMA_NODES', 16) |
3067 | + |
3068 | dpdk_conf.set('RTE_CACHE_LINE_SIZE', 128) |
3069 | diff --git a/debian/changelog b/debian/changelog |
3070 | index 39161b3..54eb660 100644 |
3071 | --- a/debian/changelog |
3072 | +++ b/debian/changelog |
3073 | @@ -1,3 +1,26 @@ |
3074 | +dpdk (20.11.3-0ubuntu0.21.04.2) hirsute; urgency=medium |
3075 | + |
3076 | + * Skip flaky self-tests to make the tests more reliable (LP: #1939861) |
3077 | + - d/p/disable_ppc64_autopkgtest_fails.patch: skip known false-positives |
3078 | + - d/p/disable_armhf_autopkgtest_fails.patch: disable arm failures that do |
3079 | + not represent regressions |
3080 | + - d/p/disable_autopkgtest_fails.patch: disable failures that do not |
3081 | + represent regressions |
3082 | + - Add disable_lcores_autotest_ppc.patch to fix ppc64el autopkgtest |
3083 | + |
3084 | + -- Christian Ehrhardt <christian.ehrhardt@canonical.com> Wed, 08 Sep 2021 09:00:48 +0200 |
3085 | + |
3086 | +dpdk (20.11.3-0ubuntu0.21.04.1) hirsute; urgency=medium |
3087 | + |
3088 | + * Merge LTS stable release 20.11.3 (LP: #1940913) |
3089 | + Release notes are available at: |
3090 | + https://doc.dpdk.org/guides-20.11/rel_notes/release_20_11.html#id1 |
3091 | + - Remove test-catch-coredumps.patch [now part of upstream] |
3092 | + * d/p/u/lp-1940957-net-i40e-support-25G-AOC-ACC-cables.patch: fix issues |
3093 | + with 25G AOC cables (LP: #1940957) |
3094 | + |
3095 | + -- Christian Ehrhardt <christian.ehrhardt@canonical.com> Tue, 24 Aug 2021 12:08:16 +0200 |
3096 | + |
3097 | dpdk (20.11.1-1) experimental; urgency=medium |
3098 | |
3099 | * Merge LTS stable release 20.11.1 |
3100 | diff --git a/debian/control b/debian/control |
3101 | index 191043e..9e57812 100644 |
3102 | --- a/debian/control |
3103 | +++ b/debian/control |
3104 | @@ -1,6 +1,7 @@ |
3105 | Source: dpdk |
3106 | Priority: optional |
3107 | -Maintainer: Debian DPDK Maintainers <pkg-dpdk-devel@lists.alioth.debian.org> |
3108 | +Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> |
3109 | +XSBC-Original-Maintainer: Debian DPDK Maintainers <pkg-dpdk-devel@lists.alioth.debian.org> |
3110 | Uploaders: Luca Boccassi <bluca@debian.org>, |
3111 | Christian Ehrhardt <christian.ehrhardt@canonical.com>, |
3112 | Santiago Ruano Rincón <santiagorr@riseup.net>, |
3113 | diff --git a/debian/patches/disable_armhf_autopkgtest_fails.patch b/debian/patches/disable_armhf_autopkgtest_fails.patch |
3114 | new file mode 100644 |
3115 | index 0000000..3a714c1 |
3116 | --- /dev/null |
3117 | +++ b/debian/patches/disable_armhf_autopkgtest_fails.patch |
3118 | @@ -0,0 +1,32 @@ |
3119 | +Description: Skip tests failing in arm test environment |
3120 | + These tests generally work but fail in a Ubuntu arm autopkgtest environment. |
3121 | + Skip those as they do not represent real regressions. |
3122 | +Forwarded: no |
3123 | +X-Not-Forwarded-Reason: This only applies to autopkgtest environments |
3124 | +Author: Christian Ehrhardt <christian.ehrhardt@canonical.com> |
3125 | +Last-Update: 2021-07-13 |
3126 | +--- a/app/test/meson.build |
3127 | ++++ b/app/test/meson.build |
3128 | +@@ -228,10 +228,8 @@ fast_tests = [ |
3129 | + ['per_lcore_autotest', false], |
3130 | + ['prefetch_autotest', true], |
3131 | + ['rcu_qsbr_autotest', false], |
3132 | +- ['red_autotest', true], |
3133 | + ['rib_autotest', true], |
3134 | + ['rib6_autotest', true], |
3135 | +- ['ring_autotest', true], |
3136 | + ['rwlock_test1_autotest', true], |
3137 | + ['rwlock_rda_autotest', true], |
3138 | + ['rwlock_rds_wrm_autotest', true], |
3139 | +@@ -422,6 +420,11 @@ if arch_subdir != 'ppc' |
3140 | + fast_tests += [['lcores_autotest', true]] |
3141 | + endif |
3142 | + |
3143 | ++# These tests consistently fail on arm (containerized) test environments |
3144 | ++if arch_subdir != 'arm' |
3145 | ++ fast_tests += [['red_autotest', true], ['ring_autotest', true]] |
3146 | ++endif |
3147 | ++ |
3148 | + foreach d:test_deps |
3149 | + def_lib = get_option('default_library') |
3150 | + test_dep_objs += get_variable(def_lib + '_rte_' + d) |
3151 | diff --git a/debian/patches/disable_autopkgtest_fails.patch b/debian/patches/disable_autopkgtest_fails.patch |
3152 | new file mode 100644 |
3153 | index 0000000..24d15a6 |
3154 | --- /dev/null |
3155 | +++ b/debian/patches/disable_autopkgtest_fails.patch |
3156 | @@ -0,0 +1,49 @@ |
3157 | +Description: Skip tests failing in test environment |
3158 | + These tests generally work but fail in a Ubuntu autopkgtest environment. |
3159 | + This is consistent across all architectures. |
3160 | + Skip those as they do not represent real regressions. |
3161 | +Forwarded: no |
3162 | +X-Not-Forwarded-Reason: This only applies to autopkgtest environments |
3163 | +Author: Christian Ehrhardt <christian.ehrhardt@canonical.com> |
3164 | +Last-Update: 2021-07-13 |
3165 | +--- a/app/test/meson.build |
3166 | ++++ b/app/test/meson.build |
3167 | +@@ -210,7 +210,7 @@ fast_tests = [ |
3168 | + ['fib6_autotest', true], |
3169 | + ['func_reentrancy_autotest', false], |
3170 | + ['flow_classify_autotest', false], |
3171 | +- ['hash_autotest', true], |
3172 | ++ ['hash_autotest', false], |
3173 | + ['interrupt_autotest', true], |
3174 | + ['ipfrag_autotest', false], |
3175 | + ['logs_autotest', true], |
3176 | +@@ -225,9 +225,9 @@ fast_tests = [ |
3177 | + ['memzone_autotest', false], |
3178 | + ['meter_autotest', true], |
3179 | + ['multiprocess_autotest', false], |
3180 | +- ['per_lcore_autotest', true], |
3181 | ++ ['per_lcore_autotest', false], |
3182 | + ['prefetch_autotest', true], |
3183 | +- ['rcu_qsbr_autotest', true], |
3184 | ++ ['rcu_qsbr_autotest', false], |
3185 | + ['red_autotest', true], |
3186 | + ['rib_autotest', true], |
3187 | + ['rib6_autotest', true], |
3188 | +@@ -242,7 +242,7 @@ fast_tests = [ |
3189 | + ['stack_autotest', false], |
3190 | + ['stack_lf_autotest', false], |
3191 | + ['string_autotest', true], |
3192 | +- ['table_autotest', true], |
3193 | ++ ['table_autotest', false], |
3194 | + ['tailq_autotest', true], |
3195 | + ['timer_autotest', false], |
3196 | + ['user_delay_us', true], |
3197 | +@@ -262,7 +262,7 @@ fast_tests = [ |
3198 | + ['power_autotest', true], |
3199 | + ['power_kvm_vm_autotest', false], |
3200 | + ['reorder_autotest', true], |
3201 | +- ['service_autotest', true], |
3202 | ++ ['service_autotest', false], |
3203 | + ['thash_autotest', true], |
3204 | + ['trace_autotest', true], |
3205 | + ] |
3206 | diff --git a/debian/patches/disable_lcores_autotest_ppc.patch b/debian/patches/disable_lcores_autotest_ppc.patch |
3207 | new file mode 100644 |
3208 | index 0000000..f4b34bc |
3209 | --- /dev/null |
3210 | +++ b/debian/patches/disable_lcores_autotest_ppc.patch |
3211 | @@ -0,0 +1,26 @@ |
3212 | +Description: autotest: disable lcores_autotest on ppc |
3213 | + This test consistently times out on ppc64 builds. Disable it. |
3214 | +Author: Luca Boccassi <bluca@debian.org> |
3215 | +Forwarded: yes, https://patchwork.dpdk.org/project/dpdk/patch/20210420114508.397249-1-luca.boccassi@gmail.com/ |
3216 | +--- a/app/test/meson.build |
3217 | ++++ b/app/test/meson.build |
3218 | +@@ -213,7 +213,6 @@ |
3219 | + ['hash_autotest', true], |
3220 | + ['interrupt_autotest', true], |
3221 | + ['ipfrag_autotest', false], |
3222 | +- ['lcores_autotest', true], |
3223 | + ['logs_autotest', true], |
3224 | + ['lpm_autotest', true], |
3225 | + ['lpm6_autotest', true], |
3226 | +@@ -420,6 +419,11 @@ |
3227 | + test_deps += 'crypto_scheduler' |
3228 | + endif |
3229 | + |
3230 | ++# This test consistently times out on ppc64 |
3231 | ++if arch_subdir != 'ppc' |
3232 | ++ fast_tests += [['lcores_autotest', true]] |
3233 | ++endif |
3234 | ++ |
3235 | + foreach d:test_deps |
3236 | + def_lib = get_option('default_library') |
3237 | + test_dep_objs += get_variable(def_lib + '_rte_' + d) |
3238 | diff --git a/debian/patches/disable_ppc64_autopkgtest_fails.patch b/debian/patches/disable_ppc64_autopkgtest_fails.patch |
3239 | new file mode 100644 |
3240 | index 0000000..cfa3632 |
3241 | --- /dev/null |
3242 | +++ b/debian/patches/disable_ppc64_autopkgtest_fails.patch |
3243 | @@ -0,0 +1,27 @@ |
3244 | +Description: Skip tests failing in ppc64 test environment |
3245 | + It turned out that this regressed in release and acl_autotest is |
3246 | + unrelable on ppc64. |
3247 | + Skip it as they do not represent real regressions in or against DPDK. |
3248 | +Forwarded: no |
3249 | +X-Not-Forwarded-Reason: This only applies to autopkgtest environments |
3250 | +Author: Christian Ehrhardt <christian.ehrhardt@canonical.com> |
3251 | +Last-Update: 2021-08-13 |
3252 | +--- a/app/test/meson.build |
3253 | ++++ b/app/test/meson.build |
3254 | +@@ -180,7 +180,6 @@ test_deps = ['acl', |
3255 | + # Each test is marked with flag true/false |
3256 | + # to indicate whether it can run in no-huge mode. |
3257 | + fast_tests = [ |
3258 | +- ['acl_autotest', true], |
3259 | + ['alarm_autotest', false], |
3260 | + ['atomic_autotest', false], |
3261 | + ['bitops_autotest', true], |
3262 | +@@ -417,7 +416,7 @@ endif |
3263 | + |
3264 | + # This test consistently times out on ppc64 |
3265 | + if arch_subdir != 'ppc' |
3266 | +- fast_tests += [['lcores_autotest', true]] |
3267 | ++ fast_tests += [['lcores_autotest', true], ['acl_autotest', true]] |
3268 | + endif |
3269 | + |
3270 | + # These tests consistently fail on arm (containerized) test environments |
3271 | diff --git a/debian/patches/series b/debian/patches/series |
3272 | index 607724b..8438c98 100644 |
3273 | --- a/debian/patches/series |
3274 | +++ b/debian/patches/series |
3275 | @@ -1 +1,5 @@ |
3276 | -test-catch-coredumps.patch |
3277 | +ubuntu/lp-1940957-net-i40e-support-25G-AOC-ACC-cables.patch |
3278 | +disable_lcores_autotest_ppc.patch |
3279 | +disable_autopkgtest_fails.patch |
3280 | +disable_armhf_autopkgtest_fails.patch |
3281 | +disable_ppc64_autopkgtest_fails.patch |
3282 | diff --git a/debian/patches/test-catch-coredumps.patch b/debian/patches/test-catch-coredumps.patch |
3283 | deleted file mode 100644 |
3284 | index a686f3e..0000000 |
3285 | --- a/debian/patches/test-catch-coredumps.patch |
3286 | +++ /dev/null |
3287 | @@ -1,66 +0,0 @@ |
3288 | -Author: David Marchand <david.marchand@redhat.com> |
3289 | -Description: Parts of the unit tests code rely on forked/secondary processes |
3290 | - (expectedly) failing. |
3291 | - A crash in those situations could be missed so add a check on coredumps |
3292 | - presence after unit tests have run. |
3293 | - When unit tests fail, it can also help checking for coredumps as it |
3294 | - could give more insights on what happened. |
3295 | - |
3296 | - In some situations (like explicit call to rte_panic), coredump generation |
3297 | - must be disabled to avoid false positives. |
3298 | -Origin: https://patchwork.dpdk.org/project/dpdk/patch/20210125150539.27537-1-david.marchand@redhat.com/ |
3299 | ---- a/app/test/test_debug.c |
3300 | -+++ b/app/test/test_debug.c |
3301 | -@@ -4,6 +4,8 @@ |
3302 | - |
3303 | - #include <stdio.h> |
3304 | - #include <stdint.h> |
3305 | -+#include <sys/resource.h> |
3306 | -+#include <sys/time.h> |
3307 | - #include <sys/wait.h> |
3308 | - #include <unistd.h> |
3309 | - |
3310 | -@@ -28,9 +30,14 @@ |
3311 | - |
3312 | - pid = fork(); |
3313 | - |
3314 | -- if (pid == 0) |
3315 | -+ if (pid == 0) { |
3316 | -+ struct rlimit rl; |
3317 | -+ |
3318 | -+ /* No need to generate a coredump when panicking. */ |
3319 | -+ rl.rlim_cur = rl.rlim_max = 0; |
3320 | -+ setrlimit(RLIMIT_CORE, &rl); |
3321 | - rte_panic("Test Debug\n"); |
3322 | -- else if (pid < 0){ |
3323 | -+ } else if (pid < 0) { |
3324 | - printf("Fork Failed\n"); |
3325 | - return -1; |
3326 | - } |
3327 | ---- a/app/test/test_mbuf.c |
3328 | -+++ b/app/test/test_mbuf.c |
3329 | -@@ -1174,6 +1174,8 @@ |
3330 | - } |
3331 | - |
3332 | - #include <unistd.h> |
3333 | -+#include <sys/resource.h> |
3334 | -+#include <sys/time.h> |
3335 | - #include <sys/wait.h> |
3336 | - |
3337 | - /* use fork() to test mbuf errors panic */ |
3338 | -@@ -1186,9 +1188,14 @@ |
3339 | - pid = fork(); |
3340 | - |
3341 | - if (pid == 0) { |
3342 | -+ struct rlimit rl; |
3343 | -+ |
3344 | -+ /* No need to generate a coredump when panicking. */ |
3345 | -+ rl.rlim_cur = rl.rlim_max = 0; |
3346 | -+ setrlimit(RLIMIT_CORE, &rl); |
3347 | - rte_mbuf_sanity_check(buf, 1); /* should panic */ |
3348 | - exit(0); /* return normally if it doesn't panic */ |
3349 | -- } else if (pid < 0){ |
3350 | -+ } else if (pid < 0) { |
3351 | - printf("Fork Failed\n"); |
3352 | - return -1; |
3353 | - } |
3354 | diff --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 |
3355 | new file mode 100644 |
3356 | index 0000000..8606792 |
3357 | --- /dev/null |
3358 | +++ b/debian/patches/ubuntu/lp-1940957-net-i40e-support-25G-AOC-ACC-cables.patch |
3359 | @@ -0,0 +1,42 @@ |
3360 | +From f81d60e607bb8c13fcb13450e85d74721f1d9c8f Mon Sep 17 00:00:00 2001 |
3361 | +From: Yury Kylulin <yury.kylulin@intel.com> |
3362 | +Date: Tue, 13 Apr 2021 18:29:50 +0300 |
3363 | +Subject: [PATCH] net/i40e: support 25G AOC/ACC cables |
3364 | + |
3365 | +[ upstream commit b1daa3461429e7674206a714c17adca65e9b44b4 ] |
3366 | + |
3367 | +Enable additional PHY types (25G-AOC and 25G-ACC) for set PHY config |
3368 | +command. |
3369 | + |
3370 | +Ubuntu bug: https://bugs.launchpad.net/ubuntu/+source/dpdk/+bug/1940957 |
3371 | +Cc: stable@dpdk.org |
3372 | + |
3373 | +Signed-off-by: Yury Kylulin <yury.kylulin@intel.com> |
3374 | +Tested-by: Ashish Paul <apaul@juniper.net> |
3375 | +Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com> |
3376 | + |
3377 | +Origin: upstream, https://github.com/cpaelzer/dpdk-stable-queue/commit/f81d60e607bb8c13fcb13450e85d74721f1d9c8f |
3378 | +Bug-Ubuntu: https://bugs.launchpad.net/bugs/1940957 |
3379 | +Last-Update: 2021-09-06 |
3380 | + |
3381 | +--- |
3382 | + drivers/net/i40e/i40e_ethdev.c | 3 ++- |
3383 | + 1 file changed, 2 insertions(+), 1 deletion(-) |
3384 | + |
3385 | +diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c |
3386 | +index 508f90595f..0c896ea915 100644 |
3387 | +--- a/drivers/net/i40e/i40e_ethdev.c |
3388 | ++++ b/drivers/net/i40e/i40e_ethdev.c |
3389 | +@@ -2264,7 +2264,8 @@ i40e_phy_conf_link(struct i40e_hw *hw, |
3390 | + phy_conf.phy_type = is_up ? cpu_to_le32(phy_type_mask) : 0; |
3391 | + phy_conf.phy_type_ext = is_up ? (I40E_AQ_PHY_TYPE_EXT_25G_KR | |
3392 | + I40E_AQ_PHY_TYPE_EXT_25G_CR | I40E_AQ_PHY_TYPE_EXT_25G_SR | |
3393 | +- I40E_AQ_PHY_TYPE_EXT_25G_LR) : 0; |
3394 | ++ I40E_AQ_PHY_TYPE_EXT_25G_LR | I40E_AQ_PHY_TYPE_EXT_25G_AOC | |
3395 | ++ I40E_AQ_PHY_TYPE_EXT_25G_ACC) : 0; |
3396 | + phy_conf.fec_config = phy_ab.fec_cfg_curr_mod_ext_info; |
3397 | + phy_conf.eee_capability = phy_ab.eee_capability; |
3398 | + phy_conf.eeer = phy_ab.eeer_val; |
3399 | +-- |
3400 | +2.32.0 |
3401 | + |
3402 | diff --git a/devtools/check-maintainers.sh b/devtools/check-maintainers.sh |
3403 | index df3f740..71697bb 100755 |
3404 | --- a/devtools/check-maintainers.sh |
3405 | +++ b/devtools/check-maintainers.sh |
3406 | @@ -15,10 +15,10 @@ files () # <path> [<path> ...] |
3407 | if [ -z "$1" ] ; then |
3408 | return |
3409 | fi |
3410 | - if [ -d .git ] ; then |
3411 | + if [ -r .git ] ; then |
3412 | git ls-files "$1" |
3413 | else |
3414 | - find "$1" -type f | |
3415 | + find $1 -type f | |
3416 | sed 's,^\./,,' |
3417 | fi | |
3418 | # if not ended by / |
3419 | diff --git a/devtools/check-symbol-maps.sh b/devtools/check-symbol-maps.sh |
3420 | index 0e097ee..e07682a 100755 |
3421 | --- a/devtools/check-symbol-maps.sh |
3422 | +++ b/devtools/check-symbol-maps.sh |
3423 | @@ -20,8 +20,7 @@ find_orphan_symbols () |
3424 | else |
3425 | symsrc=$sym |
3426 | fi |
3427 | - if ! grep -q -r --exclude=$(basename $map) \ |
3428 | - -w $symsrc $(dirname $map) ; then |
3429 | + if [ -z "$(grep -rlw $symsrc $(dirname $map) | grep -v $map)" ] ; then |
3430 | echo "$map: $sym" |
3431 | fi |
3432 | done |
3433 | diff --git a/devtools/checkpatches.sh b/devtools/checkpatches.sh |
3434 | index 78a408e..db4c7d8 100755 |
3435 | --- a/devtools/checkpatches.sh |
3436 | +++ b/devtools/checkpatches.sh |
3437 | @@ -118,8 +118,7 @@ check_forbidden_additions() { # <patch> |
3438 | -f $(dirname $(readlink -f $0))/check-forbidden-tokens.awk \ |
3439 | "$1" || res=1 |
3440 | |
3441 | - # svg figures must be included with wildcard extension |
3442 | - # because of png conversion for pdf docs |
3443 | + # SVG must be included with wildcard extension to allow conversion |
3444 | awk -v FOLDERS='doc' \ |
3445 | -v EXPRESSIONS='::[[:space:]]*[^[:space:]]*\\.svg' \ |
3446 | -v RET_ON_FAIL=1 \ |
3447 | diff --git a/doc/api/doxy-api.conf.in b/doc/api/doxy-api.conf.in |
3448 | index 5c883b6..a536bcb 100644 |
3449 | --- a/doc/api/doxy-api.conf.in |
3450 | +++ b/doc/api/doxy-api.conf.in |
3451 | @@ -80,7 +80,8 @@ INPUT += @API_EXAMPLES@ |
3452 | FILE_PATTERNS = rte_*.h \ |
3453 | cmdline.h |
3454 | PREDEFINED = __DOXYGEN__ \ |
3455 | - VFIO_PRESENT \ |
3456 | + RTE_HAS_CPUSET \ |
3457 | + VFIO_PRESENT \ |
3458 | __attribute__(x)= |
3459 | |
3460 | OPTIMIZE_OUTPUT_FOR_C = YES |
3461 | diff --git a/doc/guides/conf.py b/doc/guides/conf.py |
3462 | index aceeb62..894d81c 100644 |
3463 | --- a/doc/guides/conf.py |
3464 | +++ b/doc/guides/conf.py |
3465 | @@ -5,8 +5,6 @@ |
3466 | from docutils import nodes |
3467 | from distutils.version import LooseVersion |
3468 | from sphinx import __version__ as sphinx_version |
3469 | -from sphinx.highlighting import PygmentsBridge |
3470 | -from pygments.formatters.latex import LatexFormatter |
3471 | from os import listdir |
3472 | from os import environ |
3473 | from os.path import basename |
3474 | @@ -20,7 +18,6 @@ try: |
3475 | import sphinx_rtd_theme |
3476 | |
3477 | html_theme = "sphinx_rtd_theme" |
3478 | - html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] |
3479 | except: |
3480 | print('Install the sphinx ReadTheDocs theme for improved html documentation ' |
3481 | 'layout: https://sphinx-rtd-theme.readthedocs.io/', |
3482 | @@ -31,8 +28,10 @@ stop_on_error = ('-W' in argv) |
3483 | |
3484 | project = 'Data Plane Development Kit' |
3485 | html_logo = '../logo/DPDK_logo_vertical_rev_small.png' |
3486 | -latex_logo = '../logo/DPDK_logo_horizontal_tag.png' |
3487 | -html_add_permalinks = "" |
3488 | +if LooseVersion(sphinx_version) >= LooseVersion('3.5'): |
3489 | + html_permalinks = False |
3490 | +else: |
3491 | + html_add_permalinks = "" |
3492 | html_show_copyright = False |
3493 | highlight_language = 'none' |
3494 | |
3495 | @@ -47,46 +46,6 @@ feature_str_len = 30 |
3496 | # Figures, tables and code-blocks automatically numbered if they have caption |
3497 | numfig = True |
3498 | |
3499 | -latex_documents = [ |
3500 | - ('index', |
3501 | - 'doc.tex', |
3502 | - '', |
3503 | - '', |
3504 | - 'manual') |
3505 | -] |
3506 | - |
3507 | -# Latex directives to be included directly in the latex/pdf docs. |
3508 | -custom_latex_preamble = r""" |
3509 | -\usepackage{textalpha} |
3510 | -\RecustomVerbatimEnvironment{Verbatim}{Verbatim}{xleftmargin=5mm} |
3511 | -\usepackage{etoolbox} |
3512 | -\robustify\( |
3513 | -\robustify\) |
3514 | -""" |
3515 | - |
3516 | -# Configuration for the latex/pdf docs. |
3517 | -latex_elements = { |
3518 | - 'papersize': 'a4paper', |
3519 | - 'pointsize': '11pt', |
3520 | - # remove blank pages |
3521 | - 'classoptions': ',openany,oneside', |
3522 | - 'babel': '\\usepackage[english]{babel}', |
3523 | - # customize Latex formatting |
3524 | - 'preamble': custom_latex_preamble |
3525 | -} |
3526 | - |
3527 | - |
3528 | -# Override the default Latex formatter in order to modify the |
3529 | -# code/verbatim blocks. |
3530 | -class CustomLatexFormatter(LatexFormatter): |
3531 | - def __init__(self, **options): |
3532 | - super(CustomLatexFormatter, self).__init__(**options) |
3533 | - # Use the second smallest font size for code/verbatim blocks. |
3534 | - self.verboptions = r'formatcom=\footnotesize' |
3535 | - |
3536 | -# Replace the default latex formatter. |
3537 | -PygmentsBridge.latex_formatter = CustomLatexFormatter |
3538 | - |
3539 | # Configuration for man pages |
3540 | man_pages = [("testpmd_app_ug/run_app", "testpmd", |
3541 | "tests for dpdk pmds", "", 1), |
3542 | diff --git a/doc/guides/contributing/coding_style.rst b/doc/guides/contributing/coding_style.rst |
3543 | index bb3f3ef..a2a8130 100644 |
3544 | --- a/doc/guides/contributing/coding_style.rst |
3545 | +++ b/doc/guides/contributing/coding_style.rst |
3546 | @@ -55,7 +55,7 @@ License Header |
3547 | ~~~~~~~~~~~~~~ |
3548 | |
3549 | Each file must begin with a special comment containing the |
3550 | -`Software Package Data Exchange (SPDX) License Identfier <https://spdx.org/using-spdx-license-identifier>`_. |
3551 | +`Software Package Data Exchange (SPDX) License Identifier <https://spdx.org/using-spdx-license-identifier>`_. |
3552 | |
3553 | Generally this is the BSD License, except for code granted special exceptions. |
3554 | The SPDX licences identifier is sufficient, a file should not contain |
3555 | diff --git a/doc/guides/contributing/documentation.rst b/doc/guides/contributing/documentation.rst |
3556 | index a4e6be6..1e998fd 100644 |
3557 | --- a/doc/guides/contributing/documentation.rst |
3558 | +++ b/doc/guides/contributing/documentation.rst |
3559 | @@ -8,7 +8,7 @@ DPDK Documentation Guidelines |
3560 | |
3561 | This document outlines the guidelines for writing the DPDK Guides and API documentation in RST and Doxygen format. |
3562 | |
3563 | -It also explains the structure of the DPDK documentation and shows how to build the Html and PDF versions of the documents. |
3564 | +It also explains the structure of the DPDK documentation and how to build it. |
3565 | |
3566 | |
3567 | Structure of the Documentation |
3568 | @@ -136,17 +136,11 @@ Building the Documentation |
3569 | Dependencies |
3570 | ~~~~~~~~~~~~ |
3571 | |
3572 | - |
3573 | The following dependencies must be installed to build the documentation: |
3574 | |
3575 | * Doxygen. |
3576 | - |
3577 | * Sphinx (also called python-sphinx). |
3578 | |
3579 | -* TexLive (at least TexLive-core and the extra Latex support). |
3580 | - |
3581 | -* Inkscape. |
3582 | - |
3583 | `Doxygen`_ generates documentation from commented source code. |
3584 | It can be installed as follows: |
3585 | |
3586 | @@ -158,7 +152,7 @@ It can be installed as follows: |
3587 | # Red Hat/Fedora. |
3588 | sudo dnf -y install doxygen |
3589 | |
3590 | -`Sphinx`_ is a Python documentation tool for converting RST files to Html or to PDF (via LaTeX). |
3591 | +`Sphinx`_ is a Python documentation tool for converting RST files to HTML. |
3592 | For full support with figure and table captioning the latest version of Sphinx can be installed as follows: |
3593 | |
3594 | .. code-block:: console |
3595 | @@ -177,43 +171,6 @@ For further information on getting started with Sphinx see the |
3596 | To get full support for Figure and Table numbering it is best to install Sphinx 1.3.1 or later. |
3597 | |
3598 | |
3599 | -`Inkscape`_ is a vector based graphics program which is used to create SVG images and also to convert SVG images to PDF images. |
3600 | -It can be installed as follows: |
3601 | - |
3602 | -.. code-block:: console |
3603 | - |
3604 | - # Ubuntu/Debian. |
3605 | - sudo apt-get -y install inkscape |
3606 | - |
3607 | - # Red Hat/Fedora. |
3608 | - sudo dnf -y install inkscape |
3609 | - |
3610 | -`TexLive <http://www.tug.org/texlive/>`_ is an installation package for Tex/LaTeX. |
3611 | -It is used to generate the PDF versions of the documentation. |
3612 | -The main required packages can be installed as follows: |
3613 | - |
3614 | -.. code-block:: console |
3615 | - |
3616 | - # Ubuntu/Debian. |
3617 | - sudo apt-get -y install texlive-latex-extra texlive-lang-greek |
3618 | - |
3619 | - # Red Hat/Fedora, selective install. |
3620 | - sudo dnf -y install texlive-collection-latexextra texlive-greek-fontenc |
3621 | - |
3622 | -`Latexmk <http://personal.psu.edu/jcc8/software/latexmk-jcc/>`_ is a perl script |
3623 | -for running LaTeX for resolving cross references, |
3624 | -and it also runs auxiliary programs like bibtex, makeindex if necessary, and dvips. |
3625 | -It has also a number of other useful capabilities (see man 1 latexmk). |
3626 | - |
3627 | -.. code-block:: console |
3628 | - |
3629 | - # Ubuntu/Debian. |
3630 | - sudo apt-get -y install latexmk |
3631 | - |
3632 | - # Red Hat/Fedora. |
3633 | - sudo dnf -y install latexmk |
3634 | - |
3635 | - |
3636 | Build commands |
3637 | ~~~~~~~~~~~~~~ |
3638 | |
3639 | @@ -225,16 +182,7 @@ To build the documentation:: |
3640 | |
3641 | See :doc:`../linux_gsg/build_dpdk` for more detail on compiling DPDK with meson. |
3642 | |
3643 | -The output is generated in the ``build`` directory:: |
3644 | - |
3645 | - build/doc |
3646 | - |-- html |
3647 | - | |-- api |
3648 | - | +-- guides |
3649 | - | |
3650 | |
3651 | - +-- guides |
3652 | - |
3653 | +The output is generated in the directories ``build/doc/html/{api,guides}``. |
3654 | |
3655 | .. Note:: |
3656 | |
3657 | @@ -259,7 +207,8 @@ Here are some guidelines in relation to the style of the documentation: |
3658 | RST Guidelines |
3659 | -------------- |
3660 | |
3661 | -The RST (reStructuredText) format is a plain text markup format that can be converted to Html, PDF or other formats. |
3662 | +The RST (reStructuredText) format is a plain text markup format |
3663 | +that can be converted to HTML or other formats. |
3664 | It is most closely associated with Python but it can be used to document any language. |
3665 | It is used in DPDK to document everything apart from the API. |
3666 | |
3667 | @@ -282,9 +231,8 @@ Line Length |
3668 | words. Multiple sentences which are not separated by a blank line are joined |
3669 | automatically into paragraphs. |
3670 | |
3671 | -* Lines in literal blocks **must** be less than 80 characters since |
3672 | - they are not wrapped by the document formatters and can exceed the page width |
3673 | - in PDF documents. |
3674 | +* Lines in literal blocks should be less than 80 characters |
3675 | + since they are not wrapped by the document formatters. |
3676 | |
3677 | Long literal command lines can be shown wrapped with backslashes. For |
3678 | example:: |
3679 | @@ -437,8 +385,8 @@ Code and Literal block sections |
3680 | * The default encoding for a literal block using the simplified ``::`` |
3681 | directive is ``none``. |
3682 | |
3683 | -* Lines in literal blocks must be less than 80 characters since they can exceed the page width when converted to PDF documentation. |
3684 | - For long literal lines that exceed that limit try to wrap the text at sensible locations. |
3685 | +* Lines in literal blocks should be less than 80 characters. |
3686 | + For long literal lines, try to wrap the text at sensible locations. |
3687 | For example a long command line could be documented like this and still work if copied directly from the docs:: |
3688 | |
3689 | ./<build_dir>/app/dpdk-testpmd -l 0-2 -n3 --vdev=net_pcap0,iface=eth0 \ |
3690 | @@ -503,7 +451,7 @@ Tables |
3691 | ~~~~~~ |
3692 | |
3693 | * RST tables should be used sparingly. |
3694 | - They are hard to format and to edit, they are often rendered incorrectly in PDF format, and the same information |
3695 | + They are hard to format and to edit, and the same information |
3696 | can usually be shown just as clearly with a definition or bullet list. |
3697 | |
3698 | * Tables in the documentation should be formatted as follows: |
3699 | @@ -533,8 +481,6 @@ Tables |
3700 | |
3701 | The QOS configuration is shown in :numref:`table_qos_pipes`. |
3702 | |
3703 | -* Tables should not include merged cells since they are not supported by the PDF renderer. |
3704 | - |
3705 | |
3706 | .. _links: |
3707 | |
3708 | diff --git a/doc/guides/cryptodevs/caam_jr.rst b/doc/guides/cryptodevs/caam_jr.rst |
3709 | index 5ef33ae..d7b0f14 100644 |
3710 | --- a/doc/guides/cryptodevs/caam_jr.rst |
3711 | +++ b/doc/guides/cryptodevs/caam_jr.rst |
3712 | @@ -24,7 +24,7 @@ accelerators. This provides significant improvement to system level performance. |
3713 | |
3714 | SEC HW accelerator above 4.x+ version are also known as CAAM. |
3715 | |
3716 | -caam_jr PMD is one of DPAA drivers which uses uio interface to interact with |
3717 | +caam_jr PMD is one of DPAA drivers which uses UIO interface to interact with |
3718 | Linux kernel for configure and destroy the device instance (ring). |
3719 | |
3720 | |
3721 | diff --git a/doc/guides/cryptodevs/qat.rst b/doc/guides/cryptodevs/qat.rst |
3722 | index cf16f03..ea5c03b 100644 |
3723 | --- a/doc/guides/cryptodevs/qat.rst |
3724 | +++ b/doc/guides/cryptodevs/qat.rst |
3725 | @@ -562,7 +562,7 @@ Binding the available VFs to the vfio-pci driver |
3726 | |
3727 | Note: |
3728 | |
3729 | -* Please note that due to security issues, the usage of older DPDK igb-uio |
3730 | +* Please note that due to security issues, the usage of older DPDK igb_uio |
3731 | driver is not recommended. This document shows how to use the more secure |
3732 | vfio-pci driver. |
3733 | * If QAT fails to bind to vfio-pci on Linux kernel 5.9+, please see the |
3734 | diff --git a/doc/guides/cryptodevs/scheduler.rst b/doc/guides/cryptodevs/scheduler.rst |
3735 | index 835d999..d08207f 100644 |
3736 | --- a/doc/guides/cryptodevs/scheduler.rst |
3737 | +++ b/doc/guides/cryptodevs/scheduler.rst |
3738 | @@ -118,7 +118,7 @@ operation: |
3739 | than the designated threshold, otherwise it will be handled by the secondary |
3740 | worker. |
3741 | |
3742 | - A typical usecase in this mode is with the QAT cryptodev as the primary and |
3743 | + A typical use case in this mode is with the QAT cryptodev as the primary and |
3744 | a software cryptodev as the secondary worker. This may help applications to |
3745 | process additional crypto workload than what the QAT cryptodev can handle on |
3746 | its own, by making use of the available CPU cycles to deal with smaller |
3747 | diff --git a/doc/guides/cryptodevs/virtio.rst b/doc/guides/cryptodevs/virtio.rst |
3748 | index 83d8e32..8b96446 100644 |
3749 | --- a/doc/guides/cryptodevs/virtio.rst |
3750 | +++ b/doc/guides/cryptodevs/virtio.rst |
3751 | @@ -63,7 +63,7 @@ QEMU can then be started using the following parameters: |
3752 | -device virtio-crypto-pci,id=crypto0,cryptodev=cryptodev0 |
3753 | [...] |
3754 | |
3755 | -Secondly bind the uio_generic driver for the virtio-crypto device. |
3756 | +Secondly bind the uio_pci_generic driver for the virtio-crypto device. |
3757 | For example, 0000:00:04.0 is the domain, bus, device and function |
3758 | number of the virtio-crypto device: |
3759 | |
3760 | diff --git a/doc/guides/eventdevs/dlb2.rst b/doc/guides/eventdevs/dlb2.rst |
3761 | index 94d2c77..1223219 100644 |
3762 | --- a/doc/guides/eventdevs/dlb2.rst |
3763 | +++ b/doc/guides/eventdevs/dlb2.rst |
3764 | @@ -179,19 +179,19 @@ pools' sizes are controlled by the nb_events_limit field in struct |
3765 | rte_event_dev_config. The load-balanced pool is sized to contain |
3766 | nb_events_limit credits, and the directed pool is sized to contain |
3767 | nb_events_limit/4 credits. The directed pool size can be overridden with the |
3768 | -num_dir_credits vdev argument, like so: |
3769 | +num_dir_credits devargs argument, like so: |
3770 | |
3771 | .. code-block:: console |
3772 | |
3773 | - --vdev=dlb1_event,num_dir_credits=<value> |
3774 | + --allow ea:00.0,num_dir_credits=<value> |
3775 | |
3776 | This can be used if the default allocation is too low or too high for the |
3777 | -specific application needs. The PMD also supports a vdev arg that limits the |
3778 | +specific application needs. The PMD also supports a devarg that limits the |
3779 | max_num_events reported by rte_event_dev_info_get(): |
3780 | |
3781 | .. code-block:: console |
3782 | |
3783 | - --vdev=dlb1_event,max_num_events=<value> |
3784 | + --allow ea:00.0,max_num_events=<value> |
3785 | |
3786 | By default, max_num_events is reported as the total available load-balanced |
3787 | credits. If multiple DLB2-based applications are being used, it may be desirable |
3788 | @@ -314,27 +314,6 @@ The PMD does not support the following configuration sequences: |
3789 | This sequence is not supported because the event device must be reconfigured |
3790 | before its ports or queues can be. |
3791 | |
3792 | -Deferred Scheduling |
3793 | -~~~~~~~~~~~~~~~~~~~ |
3794 | - |
3795 | -The DLB2 PMD's default behavior for managing a CQ is to "pop" the CQ once per |
3796 | -dequeued event before returning from rte_event_dequeue_burst(). This frees the |
3797 | -corresponding entries in the CQ, which enables the DLB2 to schedule more events |
3798 | -to it. |
3799 | - |
3800 | -To support applications seeking finer-grained scheduling control -- for example |
3801 | -deferring scheduling to get the best possible priority scheduling and |
3802 | -load-balancing -- the PMD supports a deferred scheduling mode. In this mode, |
3803 | -the CQ entry is not popped until the *subsequent* rte_event_dequeue_burst() |
3804 | -call. This mode only applies to load-balanced event ports with dequeue depth of |
3805 | -1. |
3806 | - |
3807 | -To enable deferred scheduling, use the defer_sched vdev argument like so: |
3808 | - |
3809 | - .. code-block:: console |
3810 | - |
3811 | - --vdev=dlb1_event,defer_sched=on |
3812 | - |
3813 | Atomic Inflights Allocation |
3814 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
3815 | |
3816 | @@ -357,11 +336,11 @@ buffer space (e.g. if not all queues are used, or aren't used for atomic |
3817 | scheduling). |
3818 | |
3819 | The PMD provides a dev arg to override the default per-queue allocation. To |
3820 | -increase a vdev's per-queue atomic-inflight allocation to (for example) 64: |
3821 | +increase per-queue atomic-inflight allocation to (for example) 64: |
3822 | |
3823 | .. code-block:: console |
3824 | |
3825 | - --vdev=dlb1_event,atm_inflights=64 |
3826 | + --allow ea:00.0,atm_inflights=64 |
3827 | |
3828 | QID Depth Threshold |
3829 | ~~~~~~~~~~~~~~~~~~~ |
3830 | @@ -384,9 +363,9 @@ shown below. |
3831 | |
3832 | .. code-block:: console |
3833 | |
3834 | - --vdev=dlb2_event,qid_depth_thresh=all:<threshold_value> |
3835 | - --vdev=dlb2_event,qid_depth_thresh=qidA-qidB:<threshold_value> |
3836 | - --vdev=dlb2_event,qid_depth_thresh=qid:<threshold_value> |
3837 | + --allow ea:00.0,qid_depth_thresh=all:<threshold_value> |
3838 | + --allow ea:00.0,qid_depth_thresh=qidA-qidB:<threshold_value> |
3839 | + --allow ea:00.0,qid_depth_thresh=qid:<threshold_value> |
3840 | |
3841 | Class of service |
3842 | ~~~~~~~~~~~~~~~~ |
3843 | @@ -408,4 +387,4 @@ Class of service can be specified in the devargs, as follows |
3844 | |
3845 | .. code-block:: console |
3846 | |
3847 | - --vdev=dlb2_event,cos=<0..4> |
3848 | + --allow ea:00.0,cos=<0..4> |
3849 | diff --git a/doc/guides/howto/pvp_reference_benchmark.rst b/doc/guides/howto/pvp_reference_benchmark.rst |
3850 | index 553458d..484de3b 100644 |
3851 | --- a/doc/guides/howto/pvp_reference_benchmark.rst |
3852 | +++ b/doc/guides/howto/pvp_reference_benchmark.rst |
3853 | @@ -26,7 +26,7 @@ Setup overview |
3854 | |
3855 | PVP setup using 2 NICs |
3856 | |
3857 | -In this diagram, each red arrow represents one logical core. This use-case |
3858 | +In this diagram, each red arrow represents one logical core. This use case |
3859 | requires 6 dedicated logical cores. A forwarding configuration with a single |
3860 | NIC is also possible, requiring 3 logical cores. |
3861 | |
3862 | diff --git a/doc/guides/linux_gsg/linux_drivers.rst b/doc/guides/linux_gsg/linux_drivers.rst |
3863 | index 90635a4..c6b6881 100644 |
3864 | --- a/doc/guides/linux_gsg/linux_drivers.rst |
3865 | +++ b/doc/guides/linux_gsg/linux_drivers.rst |
3866 | @@ -25,6 +25,16 @@ To make use of VFIO, the ``vfio-pci`` module must be loaded: |
3867 | VFIO kernel is usually present by default in all distributions, |
3868 | however please consult your distributions documentation to make sure that is the case. |
3869 | |
3870 | +For DMA mapping of either external memory or hugepages, VFIO interface is used. |
3871 | +VFIO does not support partial unmap of once mapped memory. Hence DPDK's memory is |
3872 | +mapped in hugepage granularity or system page granularity. Number of DMA |
3873 | +mappings is limited by kernel with user locked memory limit of a process (rlimit) |
3874 | +for system/hugepage memory. Another per-container overall limit applicable both |
3875 | +for external memory and system memory was added in kernel 5.1 defined by |
3876 | +VFIO module parameter ``dma_entry_limit`` with a default value of 64K. |
3877 | +When application is out of DMA entries, these limits need to be adjusted to |
3878 | +increase the allowed limit. |
3879 | + |
3880 | Since Linux version 5.7, |
3881 | the ``vfio-pci`` module supports the creation of virtual functions. |
3882 | After the PF is bound to ``vfio-pci`` module, |
3883 | diff --git a/doc/guides/nics/bnx2x.rst b/doc/guides/nics/bnx2x.rst |
3884 | index 9ad4f9f..788a6da 100644 |
3885 | --- a/doc/guides/nics/bnx2x.rst |
3886 | +++ b/doc/guides/nics/bnx2x.rst |
3887 | @@ -105,7 +105,7 @@ Jumbo: Limitation |
3888 | ----------------- |
3889 | |
3890 | Rx descriptor limit for number of segments per MTU is set to 1. |
3891 | -PMD doesn't support Jumbo Rx scatter gather. Some applciations can |
3892 | +PMD doesn't support Jumbo Rx scatter gather. Some applications can |
3893 | adjust mbuf_size based on this param and max_pkt_len. |
3894 | |
3895 | For others, PMD detects the condition where Rx packet length cannot |
3896 | diff --git a/doc/guides/nics/dpaa.rst b/doc/guides/nics/dpaa.rst |
3897 | index 917482d..7355ec3 100644 |
3898 | --- a/doc/guides/nics/dpaa.rst |
3899 | +++ b/doc/guides/nics/dpaa.rst |
3900 | @@ -297,7 +297,7 @@ FMC - FMAN Configuration Tool |
3901 | |
3902 | |
3903 | The details can be found in FMC Doc at: |
3904 | - `Frame Mnager Configuration Tool <https://www.nxp.com/docs/en/application-note/AN4760.pdf>`_. |
3905 | + `Frame Manager Configuration Tool <https://www.nxp.com/docs/en/application-note/AN4760.pdf>`_. |
3906 | |
3907 | FMLIB |
3908 | ~~~~~ |
3909 | @@ -307,7 +307,7 @@ FMLIB |
3910 | |
3911 | This is an alternate to the FMC based configuration. This library provides |
3912 | direct ioctl based interfaces for FMAN configuration as used by the FMC tool |
3913 | - as well. This helps in overcoming the main limitaiton of FMC - i.e. lack |
3914 | + as well. This helps in overcoming the main limitation of FMC - i.e. lack |
3915 | of dynamic configuration. |
3916 | |
3917 | The location for the fmd driver as used by FMLIB and FMC is as follows: |
3918 | @@ -319,7 +319,7 @@ VSP (Virtual Storage Profile) |
3919 | The storage profiled are means to provide virtualized interface. A ranges of |
3920 | storage profiles cab be associated to Ethernet ports. |
3921 | They are selected during classification. Specify how the frame should be |
3922 | - written to memory and which buffer pool to select for packet storange in |
3923 | + written to memory and which buffer pool to select for packet storage in |
3924 | queues. Start and End margin of buffer can also be configured. |
3925 | |
3926 | Limitations |
3927 | diff --git a/doc/guides/nics/ena.rst b/doc/guides/nics/ena.rst |
3928 | index 0f1f63f..df72020 100644 |
3929 | --- a/doc/guides/nics/ena.rst |
3930 | +++ b/doc/guides/nics/ena.rst |
3931 | @@ -234,7 +234,7 @@ Example output: |
3932 | |
3933 | [...] |
3934 | EAL: PCI device 0000:00:06.0 on NUMA socket -1 |
3935 | - EAL: Invalid NUMA socket, default to 0 |
3936 | + EAL: Device 0000:00:06.0 is not NUMA-aware, defaulting socket to 0 |
3937 | EAL: probe driver: 1d0f:ec20 net_ena |
3938 | |
3939 | Interactive-mode selected |
3940 | diff --git a/doc/guides/nics/enic.rst b/doc/guides/nics/enic.rst |
3941 | index 5d1cc9f..1025224 100644 |
3942 | --- a/doc/guides/nics/enic.rst |
3943 | +++ b/doc/guides/nics/enic.rst |
3944 | @@ -294,35 +294,31 @@ inner and outer packets can be IPv4 or IPv6. |
3945 | |
3946 | RSS hash calculation, therefore queue selection, is done on inner packets. |
3947 | |
3948 | -In order to enable overlay offload, the 'Enable VXLAN' box should be checked |
3949 | +In order to enable overlay offload, enable VXLAN and/or Geneve on vNIC |
3950 | via CIMC or UCSM followed by a reboot of the server. When PMD successfully |
3951 | -enables overlay offload, it prints the following message on the console. |
3952 | +enables overlay offload, it prints one of the following messages on the console. |
3953 | |
3954 | .. code-block:: console |
3955 | |
3956 | - Overlay offload is enabled |
3957 | + Overlay offload is enabled (VxLAN) |
3958 | + Overlay offload is enabled (Geneve) |
3959 | + Overlay offload is enabled (VxLAN, Geneve) |
3960 | |
3961 | By default, PMD enables overlay offload if hardware supports it. To disable |
3962 | it, set ``devargs`` parameter ``disable-overlay=1``. For example:: |
3963 | |
3964 | -a 12:00.0,disable-overlay=1 |
3965 | |
3966 | -By default, the NIC uses 4789 as the VXLAN port. The user may change |
3967 | -it through ``rte_eth_dev_udp_tunnel_port_{add,delete}``. However, as |
3968 | -the current NIC has a single VXLAN port number, the user cannot |
3969 | -configure multiple port numbers. |
3970 | - |
3971 | -Geneve headers with non-zero options are not supported by default. To |
3972 | -use Geneve with options, update the VIC firmware to the latest version |
3973 | -and then set ``devargs`` parameter ``geneve-opt=1``. When Geneve with |
3974 | -options is enabled, flow API cannot be used as the features are |
3975 | -currently mutually exclusive. When this feature is successfully |
3976 | -enabled, PMD prints the following message. |
3977 | - |
3978 | -.. code-block:: console |
3979 | - |
3980 | - Geneve with options is enabled |
3981 | +By default, the NIC uses 4789 and 6081 as the VXLAN and Geneve ports, |
3982 | +respectively. The user may change them through |
3983 | +``rte_eth_dev_udp_tunnel_port_{add,delete}``. However, as the current |
3984 | +NIC has a single VXLAN port number and a single Geneve port number, |
3985 | +the user cannot configure multiple port numbers for each tunnel type. |
3986 | |
3987 | +Geneve offload support has evolved over VIC models. On older models, |
3988 | +Geneve offload and advanced filters are mutually exclusive. This is |
3989 | +enforced by UCSM and CIMC, which only allow one of the two features |
3990 | +to be selected at one time. Newer VIC models do not have this restriction. |
3991 | |
3992 | Ingress VLAN Rewrite |
3993 | -------------------- |
3994 | diff --git a/doc/guides/nics/hns3.rst b/doc/guides/nics/hns3.rst |
3995 | index 84bd7a3..9a0196b 100644 |
3996 | --- a/doc/guides/nics/hns3.rst |
3997 | +++ b/doc/guides/nics/hns3.rst |
3998 | @@ -1,12 +1,12 @@ |
3999 | .. SPDX-License-Identifier: BSD-3-Clause |
4000 | - Copyright(c) 2018-2019 Hisilicon Limited. |
4001 | + Copyright(c) 2018-2019 HiSilicon Limited. |
4002 | |
4003 | HNS3 Poll Mode Driver |
4004 | =============================== |
4005 | |
4006 | The hns3 PMD (**librte_net_hns3**) provides poll mode driver support |
4007 | -for the inbuilt Hisilicon Network Subsystem(HNS) network engine |
4008 | -found in the Hisilicon Kunpeng 920 SoC. |
4009 | +for the inbuilt HiSilicon Network Subsystem(HNS) network engine |
4010 | +found in the HiSilicon Kunpeng 920 SoC. |
4011 | |
4012 | Features |
4013 | -------- |
4014 | diff --git a/doc/guides/nics/i40e.rst b/doc/guides/nics/i40e.rst |
4015 | index 64f20e7..15febba 100644 |
4016 | --- a/doc/guides/nics/i40e.rst |
4017 | +++ b/doc/guides/nics/i40e.rst |
4018 | @@ -88,7 +88,7 @@ For X710/XL710/XXV710, |
4019 | +--------------+-----------------------+------------------+ |
4020 | | DPDK version | Kernel driver version | Firmware version | |
4021 | +==============+=======================+==================+ |
4022 | - | 20.11 | 2.13.10 | 8.00 | |
4023 | + | 20.11 | 2.14.13 | 8.00 | |
4024 | +--------------+-----------------------+------------------+ |
4025 | | 20.08 | 2.12.6 | 7.30 | |
4026 | +--------------+-----------------------+------------------+ |
4027 | diff --git a/doc/guides/nics/ice.rst b/doc/guides/nics/ice.rst |
4028 | index ccda26f..7b5a1bf 100644 |
4029 | --- a/doc/guides/nics/ice.rst |
4030 | +++ b/doc/guides/nics/ice.rst |
4031 | @@ -37,7 +37,7 @@ The detailed information can refer to chapter Tested Platforms/Tested NICs in re |
4032 | +-----------+---------------+-----------------+-----------+-----------+ |
4033 | | DPDK | Kernel Driver | OS Default DDP | COMMS DDP | Firmware | |
4034 | +===========+===============+=================+===========+===========+ |
4035 | - | 20.11 | 1.3.0 | 1.3.20 | 1.3.24 | 2.3 | |
4036 | + | 20.11 | 1.3.2 | 1.3.20 | 1.3.24 | 2.3 | |
4037 | +-----------+---------------+-----------------+-----------+-----------+ |
4038 | |
4039 | Pre-Installation Configuration |
4040 | diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst |
4041 | index 24d5a69..84e58fc 100644 |
4042 | --- a/doc/guides/nics/mlx5.rst |
4043 | +++ b/doc/guides/nics/mlx5.rst |
4044 | @@ -591,6 +591,13 @@ Driver options |
4045 | it is not recommended and may prevent NIC from sending packets over |
4046 | some configurations. |
4047 | |
4048 | + For ConnectX-4 and ConnectX-4 Lx NICs, automatically configured value |
4049 | + is insufficient for some traffic, because they require at least all L2 headers |
4050 | + to be inlined. For example, Q-in-Q adds 4 bytes to default 18 bytes |
4051 | + of Ethernet and VLAN, thus ``txq_inline_min`` must be set to 22. |
4052 | + MPLS would add 4 bytes per label. Final value must account for all possible |
4053 | + L2 encapsulation headers used in particular environment. |
4054 | + |
4055 | Please, note, this minimal data inlining disengages eMPW feature (Enhanced |
4056 | Multi-Packet Write), because last one does not support partial packet inlining. |
4057 | This is not very critical due to minimal data inlining is mostly required |
4058 | @@ -1281,7 +1288,7 @@ the DPDK application. |
4059 | |
4060 | echo -n "<device pci address" > /sys/bus/pci/drivers/mlx5_core/unbind |
4061 | |
4062 | -5. Enbale switchdev mode:: |
4063 | +5. Enable switchdev mode:: |
4064 | |
4065 | echo switchdev > /sys/class/net/<net device>/compat/devlink/mode |
4066 | |
4067 | diff --git a/doc/guides/nics/netvsc.rst b/doc/guides/nics/netvsc.rst |
4068 | index 19f9940..c0e218c 100644 |
4069 | --- a/doc/guides/nics/netvsc.rst |
4070 | +++ b/doc/guides/nics/netvsc.rst |
4071 | @@ -62,7 +62,7 @@ store it in a shell variable: |
4072 | |
4073 | .. _`UUID`: https://en.wikipedia.org/wiki/Universally_unique_identifier |
4074 | |
4075 | -There are several possible ways to assign the uio device driver for a device. |
4076 | +There are several possible ways to assign the UIO device driver for a device. |
4077 | The easiest way (but only on 4.18 or later) |
4078 | is to use the `driverctl Device Driver control utility`_ to override |
4079 | the normal kernel device. |
4080 | diff --git a/doc/guides/nics/nfp.rst b/doc/guides/nics/nfp.rst |
4081 | index fef9997..bf8be72 100644 |
4082 | --- a/doc/guides/nics/nfp.rst |
4083 | +++ b/doc/guides/nics/nfp.rst |
4084 | @@ -117,15 +117,15 @@ although once they are created, DPDK apps should be able to use them as normal |
4085 | PCI ports. |
4086 | |
4087 | NFP ports belonging to same PF can be seen inside PMD initialization with a |
4088 | -suffix added to the PCI ID: wwww:xx:yy.z_port_n. For example, a PF with PCI ID |
4089 | +suffix added to the PCI ID: wwww:xx:yy.z_portn. For example, a PF with PCI ID |
4090 | 0000:03:00.0 and four ports is seen by the PMD code as: |
4091 | |
4092 | .. code-block:: console |
4093 | |
4094 | - 0000:03:00.0_port_0 |
4095 | - 0000:03:00.0_port_1 |
4096 | - 0000:03:00.0_port_2 |
4097 | - 0000:03:00.0_port_3 |
4098 | + 0000:03:00.0_port0 |
4099 | + 0000:03:00.0_port1 |
4100 | + 0000:03:00.0_port2 |
4101 | + 0000:03:00.0_port3 |
4102 | |
4103 | .. Note:: |
4104 | |
4105 | diff --git a/doc/guides/nics/octeontx2.rst b/doc/guides/nics/octeontx2.rst |
4106 | index a4f2244..7b86cf5 100644 |
4107 | --- a/doc/guides/nics/octeontx2.rst |
4108 | +++ b/doc/guides/nics/octeontx2.rst |
4109 | @@ -153,7 +153,7 @@ Runtime Config Options |
4110 | |
4111 | -a 0002:02:00.0,max_sqb_count=64 |
4112 | |
4113 | - With the above configuration, each send queue's decscriptor buffer count is |
4114 | + With the above configuration, each send queue's descriptor buffer count is |
4115 | limited to a maximum of 64 buffers. |
4116 | |
4117 | - ``Switch header enable`` (default ``none``) |
4118 | @@ -242,7 +242,7 @@ configure the following features: |
4119 | #. Hierarchical scheduling |
4120 | #. Single rate - Two color, Two rate - Three color shaping |
4121 | |
4122 | -Both DWRR and Static Priority(SP) hierarchial scheduling is supported. |
4123 | +Both DWRR and Static Priority(SP) hierarchical scheduling is supported. |
4124 | |
4125 | Every parent can have atmost 10 SP Children and unlimited DWRR children. |
4126 | |
4127 | diff --git a/doc/guides/nics/virtio.rst b/doc/guides/nics/virtio.rst |
4128 | index c03c2d0..1f0aba3 100644 |
4129 | --- a/doc/guides/nics/virtio.rst |
4130 | +++ b/doc/guides/nics/virtio.rst |
4131 | @@ -71,7 +71,7 @@ In this release, the virtio PMD driver provides the basic functionality of packe |
4132 | |
4133 | * Virtio supports software vlan stripping and inserting. |
4134 | |
4135 | -* Virtio supports using port IO to get PCI resource when uio/igb_uio module is not available. |
4136 | +* Virtio supports using port IO to get PCI resource when UIO module is not available. |
4137 | |
4138 | Prerequisites |
4139 | ------------- |
4140 | @@ -103,7 +103,8 @@ Host2VM communication example |
4141 | |
4142 | insmod rte_kni.ko |
4143 | |
4144 | - Other basic DPDK preparations like hugepage enabling, uio port binding are not listed here. |
4145 | + Other basic DPDK preparations like hugepage enabling, |
4146 | + UIO port binding are not listed here. |
4147 | Please refer to the *DPDK Getting Started Guide* for detailed instructions. |
4148 | |
4149 | #. Launch the kni user application: |
4150 | @@ -508,7 +509,7 @@ are shown in below table: |
4151 | Split virtqueue in-order non-mergeable path virtio_recv_pkts_inorder virtio_xmit_pkts_inorder |
4152 | Split virtqueue vectorized Rx path virtio_recv_pkts_vec virtio_xmit_pkts |
4153 | Packed virtqueue mergeable path virtio_recv_mergeable_pkts_packed virtio_xmit_pkts_packed |
4154 | - Packed virtqueue non-meregable path virtio_recv_pkts_packed virtio_xmit_pkts_packed |
4155 | + Packed virtqueue non-mergeable path virtio_recv_pkts_packed virtio_xmit_pkts_packed |
4156 | Packed virtqueue in-order mergeable path virtio_recv_mergeable_pkts_packed virtio_xmit_pkts_packed |
4157 | Packed virtqueue in-order non-mergeable path virtio_recv_pkts_packed virtio_xmit_pkts_packed |
4158 | Packed virtqueue vectorized Rx path virtio_recv_pkts_packed_vec virtio_xmit_pkts_packed |
4159 | diff --git a/doc/guides/nics/vmxnet3.rst b/doc/guides/nics/vmxnet3.rst |
4160 | index ae146f0..190cf91 100644 |
4161 | --- a/doc/guides/nics/vmxnet3.rst |
4162 | +++ b/doc/guides/nics/vmxnet3.rst |
4163 | @@ -119,7 +119,8 @@ This section describes an example setup for Phy-vSwitch-VM-Phy communication. |
4164 | |
4165 | .. note:: |
4166 | |
4167 | - Other instructions on preparing to use DPDK such as, hugepage enabling, uio port binding are not listed here. |
4168 | + Other instructions on preparing to use DPDK such as, |
4169 | + hugepage enabling, UIO port binding are not listed here. |
4170 | Please refer to *DPDK Getting Started Guide and DPDK Sample Application's User Guide* for detailed instructions. |
4171 | |
4172 | The packet reception and transmission flow path is:: |
4173 | diff --git a/doc/guides/platform/dpaa.rst b/doc/guides/platform/dpaa.rst |
4174 | index 20a0e39..3896929 100644 |
4175 | --- a/doc/guides/platform/dpaa.rst |
4176 | +++ b/doc/guides/platform/dpaa.rst |
4177 | @@ -78,7 +78,7 @@ compatible board: |
4178 | based config (if /tmp/fmc.bin is present). DPAA FMD will be used only if no |
4179 | previous fmc config is existing. |
4180 | |
4181 | - Note that fmlib based integratin rely on underlying fmd driver in kernel, |
4182 | + Note that fmlib based integration rely on underlying fmd driver in kernel, |
4183 | which is available as part of NXP kernel or NXP SDK. |
4184 | |
4185 | The following dependencies are not part of DPDK and must be installed |
4186 | diff --git a/doc/guides/prog_guide/bbdev.rst b/doc/guides/prog_guide/bbdev.rst |
4187 | index 6b2bd54..9619280 100644 |
4188 | --- a/doc/guides/prog_guide/bbdev.rst |
4189 | +++ b/doc/guides/prog_guide/bbdev.rst |
4190 | @@ -639,7 +639,7 @@ optionally the ``soft_output`` mbuf data pointers. |
4191 | "soft output","soft LLR output buffer (optional)" |
4192 | "op_flags","bitmask of all active operation capabilities" |
4193 | "rv_index","redundancy version index [0..3]" |
4194 | - "iter_max","maximum number of iterations to perofrm in decode all CBs" |
4195 | + "iter_max","maximum number of iterations to perform in decode all CBs" |
4196 | "iter_min","minimum number of iterations to perform in decoding all CBs" |
4197 | "iter_count","number of iterations to performed in decoding all CBs" |
4198 | "ext_scale","scale factor on extrinsic info (5 bits)" |
4199 | diff --git a/doc/guides/prog_guide/env_abstraction_layer.rst b/doc/guides/prog_guide/env_abstraction_layer.rst |
4200 | index 1f30e13..d124eb0 100644 |
4201 | --- a/doc/guides/prog_guide/env_abstraction_layer.rst |
4202 | +++ b/doc/guides/prog_guide/env_abstraction_layer.rst |
4203 | @@ -465,7 +465,7 @@ devices would fail anyway. |
4204 | - By default, the mempool, first asks for IOVA-contiguous memory using |
4205 | ``RTE_MEMZONE_IOVA_CONTIG``. This is slow in RTE_IOVA_PA mode and it may |
4206 | affect the application boot time. |
4207 | - - It is easy to enable large amount of IOVA-contiguous memory use-cases |
4208 | + - It is easy to enable large amount of IOVA-contiguous memory use cases |
4209 | with IOVA in VA mode. |
4210 | |
4211 | It is expected that all PCI drivers work in both RTE_IOVA_PA and |
4212 | diff --git a/doc/guides/prog_guide/eventdev.rst b/doc/guides/prog_guide/eventdev.rst |
4213 | index ccde086..347203f 100644 |
4214 | --- a/doc/guides/prog_guide/eventdev.rst |
4215 | +++ b/doc/guides/prog_guide/eventdev.rst |
4216 | @@ -120,7 +120,7 @@ Ports |
4217 | ~~~~~ |
4218 | |
4219 | Ports are the points of contact between worker cores and the eventdev. The |
4220 | -general use-case will see one CPU core using one port to enqueue and dequeue |
4221 | +general use case will see one CPU core using one port to enqueue and dequeue |
4222 | events from an eventdev. Ports are linked to queues in order to retrieve events |
4223 | from those queues (more details in `Linking Queues and Ports`_ below). |
4224 | |
4225 | diff --git a/doc/guides/prog_guide/multi_proc_support.rst b/doc/guides/prog_guide/multi_proc_support.rst |
4226 | index 6b0ac30..815e8bd 100644 |
4227 | --- a/doc/guides/prog_guide/multi_proc_support.rst |
4228 | +++ b/doc/guides/prog_guide/multi_proc_support.rst |
4229 | @@ -325,7 +325,7 @@ supported. However, since sending messages (not requests) does not involve an |
4230 | IPC thread, sending messages while processing another message or request is |
4231 | supported. |
4232 | |
4233 | -Since the memory sybsystem uses IPC internally, memory allocations and IPC must |
4234 | +Since the memory subsystem uses IPC internally, memory allocations and IPC must |
4235 | not be mixed: it is not safe to use IPC inside a memory-related callback, nor is |
4236 | it safe to allocate/free memory inside IPC callbacks. Attempting to do so may |
4237 | lead to a deadlock. |
4238 | diff --git a/doc/guides/prog_guide/qos_framework.rst b/doc/guides/prog_guide/qos_framework.rst |
4239 | index 4e4ea33..e403b90 100644 |
4240 | --- a/doc/guides/prog_guide/qos_framework.rst |
4241 | +++ b/doc/guides/prog_guide/qos_framework.rst |
4242 | @@ -737,7 +737,7 @@ Strict priority scheduling of traffic classes within the same pipe is implemente |
4243 | which selects the queues in ascending order. |
4244 | Therefore, queue 0 (associated with TC 0, highest priority TC) is handled before |
4245 | queue 1 (TC 1, lower priority than TC 0), |
4246 | -which is handled before queue 2 (TC 2, lower priority than TC 1) and it conitnues until queues of all TCs except the |
4247 | +which is handled before queue 2 (TC 2, lower priority than TC 1) and it continues until queues of all TCs except the |
4248 | lowest priority TC are handled. At last, queues 12..15 (best effort TC, lowest priority TC) are handled. |
4249 | |
4250 | Upper Limit Enforcement |
4251 | diff --git a/doc/guides/prog_guide/regexdev.rst b/doc/guides/prog_guide/regexdev.rst |
4252 | index 3d8b591..5ca7e0c 100644 |
4253 | --- a/doc/guides/prog_guide/regexdev.rst |
4254 | +++ b/doc/guides/prog_guide/regexdev.rst |
4255 | @@ -124,7 +124,7 @@ The configuration mode is depended on the PMD capabilities. |
4256 | |
4257 | Online rule configuration is done using the following API functions: |
4258 | ``rte_regexdev_rule_db_update`` which add / remove rules from the rules |
4259 | -precomplied list, and ``rte_regexdev_rule_db_compile_activate`` |
4260 | +precompiled list, and ``rte_regexdev_rule_db_compile_activate`` |
4261 | which compile the rules and loads them to the RegEx HW. |
4262 | |
4263 | Offline rule configuration can be done by adding a pointer to the compiled |
4264 | diff --git a/doc/guides/prog_guide/vhost_lib.rst b/doc/guides/prog_guide/vhost_lib.rst |
4265 | index ba4c62a..493818b 100644 |
4266 | --- a/doc/guides/prog_guide/vhost_lib.rst |
4267 | +++ b/doc/guides/prog_guide/vhost_lib.rst |
4268 | @@ -118,6 +118,18 @@ The following is an overview of some key Vhost API functions: |
4269 | |
4270 | It is disabled by default. |
4271 | |
4272 | + - ``RTE_VHOST_USER_NET_COMPLIANT_OL_FLAGS`` |
4273 | + |
4274 | + Since v16.04, the vhost library forwards checksum and gso requests for |
4275 | + packets received from a virtio driver by filling Tx offload metadata in |
4276 | + the mbuf. This behavior is inconsistent with other drivers but it is left |
4277 | + untouched for existing applications that might rely on it. |
4278 | + |
4279 | + This flag disables the legacy behavior and instead ask vhost to simply |
4280 | + populate Rx offload metadata in the mbuf. |
4281 | + |
4282 | + It is disabled by default. |
4283 | + |
4284 | * ``rte_vhost_driver_set_features(path, features)`` |
4285 | |
4286 | This function sets the feature bits the vhost-user driver supports. The |
4287 | diff --git a/doc/guides/prog_guide/writing_efficient_code.rst b/doc/guides/prog_guide/writing_efficient_code.rst |
4288 | index 7baeaae..a61e832 100644 |
4289 | --- a/doc/guides/prog_guide/writing_efficient_code.rst |
4290 | +++ b/doc/guides/prog_guide/writing_efficient_code.rst |
4291 | @@ -143,20 +143,21 @@ In order to achieve higher throughput, |
4292 | the DPDK attempts to aggregate the cost of processing each packet individually by processing packets in bursts. |
4293 | |
4294 | Using the testpmd application as an example, |
4295 | -the burst size can be set on the command line to a value of 16 (also the default value). |
4296 | -This allows the application to request 16 packets at a time from the PMD. |
4297 | +the burst size can be set on the command line to a value of 32 (also the default value). |
4298 | +This allows the application to request 32 packets at a time from the PMD. |
4299 | The testpmd application then immediately attempts to transmit all the packets that were received, |
4300 | -in this case, all 16 packets. |
4301 | +in this case, all 32 packets. |
4302 | |
4303 | The packets are not transmitted until the tail pointer is updated on the corresponding TX queue of the network port. |
4304 | This behavior is desirable when tuning for high throughput because |
4305 | -the cost of tail pointer updates to both the RX and TX queues can be spread across 16 packets, |
4306 | +the cost of tail pointer updates to both the RX and TX queues can be spread |
4307 | +across 32 packets, |
4308 | effectively hiding the relatively slow MMIO cost of writing to the PCIe* device. |
4309 | However, this is not very desirable when tuning for low latency because |
4310 | -the first packet that was received must also wait for another 15 packets to be received. |
4311 | -It cannot be transmitted until the other 15 packets have also been processed because |
4312 | +the first packet that was received must also wait for another 31 packets to be received. |
4313 | +It cannot be transmitted until the other 31 packets have also been processed because |
4314 | the NIC will not know to transmit the packets until the TX tail pointer has been updated, |
4315 | -which is not done until all 16 packets have been processed for transmission. |
4316 | +which is not done until all 32 packets have been processed for transmission. |
4317 | |
4318 | To consistently achieve low latency, even under heavy system load, |
4319 | the application developer should avoid processing packets in bunches. |
4320 | diff --git a/doc/guides/rawdevs/ioat.rst b/doc/guides/rawdevs/ioat.rst |
4321 | index 250cfc4..59ba207 100644 |
4322 | --- a/doc/guides/rawdevs/ioat.rst |
4323 | +++ b/doc/guides/rawdevs/ioat.rst |
4324 | @@ -65,7 +65,7 @@ To assign an engine to a group:: |
4325 | $ accel-config config-engine dsa0/engine0.1 --group-id=1 |
4326 | |
4327 | To assign work queues to groups for passing descriptors to the engines a similar accel-config command can be used. |
4328 | -However, the work queues also need to be configured depending on the use-case. |
4329 | +However, the work queues also need to be configured depending on the use case. |
4330 | Some configuration options include: |
4331 | |
4332 | * mode (Dedicated/Shared): Indicates whether a WQ may accept jobs from multiple queues simultaneously. |
4333 | diff --git a/doc/guides/rawdevs/ntb.rst b/doc/guides/rawdevs/ntb.rst |
4334 | index 2c5fa76..2bb115d 100644 |
4335 | --- a/doc/guides/rawdevs/ntb.rst |
4336 | +++ b/doc/guides/rawdevs/ntb.rst |
4337 | @@ -17,7 +17,7 @@ some information by using scratchpad registers. |
4338 | BIOS setting on Intel Xeon |
4339 | -------------------------- |
4340 | |
4341 | -Intel Non-transparent Bridge needs special BIOS setting. The referencce for |
4342 | +Intel Non-transparent Bridge needs special BIOS setting. The reference for |
4343 | Skylake is https://www.intel.com/content/dam/support/us/en/documents/server-products/Intel_Xeon_Processor_Scalable_Family_BIOS_User_Guide.pdf |
4344 | |
4345 | - Set the needed PCIe port as NTB to NTB mode on both hosts. |
4346 | diff --git a/doc/guides/regexdevs/features_overview.rst b/doc/guides/regexdevs/features_overview.rst |
4347 | index f90b394..c512bde 100644 |
4348 | --- a/doc/guides/regexdevs/features_overview.rst |
4349 | +++ b/doc/guides/regexdevs/features_overview.rst |
4350 | @@ -16,7 +16,7 @@ PCRE atomic grouping |
4351 | Support PCRE atomic grouping. |
4352 | |
4353 | PCRE back reference |
4354 | - Support PCRE back regerence. |
4355 | + Support PCRE back reference. |
4356 | |
4357 | PCRE back tracking ctrl |
4358 | Support PCRE back tracking ctrl. |
4359 | diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst |
4360 | index 2f498a0..c0d7efa 100644 |
4361 | --- a/doc/guides/rel_notes/deprecation.rst |
4362 | +++ b/doc/guides/rel_notes/deprecation.rst |
4363 | @@ -27,16 +27,18 @@ Deprecation Notices |
4364 | |
4365 | * rte_atomicNN_xxx: These APIs do not take memory order parameter. This does |
4366 | not allow for writing optimized code for all the CPU architectures supported |
4367 | - in DPDK. DPDK will adopt C11 atomic operations semantics and provide wrappers |
4368 | - using C11 atomic built-ins. These wrappers must be used for patches that |
4369 | - need to be merged in 20.08 onwards. This change will not introduce any |
4370 | - performance degradation. |
4371 | + in DPDK. DPDK has adopted the atomic operations from |
4372 | + https://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html. These |
4373 | + operations must be used for patches that need to be merged in 20.08 onwards. |
4374 | + This change will not introduce any performance degradation. |
4375 | |
4376 | * rte_smp_*mb: These APIs provide full barrier functionality. However, many |
4377 | - use cases do not require full barriers. To support such use cases, DPDK will |
4378 | - adopt C11 barrier semantics and provide wrappers using C11 atomic built-ins. |
4379 | - These wrappers must be used for patches that need to be merged in 20.08 |
4380 | - onwards. This change will not introduce any performance degradation. |
4381 | + use cases do not require full barriers. To support such use cases, DPDK has |
4382 | + adopted atomic operations from |
4383 | + https://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html. These |
4384 | + operations and a new wrapper ``rte_atomic_thread_fence`` instead of |
4385 | + ``__atomic_thread_fence`` must be used for patches that need to be merged in |
4386 | + 20.08 onwards. This change will not introduce any performance degradation. |
4387 | |
4388 | * lib: will fix extending some enum/define breaking the ABI. There are multiple |
4389 | samples in DPDK that enum/define terminated with a ``.*MAX.*`` value which is |
4390 | @@ -127,12 +129,6 @@ Deprecation Notices |
4391 | from the release: ``0x16c8, 0x16c9, 0x16ca, 0x16ce, 0x16cf, 0x16df,`` |
4392 | ``0x16d0, 0x16d1, 0x16d2, 0x16d4, 0x16d5, 0x16e7, 0x16e8, 0x16e9``. |
4393 | |
4394 | -* sched: To allow more traffic classes, flexible mapping of pipe queues to |
4395 | - traffic classes, and subport level configuration of pipes and queues |
4396 | - changes will be made to macros, data structures and API functions defined |
4397 | - in "rte_sched.h". These changes are aligned to improvements suggested in the |
4398 | - RFC https://mails.dpdk.org/archives/dev/2018-November/120035.html. |
4399 | - |
4400 | * metrics: The function ``rte_metrics_init`` will have a non-void return |
4401 | in order to notify errors instead of calling ``rte_exit``. |
4402 | |
4403 | diff --git a/doc/guides/rel_notes/known_issues.rst b/doc/guides/rel_notes/known_issues.rst |
4404 | index ee3ed1e..e8f9fe6 100644 |
4405 | --- a/doc/guides/rel_notes/known_issues.rst |
4406 | +++ b/doc/guides/rel_notes/known_issues.rst |
4407 | @@ -419,7 +419,7 @@ Binding PCI devices to igb_uio fails on Linux kernel 3.9 when more than one devi |
4408 | ------------------------------------------------------------------------------------------ |
4409 | |
4410 | **Description**: |
4411 | - A known bug in the uio driver included in Linux kernel version 3.9 prevents more than one PCI device to be |
4412 | + A known bug in the UIO driver included in Linux kernel version 3.9 prevents more than one PCI device to be |
4413 | bound to the igb_uio driver. |
4414 | |
4415 | **Implication**: |
4416 | @@ -614,7 +614,7 @@ I40e VF may not receive packets in the promiscuous mode |
4417 | Poll Mode Driver (PMD). |
4418 | |
4419 | |
4420 | -uio pci generic module bind failed in X710/XL710/XXV710 |
4421 | +uio_pci_generic module bind failed in X710/XL710/XXV710 |
4422 | ------------------------------------------------------- |
4423 | |
4424 | **Description**: |
4425 | @@ -671,7 +671,7 @@ virtio tx_burst() function cannot do TSO on shared packets |
4426 | Poll Mode Driver (PMD). |
4427 | |
4428 | |
4429 | -igb uio legacy mode can not be used in X710/XL710/XXV710 |
4430 | +igb_uio legacy mode can not be used in X710/XL710/XXV710 |
4431 | -------------------------------------------------------- |
4432 | |
4433 | **Description**: |
4434 | @@ -752,7 +752,7 @@ Netvsc driver and application restart |
4435 | handshake sequence with the host. |
4436 | |
4437 | **Resolution/Workaround**: |
4438 | - Either reboot the guest or remove and reinsert the hv_uio_generic module. |
4439 | + Either reboot the guest or remove and reinsert the uio_hv_generic module. |
4440 | |
4441 | **Affected Environment/Platform**: |
4442 | Linux Hyper-V. |
4443 | @@ -816,7 +816,7 @@ Kernel crash when hot-unplug igb_uio device while DPDK application is running |
4444 | |
4445 | **Reason**: |
4446 | When device is hot-unplugged, igb_uio driver will be removed which will destroy UIO resources. |
4447 | - Later trying to access any uio resource will cause kernel crash. |
4448 | + Later trying to access any UIO resource will cause kernel crash. |
4449 | |
4450 | **Resolution/Workaround**: |
4451 | If using DPDK for PCI HW hot-unplug, prefer to bind device with VFIO instead of IGB_UIO. |
4452 | diff --git a/doc/guides/rel_notes/release_16_11.rst b/doc/guides/rel_notes/release_16_11.rst |
4453 | index 92e0ec6..3cec914 100644 |
4454 | --- a/doc/guides/rel_notes/release_16_11.rst |
4455 | +++ b/doc/guides/rel_notes/release_16_11.rst |
4456 | @@ -77,7 +77,7 @@ New Features |
4457 | the current version, even 64 bytes packets take two slots with Virtio PMD on guest |
4458 | side. |
4459 | |
4460 | - The main impact is better performance for 0% packet loss use-cases, as it |
4461 | + The main impact is better performance for 0% packet loss use cases, as it |
4462 | behaves as if the virtqueue size was enlarged, so more packets can be buffered |
4463 | in the case of system perturbations. On the downside, small performance degradations |
4464 | were measured when running micro-benchmarks. |
4465 | diff --git a/doc/guides/rel_notes/release_19_08.rst b/doc/guides/rel_notes/release_19_08.rst |
4466 | index cbb27e8..d2baa82 100644 |
4467 | --- a/doc/guides/rel_notes/release_19_08.rst |
4468 | +++ b/doc/guides/rel_notes/release_19_08.rst |
4469 | @@ -151,7 +151,7 @@ New Features |
4470 | * Added multi-queue support to allow one af_xdp vdev with multiple netdev |
4471 | queues. |
4472 | * Enabled "need_wakeup" feature which can provide efficient support for the |
4473 | - usecase where the application and driver executing on the same core. |
4474 | + use case where the application and driver executing on the same core. |
4475 | |
4476 | * **Enabled infinite Rx in the PCAP PMD.** |
4477 | |
4478 | diff --git a/doc/guides/rel_notes/release_20_05.rst b/doc/guides/rel_notes/release_20_05.rst |
4479 | index 985c845..b59576a 100644 |
4480 | --- a/doc/guides/rel_notes/release_20_05.rst |
4481 | +++ b/doc/guides/rel_notes/release_20_05.rst |
4482 | @@ -121,6 +121,13 @@ New Features |
4483 | * Added flow counters to extended stats. |
4484 | * Added PCI function stats to extended stats. |
4485 | |
4486 | +* **Updated Cisco enic driver.** |
4487 | + |
4488 | + Updated Cisco enic driver GENEVE tunneling support: |
4489 | + |
4490 | + * Added support to control GENEVE tunneling via UCSM/CIMC and removed devarg. |
4491 | + * Added GENEVE port number configuration. |
4492 | + |
4493 | * **Updated Hisilicon hns3 driver.** |
4494 | |
4495 | Updated Hisilicon hns3 driver with new features and improvements, including: |
4496 | diff --git a/doc/guides/rel_notes/release_20_11.rst b/doc/guides/rel_notes/release_20_11.rst |
4497 | index e6a7f12..b2f76bc 100644 |
4498 | --- a/doc/guides/rel_notes/release_20_11.rst |
4499 | +++ b/doc/guides/rel_notes/release_20_11.rst |
4500 | @@ -1553,3 +1553,899 @@ Tested Platforms |
4501 | https://bugzilla.kernel.org/show_bug.cgi?id=207075 |
4502 | * vm2vm virtio-net connectivity between two vms randomly fails due |
4503 | to lost connection after vhost reconnect. |
4504 | + |
4505 | +20.11.2 Release Notes |
4506 | +--------------------- |
4507 | + |
4508 | +20.11.2 Fixes |
4509 | +~~~~~~~~~~~~~ |
4510 | + |
4511 | +* acl: fix build with GCC 11 |
4512 | +* app/bbdev: check memory allocation |
4513 | +* app/bbdev: fix HARQ error messages |
4514 | +* app/crypto-perf: check memory allocation |
4515 | +* app/eventdev: fix lcore parsing skipping last core |
4516 | +* app/eventdev: fix overflow in lcore list parsing |
4517 | +* app/eventdev: fix timeout accuracy |
4518 | +* app: fix exit messages |
4519 | +* app/flow-perf: fix encap/decap actions |
4520 | +* app/regex: fix usage text |
4521 | +* app/testpmd: check MAC address query |
4522 | +* app/testpmd: fix bitmap of link speeds when force speed |
4523 | +* app/testpmd: fix build with musl |
4524 | +* app/testpmd: fix DCB forwarding configuration |
4525 | +* app/testpmd: fix DCB re-configuration |
4526 | +* app/testpmd: fix division by zero on socket memory dump |
4527 | +* app/testpmd: fix forward lcores number for DCB |
4528 | +* app/testpmd: fix max queue number for Tx offloads |
4529 | +* app/testpmd: fix NVGRE encap configuration |
4530 | +* app/testpmd: fix segment number check |
4531 | +* app/testpmd: fix tunnel offload flows cleanup |
4532 | +* app/testpmd: fix Tx/Rx descriptor query error log |
4533 | +* app/testpmd: fix usage text |
4534 | +* app/testpmd: remove unnecessary UDP tunnel check |
4535 | +* app/testpmd: verify DCB config during forward config |
4536 | +* bpf: fix JSLT validation |
4537 | +* build: detect execinfo library on Linux |
4538 | +* build: exclude meson files from examples installation |
4539 | +* build: fix drivers selection without Python |
4540 | +* build: remove redundant _GNU_SOURCE definitions |
4541 | +* buildtools: fix all drivers disabled on Windows |
4542 | +* buildtools: fix build with busybox |
4543 | +* bus/dpaa: fix 64-bit arch detection |
4544 | +* bus/dpaa: fix build with musl |
4545 | +* bus/dpaa: fix statistics reading |
4546 | +* bus/fslmc: fix random portal hangs with qbman 5.0 |
4547 | +* bus/fslmc: remove unused debug macro |
4548 | +* bus/pci: fix Windows kernel driver categories |
4549 | +* bus/pci: skip probing some Windows NDIS devices |
4550 | +* bus/pci: support I/O port operations with musl |
4551 | +* ci: catch coredumps |
4552 | +* ci: enable v21 ABI checks |
4553 | +* ci: fix package installation in GitHub Actions |
4554 | +* ci: hook to GitHub Actions |
4555 | +* ci: ignore APT update failure in GitHub Actions |
4556 | +* common/dpaax/caamflib: fix build with musl |
4557 | +* common/dpaax: fix possible null pointer access |
4558 | +* common/iavf: fix duplicated offload bit |
4559 | +* common/mlx5: add DevX commands for queue counters |
4560 | +* common/mlx5: add DevX command to query WQ |
4561 | +* common/mlx5: add timestamp format support to DevX |
4562 | +* common/mlx5: fix DevX read output buffer size |
4563 | +* common/mlx5/linux: add glue function to query WQ |
4564 | +* common/qat: increase IM buffer size for GEN3 |
4565 | +* common/sfc_efx/base: add missing MCDI response length checks |
4566 | +* common/sfc_efx/base: fix dereferencing null pointer |
4567 | +* common/sfc_efx/base: fix indication of MAE encap support |
4568 | +* common/sfc_efx/base: limit reported MCDI response length |
4569 | +* common/sfc_efx: remove GENEVE from supported tunnels |
4570 | +* compress/qat: enable compression on GEN3 |
4571 | +* config/ppc: reduce number of cores and NUMA nodes |
4572 | +* crypto/dpaa2_sec: fix close and uninit functions |
4573 | +* crypto/dpaa_sec: affine the thread portal affinity |
4574 | +* crypto/octeontx: fix session-less mode |
4575 | +* crypto/qat: fix null authentication request |
4576 | +* crypto/qat: fix offset for out-of-place scatter-gather |
4577 | +* crypto/zuc: fix build with GCC 11 |
4578 | +* devtools: fix orphan symbols check with busybox |
4579 | +* doc: fix build with Sphinx 4 |
4580 | +* doc: fix formatting in testpmd guide |
4581 | +* doc: fix HiSilicon copyright syntax |
4582 | +* doc: fix matching versions in ice guide |
4583 | +* doc: fix multiport syntax in nfp guide |
4584 | +* doc: fix names of UIO drivers |
4585 | +* doc: fix runtime options in DLB2 guide |
4586 | +* doc: fix sphinx rtd theme import in GHA |
4587 | +* doc: remove PDF requirements |
4588 | +* doc: update recommended versions for i40e |
4589 | +* drivers: fix log level after loading |
4590 | +* drivers/net: fix FW version query |
4591 | +* eal: add C++ include guard for reciprocal header |
4592 | +* eal/arm64: fix platform register bit |
4593 | +* eal: fix build with musl |
4594 | +* eal: fix comment of OS-specific header files |
4595 | +* eal: fix evaluation of log level option |
4596 | +* eal: fix hang in control thread creation |
4597 | +* eal: fix leak in shared lib mode detection |
4598 | +* eal: fix memory mapping on 32-bit target |
4599 | +* eal: fix race in control thread creation |
4600 | +* eal: fix service core list parsing |
4601 | +* eal/windows: add missing SPDX license tag |
4602 | +* eal/windows: fix default thread priority |
4603 | +* eal/windows: fix return codes of pthread shim layer |
4604 | +* ethdev: add missing buses in device iterator |
4605 | +* ethdev: update flow item GTP QFI definition |
4606 | +* ethdev: validate input in EEPROM info |
4607 | +* ethdev: validate input in module EEPROM dump |
4608 | +* ethdev: validate input in register info |
4609 | +* eventdev: fix case to initiate crypto adapter service |
4610 | +* eventdev: fix memory leakage on thread creation failure |
4611 | +* eventdev: remove redundant thread name setting |
4612 | +* event/dlb2: remove references to deferred scheduling |
4613 | +* event/dlb: fix header includes for musl |
4614 | +* event/dpaa2: remove unused macros |
4615 | +* event/octeontx2: configure crypto adapter xaq pool |
4616 | +* event/octeontx2: fix crypto adapter queue pair operations |
4617 | +* event/octeontx2: fix device reconfigure for single slot |
4618 | +* event/octeontx2: fix XAQ pool reconfigure |
4619 | +* examples: add eal cleanup to examples |
4620 | +* examples/bbdev: fix header include for musl |
4621 | +* examples/ethtool: remove unused parsing |
4622 | +* examples: fix pkg-config override |
4623 | +* examples/flow_classify: fix NUMA check of port and core |
4624 | +* examples/l2fwd-cat: fix NUMA check of port and core |
4625 | +* examples/l2fwd-crypto: fix packet length while decryption |
4626 | +* examples/l2fwd-crypto: skip masked devices |
4627 | +* examples/l3fwd: fix LPM IPv6 subnets |
4628 | +* examples/l3fwd-power: fix empty poll thresholds |
4629 | +* examples/packet_ordering: fix port configuration |
4630 | +* examples/ptpclient: remove wrong comment |
4631 | +* examples/rxtx_callbacks: fix port ID format specifier |
4632 | +* examples/skeleton: fix NUMA check of port and core |
4633 | +* examples/timer: fix time interval |
4634 | +* examples/vhost: check memory table query |
4635 | +* examples/vhost_crypto: remove unused short option |
4636 | +* fbarray: fix log message on truncation error |
4637 | +* ipc: check malloc sync reply result |
4638 | +* ipc: use monotonic clock |
4639 | +* ip_frag: fix fragmenting IPv4 packet with header option |
4640 | +* kni: fix kernel deadlock with bifurcated device |
4641 | +* kni: refactor user request processing |
4642 | +* kni: support async user request |
4643 | +* license: fix typos |
4644 | +* log/linux: make default output stderr |
4645 | +* mbuf: check shared memory before dumping dynamic space |
4646 | +* mem: fix freeing segments in --huge-unlink mode |
4647 | +* net/af_xdp: fix error handling during Rx queue setup |
4648 | +* net/ark: fix leak on thread termination |
4649 | +* net/ark: refactor Rx buffer recovery |
4650 | +* net/ark: update packet director initial state |
4651 | +* net/bnx2x: fix build with GCC 11 |
4652 | +* net/bnx2x: fix build with GCC 11 |
4653 | +* net/bnxt: check kvargs parsing |
4654 | +* net/bnxt: check PCI config read |
4655 | +* net/bnxt: drop unused attribute |
4656 | +* net/bnxt: fix configuring LRO |
4657 | +* net/bnxt: fix device readiness check |
4658 | +* net/bnxt: fix double free in port start failure |
4659 | +* net/bnxt: fix dynamic VNIC count |
4660 | +* net/bnxt: fix firmware fatal error handling |
4661 | +* net/bnxt: fix FW readiness check during recovery |
4662 | +* net/bnxt: fix handling of null flow mask |
4663 | +* net/bnxt: fix health check alarm cancellation |
4664 | +* net/bnxt: fix HWRM and FW incompatibility handling |
4665 | +* net/bnxt: fix link state operations |
4666 | +* net/bnxt: fix memory allocation for command response |
4667 | +* net/bnxt: fix mismatched type comparison in MAC restore |
4668 | +* net/bnxt: fix mismatched type comparison in Rx |
4669 | +* net/bnxt: fix PCI write check |
4670 | +* net/bnxt: fix PTP support for Thor |
4671 | +* net/bnxt: fix queues per VNIC |
4672 | +* net/bnxt: fix resource cleanup |
4673 | +* net/bnxt: fix ring count calculation for Thor |
4674 | +* net/bnxt: fix RSS context cleanup |
4675 | +* net/bnxt: fix Rx and Tx timestamps |
4676 | +* net/bnxt: fix Rx buffer posting |
4677 | +* net/bnxt: fix Rx descriptor status |
4678 | +* net/bnxt: fix Rx queue count |
4679 | +* net/bnxt: fix Rx timestamp when FIFO pending bit is set |
4680 | +* net/bnxt: fix single PF per port check |
4681 | +* net/bnxt: fix timesync when PTP is not supported |
4682 | +* net/bnxt: fix Tx length hint threshold |
4683 | +* net/bnxt: fix Tx timestamp init |
4684 | +* net/bnxt: fix VF info allocation |
4685 | +* net/bnxt: fix VNIC configuration |
4686 | +* net/bnxt: fix xstats get |
4687 | +* net/bnxt: mute some failure logs |
4688 | +* net/bnxt: prevent device access in error state |
4689 | +* net/bnxt: refactor multi-queue Rx configuration |
4690 | +* net/bnxt: remove unnecessary forward declarations |
4691 | +* net/bnxt: remove unused function parameters |
4692 | +* net/bnxt: remove unused macro |
4693 | +* net/bnxt: use prefix on global function |
4694 | +* net/bonding: fix adding itself as its slave |
4695 | +* net/bonding: fix LACP system address check |
4696 | +* net/bonding: fix leak on remove |
4697 | +* net/bonding: fix socket ID check |
4698 | +* net/cxgbe: remove use of uint type |
4699 | +* net/dpaa2: fix getting link status |
4700 | +* net/dpaa: fix getting link status |
4701 | +* net/e1000/base: fix timeout for shadow RAM write |
4702 | +* net/e1000: fix flow error message object |
4703 | +* net/e1000: fix max Rx packet size |
4704 | +* net/e1000: fix Rx error counter for bad length |
4705 | +* net/e1000: remove MTU setting limitation |
4706 | +* net/ena/base: destroy multiple wait events |
4707 | +* net/ena/base: fix type conversions by explicit casting |
4708 | +* net/ena/base: improve style and comments |
4709 | +* net/ena: fix crash with unsupported device argument |
4710 | +* net/ena: fix parsing of large LLQ header device argument |
4711 | +* net/ena: fix releasing Tx ring mbufs |
4712 | +* net/ena: indicate Rx RSS hash presence |
4713 | +* net/ena: remove endian swap functions |
4714 | +* net/ena: report default ring size |
4715 | +* net/ena: switch memcpy to optimized version |
4716 | +* net/enic: enable GENEVE offload via VNIC configuration |
4717 | +* net/enic: fix flow initialization error handling |
4718 | +* net/failsafe: fix RSS hash offload reporting |
4719 | +* net/failsafe: report minimum and maximum MTU |
4720 | +* net: fix comment in IPv6 header |
4721 | +* net/hinic: fix crash in secondary process |
4722 | +* net/hns3: clear hash map on flow director clear |
4723 | +* net/hns3: delete redundant blank line |
4724 | +* net/hns3: fail setting FEC if one bit mode is not supported |
4725 | +* net/hns3: fix concurrent interrupt handling |
4726 | +* net/hns3: fix configure FEC when concurrent with reset |
4727 | +* net/hns3: fix copyright date |
4728 | +* net/hns3: fix DCB configuration |
4729 | +* net/hns3: fix DCB mode check |
4730 | +* net/hns3: fix DCB reconfiguration |
4731 | +* net/hns3: fix device capabilities for copper media type |
4732 | +* net/hns3: fix flow control exception |
4733 | +* net/hns3: fix flow control mode |
4734 | +* net/hns3: fix flow counter value |
4735 | +* net/hns3: fix flow director lock |
4736 | +* net/hns3: fix FLR miss detection |
4737 | +* net/hns3: fix handling link update |
4738 | +* net/hns3: fix HW buffer size on MTU update |
4739 | +* net/hns3: fix link speed when port is down |
4740 | +* net/hns3: fix link speed when VF device is down |
4741 | +* net/hns3: fix link status when port is stopped |
4742 | +* net/hns3: fix link update when failed to get link info |
4743 | +* net/hns3: fix log on flow director clear |
4744 | +* net/hns3: fix long task queue pairs reset time |
4745 | +* net/hns3: fix mailbox error message |
4746 | +* net/hns3: fix mailbox message ID in log |
4747 | +* net/hns3: fix mbuf leakage |
4748 | +* net/hns3: fix missing outer L4 UDP flag for VXLAN |
4749 | +* net/hns3: fix MTU config complexity |
4750 | +* net/hns3: fix ordering in secondary process initialization |
4751 | +* net/hns3: fix possible mismatched response of mailbox |
4752 | +* net/hns3: fix processing link status message on PF |
4753 | +* net/hns3: fix processing Tx offload flags |
4754 | +* net/hns3: fix querying flow director counter for out param |
4755 | +* net/hns3: fix queue state when concurrent with reset |
4756 | +* net/hns3: fix reporting undefined speed |
4757 | +* net/hns3: fix requested FC mode rollback |
4758 | +* net/hns3: fix rollback after setting PVID failure |
4759 | +* net/hns3: fix Rx/Tx queue numbers check |
4760 | +* net/hns3: fix secondary process request start/stop Rx/Tx |
4761 | +* net/hns3: fix setting default MAC address in bonding of VF |
4762 | +* net/hns3: fix some packet types |
4763 | +* net/hns3: fix time delta calculation |
4764 | +* net/hns3: fix timing in mailbox |
4765 | +* net/hns3: fix timing in resetting queues |
4766 | +* net/hns3: fix TM QCN error event report by MSI-X |
4767 | +* net/hns3: fix Tx checksum for UDP packets with special port |
4768 | +* net/hns3: fix typos on comments |
4769 | +* net/hns3: fix use of command status enumeration |
4770 | +* net/hns3: fix vector Rx burst limitation |
4771 | +* net/hns3: fix verification of NEON support |
4772 | +* net/hns3: fix VF alive notification after config restore |
4773 | +* net/hns3: fix VF handling LSC event in secondary process |
4774 | +* net/hns3: fix VF mailbox head field |
4775 | +* net/hns3: fix VMDq mode check |
4776 | +* net/hns3: increase readability in logs |
4777 | +* net/hns3: log time delta in decimal format |
4778 | +* net/hns3: remove meaningless packet buffer rollback |
4779 | +* net/hns3: remove read when enabling TM QCN error event |
4780 | +* net/hns3: remove redundant mailbox response |
4781 | +* net/hns3: remove unused macro |
4782 | +* net/hns3: remove unused macros |
4783 | +* net/hns3: remove unused macros |
4784 | +* net/hns3: remove unused mailbox macro and struct |
4785 | +* net/hns3: remove unused parameter markers |
4786 | +* net/hns3: remove unused VMDq code |
4787 | +* net/hns3: remove VLAN/QinQ ptypes from support list |
4788 | +* net/hns3: return error on PCI config write failure |
4789 | +* net/hns3: support get device version when dump register |
4790 | +* net/hns3: update HiSilicon copyright syntax |
4791 | +* net/i40e: announce request queue capability in PF |
4792 | +* net/i40e: fix flow director config after flow validate |
4793 | +* net/i40e: fix flow director for common pctypes |
4794 | +* net/i40e: fix input set field mask |
4795 | +* net/i40e: fix IPv4 fragment offload |
4796 | +* net/i40e: fix lack of MAC type when set MAC address |
4797 | +* net/i40e: fix negative VEB index |
4798 | +* net/i40e: fix parsing packet type for NEON |
4799 | +* net/i40e: fix primary MAC type when starting port |
4800 | +* net/i40e: fix VF RSS configuration |
4801 | +* net/i40e: remove redundant VSI check in Tx queue setup |
4802 | +* net/i40evf: fix packet loss for X722 |
4803 | +* net/iavf: fix crash in AVX512 |
4804 | +* net/iavf: fix lack of MAC type when set MAC address |
4805 | +* net/iavf: fix packet length parsing in AVX512 |
4806 | +* net/iavf: fix primary MAC type when starting port |
4807 | +* net/iavf: fix TSO max segment size |
4808 | +* net/iavf: fix VF to PF command failure handling |
4809 | +* net/iavf: fix wrong Tx context descriptor |
4810 | +* net/ice/base: cleanup filter list on error |
4811 | +* net/ice/base: fix build with GCC 11 |
4812 | +* net/ice/base: fix memory allocation for MAC addresses |
4813 | +* net/ice/base: fix memory allocation wrapper |
4814 | +* net/ice/base: fix payload indicator on ptype |
4815 | +* net/ice/base: fix uninitialized struct |
4816 | +* net/ice: check some functions return |
4817 | +* net/ice: fix crash in AVX512 |
4818 | +* net/ice: fix disabling promiscuous mode |
4819 | +* net/ice: fix fast mbuf freeing |
4820 | +* net/ice: fix illegal access when removing MAC filter |
4821 | +* net/ice: fix leak on thread termination |
4822 | +* net/ice: fix RSS for L2 packet |
4823 | +* net/ice: fix RSS hash update |
4824 | +* net/ice: fix VLAN filter with PF |
4825 | +* net/ice: fix VSI array out of bounds access |
4826 | +* net/igc: fix Rx error counter for bad length |
4827 | +* net/igc: fix Rx packet size |
4828 | +* net/igc: fix Rx RSS hash offload capability |
4829 | +* net/igc: fix speed configuration |
4830 | +* net/igc: remove MTU setting limitation |
4831 | +* net/igc: remove use of uint type |
4832 | +* net/ionic: fix completion type in lif init |
4833 | +* net/ixgbe: fix RSS RETA being reset after port start |
4834 | +* net/ixgbe: fix Rx errors statistics for UDP checksum |
4835 | +* net/kni: check init result |
4836 | +* net/kni: warn on stop failure |
4837 | +* net/memif: fix Tx bps statistics for zero-copy |
4838 | +* net/mlx4: fix buffer leakage on device close |
4839 | +* net/mlx4: fix leak when configured repeatedly |
4840 | +* net/mlx4: fix RSS action with null hash key |
4841 | +* net/mlx4: fix secondary process initialization ordering |
4842 | +* net/mlx5: fix counter offset detection |
4843 | +* net/mlx5: fix drop action for Direct Rules/Verbs |
4844 | +* net/mlx5: fix external buffer pool registration for Rx queue |
4845 | +* net/mlx5: fix flow actions index in cache |
4846 | +* net/mlx5: fix flow age event triggering |
4847 | +* net/mlx5: fix hashed list size for tunnel flow groups |
4848 | +* net/mlx5: fix leak when configured repeatedly |
4849 | +* net/mlx5: fix loopback for Direct Verbs queue |
4850 | +* net/mlx5: fix metadata item validation for ingress flows |
4851 | +* net/mlx5: fix missing shared RSS hash types |
4852 | +* net/mlx5: fix probing device in legacy bonding mode |
4853 | +* net/mlx5: fix receiving queue timestamp format |
4854 | +* net/mlx5: fix redundant flow after RSS expansion |
4855 | +* net/mlx5: fix resource release for mirror flow |
4856 | +* net/mlx5: fix RSS flow item expansion for GRE key |
4857 | +* net/mlx5: fix RSS flow item expansion for NVGRE |
4858 | +* net/mlx5: fix Rx metadata leftovers |
4859 | +* net/mlx5: fix Rx segmented packets on mbuf starvation |
4860 | +* net/mlx5: fix secondary process initialization ordering |
4861 | +* net/mlx5: fix shared inner RSS |
4862 | +* net/mlx5: fix tunnel offload private items location |
4863 | +* net/mlx5: fix UAR allocation diagnostics messages |
4864 | +* net/mlx5: fix using flow tunnel before null check |
4865 | +* net/mlx5/linux: fix firmware version |
4866 | +* net/mlx5: remove drop queue function prototypes |
4867 | +* net/mlx5: support RSS expansion for IPv6 GRE |
4868 | +* net/mlx5: support timestamp format |
4869 | +* net/nfp: fix reporting of RSS capabilities |
4870 | +* net/octeontx2: fix VLAN filter |
4871 | +* net/pcap: fix file descriptor leak on close |
4872 | +* net/pcap: fix format string |
4873 | +* net/qede: accept bigger RSS table |
4874 | +* net/qede: reduce log verbosity |
4875 | +* net/sfc: fix buffer size for flow parse |
4876 | +* net/sfc: fix error path inconsistency |
4877 | +* net/sfc: fix mark support in EF100 native Rx datapath |
4878 | +* net/sfc: fix outer rule rollback on error |
4879 | +* net/tap: check ioctl on restore |
4880 | +* net/tap: fix build with GCC 11 |
4881 | +* net/tap: fix interrupt vector array size |
4882 | +* net/txgbe: fix QinQ strip |
4883 | +* net/txgbe: fix Rx missed packet counter |
4884 | +* net/txgbe: remove unused functions |
4885 | +* net/txgbe: update packet type |
4886 | +* net/vhost: restore pseudo TSO support |
4887 | +* net/virtio: fix getline memory leakage |
4888 | +* net/virtio: fix interrupt unregistering for listening socket |
4889 | +* net/virtio: fix vectorized Rx queue rearm |
4890 | +* pipeline: fix endianness conversions |
4891 | +* pipeline: fix instruction translation |
4892 | +* power: do not skip saving original P-state governor |
4893 | +* power: fix sanity checks for guest channel read |
4894 | +* power: remove duplicated symbols from map file |
4895 | +* power: save original ACPI governor always |
4896 | +* raw/ifpga: fix device name format |
4897 | +* raw/ioat: fix script for configuring small number of queues |
4898 | +* raw/ntb: check memory allocations |
4899 | +* raw/ntb: check SPAD user index |
4900 | +* raw/octeontx2_dma: assign PCI device in DPI VF |
4901 | +* raw/skeleton: add missing check after setting attribute |
4902 | +* regex/mlx5: support timestamp format |
4903 | +* regex/octeontx2: remove unused include directory |
4904 | +* sched: fix traffic class oversubscription parameter |
4905 | +* service: clean references to removed symbol |
4906 | +* stack: allow lock-free only on relevant architectures |
4907 | +* table: fix actions with different data size |
4908 | +* telemetry: fix race on callbacks list |
4909 | +* test/bpf: fix error message |
4910 | +* test: check flow classifier creation |
4911 | +* test: check thread creation |
4912 | +* test/cmdline: fix inputs array |
4913 | +* test/cmdline: silence clang 12 warning |
4914 | +* test/crypto: copy offset data to OOP destination buffer |
4915 | +* test/crypto: fix auth-cipher compare length in OOP |
4916 | +* test/crypto: fix build with GCC 11 |
4917 | +* test/crypto: fix return value of a skipped test |
4918 | +* test/distributor: fix burst flush on worker quit |
4919 | +* test/distributor: fix worker notification in burst mode |
4920 | +* test/event: fix timeout accuracy |
4921 | +* test: fix autotest handling of skipped tests |
4922 | +* test: fix build with GCC 11 |
4923 | +* test: fix division by zero |
4924 | +* test: fix TCP header initialization |
4925 | +* test/kni: check init result |
4926 | +* test/kni: fix a comment |
4927 | +* test/mem: fix page size for external memory |
4928 | +* test/mempool: fix object initializer |
4929 | +* test/power: add delay before checking CPU frequency |
4930 | +* test/power: add turbo mode to frequency check |
4931 | +* test/power: fix CPU frequency check |
4932 | +* test/power: fix low frequency test when turbo enabled |
4933 | +* test/power: fix turbo test |
4934 | +* test/power: round CPU frequency to check |
4935 | +* test: proceed if timer subsystem already initialized |
4936 | +* test/table: fix build with GCC 11 |
4937 | +* test/timer: check memzone allocation |
4938 | +* test/trace: fix race on collected perf data |
4939 | +* vdpa/ifc: check PCI config read |
4940 | +* vdpa/mlx5: fix device unplug |
4941 | +* vdpa/mlx5: fix virtq cleaning |
4942 | +* vdpa/mlx5: support timestamp format |
4943 | +* version: 20.11.2-rc1 |
4944 | +* version: 20.11.2-rc2 |
4945 | +* vfio: do not merge contiguous areas |
4946 | +* vfio: fix API description |
4947 | +* vfio: fix DMA mapping granularity for IOVA as VA |
4948 | +* vfio: fix duplicated user mem map |
4949 | +* vhost: fix batch dequeue potential buffer overflow |
4950 | +* vhost: fix initialization of async temporary header |
4951 | +* vhost: fix initialization of temporary header |
4952 | +* vhost: fix offload flags in Rx path |
4953 | +* vhost: fix packed ring potential buffer overflow |
4954 | +* vhost: fix queue initialization |
4955 | +* vhost: fix redundant vring status change notification |
4956 | +* vhost: fix split ring potential buffer overflow |
4957 | + |
4958 | +20.11.2 Validation |
4959 | +~~~~~~~~~~~~~~~~~~ |
4960 | + |
4961 | +* Intel(R) Testing |
4962 | + |
4963 | + * Basic Intel(R) NIC testing |
4964 | + |
4965 | + * PF(i40e, ixgbe, ice) |
4966 | + * VF(i40e, ixgbe, ice) |
4967 | + * Compile testing |
4968 | + * Intel NIC single core/NIC performance |
4969 | + |
4970 | + * Basic cryptodev and virtio testing |
4971 | + |
4972 | + * Virtio function and performance |
4973 | + * Cryptodev function and performance |
4974 | + |
4975 | +* Nvidia(R) Testing |
4976 | + |
4977 | + * Basic functionality with testpmd |
4978 | + |
4979 | + * Tx/Rx |
4980 | + * xstats |
4981 | + * Timestamps |
4982 | + * Link status |
4983 | + * RTE flow and flow_director |
4984 | + * RSS |
4985 | + * VLAN stripping and insertion |
4986 | + * Checksum/TSO |
4987 | + * ptype |
4988 | + * link_status_interrupt example application |
4989 | + * l3fwd-power example application |
4990 | + * Multi-process example applications |
4991 | + * Hardware LRO |
4992 | + |
4993 | + * Build tests |
4994 | + |
4995 | + * Ubuntu 20.04.2 with MLNX_OFED_LINUX-5.3-1.0.0.1. |
4996 | + * Ubuntu 20.04.2 with rdma-core master (a66e2a5). |
4997 | + * Ubuntu 20.04.2 with rdma-core v28.0. |
4998 | + * Ubuntu 18.04.5 with rdma-core v17.1. |
4999 | + * Ubuntu 18.04.5 with rdma-core master (a66e2a5) (i386). |
5000 | + * Ubuntu 16.04.7 with rdma-core v22.7. |
The diff has been truncated for viewing.
PPA: https:/ /launchpad. net/~ci- train-ppa- service/ +archive/ ubuntu/ 4666/+packages