Merge ~paelzer/ubuntu/+source/dpdk:merge-19.11.3-FOCAL into ubuntu/+source/dpdk:ubuntu/focal-devel
- Git
- lp:~paelzer/ubuntu/+source/dpdk
- merge-19.11.3-FOCAL
- Merge into ubuntu/focal-devel
Status: | Merged | ||||
---|---|---|---|---|---|
Approved by: | Christian Ehrhardt | ||||
Approved revision: | be29c18692caf33045c3a0369b9785028e5d2f4e | ||||
Merged at revision: | be29c18692caf33045c3a0369b9785028e5d2f4e | ||||
Proposed branch: | ~paelzer/ubuntu/+source/dpdk:merge-19.11.3-FOCAL | ||||
Merge into: | ubuntu/+source/dpdk:ubuntu/focal-devel | ||||
Diff against target: |
23242 lines (+7191/-2906) 487 files modified
.travis.yml (+1/-1) VERSION (+1/-1) app/pdump/main.c (+1/-1) app/test-acl/main.c (+1/-1) app/test-crypto-perf/main.c (+2/-1) app/test-eventdev/test_pipeline_common.c (+7/-3) app/test-pipeline/config.c (+0/-2) app/test-pmd/cmdline.c (+5/-3) app/test-pmd/cmdline_flow.c (+5/-3) app/test-pmd/config.c (+25/-1) app/test-pmd/csumonly.c (+7/-6) app/test-pmd/parameters.c (+1/-1) app/test-pmd/testpmd.c (+3/-1) app/test/meson.build (+13/-17) app/test/test.h (+0/-2) app/test/test_acl.c (+12/-10) app/test/test_cryptodev.c (+4/-9) app/test/test_cryptodev_blockcipher.c (+1/-1) app/test/test_cryptodev_hash_test_vectors.h (+10/-0) app/test/test_fib_perf.c (+1/-1) app/test/test_flow_classify.c (+1/-1) app/test/test_hash.c (+5/-2) app/test/test_ipsec.c (+30/-3) app/test/test_kvargs.c (+37/-3) app/test/test_lpm_perf.c (+1/-1) app/test/test_malloc.c (+12/-0) app/test/test_mbuf.c (+1/-1) app/test/test_pmd_perf.c (+1/-1) app/test/test_table_pipeline.c (+7/-5) buildtools/options-ibverbs-static.sh (+9/-2) config/common_base (+0/-1) config/meson.build (+26/-4) debian/changelog (+26/-0) debian/patches/19.11-remove-zero-copy-and-client-mode-restriction.patch (+56/-0) debian/patches/series (+1/-6) dev/null (+0/-80) devtools/check-symbol-change.sh (+4/-6) devtools/checkpatches.sh (+8/-0) doc/api/doxy-api-index.md (+1/-1) doc/api/doxy-api.conf.in (+1/-0) doc/guides/conf.py (+17/-5) doc/guides/contributing/abi_policy.rst (+10/-11) doc/guides/contributing/abi_versioning.rst (+87/-43) doc/guides/contributing/documentation.rst (+6/-6) doc/guides/contributing/patches.rst (+10/-10) doc/guides/contributing/stable.rst (+4/-4) doc/guides/contributing/vulnerability.rst (+3/-3) doc/guides/cryptodevs/aesni_gcm.rst (+13/-0) doc/guides/cryptodevs/aesni_mb.rst (+13/-0) doc/guides/cryptodevs/features/qat.ini (+5/-0) doc/guides/cryptodevs/qat.rst (+5/-0) doc/guides/eventdevs/index.rst (+1/-1) doc/guides/freebsd_gsg/install_from_ports.rst (+1/-1) doc/guides/linux_gsg/eal_args.include.rst (+1/-1) doc/guides/linux_gsg/nic_perf_intel_platform.rst (+1/-1) doc/guides/nics/enic.rst (+1/-1) doc/guides/nics/fail_safe.rst (+1/-1) doc/guides/nics/features/hns3.ini (+1/-0) doc/guides/nics/features/hns3_vf.ini (+1/-0) doc/guides/nics/features/i40e.ini (+0/-1) doc/guides/nics/features/iavf.ini (+0/-1) doc/guides/nics/features/ice.ini (+0/-1) doc/guides/nics/features/igb.ini (+1/-0) doc/guides/nics/features/ixgbe.ini (+1/-0) doc/guides/nics/hns3.rst (+1/-0) doc/guides/nics/i40e.rst (+9/-0) doc/guides/nics/ice.rst (+0/-4) doc/guides/nics/mlx5.rst (+46/-2) doc/guides/prog_guide/cryptodev_lib.rst (+1/-1) doc/guides/prog_guide/lto.rst (+1/-1) doc/guides/rel_notes/release_19_11.rst (+575/-0) doc/guides/sample_app_ug/l2_forward_event.rst (+0/-8) doc/guides/sample_app_ug/l2_forward_real_virtual.rst (+0/-9) doc/guides/sample_app_ug/link_status_intr.rst (+0/-7) doc/guides/sample_app_ug/multi_process.rst (+1/-1) doc/guides/testpmd_app_ug/testpmd_funcs.rst (+1/-1) doc/guides/windows_gsg/build_dpdk.rst (+42/-9) drivers/Makefile (+1/-1) drivers/baseband/turbo_sw/bbdev_turbo_software.c (+1/-1) drivers/bus/fslmc/qbman/qbman_debug.c (+5/-4) drivers/bus/ifpga/ifpga_bus.c (+1/-0) drivers/bus/ifpga/rte_bus_ifpga.h (+1/-0) drivers/bus/pci/linux/pci.c (+5/-0) drivers/bus/pci/pci_common.c (+3/-3) drivers/bus/pci/pci_common_uio.c (+1/-0) drivers/bus/pci/private.h (+0/-10) drivers/bus/vmbus/linux/vmbus_uio.c (+1/-1) drivers/bus/vmbus/vmbus_common.c (+1/-1) drivers/common/octeontx/octeontx_mbox.c (+9/-8) drivers/common/octeontx2/hw/otx2_npc.h (+2/-2) drivers/compress/octeontx/otx_zip_pmd.c (+1/-1) drivers/compress/zlib/zlib_pmd.c (+2/-0) drivers/compress/zlib/zlib_pmd_private.h (+1/-1) drivers/crypto/aesni_gcm/Makefile (+2/-1) drivers/crypto/aesni_gcm/aesni_gcm_pmd.c (+2/-0) drivers/crypto/aesni_gcm/aesni_gcm_pmd_private.h (+1/-1) drivers/crypto/aesni_mb/Makefile (+2/-1) drivers/crypto/aesni_mb/aesni_mb_pmd_private.h (+1/-1) drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c (+2/-0) drivers/crypto/caam_jr/Makefile (+7/-0) drivers/crypto/caam_jr/caam_jr.c (+19/-4) drivers/crypto/caam_jr/caam_jr_hw_specific.h (+1/-1) drivers/crypto/caam_jr/caam_jr_pvt.h (+5/-4) drivers/crypto/caam_jr/caam_jr_uio.c (+22/-12) drivers/crypto/caam_jr/meson.build (+5/-0) drivers/crypto/ccp/ccp_dev.c (+1/-1) drivers/crypto/dpaa2_sec/Makefile (+7/-0) drivers/crypto/dpaa2_sec/meson.build (+5/-0) drivers/crypto/dpaa_sec/Makefile (+7/-0) drivers/crypto/dpaa_sec/meson.build (+5/-0) drivers/crypto/kasumi/kasumi_pmd_private.h (+2/-2) drivers/crypto/kasumi/rte_kasumi_pmd.c (+1/-0) drivers/crypto/mvsam/mrvl_pmd_private.h (+1/-1) drivers/crypto/mvsam/rte_mrvl_pmd.c (+1/-0) drivers/crypto/nitrox/nitrox_csr.h (+10/-10) drivers/crypto/nitrox/nitrox_sym.c (+2/-1) drivers/crypto/octeontx2/otx2_cryptodev.c (+2/-0) drivers/crypto/octeontx2/otx2_cryptodev.h (+1/-1) drivers/crypto/octeontx2/otx2_cryptodev_ops.h (+1/-1) drivers/crypto/openssl/openssl_pmd_private.h (+1/-1) drivers/crypto/openssl/rte_openssl_pmd.c (+24/-0) drivers/crypto/qat/qat_sym_capabilities.h (+105/-0) drivers/crypto/qat/qat_sym_session.c (+110/-12) drivers/crypto/qat/qat_sym_session.h (+1/-0) drivers/crypto/snow3g/rte_snow3g_pmd.c (+1/-0) drivers/crypto/snow3g/snow3g_pmd_private.h (+1/-1) drivers/crypto/zuc/rte_zuc_pmd.c (+1/-0) drivers/crypto/zuc/zuc_pmd_private.h (+2/-2) drivers/event/dpaa2/dpaa2_eventdev.c (+1/-1) drivers/event/dsw/dsw_event.c (+4/-11) drivers/event/octeontx2/otx2_evdev_adptr.c (+2/-2) drivers/event/octeontx2/otx2_evdev_stats.h (+1/-1) drivers/mempool/dpaa2/meson.build (+2/-0) drivers/mempool/octeontx2/otx2_mempool_ops.c (+1/-1) drivers/net/avp/avp_ethdev.c (+1/-1) drivers/net/bnxt/bnxt.h (+9/-4) drivers/net/bnxt/bnxt_ethdev.c (+37/-21) drivers/net/bnxt/bnxt_hwrm.c (+13/-16) drivers/net/bnxt/bnxt_ring.c (+1/-1) drivers/net/bnxt/bnxt_rxq.c (+1/-3) drivers/net/bnxt/bnxt_rxr.c (+21/-15) drivers/net/bnxt/bnxt_rxtx_vec_sse.c (+6/-1) drivers/net/cxgbe/cxgbe_flow.c (+1/-1) drivers/net/dpaa/dpaa_ethdev.c (+8/-15) drivers/net/dpaa2/dpaa2_ethdev.c (+3/-5) drivers/net/dpaa2/dpaa2_flow.c (+2/-2) drivers/net/dpaa2/dpaa2_mux.c (+1/-1) drivers/net/e1000/em_ethdev.c (+1/-1) drivers/net/e1000/igb_ethdev.c (+2/-2) drivers/net/ena/base/ena_com.c (+19/-11) drivers/net/ena/base/ena_com.h (+16/-16) drivers/net/ena/base/ena_plat_dpdk.h (+24/-15) drivers/net/ena/ena_ethdev.c (+3/-4) drivers/net/enetc/base/enetc_hw.h (+2/-1) drivers/net/enetc/enetc_ethdev.c (+4/-1) drivers/net/enic/enic_fm_flow.c (+29/-34) drivers/net/failsafe/failsafe.c (+1/-0) drivers/net/failsafe/failsafe_intr.c (+1/-1) drivers/net/failsafe/failsafe_ops.c (+1/-1) drivers/net/failsafe/failsafe_private.h (+8/-0) drivers/net/hinic/base/hinic_compat.h (+10/-7) drivers/net/hinic/base/hinic_pmd_api_cmd.c (+3/-4) drivers/net/hinic/base/hinic_pmd_cmdq.c (+9/-3) drivers/net/hinic/base/hinic_pmd_cmdq.h (+1/-0) drivers/net/hinic/base/hinic_pmd_eqs.c (+1/-1) drivers/net/hinic/base/hinic_pmd_hwdev.c (+25/-24) drivers/net/hinic/base/hinic_pmd_hwdev.h (+0/-1) drivers/net/hinic/base/hinic_pmd_mbox.c (+3/-5) drivers/net/hinic/base/hinic_pmd_mgmt.c (+21/-17) drivers/net/hinic/base/hinic_pmd_mgmt.h (+2/-0) drivers/net/hinic/base/hinic_pmd_nicio.c (+15/-5) drivers/net/hinic/base/hinic_pmd_wq.c (+6/-5) drivers/net/hinic/base/hinic_pmd_wq.h (+1/-1) drivers/net/hinic/hinic_pmd_ethdev.c (+7/-17) drivers/net/hinic/hinic_pmd_rx.c (+56/-17) drivers/net/hinic/hinic_pmd_rx.h (+4/-1) drivers/net/hinic/hinic_pmd_tx.c (+16/-8) drivers/net/hinic/hinic_pmd_tx.h (+3/-1) drivers/net/hns3/hns3_cmd.c (+18/-6) drivers/net/hns3/hns3_cmd.h (+47/-2) drivers/net/hns3/hns3_dcb.c (+74/-29) drivers/net/hns3/hns3_dcb.h (+3/-1) drivers/net/hns3/hns3_ethdev.c (+492/-79) drivers/net/hns3/hns3_ethdev.h (+16/-2) drivers/net/hns3/hns3_ethdev_vf.c (+382/-49) drivers/net/hns3/hns3_fdir.c (+21/-0) drivers/net/hns3/hns3_flow.c (+25/-3) drivers/net/hns3/hns3_intr.c (+2/-0) drivers/net/hns3/hns3_mbx.c (+8/-4) drivers/net/hns3/hns3_mbx.h (+13/-0) drivers/net/hns3/hns3_regs.h (+10/-0) drivers/net/hns3/hns3_rss.c (+24/-11) drivers/net/hns3/hns3_rss.h (+2/-0) drivers/net/hns3/hns3_rxtx.c (+753/-170) drivers/net/hns3/hns3_rxtx.h (+20/-2) drivers/net/hns3/hns3_stats.c (+17/-7) drivers/net/i40e/base/README (+1/-1) drivers/net/i40e/base/i40e_adminq.c (+1/-1) drivers/net/i40e/base/i40e_adminq.h (+1/-1) drivers/net/i40e/base/i40e_adminq_cmd.h (+1/-1) drivers/net/i40e/base/i40e_alloc.h (+1/-1) drivers/net/i40e/base/i40e_common.c (+1/-1) drivers/net/i40e/base/i40e_dcb.c (+1/-1) drivers/net/i40e/base/i40e_dcb.h (+1/-1) drivers/net/i40e/base/i40e_devids.h (+1/-1) drivers/net/i40e/base/i40e_diag.c (+1/-1) drivers/net/i40e/base/i40e_diag.h (+1/-1) drivers/net/i40e/base/i40e_hmc.c (+1/-1) drivers/net/i40e/base/i40e_hmc.h (+1/-1) drivers/net/i40e/base/i40e_lan_hmc.c (+1/-1) drivers/net/i40e/base/i40e_lan_hmc.h (+1/-1) drivers/net/i40e/base/i40e_nvm.c (+1/-1) drivers/net/i40e/base/i40e_osdep.h (+1/-1) drivers/net/i40e/base/i40e_prototype.h (+1/-1) drivers/net/i40e/base/i40e_register.h (+1/-1) drivers/net/i40e/base/i40e_status.h (+1/-1) drivers/net/i40e/base/i40e_type.h (+1/-1) drivers/net/i40e/base/meson.build (+1/-1) drivers/net/i40e/base/virtchnl.h (+1/-1) drivers/net/i40e/i40e_ethdev.c (+35/-96) drivers/net/i40e/i40e_ethdev_vf.c (+0/-2) drivers/net/i40e/i40e_fdir.c (+2/-2) drivers/net/i40e/i40e_flow.c (+40/-18) drivers/net/i40e/i40e_rxtx.c (+30/-1) drivers/net/i40e/i40e_rxtx_vec_altivec.c (+1/-1) drivers/net/i40e/i40e_rxtx_vec_common.h (+1/-0) drivers/net/i40e/i40e_rxtx_vec_neon.c (+4/-2) drivers/net/iavf/base/README (+1/-1) drivers/net/iavf/base/iavf_adminq.c (+1/-1) drivers/net/iavf/base/iavf_adminq.h (+1/-1) drivers/net/iavf/base/iavf_alloc.h (+1/-1) drivers/net/iavf/base/iavf_common.c (+1/-1) drivers/net/iavf/base/iavf_devids.h (+1/-1) drivers/net/iavf/base/iavf_osdep.h (+1/-1) drivers/net/iavf/base/iavf_status.h (+1/-1) drivers/net/iavf/base/virtchnl.h (+1/-1) drivers/net/iavf/iavf_ethdev.c (+1/-1) drivers/net/iavf/iavf_rxtx_vec_common.h (+1/-0) drivers/net/iavf/iavf_vchnl.c (+40/-1) drivers/net/ice/base/ice_adminq_cmd.h (+5/-7) drivers/net/ice/base/ice_alloc.h (+1/-1) drivers/net/ice/base/ice_bitops.h (+1/-1) drivers/net/ice/base/ice_common.c (+3/-5) drivers/net/ice/base/ice_common.h (+1/-1) drivers/net/ice/base/ice_controlq.c (+1/-1) drivers/net/ice/base/ice_controlq.h (+1/-1) drivers/net/ice/base/ice_dcb.c (+1/-1) drivers/net/ice/base/ice_dcb.h (+1/-1) drivers/net/ice/base/ice_devids.h (+1/-1) drivers/net/ice/base/ice_fdir.c (+1/-1) drivers/net/ice/base/ice_fdir.h (+4/-4) drivers/net/ice/base/ice_flex_pipe.c (+22/-32) drivers/net/ice/base/ice_flex_pipe.h (+2/-2) drivers/net/ice/base/ice_flex_type.h (+1/-1) drivers/net/ice/base/ice_flow.c (+33/-18) drivers/net/ice/base/ice_flow.h (+3/-1) drivers/net/ice/base/ice_hw_autogen.h (+1/-1) drivers/net/ice/base/ice_lan_tx_rx.h (+1/-1) drivers/net/ice/base/ice_nvm.c (+1/-1) drivers/net/ice/base/ice_nvm.h (+1/-1) drivers/net/ice/base/ice_osdep.h (+16/-2) drivers/net/ice/base/ice_protocol_type.h (+1/-1) drivers/net/ice/base/ice_sbq_cmd.h (+1/-1) drivers/net/ice/base/ice_sched.c (+52/-9) drivers/net/ice/base/ice_sched.h (+7/-2) drivers/net/ice/base/ice_status.h (+1/-1) drivers/net/ice/base/ice_switch.c (+8/-18) drivers/net/ice/base/ice_switch.h (+1/-1) drivers/net/ice/base/ice_type.h (+4/-2) drivers/net/ice/base/meson.build (+1/-1) drivers/net/ice/ice_ethdev.c (+26/-24) drivers/net/ice/ice_fdir_filter.c (+15/-2) drivers/net/ice/ice_generic_flow.c (+10/-21) drivers/net/ice/ice_hash.c (+18/-9) drivers/net/ice/ice_rxtx.c (+10/-51) drivers/net/ice/ice_rxtx_vec_common.h (+1/-0) drivers/net/ice/ice_switch_filter.c (+65/-6) drivers/net/ipn3ke/ipn3ke_representor.c (+2/-1) drivers/net/ixgbe/base/README (+1/-1) drivers/net/ixgbe/base/ixgbe_82598.c (+1/-1) drivers/net/ixgbe/base/ixgbe_82598.h (+1/-1) drivers/net/ixgbe/base/ixgbe_82599.c (+1/-1) drivers/net/ixgbe/base/ixgbe_82599.h (+1/-1) drivers/net/ixgbe/base/ixgbe_api.c (+1/-1) drivers/net/ixgbe/base/ixgbe_api.h (+1/-1) drivers/net/ixgbe/base/ixgbe_common.c (+1/-1) drivers/net/ixgbe/base/ixgbe_common.h (+1/-1) drivers/net/ixgbe/base/ixgbe_dcb.c (+1/-1) drivers/net/ixgbe/base/ixgbe_dcb.h (+1/-1) drivers/net/ixgbe/base/ixgbe_dcb_82598.c (+1/-1) drivers/net/ixgbe/base/ixgbe_dcb_82598.h (+1/-1) drivers/net/ixgbe/base/ixgbe_dcb_82599.c (+1/-1) drivers/net/ixgbe/base/ixgbe_dcb_82599.h (+1/-1) drivers/net/ixgbe/base/ixgbe_hv_vf.c (+1/-1) drivers/net/ixgbe/base/ixgbe_hv_vf.h (+1/-1) drivers/net/ixgbe/base/ixgbe_mbx.c (+1/-1) drivers/net/ixgbe/base/ixgbe_mbx.h (+1/-1) drivers/net/ixgbe/base/ixgbe_osdep.h (+1/-1) drivers/net/ixgbe/base/ixgbe_phy.c (+1/-1) drivers/net/ixgbe/base/ixgbe_phy.h (+1/-1) drivers/net/ixgbe/base/ixgbe_type.h (+1/-1) drivers/net/ixgbe/base/ixgbe_vf.c (+1/-1) drivers/net/ixgbe/base/ixgbe_vf.h (+1/-1) drivers/net/ixgbe/base/ixgbe_x540.c (+1/-1) drivers/net/ixgbe/base/ixgbe_x540.h (+1/-1) drivers/net/ixgbe/base/ixgbe_x550.c (+1/-1) drivers/net/ixgbe/base/ixgbe_x550.h (+1/-1) drivers/net/ixgbe/base/meson.build (+1/-1) drivers/net/ixgbe/ixgbe_ethdev.c (+43/-17) drivers/net/ixgbe/rte_pmd_ixgbe.c (+6/-0) drivers/net/memif/memif_socket.c (+8/-6) drivers/net/memif/rte_eth_memif.c (+1/-1) drivers/net/mlx4/mlx4.c (+4/-0) drivers/net/mlx4/mlx4_flow.c (+6/-5) drivers/net/mlx4/mlx4_glue.h (+1/-1) drivers/net/mlx4/mlx4_rxtx.h (+1/-1) drivers/net/mlx5/Makefile (+5/-0) drivers/net/mlx5/meson.build (+2/-0) drivers/net/mlx5/mlx5.c (+35/-11) drivers/net/mlx5/mlx5.h (+6/-7) drivers/net/mlx5/mlx5_defs.h (+3/-0) drivers/net/mlx5/mlx5_devx_cmds.c (+3/-6) drivers/net/mlx5/mlx5_flow.c (+97/-74) drivers/net/mlx5/mlx5_flow.h (+27/-5) drivers/net/mlx5/mlx5_flow_dv.c (+338/-121) drivers/net/mlx5/mlx5_flow_verbs.c (+25/-3) drivers/net/mlx5/mlx5_glue.c (+1/-1) drivers/net/mlx5/mlx5_glue.h (+1/-1) drivers/net/mlx5/mlx5_nl.c (+19/-8) drivers/net/mlx5/mlx5_prm.h (+3/-1) drivers/net/mlx5/mlx5_rxq.c (+46/-34) drivers/net/mlx5/mlx5_rxtx.c (+86/-66) drivers/net/mlx5/mlx5_rxtx.h (+4/-2) drivers/net/mlx5/mlx5_rxtx_vec_altivec.h (+23/-4) drivers/net/mlx5/mlx5_rxtx_vec_neon.h (+34/-13) drivers/net/mlx5/mlx5_rxtx_vec_sse.h (+34/-14) drivers/net/mlx5/mlx5_stats.c (+62/-16) drivers/net/mlx5/mlx5_trigger.c (+2/-0) drivers/net/mlx5/mlx5_txq.c (+1/-1) drivers/net/mlx5/mlx5_utils.h (+0/-10) drivers/net/mvneta/mvneta_ethdev.c (+1/-1) drivers/net/mvpp2/mrvl_flow.c (+2/-2) drivers/net/netvsc/hn_ethdev.c (+32/-22) drivers/net/netvsc/hn_nvs.c (+39/-2) drivers/net/netvsc/hn_nvs.h (+1/-1) drivers/net/netvsc/hn_rxtx.c (+169/-112) drivers/net/netvsc/hn_var.h (+7/-5) drivers/net/netvsc/hn_vf.c (+13/-0) drivers/net/nfp/nfp_net.c (+13/-12) drivers/net/null/rte_eth_null.c (+13/-16) drivers/net/octeontx/base/meson.build (+4/-1) drivers/net/octeontx/octeontx_ethdev.c (+1/-0) drivers/net/octeontx2/otx2_ethdev.c (+16/-8) drivers/net/octeontx2/otx2_ethdev.h (+3/-0) drivers/net/octeontx2/otx2_ethdev_irq.c (+32/-6) drivers/net/octeontx2/otx2_link.c (+37/-12) drivers/net/octeontx2/otx2_rss.c (+1/-1) drivers/net/pfe/pfe_ethdev.c (+3/-4) drivers/net/qede/qede_ethdev.c (+23/-12) drivers/net/qede/qede_rxtx.c (+3/-1) drivers/net/ring/rte_eth_ring.c (+15/-14) drivers/net/sfc/base/ef10_evb.c (+12/-16) drivers/net/sfc/base/ef10_filter.c (+414/-148) drivers/net/sfc/base/ef10_impl.h (+3/-1) drivers/net/sfc/base/ef10_nic.c (+1/-3) drivers/net/sfc/base/ef10_proxy.c (+2/-6) drivers/net/sfc/base/efx.h (+8/-5) drivers/net/sfc/base/efx_evb.c (+2/-2) drivers/net/sfc/base/efx_filter.c (+21/-5) drivers/net/sfc/base/efx_impl.h (+20/-1) drivers/net/sfc/base/efx_proxy.c (+2/-2) drivers/net/sfc/sfc.c (+1/-1) drivers/net/sfc/sfc_ethdev.c (+16/-4) drivers/net/sfc/sfc_flow.c (+1/-0) drivers/net/sfc/sfc_rx.c (+5/-1) drivers/net/softnic/rte_eth_softnic_thread.c (+0/-38) drivers/net/tap/rte_eth_tap.c (+91/-55) drivers/net/tap/tap_flow.c (+4/-4) drivers/net/tap/tap_intr.c (+1/-2) drivers/net/thunderx/nicvf_ethdev.c (+9/-8) drivers/net/vhost/rte_eth_vhost.c (+7/-9) drivers/net/virtio/virtio_ethdev.c (+3/-3) drivers/net/virtio/virtio_rxtx.c (+3/-3) drivers/net/virtio/virtio_rxtx_simple_altivec.c (+1/-2) drivers/net/virtio/virtio_user_ethdev.c (+13/-7) drivers/net/virtio/virtqueue.c (+2/-0) drivers/net/vmxnet3/vmxnet3_ethdev.c (+2/-1) drivers/net/vmxnet3/vmxnet3_ethdev.h (+4/-0) drivers/net/vmxnet3/vmxnet3_rxtx.c (+13/-1) examples/eventdev_pipeline/main.c (+11/-6) examples/eventdev_pipeline/pipeline_common.h (+2/-2) examples/fips_validation/fips_validation.c (+18/-0) examples/ioat/ioatfwd.c (+1/-1) examples/ip_fragmentation/main.c (+1/-1) examples/ip_pipeline/thread.c (+0/-44) examples/ip_reassembly/main.c (+1/-1) examples/ipsec-secgw/ipsec-secgw.c (+1/-1) examples/ipsec-secgw/ipsec_process.c (+1/-0) examples/ipv4_multicast/main.c (+1/-1) examples/kni/main.c (+28/-4) examples/l2fwd-crypto/main.c (+1/-1) examples/l2fwd-event/main.c (+1/-1) examples/l2fwd-jobstats/main.c (+1/-1) examples/l2fwd-keepalive/main.c (+12/-8) examples/l2fwd/main.c (+1/-1) examples/l3fwd-acl/main.c (+1/-1) examples/l3fwd-power/main.c (+1/-1) examples/l3fwd/main.c (+1/-1) examples/link_status_interrupt/main.c (+1/-1) examples/multi_process/client_server_mp/mp_server/init.c (+1/-1) examples/multi_process/symmetric_mp/main.c (+1/-1) examples/performance-thread/l3fwd-thread/main.c (+1/-1) examples/qos_sched/cfg_file.c (+3/-0) examples/qos_sched/init.c (+1/-1) examples/qos_sched/main.h (+2/-2) examples/server_node_efd/server/init.c (+1/-1) examples/vhost_blk/vhost_blk.c (+2/-0) examples/vhost_blk/vhost_blk.h (+2/-2) examples/vm_power_manager/channel_manager.c (+2/-1) examples/vm_power_manager/channel_manager.h (+2/-7) examples/vm_power_manager/main.c (+1/-1) examples/vm_power_manager/power_manager.c (+0/-1) examples/vmdq/main.c (+39/-9) kernel/freebsd/contigmem/contigmem.c (+3/-1) lib/Makefile (+1/-1) lib/librte_bbdev/rte_bbdev.h (+8/-8) lib/librte_bbdev/rte_bbdev_op.h (+8/-8) lib/librte_bbdev/rte_bbdev_pmd.h (+7/-7) lib/librte_cryptodev/rte_crypto_sym.h (+5/-2) lib/librte_cryptodev/rte_cryptodev.c (+39/-4) lib/librte_eal/common/eal_common_fbarray.c (+1/-1) lib/librte_eal/common/eal_common_log.c (+1/-1) lib/librte_eal/common/eal_common_memory.c (+1/-1) lib/librte_eal/common/eal_common_options.c (+1/-1) lib/librte_eal/common/include/arch/arm/rte_cycles_32.h (+1/-1) lib/librte_eal/common/include/arch/arm/rte_cycles_64.h (+1/-1) lib/librte_eal/common/include/arch/ppc_64/meson.build (+1/-0) lib/librte_eal/common/include/arch/ppc_64/rte_altivec.h (+22/-0) lib/librte_eal/common/include/arch/ppc_64/rte_memcpy.h (+13/-2) lib/librte_eal/common/include/arch/ppc_64/rte_vect.h (+2/-1) lib/librte_eal/common/include/arch/x86/rte_atomic.h (+1/-1) lib/librte_eal/common/include/arch/x86/rte_memcpy.h (+9/-0) lib/librte_eal/common/include/generic/rte_byteorder.h (+3/-3) lib/librte_eal/common/include/rte_common.h (+2/-2) lib/librte_eal/common/include/rte_service.h (+6/-2) lib/librte_eal/common/include/rte_service_component.h (+5/-1) lib/librte_eal/common/malloc_elem.c (+1/-1) lib/librte_eal/common/malloc_heap.c (+3/-0) lib/librte_eal/common/rte_random.c (+1/-1) lib/librte_eal/common/rte_service.c (+27/-47) lib/librte_eal/freebsd/eal/eal_interrupts.c (+43/-36) lib/librte_eal/freebsd/eal/eal_memory.c (+1/-1) lib/librte_eal/linux/eal/eal.c (+1/-1) lib/librte_eal/linux/eal/eal_memalloc.c (+1/-1) lib/librte_eal/linux/eal/eal_memory.c (+20/-4) lib/librte_eal/linux/eal/eal_vfio.c (+4/-2) lib/librte_ethdev/ethdev_profile.h (+9/-0) lib/librte_ethdev/rte_ethdev.c (+5/-5) lib/librte_ethdev/rte_flow.c (+1/-1) lib/librte_ethdev/rte_flow.h (+1/-1) lib/librte_eventdev/rte_eventdev.c (+8/-5) lib/librte_eventdev/rte_eventdev_pmd_pci.h (+5/-3) lib/librte_fib/rte_fib.h (+8/-0) lib/librte_fib/rte_fib6.h (+8/-0) lib/librte_ipsec/ipsec_sad.c (+2/-0) lib/librte_ipsec/sa.h (+1/-1) lib/librte_kvargs/rte_kvargs.c (+2/-0) lib/librte_kvargs/rte_kvargs.h (+1/-1) lib/librte_lpm/rte_lpm6.c (+5/-4) lib/librte_mempool/rte_mempool_version.map (+0/-4) lib/librte_pci/rte_pci.c (+15/-2) lib/librte_pci/rte_pci.h (+0/-6) lib/librte_security/rte_security.c (+54/-16) lib/librte_security/rte_security.h (+5/-3) lib/librte_telemetry/rte_telemetry_parser.c (+1/-1) lib/librte_timer/rte_timer.c (+14/-10) lib/librte_vhost/iotlb.c (+3/-2) lib/librte_vhost/rte_vhost.h (+6/-1) lib/librte_vhost/socket.c (+6/-0) lib/librte_vhost/vhost.h (+0/-1) lib/librte_vhost/vhost_crypto.c (+19/-1) lib/librte_vhost/vhost_user.c (+32/-8) lib/librte_vhost/virtio_net.c (+98/-91) lib/meson.build (+6/-2) mk/rte.app.mk (+4/-0) mk/toolchain/gcc/rte.vars.mk (+5/-0) usertools/dpdk-pmdinfo.py (+4/-1) |
||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Rafael David Tinoco (community) | Approve | ||
Canonical Server | Pending | ||
Canonical Server packageset reviewers | Pending | ||
git-ubuntu developers | Pending | ||
Review via email: mp+386722@code.launchpad.net |
Commit message
Description of the change
Christian Ehrhardt (paelzer) wrote : | # |
Rafael David Tinoco (rafaeldtinoco) wrote : | # |
Ill review this one...
Rafael David Tinoco (rafaeldtinoco) wrote : | # |
In Debian: (origin/
018c283f New upstream version 19.11.3
729f04dc New upstream version 19.11.2
21762127 New upstream version 19.11.1
47dc7e92 New upstream version 19.11
7903129b New upstream version 19.08
$ git log -1 -p 018c283f | diffstat -s
483 files changed, 7001 insertions(+), 2813 deletions(-)
$ git log -1 -p 729f04dc | diffstat -s
5 files changed, 108 insertions(+), 8 deletions(-)
----
In Ubuntu (merge-
f868d03e7 New upstream version 19.11.3
$ git log -1 -p f868d03e7 | diffstat -s
483 files changed, 7001 insertions(+), 2813 deletions(-)
9de17eb92 New upstream version 19.11.2
$ git log -1 -p 9de17eb92 | diffstat -s
5 files changed, 108 insertions(+), 8 deletions(-)
Pretty much the same.. analysing the delta now...
Rafael David Tinoco (rafaeldtinoco) wrote : | # |
For commit:
- drop security patches being included in 19.11.3
- d/p/0001-
- d/p/0002-
- d/p/0003-
- d/p/0004-
- d/p/0005-
- d/p/0006-
I could cleanly revert all of them when having commit "19.11.3" as HEAD:
$ patch -p1 -R < ./debian/
patching file lib/librte_
$ patch -p1 -R < ./debian/
patching file lib/librte_
$ patch -p1 -R < ./debian/
patching file lib/librte_
Hunk #1 succeeded at 1072 (offset -14 lines).
Hunk #2 succeeded at 1853 (offset 12 lines).
$ patch -p1 -R < ./debian/
patching file lib/librte_
Hunk #1 succeeded at 238 (offset 1 line).
Hunk #2 succeeded at 288 (offset 1 line).
Hunk #3 succeeded at 302 (offset 1 line).
$ patch -p1 -R < ./debian/
patching file lib/librte_
$ patch -p1 -R < ./debian/
patching file lib/librte_
So its all good.
Rafael David Tinoco (rafaeldtinoco) wrote : | # |
commit 4ac6d9854
Author: Christian Ehrhardt <email address hidden>
Date: Thu Jul 2 07:00:21 2020
d/p/
Seems like a clean cherry-pick and proper fix of behavior change.
Rafael David Tinoco (rafaeldtinoco) wrote : | # |
# CHECKLIST
-------
[!] changelog entry correct:
- I would squash last 2 commits as this hasn't
been pushed yet
[.] targeted to correct codename
[.] version number is correct
- 19.11.3-0ubuntu0.1 seems appropriate for focal
- 19.11.3-1ubuntuX would be set for groovy
dev or even 0.X if just SRUs
[.] update-maintainer has been run before
----
[-] changes forwarded upstream/debian (if appropriate)
[.] patches match what was proposed upstream
----
[.] patches correctly included in debian/
[.] patches have correct DEP3 metadata
----
[.] relying on PPA only for build check ?
[-] if relying on PPA, did it install correctly ?
- I'll rely on your functional tests, doing logical
review only. Let me know if you need more, pls.
----
[-] if building locally, was source build good ?
[-] if building locally, was binary build good ?
----
[-] was autopkgtest tested ?
----
[.] is this a SRU ?
[.] if a SRU, does the public bug have a template ?
[.] is this a bundle of fixes ?
----
[.] is this a MERGE ?
[.] if MERGE, is there a public bug referred ?
[.] if MERGE, does it add/remove existing packages ?
[-] if MERGE, does it bump library SONAME ?
- upstream microrelease take
-------
[.] = ok | [x] = not ok | [?] = question | [!] = note | [-] = n/a
-------
# comments:
dpdk | 2.2.0-0ubuntu7 | xenial | source
dpdk | 2.2.0-0ubuntu8 | xenial-updates | source
dpdk | 17.11.1-6 | bionic | source
dpdk | 17.11.9-
dpdk | 17.11.9-
dpdk | 18.11.2-4 | eoan | source
dpdk | 18.11.5-
dpdk | 18.11.5-
dpdk | 19.11.1-0ubuntu1 | focal | source
dpdk | 19.11.1-0ubuntu1.1 | focal-security | source
dpdk | 19.11.1-0ubuntu1.1 | focal-updates | source
dpdk | 19.11.3-1 | groovy | source
All good, +1.
Christian Ehrhardt (paelzer) wrote : | # |
To ssh://git.
* [new tag] upload/
Uploading to ubuntu (via ftp to upload.ubuntu.com):
Uploading dpdk_19.
Uploading dpdk_19.
Uploading dpdk_19.
Uploading dpdk_19.
Uploading dpdk_19.
Successfully uploaded packages.
Preview Diff
1 | diff --git a/.travis.yml b/.travis.yml |
2 | index 0bb47c1..77ac26d 100644 |
3 | --- a/.travis.yml |
4 | +++ b/.travis.yml |
5 | @@ -21,7 +21,7 @@ _aarch64_packages: &aarch64_packages |
6 | |
7 | _extra_packages: &extra_packages |
8 | - *required_packages |
9 | - - [libbsd-dev, libpcap-dev, libcrypto++-dev, libjansson4] |
10 | + - [libbsd-dev, libpcap-dev, libcrypto++-dev, libjansson-dev] |
11 | |
12 | _build_32b_packages: &build_32b_packages |
13 | - *required_packages |
14 | diff --git a/VERSION b/VERSION |
15 | index 6a16e51..a43c349 100644 |
16 | --- a/VERSION |
17 | +++ b/VERSION |
18 | @@ -1 +1 @@ |
19 | -19.11.1 |
20 | +19.11.3 |
21 | diff --git a/app/pdump/main.c b/app/pdump/main.c |
22 | index d05a023..c38c537 100644 |
23 | --- a/app/pdump/main.c |
24 | +++ b/app/pdump/main.c |
25 | @@ -151,7 +151,7 @@ static uint8_t multiple_core_capture; |
26 | static void |
27 | pdump_usage(const char *prgname) |
28 | { |
29 | - printf("usage: %s [EAL options]" |
30 | + printf("usage: %s [EAL options] --" |
31 | " --["CMD_LINE_OPT_MULTI"]\n" |
32 | " --"CMD_LINE_OPT_PDUMP" " |
33 | "'(port=<port id> | device_id=<pci id or vdev name>)," |
34 | diff --git a/app/test-acl/main.c b/app/test-acl/main.c |
35 | index 57f2394..08f06c1 100644 |
36 | --- a/app/test-acl/main.c |
37 | +++ b/app/test-acl/main.c |
38 | @@ -12,7 +12,7 @@ |
39 | #include <rte_lcore.h> |
40 | #include <rte_ip.h> |
41 | |
42 | -#define PRINT_USAGE_START "%s [EAL options]\n" |
43 | +#define PRINT_USAGE_START "%s [EAL options] --\n" |
44 | |
45 | #define RTE_LOGTYPE_TESTACL RTE_LOGTYPE_USER1 |
46 | |
47 | diff --git a/app/test-crypto-perf/main.c b/app/test-crypto-perf/main.c |
48 | index 52a1860..7bb286c 100644 |
49 | --- a/app/test-crypto-perf/main.c |
50 | +++ b/app/test-crypto-perf/main.c |
51 | @@ -582,7 +582,8 @@ main(int argc, char **argv) |
52 | goto err; |
53 | } |
54 | |
55 | - if (!opts.silent) |
56 | + if (!opts.silent && opts.test != CPERF_TEST_TYPE_THROUGHPUT && |
57 | + opts.test != CPERF_TEST_TYPE_LATENCY) |
58 | show_test_vector(t_vec); |
59 | |
60 | total_nb_qps = nb_cryptodevs * opts.nb_qps; |
61 | diff --git a/app/test-eventdev/test_pipeline_common.c b/app/test-eventdev/test_pipeline_common.c |
62 | index fa91bf2..126e216 100644 |
63 | --- a/app/test-eventdev/test_pipeline_common.c |
64 | +++ b/app/test-eventdev/test_pipeline_common.c |
65 | @@ -385,12 +385,16 @@ pipeline_event_tx_adapter_setup(struct evt_options *opt, |
66 | if (!(cap & RTE_EVENT_ETH_TX_ADAPTER_CAP_INTERNAL_PORT)) { |
67 | uint32_t service_id = -1U; |
68 | |
69 | - rte_event_eth_tx_adapter_service_id_get(consm, |
70 | - &service_id); |
71 | + ret = rte_event_eth_tx_adapter_service_id_get(consm, |
72 | + &service_id); |
73 | + if (ret != -ESRCH && ret != 0) { |
74 | + evt_err("Failed to get Tx adptr service ID"); |
75 | + return ret; |
76 | + } |
77 | ret = evt_service_setup(service_id); |
78 | if (ret) { |
79 | evt_err("Failed to setup service core" |
80 | - " for Tx adapter\n"); |
81 | + " for Tx adapter"); |
82 | return ret; |
83 | } |
84 | } |
85 | diff --git a/app/test-pipeline/config.c b/app/test-pipeline/config.c |
86 | index 28ac9fc..33f3f1c 100644 |
87 | --- a/app/test-pipeline/config.c |
88 | +++ b/app/test-pipeline/config.c |
89 | @@ -42,8 +42,6 @@ |
90 | |
91 | #include "main.h" |
92 | |
93 | -struct app_params app; |
94 | - |
95 | static const char usage[] = "\n"; |
96 | |
97 | void |
98 | diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c |
99 | index d9f5f6f..d508d1e 100644 |
100 | --- a/app/test-pmd/cmdline.c |
101 | +++ b/app/test-pmd/cmdline.c |
102 | @@ -94,7 +94,7 @@ static void cmd_help_brief_parsed(__attribute__((unused)) void *parsed_result, |
103 | " help ports : Configuring ports.\n" |
104 | " help registers : Reading and setting port registers.\n" |
105 | " help filters : Filters configuration help.\n" |
106 | - " help traffic_management : Traffic Management commmands.\n" |
107 | + " help traffic_management : Traffic Management commands.\n" |
108 | " help devices : Device related cmds.\n" |
109 | " help all : All of the above sections.\n\n" |
110 | ); |
111 | @@ -5122,7 +5122,7 @@ cmd_gso_size_parsed(void *parsed_result, |
112 | |
113 | if (test_done == 0) { |
114 | printf("Before setting GSO segsz, please first" |
115 | - " stop fowarding\n"); |
116 | + " stop forwarding\n"); |
117 | return; |
118 | } |
119 | |
120 | @@ -16805,8 +16805,10 @@ cmd_ddp_get_list_parsed( |
121 | #ifdef RTE_LIBRTE_I40E_PMD |
122 | size = PROFILE_INFO_SIZE * MAX_PROFILE_NUM + 4; |
123 | p_list = (struct rte_pmd_i40e_profile_list *)malloc(size); |
124 | - if (!p_list) |
125 | + if (!p_list) { |
126 | printf("%s: Failed to malloc buffer\n", __func__); |
127 | + return; |
128 | + } |
129 | |
130 | if (ret == -ENOTSUP) |
131 | ret = rte_pmd_i40e_get_ddp_list(res->port_id, |
132 | diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c |
133 | index f059978..deced65 100644 |
134 | --- a/app/test-pmd/cmdline_flow.c |
135 | +++ b/app/test-pmd/cmdline_flow.c |
136 | @@ -1005,7 +1005,6 @@ static const enum index item_pppoes[] = { |
137 | }; |
138 | |
139 | static const enum index item_pppoe_proto_id[] = { |
140 | - ITEM_PPPOE_PROTO_ID, |
141 | ITEM_NEXT, |
142 | ZERO, |
143 | }; |
144 | @@ -2544,11 +2543,14 @@ static const struct token token_list[] = { |
145 | session_id)), |
146 | }, |
147 | [ITEM_PPPOE_PROTO_ID] = { |
148 | - .name = "proto_id", |
149 | + .name = "pppoe_proto_id", |
150 | .help = "match PPPoE session protocol identifier", |
151 | .priv = PRIV_ITEM(PPPOE_PROTO_ID, |
152 | sizeof(struct rte_flow_item_pppoe_proto_id)), |
153 | - .next = NEXT(item_pppoe_proto_id), |
154 | + .next = NEXT(item_pppoe_proto_id, NEXT_ENTRY(UNSIGNED), |
155 | + item_param), |
156 | + .args = ARGS(ARGS_ENTRY_HTON |
157 | + (struct rte_flow_item_pppoe_proto_id, proto_id)), |
158 | .call = parse_vc, |
159 | }, |
160 | [ITEM_HIGIG2] = { |
161 | diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c |
162 | index 62e547b..42eba68 100644 |
163 | --- a/app/test-pmd/config.c |
164 | +++ b/app/test-pmd/config.c |
165 | @@ -223,11 +223,26 @@ nic_stats_display(portid_t port_id) |
166 | void |
167 | nic_stats_clear(portid_t port_id) |
168 | { |
169 | + int ret; |
170 | + |
171 | if (port_id_is_invalid(port_id, ENABLED_WARN)) { |
172 | print_valid_ports(); |
173 | return; |
174 | } |
175 | - rte_eth_stats_reset(port_id); |
176 | + |
177 | + ret = rte_eth_stats_reset(port_id); |
178 | + if (ret != 0) { |
179 | + printf("%s: Error: failed to reset stats (port %u): %s", |
180 | + __func__, port_id, strerror(ret)); |
181 | + return; |
182 | + } |
183 | + |
184 | + ret = rte_eth_stats_get(port_id, &ports[port_id].stats); |
185 | + if (ret != 0) { |
186 | + printf("%s: Error: failed to get stats (port %u): %s", |
187 | + __func__, port_id, strerror(ret)); |
188 | + return; |
189 | + } |
190 | printf("\n NIC statistics for port %d cleared\n", port_id); |
191 | } |
192 | |
193 | @@ -303,10 +318,19 @@ nic_xstats_clear(portid_t port_id) |
194 | print_valid_ports(); |
195 | return; |
196 | } |
197 | + |
198 | ret = rte_eth_xstats_reset(port_id); |
199 | if (ret != 0) { |
200 | printf("%s: Error: failed to reset xstats (port %u): %s", |
201 | __func__, port_id, strerror(ret)); |
202 | + return; |
203 | + } |
204 | + |
205 | + ret = rte_eth_stats_get(port_id, &ports[port_id].stats); |
206 | + if (ret != 0) { |
207 | + printf("%s: Error: failed to get stats (port %u): %s", |
208 | + __func__, port_id, strerror(ret)); |
209 | + return; |
210 | } |
211 | } |
212 | |
213 | diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c |
214 | index 25091de..7b92ab1 100644 |
215 | --- a/app/test-pmd/csumonly.c |
216 | +++ b/app/test-pmd/csumonly.c |
217 | @@ -139,22 +139,23 @@ parse_ipv6(struct rte_ipv6_hdr *ipv6_hdr, struct testpmd_offload_info *info) |
218 | |
219 | /* |
220 | * Parse an ethernet header to fill the ethertype, l2_len, l3_len and |
221 | - * ipproto. This function is able to recognize IPv4/IPv6 with one optional vlan |
222 | - * header. The l4_len argument is only set in case of TCP (useful for TSO). |
223 | + * ipproto. This function is able to recognize IPv4/IPv6 with optional VLAN |
224 | + * headers. The l4_len argument is only set in case of TCP (useful for TSO). |
225 | */ |
226 | static void |
227 | parse_ethernet(struct rte_ether_hdr *eth_hdr, struct testpmd_offload_info *info) |
228 | { |
229 | struct rte_ipv4_hdr *ipv4_hdr; |
230 | struct rte_ipv6_hdr *ipv6_hdr; |
231 | + struct rte_vlan_hdr *vlan_hdr; |
232 | |
233 | info->l2_len = sizeof(struct rte_ether_hdr); |
234 | info->ethertype = eth_hdr->ether_type; |
235 | |
236 | - if (info->ethertype == _htons(RTE_ETHER_TYPE_VLAN)) { |
237 | - struct rte_vlan_hdr *vlan_hdr = ( |
238 | - struct rte_vlan_hdr *)(eth_hdr + 1); |
239 | - |
240 | + while (info->ethertype == _htons(RTE_ETHER_TYPE_VLAN) || |
241 | + info->ethertype == _htons(RTE_ETHER_TYPE_QINQ)) { |
242 | + vlan_hdr = (struct rte_vlan_hdr *) |
243 | + ((char *)eth_hdr + info->l2_len); |
244 | info->l2_len += sizeof(struct rte_vlan_hdr); |
245 | info->ethertype = vlan_hdr->eth_proto; |
246 | } |
247 | diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c |
248 | index 2e7a504..0eb7844 100644 |
249 | --- a/app/test-pmd/parameters.c |
250 | +++ b/app/test-pmd/parameters.c |
251 | @@ -49,7 +49,7 @@ |
252 | static void |
253 | usage(char* progname) |
254 | { |
255 | - printf("usage: %s " |
256 | + printf("usage: %s [EAL options] -- " |
257 | #ifdef RTE_LIBRTE_CMDLINE |
258 | "[--interactive|-i] " |
259 | "[--cmdline-file=FILENAME] " |
260 | diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c |
261 | index 31361e4..0b12659 100644 |
262 | --- a/app/test-pmd/testpmd.c |
263 | +++ b/app/test-pmd/testpmd.c |
264 | @@ -2752,7 +2752,7 @@ check_all_ports_link_status(uint32_t port_mask) |
265 | "Port%d Link Up. speed %u Mbps- %s\n", |
266 | portid, link.link_speed, |
267 | (link.link_duplex == ETH_LINK_FULL_DUPLEX) ? |
268 | - ("full-duplex") : ("half-duplex\n")); |
269 | + ("full-duplex") : ("half-duplex")); |
270 | else |
271 | printf("Port %d Link Down\n", portid); |
272 | continue; |
273 | @@ -3193,6 +3193,8 @@ get_eth_dcb_conf(portid_t pid, struct rte_eth_conf *eth_conf, |
274 | struct rte_eth_dcb_tx_conf *tx_conf = |
275 | ð_conf->tx_adv_conf.dcb_tx_conf; |
276 | |
277 | + memset(&rss_conf, 0, sizeof(struct rte_eth_rss_conf)); |
278 | + |
279 | rc = rte_eth_dev_rss_hash_conf_get(pid, &rss_conf); |
280 | if (rc != 0) |
281 | return rc; |
282 | diff --git a/app/test/meson.build b/app/test/meson.build |
283 | index 8cb90c4..8524a98 100644 |
284 | --- a/app/test/meson.build |
285 | +++ b/app/test/meson.build |
286 | @@ -402,37 +402,33 @@ timeout_seconds_fast = 10 |
287 | get_coremask = find_program('get-coremask.sh') |
288 | num_cores_arg = '-l ' + run_command(get_coremask).stdout().strip() |
289 | |
290 | -test_args = [num_cores_arg] |
291 | +default_test_args = [num_cores_arg] |
292 | |
293 | foreach arg : fast_test_names |
294 | + test_args = default_test_args |
295 | + |
296 | if (get_option('default_library') == 'shared' and |
297 | arg == 'event_eth_tx_adapter_autotest') |
298 | foreach drv:dpdk_drivers |
299 | test_args += ['-d', drv.full_path().split('.a')[0] + '.so'] |
300 | endforeach |
301 | endif |
302 | - if host_machine.system() == 'linux' |
303 | - test(arg, dpdk_test, |
304 | - env : ['DPDK_TEST=' + arg], |
305 | - args : test_args + |
306 | - ['--file-prefix=@0@'.format(arg)], |
307 | - timeout : timeout_seconds_fast, |
308 | - is_parallel : false, |
309 | - suite : 'fast-tests') |
310 | - else |
311 | - test(arg, dpdk_test, |
312 | - env : ['DPDK_TEST=' + arg], |
313 | - args : test_args, |
314 | + if is_linux |
315 | + test_args += ['--file-prefix=@0@'.format(arg)] |
316 | + endif |
317 | + |
318 | + test(arg, dpdk_test, |
319 | + env : ['DPDK_TEST=' + arg], |
320 | + args : test_args, |
321 | timeout : timeout_seconds_fast, |
322 | is_parallel : false, |
323 | suite : 'fast-tests') |
324 | - endif |
325 | endforeach |
326 | |
327 | foreach arg : perf_test_names |
328 | test(arg, dpdk_test, |
329 | env : ['DPDK_TEST=' + arg], |
330 | - args : test_args, |
331 | + args : default_test_args, |
332 | timeout : timeout_seconds, |
333 | is_parallel : false, |
334 | suite : 'perf-tests') |
335 | @@ -441,7 +437,7 @@ endforeach |
336 | foreach arg : driver_test_names |
337 | test(arg, dpdk_test, |
338 | env : ['DPDK_TEST=' + arg], |
339 | - args : test_args, |
340 | + args : default_test_args, |
341 | timeout : timeout_seconds, |
342 | is_parallel : false, |
343 | suite : 'driver-tests') |
344 | @@ -450,7 +446,7 @@ endforeach |
345 | foreach arg : dump_test_names |
346 | test(arg, dpdk_test, |
347 | env : ['DPDK_TEST=' + arg], |
348 | - args : test_args, |
349 | + args : default_test_args, |
350 | timeout : timeout_seconds, |
351 | is_parallel : false, |
352 | suite : 'debug-tests') |
353 | diff --git a/app/test/test.h b/app/test/test.h |
354 | index ac0c506..b07f6c1 100644 |
355 | --- a/app/test/test.h |
356 | +++ b/app/test/test.h |
357 | @@ -22,8 +22,6 @@ |
358 | # define TEST_TRACE_FAILURE(_file, _line, _func) |
359 | #endif |
360 | |
361 | -#define RTE_TEST_TRACE_FAILURE TEST_TRACE_FAILURE |
362 | - |
363 | #include <rte_test.h> |
364 | |
365 | #define TEST_ASSERT RTE_TEST_ASSERT |
366 | diff --git a/app/test/test_acl.c b/app/test/test_acl.c |
367 | index 9cd9e37..b78b671 100644 |
368 | --- a/app/test/test_acl.c |
369 | +++ b/app/test/test_acl.c |
370 | @@ -1394,16 +1394,18 @@ test_invalid_parameters(void) |
371 | } else |
372 | rte_acl_free(acx); |
373 | |
374 | - /* invalid NUMA node */ |
375 | - memcpy(¶m, &acl_param, sizeof(param)); |
376 | - param.socket_id = RTE_MAX_NUMA_NODES + 1; |
377 | - |
378 | - acx = rte_acl_create(¶m); |
379 | - if (acx != NULL) { |
380 | - printf("Line %i: ACL context creation with invalid NUMA " |
381 | - "should have failed!\n", __LINE__); |
382 | - rte_acl_free(acx); |
383 | - return -1; |
384 | + if (rte_eal_has_hugepages()) { |
385 | + /* invalid NUMA node */ |
386 | + memcpy(¶m, &acl_param, sizeof(param)); |
387 | + param.socket_id = RTE_MAX_NUMA_NODES + 1; |
388 | + |
389 | + acx = rte_acl_create(¶m); |
390 | + if (acx != NULL) { |
391 | + printf("Line %i: ACL context creation with invalid " |
392 | + "NUMA should have failed!\n", __LINE__); |
393 | + rte_acl_free(acx); |
394 | + return -1; |
395 | + } |
396 | } |
397 | |
398 | /* NULL name */ |
399 | diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c |
400 | index 79ced80..db9dd3a 100644 |
401 | --- a/app/test/test_cryptodev.c |
402 | +++ b/app/test/test_cryptodev.c |
403 | @@ -9158,8 +9158,10 @@ test_stats(void) |
404 | { |
405 | struct crypto_testsuite_params *ts_params = &testsuite_params; |
406 | struct rte_cryptodev_stats stats; |
407 | - struct rte_cryptodev *dev; |
408 | - cryptodev_stats_get_t temp_pfn; |
409 | + |
410 | + if (rte_cryptodev_stats_get(ts_params->valid_devs[0], &stats) |
411 | + == -ENOTSUP) |
412 | + return -ENOTSUP; |
413 | |
414 | rte_cryptodev_stats_reset(ts_params->valid_devs[0]); |
415 | TEST_ASSERT((rte_cryptodev_stats_get(ts_params->valid_devs[0] + 600, |
416 | @@ -9167,13 +9169,6 @@ test_stats(void) |
417 | "rte_cryptodev_stats_get invalid dev failed"); |
418 | TEST_ASSERT((rte_cryptodev_stats_get(ts_params->valid_devs[0], 0) != 0), |
419 | "rte_cryptodev_stats_get invalid Param failed"); |
420 | - dev = &rte_cryptodevs[ts_params->valid_devs[0]]; |
421 | - temp_pfn = dev->dev_ops->stats_get; |
422 | - dev->dev_ops->stats_get = (cryptodev_stats_get_t)0; |
423 | - TEST_ASSERT((rte_cryptodev_stats_get(ts_params->valid_devs[0], &stats) |
424 | - == -ENOTSUP), |
425 | - "rte_cryptodev_stats_get invalid Param failed"); |
426 | - dev->dev_ops->stats_get = temp_pfn; |
427 | |
428 | /* Test expected values */ |
429 | ut_setup(); |
430 | diff --git a/app/test/test_cryptodev_blockcipher.c b/app/test/test_cryptodev_blockcipher.c |
431 | index 5bfe2d0..2f91d00 100644 |
432 | --- a/app/test/test_cryptodev_blockcipher.c |
433 | +++ b/app/test/test_cryptodev_blockcipher.c |
434 | @@ -93,7 +93,7 @@ test_blockcipher_one_case(const struct blockcipher_test_case *t, |
435 | uint64_t feat_flags = dev_info.feature_flags; |
436 | uint64_t oop_flag = RTE_CRYPTODEV_FF_OOP_SGL_IN_LB_OUT; |
437 | |
438 | - if (t->feature_mask && BLOCKCIPHER_TEST_FEATURE_OOP) { |
439 | + if (t->feature_mask & BLOCKCIPHER_TEST_FEATURE_OOP) { |
440 | if (!(feat_flags & oop_flag)) { |
441 | printf("Device doesn't support out-of-place " |
442 | "scatter-gather in input mbuf. " |
443 | diff --git a/app/test/test_cryptodev_hash_test_vectors.h b/app/test/test_cryptodev_hash_test_vectors.h |
444 | index cff2831..394bb6b 100644 |
445 | --- a/app/test/test_cryptodev_hash_test_vectors.h |
446 | +++ b/app/test/test_cryptodev_hash_test_vectors.h |
447 | @@ -460,6 +460,7 @@ static const struct blockcipher_test_case hash_test_cases[] = { |
448 | .test_data = &sha1_test_vector, |
449 | .op_mask = BLOCKCIPHER_TEST_OP_AUTH_GEN, |
450 | .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | |
451 | + BLOCKCIPHER_TEST_TARGET_PMD_QAT | |
452 | BLOCKCIPHER_TEST_TARGET_PMD_CCP | |
453 | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | |
454 | #if IMB_VERSION_NUM >= IMB_VERSION(0, 52, 0) |
455 | @@ -473,6 +474,7 @@ static const struct blockcipher_test_case hash_test_cases[] = { |
456 | .test_data = &sha1_test_vector, |
457 | .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY, |
458 | .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | |
459 | + BLOCKCIPHER_TEST_TARGET_PMD_QAT | |
460 | BLOCKCIPHER_TEST_TARGET_PMD_CCP | |
461 | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | |
462 | #if IMB_VERSION_NUM >= IMB_VERSION(0, 52, 0) |
463 | @@ -540,6 +542,7 @@ static const struct blockcipher_test_case hash_test_cases[] = { |
464 | .test_data = &sha224_test_vector, |
465 | .op_mask = BLOCKCIPHER_TEST_OP_AUTH_GEN, |
466 | .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | |
467 | + BLOCKCIPHER_TEST_TARGET_PMD_QAT | |
468 | BLOCKCIPHER_TEST_TARGET_PMD_CCP | |
469 | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | |
470 | #if IMB_VERSION_NUM >= IMB_VERSION(0, 52, 0) |
471 | @@ -553,6 +556,7 @@ static const struct blockcipher_test_case hash_test_cases[] = { |
472 | .test_data = &sha224_test_vector, |
473 | .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY, |
474 | .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | |
475 | + BLOCKCIPHER_TEST_TARGET_PMD_QAT | |
476 | BLOCKCIPHER_TEST_TARGET_PMD_CCP | |
477 | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | |
478 | #if IMB_VERSION_NUM >= IMB_VERSION(0, 52, 0) |
479 | @@ -596,6 +600,7 @@ static const struct blockcipher_test_case hash_test_cases[] = { |
480 | .test_data = &sha256_test_vector, |
481 | .op_mask = BLOCKCIPHER_TEST_OP_AUTH_GEN, |
482 | .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | |
483 | + BLOCKCIPHER_TEST_TARGET_PMD_QAT | |
484 | BLOCKCIPHER_TEST_TARGET_PMD_CCP | |
485 | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | |
486 | #if IMB_VERSION_NUM >= IMB_VERSION(0, 52, 0) |
487 | @@ -609,6 +614,7 @@ static const struct blockcipher_test_case hash_test_cases[] = { |
488 | .test_data = &sha256_test_vector, |
489 | .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY, |
490 | .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | |
491 | + BLOCKCIPHER_TEST_TARGET_PMD_QAT | |
492 | BLOCKCIPHER_TEST_TARGET_PMD_CCP | |
493 | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | |
494 | #if IMB_VERSION_NUM >= IMB_VERSION(0, 52, 0) |
495 | @@ -654,6 +660,7 @@ static const struct blockcipher_test_case hash_test_cases[] = { |
496 | .test_data = &sha384_test_vector, |
497 | .op_mask = BLOCKCIPHER_TEST_OP_AUTH_GEN, |
498 | .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | |
499 | + BLOCKCIPHER_TEST_TARGET_PMD_QAT | |
500 | BLOCKCIPHER_TEST_TARGET_PMD_CCP | |
501 | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | |
502 | #if IMB_VERSION_NUM >= IMB_VERSION(0, 52, 0) |
503 | @@ -667,6 +674,7 @@ static const struct blockcipher_test_case hash_test_cases[] = { |
504 | .test_data = &sha384_test_vector, |
505 | .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY, |
506 | .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | |
507 | + BLOCKCIPHER_TEST_TARGET_PMD_QAT | |
508 | BLOCKCIPHER_TEST_TARGET_PMD_CCP | |
509 | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | |
510 | #if IMB_VERSION_NUM >= IMB_VERSION(0, 52, 0) |
511 | @@ -712,6 +720,7 @@ static const struct blockcipher_test_case hash_test_cases[] = { |
512 | .test_data = &sha512_test_vector, |
513 | .op_mask = BLOCKCIPHER_TEST_OP_AUTH_GEN, |
514 | .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | |
515 | + BLOCKCIPHER_TEST_TARGET_PMD_QAT | |
516 | BLOCKCIPHER_TEST_TARGET_PMD_CCP | |
517 | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | |
518 | #if IMB_VERSION_NUM >= IMB_VERSION(0, 52, 0) |
519 | @@ -724,6 +733,7 @@ static const struct blockcipher_test_case hash_test_cases[] = { |
520 | .test_data = &sha512_test_vector, |
521 | .op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY, |
522 | .pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OPENSSL | |
523 | + BLOCKCIPHER_TEST_TARGET_PMD_QAT | |
524 | BLOCKCIPHER_TEST_TARGET_PMD_CCP | |
525 | BLOCKCIPHER_TEST_TARGET_PMD_MVSAM | |
526 | #if IMB_VERSION_NUM >= IMB_VERSION(0, 52, 0) |
527 | diff --git a/app/test/test_fib_perf.c b/app/test/test_fib_perf.c |
528 | index 573087c..dd2e54d 100644 |
529 | --- a/app/test/test_fib_perf.c |
530 | +++ b/app/test/test_fib_perf.c |
531 | @@ -35,7 +35,7 @@ struct route_rule { |
532 | uint8_t depth; |
533 | }; |
534 | |
535 | -struct route_rule large_route_table[MAX_RULE_NUM]; |
536 | +static struct route_rule large_route_table[MAX_RULE_NUM]; |
537 | |
538 | static uint32_t num_route_entries; |
539 | #define NUM_ROUTE_ENTRIES num_route_entries |
540 | diff --git a/app/test/test_flow_classify.c b/app/test/test_flow_classify.c |
541 | index ff5265c..ef0b6fd 100644 |
542 | --- a/app/test/test_flow_classify.c |
543 | +++ b/app/test/test_flow_classify.c |
544 | @@ -23,7 +23,7 @@ |
545 | |
546 | #define FLOW_CLASSIFY_MAX_RULE_NUM 100 |
547 | #define MAX_PKT_BURST 32 |
548 | -#define NB_SOCKETS 1 |
549 | +#define NB_SOCKETS 4 |
550 | #define MEMPOOL_CACHE_SIZE 256 |
551 | #define MBUF_SIZE 512 |
552 | #define NB_MBUF 512 |
553 | diff --git a/app/test/test_hash.c b/app/test/test_hash.c |
554 | index 0052dce..2ac298e 100644 |
555 | --- a/app/test/test_hash.c |
556 | +++ b/app/test/test_hash.c |
557 | @@ -1142,8 +1142,11 @@ fbk_hash_unit_test(void) |
558 | handle = rte_fbk_hash_create(&invalid_params_7); |
559 | RETURN_IF_ERROR_FBK(handle != NULL, "fbk hash creation should have failed"); |
560 | |
561 | - handle = rte_fbk_hash_create(&invalid_params_8); |
562 | - RETURN_IF_ERROR_FBK(handle != NULL, "fbk hash creation should have failed"); |
563 | + if (rte_eal_has_hugepages()) { |
564 | + handle = rte_fbk_hash_create(&invalid_params_8); |
565 | + RETURN_IF_ERROR_FBK(handle != NULL, |
566 | + "fbk hash creation should have failed"); |
567 | + } |
568 | |
569 | handle = rte_fbk_hash_create(&invalid_params_same_name_1); |
570 | RETURN_IF_ERROR_FBK(handle == NULL, "fbk hash creation should have succeeded"); |
571 | diff --git a/app/test/test_ipsec.c b/app/test/test_ipsec.c |
572 | index 9e14472..79d00d7 100644 |
573 | --- a/app/test/test_ipsec.c |
574 | +++ b/app/test/test_ipsec.c |
575 | @@ -1168,6 +1168,34 @@ test_ipsec_dump_buffers(struct ipsec_unitest_params *ut_params, int i) |
576 | } |
577 | |
578 | static void |
579 | +destroy_dummy_sec_session(struct ipsec_unitest_params *ut, |
580 | + uint32_t j) |
581 | +{ |
582 | + rte_security_session_destroy(&dummy_sec_ctx, |
583 | + ut->ss[j].security.ses); |
584 | + ut->ss[j].security.ctx = NULL; |
585 | +} |
586 | + |
587 | +static void |
588 | +destroy_crypto_session(struct ipsec_unitest_params *ut, |
589 | + uint8_t crypto_dev, uint32_t j) |
590 | +{ |
591 | + rte_cryptodev_sym_session_clear(crypto_dev, ut->ss[j].crypto.ses); |
592 | + rte_cryptodev_sym_session_free(ut->ss[j].crypto.ses); |
593 | + memset(&ut->ss[j], 0, sizeof(ut->ss[j])); |
594 | +} |
595 | + |
596 | +static void |
597 | +destroy_session(struct ipsec_unitest_params *ut, |
598 | + uint8_t crypto_dev, uint32_t j) |
599 | +{ |
600 | + if (ut->ss[j].type == RTE_SECURITY_ACTION_TYPE_NONE) |
601 | + return destroy_crypto_session(ut, crypto_dev, j); |
602 | + else |
603 | + return destroy_dummy_sec_session(ut, j); |
604 | +} |
605 | + |
606 | +static void |
607 | destroy_sa(uint32_t j) |
608 | { |
609 | struct ipsec_unitest_params *ut = &unittest_params; |
610 | @@ -1175,9 +1203,8 @@ destroy_sa(uint32_t j) |
611 | |
612 | rte_ipsec_sa_fini(ut->ss[j].sa); |
613 | rte_free(ut->ss[j].sa); |
614 | - rte_cryptodev_sym_session_clear(ts->valid_dev, ut->ss[j].crypto.ses); |
615 | - rte_cryptodev_sym_session_free(ut->ss[j].crypto.ses); |
616 | - memset(&ut->ss[j], 0, sizeof(ut->ss[j])); |
617 | + |
618 | + destroy_session(ut, ts->valid_dev, j); |
619 | } |
620 | |
621 | static int |
622 | diff --git a/app/test/test_kvargs.c b/app/test/test_kvargs.c |
623 | index a42056f..2a2dae4 100644 |
624 | --- a/app/test/test_kvargs.c |
625 | +++ b/app/test/test_kvargs.c |
626 | @@ -142,7 +142,7 @@ static int test_valid_kvargs(void) |
627 | valid_keys = valid_keys_list; |
628 | kvlist = rte_kvargs_parse(args, valid_keys); |
629 | if (kvlist == NULL) { |
630 | - printf("rte_kvargs_parse() error"); |
631 | + printf("rte_kvargs_parse() error\n"); |
632 | goto fail; |
633 | } |
634 | if (strcmp(kvlist->pairs[0].value, "[0,1]") != 0) { |
635 | @@ -157,6 +157,40 @@ static int test_valid_kvargs(void) |
636 | } |
637 | rte_kvargs_free(kvlist); |
638 | |
639 | + /* test using empty string (it is valid) */ |
640 | + args = ""; |
641 | + kvlist = rte_kvargs_parse(args, NULL); |
642 | + if (kvlist == NULL) { |
643 | + printf("rte_kvargs_parse() error\n"); |
644 | + goto fail; |
645 | + } |
646 | + if (rte_kvargs_count(kvlist, NULL) != 0) { |
647 | + printf("invalid count value\n"); |
648 | + goto fail; |
649 | + } |
650 | + rte_kvargs_free(kvlist); |
651 | + |
652 | + /* test using empty elements (it is valid) */ |
653 | + args = "foo=1,,check=value2,,"; |
654 | + kvlist = rte_kvargs_parse(args, NULL); |
655 | + if (kvlist == NULL) { |
656 | + printf("rte_kvargs_parse() error\n"); |
657 | + goto fail; |
658 | + } |
659 | + if (rte_kvargs_count(kvlist, NULL) != 2) { |
660 | + printf("invalid count value\n"); |
661 | + goto fail; |
662 | + } |
663 | + if (rte_kvargs_count(kvlist, "foo") != 1) { |
664 | + printf("invalid count value for 'foo'\n"); |
665 | + goto fail; |
666 | + } |
667 | + if (rte_kvargs_count(kvlist, "check") != 1) { |
668 | + printf("invalid count value for 'check'\n"); |
669 | + goto fail; |
670 | + } |
671 | + rte_kvargs_free(kvlist); |
672 | + |
673 | return 0; |
674 | |
675 | fail: |
676 | @@ -179,11 +213,11 @@ static int test_invalid_kvargs(void) |
677 | const char *args_list[] = { |
678 | "wrong-key=x", /* key not in valid_keys_list */ |
679 | "foo=1,foo=", /* empty value */ |
680 | - "foo=1,,foo=2", /* empty key/value */ |
681 | "foo=1,foo", /* no value */ |
682 | "foo=1,=2", /* no key */ |
683 | "foo=[1,2", /* no closing bracket in value */ |
684 | ",=", /* also test with a smiley */ |
685 | + "foo=[", /* no value in list and no closing bracket */ |
686 | NULL }; |
687 | const char **args; |
688 | const char *valid_keys_list[] = { "foo", "check", NULL }; |
689 | @@ -197,8 +231,8 @@ static int test_invalid_kvargs(void) |
690 | rte_kvargs_free(kvlist); |
691 | goto fail; |
692 | } |
693 | - return 0; |
694 | } |
695 | + return 0; |
696 | |
697 | fail: |
698 | printf("while processing <%s>", *args); |
699 | diff --git a/app/test/test_lpm_perf.c b/app/test/test_lpm_perf.c |
700 | index a2578fe..489719c 100644 |
701 | --- a/app/test/test_lpm_perf.c |
702 | +++ b/app/test/test_lpm_perf.c |
703 | @@ -34,7 +34,7 @@ struct route_rule { |
704 | uint8_t depth; |
705 | }; |
706 | |
707 | -struct route_rule large_route_table[MAX_RULE_NUM]; |
708 | +static struct route_rule large_route_table[MAX_RULE_NUM]; |
709 | |
710 | static uint32_t num_route_entries; |
711 | #define NUM_ROUTE_ENTRIES num_route_entries |
712 | diff --git a/app/test/test_malloc.c b/app/test/test_malloc.c |
713 | index a16e28c..57f796f 100644 |
714 | --- a/app/test/test_malloc.c |
715 | +++ b/app/test/test_malloc.c |
716 | @@ -746,6 +746,18 @@ test_malloc_bad_params(void) |
717 | if (bad_ptr != NULL) |
718 | goto err_return; |
719 | |
720 | + /* rte_malloc expected to return null with size will cause overflow */ |
721 | + align = RTE_CACHE_LINE_SIZE; |
722 | + size = (size_t)-8; |
723 | + |
724 | + bad_ptr = rte_malloc(type, size, align); |
725 | + if (bad_ptr != NULL) |
726 | + goto err_return; |
727 | + |
728 | + bad_ptr = rte_realloc(NULL, size, align); |
729 | + if (bad_ptr != NULL) |
730 | + goto err_return; |
731 | + |
732 | return 0; |
733 | |
734 | err_return: |
735 | diff --git a/app/test/test_mbuf.c b/app/test/test_mbuf.c |
736 | index 61ecffc..f2922e0 100644 |
737 | --- a/app/test/test_mbuf.c |
738 | +++ b/app/test/test_mbuf.c |
739 | @@ -1144,7 +1144,7 @@ test_refcnt_mbuf(void) |
740 | tref += refcnt_lcore[slave]; |
741 | |
742 | if (tref != refcnt_lcore[master]) |
743 | - rte_panic("refernced mbufs: %u, freed mbufs: %u\n", |
744 | + rte_panic("referenced mbufs: %u, freed mbufs: %u\n", |
745 | tref, refcnt_lcore[master]); |
746 | |
747 | rte_mempool_dump(stdout, refcnt_pool); |
748 | diff --git a/app/test/test_pmd_perf.c b/app/test/test_pmd_perf.c |
749 | index d61be58..352cd47 100644 |
750 | --- a/app/test/test_pmd_perf.c |
751 | +++ b/app/test/test_pmd_perf.c |
752 | @@ -151,7 +151,7 @@ check_all_ports_link_status(uint16_t port_num, uint32_t port_mask) |
753 | "Port%d Link Up. Speed %u Mbps - %s\n", |
754 | portid, link.link_speed, |
755 | (link.link_duplex == ETH_LINK_FULL_DUPLEX) ? |
756 | - ("full-duplex") : ("half-duplex\n")); |
757 | + ("full-duplex") : ("half-duplex")); |
758 | if (link_mbps == 0) |
759 | link_mbps = link.link_speed; |
760 | } else |
761 | diff --git a/app/test/test_table_pipeline.c b/app/test/test_table_pipeline.c |
762 | index 441338a..bc412c3 100644 |
763 | --- a/app/test/test_table_pipeline.c |
764 | +++ b/app/test/test_table_pipeline.c |
765 | @@ -190,11 +190,13 @@ check_pipeline_invalid_params(void) |
766 | goto fail; |
767 | } |
768 | |
769 | - p = rte_pipeline_create(&pipeline_params_3); |
770 | - if (p != NULL) { |
771 | - RTE_LOG(INFO, PIPELINE, "%s: Configure pipeline with invalid " |
772 | - "socket\n", __func__); |
773 | - goto fail; |
774 | + if (rte_eal_has_hugepages()) { |
775 | + p = rte_pipeline_create(&pipeline_params_3); |
776 | + if (p != NULL) { |
777 | + RTE_LOG(INFO, PIPELINE, "%s: Configure pipeline with " |
778 | + "invalid socket\n", __func__); |
779 | + goto fail; |
780 | + } |
781 | } |
782 | |
783 | /* Check pipeline consistency */ |
784 | diff --git a/buildtools/options-ibverbs-static.sh b/buildtools/options-ibverbs-static.sh |
785 | index 0f285a3..0740a71 100755 |
786 | --- a/buildtools/options-ibverbs-static.sh |
787 | +++ b/buildtools/options-ibverbs-static.sh |
788 | @@ -9,6 +9,13 @@ |
789 | # |
790 | # PKG_CONFIG_PATH may be required to be set if libibverbs.pc is not installed. |
791 | |
792 | -pkg-config --libs-only-l --static libibverbs | |
793 | +lib='libibverbs' |
794 | +deps='pthread|nl' |
795 | + |
796 | +pkg-config --libs --static $lib | |
797 | tr '[:space:]' '\n' | |
798 | - sed -r '/^-l(pthread|nl)/! s,(^-l)(.*),\1:lib\2.a,' |
799 | + sed -r "/^-l($deps)/! s,(^-l)(.*),\1:lib\2.a," | # explicit .a |
800 | + sed -n '/^-[Ll]/p' | # extra link options may break with make |
801 | + tac | |
802 | + awk "/^-l:$lib.a/&&c++ {next} 1" | # drop first duplicates of main lib |
803 | + tac |
804 | diff --git a/config/common_base b/config/common_base |
805 | index 2e0c725..861f7d1 100644 |
806 | --- a/config/common_base |
807 | +++ b/config/common_base |
808 | @@ -328,7 +328,6 @@ CONFIG_RTE_LIBRTE_ICE_PMD=y |
809 | CONFIG_RTE_LIBRTE_ICE_DEBUG_RX=n |
810 | CONFIG_RTE_LIBRTE_ICE_DEBUG_TX=n |
811 | CONFIG_RTE_LIBRTE_ICE_DEBUG_TX_FREE=n |
812 | -CONFIG_RTE_LIBRTE_ICE_RX_ALLOW_BULK_ALLOC=y |
813 | CONFIG_RTE_LIBRTE_ICE_16BYTE_RX_DESC=n |
814 | |
815 | # Compile burst-oriented IAVF PMD driver |
816 | diff --git a/config/meson.build b/config/meson.build |
817 | index 4174701..78bfdf3 100644 |
818 | --- a/config/meson.build |
819 | +++ b/config/meson.build |
820 | @@ -14,6 +14,10 @@ foreach env:supported_exec_envs |
821 | set_variable('is_' + env, exec_env == env) |
822 | endforeach |
823 | |
824 | +# MS linker requires special treatment. |
825 | +# TODO: use cc.get_linker_id() with Meson >= 0.54 |
826 | +is_ms_linker = is_windows and (cc.get_id() == 'clang') |
827 | + |
828 | # set the major version, which might be used by drivers and libraries |
829 | # depending on the configuration options |
830 | pver = meson.project_version().split('.') |
831 | @@ -98,11 +102,15 @@ dpdk_conf.set('RTE_TOOLCHAIN_' + toolchain.to_upper(), 1) |
832 | |
833 | dpdk_conf.set('RTE_ARCH_64', cc.sizeof('void *') == 8) |
834 | |
835 | -add_project_link_arguments('-Wl,--no-as-needed', language: 'c') |
836 | +if not is_windows |
837 | + add_project_link_arguments('-Wl,--no-as-needed', language: 'c') |
838 | +endif |
839 | |
840 | -# use pthreads |
841 | -add_project_link_arguments('-pthread', language: 'c') |
842 | -dpdk_extra_ldflags += '-pthread' |
843 | +# use pthreads if available for the platform |
844 | +if not is_ms_linker |
845 | + add_project_link_arguments('-pthread', language: 'c') |
846 | + dpdk_extra_ldflags += '-pthread' |
847 | +endif |
848 | |
849 | # on some OS, maths functions are in a separate library |
850 | if cc.find_library('m', required : false).found() |
851 | @@ -183,6 +191,10 @@ warning_flags = [ |
852 | '-Wno-packed-not-aligned', |
853 | '-Wno-missing-field-initializers' |
854 | ] |
855 | +if cc.get_id() == 'gcc' and cc.version().version_compare('>=10.0') |
856 | +# FIXME: Bugzilla 396 |
857 | + warning_flags += '-Wno-zero-length-bounds' |
858 | +endif |
859 | if not dpdk_conf.get('RTE_ARCH_64') |
860 | # for 32-bit, don't warn about casting a 32-bit pointer to 64-bit int - it's fine!! |
861 | warning_flags += '-Wno-pointer-to-int-cast' |
862 | @@ -231,6 +243,16 @@ if is_freebsd |
863 | add_project_arguments('-D__BSD_VISIBLE', language: 'c') |
864 | endif |
865 | |
866 | +if is_windows |
867 | + # Minimum supported API is Windows 7. |
868 | + add_project_arguments('-D_WIN32_WINNT=0x0601', language: 'c') |
869 | + |
870 | + # Use MinGW-w64 stdio, because DPDK assumes ANSI-compliant formatting. |
871 | + if cc.get_id() == 'gcc' |
872 | + add_project_arguments('-D__USE_MINGW_ANSI_STDIO', language: 'c') |
873 | + endif |
874 | +endif |
875 | + |
876 | if get_option('b_lto') |
877 | if cc.has_argument('-ffat-lto-objects') |
878 | add_project_arguments('-ffat-lto-objects', language: 'c') |
879 | diff --git a/debian/changelog b/debian/changelog |
880 | index 68687e1..fb63ebe 100644 |
881 | --- a/debian/changelog |
882 | +++ b/debian/changelog |
883 | @@ -1,3 +1,29 @@ |
884 | +dpdk (19.11.3-0ubuntu0.1) focal; urgency=medium |
885 | + |
886 | + * Merge latest stable DPDK release 19.11.3; for a full list of changes see: |
887 | + https://doc.dpdk.org/guides-19.11/rel_notes/release_19_11.html#release-notes |
888 | + (LP: #1885915) |
889 | + * Remaining Changes: |
890 | + - d/control: disable libbpf-dev build dependency while waiting for the |
891 | + kernel to build it for LP: 1836708 1826410. |
892 | + - d/control: remove librte-pmd-af-xdp20.0 until libbpf-dev is available |
893 | + - d/p/revert-net-ipn3ke-fix-meson-build.patch: avoid adding new shared |
894 | + objects and binary packages |
895 | + - Revert "add new packages which didn't build" |
896 | + * Dropped changes |
897 | + - drop security patches being included in 19.11.3 |
898 | + - d/p/0001-vhost-check-log-mmap-offset-and-size-overflow.patch |
899 | + - d/p/0002-vhost-fix-vring-index-check.patch |
900 | + - d/p/0003-vhost-crypto-validate-keys-lengths.patch |
901 | + - d/p/0004-vhost-fix-translated-address-not-checked.patch |
902 | + - d/p/0005-vhost-fix-potential-memory-space-leak.patch |
903 | + - d/p/0006-vhost-fix-potential-fd-leak.patch |
904 | + * Added changes: |
905 | + - d/p/19.11-remove-zero-copy-and-client-mode-restriction.patch: avoid |
906 | + dropping a used feature with the stable update |
907 | + |
908 | + -- Christian Ehrhardt <christian.ehrhardt@canonical.com> Thu, 02 Jul 2020 08:41:28 +0200 |
909 | + |
910 | dpdk (19.11.1-0ubuntu1.1) focal-security; urgency=medium |
911 | |
912 | * SECURITY UPDATE: Integer overflow in vhost_user_set_log_base() |
913 | diff --git a/debian/patches/0001-vhost-check-log-mmap-offset-and-size-overflow.patch b/debian/patches/0001-vhost-check-log-mmap-offset-and-size-overflow.patch |
914 | deleted file mode 100644 |
915 | index 19a0d63..0000000 |
916 | --- a/debian/patches/0001-vhost-check-log-mmap-offset-and-size-overflow.patch |
917 | +++ /dev/null |
918 | @@ -1,49 +0,0 @@ |
919 | -From 342f6d57f417303b12f86d040b87f27448e4a0ae Mon Sep 17 00:00:00 2001 |
920 | -From: Maxime Coquelin <maxime.coquelin@redhat.com> |
921 | -Date: Tue, 21 Apr 2020 11:16:56 +0200 |
922 | -Subject: [PATCH 1/6] vhost: check log mmap offset and size overflow |
923 | - |
924 | -vhost_user_set_log_base() is a message handler that is |
925 | -called to handle the VHOST_USER_SET_LOG_BASE message. |
926 | -Its payload contains a 64 bit size and offset. Both are |
927 | -added up and used as a size when calling mmap(). |
928 | - |
929 | -There is no integer overflow check. If an integer overflow |
930 | -occurs a smaller memory map would be created than |
931 | -requested. Since the returned mapping is mapped as writable |
932 | -and used for logging, a memory corruption could occur. |
933 | - |
934 | -Fixes: fbc4d248b198 ("vhost: fix offset while mmaping log base address") |
935 | -Cc: stable@dpdk.org |
936 | - |
937 | -This issue has been assigned CVE-2020-10722 |
938 | - |
939 | -Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com> |
940 | -Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com> |
941 | -Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com> |
942 | -Reviewed-by: Ilja Van Sprundel <ivansprundel@ioactive.com> |
943 | ---- |
944 | - lib/librte_vhost/vhost_user.c | 6 +++--- |
945 | - 1 file changed, 3 insertions(+), 3 deletions(-) |
946 | - |
947 | -diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c |
948 | -index 40c4520c08..02962fcdbc 100644 |
949 | ---- a/lib/librte_vhost/vhost_user.c |
950 | -+++ b/lib/librte_vhost/vhost_user.c |
951 | -@@ -2059,10 +2059,10 @@ vhost_user_set_log_base(struct virtio_net **pdev, struct VhostUserMsg *msg, |
952 | - size = msg->payload.log.mmap_size; |
953 | - off = msg->payload.log.mmap_offset; |
954 | - |
955 | -- /* Don't allow mmap_offset to point outside the mmap region */ |
956 | -- if (off > size) { |
957 | -+ /* Check for mmap size and offset overflow. */ |
958 | -+ if (off >= -size) { |
959 | - RTE_LOG(ERR, VHOST_CONFIG, |
960 | -- "log offset %#"PRIx64" exceeds log size %#"PRIx64"\n", |
961 | -+ "log offset %#"PRIx64" and log size %#"PRIx64" overflow\n", |
962 | - off, size); |
963 | - return RTE_VHOST_MSG_RESULT_ERR; |
964 | - } |
965 | --- |
966 | -2.25.2 |
967 | - |
968 | diff --git a/debian/patches/0002-vhost-fix-vring-index-check.patch b/debian/patches/0002-vhost-fix-vring-index-check.patch |
969 | deleted file mode 100644 |
970 | index dfbeeb8..0000000 |
971 | --- a/debian/patches/0002-vhost-fix-vring-index-check.patch |
972 | +++ /dev/null |
973 | @@ -1,58 +0,0 @@ |
974 | -From 7e74c33644452051cc4193fd2516d97e1e4009e0 Mon Sep 17 00:00:00 2001 |
975 | -From: Maxime Coquelin <maxime.coquelin@redhat.com> |
976 | -Date: Tue, 21 Apr 2020 18:17:43 +0200 |
977 | -Subject: [PATCH 2/6] vhost: fix vring index check |
978 | - |
979 | -vhost_user_check_and_alloc_queue_pair() is used to extract |
980 | -a vring index from a payload. This function validates the |
981 | -index and is called early on in when performing message |
982 | -handling. Most message handlers depend on it correctly |
983 | -validating the vring index. |
984 | - |
985 | -Depending on the message type the vring index is in |
986 | -different parts of the payload. The function contains a |
987 | -switch/case for each type and copies the index. This is |
988 | -stored in a uint16. This index is then validated. Depending |
989 | -on the message, the source index is an unsigned int. If |
990 | -integer truncation occurs (uint->uint16) the top 16 bits |
991 | -of the index are never validated. |
992 | - |
993 | -When they are used later on (e.g. in |
994 | -vhost_user_set_vring_num() or vhost_user_set_vring_addr()) |
995 | -it can lead to out of bound indexing. The out of bound |
996 | -indexed data gets written to, and hence this can cause |
997 | -memory corruption. |
998 | - |
999 | -This patch fixes this vulnerability by declaring vring |
1000 | -index as an unsigned int in |
1001 | -vhost_user_check_and_alloc_queue_pair(). |
1002 | - |
1003 | -Fixes: 160cbc815b41 ("vhost: remove a hack on queue allocation") |
1004 | -Cc: stable@dpdk.org |
1005 | - |
1006 | -This issue has been assigned CVE-2020-10723 |
1007 | - |
1008 | -Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com> |
1009 | -Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com> |
1010 | -Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com> |
1011 | -Reviewed-by: Ilja Van Sprundel <ivansprundel@ioactive.com> |
1012 | ---- |
1013 | - lib/librte_vhost/vhost_user.c | 2 +- |
1014 | - 1 file changed, 1 insertion(+), 1 deletion(-) |
1015 | - |
1016 | -diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c |
1017 | -index 02962fcdbc..d19614265b 100644 |
1018 | ---- a/lib/librte_vhost/vhost_user.c |
1019 | -+++ b/lib/librte_vhost/vhost_user.c |
1020 | -@@ -2526,7 +2526,7 @@ static int |
1021 | - vhost_user_check_and_alloc_queue_pair(struct virtio_net *dev, |
1022 | - struct VhostUserMsg *msg) |
1023 | - { |
1024 | -- uint16_t vring_idx; |
1025 | -+ uint32_t vring_idx; |
1026 | - |
1027 | - switch (msg->request.master) { |
1028 | - case VHOST_USER_SET_VRING_KICK: |
1029 | --- |
1030 | -2.25.2 |
1031 | - |
1032 | diff --git a/debian/patches/0003-vhost-crypto-validate-keys-lengths.patch b/debian/patches/0003-vhost-crypto-validate-keys-lengths.patch |
1033 | deleted file mode 100644 |
1034 | index 0c46032..0000000 |
1035 | --- a/debian/patches/0003-vhost-crypto-validate-keys-lengths.patch |
1036 | +++ /dev/null |
1037 | @@ -1,77 +0,0 @@ |
1038 | -From 5216718e4837d4dcc6020cd5f6d5d629222bad8c Mon Sep 17 00:00:00 2001 |
1039 | -From: Maxime Coquelin <maxime.coquelin@redhat.com> |
1040 | -Date: Tue, 21 Apr 2020 19:10:09 +0200 |
1041 | -Subject: [PATCH 3/6] vhost/crypto: validate keys lengths |
1042 | - |
1043 | -transform_cipher_param() and transform_chain_param() handle |
1044 | -the payload data for the VHOST_USER_CRYPTO_CREATE_SESS |
1045 | -message. These payloads have to be validated, since it |
1046 | -could come from untrusted sources. |
1047 | - |
1048 | -Two buffers and their lenghts are defined in this payload, |
1049 | -one the the auth key and one for the cipher key. But above |
1050 | -functions do not validate the key length inputs, which could |
1051 | -lead to read out of bounds, as buffers have static sizes of |
1052 | -64 bytes for the cipher key and 512 bytes for the auth key. |
1053 | - |
1054 | -This patch adds necessary checks on the key length field |
1055 | -before being used. |
1056 | - |
1057 | -Fixes: e80a98708166 ("vhost/crypto: add session message handler") |
1058 | -Cc: stable@dpdk.org |
1059 | - |
1060 | -This issue has been assigned CVE-2020-10724 |
1061 | - |
1062 | -Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com> |
1063 | -Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com> |
1064 | -Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com> |
1065 | -Reviewed-by: Ilja Van Sprundel <ivansprundel@ioactive.com> |
1066 | ---- |
1067 | - lib/librte_vhost/vhost_crypto.c | 17 +++++++++++++++++ |
1068 | - 1 file changed, 17 insertions(+) |
1069 | - |
1070 | -diff --git a/lib/librte_vhost/vhost_crypto.c b/lib/librte_vhost/vhost_crypto.c |
1071 | -index 68911972b6..07a4115482 100644 |
1072 | ---- a/lib/librte_vhost/vhost_crypto.c |
1073 | -+++ b/lib/librte_vhost/vhost_crypto.c |
1074 | -@@ -237,6 +237,11 @@ transform_cipher_param(struct rte_crypto_sym_xform *xform, |
1075 | - if (unlikely(ret < 0)) |
1076 | - return ret; |
1077 | - |
1078 | -+ if (param->cipher_key_len > VHOST_USER_CRYPTO_MAX_CIPHER_KEY_LENGTH) { |
1079 | -+ VC_LOG_DBG("Invalid cipher key length\n"); |
1080 | -+ return -VIRTIO_CRYPTO_BADMSG; |
1081 | -+ } |
1082 | -+ |
1083 | - xform->type = RTE_CRYPTO_SYM_XFORM_CIPHER; |
1084 | - xform->cipher.key.length = param->cipher_key_len; |
1085 | - if (xform->cipher.key.length > 0) |
1086 | -@@ -287,6 +292,12 @@ transform_chain_param(struct rte_crypto_sym_xform *xforms, |
1087 | - &xform_cipher->cipher.algo); |
1088 | - if (unlikely(ret < 0)) |
1089 | - return ret; |
1090 | -+ |
1091 | -+ if (param->cipher_key_len > VHOST_USER_CRYPTO_MAX_CIPHER_KEY_LENGTH) { |
1092 | -+ VC_LOG_DBG("Invalid cipher key length\n"); |
1093 | -+ return -VIRTIO_CRYPTO_BADMSG; |
1094 | -+ } |
1095 | -+ |
1096 | - xform_cipher->type = RTE_CRYPTO_SYM_XFORM_CIPHER; |
1097 | - xform_cipher->cipher.key.length = param->cipher_key_len; |
1098 | - xform_cipher->cipher.key.data = param->cipher_key_buf; |
1099 | -@@ -301,6 +312,12 @@ transform_chain_param(struct rte_crypto_sym_xform *xforms, |
1100 | - ret = auth_algo_transform(param->hash_algo, &xform_auth->auth.algo); |
1101 | - if (unlikely(ret < 0)) |
1102 | - return ret; |
1103 | -+ |
1104 | -+ if (param->auth_key_len > VHOST_USER_CRYPTO_MAX_HMAC_KEY_LENGTH) { |
1105 | -+ VC_LOG_DBG("Invalid auth key length\n"); |
1106 | -+ return -VIRTIO_CRYPTO_BADMSG; |
1107 | -+ } |
1108 | -+ |
1109 | - xform_auth->auth.digest_length = param->digest_len; |
1110 | - xform_auth->auth.key.length = param->auth_key_len; |
1111 | - xform_auth->auth.key.data = param->auth_key_buf; |
1112 | --- |
1113 | -2.25.2 |
1114 | - |
1115 | diff --git a/debian/patches/0004-vhost-fix-translated-address-not-checked.patch b/debian/patches/0004-vhost-fix-translated-address-not-checked.patch |
1116 | deleted file mode 100644 |
1117 | index ce9fac5..0000000 |
1118 | --- a/debian/patches/0004-vhost-fix-translated-address-not-checked.patch |
1119 | +++ /dev/null |
1120 | @@ -1,46 +0,0 @@ |
1121 | -From c74f5a29dbb505bb31bec932a9bd77325e2ceea6 Mon Sep 17 00:00:00 2001 |
1122 | -From: Marvin Liu <yong.liu@intel.com> |
1123 | -Date: Wed, 8 Apr 2020 17:13:55 +0800 |
1124 | -Subject: [PATCH 4/6] vhost: fix translated address not checked |
1125 | - |
1126 | -Malicious guest can construct desc with invalid address and zero buffer |
1127 | -length. That will request vhost to check both translated address and |
1128 | -translated data length. This patch will add missed address check. |
1129 | - |
1130 | -Fixes: 75ed51697820 ("vhost: add packed ring batch dequeue") |
1131 | -Fixes: ef861692c398 ("vhost: add packed ring batch enqueue") |
1132 | -Cc: stable@dpdk.org |
1133 | - |
1134 | -This issue has been assigned CVE-2020-10725 |
1135 | - |
1136 | -Signed-off-by: Marvin Liu <yong.liu@intel.com> |
1137 | -Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com> |
1138 | ---- |
1139 | - lib/librte_vhost/virtio_net.c | 4 ++++ |
1140 | - 1 file changed, 4 insertions(+) |
1141 | - |
1142 | -diff --git a/lib/librte_vhost/virtio_net.c b/lib/librte_vhost/virtio_net.c |
1143 | -index ac2842b2d2..33f10258cf 100644 |
1144 | ---- a/lib/librte_vhost/virtio_net.c |
1145 | -+++ b/lib/librte_vhost/virtio_net.c |
1146 | -@@ -1086,6 +1086,8 @@ virtio_dev_rx_batch_packed(struct virtio_net *dev, |
1147 | - VHOST_ACCESS_RW); |
1148 | - |
1149 | - vhost_for_each_try_unroll(i, 0, PACKED_BATCH_SIZE) { |
1150 | -+ if (unlikely(!desc_addrs[i])) |
1151 | -+ return -1; |
1152 | - if (unlikely(lens[i] != descs[avail_idx + i].len)) |
1153 | - return -1; |
1154 | - } |
1155 | -@@ -1841,6 +1843,8 @@ vhost_reserve_avail_batch_packed(struct virtio_net *dev, |
1156 | - } |
1157 | - |
1158 | - vhost_for_each_try_unroll(i, 0, PACKED_BATCH_SIZE) { |
1159 | -+ if (unlikely(!desc_addrs[i])) |
1160 | -+ return -1; |
1161 | - if (unlikely((lens[i] != descs[avail_idx + i].len))) |
1162 | - return -1; |
1163 | - } |
1164 | --- |
1165 | -2.25.2 |
1166 | - |
1167 | diff --git a/debian/patches/0005-vhost-fix-potential-memory-space-leak.patch b/debian/patches/0005-vhost-fix-potential-memory-space-leak.patch |
1168 | deleted file mode 100644 |
1169 | index 4fdac0e..0000000 |
1170 | --- a/debian/patches/0005-vhost-fix-potential-memory-space-leak.patch |
1171 | +++ /dev/null |
1172 | @@ -1,52 +0,0 @@ |
1173 | -From 9566391031723e854e818bb7d965e9e677784dc4 Mon Sep 17 00:00:00 2001 |
1174 | -From: Xiaolong Ye <xiaolong.ye@intel.com> |
1175 | -Date: Wed, 8 Apr 2020 15:31:35 +0800 |
1176 | -Subject: [PATCH 5/6] vhost: fix potential memory space leak |
1177 | - |
1178 | -A malicious container which has direct access to the vhost-user socket |
1179 | -can keep sending VHOST_USER_GET_INFLIGHT_FD messages which may cause |
1180 | -leaking resources until resulting a DOS. Fix it by unmapping the |
1181 | -dev->inflight_info->addr before assigning new mapped addr to it. |
1182 | - |
1183 | -Fixes: d87f1a1cb7b6 ("vhost: support inflight info sharing") |
1184 | -Cc: stable@dpdk.org |
1185 | - |
1186 | -This issue has been assigned CVE-2020-10726 |
1187 | - |
1188 | -Signed-off-by: Xiaolong Ye <xiaolong.ye@intel.com> |
1189 | -Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com> |
1190 | ---- |
1191 | - lib/librte_vhost/vhost_user.c | 9 ++++++++- |
1192 | - 1 file changed, 8 insertions(+), 1 deletion(-) |
1193 | - |
1194 | -diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c |
1195 | -index d19614265b..2a4ba205cf 100644 |
1196 | ---- a/lib/librte_vhost/vhost_user.c |
1197 | -+++ b/lib/librte_vhost/vhost_user.c |
1198 | -@@ -1433,6 +1433,11 @@ vhost_user_get_inflight_fd(struct virtio_net **pdev, |
1199 | - } |
1200 | - memset(addr, 0, mmap_size); |
1201 | - |
1202 | -+ if (dev->inflight_info->addr) { |
1203 | -+ munmap(dev->inflight_info->addr, dev->inflight_info->size); |
1204 | -+ dev->inflight_info->addr = NULL; |
1205 | -+ } |
1206 | -+ |
1207 | - dev->inflight_info->addr = addr; |
1208 | - dev->inflight_info->size = msg->payload.inflight.mmap_size = mmap_size; |
1209 | - dev->inflight_info->fd = msg->fds[0] = fd; |
1210 | -@@ -1517,8 +1522,10 @@ vhost_user_set_inflight_fd(struct virtio_net **pdev, VhostUserMsg *msg, |
1211 | - } |
1212 | - } |
1213 | - |
1214 | -- if (dev->inflight_info->addr) |
1215 | -+ if (dev->inflight_info->addr) { |
1216 | - munmap(dev->inflight_info->addr, dev->inflight_info->size); |
1217 | -+ dev->inflight_info->addr = NULL; |
1218 | -+ } |
1219 | - |
1220 | - addr = mmap(0, mmap_size, PROT_READ | PROT_WRITE, MAP_SHARED, |
1221 | - fd, mmap_offset); |
1222 | --- |
1223 | -2.25.2 |
1224 | - |
1225 | diff --git a/debian/patches/0006-vhost-fix-potential-fd-leak.patch b/debian/patches/0006-vhost-fix-potential-fd-leak.patch |
1226 | deleted file mode 100644 |
1227 | index 11d759a..0000000 |
1228 | --- a/debian/patches/0006-vhost-fix-potential-fd-leak.patch |
1229 | +++ /dev/null |
1230 | @@ -1,80 +0,0 @@ |
1231 | -From 1cb6dbef9c15e739da9b253c53b558e93906c6c5 Mon Sep 17 00:00:00 2001 |
1232 | -From: Xuan Ding <xuan.ding@intel.com> |
1233 | -Date: Wed, 8 Apr 2020 10:19:51 +0000 |
1234 | -Subject: [PATCH 6/6] vhost: fix potential fd leak |
1235 | - |
1236 | -Vhost will create temporary file when receiving VHOST_USER_GET_INFLIGHT_FD |
1237 | -message. Malicious guest can send endless this message to drain out the |
1238 | -resource of host. |
1239 | - |
1240 | -When receiving VHOST_USER_GET_INFLIGHT_FD message repeatedly, closing the |
1241 | -file created during the last handling of this message. |
1242 | - |
1243 | -Fixes: d87f1a1cb7b666550 ("vhost: support inflight info sharing") |
1244 | -Cc: stable@dpdk.org |
1245 | - |
1246 | -This issue has been assigned CVE-2020-10726 |
1247 | - |
1248 | -Signed-off-by: Xuan Ding <xuan.ding@intel.com> |
1249 | -Signed-off-by: Xiaolong Ye <xiaolong.ye@intel.com> |
1250 | -Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com> |
1251 | ---- |
1252 | - lib/librte_vhost/vhost_user.c | 13 +++++++++++-- |
1253 | - 1 file changed, 11 insertions(+), 2 deletions(-) |
1254 | - |
1255 | -diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c |
1256 | -index 2a4ba205cf..8954f7930e 100644 |
1257 | ---- a/lib/librte_vhost/vhost_user.c |
1258 | -+++ b/lib/librte_vhost/vhost_user.c |
1259 | -@@ -206,7 +206,7 @@ vhost_backend_cleanup(struct virtio_net *dev) |
1260 | - dev->inflight_info->addr = NULL; |
1261 | - } |
1262 | - |
1263 | -- if (dev->inflight_info->fd > 0) { |
1264 | -+ if (dev->inflight_info->fd >= 0) { |
1265 | - close(dev->inflight_info->fd); |
1266 | - dev->inflight_info->fd = -1; |
1267 | - } |
1268 | -@@ -1408,6 +1408,7 @@ vhost_user_get_inflight_fd(struct virtio_net **pdev, |
1269 | - "failed to alloc dev inflight area\n"); |
1270 | - return RTE_VHOST_MSG_RESULT_ERR; |
1271 | - } |
1272 | -+ dev->inflight_info->fd = -1; |
1273 | - } |
1274 | - |
1275 | - num_queues = msg->payload.inflight.num_queues; |
1276 | -@@ -1438,6 +1439,11 @@ vhost_user_get_inflight_fd(struct virtio_net **pdev, |
1277 | - dev->inflight_info->addr = NULL; |
1278 | - } |
1279 | - |
1280 | -+ if (dev->inflight_info->fd >= 0) { |
1281 | -+ close(dev->inflight_info->fd); |
1282 | -+ dev->inflight_info->fd = -1; |
1283 | -+ } |
1284 | -+ |
1285 | - dev->inflight_info->addr = addr; |
1286 | - dev->inflight_info->size = msg->payload.inflight.mmap_size = mmap_size; |
1287 | - dev->inflight_info->fd = msg->fds[0] = fd; |
1288 | -@@ -1520,6 +1526,7 @@ vhost_user_set_inflight_fd(struct virtio_net **pdev, VhostUserMsg *msg, |
1289 | - "failed to alloc dev inflight area\n"); |
1290 | - return RTE_VHOST_MSG_RESULT_ERR; |
1291 | - } |
1292 | -+ dev->inflight_info->fd = -1; |
1293 | - } |
1294 | - |
1295 | - if (dev->inflight_info->addr) { |
1296 | -@@ -1534,8 +1541,10 @@ vhost_user_set_inflight_fd(struct virtio_net **pdev, VhostUserMsg *msg, |
1297 | - return RTE_VHOST_MSG_RESULT_ERR; |
1298 | - } |
1299 | - |
1300 | -- if (dev->inflight_info->fd) |
1301 | -+ if (dev->inflight_info->fd >= 0) { |
1302 | - close(dev->inflight_info->fd); |
1303 | -+ dev->inflight_info->fd = -1; |
1304 | -+ } |
1305 | - |
1306 | - dev->inflight_info->fd = fd; |
1307 | - dev->inflight_info->addr = addr; |
1308 | --- |
1309 | -2.25.2 |
1310 | - |
1311 | diff --git a/debian/patches/19.11-remove-zero-copy-and-client-mode-restriction.patch b/debian/patches/19.11-remove-zero-copy-and-client-mode-restriction.patch |
1312 | new file mode 100644 |
1313 | index 0000000..c46c560 |
1314 | --- /dev/null |
1315 | +++ b/debian/patches/19.11-remove-zero-copy-and-client-mode-restriction.patch |
1316 | @@ -0,0 +1,56 @@ |
1317 | +Subject: [dpdk-stable] [PATCH 19.11] vhost: remove zero-copy and client mode restriction |
1318 | +From: Kevin Traynor ktraynor@redhat.com |
1319 | + |
1320 | +Commits [1] were backported as fixes from the latest DPDK release |
1321 | +to the stable branches. They are detecting if vhost-user client and |
1322 | +zero-copy are being used together. As this can be problematic in |
1323 | +some cases, this combination was being rejected by those patches. |
1324 | + |
1325 | +It might be ok to deprecate this combination in latest DPDK, |
1326 | +but for stable releases we should not remove the functionality |
1327 | +as it may be in use with earlier releases from the same stable branch. |
1328 | + |
1329 | +In fact, we know that this functionality is used at least in OVS in |
1330 | +multiple releases/active branches. |
1331 | + |
1332 | +This patch removes the restriction of zero-copy and client mode |
1333 | +and adds a warning for the user. |
1334 | + |
1335 | +[1] |
1336 | +commit a6ae060e3995 |
1337 | +("vhost: prevent zero-copy with incompatible client mode") |
1338 | + |
1339 | +commit 1c2eaf9a9852 |
1340 | +("vhost: fix zero-copy server mode") |
1341 | + |
1342 | +Signed-off-by: Kevin Traynor <ktraynor at redhat.com> |
1343 | +Origin: upstream, http://mails.dpdk.org/archives/stable/2020-July/023584.html |
1344 | +Last-Update: 2020-07-02 |
1345 | +--- |
1346 | +Cc: xuan.ding at intel.com |
1347 | +Cc: bluca at debian.org |
1348 | +--- |
1349 | + lib/librte_vhost/socket.c | 10 ++++------ |
1350 | + 1 file changed, 4 insertions(+), 6 deletions(-) |
1351 | + |
1352 | +diff --git a/lib/librte_vhost/socket.c b/lib/librte_vhost/socket.c |
1353 | +index 2461549fea..dc3ee1e99d 100644 |
1354 | +--- a/lib/librte_vhost/socket.c |
1355 | ++++ b/lib/librte_vhost/socket.c |
1356 | +@@ -927,10 +927,8 @@ rte_vhost_driver_register(const char *path, uint64_t flags) |
1357 | + goto out_mutex; |
1358 | + } |
1359 | +- if ((flags & RTE_VHOST_USER_CLIENT) != 0) { |
1360 | +- RTE_LOG(ERR, VHOST_CONFIG, |
1361 | +- "error: zero copy is incompatible with vhost client mode\n"); |
1362 | +- ret = -1; |
1363 | +- goto out_mutex; |
1364 | +- } |
1365 | ++ if ((flags & RTE_VHOST_USER_CLIENT) != 0) |
1366 | ++ RTE_LOG(WARNING, VHOST_CONFIG, |
1367 | ++ "zero copy may be incompatible with vhost client mode\n"); |
1368 | ++ |
1369 | + vsocket->supported_features &= ~(1ULL << VIRTIO_F_IN_ORDER); |
1370 | + vsocket->features &= ~(1ULL << VIRTIO_F_IN_ORDER); |
1371 | +-- |
1372 | +2.21.3 |
1373 | diff --git a/debian/patches/series b/debian/patches/series |
1374 | index 6043eda..19aa3d3 100644 |
1375 | --- a/debian/patches/series |
1376 | +++ b/debian/patches/series |
1377 | @@ -1,7 +1,2 @@ |
1378 | revert-net-ipn3ke-fix-meson-build.patch |
1379 | -0001-vhost-check-log-mmap-offset-and-size-overflow.patch |
1380 | -0002-vhost-fix-vring-index-check.patch |
1381 | -0003-vhost-crypto-validate-keys-lengths.patch |
1382 | -0004-vhost-fix-translated-address-not-checked.patch |
1383 | -0005-vhost-fix-potential-memory-space-leak.patch |
1384 | -0006-vhost-fix-potential-fd-leak.patch |
1385 | +19.11-remove-zero-copy-and-client-mode-restriction.patch |
1386 | diff --git a/devtools/check-symbol-change.sh b/devtools/check-symbol-change.sh |
1387 | index c5434f3..ed2178e 100755 |
1388 | --- a/devtools/check-symbol-change.sh |
1389 | +++ b/devtools/check-symbol-change.sh |
1390 | @@ -17,13 +17,11 @@ build_map_changes() |
1391 | # map files are altered, and all section/symbol names |
1392 | # appearing between a triggering of this rule and the |
1393 | # next trigger of this rule are associated with this file |
1394 | - /[-+] a\/.*\.map/ {map=$2; in_map=1} |
1395 | + /[-+] [ab]\/.*\.map/ {map=$2; in_map=1; next} |
1396 | |
1397 | - # Same pattern as above, only it matches on anything that |
1398 | - # does not end in 'map', indicating we have left the map chunk. |
1399 | - # When we hit this, turn off the in_map variable, which |
1400 | - # supresses the subordonate rules below |
1401 | - /[-+] a\/.*\.[^map]/ {in_map=0} |
1402 | + # The previous rule catches all .map files, anything else |
1403 | + # indicates we left the map chunk. |
1404 | + /[-+] [ab]\// {in_map=0} |
1405 | |
1406 | # Triggering this rule, which starts a line and ends it |
1407 | # with a { identifies a versioned section. The section name is |
1408 | diff --git a/devtools/checkpatches.sh b/devtools/checkpatches.sh |
1409 | index b16bace..9902e2a 100755 |
1410 | --- a/devtools/checkpatches.sh |
1411 | +++ b/devtools/checkpatches.sh |
1412 | @@ -70,6 +70,14 @@ check_forbidden_additions() { # <patch> |
1413 | -f $(dirname $(readlink -f $0))/check-forbidden-tokens.awk \ |
1414 | "$1" || res=1 |
1415 | |
1416 | + # links must prefer https over http |
1417 | + awk -v FOLDERS='doc' \ |
1418 | + -v EXPRESSIONS='http://.*dpdk.org' \ |
1419 | + -v RET_ON_FAIL=1 \ |
1420 | + -v MESSAGE='Using non https link to dpdk.org' \ |
1421 | + -f $(dirname $(readlink -f $0))/check-forbidden-tokens.awk \ |
1422 | + "$1" || res=1 |
1423 | + |
1424 | return $res |
1425 | } |
1426 | |
1427 | diff --git a/doc/api/doxy-api-index.md b/doc/api/doxy-api-index.md |
1428 | index dff496b..d7c8bd2 100644 |
1429 | --- a/doc/api/doxy-api-index.md |
1430 | +++ b/doc/api/doxy-api-index.md |
1431 | @@ -1,4 +1,4 @@ |
1432 | -API {#index} |
1433 | +API |
1434 | === |
1435 | |
1436 | <!-- |
1437 | diff --git a/doc/api/doxy-api.conf.in b/doc/api/doxy-api.conf.in |
1438 | index 1c4392e..12f0a26 100644 |
1439 | --- a/doc/api/doxy-api.conf.in |
1440 | +++ b/doc/api/doxy-api.conf.in |
1441 | @@ -3,6 +3,7 @@ |
1442 | |
1443 | PROJECT_NAME = DPDK |
1444 | PROJECT_NUMBER = @VERSION@ |
1445 | +USE_MDFILE_AS_MAINPAGE = @TOPDIR@/doc/api/doxy-api-index.md |
1446 | INPUT = @TOPDIR@/doc/api/doxy-api-index.md \ |
1447 | @TOPDIR@/drivers/bus/vdev \ |
1448 | @TOPDIR@/drivers/crypto/scheduler \ |
1449 | diff --git a/doc/guides/conf.py b/doc/guides/conf.py |
1450 | index 0892c06..c1a82be 100644 |
1451 | --- a/doc/guides/conf.py |
1452 | +++ b/doc/guides/conf.py |
1453 | @@ -314,16 +314,22 @@ def print_table_css(outfile, table_id): |
1454 | cursor: default; |
1455 | overflow: hidden; |
1456 | } |
1457 | + table#idx p { |
1458 | + margin: 0; |
1459 | + line-height: inherit; |
1460 | + } |
1461 | table#idx th, table#idx td { |
1462 | text-align: center; |
1463 | + border: solid 1px #ddd; |
1464 | } |
1465 | table#idx th { |
1466 | - font-size: 72%; |
1467 | + padding: 0.5em 0; |
1468 | + } |
1469 | + table#idx th, table#idx th p { |
1470 | + font-size: 11px; |
1471 | white-space: pre-wrap; |
1472 | vertical-align: top; |
1473 | - padding: 0.5em 0; |
1474 | min-width: 0.9em; |
1475 | - width: 2em; |
1476 | } |
1477 | table#idx col:first-child { |
1478 | width: 0; |
1479 | @@ -332,9 +338,11 @@ def print_table_css(outfile, table_id): |
1480 | vertical-align: bottom; |
1481 | } |
1482 | table#idx td { |
1483 | - font-size: 70%; |
1484 | padding: 1px; |
1485 | } |
1486 | + table#idx td, table#idx td p { |
1487 | + font-size: 11px; |
1488 | + } |
1489 | table#idx td:first-child { |
1490 | padding-left: 1em; |
1491 | text-align: left; |
1492 | @@ -410,4 +418,8 @@ def setup(app): |
1493 | # Process the numref references once the doctree has been created. |
1494 | app.connect('doctree-resolved', process_numref) |
1495 | |
1496 | - app.add_stylesheet('css/custom.css') |
1497 | + try: |
1498 | + # New function in sphinx 1.8 |
1499 | + app.add_css_file('css/custom.css') |
1500 | + except: |
1501 | + app.add_stylesheet('css/custom.css') |
1502 | diff --git a/doc/guides/contributing/abi_policy.rst b/doc/guides/contributing/abi_policy.rst |
1503 | index 05ca959..2198519 100644 |
1504 | --- a/doc/guides/contributing/abi_policy.rst |
1505 | +++ b/doc/guides/contributing/abi_policy.rst |
1506 | @@ -220,19 +220,18 @@ Examples of ABI Changes |
1507 | The following are examples of allowable ABI changes occurring between |
1508 | declarations of major ABI versions. |
1509 | |
1510 | -* DPDK 19.11 release, defines the function ``rte_foo()``, and ``rte_foo()`` |
1511 | - as part of the major ABI version ``20``. |
1512 | +* DPDK 19.11 release defines the function ``rte_foo()`` ; ``rte_foo()`` |
1513 | + is part of the major ABI version ``20``. |
1514 | |
1515 | -* DPDK 20.02 release defines a new function ``rte_foo(uint8_t bar)``, and |
1516 | - this is not a problem as long as the symbol ``rte_foo@DPDK20`` is |
1517 | +* DPDK 20.02 release defines a new function ``rte_foo(uint8_t bar)``. |
1518 | + This is not a problem as long as the symbol ``rte_foo@DPDK20`` is |
1519 | preserved through :ref:`abi_versioning`. |
1520 | |
1521 | - The new function may be marked with the ``__rte_experimental`` tag for a |
1522 | number of releases, as described in the section :ref:`experimental_apis`. |
1523 | |
1524 | - - Once ``rte_foo(uint8_t bar)`` becomes non-experimental ``rte_foo()`` is then |
1525 | - declared as ``__rte_depreciated``, with an associated deprecation notice |
1526 | - provided. |
1527 | + - Once ``rte_foo(uint8_t bar)`` becomes non-experimental, ``rte_foo()`` is |
1528 | + declared as ``__rte_deprecated`` and an deprecation notice is provided. |
1529 | |
1530 | * DPDK 19.11 is not re-released to include ``rte_foo(uint8_t bar)``, the new |
1531 | version of ``rte_foo`` only exists from DPDK 20.02 onwards as described in the |
1532 | @@ -242,13 +241,13 @@ declarations of major ABI versions. |
1533 | rte_baz()``. This function may or may not exist in the DPDK 20.05 release. |
1534 | |
1535 | * An application ``dPacket`` wishes to use ``rte_foo(uint8_t bar)``, before the |
1536 | - declaration of the DPDK ``21`` major API version. The application can only |
1537 | + declaration of the DPDK ``21`` major ABI version. The application can only |
1538 | ensure its runtime dependencies are met by specifying ``DPDK (>= 20.2)`` as |
1539 | - an explicit package dependency, as the soname only may only indicate the |
1540 | + an explicit package dependency, as the soname can only indicate the |
1541 | supported major ABI version. |
1542 | |
1543 | * At the release of DPDK 20.11, the function ``rte_foo(uint8_t bar)`` becomes |
1544 | - formally part of then new major ABI version DPDK 21.0 and ``rte_foo()`` may be |
1545 | + formally part of then new major ABI version DPDK ``21`` and ``rte_foo()`` may be |
1546 | removed. |
1547 | |
1548 | .. _deprecation_notices: |
1549 | @@ -322,6 +321,6 @@ Libraries |
1550 | |
1551 | Libraries marked as ``experimental`` are entirely not considered part of an ABI |
1552 | version, and may change without warning at any time. Experimental libraries |
1553 | -always have a major version of ``0`` to indicate they exist outside of |
1554 | +always have a major ABI version of ``0`` to indicate they exist outside of |
1555 | :ref:`abi_versioning` , with the minor version incremented with each ABI change |
1556 | to library. |
1557 | diff --git a/doc/guides/contributing/abi_versioning.rst b/doc/guides/contributing/abi_versioning.rst |
1558 | index a21f4e7..ea9d996 100644 |
1559 | --- a/doc/guides/contributing/abi_versioning.rst |
1560 | +++ b/doc/guides/contributing/abi_versioning.rst |
1561 | @@ -200,7 +200,7 @@ private, is safe), but it also requires modifying the code as follows |
1562 | Note also that, being a public function, the header file prototype must also be |
1563 | changed, as must all the call sites, to reflect the new ABI footprint. We will |
1564 | maintain previous ABI versions that are accessible only to previously compiled |
1565 | -binaries |
1566 | +binaries. |
1567 | |
1568 | The addition of a parameter to the function is ABI breaking as the function is |
1569 | public, and existing application may use it in its current form. However, the |
1570 | @@ -266,12 +266,12 @@ This file needs to be modified as follows |
1571 | |
1572 | } DPDK_20; |
1573 | |
1574 | -The addition of the new block tells the linker that a new version node is |
1575 | -available (DPDK_21), which contains the symbol rte_acl_create, and inherits |
1576 | +The addition of the new block tells the linker that a new version node |
1577 | +``DPDK_21`` is available, which contains the symbol rte_acl_create, and inherits |
1578 | the symbols from the DPDK_20 node. This list is directly translated into a |
1579 | -list of exported symbols when DPDK is compiled as a shared library |
1580 | +list of exported symbols when DPDK is compiled as a shared library. |
1581 | |
1582 | -Next, we need to specify in the code which function map to the rte_acl_create |
1583 | +Next, we need to specify in the code which function maps to the rte_acl_create |
1584 | symbol at which versions. First, at the site of the initial symbol definition, |
1585 | we need to update the function so that it is uniquely named, and not in conflict |
1586 | with the public symbol name |
1587 | @@ -288,24 +288,29 @@ with the public symbol name |
1588 | ... |
1589 | |
1590 | Note that the base name of the symbol was kept intact, as this is conducive to |
1591 | -the macros used for versioning symbols and we have annotated the function as an |
1592 | -implementation of versioned symbol. That is our next step, mapping this new |
1593 | -symbol name to the initial symbol name at version node 20. Immediately after |
1594 | -the function, we add this line of code |
1595 | +the macros used for versioning symbols and we have annotated the function as |
1596 | +``__vsym``, an implementation of a versioned symbol . That is our next step, |
1597 | +mapping this new symbol name to the initial symbol name at version node 20. |
1598 | +Immediately after the function, we add the VERSION_SYMBOL macro. |
1599 | |
1600 | .. code-block:: c |
1601 | |
1602 | + #include <rte_function_versioning.h> |
1603 | + |
1604 | + ... |
1605 | VERSION_SYMBOL(rte_acl_create, _v20, 20); |
1606 | |
1607 | Remembering to also add the rte_function_versioning.h header to the requisite c |
1608 | -file where these changes are being made. The above macro instructs the linker to |
1609 | +file where these changes are being made. The macro instructs the linker to |
1610 | create a new symbol ``rte_acl_create@DPDK_20``, which matches the symbol created |
1611 | in older builds, but now points to the above newly named function. We have now |
1612 | mapped the original rte_acl_create symbol to the original function (but with a |
1613 | new name). |
1614 | |
1615 | -Next, we need to create the 21 version of the symbol. We create a new function |
1616 | -name, with a different suffix, and implement it appropriately |
1617 | +Please see the section :ref:`Enabling versioning macros |
1618 | +<enabling_versioning_macros>` to enable this macro in the meson/ninja build. |
1619 | +Next, we need to create the new ``v21`` version of the symbol. We create a new |
1620 | +function name, with the ``v21`` suffix, and implement it appropriately. |
1621 | |
1622 | .. code-block:: c |
1623 | |
1624 | @@ -320,35 +325,58 @@ name, with a different suffix, and implement it appropriately |
1625 | } |
1626 | |
1627 | This code serves as our new API call. Its the same as our old call, but adds the |
1628 | -new parameter in place. Next we need to map this function to the symbol |
1629 | -``rte_acl_create@DPDK_21``. To do this, we modify the public prototype of the |
1630 | -call in the header file, adding the macro there to inform all including |
1631 | -applications, that on re-link, the default rte_acl_create symbol should point to |
1632 | -this function. Note that we could do this by simply naming the function above |
1633 | -rte_acl_create, and the linker would chose the most recent version tag to apply |
1634 | -in the version script, but we can also do this in the header file |
1635 | +new parameter in place. Next we need to map this function to the new default |
1636 | +symbol ``rte_acl_create@DPDK_21``. To do this, immediately after the function, |
1637 | +we add the BIND_DEFAULT_SYMBOL macro. |
1638 | + |
1639 | +.. code-block:: c |
1640 | + |
1641 | + #include <rte_function_versioning.h> |
1642 | + |
1643 | + ... |
1644 | + BIND_DEFAULT_SYMBOL(rte_acl_create, _v21, 21); |
1645 | + |
1646 | +The macro instructs the linker to create the new default symbol |
1647 | +``rte_acl_create@DPDK_21``, which points to the above newly named function. |
1648 | + |
1649 | +We finally modify the prototype of the call in the public header file, |
1650 | +such that it contains both versions of the symbol and the public API. |
1651 | |
1652 | .. code-block:: c |
1653 | |
1654 | struct rte_acl_ctx * |
1655 | - -rte_acl_create(const struct rte_acl_param *param); |
1656 | - +rte_acl_create_v21(const struct rte_acl_param *param, int debug); |
1657 | - +BIND_DEFAULT_SYMBOL(rte_acl_create, _v21, 21); |
1658 | - |
1659 | -The BIND_DEFAULT_SYMBOL macro explicitly tells applications that include this |
1660 | -header, to link to the rte_acl_create_v21 function and apply the DPDK_21 |
1661 | -version node to it. This method is more explicit and flexible than just |
1662 | -re-implementing the exact symbol name, and allows for other features (such as |
1663 | -linking to the old symbol version by default, when the new ABI is to be opt-in |
1664 | -for a period. |
1665 | - |
1666 | -One last thing we need to do. Note that we've taken what was a public symbol, |
1667 | -and duplicated it into two uniquely and differently named symbols. We've then |
1668 | -mapped each of those back to the public symbol ``rte_acl_create`` with different |
1669 | -version tags. This only applies to dynamic linking, as static linking has no |
1670 | -notion of versioning. That leaves this code in a position of no longer having a |
1671 | -symbol simply named ``rte_acl_create`` and a static build will fail on that |
1672 | -missing symbol. |
1673 | + rte_acl_create(const struct rte_acl_param *param); |
1674 | + |
1675 | + struct rte_acl_ctx * __vsym |
1676 | + rte_acl_create_v20(const struct rte_acl_param *param); |
1677 | + |
1678 | + struct rte_acl_ctx * __vsym |
1679 | + rte_acl_create_v21(const struct rte_acl_param *param, int debug); |
1680 | + |
1681 | + |
1682 | +And that's it, on the next shared library rebuild, there will be two versions of |
1683 | +rte_acl_create, an old DPDK_20 version, used by previously built applications, |
1684 | +and a new DPDK_21 version, used by future built applications. |
1685 | + |
1686 | +.. note:: |
1687 | + |
1688 | + **Before you leave**, please take care reviewing the sections on |
1689 | + :ref:`mapping static symbols <mapping_static_symbols>`, |
1690 | + :ref:`enabling versioning macros <enabling_versioning_macros>`, |
1691 | + and :ref:`ABI deprecation <abi_deprecation>`. |
1692 | + |
1693 | + |
1694 | +.. _mapping_static_symbols: |
1695 | + |
1696 | +Mapping static symbols |
1697 | +______________________ |
1698 | + |
1699 | +Now we've taken what was a public symbol, and duplicated it into two uniquely |
1700 | +and differently named symbols. We've then mapped each of those back to the |
1701 | +public symbol ``rte_acl_create`` with different version tags. This only applies |
1702 | +to dynamic linking, as static linking has no notion of versioning. That leaves |
1703 | +this code in a position of no longer having a symbol simply named |
1704 | +``rte_acl_create`` and a static build will fail on that missing symbol. |
1705 | |
1706 | To correct this, we can simply map a function of our choosing back to the public |
1707 | symbol in the static build with the ``MAP_STATIC_SYMBOL`` macro. Generally the |
1708 | @@ -369,15 +397,31 @@ defined, we add this |
1709 | That tells the compiler that, when building a static library, any calls to the |
1710 | symbol ``rte_acl_create`` should be linked to ``rte_acl_create_v21`` |
1711 | |
1712 | -That's it, on the next shared library rebuild, there will be two versions of |
1713 | -rte_acl_create, an old DPDK_20 version, used by previously built applications, |
1714 | -and a new DPDK_21 version, used by future built applications. |
1715 | |
1716 | +.. _enabling_versioning_macros: |
1717 | + |
1718 | +Enabling versioning macros |
1719 | +__________________________ |
1720 | + |
1721 | +Finally, we need to indicate to the meson/ninja build system |
1722 | +to enable versioning macros when building the |
1723 | +library or driver. In the libraries or driver where we have added symbol |
1724 | +versioning, in the ``meson.build`` file we add the following |
1725 | + |
1726 | +.. code-block:: none |
1727 | + |
1728 | + use_function_versioning = true |
1729 | + |
1730 | +at the start of the head of the file. This will indicate to the tool-chain to |
1731 | +enable the function version macros when building. There is no corresponding |
1732 | +directive required for the ``make`` build system. |
1733 | + |
1734 | +.. _abi_deprecation: |
1735 | |
1736 | Deprecating part of a public API |
1737 | ________________________________ |
1738 | |
1739 | -Lets assume that you've done the above update, and in preparation for the next |
1740 | +Lets assume that you've done the above updates, and in preparation for the next |
1741 | major ABI version you decide you would like to retire the old version of the |
1742 | function. After having gone through the ABI deprecation announcement process, |
1743 | removal is easy. Start by removing the symbol from the requisite version map |
1744 | @@ -421,8 +465,8 @@ Next remove the corresponding versioned export. |
1745 | |
1746 | |
1747 | Note that the internal function definition could also be removed, but its used |
1748 | -in our example by the newer version v21, so we leave it in place and declare it |
1749 | -as static. This is a coding style choice. |
1750 | +in our example by the newer version ``v21``, so we leave it in place and declare |
1751 | +it as static. This is a coding style choice. |
1752 | |
1753 | .. _deprecating_entire_abi: |
1754 | |
1755 | diff --git a/doc/guides/contributing/documentation.rst b/doc/guides/contributing/documentation.rst |
1756 | index 27e4b13..3924771 100644 |
1757 | --- a/doc/guides/contributing/documentation.rst |
1758 | +++ b/doc/guides/contributing/documentation.rst |
1759 | @@ -82,7 +82,7 @@ added to by the developer. |
1760 | * **API documentation** |
1761 | |
1762 | The API documentation explains how to use the public DPDK functions. |
1763 | - The `API index page <http://doc.dpdk.org/api/>`_ shows the generated API documentation with related groups of functions. |
1764 | + The `API index page <https://doc.dpdk.org/api/>`_ shows the generated API documentation with related groups of functions. |
1765 | |
1766 | The API documentation should be updated via Doxygen comments when new functions are added. |
1767 | |
1768 | @@ -561,14 +561,14 @@ Hyperlinks |
1769 | ~~~~~~~~~~ |
1770 | |
1771 | * Links to external websites can be plain URLs. |
1772 | - The following is rendered as http://dpdk.org:: |
1773 | + The following is rendered as https://dpdk.org:: |
1774 | |
1775 | - http://dpdk.org |
1776 | + https://dpdk.org |
1777 | |
1778 | * They can contain alternative text. |
1779 | - The following is rendered as `Check out DPDK <http://dpdk.org>`_:: |
1780 | + The following is rendered as `Check out DPDK <https://dpdk.org>`_:: |
1781 | |
1782 | - `Check out DPDK <http://dpdk.org>`_ |
1783 | + `Check out DPDK <https://dpdk.org>`_ |
1784 | |
1785 | * An internal link can be generated by placing labels in the document with the format ``.. _label_name``. |
1786 | |
1787 | @@ -666,7 +666,7 @@ The following are some guidelines for use of Doxygen in the DPDK API documentati |
1788 | */ |
1789 | |
1790 | In the API documentation the functions will be rendered as links, see the |
1791 | - `online section of the rte_ethdev.h docs <http://doc.dpdk.org/api/rte__ethdev_8h.html>`_ that contains the above text. |
1792 | + `online section of the rte_ethdev.h docs <https://doc.dpdk.org/api/rte__ethdev_8h.html>`_ that contains the above text. |
1793 | |
1794 | * The ``@see`` keyword can be used to create a *see also* link to another file or library. |
1795 | This directive should be placed on one line at the bottom of the documentation section. |
1796 | diff --git a/doc/guides/contributing/patches.rst b/doc/guides/contributing/patches.rst |
1797 | index 0686450..5ca0377 100644 |
1798 | --- a/doc/guides/contributing/patches.rst |
1799 | +++ b/doc/guides/contributing/patches.rst |
1800 | @@ -28,9 +28,9 @@ The DPDK development process has the following features: |
1801 | * All sub-repositories are merged into main repository for ``-rc1`` and ``-rc2`` versions of the release. |
1802 | * After the ``-rc2`` release all patches should target the main repository. |
1803 | |
1804 | -The mailing list for DPDK development is `dev@dpdk.org <http://mails.dpdk.org/archives/dev/>`_. |
1805 | -Contributors will need to `register for the mailing list <http://mails.dpdk.org/listinfo/dev>`_ in order to submit patches. |
1806 | -It is also worth registering for the DPDK `Patchwork <http://patches.dpdk.org/project/dpdk/list/>`_ |
1807 | +The mailing list for DPDK development is `dev@dpdk.org <https://mails.dpdk.org/archives/dev/>`_. |
1808 | +Contributors will need to `register for the mailing list <https://mails.dpdk.org/listinfo/dev>`_ in order to submit patches. |
1809 | +It is also worth registering for the DPDK `Patchwork <https://patches.dpdk.org/project/dpdk/list/>`_ |
1810 | |
1811 | If you are using the GitHub service, you can link your repository to |
1812 | the ``travis-ci.org`` build service. When you push patches to your GitHub |
1813 | @@ -130,12 +130,12 @@ The source code can be cloned using either of the following: |
1814 | main repository:: |
1815 | |
1816 | git clone git://dpdk.org/dpdk |
1817 | - git clone http://dpdk.org/git/dpdk |
1818 | + git clone https://dpdk.org/git/dpdk |
1819 | |
1820 | -sub-repositories (`list <http://git.dpdk.org/next>`_):: |
1821 | +sub-repositories (`list <https://git.dpdk.org/next>`_):: |
1822 | |
1823 | git clone git://dpdk.org/next/dpdk-next-* |
1824 | - git clone http://dpdk.org/git/next/dpdk-next-* |
1825 | + git clone https://dpdk.org/git/next/dpdk-next-* |
1826 | |
1827 | Make your Changes |
1828 | ----------------- |
1829 | @@ -182,7 +182,7 @@ A good way of thinking about whether a patch should be split is to consider whet |
1830 | applied without dependencies as a backport. |
1831 | |
1832 | It is better to keep the related documentation changes in the same patch |
1833 | -file as the code, rather than one big documentation patch at then end of a |
1834 | +file as the code, rather than one big documentation patch at the end of a |
1835 | patchset. This makes it easier for future maintenance and development of the |
1836 | code. |
1837 | |
1838 | @@ -320,7 +320,7 @@ Patch for Stable Releases |
1839 | ~~~~~~~~~~~~~~~~~~~~~~~~~ |
1840 | |
1841 | All fix patches to the master branch that are candidates for backporting |
1842 | -should also be CCed to the `stable@dpdk.org <http://mails.dpdk.org/listinfo/stable>`_ |
1843 | +should also be CCed to the `stable@dpdk.org <https://mails.dpdk.org/listinfo/stable>`_ |
1844 | mailing list. |
1845 | In the commit message body the Cc: stable@dpdk.org should be inserted as follows:: |
1846 | |
1847 | @@ -423,7 +423,7 @@ are loaded from the following files, in order of preference:: |
1848 | ~/.config/dpdk/devel.config |
1849 | /etc/dpdk/devel.config. |
1850 | |
1851 | -Once the environment variable the script can be run as follows:: |
1852 | +Once the environment variable is set, the script can be run as follows:: |
1853 | |
1854 | devtools/checkpatches.sh ~/patch/ |
1855 | |
1856 | @@ -548,7 +548,7 @@ If the patch is in relation to a previous email thread you can add it to the sam |
1857 | git send-email --to dev@dpdk.org --in-reply-to <1234-foo@bar.com> 000*.patch |
1858 | |
1859 | The Message ID can be found in the raw text of emails or at the top of each Patchwork patch, |
1860 | -`for example <http://patches.dpdk.org/patch/7646/>`_. |
1861 | +`for example <https://patches.dpdk.org/patch/7646/>`_. |
1862 | Shallow threading (``--thread --no-chain-reply-to``) is preferred for a patch series. |
1863 | |
1864 | Once submitted your patches will appear on the mailing list and in Patchwork. |
1865 | diff --git a/doc/guides/contributing/stable.rst b/doc/guides/contributing/stable.rst |
1866 | index 4d38bb8..021c762 100644 |
1867 | --- a/doc/guides/contributing/stable.rst |
1868 | +++ b/doc/guides/contributing/stable.rst |
1869 | @@ -51,7 +51,7 @@ agreement and a commitment from a maintainer. The current policy is that each |
1870 | year's November (X.11) release will be maintained as an LTS for 2 years. |
1871 | |
1872 | After the X.11 release, an LTS branch will be created for it at |
1873 | -http://git.dpdk.org/dpdk-stable where bugfixes will be backported to. |
1874 | +https://git.dpdk.org/dpdk-stable where bugfixes will be backported to. |
1875 | |
1876 | A LTS release may align with the declaration of a new major ABI version, |
1877 | please read the :doc:`abi_policy` for more information. |
1878 | @@ -107,7 +107,7 @@ The Stable and LTS release are coordinated on the stable@dpdk.org mailing |
1879 | list. |
1880 | |
1881 | All fix patches to the master branch that are candidates for backporting |
1882 | -should also be CCed to the `stable@dpdk.org <http://mails.dpdk.org/listinfo/stable>`_ |
1883 | +should also be CCed to the `stable@dpdk.org <https://mails.dpdk.org/listinfo/stable>`_ |
1884 | mailing list. |
1885 | |
1886 | |
1887 | @@ -118,7 +118,7 @@ A Stable Release will be released by: |
1888 | |
1889 | * Tagging the release with YY.MM.n (year, month, number). |
1890 | * Uploading a tarball of the release to dpdk.org. |
1891 | -* Sending an announcement to the `announce@dpdk.org <http://mails.dpdk.org/listinfo/announce>`_ |
1892 | +* Sending an announcement to the `announce@dpdk.org <https://mails.dpdk.org/listinfo/announce>`_ |
1893 | list. |
1894 | |
1895 | -Stable releases are available on the `dpdk.org download page <http://core.dpdk.org/download/>`_. |
1896 | +Stable releases are available on the `dpdk.org download page <https://core.dpdk.org/download/>`_. |
1897 | diff --git a/doc/guides/contributing/vulnerability.rst b/doc/guides/contributing/vulnerability.rst |
1898 | index 5484119..da00acd 100644 |
1899 | --- a/doc/guides/contributing/vulnerability.rst |
1900 | +++ b/doc/guides/contributing/vulnerability.rst |
1901 | @@ -36,11 +36,11 @@ Report |
1902 | |
1903 | Do not use Bugzilla (unsecured). |
1904 | Instead, send GPG-encrypted emails |
1905 | -to `security@dpdk.org <http://core.dpdk.org/security#contact>`_. |
1906 | +to `security@dpdk.org <https://core.dpdk.org/security#contact>`_. |
1907 | Anyone can post to this list. |
1908 | In order to reduce the disclosure of a vulnerability in the early stages, |
1909 | membership of this list is intentionally limited to a `small number of people |
1910 | -<http://mails.dpdk.org/roster/security>`_. |
1911 | +<https://mails.dpdk.org/roster/security>`_. |
1912 | |
1913 | It is additionally encouraged to GPG-sign one-on-one conversations |
1914 | as part of the security process. |
1915 | @@ -188,7 +188,7 @@ Downstream stakeholders are expected not to deploy or disclose patches |
1916 | until the embargo is passed, otherwise they will be removed from the list. |
1917 | |
1918 | Downstream stakeholders (in `security-prerelease list |
1919 | -<http://mails.dpdk.org/roster/security-prerelease>`_), are: |
1920 | +<https://mails.dpdk.org/roster/security-prerelease>`_), are: |
1921 | |
1922 | * Operating system vendors known to package DPDK |
1923 | * Major DPDK users, considered trustworthy by the technical board, who |
1924 | diff --git a/doc/guides/cryptodevs/aesni_gcm.rst b/doc/guides/cryptodevs/aesni_gcm.rst |
1925 | index 151aa30..a8ea320 100644 |
1926 | --- a/doc/guides/cryptodevs/aesni_gcm.rst |
1927 | +++ b/doc/guides/cryptodevs/aesni_gcm.rst |
1928 | @@ -45,6 +45,19 @@ can be downloaded in `<https://github.com/01org/intel-ipsec-mb/archive/v0.53.zip |
1929 | make |
1930 | make install |
1931 | |
1932 | +The library requires NASM to be built. Depending on the library version, it might require a minimum NASM version (e.g. v0.53 requires at least NASM 2.13.03). |
1933 | + |
1934 | +NASM is packaged for different OS. However, on some OS the version is too old, so a manual installation is required. |
1935 | +In that case, NASM can be downloaded from |
1936 | +`NASM website <https://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D>`_. |
1937 | +Once it is downloaded, extract it and follow these steps: |
1938 | + |
1939 | +.. code-block:: console |
1940 | + |
1941 | + ./configure |
1942 | + make |
1943 | + make install |
1944 | + |
1945 | As a reference, the following table shows a mapping between the past DPDK versions |
1946 | and the external crypto libraries supported by them: |
1947 | |
1948 | diff --git a/doc/guides/cryptodevs/aesni_mb.rst b/doc/guides/cryptodevs/aesni_mb.rst |
1949 | index 5d8fb46..ca6c169 100644 |
1950 | --- a/doc/guides/cryptodevs/aesni_mb.rst |
1951 | +++ b/doc/guides/cryptodevs/aesni_mb.rst |
1952 | @@ -72,6 +72,19 @@ can be downloaded from `<https://github.com/01org/intel-ipsec-mb/archive/v0.53.z |
1953 | make |
1954 | make install |
1955 | |
1956 | +The library requires NASM to be built. Depending on the library version, it might require a minimum NASM version (e.g. v0.53 requires at least NASM 2.13.03). |
1957 | + |
1958 | +NASM is packaged for different OS. However, on some OS the version is too old, so a manual installation is required. |
1959 | +In that case, NASM can be downloaded from |
1960 | +`NASM website <https://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D>`_. |
1961 | +Once it is downloaded, extract it and follow these steps: |
1962 | + |
1963 | +.. code-block:: console |
1964 | + |
1965 | + ./configure |
1966 | + make |
1967 | + make install |
1968 | + |
1969 | As a reference, the following table shows a mapping between the past DPDK versions |
1970 | and the Multi-Buffer library version supported by them: |
1971 | |
1972 | diff --git a/doc/guides/cryptodevs/features/qat.ini b/doc/guides/cryptodevs/features/qat.ini |
1973 | index 6e350eb..a722419 100644 |
1974 | --- a/doc/guides/cryptodevs/features/qat.ini |
1975 | +++ b/doc/guides/cryptodevs/features/qat.ini |
1976 | @@ -44,10 +44,15 @@ ZUC EEA3 = Y |
1977 | [Auth] |
1978 | NULL = Y |
1979 | MD5 HMAC = Y |
1980 | +SHA1 = Y |
1981 | SHA1 HMAC = Y |
1982 | +SHA224 = Y |
1983 | SHA224 HMAC = Y |
1984 | +SHA256 = Y |
1985 | SHA256 HMAC = Y |
1986 | +SHA384 = Y |
1987 | SHA384 HMAC = Y |
1988 | +SHA512 = Y |
1989 | SHA512 HMAC = Y |
1990 | AES GMAC = Y |
1991 | SNOW3G UIA2 = Y |
1992 | diff --git a/doc/guides/cryptodevs/qat.rst b/doc/guides/cryptodevs/qat.rst |
1993 | index 6197875..bb04590 100644 |
1994 | --- a/doc/guides/cryptodevs/qat.rst |
1995 | +++ b/doc/guides/cryptodevs/qat.rst |
1996 | @@ -52,10 +52,15 @@ Cipher algorithms: |
1997 | |
1998 | Hash algorithms: |
1999 | |
2000 | +* ``RTE_CRYPTO_AUTH_SHA1`` |
2001 | * ``RTE_CRYPTO_AUTH_SHA1_HMAC`` |
2002 | +* ``RTE_CRYPTO_AUTH_SHA224`` |
2003 | * ``RTE_CRYPTO_AUTH_SHA224_HMAC`` |
2004 | +* ``RTE_CRYPTO_AUTH_SHA256`` |
2005 | * ``RTE_CRYPTO_AUTH_SHA256_HMAC`` |
2006 | +* ``RTE_CRYPTO_AUTH_SHA384`` |
2007 | * ``RTE_CRYPTO_AUTH_SHA384_HMAC`` |
2008 | +* ``RTE_CRYPTO_AUTH_SHA512`` |
2009 | * ``RTE_CRYPTO_AUTH_SHA512_HMAC`` |
2010 | * ``RTE_CRYPTO_AUTH_AES_XCBC_MAC`` |
2011 | * ``RTE_CRYPTO_AUTH_SNOW3G_UIA2`` |
2012 | diff --git a/doc/guides/eventdevs/index.rst b/doc/guides/eventdevs/index.rst |
2013 | index 570905b..bb66a5e 100644 |
2014 | --- a/doc/guides/eventdevs/index.rst |
2015 | +++ b/doc/guides/eventdevs/index.rst |
2016 | @@ -5,7 +5,7 @@ Event Device Drivers |
2017 | ==================== |
2018 | |
2019 | The following are a list of event device PMDs, which can be used from an |
2020 | -application trough the eventdev API. |
2021 | +application through the eventdev API. |
2022 | |
2023 | .. toctree:: |
2024 | :maxdepth: 2 |
2025 | diff --git a/doc/guides/freebsd_gsg/install_from_ports.rst b/doc/guides/freebsd_gsg/install_from_ports.rst |
2026 | index 29f16cc..dce028b 100644 |
2027 | --- a/doc/guides/freebsd_gsg/install_from_ports.rst |
2028 | +++ b/doc/guides/freebsd_gsg/install_from_ports.rst |
2029 | @@ -62,7 +62,7 @@ environmental variables should be set as below: |
2030 | .. note:: |
2031 | |
2032 | To install a copy of the DPDK compiled using gcc, please download the |
2033 | - official DPDK package from http://core.dpdk.org/download/ and install manually using |
2034 | + official DPDK package from https://core.dpdk.org/download/ and install manually using |
2035 | the instructions given in the next chapter, :ref:`building_from_source` |
2036 | |
2037 | An example application can therefore be copied to a user's home directory and |
2038 | diff --git a/doc/guides/linux_gsg/eal_args.include.rst b/doc/guides/linux_gsg/eal_args.include.rst |
2039 | index ed8b0e3..7b2f6b1 100644 |
2040 | --- a/doc/guides/linux_gsg/eal_args.include.rst |
2041 | +++ b/doc/guides/linux_gsg/eal_args.include.rst |
2042 | @@ -132,7 +132,7 @@ Debugging options |
2043 | |
2044 | Specify log level for a specific component. For example:: |
2045 | |
2046 | - --log-level eal:8 |
2047 | + --log-level lib.eal:debug |
2048 | |
2049 | Can be specified multiple times. |
2050 | |
2051 | diff --git a/doc/guides/linux_gsg/nic_perf_intel_platform.rst b/doc/guides/linux_gsg/nic_perf_intel_platform.rst |
2052 | index c554c21..1dabbce 100644 |
2053 | --- a/doc/guides/linux_gsg/nic_perf_intel_platform.rst |
2054 | +++ b/doc/guides/linux_gsg/nic_perf_intel_platform.rst |
2055 | @@ -64,7 +64,7 @@ This aligns with the previous output which showed that each channel has one memo |
2056 | Network Interface Card Requirements |
2057 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
2058 | |
2059 | -Use a `DPDK supported <http://core.dpdk.org/supported/>`_ high end NIC such as the Intel XL710 40GbE. |
2060 | +Use a `DPDK supported <https://core.dpdk.org/supported/>`_ high end NIC such as the Intel XL710 40GbE. |
2061 | |
2062 | Make sure each NIC has been flashed the latest version of NVM/firmware. |
2063 | |
2064 | diff --git a/doc/guides/nics/enic.rst b/doc/guides/nics/enic.rst |
2065 | index 65e536d..24d2b57 100644 |
2066 | --- a/doc/guides/nics/enic.rst |
2067 | +++ b/doc/guides/nics/enic.rst |
2068 | @@ -14,7 +14,7 @@ How to obtain ENIC PMD integrated DPDK |
2069 | -------------------------------------- |
2070 | |
2071 | ENIC PMD support is integrated into the DPDK suite. dpdk-<version>.tar.gz |
2072 | -should be downloaded from http://core.dpdk.org/download/ |
2073 | +should be downloaded from https://core.dpdk.org/download/ |
2074 | |
2075 | |
2076 | Configuration information |
2077 | diff --git a/doc/guides/nics/fail_safe.rst b/doc/guides/nics/fail_safe.rst |
2078 | index 6c02d7e..60bbf40 100644 |
2079 | --- a/doc/guides/nics/fail_safe.rst |
2080 | +++ b/doc/guides/nics/fail_safe.rst |
2081 | @@ -49,7 +49,7 @@ The Fail-safe PMD can be used like most other DPDK virtual devices, by passing a |
2082 | ``--vdev`` parameter to the EAL when starting the application. The device name |
2083 | must start with the *net_failsafe* prefix, followed by numbers or letters. This |
2084 | name must be unique for each device. Each fail-safe instance must have at least one |
2085 | -sub-device, up to ``RTE_MAX_ETHPORTS-1``. |
2086 | +sub-device, and at most two. |
2087 | |
2088 | A sub-device can be any legal DPDK device, including possibly another fail-safe |
2089 | instance. |
2090 | diff --git a/doc/guides/nics/features/hns3.ini b/doc/guides/nics/features/hns3.ini |
2091 | index 6df789e..cd5c08a 100644 |
2092 | --- a/doc/guides/nics/features/hns3.ini |
2093 | +++ b/doc/guides/nics/features/hns3.ini |
2094 | @@ -5,6 +5,7 @@ |
2095 | ; |
2096 | [Features] |
2097 | Link status = Y |
2098 | +Rx interrupt = Y |
2099 | MTU update = Y |
2100 | Jumbo frame = Y |
2101 | Promiscuous mode = Y |
2102 | diff --git a/doc/guides/nics/features/hns3_vf.ini b/doc/guides/nics/features/hns3_vf.ini |
2103 | index 41497c4..fd00ac3 100644 |
2104 | --- a/doc/guides/nics/features/hns3_vf.ini |
2105 | +++ b/doc/guides/nics/features/hns3_vf.ini |
2106 | @@ -5,6 +5,7 @@ |
2107 | ; |
2108 | [Features] |
2109 | Link status = Y |
2110 | +Rx interrupt = Y |
2111 | MTU update = Y |
2112 | Jumbo frame = Y |
2113 | Unicast MAC filter = Y |
2114 | diff --git a/doc/guides/nics/features/i40e.ini b/doc/guides/nics/features/i40e.ini |
2115 | index e5ae6de..c2717cd 100644 |
2116 | --- a/doc/guides/nics/features/i40e.ini |
2117 | +++ b/doc/guides/nics/features/i40e.ini |
2118 | @@ -18,7 +18,6 @@ TSO = Y |
2119 | Promiscuous mode = Y |
2120 | Allmulticast mode = Y |
2121 | Unicast MAC filter = Y |
2122 | -Multicast MAC filter = Y |
2123 | RSS hash = Y |
2124 | RSS key update = Y |
2125 | RSS reta update = Y |
2126 | diff --git a/doc/guides/nics/features/iavf.ini b/doc/guides/nics/features/iavf.ini |
2127 | index 8014305..f08392a 100644 |
2128 | --- a/doc/guides/nics/features/iavf.ini |
2129 | +++ b/doc/guides/nics/features/iavf.ini |
2130 | @@ -15,7 +15,6 @@ TSO = Y |
2131 | Promiscuous mode = Y |
2132 | Allmulticast mode = Y |
2133 | Unicast MAC filter = Y |
2134 | -Multicast MAC filter = Y |
2135 | RSS hash = Y |
2136 | RSS key update = Y |
2137 | RSS reta update = Y |
2138 | diff --git a/doc/guides/nics/features/ice.ini b/doc/guides/nics/features/ice.ini |
2139 | index 65923f0..949d09f 100644 |
2140 | --- a/doc/guides/nics/features/ice.ini |
2141 | +++ b/doc/guides/nics/features/ice.ini |
2142 | @@ -18,7 +18,6 @@ TSO = Y |
2143 | Promiscuous mode = Y |
2144 | Allmulticast mode = Y |
2145 | Unicast MAC filter = Y |
2146 | -Multicast MAC filter = Y |
2147 | RSS hash = Y |
2148 | RSS key update = Y |
2149 | RSS reta update = Y |
2150 | diff --git a/doc/guides/nics/features/igb.ini b/doc/guides/nics/features/igb.ini |
2151 | index 0351f84..167c0ca 100644 |
2152 | --- a/doc/guides/nics/features/igb.ini |
2153 | +++ b/doc/guides/nics/features/igb.ini |
2154 | @@ -15,6 +15,7 @@ TSO = Y |
2155 | Promiscuous mode = Y |
2156 | Allmulticast mode = Y |
2157 | Unicast MAC filter = Y |
2158 | +Multicast MAC filter = Y |
2159 | RSS hash = Y |
2160 | RSS key update = Y |
2161 | RSS reta update = Y |
2162 | diff --git a/doc/guides/nics/features/ixgbe.ini b/doc/guides/nics/features/ixgbe.ini |
2163 | index c412d7a..1c7a2a5 100644 |
2164 | --- a/doc/guides/nics/features/ixgbe.ini |
2165 | +++ b/doc/guides/nics/features/ixgbe.ini |
2166 | @@ -17,6 +17,7 @@ TSO = Y |
2167 | Promiscuous mode = Y |
2168 | Allmulticast mode = Y |
2169 | Unicast MAC filter = Y |
2170 | +Multicast MAC filter = Y |
2171 | RSS hash = Y |
2172 | RSS key update = Y |
2173 | RSS reta update = Y |
2174 | diff --git a/doc/guides/nics/hns3.rst b/doc/guides/nics/hns3.rst |
2175 | index 505488b..8d19f48 100644 |
2176 | --- a/doc/guides/nics/hns3.rst |
2177 | +++ b/doc/guides/nics/hns3.rst |
2178 | @@ -22,6 +22,7 @@ Features of the HNS3 PMD are: |
2179 | - Port hardware statistics |
2180 | - Jumbo frames |
2181 | - Link state information |
2182 | +- Interrupt mode for RX |
2183 | - VLAN stripping |
2184 | - NUMA support |
2185 | |
2186 | diff --git a/doc/guides/nics/i40e.rst b/doc/guides/nics/i40e.rst |
2187 | index c7c34b6..61d72c2 100644 |
2188 | --- a/doc/guides/nics/i40e.rst |
2189 | +++ b/doc/guides/nics/i40e.rst |
2190 | @@ -667,6 +667,15 @@ Use 16 Bytes RX Descriptor Size |
2191 | As i40e PMD supports both 16 and 32 bytes RX descriptor sizes, and 16 bytes size can provide helps to high performance of small packets. |
2192 | Configuration of ``CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC`` in config files can be changed to use 16 bytes size RX descriptors. |
2193 | |
2194 | +Input set requirement of each pctype for FDIR |
2195 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
2196 | + |
2197 | +Each PCTYPE can only have one specific FDIR input set at one time. |
2198 | +For example, if creating 2 rte_flow rules with different input set for one PCTYPE, |
2199 | +it will fail and return the info "Conflict with the first rule's input set", |
2200 | +which means the current rule's input set conflicts with the first rule's. |
2201 | +Remove the first rule if want to change the input set of the PCTYPE. |
2202 | + |
2203 | Example of getting best performance with l3fwd example |
2204 | ------------------------------------------------------ |
2205 | |
2206 | diff --git a/doc/guides/nics/ice.rst b/doc/guides/nics/ice.rst |
2207 | index 9b90b38..58eb023 100644 |
2208 | --- a/doc/guides/nics/ice.rst |
2209 | +++ b/doc/guides/nics/ice.rst |
2210 | @@ -54,10 +54,6 @@ Please note that enabling debugging options may affect system performance. |
2211 | |
2212 | Toggle display of generic debugging messages. |
2213 | |
2214 | -- ``CONFIG_RTE_LIBRTE_ICE_RX_ALLOW_BULK_ALLOC`` (default ``y``) |
2215 | - |
2216 | - Toggle bulk allocation for RX. |
2217 | - |
2218 | - ``CONFIG_RTE_LIBRTE_ICE_16BYTE_RX_DESC`` (default ``n``) |
2219 | |
2220 | Toggle to use a 16-byte RX descriptor, by default the RX descriptor is 32 byte. |
2221 | diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst |
2222 | index 86ad404..75f58e6 100644 |
2223 | --- a/doc/guides/nics/mlx5.rst |
2224 | +++ b/doc/guides/nics/mlx5.rst |
2225 | @@ -123,6 +123,24 @@ Limitations |
2226 | |
2227 | Will match any ipv4 packet (VLAN included). |
2228 | |
2229 | +- When using DV flow engine (``dv_flow_en`` = 1), flow pattern without VLAN item |
2230 | + will match untagged packets only. |
2231 | + The flow rule:: |
2232 | + |
2233 | + flow create 0 ingress pattern eth / ipv4 / end ... |
2234 | + |
2235 | + Will match untagged packets only. |
2236 | + The flow rule:: |
2237 | + |
2238 | + flow create 0 ingress pattern eth / vlan / ipv4 / end ... |
2239 | + |
2240 | + Will match tagged packets only, with any VLAN ID value. |
2241 | + The flow rule:: |
2242 | + |
2243 | + flow create 0 ingress pattern eth / vlan vid is 3 / ipv4 / end ... |
2244 | + |
2245 | + Will only match tagged packets with VLAN ID 3. |
2246 | + |
2247 | - VLAN pop offload command: |
2248 | |
2249 | - Flow rules having a VLAN pop offload command as one of their actions and |
2250 | @@ -360,8 +378,7 @@ Run-time configuration |
2251 | |
2252 | A nonzero value enables configuring Multi-Packet Rx queues. Rx queue is |
2253 | configured as Multi-Packet RQ if the total number of Rx queues is |
2254 | - ``rxqs_min_mprq`` or more and Rx scatter isn't configured. Disabled by |
2255 | - default. |
2256 | + ``rxqs_min_mprq`` or more. Disabled by default. |
2257 | |
2258 | Multi-Packet Rx Queue (MPRQ a.k.a Striding RQ) can further save PCIe bandwidth |
2259 | by posting a single large buffer for multiple packets. Instead of posting a |
2260 | @@ -386,6 +403,20 @@ Run-time configuration |
2261 | |
2262 | The size of Rx queue should be bigger than the number of strides. |
2263 | |
2264 | +- ``mprq_log_stride_size`` parameter [int] |
2265 | + |
2266 | + Log 2 of the size of a stride for Multi-Packet Rx queue. Configuring a smaller |
2267 | + stride size can save some memory and reduce probability of a depletion of all |
2268 | + available strides due to unreleased packets by an application. If configured |
2269 | + value is not in the range of device capability, the default value will be set |
2270 | + with a warning message. The default value is 11 which is 2048 bytes per a |
2271 | + stride, valid only if ``mprq_en`` is set. With ``mprq_log_stride_size`` set |
2272 | + it is possible for a pcaket to span across multiple strides. This mode allows |
2273 | + support of jumbo frames (9K) with MPRQ. The memcopy of some packets (or part |
2274 | + of a packet if Rx scatter is configured) may be required in case there is no |
2275 | + space left for a head room at the end of a stride which incurs some |
2276 | + performance penalty. |
2277 | + |
2278 | - ``mprq_max_memcpy_len`` parameter [int] |
2279 | |
2280 | The maximum length of packet to memcpy in case of Multi-Packet Rx queue. Rx |
2281 | @@ -1214,6 +1245,19 @@ Supported hardware offloads |
2282 | | | | ConnectX-5 | | ConnectX-5 | |
2283 | +-----------------------+-----------------+-----------------+ |
2284 | |
2285 | +Notes for metadata |
2286 | +------------------ |
2287 | + |
2288 | +MARK and META items are interrelated with datapath - they might move from/to |
2289 | +the applications in mbuf fields. Hence, zero value for these items has the |
2290 | +special meaning - it means "no metadata are provided", not zero values are |
2291 | +treated by applications and PMD as valid ones. |
2292 | + |
2293 | +Moreover in the flow engine domain the value zero is acceptable to match and |
2294 | +set, and we should allow to specify zero values as rte_flow parameters for the |
2295 | +META and MARK items and actions. In the same time zero mask has no meaning and |
2296 | +should be rejected on validation stage. |
2297 | + |
2298 | Notes for testpmd |
2299 | ----------------- |
2300 | |
2301 | diff --git a/doc/guides/prog_guide/cryptodev_lib.rst b/doc/guides/prog_guide/cryptodev_lib.rst |
2302 | index ac16437..c839379 100644 |
2303 | --- a/doc/guides/prog_guide/cryptodev_lib.rst |
2304 | +++ b/doc/guides/prog_guide/cryptodev_lib.rst |
2305 | @@ -1097,4 +1097,4 @@ Asymmetric Crypto Device API |
2306 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
2307 | |
2308 | The cryptodev Library API is described in the |
2309 | -`DPDK API Reference <http://doc.dpdk.org/api/>`_ |
2310 | +`DPDK API Reference <https://doc.dpdk.org/api/>`_ |
2311 | diff --git a/doc/guides/prog_guide/lto.rst b/doc/guides/prog_guide/lto.rst |
2312 | index 43f4c63..277a6f1 100644 |
2313 | --- a/doc/guides/prog_guide/lto.rst |
2314 | +++ b/doc/guides/prog_guide/lto.rst |
2315 | @@ -31,7 +31,7 @@ the whole DPDK by setting: |
2316 | |
2317 | .. code-block:: console |
2318 | |
2319 | - CONFIG_ENABLE_LTO=y |
2320 | + CONFIG_RTE_ENABLE_LTO=y |
2321 | |
2322 | in config file. |
2323 | |
2324 | diff --git a/doc/guides/rel_notes/release_19_11.rst b/doc/guides/rel_notes/release_19_11.rst |
2325 | index f6ae7ea..6d7a084 100644 |
2326 | --- a/doc/guides/rel_notes/release_19_11.rst |
2327 | +++ b/doc/guides/rel_notes/release_19_11.rst |
2328 | @@ -1340,3 +1340,578 @@ Tested Platforms |
2329 | * Kernel 4.15.0-88-generic |
2330 | * IBM Power9 Model 8335-101 CPU: 2.3 (pvr 004e 1203) |
2331 | * Mellanox Technologies MT28800 Family [ConnectX-5 Ex], firmware version: 16.26.4012, MLNX_OFED_LINUX-4.7-3.2.9.1 |
2332 | + |
2333 | +19.11.2 Release Notes |
2334 | +--------------------- |
2335 | + |
2336 | +19.11.2 Fixes |
2337 | +~~~~~~~~~~~~~ |
2338 | + |
2339 | +* 2cf9c470eb vhost: check log mmap offset and size overflow (CVE-2020-10722) |
2340 | +* 8e9652b0b6 vhost: fix translated address not checked (CVE-2020-10723) |
2341 | +* 95e1f29c26 vhost/crypto: validate keys lengths (CVE-2020-10724) |
2342 | +* 963b6eea05 vhost: fix potential memory space leak (CVE-2020-10725) |
2343 | +* c9c630a117 vhost: fix potential fd leak (CVE-2020-10726) |
2344 | +* cd0ea71bb6 vhost: fix vring index check (CVE-2020-10726) |
2345 | + |
2346 | +19.11.2 Validation |
2347 | +~~~~~~~~~~~~~~~~~~ |
2348 | + |
2349 | +* Red Hat(R) Testing |
2350 | + |
2351 | + * Platform |
2352 | + |
2353 | + * RHEL 8.3 |
2354 | + * Kernel 4.18 |
2355 | + * Qemu 4.2 |
2356 | + * X540-AT2 NIC(ixgbe, 10G) |
2357 | + |
2358 | + * Functionality |
2359 | + |
2360 | + * PVP (host dpdk testpmd as vswitch) 1Q: throughput testing |
2361 | + * PVP vhost-user 2Q throughput testing |
2362 | + * PVP vhost-user 1Q - cross numa node throughput testing |
2363 | + * PVP 1Q live migration testing |
2364 | + * PVP 1Q cross numa node live migration testing |
2365 | + |
2366 | +* Intel(R) Testing |
2367 | + |
2368 | + * Virtio features |
2369 | + |
2370 | + * vhost/virtio loopback test with virtio user as server mode |
2371 | + * loopback multi queues |
2372 | + * loopback multi paths port restart |
2373 | + * vhost/virtio pvp multi-paths performance |
2374 | + * pvp multi-queues and port restart |
2375 | + * vhost dequeue zero copy |
2376 | + * pvp share lib |
2377 | + * pvp vhost user reconnect |
2378 | + * pvp test with 4k pages |
2379 | + * pvp test with 2M hugepages |
2380 | + * pvp virtio bonding |
2381 | + * pvp test with diff qemu version |
2382 | + * vhost enqueue interrupt |
2383 | + * vhost event idx interrupt |
2384 | + * vhost virtio pmd interrupt |
2385 | + * vhost virtio user interrupt |
2386 | + * virtio event idx interrupt |
2387 | + * virtio user for container networking |
2388 | + * virtio user as exceptional path |
2389 | + * vhost xstats |
2390 | + * virtio-pmd multi-process |
2391 | + * vm2vm virtio pmd |
2392 | + * vm2vm virtio-net iperf |
2393 | + * vm2vm virtio-user |
2394 | + * vhost user live migration |
2395 | + |
2396 | +19.11.3 Release Notes |
2397 | +--------------------- |
2398 | + |
2399 | +19.11.3 Fixes |
2400 | +~~~~~~~~~~~~~ |
2401 | + |
2402 | +* app/crypto-perf: fix display of sample test vector |
2403 | +* app/eventdev: check Tx adapter service ID |
2404 | +* app: fix usage help of options separated by dashes |
2405 | +* app/pipeline: fix build with gcc 10 |
2406 | +* app: remove extra new line after link duplex |
2407 | +* app/testpmd: add parsing for QinQ VLAN headers |
2408 | +* app/testpmd: fix DCB set |
2409 | +* app/testpmd: fix memory failure handling for i40e DDP |
2410 | +* app/testpmd: fix PPPoE flow command |
2411 | +* app/testpmd: fix statistics after reset |
2412 | +* baseband/turbo_sw: fix exposed LLR decimals assumption |
2413 | +* bbdev: fix doxygen comments |
2414 | +* build: disable gcc 10 zero-length-bounds warning |
2415 | +* build: fix linker warnings with clang on Windows |
2416 | +* build: support MinGW-w64 with Meson |
2417 | +* buildtools: get static mlx dependencies for meson |
2418 | +* bus/fslmc: fix dereferencing null pointer |
2419 | +* bus/fslmc: fix size of qman fq descriptor |
2420 | +* bus/pci: fix devargs on probing again |
2421 | +* bus/pci: fix UIO resource access from secondary process |
2422 | +* bus/vmbus: fix comment spelling |
2423 | +* ci: fix telemetry dependency in Travis |
2424 | +* common/iavf: update copyright |
2425 | +* common/mlx5: fix build with -fno-common |
2426 | +* common/mlx5: fix build with rdma-core 21 |
2427 | +* common/mlx5: fix netlink buffer allocation from stack |
2428 | +* common/mlx5: fix umem buffer alignment |
2429 | +* common/octeontx: fix gcc 9.1 ABI break |
2430 | +* common/qat: fix GEN3 marketing name |
2431 | +* contigmem: cleanup properly when load fails |
2432 | +* crypto/caam_jr: fix check of file descriptors |
2433 | +* crypto/caam_jr: fix IRQ functions return type |
2434 | +* crypto/ccp: fix fd leak on probe failure |
2435 | +* cryptodev: add asymmetric session-less feature name |
2436 | +* cryptodev: fix missing device id range checking |
2437 | +* cryptodev: fix SHA-1 digest enum comment |
2438 | +* crypto/kasumi: fix extern declaration |
2439 | +* crypto/nitrox: fix CSR register address generation |
2440 | +* crypto/nitrox: fix oversized device name |
2441 | +* crypto/octeontx2: fix build with gcc 10 |
2442 | +* crypto/openssl: fix out-of-place encryption |
2443 | +* crypto/qat: fix cipher descriptor for ZUC and SNOW |
2444 | +* crypto/qat: support plain SHA1..SHA512 hashes |
2445 | +* devtools: fix symbol map change check |
2446 | +* doc: add i40e limitation for flow director |
2447 | +* doc: add NASM installation steps |
2448 | +* doc: fix API index |
2449 | +* doc: fix build issue in ABI guide |
2450 | +* doc: fix build with doxygen 1.8.18 |
2451 | +* doc: fix default symbol binding in ABI guide |
2452 | +* doc: fix log level example in Linux guide |
2453 | +* doc: fix LTO config option |
2454 | +* doc: fix matrix CSS for recent sphinx |
2455 | +* doc: fix multicast filter feature announcement |
2456 | +* doc: fix number of failsafe sub-devices |
2457 | +* doc: fix reference in ABI guide |
2458 | +* doc: fix sphinx compatibility |
2459 | +* doc: fix typo in contributors guide |
2460 | +* doc: fix typo in contributors guide |
2461 | +* doc: fix typos in ABI policy |
2462 | +* doc: prefer https when pointing to dpdk.org |
2463 | +* drivers: add crypto as dependency for event drivers |
2464 | +* drivers/crypto: disable gcc 10 no-common errors |
2465 | +* drivers/crypto: fix build with make 4.3 |
2466 | +* drivers/crypto: fix log type variables for -fno-common |
2467 | +* drivers: fix log type variables for -fno-common |
2468 | +* eal/arm64: fix precise TSC |
2469 | +* eal: fix C++17 compilation |
2470 | +* eal: fix comments spelling |
2471 | +* eal: fix log message print for regex |
2472 | +* eal: fix PRNG init with HPET enabled |
2473 | +* eal: fix typo in endian conversion macros |
2474 | +* eal/freebsd: fix queuing duplicate alarm callbacks |
2475 | +* eal/ppc: fix bool type after altivec include |
2476 | +* eal/ppc: fix build with gcc 9.3 |
2477 | +* eal/x86: ignore gcc 10 stringop-overflow warnings |
2478 | +* ethdev: fix build when vtune profiling is on |
2479 | +* ethdev: fix spelling |
2480 | +* eventdev: fix probe and remove for secondary process |
2481 | +* event/dsw: avoid reusing previously recorded events |
2482 | +* event/dsw: fix enqueue burst return value |
2483 | +* event/dsw: remove redundant control ring poll |
2484 | +* event/dsw: remove unnecessary read barrier |
2485 | +* event/octeontx2: fix build for O1 optimization |
2486 | +* event/octeontx2: fix queue removal from Rx adapter |
2487 | +* examples/eventdev: fix build with gcc 10 |
2488 | +* examples/eventdev: fix crash on exit |
2489 | +* examples/fips_validation: fix parsing of algorithms |
2490 | +* examples/ip_pipeline: remove check of null response |
2491 | +* examples/ipsec-gw: fix gcc 10 maybe-uninitialized warning |
2492 | +* examples/kni: fix crash during MTU set |
2493 | +* examples/kni: fix MTU change to setup Tx queue |
2494 | +* examples/l2fwd-keepalive: fix mbuf pool size |
2495 | +* examples/qos_sched: fix build with gcc 10 |
2496 | +* examples: remove extra new line after link duplex |
2497 | +* examples/vhost_blk: fix build with gcc 10 |
2498 | +* examples/vmdq: fix output of pools/queues |
2499 | +* examples/vmdq: fix RSS configuration |
2500 | +* examples/vm_power: drop Unix path limit redefinition |
2501 | +* examples/vm_power: fix build with -fno-common |
2502 | +* fib: fix headers for C++ support |
2503 | +* fix same typo in multiple places |
2504 | +* fix various typos found by Lintian |
2505 | +* ipsec: check SAD lookup error |
2506 | +* ipsec: fix build dependency on hash lib |
2507 | +* kvargs: fix buffer overflow when parsing list |
2508 | +* kvargs: fix invalid token parsing on FreeBSD |
2509 | +* kvargs: fix strcmp helper documentation |
2510 | +* log: fix level picked with globbing on type register |
2511 | +* lpm6: fix comments spelling |
2512 | +* lpm6: fix size of tbl8 group |
2513 | +* mem: fix overflow on allocation |
2514 | +* mem: mark pages as not accessed when freeing memory |
2515 | +* mem: mark pages as not accessed when reserving VA |
2516 | +* mempool/dpaa2: install missing header with meson |
2517 | +* mempool/octeontx2: fix build for gcc O1 optimization |
2518 | +* mempool: remove inline functions from export list |
2519 | +* mem: preallocate VA space in no-huge mode |
2520 | +* mk: fix static linkage of mlx dependency |
2521 | +* net/avp: fix gcc 10 maybe-uninitialized warning |
2522 | +* net/bnxt: do not use PMD log type |
2523 | +* net/bnxt: fix error log for command timeout |
2524 | +* net/bnxt: fix FW version query |
2525 | +* net/bnxt: fix HWRM command during FW reset |
2526 | +* net/bnxt: fix max ring count |
2527 | +* net/bnxt: fix memory leak during queue restart |
2528 | +* net/bnxt: fix number of TQM ring |
2529 | +* net/bnxt: fix port start failure handling |
2530 | +* net/bnxt: fix possible stack smashing |
2531 | +* net/bnxt: fix Rx ring producer index |
2532 | +* net/bnxt: fix storing MAC address twice |
2533 | +* net/bnxt: fix TQM ring context memory size |
2534 | +* net/bnxt: fix using RSS config struct |
2535 | +* net/bnxt: fix VLAN add when port is stopped |
2536 | +* net/bnxt: fix VNIC Rx queue count on VNIC free |
2537 | +* net/bnxt: use true/false for bool types |
2538 | +* net/dpaa2: fix 10G port negotiation |
2539 | +* net/dpaa2: fix congestion ID for multiple traffic classes |
2540 | +* net/dpaa: use dynamic log type |
2541 | +* net/e1000: fix port hotplug for multi-process |
2542 | +* net/ena/base: fix documentation of functions |
2543 | +* net/ena/base: fix indentation in CQ polling |
2544 | +* net/ena/base: fix indentation of multiple defines |
2545 | +* net/ena/base: fix testing for supported hash function |
2546 | +* net/ena/base: make allocation macros thread-safe |
2547 | +* net/ena/base: prevent allocation of zero sized memory |
2548 | +* net/ena: fix build for O1 optimization |
2549 | +* net/ena: set IO ring size to valid value |
2550 | +* net/enetc: fix Rx lock-up |
2551 | +* net/enic: fix flow action reordering |
2552 | +* net/failsafe: fix fd leak |
2553 | +* net/hinic: allocate IO memory with socket id |
2554 | +* net/hinic/base: fix PF firmware hot-active problem |
2555 | +* net/hinic/base: fix port start during FW hot update |
2556 | +* net/hinic: fix LRO |
2557 | +* net/hinic: fix queues resource free |
2558 | +* net/hinic: fix repeating cable log and length check |
2559 | +* net/hinic: fix snprintf length of cable info |
2560 | +* net/hinic: fix TSO |
2561 | +* net/hinic: fix Tx mbuf length while copying |
2562 | +* net/hns3: add free threshold in Rx |
2563 | +* net/hns3: add RSS hash offload to capabilities |
2564 | +* net/hns3: clear residual flow rules on init |
2565 | +* net/hns3: fix configuring illegal VLAN PVID |
2566 | +* net/hns3: fix configuring RSS hash when rules are flushed |
2567 | +* net/hns3: fix crash when flushing RSS flow rules with FLR |
2568 | +* net/hns3: fix default error code of command interface |
2569 | +* net/hns3: fix default VLAN filter configuration for PF |
2570 | +* net/hns3: fix mailbox opcode data type |
2571 | +* net/hns3: fix MSI-X interrupt during initialization |
2572 | +* net/hns3: fix packets offload features flags in Rx |
2573 | +* net/hns3: fix promiscuous mode for PF |
2574 | +* net/hns3: fix return value of setting VLAN offload |
2575 | +* net/hns3: fix return value when clearing statistics |
2576 | +* net/hns3: fix RSS indirection table configuration |
2577 | +* net/hns3: fix RSS key length |
2578 | +* net/hns3: fix Rx interrupt after reset |
2579 | +* net/hns3: fix status after repeated resets |
2580 | +* net/hns3: fix Tx interrupt when enabling Rx interrupt |
2581 | +* net/hns3: fix VLAN filter when setting promisucous mode |
2582 | +* net/hns3: fix VLAN PVID when configuring device |
2583 | +* net/hns3: reduce judgements of free Tx ring space |
2584 | +* net/hns3: remove one IO barrier in Rx |
2585 | +* net/hns3: remove unnecessary assignments in Tx |
2586 | +* net/hns3: replace memory barrier with data dependency order |
2587 | +* net/hns3: support different numbers of Rx and Tx queues |
2588 | +* net/hns3: support Rx interrupt |
2589 | +* net/i40e/base: update copyright |
2590 | +* net/i40e: fix flow director enabling |
2591 | +* net/i40e: fix flow director for ARP packets |
2592 | +* net/i40e: fix flow director initialisation |
2593 | +* net/i40e: fix flush of flow director filter |
2594 | +* net/i40e: fix queue region in RSS flow |
2595 | +* net/i40e: fix queue related exception handling |
2596 | +* net/i40e: fix setting L2TAG |
2597 | +* net/i40e: fix wild pointer |
2598 | +* net/i40e: fix X722 performance |
2599 | +* net/i40e: relax barrier in Tx |
2600 | +* net/i40e: relax barrier in Tx for NEON |
2601 | +* net/iavf: fix link speed |
2602 | +* net/iavf: fix setting L2TAG |
2603 | +* net/iavf: fix stats query error code |
2604 | +* net/ice: add action number check for switch |
2605 | +* net/ice/base: check memory pointer before copying |
2606 | +* net/ice/base: fix binary order for GTPU filter |
2607 | +* net/ice/base: fix MAC write command |
2608 | +* net/ice/base: fix uninitialized stack variables |
2609 | +* net/ice/base: minor fixes |
2610 | +* net/ice/base: read PSM clock frequency from register |
2611 | +* net/ice/base: remove unused code in switch rule |
2612 | +* net/ice/base: update copyright |
2613 | +* net/ice: change default tunnel type |
2614 | +* net/ice: fix crash in switch filter |
2615 | +* net/ice: fix hash flow crash |
2616 | +* net/ice: fix input set of VLAN item |
2617 | +* net/ice: fix RSS advanced rule |
2618 | +* net/ice: fix RSS for GTPU |
2619 | +* net/ice: fix setting L2TAG |
2620 | +* net/ice: fix variable initialization |
2621 | +* net/ice: remove bulk alloc option |
2622 | +* net/ice: remove unnecessary variable |
2623 | +* net/ice: support mark only action for flow director |
2624 | +* net/ipn3ke: use control thread to check link status |
2625 | +* net/ixgbe/base: update copyright |
2626 | +* net/ixgbe: check driver type in MACsec API |
2627 | +* net/ixgbe: fix link state timing on fiber ports |
2628 | +* net/ixgbe: fix link status after port reset |
2629 | +* net/ixgbe: fix link status inconsistencies |
2630 | +* net/ixgbe: fix link status synchronization on BSD |
2631 | +* net/ixgbe: fix resource leak after thread exits normally |
2632 | +* net/ixgbe: fix statistics in flow control mode |
2633 | +* net/memif: fix init when already connected |
2634 | +* net/memif: fix resource leak |
2635 | +* net/mlx4: fix build with -fno-common |
2636 | +* net/mlx4: fix drop queue error handling |
2637 | +* net/mlx5: add device parameter for MPRQ stride size |
2638 | +* net/mlx5: add multi-segment packets in MPRQ mode |
2639 | +* net/mlx5: enable MPRQ multi-stride operations |
2640 | +* net/mlx5: fix actions validation on root table |
2641 | +* net/mlx5: fix assert in doorbell lookup |
2642 | +* net/mlx5: fix assert in dynamic metadata handling |
2643 | +* net/mlx5: fix assert in modify converting |
2644 | +* net/mlx5: fix build with separate glue lib for dlopen |
2645 | +* net/mlx5: fix call to modify action without init item |
2646 | +* net/mlx5: fix counter container usage |
2647 | +* net/mlx5: fix crash when releasing meter table |
2648 | +* net/mlx5: fix CVLAN tag set in IP item translation |
2649 | +* net/mlx5: fix doorbell bitmap management offsets |
2650 | +* net/mlx5: fix gcc 10 enum-conversion warning |
2651 | +* net/mlx5: fix header modify action validation |
2652 | +* net/mlx5: fix imissed counter overflow |
2653 | +* net/mlx5: fix jump table leak |
2654 | +* net/mlx5: fix mask used for IPv6 item validation |
2655 | +* net/mlx5: fix matching for UDP tunnels with Verbs |
2656 | +* net/mlx5: fix match on empty VLAN item in DV mode |
2657 | +* net/mlx5: fix metadata for compressed Rx CQEs |
2658 | +* net/mlx5: fix meter color register consideration |
2659 | +* net/mlx5: fix meter suffix table leak |
2660 | +* net/mlx5: fix packet length assert in MPRQ |
2661 | +* net/mlx5: fix push VLAN action to use item info |
2662 | +* net/mlx5: fix RSS enablement |
2663 | +* net/mlx5: fix RSS key copy to TIR context |
2664 | +* net/mlx5: fix Tx queue release debug log timing |
2665 | +* net/mlx5: fix validation of push VLAN without full mask |
2666 | +* net/mlx5: fix validation of VXLAN/VXLAN-GPE specs |
2667 | +* net/mlx5: fix VLAN flow action with wildcard VLAN item |
2668 | +* net/mlx5: fix VLAN ID check |
2669 | +* net/mlx5: fix VLAN PCP item calculation |
2670 | +* net/mlx5: fix zero metadata action |
2671 | +* net/mlx5: fix zero value validation for metadata |
2672 | +* net/mlx5: improve logging of MPRQ selection |
2673 | +* net/mlx5: reduce Tx completion index memory loads |
2674 | +* net/mlx5: set dynamic flow metadata in Rx queues |
2675 | +* net/mlx5: update VLAN and encap actions validation |
2676 | +* net/mlx5: use open/read/close for ib stats query |
2677 | +* net/mvneta: do not use PMD log type |
2678 | +* net/mvpp2: fix build with gcc 10 |
2679 | +* net/netvsc: avoid possible live lock |
2680 | +* net/netvsc: do not configure RSS if disabled |
2681 | +* net/netvsc: do RSS across Rx queue only |
2682 | +* net/netvsc: fix comment spelling |
2683 | +* net/netvsc: fix memory free on device close |
2684 | +* net/netvsc: handle Rx packets during multi-channel setup |
2685 | +* net/netvsc: handle Tx completions based on burst size |
2686 | +* net/netvsc: propagate descriptor limits from VF |
2687 | +* net/netvsc: remove process event optimization |
2688 | +* net/netvsc: split send buffers from Tx descriptors |
2689 | +* net/nfp: fix dangling pointer on probe failure |
2690 | +* net/nfp: fix log format specifiers |
2691 | +* net/null: fix secondary burst function selection |
2692 | +* net/null: remove redundant check |
2693 | +* net/octeontx2: disable unnecessary error interrupts |
2694 | +* net/octeontx2: enable error and RAS interrupt in configure |
2695 | +* net/octeontx2: fix buffer size assignment |
2696 | +* net/octeontx2: fix device configuration sequence |
2697 | +* net/octeontx2: fix link information for loopback port |
2698 | +* net/octeontx: fix dangling pointer on init failure |
2699 | +* net/octeontx: fix meson build for disabled drivers |
2700 | +* net/pfe: do not use PMD log type |
2701 | +* net/pfe: fix double free of MAC address |
2702 | +* net/qede: fix link state configuration |
2703 | +* net/qede: fix port reconfiguration |
2704 | +* net/ring: fix device pointer on allocation |
2705 | +* net/sfc/base: fix build when EVB is enabled |
2706 | +* net/sfc/base: fix manual filter delete in EF10 |
2707 | +* net/sfc/base: handle manual and auto filter clashes in EF10 |
2708 | +* net/sfc/base: reduce filter priorities to implemented only |
2709 | +* net/sfc/base: refactor filter lookup loop in EF10 |
2710 | +* net/sfc/base: reject automatic filter creation by users |
2711 | +* net/sfc/base: use simpler EF10 family conditional check |
2712 | +* net/sfc/base: use simpler EF10 family run-time checks |
2713 | +* net/sfc: fix initialization error path |
2714 | +* net/sfc: fix promiscuous and allmulticast toggles errors |
2715 | +* net/sfc: fix reported promiscuous/multicast mode |
2716 | +* net/sfc: fix Rx queue start failure path |
2717 | +* net/sfc: set priority of created filters to manual |
2718 | +* net/softnic: fix memory leak for thread |
2719 | +* net/softnic: fix resource leak for pipeline |
2720 | +* net/tap: do not use PMD log type |
2721 | +* net/tap: fix check for mbuf number of segment |
2722 | +* net/tap: fix crash in flow destroy |
2723 | +* net/tap: fix fd leak on creation failure |
2724 | +* net/tap: fix file close on remove |
2725 | +* net/tap: fix mbuf and mem leak during queue release |
2726 | +* net/tap: fix mbuf double free when writev fails |
2727 | +* net/tap: fix queues fd check before close |
2728 | +* net/tap: fix unexpected link handler |
2729 | +* net/tap: remove unused assert |
2730 | +* net/thunderx: use dynamic log type |
2731 | +* net/vhost: fix potential memory leak on close |
2732 | +* net/virtio: do not use PMD log type |
2733 | +* net/virtio: fix crash when device reconnecting |
2734 | +* net/virtio: fix outdated comment |
2735 | +* net/virtio: fix unexpected event after reconnect |
2736 | +* net/virtio-user: fix devargs parsing |
2737 | +* net/vmxnet3: fix RSS setting on v4 |
2738 | +* net/vmxnet3: handle bad host framing |
2739 | +* pci: accept 32-bit domain numbers |
2740 | +* pci: fix build on FreeBSD |
2741 | +* pci: fix build on ppc |
2742 | +* pci: reject negative values in PCI id |
2743 | +* pci: remove unneeded includes in public header file |
2744 | +* remove references to private PCI probe function |
2745 | +* Revert "common/qat: fix GEN3 marketing name" |
2746 | +* Revert "net/bnxt: fix number of TQM ring" |
2747 | +* Revert "net/bnxt: fix TQM ring context memory size" |
2748 | +* security: fix crash at accessing non-implemented ops |
2749 | +* security: fix return types in documentation |
2750 | +* security: fix session counter |
2751 | +* security: fix verification of parameters |
2752 | +* service: fix crash on exit |
2753 | +* service: fix identification of service running on other lcore |
2754 | +* service: fix race condition for MT unsafe service |
2755 | +* service: remove rte prefix from static functions |
2756 | +* telemetry: fix port stats retrieval |
2757 | +* test/crypto: fix flag check |
2758 | +* test/crypto: fix statistics case |
2759 | +* test: fix build with gcc 10 |
2760 | +* test/flow_classify: enable multi-sockets system |
2761 | +* test/ipsec: fix crash in session destroy |
2762 | +* test/kvargs: fix invalid cases check |
2763 | +* test/kvargs: fix to consider empty elements as valid |
2764 | +* test: load drivers when required |
2765 | +* test: remove redundant macro |
2766 | +* test: skip some subtests in no-huge mode |
2767 | +* timer: protect initialization with lock |
2768 | +* usertools: check for pci.ids in /usr/share/misc |
2769 | +* vfio: fix race condition with sysfs |
2770 | +* vfio: fix use after free with multiprocess |
2771 | +* vhost/crypto: add missing user protocol flag |
2772 | +* vhost: fix packed ring zero-copy |
2773 | +* vhost: fix peer close check |
2774 | +* vhost: fix shadowed descriptors not flushed |
2775 | +* vhost: fix shadow update |
2776 | +* vhost: fix zero-copy server mode |
2777 | +* vhost: handle mbuf allocation failure |
2778 | +* vhost: make IOTLB cache name unique among processes |
2779 | +* vhost: prevent zero-copy with incompatible client mode |
2780 | +* vhost: remove unused variable |
2781 | + |
2782 | +19.11.3 Validation |
2783 | +~~~~~~~~~~~~~~~~~~ |
2784 | + |
2785 | +* Intel(R) Testing |
2786 | + |
2787 | + * Basic Intel(R) NIC(ixgbe, i40e and ice) testing |
2788 | + * PF (i40e) |
2789 | + * PF (ixgbe) |
2790 | + * PF (ice) |
2791 | + * VF (i40e) |
2792 | + * VF (ixgbe) |
2793 | + * VF (ice) |
2794 | + * Compile Testing |
2795 | + * Intel NIC single core/NIC performance |
2796 | + |
2797 | + * Basic cryptodev and virtio testing |
2798 | + |
2799 | + * vhost/virtio basic loopback, PVP and performance test |
2800 | + * cryptodev Function/Performance |
2801 | + |
2802 | +* Mellanox(R) Testing |
2803 | + |
2804 | + * Basic functionality with testpmd |
2805 | + |
2806 | + * Tx/Rx |
2807 | + * xstats |
2808 | + * Timestamps |
2809 | + * Link status |
2810 | + * RTE flow and flow_director |
2811 | + * RSS |
2812 | + * VLAN stripping and insertion |
2813 | + * Checksum/TSO |
2814 | + * ptype |
2815 | + * l3fwd-power example application |
2816 | + * Multi-process example applications |
2817 | + |
2818 | + * ConnectX-5 |
2819 | + |
2820 | + * RHEL 7.4 |
2821 | + * Driver MLNX_OFED_LINUX-5.0-2.1.8.0 |
2822 | + * fw 16.27.2008 |
2823 | + |
2824 | + * ConnectX-4 Lx |
2825 | + |
2826 | + * RHEL 7.4 |
2827 | + * Driver MLNX_OFED_LINUX-5.0-2.1.8.0 |
2828 | + * fw 14.27.1016 |
2829 | + |
2830 | +* Red Hat(R) Testing |
2831 | + |
2832 | + * Platform |
2833 | + |
2834 | + * RHEL 8 |
2835 | + * Kernel 4.18 |
2836 | + * Qemu 4.2 |
2837 | + * X540-AT2 NIC(ixgbe, 10G) |
2838 | + |
2839 | + * Functionality |
2840 | + |
2841 | + * Guest with device assignment(PF) throughput testing(1G hugepage size) |
2842 | + * Guest with device assignment(PF) throughput testing(2M hugepage size) |
2843 | + * Guest with device assignment(VF) throughput testing |
2844 | + * PVP (host dpdk testpmd as vswitch) 1Q: throughput testing |
2845 | + * PVP vhost-user 2Q throughput testing |
2846 | + * PVP vhost-user 1Q - cross numa node throughput testing |
2847 | + * Guest with vhost-user 2 queues throughput testing |
2848 | + * vhost-user reconnect with dpdk-client, qemu-server: qemu reconnect |
2849 | + * PVP 1Q live migration testing |
2850 | + * PVP 1Q cross numa node live migration testing |
2851 | + * Guest with ovs+dpdk+vhost-user 1Q live migration testing |
2852 | + * Guest with ovs+dpdk+vhost-user 1Q live migration testing (2M) |
2853 | + * Guest with ovs+dpdk+vhost-user 2Q live migration testing |
2854 | + * Allocate memory from the NUMA node which Virtio device locates |
2855 | + |
2856 | + |
2857 | +* Intel(R) Testing with Open vSwitch |
2858 | + |
2859 | + * OVS testing with OVS branches master and 2.13 with VSPERF |
2860 | + |
2861 | + * Tested NICs |
2862 | + |
2863 | + * i40e (X710) |
2864 | + * ixgbe (82599ES) |
2865 | + * ice |
2866 | + * vhost |
2867 | + |
2868 | + * Functionality |
2869 | + |
2870 | + * P2P |
2871 | + * PVP |
2872 | + * PVPV |
2873 | + * PVVP |
2874 | + * Multiqueue RSS |
2875 | + * Vhost reconnect |
2876 | + * Jumbo frames 1500, 6000, 9702 |
2877 | + |
2878 | + |
2879 | +* Microsoft(R) Testing |
2880 | + |
2881 | + * Platform |
2882 | + |
2883 | + * Azure |
2884 | + * Ubuntu 16.04-LTS |
2885 | + * Ubuntu 18.04-DAILY-LTS |
2886 | + * RHEL 7-RAW |
2887 | + * RHEL 7.5 |
2888 | + * CentOS 7.5 |
2889 | + * SLES-15-sp1 gen1 |
2890 | + * Mellanox(R) ConnectX-4 |
2891 | + * LISAv2 test framework |
2892 | + |
2893 | + * Functionality |
2894 | + |
2895 | + * VERIFY-DPDK-COMPLIANCE - verifies kernel is supported and that the build is successful |
2896 | + * VERIFY-DPDK-BUILD-AND-TESTPMD-TEST - verifies using testpmd that packets can be sent from a VM to another VM |
2897 | + * VERIFY-SRIOV-FAILSAFE-FOR-DPDK - disables/enables Accelerated Networking for the NICs under test and makes sure DPDK works in both scenarios |
2898 | + * VERIFY-DPDK-FAILSAFE-DURING-TRAFFIC - disables/enables Accelerated Networking for the NICs while generating traffic using testpmd |
2899 | + * PERF-DPDK-FWD-PPS-DS15 - verifies DPDK forwarding performance using testpmd on 2, 4, 8 cores, rx and io mode on size Standard_DS15_v2 |
2900 | + * PERF-DPDK-SINGLE-CORE-PPS-DS4 - verifies DPDK performance using testpmd on 1 core, rx and io mode on size Standard_DS4_v2 |
2901 | + * PERF-DPDK-SINGLE-CORE-PPS-DS15 - verifies DPDK performance using testpmd on 1 core, rx and io mode on size Standard_DS15_v2 |
2902 | + * PERF-DPDK-MULTICORE-PPS-DS15 - verifies DPDK performance using testpmd on 2, 4, 8 cores, rx and io mode on size Standard_DS15_v2 |
2903 | + * PERF-DPDK-MULTICORE-PPS-F32 - verifies DPDK performance using testpmd on 2, 4, 8, 16 cores, rx and io mode on size Standard_F32s_v2 |
2904 | + * DPDK-RING-LATENCY - verifies DPDK CPU latency using dpdk-ring-ping |
2905 | + * VERIFY-DPDK-PRIMARY-SECONDARY-PROCESSES - verifies primary / secondary processes support for DPDK. Runs only on RHEL and Ubuntu distros with Linux kernel >= 4.20 |
2906 | + * VERIFY-DPDK-OVS - builds OVS with DPDK support and tests if the OVS DPDK ports can be created. Runs only on Ubuntu distro. |
2907 | diff --git a/doc/guides/sample_app_ug/l2_forward_event.rst b/doc/guides/sample_app_ug/l2_forward_event.rst |
2908 | index 8c519c3..c5fad93 100644 |
2909 | --- a/doc/guides/sample_app_ug/l2_forward_event.rst |
2910 | +++ b/doc/guides/sample_app_ug/l2_forward_event.rst |
2911 | @@ -202,9 +202,6 @@ chapters that related to the Poll Mode and Event mode Driver in the |
2912 | |
2913 | .. code-block:: c |
2914 | |
2915 | - if (rte_pci_probe() < 0) |
2916 | - rte_panic("Cannot probe PCI\n"); |
2917 | - |
2918 | /* reset l2fwd_dst_ports */ |
2919 | |
2920 | for (portid = 0; portid < RTE_MAX_ETHPORTS; portid++) |
2921 | @@ -234,11 +231,6 @@ chapters that related to the Poll Mode and Event mode Driver in the |
2922 | rte_eth_dev_info_get((uint8_t) portid, &dev_info); |
2923 | } |
2924 | |
2925 | -Observe that: |
2926 | - |
2927 | -* rte_pci_probe() parses the devices on the PCI bus and initializes recognized |
2928 | - devices. |
2929 | - |
2930 | The next step is to configure the RX and TX queues. For each port, there is only |
2931 | one RX queue (only one lcore is able to poll a given port). The number of TX |
2932 | queues depends on the number of available lcores. The rte_eth_dev_configure() |
2933 | diff --git a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst |
2934 | index 39d6b00..671d0c7 100644 |
2935 | --- a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst |
2936 | +++ b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst |
2937 | @@ -194,9 +194,6 @@ in the *DPDK Programmer's Guide* - Rel 1.4 EAR and the *DPDK API Reference*. |
2938 | |
2939 | .. code-block:: c |
2940 | |
2941 | - if (rte_pci_probe() < 0) |
2942 | - rte_exit(EXIT_FAILURE, "Cannot probe PCI\n"); |
2943 | - |
2944 | /* reset l2fwd_dst_ports */ |
2945 | |
2946 | for (portid = 0; portid < RTE_MAX_ETHPORTS; portid++) |
2947 | @@ -226,12 +223,6 @@ in the *DPDK Programmer's Guide* - Rel 1.4 EAR and the *DPDK API Reference*. |
2948 | rte_eth_dev_info_get((uint8_t) portid, &dev_info); |
2949 | } |
2950 | |
2951 | -Observe that: |
2952 | - |
2953 | -* rte_igb_pmd_init_all() simultaneously registers the driver as a PCI driver and as an Ethernet* Poll Mode Driver. |
2954 | - |
2955 | -* rte_pci_probe() parses the devices on the PCI bus and initializes recognized devices. |
2956 | - |
2957 | The next step is to configure the RX and TX queues. |
2958 | For each port, there is only one RX queue (only one lcore is able to poll a given port). |
2959 | The number of TX queues depends on the number of available lcores. |
2960 | diff --git a/doc/guides/sample_app_ug/link_status_intr.rst b/doc/guides/sample_app_ug/link_status_intr.rst |
2961 | index 5283be8..04c40f2 100644 |
2962 | --- a/doc/guides/sample_app_ug/link_status_intr.rst |
2963 | +++ b/doc/guides/sample_app_ug/link_status_intr.rst |
2964 | @@ -88,9 +88,6 @@ To fully understand this code, it is recommended to study the chapters that rela |
2965 | |
2966 | .. code-block:: c |
2967 | |
2968 | - if (rte_pci_probe() < 0) |
2969 | - rte_exit(EXIT_FAILURE, "Cannot probe PCI\n"); |
2970 | - |
2971 | /* |
2972 | * Each logical core is assigned a dedicated TX queue on each port. |
2973 | */ |
2974 | @@ -115,10 +112,6 @@ To fully understand this code, it is recommended to study the chapters that rela |
2975 | rte_eth_dev_info_get((uint8_t) portid, &dev_info); |
2976 | } |
2977 | |
2978 | -Observe that: |
2979 | - |
2980 | -* rte_pci_probe() parses the devices on the PCI bus and initializes recognized devices. |
2981 | - |
2982 | The next step is to configure the RX and TX queues. |
2983 | For each port, there is only one RX queue (only one lcore is able to poll a given port). |
2984 | The number of TX queues depends on the number of available lcores. |
2985 | diff --git a/doc/guides/sample_app_ug/multi_process.rst b/doc/guides/sample_app_ug/multi_process.rst |
2986 | index 9c374da..f2a79a6 100644 |
2987 | --- a/doc/guides/sample_app_ug/multi_process.rst |
2988 | +++ b/doc/guides/sample_app_ug/multi_process.rst |
2989 | @@ -209,7 +209,7 @@ How the Application Works |
2990 | ^^^^^^^^^^^^^^^^^^^^^^^^^ |
2991 | |
2992 | The initialization calls in both the primary and secondary instances are the same for the most part, |
2993 | -calling the rte_eal_init(), 1 G and 10 G driver initialization and then rte_pci_probe() functions. |
2994 | +calling the rte_eal_init(), 1 G and 10 G driver initialization and then probing devices. |
2995 | Thereafter, the initialization done depends on whether the process is configured as a primary or secondary instance. |
2996 | |
2997 | In the primary instance, a memory pool is created for the packet mbufs and the network ports to be used are initialized - |
2998 | diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst |
2999 | index 73ef0b4..78bdf60 100644 |
3000 | --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst |
3001 | +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst |
3002 | @@ -237,7 +237,7 @@ Display the RSS hash functions and RSS hash key of a port:: |
3003 | clear port |
3004 | ~~~~~~~~~~ |
3005 | |
3006 | -Clear the port statistics for a given port or for all ports:: |
3007 | +Clear the port statistics and forward engine statistics for a given port or for all ports:: |
3008 | |
3009 | testpmd> clear port (info|stats|xstats|fdir|stat_qmap) (port_id|all) |
3010 | |
3011 | diff --git a/doc/guides/windows_gsg/build_dpdk.rst b/doc/guides/windows_gsg/build_dpdk.rst |
3012 | index 6711e07..a0e51df 100644 |
3013 | --- a/doc/guides/windows_gsg/build_dpdk.rst |
3014 | +++ b/doc/guides/windows_gsg/build_dpdk.rst |
3015 | @@ -7,15 +7,22 @@ Compiling the DPDK Target from Source |
3016 | System Requirements |
3017 | ------------------- |
3018 | |
3019 | -The DPDK and its applications require the Clang-LLVM C compiler |
3020 | -and Microsoft MSVC linker. |
3021 | +Building the DPDK and its applications requires one of the following |
3022 | +environments: |
3023 | + |
3024 | +* The Clang-LLVM C compiler and Microsoft MSVC linker. |
3025 | +* The MinGW-w64 toolchain (either native or cross). |
3026 | + |
3027 | The Meson Build system is used to prepare the sources for compilation |
3028 | with the Ninja backend. |
3029 | The installation of these tools is covered in this section. |
3030 | |
3031 | |
3032 | +Option 1. Clang-LLVM C Compiler and Microsoft MSVC Linker |
3033 | +--------------------------------------------------------- |
3034 | + |
3035 | Install the Compiler |
3036 | --------------------- |
3037 | +~~~~~~~~~~~~~~~~~~~~ |
3038 | |
3039 | Download and install the clang compiler from |
3040 | `LLVM website <http://releases.llvm.org/download.html>`_. |
3041 | @@ -25,7 +32,7 @@ For example, Clang-LLVM direct download link:: |
3042 | |
3043 | |
3044 | Install the Linker |
3045 | ------------------- |
3046 | +~~~~~~~~~~~~~~~~~~ |
3047 | |
3048 | Download and install the Build Tools for Visual Studio to link and build the |
3049 | files on windows, |
3050 | @@ -34,6 +41,18 @@ When installing build tools, select the "Visual C++ build tools" option |
3051 | and ensure the Windows SDK is selected. |
3052 | |
3053 | |
3054 | +Option 2. MinGW-w64 Toolchain |
3055 | +----------------------------- |
3056 | + |
3057 | +Obtain the latest version from |
3058 | +`MinGW-w64 website <http://mingw-w64.org/doku.php/download>`_. |
3059 | +On Windows, install to a folder without spaces in its name, like ``C:\MinGW``. |
3060 | +This path is assumed for the rest of this guide. |
3061 | + |
3062 | +Version 4.0.4 for Ubuntu 16.04 cannot be used due to a |
3063 | +`MinGW-w64 bug <https://sourceforge.net/p/mingw-w64/bugs/562/>`_. |
3064 | + |
3065 | + |
3066 | Install the Build System |
3067 | ------------------------ |
3068 | |
3069 | @@ -43,6 +62,8 @@ A good option to choose is the MSI installer for both meson and ninja together:: |
3070 | |
3071 | http://mesonbuild.com/Getting-meson.html#installing-meson-and-ninja-with-the-msi-installer%22 |
3072 | |
3073 | +Recommended version is either Meson 0.47.1 (baseline) or the latest release. |
3074 | + |
3075 | Install the Backend |
3076 | ------------------- |
3077 | |
3078 | @@ -56,23 +77,30 @@ Build the code |
3079 | The build environment is setup to build the EAL and the helloworld example by |
3080 | default. |
3081 | |
3082 | -Using the ninja backend |
3083 | -~~~~~~~~~~~~~~~~~~~~~~~~ |
3084 | +Option 1. Native Build on Windows |
3085 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
3086 | |
3087 | -Specifying the compiler might be required to complete the meson command. |
3088 | +When using Clang-LLVM, specifying the compiler might be required to complete |
3089 | +the meson command: |
3090 | |
3091 | .. code-block:: console |
3092 | |
3093 | set CC=clang |
3094 | |
3095 | +When using MinGW-w64, it is sufficient to have toolchain executables in PATH: |
3096 | + |
3097 | +.. code-block:: console |
3098 | + |
3099 | + set PATH=C:\MinGW\mingw64\bin;%PATH% |
3100 | + |
3101 | To compile the examples, the flag ``-Dexamples`` is required. |
3102 | |
3103 | .. code-block:: console |
3104 | |
3105 | cd C:\Users\me\dpdk |
3106 | meson -Dexamples=helloworld build |
3107 | - cd build |
3108 | - ninja |
3109 | + ninja -C build |
3110 | + |
3111 | |
3112 | Run the helloworld example |
3113 | ========================== |
3114 | @@ -87,3 +115,8 @@ Navigate to the examples in the build directory and run `dpdk-helloworld.exe`. |
3115 | hello from core 3 |
3116 | hello from core 0 |
3117 | hello from core 2 |
3118 | + |
3119 | +Note for MinGW-w64: applications are linked to ``libwinpthread-1.dll`` |
3120 | +by default. To run the example, either add toolchain executables directory |
3121 | +to the PATH or copy the library to the working directory. |
3122 | +Alternatively, static linking may be used (mind the LGPLv2.1 license). |
3123 | diff --git a/drivers/Makefile b/drivers/Makefile |
3124 | index 7d5da5d..cfc24b2 100644 |
3125 | --- a/drivers/Makefile |
3126 | +++ b/drivers/Makefile |
3127 | @@ -19,7 +19,7 @@ DEPDIRS-common/qat := bus mempool |
3128 | DIRS-$(CONFIG_RTE_LIBRTE_COMPRESSDEV) += compress |
3129 | DEPDIRS-compress := bus mempool |
3130 | DIRS-$(CONFIG_RTE_LIBRTE_EVENTDEV) += event |
3131 | -DEPDIRS-event := common bus mempool net |
3132 | +DEPDIRS-event := common bus mempool net crypto |
3133 | DIRS-$(CONFIG_RTE_LIBRTE_RAWDEV) += raw |
3134 | DEPDIRS-raw := common bus mempool net event |
3135 | |
3136 | diff --git a/drivers/baseband/turbo_sw/bbdev_turbo_software.c b/drivers/baseband/turbo_sw/bbdev_turbo_software.c |
3137 | index f2fe7a2..e6d9501 100644 |
3138 | --- a/drivers/baseband/turbo_sw/bbdev_turbo_software.c |
3139 | +++ b/drivers/baseband/turbo_sw/bbdev_turbo_software.c |
3140 | @@ -218,7 +218,7 @@ info_get(struct rte_bbdev *dev, struct rte_bbdev_driver_info *dev_info) |
3141 | RTE_BBDEV_LDPC_HQ_COMBINE_OUT_ENABLE | |
3142 | RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE, |
3143 | .llr_size = 8, |
3144 | - .llr_decimals = 2, |
3145 | + .llr_decimals = 4, |
3146 | .harq_memory_size = 0, |
3147 | .num_buffers_src = |
3148 | RTE_BBDEV_LDPC_MAX_CODE_BLOCKS, |
3149 | diff --git a/drivers/bus/fslmc/qbman/qbman_debug.c b/drivers/bus/fslmc/qbman/qbman_debug.c |
3150 | index 0bb2ce8..34374ae 100644 |
3151 | --- a/drivers/bus/fslmc/qbman/qbman_debug.c |
3152 | +++ b/drivers/bus/fslmc/qbman/qbman_debug.c |
3153 | @@ -20,26 +20,27 @@ struct qbman_fq_query_desc { |
3154 | uint8_t verb; |
3155 | uint8_t reserved[3]; |
3156 | uint32_t fqid; |
3157 | - uint8_t reserved2[57]; |
3158 | + uint8_t reserved2[56]; |
3159 | }; |
3160 | |
3161 | int qbman_fq_query_state(struct qbman_swp *s, uint32_t fqid, |
3162 | struct qbman_fq_query_np_rslt *r) |
3163 | { |
3164 | struct qbman_fq_query_desc *p; |
3165 | + struct qbman_fq_query_np_rslt *var; |
3166 | |
3167 | p = (struct qbman_fq_query_desc *)qbman_swp_mc_start(s); |
3168 | if (!p) |
3169 | return -EBUSY; |
3170 | |
3171 | p->fqid = fqid; |
3172 | - *r = *(struct qbman_fq_query_np_rslt *)qbman_swp_mc_complete(s, p, |
3173 | - QBMAN_FQ_QUERY_NP); |
3174 | - if (!r) { |
3175 | + var = qbman_swp_mc_complete(s, p, QBMAN_FQ_QUERY_NP); |
3176 | + if (!var) { |
3177 | pr_err("qbman: Query FQID %d NP fields failed, no response\n", |
3178 | fqid); |
3179 | return -EIO; |
3180 | } |
3181 | + *r = *var; |
3182 | |
3183 | /* Decode the outcome */ |
3184 | QBMAN_BUG_ON((r->verb & QBMAN_RESPONSE_VERB_MASK) != QBMAN_FQ_QUERY_NP); |
3185 | diff --git a/drivers/bus/ifpga/ifpga_bus.c b/drivers/bus/ifpga/ifpga_bus.c |
3186 | index dfd6b1f..addbc3e 100644 |
3187 | --- a/drivers/bus/ifpga/ifpga_bus.c |
3188 | +++ b/drivers/bus/ifpga/ifpga_bus.c |
3189 | @@ -24,6 +24,7 @@ |
3190 | #include <rte_kvargs.h> |
3191 | #include <rte_alarm.h> |
3192 | #include <rte_string_fns.h> |
3193 | +#include <rte_debug.h> |
3194 | |
3195 | #include "rte_rawdev.h" |
3196 | #include "rte_rawdev_pmd.h" |
3197 | diff --git a/drivers/bus/ifpga/rte_bus_ifpga.h b/drivers/bus/ifpga/rte_bus_ifpga.h |
3198 | index 88a6289..a6eeaaf 100644 |
3199 | --- a/drivers/bus/ifpga/rte_bus_ifpga.h |
3200 | +++ b/drivers/bus/ifpga/rte_bus_ifpga.h |
3201 | @@ -17,6 +17,7 @@ extern "C" { |
3202 | |
3203 | #include <rte_bus.h> |
3204 | #include <rte_pci.h> |
3205 | +#include <rte_interrupts.h> |
3206 | #include <rte_spinlock.h> |
3207 | |
3208 | /** Name of Intel FPGA Bus */ |
3209 | diff --git a/drivers/bus/pci/linux/pci.c b/drivers/bus/pci/linux/pci.c |
3210 | index 740a2cd..71b0a30 100644 |
3211 | --- a/drivers/bus/pci/linux/pci.c |
3212 | +++ b/drivers/bus/pci/linux/pci.c |
3213 | @@ -377,6 +377,11 @@ pci_scan_one(const char *dirname, const struct rte_pci_addr *addr) |
3214 | */ |
3215 | RTE_LOG(ERR, EAL, "Unexpected device scan at %s!\n", |
3216 | filename); |
3217 | + else if (dev2->device.devargs != |
3218 | + dev->device.devargs) { |
3219 | + rte_devargs_remove(dev2->device.devargs); |
3220 | + pci_name_set(dev2); |
3221 | + } |
3222 | } |
3223 | free(dev); |
3224 | } |
3225 | diff --git a/drivers/bus/pci/pci_common.c b/drivers/bus/pci/pci_common.c |
3226 | index 3f55420..ab73c00 100644 |
3227 | --- a/drivers/bus/pci/pci_common.c |
3228 | +++ b/drivers/bus/pci/pci_common.c |
3229 | @@ -288,8 +288,8 @@ pci_probe_all_drivers(struct rte_pci_device *dev) |
3230 | * all registered drivers that have a matching entry in its id_table |
3231 | * for discovered devices. |
3232 | */ |
3233 | -int |
3234 | -rte_pci_probe(void) |
3235 | +static int |
3236 | +pci_probe(void) |
3237 | { |
3238 | struct rte_pci_device *dev = NULL; |
3239 | size_t probed = 0, failed = 0; |
3240 | @@ -675,7 +675,7 @@ rte_pci_get_iommu_class(void) |
3241 | struct rte_pci_bus rte_pci_bus = { |
3242 | .bus = { |
3243 | .scan = rte_pci_scan, |
3244 | - .probe = rte_pci_probe, |
3245 | + .probe = pci_probe, |
3246 | .find_device = pci_find_device, |
3247 | .plug = pci_plug, |
3248 | .unplug = pci_unplug, |
3249 | diff --git a/drivers/bus/pci/pci_common_uio.c b/drivers/bus/pci/pci_common_uio.c |
3250 | index 7ea73db..f4dca9d 100644 |
3251 | --- a/drivers/bus/pci/pci_common_uio.c |
3252 | +++ b/drivers/bus/pci/pci_common_uio.c |
3253 | @@ -70,6 +70,7 @@ pci_uio_map_secondary(struct rte_pci_device *dev) |
3254 | } |
3255 | return -1; |
3256 | } |
3257 | + dev->mem_resource[i].addr = mapaddr; |
3258 | } |
3259 | return 0; |
3260 | } |
3261 | diff --git a/drivers/bus/pci/private.h b/drivers/bus/pci/private.h |
3262 | index a205d4d..af1c7ae 100644 |
3263 | --- a/drivers/bus/pci/private.h |
3264 | +++ b/drivers/bus/pci/private.h |
3265 | @@ -18,16 +18,6 @@ struct rte_pci_device; |
3266 | extern struct rte_pci_bus rte_pci_bus; |
3267 | |
3268 | /** |
3269 | - * Probe the PCI bus |
3270 | - * |
3271 | - * @return |
3272 | - * - 0 on success. |
3273 | - * - !0 on error. |
3274 | - */ |
3275 | -int |
3276 | -rte_pci_probe(void); |
3277 | - |
3278 | -/** |
3279 | * Scan the content of the PCI bus, and the devices in the devices |
3280 | * list |
3281 | * |
3282 | diff --git a/drivers/bus/vmbus/linux/vmbus_uio.c b/drivers/bus/vmbus/linux/vmbus_uio.c |
3283 | index 10e50c9..5451bfd 100644 |
3284 | --- a/drivers/bus/vmbus/linux/vmbus_uio.c |
3285 | +++ b/drivers/bus/vmbus/linux/vmbus_uio.c |
3286 | @@ -165,7 +165,7 @@ vmbus_uio_map_resource_by_index(struct rte_vmbus_device *dev, int idx, |
3287 | dev->resource[idx].addr = mapaddr; |
3288 | vmbus_map_addr = RTE_PTR_ADD(mapaddr, size); |
3289 | |
3290 | - /* Record result of sucessful mapping for use by secondary */ |
3291 | + /* Record result of successful mapping for use by secondary */ |
3292 | maps[idx].addr = mapaddr; |
3293 | maps[idx].size = size; |
3294 | |
3295 | diff --git a/drivers/bus/vmbus/vmbus_common.c b/drivers/bus/vmbus/vmbus_common.c |
3296 | index 48a219f..3adef01 100644 |
3297 | --- a/drivers/bus/vmbus/vmbus_common.c |
3298 | +++ b/drivers/bus/vmbus/vmbus_common.c |
3299 | @@ -131,7 +131,7 @@ vmbus_probe_one_driver(struct rte_vmbus_driver *dr, |
3300 | } |
3301 | |
3302 | /* |
3303 | - * IF device class GUID mathces, call the probe function of |
3304 | + * If device class GUID matches, call the probe function of |
3305 | * registere drivers for the vmbus device. |
3306 | * Return -1 if initialization failed, |
3307 | * and 1 if no driver found for this device. |
3308 | diff --git a/drivers/common/octeontx/octeontx_mbox.c b/drivers/common/octeontx/octeontx_mbox.c |
3309 | index 2fd2531..effe0b2 100644 |
3310 | --- a/drivers/common/octeontx/octeontx_mbox.c |
3311 | +++ b/drivers/common/octeontx/octeontx_mbox.c |
3312 | @@ -279,7 +279,7 @@ octeontx_start_domain(void) |
3313 | } |
3314 | |
3315 | static int |
3316 | -octeontx_check_mbox_version(struct mbox_intf_ver app_intf_ver, |
3317 | +octeontx_check_mbox_version(struct mbox_intf_ver *app_intf_ver, |
3318 | struct mbox_intf_ver *intf_ver) |
3319 | { |
3320 | struct mbox_intf_ver kernel_intf_ver = {0}; |
3321 | @@ -290,8 +290,9 @@ octeontx_check_mbox_version(struct mbox_intf_ver app_intf_ver, |
3322 | hdr.coproc = NO_COPROC; |
3323 | hdr.msg = RM_INTERFACE_VERSION; |
3324 | |
3325 | - result = octeontx_mbox_send(&hdr, &app_intf_ver, sizeof(app_intf_ver), |
3326 | - &kernel_intf_ver, sizeof(kernel_intf_ver)); |
3327 | + result = octeontx_mbox_send(&hdr, app_intf_ver, |
3328 | + sizeof(struct mbox_intf_ver), |
3329 | + &kernel_intf_ver, sizeof(kernel_intf_ver)); |
3330 | if (result != sizeof(kernel_intf_ver)) { |
3331 | mbox_log_err("Could not send interface version. Err=%d. FuncErr=%d\n", |
3332 | result, hdr.res_code); |
3333 | @@ -301,9 +302,9 @@ octeontx_check_mbox_version(struct mbox_intf_ver app_intf_ver, |
3334 | if (intf_ver) |
3335 | *intf_ver = kernel_intf_ver; |
3336 | |
3337 | - if (app_intf_ver.platform != kernel_intf_ver.platform || |
3338 | - app_intf_ver.major != kernel_intf_ver.major || |
3339 | - app_intf_ver.minor != kernel_intf_ver.minor) |
3340 | + if (app_intf_ver->platform != kernel_intf_ver.platform || |
3341 | + app_intf_ver->major != kernel_intf_ver.major || |
3342 | + app_intf_ver->minor != kernel_intf_ver.minor) |
3343 | result = -EINVAL; |
3344 | |
3345 | return result; |
3346 | @@ -312,7 +313,7 @@ octeontx_check_mbox_version(struct mbox_intf_ver app_intf_ver, |
3347 | int |
3348 | octeontx_mbox_init(void) |
3349 | { |
3350 | - const struct mbox_intf_ver MBOX_INTERFACE_VERSION = { |
3351 | + struct mbox_intf_ver MBOX_INTERFACE_VERSION = { |
3352 | .platform = 0x01, |
3353 | .major = 0x01, |
3354 | .minor = 0x03 |
3355 | @@ -330,7 +331,7 @@ octeontx_mbox_init(void) |
3356 | return ret; |
3357 | } |
3358 | |
3359 | - ret = octeontx_check_mbox_version(MBOX_INTERFACE_VERSION, |
3360 | + ret = octeontx_check_mbox_version(&MBOX_INTERFACE_VERSION, |
3361 | &rm_intf_ver); |
3362 | if (ret < 0) { |
3363 | mbox_log_err("MBOX version: Kernel(%d.%d.%d) != DPDK(%d.%d.%d)", |
3364 | diff --git a/drivers/common/octeontx2/hw/otx2_npc.h b/drivers/common/octeontx2/hw/otx2_npc.h |
3365 | index 3dfc137..600084f 100644 |
3366 | --- a/drivers/common/octeontx2/hw/otx2_npc.h |
3367 | +++ b/drivers/common/octeontx2/hw/otx2_npc.h |
3368 | @@ -213,7 +213,7 @@ enum npc_kpu_lc_ltype { |
3369 | NPC_LT_LC_FCOE, |
3370 | }; |
3371 | |
3372 | -/* Don't modify Ltypes upto SCTP, otherwise it will |
3373 | +/* Don't modify Ltypes up to SCTP, otherwise it will |
3374 | * effect flow tag calculation and thus RSS. |
3375 | */ |
3376 | enum npc_kpu_ld_ltype { |
3377 | @@ -260,7 +260,7 @@ enum npc_kpu_lg_ltype { |
3378 | NPC_LT_LG_TU_ETHER_IN_NSH, |
3379 | }; |
3380 | |
3381 | -/* Don't modify Ltypes upto SCTP, otherwise it will |
3382 | +/* Don't modify Ltypes up to SCTP, otherwise it will |
3383 | * effect flow tag calculation and thus RSS. |
3384 | */ |
3385 | enum npc_kpu_lh_ltype { |
3386 | diff --git a/drivers/compress/octeontx/otx_zip_pmd.c b/drivers/compress/octeontx/otx_zip_pmd.c |
3387 | index 9e00c86..bff8ef0 100644 |
3388 | --- a/drivers/compress/octeontx/otx_zip_pmd.c |
3389 | +++ b/drivers/compress/octeontx/otx_zip_pmd.c |
3390 | @@ -406,7 +406,7 @@ zip_pmd_qp_setup(struct rte_compressdev *dev, uint16_t qp_id, |
3391 | |
3392 | qp->name = name; |
3393 | |
3394 | - /* Create completion queue upto max_inflight_ops */ |
3395 | + /* Create completion queue up to max_inflight_ops */ |
3396 | qp->processed_pkts = zip_pmd_qp_create_processed_pkts_ring(qp, |
3397 | max_inflight_ops, socket_id); |
3398 | if (qp->processed_pkts == NULL) |
3399 | diff --git a/drivers/compress/zlib/zlib_pmd.c b/drivers/compress/zlib/zlib_pmd.c |
3400 | index 19f9200..e39be2e 100644 |
3401 | --- a/drivers/compress/zlib/zlib_pmd.c |
3402 | +++ b/drivers/compress/zlib/zlib_pmd.c |
3403 | @@ -7,6 +7,8 @@ |
3404 | |
3405 | #include "zlib_pmd_private.h" |
3406 | |
3407 | +int zlib_logtype_driver; |
3408 | + |
3409 | /** Compute next mbuf in the list, assign data buffer and length, |
3410 | * returns 0 if mbuf is NULL |
3411 | */ |
3412 | diff --git a/drivers/compress/zlib/zlib_pmd_private.h b/drivers/compress/zlib/zlib_pmd_private.h |
3413 | index bda4975..e36c5dc 100644 |
3414 | --- a/drivers/compress/zlib/zlib_pmd_private.h |
3415 | +++ b/drivers/compress/zlib/zlib_pmd_private.h |
3416 | @@ -14,7 +14,7 @@ |
3417 | |
3418 | #define DEF_MEM_LEVEL 8 |
3419 | |
3420 | -int zlib_logtype_driver; |
3421 | +extern int zlib_logtype_driver; |
3422 | #define ZLIB_PMD_LOG(level, fmt, args...) \ |
3423 | rte_log(RTE_LOG_ ## level, zlib_logtype_driver, "%s(): "fmt "\n", \ |
3424 | __func__, ##args) |
3425 | diff --git a/drivers/crypto/aesni_gcm/Makefile b/drivers/crypto/aesni_gcm/Makefile |
3426 | index d8190a2..b443167 100644 |
3427 | --- a/drivers/crypto/aesni_gcm/Makefile |
3428 | +++ b/drivers/crypto/aesni_gcm/Makefile |
3429 | @@ -20,7 +20,8 @@ LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring |
3430 | LDLIBS += -lrte_cryptodev |
3431 | LDLIBS += -lrte_bus_vdev |
3432 | |
3433 | -IMB_HDR = $(shell echo '\#include <intel-ipsec-mb.h>' | \ |
3434 | +H := \# |
3435 | +IMB_HDR = $(shell echo '$Hinclude <intel-ipsec-mb.h>' | \ |
3436 | $(CC) -E $(EXTRA_CFLAGS) - | grep 'intel-ipsec-mb.h' | \ |
3437 | head -n1 | cut -d'"' -f2) |
3438 | |
3439 | diff --git a/drivers/crypto/aesni_gcm/aesni_gcm_pmd.c b/drivers/crypto/aesni_gcm/aesni_gcm_pmd.c |
3440 | index 1a03be3..c9c9eb8 100644 |
3441 | --- a/drivers/crypto/aesni_gcm/aesni_gcm_pmd.c |
3442 | +++ b/drivers/crypto/aesni_gcm/aesni_gcm_pmd.c |
3443 | @@ -13,6 +13,8 @@ |
3444 | |
3445 | #include "aesni_gcm_pmd_private.h" |
3446 | |
3447 | +int aesni_gcm_logtype_driver; |
3448 | + |
3449 | static uint8_t cryptodev_driver_id; |
3450 | |
3451 | /** Parse crypto xform chain and set private session parameters */ |
3452 | diff --git a/drivers/crypto/aesni_gcm/aesni_gcm_pmd_private.h b/drivers/crypto/aesni_gcm/aesni_gcm_pmd_private.h |
3453 | index 2039adb..7347c47 100644 |
3454 | --- a/drivers/crypto/aesni_gcm/aesni_gcm_pmd_private.h |
3455 | +++ b/drivers/crypto/aesni_gcm/aesni_gcm_pmd_private.h |
3456 | @@ -20,7 +20,7 @@ |
3457 | /**< AES-NI GCM PMD device name */ |
3458 | |
3459 | /** AES-NI GCM PMD LOGTYPE DRIVER */ |
3460 | -int aesni_gcm_logtype_driver; |
3461 | +extern int aesni_gcm_logtype_driver; |
3462 | #define AESNI_GCM_LOG(level, fmt, ...) \ |
3463 | rte_log(RTE_LOG_ ## level, aesni_gcm_logtype_driver, \ |
3464 | "%s() line %u: "fmt "\n", __func__, __LINE__, \ |
3465 | diff --git a/drivers/crypto/aesni_mb/Makefile b/drivers/crypto/aesni_mb/Makefile |
3466 | index f1530e7..aa2e428 100644 |
3467 | --- a/drivers/crypto/aesni_mb/Makefile |
3468 | +++ b/drivers/crypto/aesni_mb/Makefile |
3469 | @@ -20,7 +20,8 @@ LDLIBS += -lrte_eal -lrte_mbuf -lrte_mempool -lrte_ring |
3470 | LDLIBS += -lrte_cryptodev |
3471 | LDLIBS += -lrte_bus_vdev |
3472 | |
3473 | -IMB_HDR = $(shell echo '\#include <intel-ipsec-mb.h>' | \ |
3474 | +H := \# |
3475 | +IMB_HDR = $(shell echo '$Hinclude <intel-ipsec-mb.h>' | \ |
3476 | $(CC) -E $(EXTRA_CFLAGS) - | grep 'intel-ipsec-mb.h' | \ |
3477 | head -n1 | cut -d'"' -f2) |
3478 | |
3479 | diff --git a/drivers/crypto/aesni_mb/aesni_mb_pmd_private.h b/drivers/crypto/aesni_mb/aesni_mb_pmd_private.h |
3480 | index 3456693..b3cb2f1 100644 |
3481 | --- a/drivers/crypto/aesni_mb/aesni_mb_pmd_private.h |
3482 | +++ b/drivers/crypto/aesni_mb/aesni_mb_pmd_private.h |
3483 | @@ -19,7 +19,7 @@ enum aesni_mb_vector_mode { |
3484 | /**< AES-NI Multi buffer PMD device name */ |
3485 | |
3486 | /** AESNI_MB PMD LOGTYPE DRIVER */ |
3487 | -int aesni_mb_logtype_driver; |
3488 | +extern int aesni_mb_logtype_driver; |
3489 | |
3490 | #define AESNI_MB_LOG(level, fmt, ...) \ |
3491 | rte_log(RTE_LOG_ ## level, aesni_mb_logtype_driver, \ |
3492 | diff --git a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c |
3493 | index 33f4167..40feae3 100644 |
3494 | --- a/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c |
3495 | +++ b/drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c |
3496 | @@ -14,6 +14,8 @@ |
3497 | |
3498 | #include "aesni_mb_pmd_private.h" |
3499 | |
3500 | +int aesni_mb_logtype_driver; |
3501 | + |
3502 | #define AES_CCM_DIGEST_MIN_LEN 4 |
3503 | #define AES_CCM_DIGEST_MAX_LEN 16 |
3504 | #define HMAC_MAX_BLOCK_SIZE 128 |
3505 | diff --git a/drivers/crypto/caam_jr/Makefile b/drivers/crypto/caam_jr/Makefile |
3506 | index 1b1f25a..5b27b84 100644 |
3507 | --- a/drivers/crypto/caam_jr/Makefile |
3508 | +++ b/drivers/crypto/caam_jr/Makefile |
3509 | @@ -16,6 +16,13 @@ CFLAGS += -D _GNU_SOURCE |
3510 | CFLAGS += -O3 |
3511 | CFLAGS += $(WERROR_FLAGS) |
3512 | |
3513 | +# FIXME: temporary solution for Bugzilla 469 |
3514 | +ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y) |
3515 | +ifeq ($(shell test $(GCC_VERSION) -ge 100 && echo 1), 1) |
3516 | +CFLAGS += -fcommon |
3517 | +endif |
3518 | +endif |
3519 | + |
3520 | CFLAGS += -I$(RTE_SDK)/drivers/bus/dpaa/include |
3521 | CFLAGS += -I$(RTE_SDK)/drivers/common/dpaax |
3522 | CFLAGS += -I$(RTE_SDK)/drivers/common/dpaax/caamflib/ |
3523 | diff --git a/drivers/crypto/caam_jr/caam_jr.c b/drivers/crypto/caam_jr/caam_jr.c |
3524 | index 8aaa3d4..86aa9a1 100644 |
3525 | --- a/drivers/crypto/caam_jr/caam_jr.c |
3526 | +++ b/drivers/crypto/caam_jr/caam_jr.c |
3527 | @@ -2084,7 +2084,7 @@ static struct rte_security_ops caam_jr_security_ops = { |
3528 | static void |
3529 | close_job_ring(struct sec_job_ring_t *job_ring) |
3530 | { |
3531 | - if (job_ring->irq_fd) { |
3532 | + if (job_ring->irq_fd != -1) { |
3533 | /* Producer index is frozen. If consumer index is not equal |
3534 | * with producer index, then we have descs to flush. |
3535 | */ |
3536 | @@ -2093,7 +2093,7 @@ close_job_ring(struct sec_job_ring_t *job_ring) |
3537 | |
3538 | /* free the uio job ring */ |
3539 | free_job_ring(job_ring->irq_fd); |
3540 | - job_ring->irq_fd = 0; |
3541 | + job_ring->irq_fd = -1; |
3542 | caam_jr_dma_free(job_ring->input_ring); |
3543 | caam_jr_dma_free(job_ring->output_ring); |
3544 | g_job_rings_no--; |
3545 | @@ -2197,7 +2197,7 @@ caam_jr_dev_uninit(struct rte_cryptodev *dev) |
3546 | * |
3547 | */ |
3548 | static void * |
3549 | -init_job_ring(void *reg_base_addr, uint32_t irq_id) |
3550 | +init_job_ring(void *reg_base_addr, int irq_id) |
3551 | { |
3552 | struct sec_job_ring_t *job_ring = NULL; |
3553 | int i, ret = 0; |
3554 | @@ -2207,7 +2207,7 @@ init_job_ring(void *reg_base_addr, uint32_t irq_id) |
3555 | int irq_coalescing_count = 0; |
3556 | |
3557 | for (i = 0; i < MAX_SEC_JOB_RINGS; i++) { |
3558 | - if (g_job_rings[i].irq_fd == 0) { |
3559 | + if (g_job_rings[i].irq_fd == -1) { |
3560 | job_ring = &g_job_rings[i]; |
3561 | g_job_rings_no++; |
3562 | break; |
3563 | @@ -2460,6 +2460,15 @@ cryptodev_caam_jr_remove(struct rte_vdev_device *vdev) |
3564 | return rte_cryptodev_pmd_destroy(cryptodev); |
3565 | } |
3566 | |
3567 | +static void |
3568 | +sec_job_rings_init(void) |
3569 | +{ |
3570 | + int i; |
3571 | + |
3572 | + for (i = 0; i < MAX_SEC_JOB_RINGS; i++) |
3573 | + g_job_rings[i].irq_fd = -1; |
3574 | +} |
3575 | + |
3576 | static struct rte_vdev_driver cryptodev_caam_jr_drv = { |
3577 | .probe = cryptodev_caam_jr_probe, |
3578 | .remove = cryptodev_caam_jr_remove |
3579 | @@ -2474,6 +2483,12 @@ RTE_PMD_REGISTER_PARAM_STRING(CRYPTODEV_NAME_CAAM_JR_PMD, |
3580 | RTE_PMD_REGISTER_CRYPTO_DRIVER(caam_jr_crypto_drv, cryptodev_caam_jr_drv.driver, |
3581 | cryptodev_driver_id); |
3582 | |
3583 | +RTE_INIT(caam_jr_init) |
3584 | +{ |
3585 | + sec_uio_job_rings_init(); |
3586 | + sec_job_rings_init(); |
3587 | +} |
3588 | + |
3589 | RTE_INIT(caam_jr_init_log) |
3590 | { |
3591 | caam_jr_logtype = rte_log_register("pmd.crypto.caam"); |
3592 | diff --git a/drivers/crypto/caam_jr/caam_jr_hw_specific.h b/drivers/crypto/caam_jr/caam_jr_hw_specific.h |
3593 | index 5f58a58..bbe8bc3 100644 |
3594 | --- a/drivers/crypto/caam_jr/caam_jr_hw_specific.h |
3595 | +++ b/drivers/crypto/caam_jr/caam_jr_hw_specific.h |
3596 | @@ -360,7 +360,7 @@ struct sec_job_ring_t { |
3597 | * bitwise operations. |
3598 | */ |
3599 | |
3600 | - uint32_t irq_fd; /* The file descriptor used for polling from |
3601 | + int irq_fd; /* The file descriptor used for polling from |
3602 | * user space for interrupts notifications |
3603 | */ |
3604 | uint32_t jr_mode; /* Model used by SEC Driver to receive |
3605 | diff --git a/drivers/crypto/caam_jr/caam_jr_pvt.h b/drivers/crypto/caam_jr/caam_jr_pvt.h |
3606 | index 98cd443..552d6b9 100644 |
3607 | --- a/drivers/crypto/caam_jr/caam_jr_pvt.h |
3608 | +++ b/drivers/crypto/caam_jr/caam_jr_pvt.h |
3609 | @@ -216,7 +216,7 @@ calc_chksum(void *buffer, int len) |
3610 | } |
3611 | struct uio_job_ring { |
3612 | uint32_t jr_id; |
3613 | - uint32_t uio_fd; |
3614 | + int uio_fd; |
3615 | void *register_base_addr; |
3616 | int map_size; |
3617 | int uio_minor_number; |
3618 | @@ -224,8 +224,9 @@ struct uio_job_ring { |
3619 | |
3620 | int sec_cleanup(void); |
3621 | int sec_configure(void); |
3622 | +void sec_uio_job_rings_init(void); |
3623 | struct uio_job_ring *config_job_ring(void); |
3624 | -void free_job_ring(uint32_t uio_fd); |
3625 | +void free_job_ring(int uio_fd); |
3626 | |
3627 | /* For Dma memory allocation of specified length and alignment */ |
3628 | static inline void * |
3629 | @@ -279,7 +280,7 @@ static inline rte_iova_t caam_jr_dma_vtop(void *ptr) |
3630 | * @retval 0 for success |
3631 | * @retval -1 value for error |
3632 | */ |
3633 | -uint32_t caam_jr_enable_irqs(uint32_t uio_fd); |
3634 | +int caam_jr_enable_irqs(int uio_fd); |
3635 | |
3636 | /** @brief Request to SEC kernel driver to disable interrupts for descriptor |
3637 | * finished processing |
3638 | @@ -292,6 +293,6 @@ uint32_t caam_jr_enable_irqs(uint32_t uio_fd); |
3639 | * @retval -1 value for error |
3640 | * |
3641 | */ |
3642 | -uint32_t caam_jr_disable_irqs(uint32_t uio_fd); |
3643 | +int caam_jr_disable_irqs(int uio_fd); |
3644 | |
3645 | #endif |
3646 | diff --git a/drivers/crypto/caam_jr/caam_jr_uio.c b/drivers/crypto/caam_jr/caam_jr_uio.c |
3647 | index b1bb44c..e4ee102 100644 |
3648 | --- a/drivers/crypto/caam_jr/caam_jr_uio.c |
3649 | +++ b/drivers/crypto/caam_jr/caam_jr_uio.c |
3650 | @@ -145,7 +145,7 @@ file_read_first_line(const char root[], const char subdir[], |
3651 | "%s/%s/%s", root, subdir, filename); |
3652 | |
3653 | fd = open(absolute_file_name, O_RDONLY); |
3654 | - SEC_ASSERT(fd > 0, fd, "Error opening file %s", |
3655 | + SEC_ASSERT(fd >= 0, fd, "Error opening file %s", |
3656 | absolute_file_name); |
3657 | |
3658 | /* read UIO device name from first line in file */ |
3659 | @@ -179,7 +179,7 @@ file_read_first_line(const char root[], const char subdir[], |
3660 | * kernel driver as well. No special return values are used. |
3661 | */ |
3662 | static int |
3663 | -sec_uio_send_command(uint32_t uio_fd, int32_t uio_command) |
3664 | +sec_uio_send_command(int uio_fd, int32_t uio_command) |
3665 | { |
3666 | int ret; |
3667 | |
3668 | @@ -201,8 +201,8 @@ sec_uio_send_command(uint32_t uio_fd, int32_t uio_command) |
3669 | * @retval 0 for success |
3670 | * @retval -1 value for error |
3671 | */ |
3672 | -uint32_t |
3673 | -caam_jr_enable_irqs(uint32_t uio_fd) |
3674 | +int |
3675 | +caam_jr_enable_irqs(int uio_fd) |
3676 | { |
3677 | int ret; |
3678 | |
3679 | @@ -232,8 +232,8 @@ caam_jr_enable_irqs(uint32_t uio_fd) |
3680 | * @retval -1 value for error |
3681 | * |
3682 | */ |
3683 | -uint32_t |
3684 | -caam_jr_disable_irqs(uint32_t uio_fd) |
3685 | +int |
3686 | +caam_jr_disable_irqs(int uio_fd) |
3687 | { |
3688 | int ret; |
3689 | |
3690 | @@ -322,12 +322,12 @@ uio_map_registers(int uio_device_fd, int uio_device_id, |
3691 | } |
3692 | |
3693 | void |
3694 | -free_job_ring(uint32_t uio_fd) |
3695 | +free_job_ring(int uio_fd) |
3696 | { |
3697 | struct uio_job_ring *job_ring = NULL; |
3698 | int i; |
3699 | |
3700 | - if (!uio_fd) |
3701 | + if (uio_fd == -1) |
3702 | return; |
3703 | |
3704 | for (i = 0; i < MAX_SEC_JOB_RINGS; i++) { |
3705 | @@ -347,7 +347,7 @@ free_job_ring(uint32_t uio_fd) |
3706 | job_ring->jr_id, job_ring->uio_fd); |
3707 | close(job_ring->uio_fd); |
3708 | g_uio_jr_num--; |
3709 | - job_ring->uio_fd = 0; |
3710 | + job_ring->uio_fd = -1; |
3711 | if (job_ring->register_base_addr == NULL) |
3712 | return; |
3713 | |
3714 | @@ -370,7 +370,7 @@ uio_job_ring *config_job_ring(void) |
3715 | int i; |
3716 | |
3717 | for (i = 0; i < MAX_SEC_JOB_RINGS; i++) { |
3718 | - if (g_uio_job_ring[i].uio_fd == 0) { |
3719 | + if (g_uio_job_ring[i].uio_fd == -1) { |
3720 | job_ring = &g_uio_job_ring[i]; |
3721 | g_uio_jr_num++; |
3722 | break; |
3723 | @@ -389,7 +389,7 @@ uio_job_ring *config_job_ring(void) |
3724 | |
3725 | /* Open device file */ |
3726 | job_ring->uio_fd = open(uio_device_file_name, O_RDWR); |
3727 | - SEC_ASSERT(job_ring->uio_fd > 0, NULL, |
3728 | + SEC_ASSERT(job_ring->uio_fd >= 0, NULL, |
3729 | "Failed to open UIO device file for job ring %d", |
3730 | job_ring->jr_id); |
3731 | |
3732 | @@ -488,12 +488,22 @@ sec_cleanup(void) |
3733 | /* I need to close the fd after shutdown UIO commands need to be |
3734 | * sent using the fd |
3735 | */ |
3736 | - if (job_ring->uio_fd != 0) { |
3737 | + if (job_ring->uio_fd != -1) { |
3738 | CAAM_JR_INFO( |
3739 | "Closed device file for job ring %d , fd = %d", |
3740 | job_ring->jr_id, job_ring->uio_fd); |
3741 | close(job_ring->uio_fd); |
3742 | + job_ring->uio_fd = -1; |
3743 | } |
3744 | } |
3745 | return 0; |
3746 | } |
3747 | + |
3748 | +void |
3749 | +sec_uio_job_rings_init(void) |
3750 | +{ |
3751 | + int i; |
3752 | + |
3753 | + for (i = 0; i < MAX_SEC_JOB_RINGS; i++) |
3754 | + g_uio_job_ring[i].uio_fd = -1; |
3755 | +} |
3756 | diff --git a/drivers/crypto/caam_jr/meson.build b/drivers/crypto/caam_jr/meson.build |
3757 | index 50132ae..0dbfa2e 100644 |
3758 | --- a/drivers/crypto/caam_jr/meson.build |
3759 | +++ b/drivers/crypto/caam_jr/meson.build |
3760 | @@ -14,6 +14,11 @@ sources = files('caam_jr_capabilities.c', |
3761 | |
3762 | allow_experimental_apis = true |
3763 | |
3764 | +# FIXME: temporary solution for Bugzilla 469 |
3765 | +if (toolchain == 'gcc' and cc.version().version_compare('>=10.0.0')) |
3766 | + cflags += '-fcommon' |
3767 | +endif |
3768 | + |
3769 | includes += include_directories('../../bus/dpaa/include/') |
3770 | includes += include_directories('../../common/dpaax/') |
3771 | includes += include_directories('../../common/dpaax/caamflib/') |
3772 | diff --git a/drivers/crypto/ccp/ccp_dev.c b/drivers/crypto/ccp/ccp_dev.c |
3773 | index 80fe6a4..7d98b2e 100644 |
3774 | --- a/drivers/crypto/ccp/ccp_dev.c |
3775 | +++ b/drivers/crypto/ccp/ccp_dev.c |
3776 | @@ -760,7 +760,7 @@ ccp_probe_device(const char *dirname, uint16_t domain, |
3777 | return 0; |
3778 | fail: |
3779 | CCP_LOG_ERR("CCP Device probe failed"); |
3780 | - if (uio_fd > 0) |
3781 | + if (uio_fd >= 0) |
3782 | close(uio_fd); |
3783 | if (ccp_dev) |
3784 | rte_free(ccp_dev); |
3785 | diff --git a/drivers/crypto/dpaa2_sec/Makefile b/drivers/crypto/dpaa2_sec/Makefile |
3786 | index 96b9c78..183e941 100644 |
3787 | --- a/drivers/crypto/dpaa2_sec/Makefile |
3788 | +++ b/drivers/crypto/dpaa2_sec/Makefile |
3789 | @@ -20,6 +20,13 @@ CFLAGS += -Wno-implicit-fallthrough |
3790 | endif |
3791 | endif |
3792 | |
3793 | +# FIXME: temporary solution for Bugzilla 469 |
3794 | +ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y) |
3795 | +ifeq ($(shell test $(GCC_VERSION) -ge 100 && echo 1), 1) |
3796 | +CFLAGS += -fcommon |
3797 | +endif |
3798 | +endif |
3799 | + |
3800 | CFLAGS += -I$(RTE_SDK)/drivers/common/dpaax |
3801 | CFLAGS += -I$(RTE_SDK)/drivers/common/dpaax/caamflib |
3802 | CFLAGS += -I$(RTE_SDK)/drivers/crypto/dpaa2_sec/ |
3803 | diff --git a/drivers/crypto/dpaa2_sec/meson.build b/drivers/crypto/dpaa2_sec/meson.build |
3804 | index ab9c8c8..3f1dfd6 100644 |
3805 | --- a/drivers/crypto/dpaa2_sec/meson.build |
3806 | +++ b/drivers/crypto/dpaa2_sec/meson.build |
3807 | @@ -12,4 +12,9 @@ sources = files('dpaa2_sec_dpseci.c', |
3808 | |
3809 | allow_experimental_apis = true |
3810 | |
3811 | +# FIXME: temporary solution for Bugzilla 469 |
3812 | +if (toolchain == 'gcc' and cc.version().version_compare('>=10.0.0')) |
3813 | + cflags += '-fcommon' |
3814 | +endif |
3815 | + |
3816 | includes += include_directories('mc', '../../common/dpaax', '../../common/dpaax/caamflib') |
3817 | diff --git a/drivers/crypto/dpaa_sec/Makefile b/drivers/crypto/dpaa_sec/Makefile |
3818 | index fbfd775..b5a97b9 100644 |
3819 | --- a/drivers/crypto/dpaa_sec/Makefile |
3820 | +++ b/drivers/crypto/dpaa_sec/Makefile |
3821 | @@ -14,6 +14,13 @@ CFLAGS += -DALLOW_EXPERIMENTAL_API |
3822 | CFLAGS += -O3 |
3823 | CFLAGS += $(WERROR_FLAGS) |
3824 | |
3825 | +# FIXME: temporary solution for Bugzilla 469 |
3826 | +ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y) |
3827 | +ifeq ($(shell test $(GCC_VERSION) -ge 100 && echo 1), 1) |
3828 | +CFLAGS += -fcommon |
3829 | +endif |
3830 | +endif |
3831 | + |
3832 | CFLAGS += -I$(RTE_SDK)/drivers/bus/dpaa |
3833 | CFLAGS += -I$(RTE_SDK)/drivers/bus/dpaa/include |
3834 | CFLAGS += -I$(RTE_SDK)/drivers/bus/dpaa/base/qbman |
3835 | diff --git a/drivers/crypto/dpaa_sec/meson.build b/drivers/crypto/dpaa_sec/meson.build |
3836 | index 71de819..e819f9c 100644 |
3837 | --- a/drivers/crypto/dpaa_sec/meson.build |
3838 | +++ b/drivers/crypto/dpaa_sec/meson.build |
3839 | @@ -11,6 +11,11 @@ sources = files('dpaa_sec.c') |
3840 | |
3841 | allow_experimental_apis = true |
3842 | |
3843 | +# FIXME: temporary solution for Bugzilla 469 |
3844 | +if (toolchain == 'gcc' and cc.version().version_compare('>=10.0.0')) |
3845 | + cflags += '-fcommon' |
3846 | +endif |
3847 | + |
3848 | includes += include_directories('../../bus/dpaa/include') |
3849 | includes += include_directories('../../common/dpaax') |
3850 | includes += include_directories('../../common/dpaax/caamflib/') |
3851 | diff --git a/drivers/crypto/kasumi/kasumi_pmd_private.h b/drivers/crypto/kasumi/kasumi_pmd_private.h |
3852 | index 7ac19c5..f0b83f2 100644 |
3853 | --- a/drivers/crypto/kasumi/kasumi_pmd_private.h |
3854 | +++ b/drivers/crypto/kasumi/kasumi_pmd_private.h |
3855 | @@ -11,7 +11,7 @@ |
3856 | /**< KASUMI PMD device name */ |
3857 | |
3858 | /** KASUMI PMD LOGTYPE DRIVER */ |
3859 | -int kasumi_logtype_driver; |
3860 | +extern int kasumi_logtype_driver; |
3861 | |
3862 | #define KASUMI_LOG(level, fmt, ...) \ |
3863 | rte_log(RTE_LOG_ ## level, kasumi_logtype_driver, \ |
3864 | @@ -72,6 +72,6 @@ kasumi_set_session_parameters(struct kasumi_session *sess, |
3865 | |
3866 | |
3867 | /** device specific operations function pointer structure */ |
3868 | -struct rte_cryptodev_ops *rte_kasumi_pmd_ops; |
3869 | +extern struct rte_cryptodev_ops *rte_kasumi_pmd_ops; |
3870 | |
3871 | #endif /* _KASUMI_PMD_PRIVATE_H_ */ |
3872 | diff --git a/drivers/crypto/kasumi/rte_kasumi_pmd.c b/drivers/crypto/kasumi/rte_kasumi_pmd.c |
3873 | index d0583ef..c87dca5 100644 |
3874 | --- a/drivers/crypto/kasumi/rte_kasumi_pmd.c |
3875 | +++ b/drivers/crypto/kasumi/rte_kasumi_pmd.c |
3876 | @@ -17,6 +17,7 @@ |
3877 | #define KASUMI_MAX_BURST 4 |
3878 | #define BYTE_LEN 8 |
3879 | |
3880 | +int kasumi_logtype_driver; |
3881 | static uint8_t cryptodev_driver_id; |
3882 | |
3883 | /** Get xform chain order. */ |
3884 | diff --git a/drivers/crypto/mvsam/mrvl_pmd_private.h b/drivers/crypto/mvsam/mrvl_pmd_private.h |
3885 | index 09702b9..e575330 100644 |
3886 | --- a/drivers/crypto/mvsam/mrvl_pmd_private.h |
3887 | +++ b/drivers/crypto/mvsam/mrvl_pmd_private.h |
3888 | @@ -13,7 +13,7 @@ |
3889 | /**< Marvell PMD device name */ |
3890 | |
3891 | /** MRVL PMD LOGTYPE DRIVER */ |
3892 | -int mrvl_logtype_driver; |
3893 | +extern int mrvl_logtype_driver; |
3894 | |
3895 | #define MRVL_LOG(level, fmt, ...) \ |
3896 | rte_log(RTE_LOG_ ## level, mrvl_logtype_driver, \ |
3897 | diff --git a/drivers/crypto/mvsam/rte_mrvl_pmd.c b/drivers/crypto/mvsam/rte_mrvl_pmd.c |
3898 | index 3c0fe21..63782ce 100644 |
3899 | --- a/drivers/crypto/mvsam/rte_mrvl_pmd.c |
3900 | +++ b/drivers/crypto/mvsam/rte_mrvl_pmd.c |
3901 | @@ -19,6 +19,7 @@ |
3902 | #define MRVL_PMD_MAX_NB_SESS_ARG ("max_nb_sessions") |
3903 | #define MRVL_PMD_DEFAULT_MAX_NB_SESSIONS 2048 |
3904 | |
3905 | +int mrvl_logtype_driver; |
3906 | static uint8_t cryptodev_driver_id; |
3907 | |
3908 | struct mrvl_pmd_init_params { |
3909 | diff --git a/drivers/crypto/nitrox/nitrox_csr.h b/drivers/crypto/nitrox/nitrox_csr.h |
3910 | index 8cd92e3..de7a3c6 100644 |
3911 | --- a/drivers/crypto/nitrox/nitrox_csr.h |
3912 | +++ b/drivers/crypto/nitrox/nitrox_csr.h |
3913 | @@ -12,18 +12,18 @@ |
3914 | #define NITROX_CSR_ADDR(bar_addr, offset) (bar_addr + (offset)) |
3915 | |
3916 | /* NPS packet registers */ |
3917 | -#define NPS_PKT_IN_INSTR_CTLX(_i) (0x10060 + ((_i) * 0x40000)) |
3918 | -#define NPS_PKT_IN_INSTR_BADDRX(_i) (0x10068 + ((_i) * 0x40000)) |
3919 | -#define NPS_PKT_IN_INSTR_RSIZEX(_i) (0x10070 + ((_i) * 0x40000)) |
3920 | -#define NPS_PKT_IN_DONE_CNTSX(_i) (0x10080 + ((_i) * 0x40000)) |
3921 | -#define NPS_PKT_IN_INSTR_BAOFF_DBELLX(_i) (0x10078 + ((_i) * 0x40000)) |
3922 | -#define NPS_PKT_IN_INT_LEVELSX(_i) (0x10088 + ((_i) * 0x40000)) |
3923 | -#define NPS_PKT_SLC_CTLX(_i) (0x10000 + ((_i) * 0x40000)) |
3924 | -#define NPS_PKT_SLC_CNTSX(_i) (0x10008 + ((_i) * 0x40000)) |
3925 | -#define NPS_PKT_SLC_INT_LEVELSX(_i) (0x10010 + ((_i) * 0x40000)) |
3926 | +#define NPS_PKT_IN_INSTR_CTLX(_i) (0x10060UL + ((_i) * 0x40000UL)) |
3927 | +#define NPS_PKT_IN_INSTR_BADDRX(_i) (0x10068UL + ((_i) * 0x40000UL)) |
3928 | +#define NPS_PKT_IN_INSTR_RSIZEX(_i) (0x10070UL + ((_i) * 0x40000UL)) |
3929 | +#define NPS_PKT_IN_DONE_CNTSX(_i) (0x10080UL + ((_i) * 0x40000UL)) |
3930 | +#define NPS_PKT_IN_INSTR_BAOFF_DBELLX(_i) (0x10078UL + ((_i) * 0x40000UL)) |
3931 | +#define NPS_PKT_IN_INT_LEVELSX(_i) (0x10088UL + ((_i) * 0x40000UL)) |
3932 | +#define NPS_PKT_SLC_CTLX(_i) (0x10000UL + ((_i) * 0x40000UL)) |
3933 | +#define NPS_PKT_SLC_CNTSX(_i) (0x10008UL + ((_i) * 0x40000UL)) |
3934 | +#define NPS_PKT_SLC_INT_LEVELSX(_i) (0x10010UL + ((_i) * 0x40000UL)) |
3935 | |
3936 | /* AQM Virtual Function Registers */ |
3937 | -#define AQMQ_QSZX(_i) (0x20008 + ((_i)*0x40000)) |
3938 | +#define AQMQ_QSZX(_i) (0x20008UL + ((_i) * 0x40000UL)) |
3939 | |
3940 | static inline uint64_t |
3941 | nitrox_read_csr(uint8_t *bar_addr, uint64_t offset) |
3942 | diff --git a/drivers/crypto/nitrox/nitrox_sym.c b/drivers/crypto/nitrox/nitrox_sym.c |
3943 | index 56410c4..d1b32fe 100644 |
3944 | --- a/drivers/crypto/nitrox/nitrox_sym.c |
3945 | +++ b/drivers/crypto/nitrox/nitrox_sym.c |
3946 | @@ -683,7 +683,8 @@ nitrox_sym_pmd_create(struct nitrox_device *ndev) |
3947 | struct rte_cryptodev *cdev; |
3948 | |
3949 | rte_pci_device_name(&ndev->pdev->addr, name, sizeof(name)); |
3950 | - snprintf(name + strlen(name), RTE_CRYPTODEV_NAME_MAX_LEN, "_n5sym"); |
3951 | + snprintf(name + strlen(name), RTE_CRYPTODEV_NAME_MAX_LEN - strlen(name), |
3952 | + "_n5sym"); |
3953 | ndev->rte_sym_dev.driver = &nitrox_rte_sym_drv; |
3954 | ndev->rte_sym_dev.numa_node = ndev->pdev->device.numa_node; |
3955 | ndev->rte_sym_dev.devargs = NULL; |
3956 | diff --git a/drivers/crypto/octeontx2/otx2_cryptodev.c b/drivers/crypto/octeontx2/otx2_cryptodev.c |
3957 | index 7b8add1..417eda6 100644 |
3958 | --- a/drivers/crypto/octeontx2/otx2_cryptodev.c |
3959 | +++ b/drivers/crypto/octeontx2/otx2_cryptodev.c |
3960 | @@ -24,6 +24,8 @@ |
3961 | |
3962 | int otx2_cpt_logtype; |
3963 | |
3964 | +uint8_t otx2_cryptodev_driver_id; |
3965 | + |
3966 | static struct rte_pci_id pci_id_cpt_table[] = { |
3967 | { |
3968 | RTE_PCI_DEVICE(PCI_VENDOR_ID_CAVIUM, |
3969 | diff --git a/drivers/crypto/octeontx2/otx2_cryptodev.h b/drivers/crypto/octeontx2/otx2_cryptodev.h |
3970 | index 8e0ebc2..c0aa661 100644 |
3971 | --- a/drivers/crypto/octeontx2/otx2_cryptodev.h |
3972 | +++ b/drivers/crypto/octeontx2/otx2_cryptodev.h |
3973 | @@ -38,6 +38,6 @@ extern int otx2_cpt_logtype; |
3974 | /* |
3975 | * Crypto device driver ID |
3976 | */ |
3977 | -uint8_t otx2_cryptodev_driver_id; |
3978 | +extern uint8_t otx2_cryptodev_driver_id; |
3979 | |
3980 | #endif /* _OTX2_CRYPTODEV_H_ */ |
3981 | diff --git a/drivers/crypto/octeontx2/otx2_cryptodev_ops.h b/drivers/crypto/octeontx2/otx2_cryptodev_ops.h |
3982 | index a2724f7..f83e36b 100644 |
3983 | --- a/drivers/crypto/octeontx2/otx2_cryptodev_ops.h |
3984 | +++ b/drivers/crypto/octeontx2/otx2_cryptodev_ops.h |
3985 | @@ -16,6 +16,6 @@ enum otx2_cpt_egrp { |
3986 | OTX2_CPT_EGRP_AE = 2 |
3987 | }; |
3988 | |
3989 | -struct rte_cryptodev_ops otx2_cpt_ops; |
3990 | +extern struct rte_cryptodev_ops otx2_cpt_ops; |
3991 | |
3992 | #endif /* _OTX2_CRYPTODEV_OPS_H_ */ |
3993 | diff --git a/drivers/crypto/openssl/openssl_pmd_private.h b/drivers/crypto/openssl/openssl_pmd_private.h |
3994 | index 43ac381..b2054b3 100644 |
3995 | --- a/drivers/crypto/openssl/openssl_pmd_private.h |
3996 | +++ b/drivers/crypto/openssl/openssl_pmd_private.h |
3997 | @@ -16,7 +16,7 @@ |
3998 | /**< Open SSL Crypto PMD device name */ |
3999 | |
4000 | /** OPENSSL PMD LOGTYPE DRIVER */ |
4001 | -int openssl_logtype_driver; |
4002 | +extern int openssl_logtype_driver; |
4003 | #define OPENSSL_LOG(level, fmt, ...) \ |
4004 | rte_log(RTE_LOG_ ## level, openssl_logtype_driver, \ |
4005 | "%s() line %u: " fmt "\n", __func__, __LINE__, \ |
4006 | diff --git a/drivers/crypto/openssl/rte_openssl_pmd.c b/drivers/crypto/openssl/rte_openssl_pmd.c |
4007 | index 199097b..c294f60 100644 |
4008 | --- a/drivers/crypto/openssl/rte_openssl_pmd.c |
4009 | +++ b/drivers/crypto/openssl/rte_openssl_pmd.c |
4010 | @@ -18,6 +18,7 @@ |
4011 | |
4012 | #define DES_BLOCK_SIZE 8 |
4013 | |
4014 | +int openssl_logtype_driver; |
4015 | static uint8_t cryptodev_driver_id; |
4016 | |
4017 | #if (OPENSSL_VERSION_NUMBER < 0x10100000L) |
4018 | @@ -2037,6 +2038,26 @@ process_asym_op(struct openssl_qp *qp, struct rte_crypto_op *op, |
4019 | return retval; |
4020 | } |
4021 | |
4022 | +static void |
4023 | +copy_plaintext(struct rte_mbuf *m_src, struct rte_mbuf *m_dst, |
4024 | + struct rte_crypto_op *op) |
4025 | +{ |
4026 | + uint8_t *p_src, *p_dst; |
4027 | + |
4028 | + p_src = rte_pktmbuf_mtod(m_src, uint8_t *); |
4029 | + p_dst = rte_pktmbuf_mtod(m_dst, uint8_t *); |
4030 | + |
4031 | + /** |
4032 | + * Copy the content between cipher offset and auth offset |
4033 | + * for generating correct digest. |
4034 | + */ |
4035 | + if (op->sym->cipher.data.offset > op->sym->auth.data.offset) |
4036 | + memcpy(p_dst + op->sym->auth.data.offset, |
4037 | + p_src + op->sym->auth.data.offset, |
4038 | + op->sym->cipher.data.offset - |
4039 | + op->sym->auth.data.offset); |
4040 | +} |
4041 | + |
4042 | /** Process crypto operation for mbuf */ |
4043 | static int |
4044 | process_op(struct openssl_qp *qp, struct rte_crypto_op *op, |
4045 | @@ -2059,6 +2080,9 @@ process_op(struct openssl_qp *qp, struct rte_crypto_op *op, |
4046 | break; |
4047 | case OPENSSL_CHAIN_CIPHER_AUTH: |
4048 | process_openssl_cipher_op(op, sess, msrc, mdst); |
4049 | + /* OOP */ |
4050 | + if (msrc != mdst) |
4051 | + copy_plaintext(msrc, mdst, op); |
4052 | process_openssl_auth_op(qp, op, sess, mdst, mdst); |
4053 | break; |
4054 | case OPENSSL_CHAIN_AUTH_CIPHER: |
4055 | diff --git a/drivers/crypto/qat/qat_sym_capabilities.h b/drivers/crypto/qat/qat_sym_capabilities.h |
4056 | index 028a56c..dbeea43 100644 |
4057 | --- a/drivers/crypto/qat/qat_sym_capabilities.h |
4058 | +++ b/drivers/crypto/qat/qat_sym_capabilities.h |
4059 | @@ -6,6 +6,111 @@ |
4060 | #define _QAT_SYM_CAPABILITIES_H_ |
4061 | |
4062 | #define QAT_BASE_GEN1_SYM_CAPABILITIES \ |
4063 | + { /* SHA1 */ \ |
4064 | + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ |
4065 | + {.sym = { \ |
4066 | + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \ |
4067 | + {.auth = { \ |
4068 | + .algo = RTE_CRYPTO_AUTH_SHA1, \ |
4069 | + .block_size = 64, \ |
4070 | + .key_size = { \ |
4071 | + .min = 0, \ |
4072 | + .max = 0, \ |
4073 | + .increment = 0 \ |
4074 | + }, \ |
4075 | + .digest_size = { \ |
4076 | + .min = 1, \ |
4077 | + .max = 20, \ |
4078 | + .increment = 1 \ |
4079 | + }, \ |
4080 | + .iv_size = { 0 } \ |
4081 | + }, } \ |
4082 | + }, } \ |
4083 | + }, \ |
4084 | + { /* SHA224 */ \ |
4085 | + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ |
4086 | + {.sym = { \ |
4087 | + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \ |
4088 | + {.auth = { \ |
4089 | + .algo = RTE_CRYPTO_AUTH_SHA224, \ |
4090 | + .block_size = 64, \ |
4091 | + .key_size = { \ |
4092 | + .min = 0, \ |
4093 | + .max = 0, \ |
4094 | + .increment = 0 \ |
4095 | + }, \ |
4096 | + .digest_size = { \ |
4097 | + .min = 1, \ |
4098 | + .max = 28, \ |
4099 | + .increment = 1 \ |
4100 | + }, \ |
4101 | + .iv_size = { 0 } \ |
4102 | + }, } \ |
4103 | + }, } \ |
4104 | + }, \ |
4105 | + { /* SHA256 */ \ |
4106 | + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ |
4107 | + {.sym = { \ |
4108 | + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \ |
4109 | + {.auth = { \ |
4110 | + .algo = RTE_CRYPTO_AUTH_SHA256, \ |
4111 | + .block_size = 64, \ |
4112 | + .key_size = { \ |
4113 | + .min = 0, \ |
4114 | + .max = 0, \ |
4115 | + .increment = 0 \ |
4116 | + }, \ |
4117 | + .digest_size = { \ |
4118 | + .min = 1, \ |
4119 | + .max = 32, \ |
4120 | + .increment = 1 \ |
4121 | + }, \ |
4122 | + .iv_size = { 0 } \ |
4123 | + }, } \ |
4124 | + }, } \ |
4125 | + }, \ |
4126 | + { /* SHA384 */ \ |
4127 | + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ |
4128 | + {.sym = { \ |
4129 | + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \ |
4130 | + {.auth = { \ |
4131 | + .algo = RTE_CRYPTO_AUTH_SHA384, \ |
4132 | + .block_size = 128, \ |
4133 | + .key_size = { \ |
4134 | + .min = 0, \ |
4135 | + .max = 0, \ |
4136 | + .increment = 0 \ |
4137 | + }, \ |
4138 | + .digest_size = { \ |
4139 | + .min = 1, \ |
4140 | + .max = 48, \ |
4141 | + .increment = 1 \ |
4142 | + }, \ |
4143 | + .iv_size = { 0 } \ |
4144 | + }, } \ |
4145 | + }, } \ |
4146 | + }, \ |
4147 | + { /* SHA512 */ \ |
4148 | + .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ |
4149 | + {.sym = { \ |
4150 | + .xform_type = RTE_CRYPTO_SYM_XFORM_AUTH, \ |
4151 | + {.auth = { \ |
4152 | + .algo = RTE_CRYPTO_AUTH_SHA512, \ |
4153 | + .block_size = 128, \ |
4154 | + .key_size = { \ |
4155 | + .min = 0, \ |
4156 | + .max = 0, \ |
4157 | + .increment = 0 \ |
4158 | + }, \ |
4159 | + .digest_size = { \ |
4160 | + .min = 1, \ |
4161 | + .max = 64, \ |
4162 | + .increment = 1 \ |
4163 | + }, \ |
4164 | + .iv_size = { 0 } \ |
4165 | + }, } \ |
4166 | + }, } \ |
4167 | + }, \ |
4168 | { /* SHA1 HMAC */ \ |
4169 | .op = RTE_CRYPTO_OP_TYPE_SYMMETRIC, \ |
4170 | {.sym = { \ |
4171 | diff --git a/drivers/crypto/qat/qat_sym_session.c b/drivers/crypto/qat/qat_sym_session.c |
4172 | index 72290ba..695ba7e 100644 |
4173 | --- a/drivers/crypto/qat/qat_sym_session.c |
4174 | +++ b/drivers/crypto/qat/qat_sym_session.c |
4175 | @@ -19,6 +19,41 @@ |
4176 | #include "qat_sym_session.h" |
4177 | #include "qat_sym_pmd.h" |
4178 | |
4179 | +/* SHA1 - 20 bytes - Initialiser state can be found in FIPS stds 180-2 */ |
4180 | +static const uint8_t sha1InitialState[] = { |
4181 | + 0x67, 0x45, 0x23, 0x01, 0xef, 0xcd, 0xab, 0x89, 0x98, 0xba, |
4182 | + 0xdc, 0xfe, 0x10, 0x32, 0x54, 0x76, 0xc3, 0xd2, 0xe1, 0xf0}; |
4183 | + |
4184 | +/* SHA 224 - 32 bytes - Initialiser state can be found in FIPS stds 180-2 */ |
4185 | +static const uint8_t sha224InitialState[] = { |
4186 | + 0xc1, 0x05, 0x9e, 0xd8, 0x36, 0x7c, 0xd5, 0x07, 0x30, 0x70, 0xdd, |
4187 | + 0x17, 0xf7, 0x0e, 0x59, 0x39, 0xff, 0xc0, 0x0b, 0x31, 0x68, 0x58, |
4188 | + 0x15, 0x11, 0x64, 0xf9, 0x8f, 0xa7, 0xbe, 0xfa, 0x4f, 0xa4}; |
4189 | + |
4190 | +/* SHA 256 - 32 bytes - Initialiser state can be found in FIPS stds 180-2 */ |
4191 | +static const uint8_t sha256InitialState[] = { |
4192 | + 0x6a, 0x09, 0xe6, 0x67, 0xbb, 0x67, 0xae, 0x85, 0x3c, 0x6e, 0xf3, |
4193 | + 0x72, 0xa5, 0x4f, 0xf5, 0x3a, 0x51, 0x0e, 0x52, 0x7f, 0x9b, 0x05, |
4194 | + 0x68, 0x8c, 0x1f, 0x83, 0xd9, 0xab, 0x5b, 0xe0, 0xcd, 0x19}; |
4195 | + |
4196 | +/* SHA 384 - 64 bytes - Initialiser state can be found in FIPS stds 180-2 */ |
4197 | +static const uint8_t sha384InitialState[] = { |
4198 | + 0xcb, 0xbb, 0x9d, 0x5d, 0xc1, 0x05, 0x9e, 0xd8, 0x62, 0x9a, 0x29, |
4199 | + 0x2a, 0x36, 0x7c, 0xd5, 0x07, 0x91, 0x59, 0x01, 0x5a, 0x30, 0x70, |
4200 | + 0xdd, 0x17, 0x15, 0x2f, 0xec, 0xd8, 0xf7, 0x0e, 0x59, 0x39, 0x67, |
4201 | + 0x33, 0x26, 0x67, 0xff, 0xc0, 0x0b, 0x31, 0x8e, 0xb4, 0x4a, 0x87, |
4202 | + 0x68, 0x58, 0x15, 0x11, 0xdb, 0x0c, 0x2e, 0x0d, 0x64, 0xf9, 0x8f, |
4203 | + 0xa7, 0x47, 0xb5, 0x48, 0x1d, 0xbe, 0xfa, 0x4f, 0xa4}; |
4204 | + |
4205 | +/* SHA 512 - 64 bytes - Initialiser state can be found in FIPS stds 180-2 */ |
4206 | +static const uint8_t sha512InitialState[] = { |
4207 | + 0x6a, 0x09, 0xe6, 0x67, 0xf3, 0xbc, 0xc9, 0x08, 0xbb, 0x67, 0xae, |
4208 | + 0x85, 0x84, 0xca, 0xa7, 0x3b, 0x3c, 0x6e, 0xf3, 0x72, 0xfe, 0x94, |
4209 | + 0xf8, 0x2b, 0xa5, 0x4f, 0xf5, 0x3a, 0x5f, 0x1d, 0x36, 0xf1, 0x51, |
4210 | + 0x0e, 0x52, 0x7f, 0xad, 0xe6, 0x82, 0xd1, 0x9b, 0x05, 0x68, 0x8c, |
4211 | + 0x2b, 0x3e, 0x6c, 0x1f, 0x1f, 0x83, 0xd9, 0xab, 0xfb, 0x41, 0xbd, |
4212 | + 0x6b, 0x5b, 0xe0, 0xcd, 0x19, 0x13, 0x7e, 0x21, 0x79}; |
4213 | + |
4214 | /** Frees a context previously created |
4215 | * Depends on openssl libcrypto |
4216 | */ |
4217 | @@ -580,8 +615,29 @@ qat_sym_session_configure_auth(struct rte_cryptodev *dev, |
4218 | const uint8_t *key_data = auth_xform->key.data; |
4219 | uint8_t key_length = auth_xform->key.length; |
4220 | session->aes_cmac = 0; |
4221 | + session->auth_mode = ICP_QAT_HW_AUTH_MODE1; |
4222 | |
4223 | switch (auth_xform->algo) { |
4224 | + case RTE_CRYPTO_AUTH_SHA1: |
4225 | + session->qat_hash_alg = ICP_QAT_HW_AUTH_ALGO_SHA1; |
4226 | + session->auth_mode = ICP_QAT_HW_AUTH_MODE0; |
4227 | + break; |
4228 | + case RTE_CRYPTO_AUTH_SHA224: |
4229 | + session->qat_hash_alg = ICP_QAT_HW_AUTH_ALGO_SHA224; |
4230 | + session->auth_mode = ICP_QAT_HW_AUTH_MODE0; |
4231 | + break; |
4232 | + case RTE_CRYPTO_AUTH_SHA256: |
4233 | + session->qat_hash_alg = ICP_QAT_HW_AUTH_ALGO_SHA256; |
4234 | + session->auth_mode = ICP_QAT_HW_AUTH_MODE0; |
4235 | + break; |
4236 | + case RTE_CRYPTO_AUTH_SHA384: |
4237 | + session->qat_hash_alg = ICP_QAT_HW_AUTH_ALGO_SHA384; |
4238 | + session->auth_mode = ICP_QAT_HW_AUTH_MODE0; |
4239 | + break; |
4240 | + case RTE_CRYPTO_AUTH_SHA512: |
4241 | + session->qat_hash_alg = ICP_QAT_HW_AUTH_ALGO_SHA512; |
4242 | + session->auth_mode = ICP_QAT_HW_AUTH_MODE0; |
4243 | + break; |
4244 | case RTE_CRYPTO_AUTH_SHA1_HMAC: |
4245 | session->qat_hash_alg = ICP_QAT_HW_AUTH_ALGO_SHA1; |
4246 | break; |
4247 | @@ -635,11 +691,6 @@ qat_sym_session_configure_auth(struct rte_cryptodev *dev, |
4248 | } |
4249 | session->qat_hash_alg = ICP_QAT_HW_AUTH_ALGO_ZUC_3G_128_EIA3; |
4250 | break; |
4251 | - case RTE_CRYPTO_AUTH_SHA1: |
4252 | - case RTE_CRYPTO_AUTH_SHA256: |
4253 | - case RTE_CRYPTO_AUTH_SHA512: |
4254 | - case RTE_CRYPTO_AUTH_SHA224: |
4255 | - case RTE_CRYPTO_AUTH_SHA384: |
4256 | case RTE_CRYPTO_AUTH_MD5: |
4257 | case RTE_CRYPTO_AUTH_AES_CBC_MAC: |
4258 | QAT_LOG(ERR, "Crypto: Unsupported hash alg %u", |
4259 | @@ -727,6 +778,8 @@ qat_sym_session_configure_aead(struct rte_cryptodev *dev, |
4260 | session->cipher_iv.offset = xform->aead.iv.offset; |
4261 | session->cipher_iv.length = xform->aead.iv.length; |
4262 | |
4263 | + session->auth_mode = ICP_QAT_HW_AUTH_MODE1; |
4264 | + |
4265 | switch (aead_xform->algo) { |
4266 | case RTE_CRYPTO_AEAD_AES_GCM: |
4267 | if (qat_sym_validate_aes_key(aead_xform->key.length, |
4268 | @@ -1524,7 +1577,7 @@ int qat_sym_session_aead_create_cd_auth(struct qat_sym_session *cdesc, |
4269 | (struct icp_qat_fw_la_auth_req_params *) |
4270 | ((char *)&req_tmpl->serv_specif_rqpars + |
4271 | ICP_QAT_FW_HASH_REQUEST_PARAMETERS_OFFSET); |
4272 | - uint16_t state1_size = 0, state2_size = 0; |
4273 | + uint16_t state1_size = 0, state2_size = 0, cd_extra_size = 0; |
4274 | uint16_t hash_offset, cd_size; |
4275 | uint32_t *aad_len = NULL; |
4276 | uint32_t wordIndex = 0; |
4277 | @@ -1574,10 +1627,11 @@ int qat_sym_session_aead_create_cd_auth(struct qat_sym_session *cdesc, |
4278 | hash = (struct icp_qat_hw_auth_setup *)cdesc->cd_cur_ptr; |
4279 | hash->auth_config.reserved = 0; |
4280 | hash->auth_config.config = |
4281 | - ICP_QAT_HW_AUTH_CONFIG_BUILD(ICP_QAT_HW_AUTH_MODE1, |
4282 | + ICP_QAT_HW_AUTH_CONFIG_BUILD(cdesc->auth_mode, |
4283 | cdesc->qat_hash_alg, digestsize); |
4284 | |
4285 | - if (cdesc->qat_hash_alg == ICP_QAT_HW_AUTH_ALGO_SNOW_3G_UIA2 |
4286 | + if (cdesc->auth_mode == ICP_QAT_HW_AUTH_MODE0 |
4287 | + || cdesc->qat_hash_alg == ICP_QAT_HW_AUTH_ALGO_SNOW_3G_UIA2 |
4288 | || cdesc->qat_hash_alg == ICP_QAT_HW_AUTH_ALGO_KASUMI_F9 |
4289 | || cdesc->qat_hash_alg == ICP_QAT_HW_AUTH_ALGO_ZUC_3G_128_EIA3 |
4290 | || cdesc->qat_hash_alg == ICP_QAT_HW_AUTH_ALGO_AES_XCBC_MAC |
4291 | @@ -1600,6 +1654,15 @@ int qat_sym_session_aead_create_cd_auth(struct qat_sym_session *cdesc, |
4292 | */ |
4293 | switch (cdesc->qat_hash_alg) { |
4294 | case ICP_QAT_HW_AUTH_ALGO_SHA1: |
4295 | + if (cdesc->auth_mode == ICP_QAT_HW_AUTH_MODE0) { |
4296 | + /* Plain SHA-1 */ |
4297 | + rte_memcpy(cdesc->cd_cur_ptr, sha1InitialState, |
4298 | + sizeof(sha1InitialState)); |
4299 | + state1_size = qat_hash_get_state1_size( |
4300 | + cdesc->qat_hash_alg); |
4301 | + break; |
4302 | + } |
4303 | + /* SHA-1 HMAC */ |
4304 | if (qat_sym_do_precomputes(ICP_QAT_HW_AUTH_ALGO_SHA1, authkey, |
4305 | authkeylen, cdesc->cd_cur_ptr, &state1_size, |
4306 | cdesc->aes_cmac)) { |
4307 | @@ -1609,6 +1672,15 @@ int qat_sym_session_aead_create_cd_auth(struct qat_sym_session *cdesc, |
4308 | state2_size = RTE_ALIGN_CEIL(ICP_QAT_HW_SHA1_STATE2_SZ, 8); |
4309 | break; |
4310 | case ICP_QAT_HW_AUTH_ALGO_SHA224: |
4311 | + if (cdesc->auth_mode == ICP_QAT_HW_AUTH_MODE0) { |
4312 | + /* Plain SHA-224 */ |
4313 | + rte_memcpy(cdesc->cd_cur_ptr, sha224InitialState, |
4314 | + sizeof(sha224InitialState)); |
4315 | + state1_size = qat_hash_get_state1_size( |
4316 | + cdesc->qat_hash_alg); |
4317 | + break; |
4318 | + } |
4319 | + /* SHA-224 HMAC */ |
4320 | if (qat_sym_do_precomputes(ICP_QAT_HW_AUTH_ALGO_SHA224, authkey, |
4321 | authkeylen, cdesc->cd_cur_ptr, &state1_size, |
4322 | cdesc->aes_cmac)) { |
4323 | @@ -1618,6 +1690,15 @@ int qat_sym_session_aead_create_cd_auth(struct qat_sym_session *cdesc, |
4324 | state2_size = ICP_QAT_HW_SHA224_STATE2_SZ; |
4325 | break; |
4326 | case ICP_QAT_HW_AUTH_ALGO_SHA256: |
4327 | + if (cdesc->auth_mode == ICP_QAT_HW_AUTH_MODE0) { |
4328 | + /* Plain SHA-256 */ |
4329 | + rte_memcpy(cdesc->cd_cur_ptr, sha256InitialState, |
4330 | + sizeof(sha256InitialState)); |
4331 | + state1_size = qat_hash_get_state1_size( |
4332 | + cdesc->qat_hash_alg); |
4333 | + break; |
4334 | + } |
4335 | + /* SHA-256 HMAC */ |
4336 | if (qat_sym_do_precomputes(ICP_QAT_HW_AUTH_ALGO_SHA256, authkey, |
4337 | authkeylen, cdesc->cd_cur_ptr, &state1_size, |
4338 | cdesc->aes_cmac)) { |
4339 | @@ -1627,6 +1708,15 @@ int qat_sym_session_aead_create_cd_auth(struct qat_sym_session *cdesc, |
4340 | state2_size = ICP_QAT_HW_SHA256_STATE2_SZ; |
4341 | break; |
4342 | case ICP_QAT_HW_AUTH_ALGO_SHA384: |
4343 | + if (cdesc->auth_mode == ICP_QAT_HW_AUTH_MODE0) { |
4344 | + /* Plain SHA-384 */ |
4345 | + rte_memcpy(cdesc->cd_cur_ptr, sha384InitialState, |
4346 | + sizeof(sha384InitialState)); |
4347 | + state1_size = qat_hash_get_state1_size( |
4348 | + cdesc->qat_hash_alg); |
4349 | + break; |
4350 | + } |
4351 | + /* SHA-384 HMAC */ |
4352 | if (qat_sym_do_precomputes(ICP_QAT_HW_AUTH_ALGO_SHA384, authkey, |
4353 | authkeylen, cdesc->cd_cur_ptr, &state1_size, |
4354 | cdesc->aes_cmac)) { |
4355 | @@ -1636,6 +1726,15 @@ int qat_sym_session_aead_create_cd_auth(struct qat_sym_session *cdesc, |
4356 | state2_size = ICP_QAT_HW_SHA384_STATE2_SZ; |
4357 | break; |
4358 | case ICP_QAT_HW_AUTH_ALGO_SHA512: |
4359 | + if (cdesc->auth_mode == ICP_QAT_HW_AUTH_MODE0) { |
4360 | + /* Plain SHA-512 */ |
4361 | + rte_memcpy(cdesc->cd_cur_ptr, sha512InitialState, |
4362 | + sizeof(sha512InitialState)); |
4363 | + state1_size = qat_hash_get_state1_size( |
4364 | + cdesc->qat_hash_alg); |
4365 | + break; |
4366 | + } |
4367 | + /* SHA-512 HMAC */ |
4368 | if (qat_sym_do_precomputes(ICP_QAT_HW_AUTH_ALGO_SHA512, authkey, |
4369 | authkeylen, cdesc->cd_cur_ptr, &state1_size, |
4370 | cdesc->aes_cmac)) { |
4371 | @@ -1700,7 +1799,7 @@ int qat_sym_session_aead_create_cd_auth(struct qat_sym_session *cdesc, |
4372 | memcpy(cipherconfig->key, authkey, authkeylen); |
4373 | memset(cipherconfig->key + authkeylen, |
4374 | 0, ICP_QAT_HW_SNOW_3G_UEA2_IV_SZ); |
4375 | - cdesc->cd_cur_ptr += sizeof(struct icp_qat_hw_cipher_config) + |
4376 | + cd_extra_size += sizeof(struct icp_qat_hw_cipher_config) + |
4377 | authkeylen + ICP_QAT_HW_SNOW_3G_UEA2_IV_SZ; |
4378 | auth_param->hash_state_sz = ICP_QAT_HW_SNOW_3G_UEA2_IV_SZ >> 3; |
4379 | break; |
4380 | @@ -1716,8 +1815,7 @@ int qat_sym_session_aead_create_cd_auth(struct qat_sym_session *cdesc, |
4381 | + ICP_QAT_HW_ZUC_3G_EEA3_IV_SZ); |
4382 | |
4383 | memcpy(cdesc->cd_cur_ptr + state1_size, authkey, authkeylen); |
4384 | - cdesc->cd_cur_ptr += state1_size + state2_size |
4385 | - + ICP_QAT_HW_ZUC_3G_EEA3_IV_SZ; |
4386 | + cd_extra_size += ICP_QAT_HW_ZUC_3G_EEA3_IV_SZ; |
4387 | auth_param->hash_state_sz = ICP_QAT_HW_ZUC_3G_EEA3_IV_SZ >> 3; |
4388 | cdesc->min_qat_dev_gen = QAT_GEN2; |
4389 | |
4390 | @@ -1803,7 +1901,7 @@ int qat_sym_session_aead_create_cd_auth(struct qat_sym_session *cdesc, |
4391 | RTE_ALIGN_CEIL(hash_cd_ctrl->inner_state1_sz, 8)) |
4392 | >> 3); |
4393 | |
4394 | - cdesc->cd_cur_ptr += state1_size + state2_size; |
4395 | + cdesc->cd_cur_ptr += state1_size + state2_size + cd_extra_size; |
4396 | cd_size = cdesc->cd_cur_ptr-(uint8_t *)&cdesc->cd; |
4397 | |
4398 | cd_pars->u.s.content_desc_addr = cdesc->cd_paddr; |
4399 | diff --git a/drivers/crypto/qat/qat_sym_session.h b/drivers/crypto/qat/qat_sym_session.h |
4400 | index 98985d6..bcab5b2 100644 |
4401 | --- a/drivers/crypto/qat/qat_sym_session.h |
4402 | +++ b/drivers/crypto/qat/qat_sym_session.h |
4403 | @@ -62,6 +62,7 @@ struct qat_sym_session { |
4404 | enum icp_qat_hw_cipher_mode qat_mode; |
4405 | enum icp_qat_hw_auth_algo qat_hash_alg; |
4406 | enum icp_qat_hw_auth_op auth_op; |
4407 | + enum icp_qat_hw_auth_mode auth_mode; |
4408 | void *bpi_ctx; |
4409 | struct qat_sym_cd cd; |
4410 | uint8_t *cd_cur_ptr; |
4411 | diff --git a/drivers/crypto/snow3g/rte_snow3g_pmd.c b/drivers/crypto/snow3g/rte_snow3g_pmd.c |
4412 | index 9d07e1a..2b1b90b 100644 |
4413 | --- a/drivers/crypto/snow3g/rte_snow3g_pmd.c |
4414 | +++ b/drivers/crypto/snow3g/rte_snow3g_pmd.c |
4415 | @@ -16,6 +16,7 @@ |
4416 | #define SNOW3G_MAX_BURST 8 |
4417 | #define BYTE_LEN 8 |
4418 | |
4419 | +int snow3g_logtype_driver; |
4420 | static uint8_t cryptodev_driver_id; |
4421 | |
4422 | /** Get xform chain order. */ |
4423 | diff --git a/drivers/crypto/snow3g/snow3g_pmd_private.h b/drivers/crypto/snow3g/snow3g_pmd_private.h |
4424 | index 1fe05eb..1070800 100644 |
4425 | --- a/drivers/crypto/snow3g/snow3g_pmd_private.h |
4426 | +++ b/drivers/crypto/snow3g/snow3g_pmd_private.h |
4427 | @@ -11,7 +11,7 @@ |
4428 | /**< SNOW 3G PMD device name */ |
4429 | |
4430 | /** SNOW 3G PMD LOGTYPE DRIVER */ |
4431 | -int snow3g_logtype_driver; |
4432 | +extern int snow3g_logtype_driver; |
4433 | |
4434 | #define SNOW3G_LOG(level, fmt, ...) \ |
4435 | rte_log(RTE_LOG_ ## level, snow3g_logtype_driver, \ |
4436 | diff --git a/drivers/crypto/zuc/rte_zuc_pmd.c b/drivers/crypto/zuc/rte_zuc_pmd.c |
4437 | index 8e214cd..265aaba 100644 |
4438 | --- a/drivers/crypto/zuc/rte_zuc_pmd.c |
4439 | +++ b/drivers/crypto/zuc/rte_zuc_pmd.c |
4440 | @@ -14,6 +14,7 @@ |
4441 | #define ZUC_MAX_BURST 4 |
4442 | #define BYTE_LEN 8 |
4443 | |
4444 | +int zuc_logtype_driver; |
4445 | static uint8_t cryptodev_driver_id; |
4446 | |
4447 | /** Get xform chain order. */ |
4448 | diff --git a/drivers/crypto/zuc/zuc_pmd_private.h b/drivers/crypto/zuc/zuc_pmd_private.h |
4449 | index 428efd4..dc492b1 100644 |
4450 | --- a/drivers/crypto/zuc/zuc_pmd_private.h |
4451 | +++ b/drivers/crypto/zuc/zuc_pmd_private.h |
4452 | @@ -8,10 +8,10 @@ |
4453 | #include <sso_zuc.h> |
4454 | |
4455 | #define CRYPTODEV_NAME_ZUC_PMD crypto_zuc |
4456 | -/**< KASUMI PMD device name */ |
4457 | +/**< ZUC PMD device name */ |
4458 | |
4459 | /** ZUC PMD LOGTYPE DRIVER */ |
4460 | -int zuc_logtype_driver; |
4461 | +extern int zuc_logtype_driver; |
4462 | #define ZUC_LOG(level, fmt, ...) \ |
4463 | rte_log(RTE_LOG_ ## level, zuc_logtype_driver, \ |
4464 | "%s()... line %u: " fmt "\n", __func__, __LINE__, \ |
4465 | diff --git a/drivers/event/dpaa2/dpaa2_eventdev.c b/drivers/event/dpaa2/dpaa2_eventdev.c |
4466 | index 1833d65..2be6e12 100644 |
4467 | --- a/drivers/event/dpaa2/dpaa2_eventdev.c |
4468 | +++ b/drivers/event/dpaa2/dpaa2_eventdev.c |
4469 | @@ -391,7 +391,7 @@ dpaa2_eventdev_info_get(struct rte_eventdev *dev, |
4470 | dev_info->max_event_priority_levels = |
4471 | DPAA2_EVENT_MAX_EVENT_PRIORITY_LEVELS; |
4472 | dev_info->max_event_ports = rte_fslmc_get_device_count(DPAA2_IO); |
4473 | - /* we only support dpio upto number of cores*/ |
4474 | + /* we only support dpio up to number of cores */ |
4475 | if (dev_info->max_event_ports > rte_lcore_count()) |
4476 | dev_info->max_event_ports = rte_lcore_count(); |
4477 | dev_info->max_event_port_dequeue_depth = |
4478 | diff --git a/drivers/event/dsw/dsw_event.c b/drivers/event/dsw/dsw_event.c |
4479 | index eae53b2..0df9209 100644 |
4480 | --- a/drivers/event/dsw/dsw_event.c |
4481 | +++ b/drivers/event/dsw/dsw_event.c |
4482 | @@ -658,6 +658,9 @@ dsw_port_consider_migration(struct dsw_evdev *dsw, |
4483 | if (dsw->num_ports == 1) |
4484 | return; |
4485 | |
4486 | + if (seen_events_len < DSW_MAX_EVENTS_RECORDED) |
4487 | + return; |
4488 | + |
4489 | DSW_LOG_DP_PORT(DEBUG, source_port->id, "Considering migration.\n"); |
4490 | |
4491 | /* Randomize interval to avoid having all threads considering |
4492 | @@ -930,11 +933,6 @@ dsw_port_ctl_process(struct dsw_evdev *dsw, struct dsw_port *port) |
4493 | { |
4494 | struct dsw_ctl_msg msg; |
4495 | |
4496 | - /* So any table loads happens before the ring dequeue, in the |
4497 | - * case of a 'paus' message. |
4498 | - */ |
4499 | - rte_smp_rmb(); |
4500 | - |
4501 | if (dsw_port_ctl_dequeue(port, &msg) == 0) { |
4502 | switch (msg.type) { |
4503 | case DSW_CTL_PAUS_REQ: |
4504 | @@ -1099,7 +1097,7 @@ dsw_event_enqueue_burst_generic(struct dsw_port *source_port, |
4505 | DSW_LOG_DP_PORT(DEBUG, source_port->id, "%d non-release events " |
4506 | "accepted.\n", num_non_release); |
4507 | |
4508 | - return num_non_release; |
4509 | + return (num_non_release + num_release); |
4510 | } |
4511 | |
4512 | uint16_t |
4513 | @@ -1194,11 +1192,6 @@ static uint16_t |
4514 | dsw_port_dequeue_burst(struct dsw_port *port, struct rte_event *events, |
4515 | uint16_t num) |
4516 | { |
4517 | - struct dsw_port *source_port = port; |
4518 | - struct dsw_evdev *dsw = source_port->dsw; |
4519 | - |
4520 | - dsw_port_ctl_process(dsw, source_port); |
4521 | - |
4522 | if (unlikely(port->in_buffer_len > 0)) { |
4523 | uint16_t dequeued = RTE_MIN(num, port->in_buffer_len); |
4524 | |
4525 | diff --git a/drivers/event/octeontx2/otx2_evdev_adptr.c b/drivers/event/octeontx2/otx2_evdev_adptr.c |
4526 | index 233cba2..8bdcfa3 100644 |
4527 | --- a/drivers/event/octeontx2/otx2_evdev_adptr.c |
4528 | +++ b/drivers/event/octeontx2/otx2_evdev_adptr.c |
4529 | @@ -133,7 +133,7 @@ sso_rxq_disable(struct otx2_eth_dev *dev, uint16_t qid) |
4530 | aq = otx2_mbox_alloc_msg_nix_aq_enq(mbox); |
4531 | aq->qidx = qid; |
4532 | aq->ctype = NIX_AQ_CTYPE_CQ; |
4533 | - aq->op = NIX_AQ_INSTOP_INIT; |
4534 | + aq->op = NIX_AQ_INSTOP_WRITE; |
4535 | |
4536 | aq->cq.ena = 1; |
4537 | aq->cq.caching = 1; |
4538 | @@ -144,7 +144,7 @@ sso_rxq_disable(struct otx2_eth_dev *dev, uint16_t qid) |
4539 | |
4540 | rc = otx2_mbox_process(mbox); |
4541 | if (rc < 0) { |
4542 | - otx2_err("Failed to init cq context"); |
4543 | + otx2_err("Failed to enable cq context"); |
4544 | goto fail; |
4545 | } |
4546 | |
4547 | diff --git a/drivers/event/octeontx2/otx2_evdev_stats.h b/drivers/event/octeontx2/otx2_evdev_stats.h |
4548 | index 9d7c694..74fcec8 100644 |
4549 | --- a/drivers/event/octeontx2/otx2_evdev_stats.h |
4550 | +++ b/drivers/event/octeontx2/otx2_evdev_stats.h |
4551 | @@ -67,7 +67,7 @@ otx2_sso_xstats_get(const struct rte_eventdev *event_dev, |
4552 | |
4553 | switch (mode) { |
4554 | case RTE_EVENT_DEV_XSTATS_DEVICE: |
4555 | - break; |
4556 | + return 0; |
4557 | case RTE_EVENT_DEV_XSTATS_PORT: |
4558 | if (queue_port_id >= (signed int)dev->nb_event_ports) |
4559 | goto invalid_value; |
4560 | diff --git a/drivers/mempool/dpaa2/meson.build b/drivers/mempool/dpaa2/meson.build |
4561 | index d79fc31..a4fe684 100644 |
4562 | --- a/drivers/mempool/dpaa2/meson.build |
4563 | +++ b/drivers/mempool/dpaa2/meson.build |
4564 | @@ -9,5 +9,7 @@ endif |
4565 | deps += ['bus_fslmc'] |
4566 | sources = files('dpaa2_hw_mempool.c') |
4567 | |
4568 | +install_headers('rte_dpaa2_mempool.h') |
4569 | + |
4570 | # depends on fslmc bus which uses experimental API |
4571 | allow_experimental_apis = true |
4572 | diff --git a/drivers/mempool/octeontx2/otx2_mempool_ops.c b/drivers/mempool/octeontx2/otx2_mempool_ops.c |
4573 | index ea4b1c4..18bdb0b 100644 |
4574 | --- a/drivers/mempool/octeontx2/otx2_mempool_ops.c |
4575 | +++ b/drivers/mempool/octeontx2/otx2_mempool_ops.c |
4576 | @@ -637,10 +637,10 @@ static int |
4577 | otx2_npa_alloc(struct rte_mempool *mp) |
4578 | { |
4579 | uint32_t block_size, block_count; |
4580 | + uint64_t aura_handle = 0; |
4581 | struct otx2_npa_lf *lf; |
4582 | struct npa_aura_s aura; |
4583 | struct npa_pool_s pool; |
4584 | - uint64_t aura_handle; |
4585 | int rc; |
4586 | |
4587 | lf = otx2_npa_lf_obj_get(); |
4588 | diff --git a/drivers/net/avp/avp_ethdev.c b/drivers/net/avp/avp_ethdev.c |
4589 | index cd747b6..1abe96c 100644 |
4590 | --- a/drivers/net/avp/avp_ethdev.c |
4591 | +++ b/drivers/net/avp/avp_ethdev.c |
4592 | @@ -1694,7 +1694,7 @@ avp_xmit_scattered_pkts(void *tx_queue, |
4593 | uint16_t nb_pkts) |
4594 | { |
4595 | struct rte_avp_desc *avp_bufs[(AVP_MAX_TX_BURST * |
4596 | - RTE_AVP_MAX_MBUF_SEGMENTS)]; |
4597 | + RTE_AVP_MAX_MBUF_SEGMENTS)] = {}; |
4598 | struct avp_queue *txq = (struct avp_queue *)tx_queue; |
4599 | struct rte_avp_desc *tx_bufs[AVP_MAX_TX_BURST]; |
4600 | struct avp_dev *avp = txq->avp; |
4601 | diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h |
4602 | index 93735a2..404d58a 100644 |
4603 | --- a/drivers/net/bnxt/bnxt.h |
4604 | +++ b/drivers/net/bnxt/bnxt.h |
4605 | @@ -470,6 +470,11 @@ struct bnxt_error_recovery_info { |
4606 | uint32_t last_reset_counter; |
4607 | }; |
4608 | |
4609 | +/* Frequency for the FUNC_DRV_IF_CHANGE retry in milliseconds */ |
4610 | +#define BNXT_IF_CHANGE_RETRY_INTERVAL 50 |
4611 | +/* Maximum retry count for FUNC_DRV_IF_CHANGE */ |
4612 | +#define BNXT_IF_CHANGE_RETRY_COUNT 40 |
4613 | + |
4614 | /* address space location of register */ |
4615 | #define BNXT_FW_STATUS_REG_TYPE_MASK 3 |
4616 | /* register is located in PCIe config space */ |
4617 | @@ -494,7 +499,6 @@ struct bnxt { |
4618 | void *bar0; |
4619 | |
4620 | struct rte_eth_dev *eth_dev; |
4621 | - struct rte_eth_rss_conf rss_conf; |
4622 | struct rte_pci_device *pdev; |
4623 | void *doorbell_base; |
4624 | |
4625 | @@ -523,6 +527,7 @@ struct bnxt { |
4626 | #define BNXT_FLAG_FW_CAP_ONE_STEP_TX_TS BIT(22) |
4627 | #define BNXT_FLAG_ADV_FLOW_MGMT BIT(23) |
4628 | #define BNXT_FLAG_NPAR_PF BIT(24) |
4629 | +#define BNXT_FLAG_DFLT_MAC_SET BIT(26) |
4630 | #define BNXT_PF(bp) (!((bp)->flags & BNXT_FLAG_VF)) |
4631 | #define BNXT_VF(bp) ((bp)->flags & BNXT_FLAG_VF) |
4632 | #define BNXT_NPAR(bp) ((bp)->flags & BNXT_FLAG_NPAR_PF) |
4633 | @@ -535,6 +540,7 @@ struct bnxt { |
4634 | #define BNXT_STINGRAY(bp) ((bp)->flags & BNXT_FLAG_STINGRAY) |
4635 | #define BNXT_HAS_NQ(bp) BNXT_CHIP_THOR(bp) |
4636 | #define BNXT_HAS_RING_GRPS(bp) (!BNXT_CHIP_THOR(bp)) |
4637 | +#define BNXT_HAS_DFLT_MAC_SET(bp) ((bp)->flags & BNXT_FLAG_DFLT_MAC_SET) |
4638 | |
4639 | uint32_t fw_cap; |
4640 | #define BNXT_FW_CAP_HOT_RESET BIT(0) |
4641 | @@ -617,7 +623,6 @@ struct bnxt { |
4642 | uint8_t max_q; |
4643 | |
4644 | uint16_t fw_fid; |
4645 | - uint8_t dflt_mac_addr[RTE_ETHER_ADDR_LEN]; |
4646 | uint16_t max_rsscos_ctx; |
4647 | uint16_t max_cp_rings; |
4648 | uint16_t max_tx_rings; |
4649 | @@ -625,10 +630,10 @@ struct bnxt { |
4650 | #define MAX_STINGRAY_RINGS 128U |
4651 | /* For sake of symmetry, max Tx rings == max Rx rings, one stat ctx for each */ |
4652 | #define BNXT_MAX_RX_RINGS(bp) \ |
4653 | - (BNXT_STINGRAY(bp) ? RTE_MIN(RTE_MIN(bp->max_rx_rings, \ |
4654 | + (BNXT_STINGRAY(bp) ? RTE_MIN(RTE_MIN(bp->max_rx_rings / 2U, \ |
4655 | MAX_STINGRAY_RINGS), \ |
4656 | bp->max_stat_ctx / 2U) : \ |
4657 | - RTE_MIN(bp->max_rx_rings, \ |
4658 | + RTE_MIN(bp->max_rx_rings / 2U, \ |
4659 | bp->max_stat_ctx / 2U)) |
4660 | #define BNXT_MAX_TX_RINGS(bp) \ |
4661 | (RTE_MIN((bp)->max_tx_rings, BNXT_MAX_RX_RINGS(bp))) |
4662 | diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c |
4663 | index dedb012..f1bd575 100644 |
4664 | --- a/drivers/net/bnxt/bnxt_ethdev.c |
4665 | +++ b/drivers/net/bnxt/bnxt_ethdev.c |
4666 | @@ -833,7 +833,7 @@ static int bnxt_dev_start_op(struct rte_eth_dev *eth_dev) |
4667 | struct bnxt *bp = eth_dev->data->dev_private; |
4668 | uint64_t rx_offloads = eth_dev->data->dev_conf.rxmode.offloads; |
4669 | int vlan_mask = 0; |
4670 | - int rc; |
4671 | + int rc, retry_cnt = BNXT_IF_CHANGE_RETRY_COUNT; |
4672 | |
4673 | if (!eth_dev->data->nb_tx_queues || !eth_dev->data->nb_rx_queues) { |
4674 | PMD_DRV_LOG(ERR, "Queues are not configured yet!\n"); |
4675 | @@ -846,14 +846,23 @@ static int bnxt_dev_start_op(struct rte_eth_dev *eth_dev) |
4676 | bp->rx_cp_nr_rings, RTE_ETHDEV_QUEUE_STAT_CNTRS); |
4677 | } |
4678 | |
4679 | - rc = bnxt_hwrm_if_change(bp, 1); |
4680 | - if (!rc) { |
4681 | - if (bp->flags & BNXT_FLAG_IF_CHANGE_HOT_FW_RESET_DONE) { |
4682 | - rc = bnxt_handle_if_change_status(bp); |
4683 | - if (rc) |
4684 | - return rc; |
4685 | - } |
4686 | + do { |
4687 | + rc = bnxt_hwrm_if_change(bp, true); |
4688 | + if (rc == 0 || rc != -EAGAIN) |
4689 | + break; |
4690 | + |
4691 | + rte_delay_ms(BNXT_IF_CHANGE_RETRY_INTERVAL); |
4692 | + } while (retry_cnt--); |
4693 | + |
4694 | + if (rc) |
4695 | + return rc; |
4696 | + |
4697 | + if (bp->flags & BNXT_FLAG_IF_CHANGE_HOT_FW_RESET_DONE) { |
4698 | + rc = bnxt_handle_if_change_status(bp); |
4699 | + if (rc) |
4700 | + return rc; |
4701 | } |
4702 | + |
4703 | bnxt_enable_int(bp); |
4704 | |
4705 | rc = bnxt_init_chip(bp); |
4706 | @@ -882,10 +891,10 @@ static int bnxt_dev_start_op(struct rte_eth_dev *eth_dev) |
4707 | return 0; |
4708 | |
4709 | error: |
4710 | - bnxt_hwrm_if_change(bp, 0); |
4711 | bnxt_shutdown_nic(bp); |
4712 | bnxt_free_tx_mbufs(bp); |
4713 | bnxt_free_rx_mbufs(bp); |
4714 | + bnxt_hwrm_if_change(bp, false); |
4715 | eth_dev->data->dev_started = 0; |
4716 | return rc; |
4717 | } |
4718 | @@ -956,7 +965,7 @@ static void bnxt_dev_stop_op(struct rte_eth_dev *eth_dev) |
4719 | /* Process any remaining notifications in default completion queue */ |
4720 | bnxt_int_handler(eth_dev); |
4721 | bnxt_shutdown_nic(bp); |
4722 | - bnxt_hwrm_if_change(bp, 0); |
4723 | + bnxt_hwrm_if_change(bp, false); |
4724 | bp->rx_cosq_cnt = 0; |
4725 | } |
4726 | |
4727 | @@ -1431,7 +1440,9 @@ static int bnxt_rss_hash_update_op(struct rte_eth_dev *eth_dev, |
4728 | } |
4729 | |
4730 | bp->flags |= BNXT_FLAG_UPDATE_HASH; |
4731 | - memcpy(&bp->rss_conf, rss_conf, sizeof(*rss_conf)); |
4732 | + memcpy(ð_dev->data->dev_conf.rx_adv_conf.rss_conf, |
4733 | + rss_conf, |
4734 | + sizeof(*rss_conf)); |
4735 | |
4736 | /* Update the default RSS VNIC(s) */ |
4737 | vnic = &bp->vnic_info[0]; |
4738 | @@ -1508,7 +1519,7 @@ static int bnxt_rss_hash_conf_get_op(struct rte_eth_dev *eth_dev, |
4739 | } |
4740 | if (hash_types) { |
4741 | PMD_DRV_LOG(ERR, |
4742 | - "Unknwon RSS config from firmware (%08x), RSS disabled", |
4743 | + "Unknown RSS config from firmware (%08x), RSS disabled", |
4744 | vnic->hash_type); |
4745 | return -ENOTSUP; |
4746 | } |
4747 | @@ -1840,6 +1851,11 @@ static int bnxt_vlan_filter_set_op(struct rte_eth_dev *eth_dev, |
4748 | if (rc) |
4749 | return rc; |
4750 | |
4751 | + if (!eth_dev->data->dev_started) { |
4752 | + PMD_DRV_LOG(ERR, "port must be started before setting vlan\n"); |
4753 | + return -EINVAL; |
4754 | + } |
4755 | + |
4756 | /* These operations apply to ALL existing MAC/VLAN filters */ |
4757 | if (on) |
4758 | return bnxt_add_vlan_filter(bp, vlan_id); |
4759 | @@ -1926,6 +1942,8 @@ static int bnxt_free_one_vnic(struct bnxt *bp, uint16_t vnic_id) |
4760 | rte_free(vnic->fw_grp_ids); |
4761 | vnic->fw_grp_ids = NULL; |
4762 | |
4763 | + vnic->rx_queue_cnt = 0; |
4764 | + |
4765 | return 0; |
4766 | } |
4767 | |
4768 | @@ -2155,10 +2173,11 @@ bnxt_fw_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size) |
4769 | uint8_t fw_major = (bp->fw_ver >> 24) & 0xff; |
4770 | uint8_t fw_minor = (bp->fw_ver >> 16) & 0xff; |
4771 | uint8_t fw_updt = (bp->fw_ver >> 8) & 0xff; |
4772 | + uint8_t fw_rsvd = bp->fw_ver & 0xff; |
4773 | int ret; |
4774 | |
4775 | - ret = snprintf(fw_version, fw_size, "%d.%d.%d", |
4776 | - fw_major, fw_minor, fw_updt); |
4777 | + ret = snprintf(fw_version, fw_size, "%d.%d.%d.%d", |
4778 | + fw_major, fw_minor, fw_updt, fw_rsvd); |
4779 | |
4780 | ret += 1; /* add the size of '\0' */ |
4781 | if (fw_size < (uint32_t)ret) |
4782 | @@ -4592,7 +4611,7 @@ static int bnxt_setup_mac_addr(struct rte_eth_dev *eth_dev) |
4783 | return -ENOMEM; |
4784 | } |
4785 | |
4786 | - if (bnxt_check_zero_bytes(bp->dflt_mac_addr, RTE_ETHER_ADDR_LEN)) { |
4787 | + if (!BNXT_HAS_DFLT_MAC_SET(bp)) { |
4788 | if (BNXT_PF(bp)) |
4789 | return -EINVAL; |
4790 | |
4791 | @@ -4605,14 +4624,11 @@ static int bnxt_setup_mac_addr(struct rte_eth_dev *eth_dev) |
4792 | bp->mac_addr[3], bp->mac_addr[4], bp->mac_addr[5]); |
4793 | |
4794 | rc = bnxt_hwrm_set_mac(bp); |
4795 | - if (!rc) |
4796 | - memcpy(&bp->eth_dev->data->mac_addrs[0], bp->mac_addr, |
4797 | - RTE_ETHER_ADDR_LEN); |
4798 | - return rc; |
4799 | + if (rc) |
4800 | + return rc; |
4801 | } |
4802 | |
4803 | /* Copy the permanent MAC from the FUNC_QCAPS response */ |
4804 | - memcpy(bp->mac_addr, bp->dflt_mac_addr, RTE_ETHER_ADDR_LEN); |
4805 | memcpy(ð_dev->data->mac_addrs[0], bp->mac_addr, RTE_ETHER_ADDR_LEN); |
4806 | |
4807 | return rc; |
4808 | @@ -4623,7 +4639,7 @@ static int bnxt_restore_dflt_mac(struct bnxt *bp) |
4809 | int rc = 0; |
4810 | |
4811 | /* MAC is already configured in FW */ |
4812 | - if (!bnxt_check_zero_bytes(bp->dflt_mac_addr, RTE_ETHER_ADDR_LEN)) |
4813 | + if (BNXT_HAS_DFLT_MAC_SET(bp)) |
4814 | return 0; |
4815 | |
4816 | /* Restore the old MAC configured */ |
4817 | diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c |
4818 | index 7408412..33f352f 100644 |
4819 | --- a/drivers/net/bnxt/bnxt_hwrm.c |
4820 | +++ b/drivers/net/bnxt/bnxt_hwrm.c |
4821 | @@ -164,8 +164,9 @@ static int bnxt_hwrm_send_message(struct bnxt *bp, void *msg, |
4822 | rte_cpu_to_le_16(req->req_type) == HWRM_VER_GET) |
4823 | return -ETIMEDOUT; |
4824 | |
4825 | - PMD_DRV_LOG(ERR, "Error(timeout) sending msg 0x%04x\n", |
4826 | - req->req_type); |
4827 | + PMD_DRV_LOG(ERR, |
4828 | + "Error(timeout) sending msg 0x%04x, seq_id %d\n", |
4829 | + req->req_type, req->seq_id); |
4830 | return -ETIMEDOUT; |
4831 | } |
4832 | return 0; |
4833 | @@ -221,6 +222,8 @@ static int bnxt_hwrm_send_message(struct bnxt *bp, void *msg, |
4834 | rc = -EINVAL; \ |
4835 | else if (rc == HWRM_ERR_CODE_CMD_NOT_SUPPORTED) \ |
4836 | rc = -ENOTSUP; \ |
4837 | + else if (rc == HWRM_ERR_CODE_HOT_RESET_PROGRESS) \ |
4838 | + rc = -EAGAIN; \ |
4839 | else if (rc > 0) \ |
4840 | rc = -EIO; \ |
4841 | return rc; \ |
4842 | @@ -249,6 +252,8 @@ static int bnxt_hwrm_send_message(struct bnxt *bp, void *msg, |
4843 | rc = -EINVAL; \ |
4844 | else if (rc == HWRM_ERR_CODE_CMD_NOT_SUPPORTED) \ |
4845 | rc = -ENOTSUP; \ |
4846 | + else if (rc == HWRM_ERR_CODE_HOT_RESET_PROGRESS) \ |
4847 | + rc = -EAGAIN; \ |
4848 | else if (rc > 0) \ |
4849 | rc = -EIO; \ |
4850 | return rc; \ |
4851 | @@ -641,7 +646,12 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp) |
4852 | } |
4853 | |
4854 | bp->fw_fid = rte_le_to_cpu_32(resp->fid); |
4855 | - memcpy(bp->dflt_mac_addr, &resp->mac_address, RTE_ETHER_ADDR_LEN); |
4856 | + if (!bnxt_check_zero_bytes(resp->mac_address, RTE_ETHER_ADDR_LEN)) { |
4857 | + bp->flags |= BNXT_FLAG_DFLT_MAC_SET; |
4858 | + memcpy(bp->mac_addr, &resp->mac_address, RTE_ETHER_ADDR_LEN); |
4859 | + } else { |
4860 | + bp->flags &= ~BNXT_FLAG_DFLT_MAC_SET; |
4861 | + } |
4862 | bp->max_rsscos_ctx = rte_le_to_cpu_16(resp->max_rsscos_ctx); |
4863 | bp->max_cp_rings = rte_le_to_cpu_16(resp->max_cmpl_rings); |
4864 | bp->max_tx_rings = rte_le_to_cpu_16(resp->max_tx_rings); |
4865 | @@ -2366,13 +2376,6 @@ void bnxt_free_hwrm_rx_ring(struct bnxt *bp, int queue_index) |
4866 | if (BNXT_HAS_RING_GRPS(bp)) |
4867 | bp->grp_info[queue_index].rx_fw_ring_id = |
4868 | INVALID_HW_RING_ID; |
4869 | - memset(rxr->rx_desc_ring, 0, |
4870 | - rxr->rx_ring_struct->ring_size * |
4871 | - sizeof(*rxr->rx_desc_ring)); |
4872 | - memset(rxr->rx_buf_ring, 0, |
4873 | - rxr->rx_ring_struct->ring_size * |
4874 | - sizeof(*rxr->rx_buf_ring)); |
4875 | - rxr->rx_prod = 0; |
4876 | } |
4877 | ring = rxr->ag_ring_struct; |
4878 | if (ring->fw_ring_id != INVALID_HW_RING_ID) { |
4879 | @@ -2380,11 +2383,6 @@ void bnxt_free_hwrm_rx_ring(struct bnxt *bp, int queue_index) |
4880 | BNXT_CHIP_THOR(bp) ? |
4881 | HWRM_RING_FREE_INPUT_RING_TYPE_RX_AGG : |
4882 | HWRM_RING_FREE_INPUT_RING_TYPE_RX); |
4883 | - ring->fw_ring_id = INVALID_HW_RING_ID; |
4884 | - memset(rxr->ag_buf_ring, 0, |
4885 | - rxr->ag_ring_struct->ring_size * |
4886 | - sizeof(*rxr->ag_buf_ring)); |
4887 | - rxr->ag_prod = 0; |
4888 | if (BNXT_HAS_RING_GRPS(bp)) |
4889 | bp->grp_info[queue_index].ag_fw_ring_id = |
4890 | INVALID_HW_RING_ID; |
4891 | @@ -4868,7 +4866,6 @@ int bnxt_hwrm_set_mac(struct bnxt *bp) |
4892 | |
4893 | HWRM_CHECK_RESULT(); |
4894 | |
4895 | - memcpy(bp->dflt_mac_addr, bp->mac_addr, RTE_ETHER_ADDR_LEN); |
4896 | HWRM_UNLOCK(); |
4897 | |
4898 | return rc; |
4899 | diff --git a/drivers/net/bnxt/bnxt_ring.c b/drivers/net/bnxt/bnxt_ring.c |
4900 | index d6e4e8a..1999cd7 100644 |
4901 | --- a/drivers/net/bnxt/bnxt_ring.c |
4902 | +++ b/drivers/net/bnxt/bnxt_ring.c |
4903 | @@ -598,7 +598,7 @@ int bnxt_alloc_hwrm_rx_ring(struct bnxt *bp, int queue_index) |
4904 | |
4905 | if (rxq->rx_started) { |
4906 | if (bnxt_init_one_rx_ring(rxq)) { |
4907 | - RTE_LOG(ERR, PMD, |
4908 | + PMD_DRV_LOG(ERR, |
4909 | "bnxt_init_one_rx_ring failed!\n"); |
4910 | bnxt_rx_queue_release_op(rxq); |
4911 | rc = -ENOMEM; |
4912 | diff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c |
4913 | index 457ebed..e42308a 100644 |
4914 | --- a/drivers/net/bnxt/bnxt_rxq.c |
4915 | +++ b/drivers/net/bnxt/bnxt_rxq.c |
4916 | @@ -168,10 +168,8 @@ out: |
4917 | if (dev_conf->rxmode.mq_mode & ETH_MQ_RX_RSS_FLAG) { |
4918 | struct rte_eth_rss_conf *rss = &dev_conf->rx_adv_conf.rss_conf; |
4919 | |
4920 | - if (bp->flags & BNXT_FLAG_UPDATE_HASH) { |
4921 | - rss = &bp->rss_conf; |
4922 | + if (bp->flags & BNXT_FLAG_UPDATE_HASH) |
4923 | bp->flags &= ~BNXT_FLAG_UPDATE_HASH; |
4924 | - } |
4925 | |
4926 | for (i = 0; i < bp->nr_vnics; i++) { |
4927 | vnic = &bp->vnic_info[i]; |
4928 | diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c |
4929 | index 7338a81..fa3b4a6 100644 |
4930 | --- a/drivers/net/bnxt/bnxt_rxr.c |
4931 | +++ b/drivers/net/bnxt/bnxt_rxr.c |
4932 | @@ -853,11 +853,13 @@ int bnxt_init_one_rx_ring(struct bnxt_rx_queue *rxq) |
4933 | |
4934 | prod = rxr->rx_prod; |
4935 | for (i = 0; i < ring->ring_size; i++) { |
4936 | - if (bnxt_alloc_rx_data(rxq, rxr, prod) != 0) { |
4937 | - PMD_DRV_LOG(WARNING, |
4938 | - "init'ed rx ring %d with %d/%d mbufs only\n", |
4939 | - rxq->queue_id, i, ring->ring_size); |
4940 | - break; |
4941 | + if (unlikely(!rxr->rx_buf_ring[i].mbuf)) { |
4942 | + if (bnxt_alloc_rx_data(rxq, rxr, prod) != 0) { |
4943 | + PMD_DRV_LOG(WARNING, |
4944 | + "init'ed rx ring %d with %d/%d mbufs only\n", |
4945 | + rxq->queue_id, i, ring->ring_size); |
4946 | + break; |
4947 | + } |
4948 | } |
4949 | rxr->rx_prod = prod; |
4950 | prod = RING_NEXT(rxr->rx_ring_struct, prod); |
4951 | @@ -869,11 +871,13 @@ int bnxt_init_one_rx_ring(struct bnxt_rx_queue *rxq) |
4952 | prod = rxr->ag_prod; |
4953 | |
4954 | for (i = 0; i < ring->ring_size; i++) { |
4955 | - if (bnxt_alloc_ag_data(rxq, rxr, prod) != 0) { |
4956 | - PMD_DRV_LOG(WARNING, |
4957 | - "init'ed AG ring %d with %d/%d mbufs only\n", |
4958 | - rxq->queue_id, i, ring->ring_size); |
4959 | - break; |
4960 | + if (unlikely(!rxr->ag_buf_ring[i].mbuf)) { |
4961 | + if (bnxt_alloc_ag_data(rxq, rxr, prod) != 0) { |
4962 | + PMD_DRV_LOG(WARNING, |
4963 | + "init'ed AG ring %d with %d/%d mbufs only\n", |
4964 | + rxq->queue_id, i, ring->ring_size); |
4965 | + break; |
4966 | + } |
4967 | } |
4968 | rxr->ag_prod = prod; |
4969 | prod = RING_NEXT(rxr->ag_ring_struct, prod); |
4970 | @@ -884,11 +888,13 @@ int bnxt_init_one_rx_ring(struct bnxt_rx_queue *rxq) |
4971 | unsigned int max_aggs = BNXT_TPA_MAX_AGGS(rxq->bp); |
4972 | |
4973 | for (i = 0; i < max_aggs; i++) { |
4974 | - rxr->tpa_info[i].mbuf = |
4975 | - __bnxt_alloc_rx_data(rxq->mb_pool); |
4976 | - if (!rxr->tpa_info[i].mbuf) { |
4977 | - rte_atomic64_inc(&rxq->rx_mbuf_alloc_fail); |
4978 | - return -ENOMEM; |
4979 | + if (unlikely(!rxr->tpa_info[i].mbuf)) { |
4980 | + rxr->tpa_info[i].mbuf = |
4981 | + __bnxt_alloc_rx_data(rxq->mb_pool); |
4982 | + if (!rxr->tpa_info[i].mbuf) { |
4983 | + rte_atomic64_inc(&rxq->rx_mbuf_alloc_fail); |
4984 | + return -ENOMEM; |
4985 | + } |
4986 | } |
4987 | } |
4988 | } |
4989 | diff --git a/drivers/net/bnxt/bnxt_rxtx_vec_sse.c b/drivers/net/bnxt/bnxt_rxtx_vec_sse.c |
4990 | index 3145730..8b4c396 100644 |
4991 | --- a/drivers/net/bnxt/bnxt_rxtx_vec_sse.c |
4992 | +++ b/drivers/net/bnxt/bnxt_rxtx_vec_sse.c |
4993 | @@ -233,8 +233,13 @@ bnxt_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts, |
4994 | /* Return no more than RTE_BNXT_MAX_RX_BURST per call. */ |
4995 | nb_pkts = RTE_MIN(nb_pkts, RTE_BNXT_MAX_RX_BURST); |
4996 | |
4997 | - /* Make nb_pkts an integer multiple of RTE_BNXT_DESCS_PER_LOOP */ |
4998 | + /* |
4999 | + * Make nb_pkts an integer multiple of RTE_BNXT_DESCS_PER_LOOP. |
5000 | + * nb_pkts < RTE_BNXT_DESCS_PER_LOOP, just return no packet |
Intentionally not taking any of the latter packaging changes as they might change the SRU too much. /salsa. debian. org/debian/ dpdk/-/ tree/upstream- 19.11-stable there are gbp import based commits to pick for that which I did.
Instead these are clean cherry-picks from the upstream branches.
At https:/
If you look at just the diff you'll see a lot due to the upstream changes, but commit by commit they should be easy to review.
A few changes were droppable due to upstream integrating them.
Upstream identified one follow up fix scheduled for 19.11.4 which from an SRU POV makes sense to be added now.
PPA: https:/ /launchpad. net/~ci- train-ppa- service/ +archive/ ubuntu/ 4130/+packages