From 1646932aaf9c619055c1917acae95ce0e109e05a Mon Sep 17 00:00:00 2001 From: jfb8856606 Date: Wed, 26 Jun 2019 18:17:41 +0800 Subject: [PATCH] DPDK:upgrade to 18.11.2 (LTS) --- .gitignore | 2 + config.ini | 39 +- dpdk/.gitignore | 1 + dpdk/MAINTAINERS | 8 +- dpdk/app/pdump/main.c | 16 + dpdk/app/test-bbdev/test-bbdev.py | 0 dpdk/app/test-bbdev/test_bbdev.c | 10 +- dpdk/app/test-bbdev/test_bbdev_perf.c | 10 +- dpdk/app/test-crypto-perf/main.c | 5 + dpdk/app/test-eventdev/test_perf_common.c | 3 +- dpdk/app/test-pmd/cmdline.c | 285 +- dpdk/app/test-pmd/cmdline_flow.c | 130 +- dpdk/app/test-pmd/cmdline_tm.c | 24 +- dpdk/app/test-pmd/config.c | 14 +- dpdk/app/test-pmd/csumonly.c | 2 +- dpdk/app/test-pmd/testpmd.c | 96 +- dpdk/app/test-pmd/testpmd.h | 13 +- dpdk/buildtools/symlink-drivers-solibs.sh | 7 +- dpdk/config/arm/armv8_machine.py | 0 dpdk/config/arm/meson.build | 13 +- dpdk/config/meson.build | 7 + dpdk/config/x86/meson.build | 26 +- dpdk/devtools/check-forbidden-tokens.awk | 0 dpdk/devtools/check-git-log.sh | 7 +- dpdk/devtools/check-symbol-change.sh | 45 +- dpdk/devtools/check-symbol-maps.sh | 0 dpdk/devtools/checkpatches.sh | 9 +- dpdk/devtools/test-build.sh | 12 +- dpdk/devtools/test-meson-builds.sh | 12 +- dpdk/doc/api/generate_doxygen.sh | 0 dpdk/doc/api/generate_examples.sh | 0 dpdk/doc/guides/compressdevs/overview.rst | 2 +- dpdk/doc/guides/conf.py | 10 +- dpdk/doc/guides/contributing/coding_style.rst | 4 +- .../doc/guides/contributing/documentation.rst | 22 +- dpdk/doc/guides/contributing/patches.rst | 6 +- dpdk/doc/guides/contributing/versioning.rst | 19 +- dpdk/doc/guides/cryptodevs/aesni_mb.rst | 10 +- .../guides/cryptodevs/features/aesni_gcm.ini | 5 + .../guides/cryptodevs/features/aesni_mb.ini | 14 + dpdk/doc/guides/cryptodevs/features/armv8.ini | 5 + .../guides/cryptodevs/features/caam_jr.ini | 5 + dpdk/doc/guides/cryptodevs/features/ccp.ini | 5 + .../guides/cryptodevs/features/default.ini | 9 + .../guides/cryptodevs/features/dpaa2_sec.ini | 5 + .../guides/cryptodevs/features/dpaa_sec.ini | 5 + .../doc/guides/cryptodevs/features/kasumi.ini | 5 + dpdk/doc/guides/cryptodevs/features/mvsam.ini | 5 + dpdk/doc/guides/cryptodevs/features/null.ini | 5 + .../guides/cryptodevs/features/octeontx.ini | 5 + dpdk/doc/guides/cryptodevs/features/qat.ini | 5 + .../doc/guides/cryptodevs/features/snow3g.ini | 5 + .../doc/guides/cryptodevs/features/virtio.ini | 5 + dpdk/doc/guides/cryptodevs/features/zuc.ini | 5 + dpdk/doc/guides/cryptodevs/openssl.rst | 8 + dpdk/doc/guides/cryptodevs/overview.rst | 9 +- dpdk/doc/guides/cryptodevs/qat.rst | 3 +- dpdk/doc/guides/cryptodevs/scheduler.rst | 2 +- dpdk/doc/guides/eventdevs/opdl.rst | 2 +- dpdk/doc/guides/eventdevs/sw.rst | 4 +- .../doc/guides/howto/lm_bond_virtio_sriov.rst | 2 +- .../doc/guides/howto/lm_virtio_vhost_user.rst | 4 +- dpdk/doc/guides/howto/rte_flow.rst | 6 +- .../howto/virtio_user_as_exceptional_path.rst | 8 +- .../linux_gsg/cross_build_dpdk_for_arm64.rst | 16 +- dpdk/doc/guides/linux_gsg/sys_reqs.rst | 11 +- dpdk/doc/guides/nics/atlantic.rst | 2 +- dpdk/doc/guides/nics/cxgbe.rst | 4 +- dpdk/doc/guides/nics/dpaa.rst | 2 +- dpdk/doc/guides/nics/dpaa2.rst | 2 +- dpdk/doc/guides/nics/enetc.rst | 2 +- dpdk/doc/guides/nics/enic.rst | 13 +- dpdk/doc/guides/nics/features.rst | 4 +- dpdk/doc/guides/nics/features/qede.ini | 1 + dpdk/doc/guides/nics/i40e.rst | 8 +- dpdk/doc/guides/nics/ifc.rst | 4 +- dpdk/doc/guides/nics/ixgbe.rst | 4 +- dpdk/doc/guides/nics/kni.rst | 2 +- dpdk/doc/guides/nics/mlx5.rst | 42 +- dpdk/doc/guides/nics/mvpp2.rst | 2 +- dpdk/doc/guides/nics/netvsc.rst | 2 +- dpdk/doc/guides/nics/sfc_efx.rst | 14 +- dpdk/doc/guides/nics/szedata2.rst | 2 +- dpdk/doc/guides/nics/tap.rst | 2 +- dpdk/doc/guides/platform/dpaa.rst | 4 +- dpdk/doc/guides/platform/dpaa2.rst | 4 +- dpdk/doc/guides/prog_guide/bbdev.rst | 4 +- dpdk/doc/guides/prog_guide/compressdev.rst | 6 +- dpdk/doc/guides/prog_guide/cryptodev_lib.rst | 12 +- .../prog_guide/dev_kit_build_system.rst | 4 +- dpdk/doc/guides/prog_guide/efd_lib.rst | 2 +- .../prog_guide/env_abstraction_layer.rst | 39 +- .../prog_guide/event_ethernet_rx_adapter.rst | 6 +- dpdk/doc/guides/prog_guide/eventdev.rst | 6 +- .../generic_receive_offload_lib.rst | 19 + .../prog_guide/kernel_nic_interface.rst | 2 +- .../link_bonding_poll_mode_drv_lib.rst | 8 +- dpdk/doc/guides/prog_guide/lpm_lib.rst | 2 +- dpdk/doc/guides/prog_guide/metrics_lib.rst | 2 +- .../guides/prog_guide/multi_proc_support.rst | 22 +- dpdk/doc/guides/prog_guide/poll_mode_drv.rst | 6 +- dpdk/doc/guides/prog_guide/power_man.rst | 8 +- dpdk/doc/guides/prog_guide/profile_app.rst | 4 +- dpdk/doc/guides/prog_guide/rte_flow.rst | 18 +- dpdk/doc/guides/prog_guide/rte_security.rst | 20 +- .../guides/prog_guide/traffic_management.rst | 2 +- dpdk/doc/guides/prog_guide/vhost_lib.rst | 2 +- dpdk/doc/guides/rawdevs/ifpga_rawdev.rst | 2 +- dpdk/doc/guides/rel_notes/known_issues.rst | 41 +- dpdk/doc/guides/rel_notes/release_17_11.rst | 10 +- dpdk/doc/guides/rel_notes/release_18_11.rst | 827 + dpdk/doc/guides/sample_app_ug/bbdev_app.rst | 4 +- .../sample_app_ug/eventdev_pipeline.rst | 2 +- .../guides/sample_app_ug/flow_filtering.rst | 74 +- dpdk/doc/guides/sample_app_ug/intro.rst | 2 +- dpdk/doc/guides/sample_app_ug/ip_pipeline.rst | 4 +- dpdk/doc/guides/sample_app_ug/ipsec_secgw.rst | 4 +- .../sample_app_ug/performance_thread.rst | 4 +- .../doc/guides/sample_app_ug/qos_metering.rst | 2 +- .../guides/sample_app_ug/test_pipeline.rst | 2 +- dpdk/doc/guides/sample_app_ug/vhost.rst | 4 +- dpdk/doc/guides/sample_app_ug/vhost_scsi.rst | 2 +- .../sample_app_ug/vm_power_management.rst | 15 +- dpdk/doc/guides/testpmd_app_ug/run_app.rst | 16 +- .../guides/testpmd_app_ug/testpmd_funcs.rst | 168 +- dpdk/doc/guides/tools/cryptoperf.rst | 22 +- dpdk/doc/guides/tools/proc_info.rst | 2 +- dpdk/doc/guides/tools/testbbdev.rst | 10 +- dpdk/drivers/baseband/turbo_sw/Makefile | 2 +- dpdk/drivers/bus/dpaa/base/fman/fman_hw.c | 4 +- dpdk/drivers/bus/dpaa/dpaa_bus.c | 48 +- dpdk/drivers/bus/fslmc/fslmc_bus.c | 45 +- dpdk/drivers/bus/fslmc/fslmc_vfio.c | 2 +- dpdk/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c | 78 +- dpdk/drivers/bus/fslmc/qbman/include/compat.h | 2 +- .../bus/fslmc/qbman/include/fsl_qbman_debug.h | 6 +- dpdk/drivers/bus/fslmc/qbman/qbman_debug.c | 5 +- dpdk/drivers/bus/fslmc/qbman/qbman_portal.c | 12 +- dpdk/drivers/bus/fslmc/qbman/qbman_sys.h | 1 + dpdk/drivers/bus/ifpga/ifpga_bus.c | 23 +- dpdk/drivers/bus/ifpga/rte_bus_ifpga.h | 6 +- dpdk/drivers/bus/pci/linux/pci_vfio.c | 2 +- dpdk/drivers/bus/vdev/vdev.c | 17 +- dpdk/drivers/bus/vmbus/linux/vmbus_uio.c | 68 +- dpdk/drivers/bus/vmbus/private.h | 3 + dpdk/drivers/bus/vmbus/vmbus_channel.c | 20 +- dpdk/drivers/bus/vmbus/vmbus_common_uio.c | 22 +- dpdk/drivers/common/cpt/cpt_ucode.h | 2 +- dpdk/drivers/common/qat/qat_qp.c | 28 +- dpdk/drivers/common/qat/qat_qp.h | 3 +- .../drivers/compress/isal/isal_compress_pmd.c | 5 +- .../compress/isal/isal_compress_pmd_ops.c | 16 +- dpdk/drivers/compress/qat/qat_comp.c | 42 +- dpdk/drivers/compress/qat/qat_comp.h | 4 +- dpdk/drivers/compress/qat/qat_comp_pmd.c | 9 +- .../crypto/aesni_gcm/aesni_gcm_pmd_ops.c | 5 + dpdk/drivers/crypto/caam_jr/caam_jr.c | 6 +- dpdk/drivers/crypto/caam_jr/caam_jr_uio.c | 23 +- .../crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 24 +- dpdk/drivers/crypto/dpaa2_sec/hw/desc/pdcp.h | 4 +- dpdk/drivers/crypto/dpaa_sec/dpaa_sec.c | 7 +- dpdk/drivers/crypto/kasumi/meson.build | 8 +- dpdk/drivers/crypto/meson.build | 2 +- .../drivers/crypto/null/null_crypto_pmd_ops.c | 5 + dpdk/drivers/crypto/openssl/rte_openssl_pmd.c | 12 +- .../crypto/openssl/rte_openssl_pmd_ops.c | 5 + dpdk/drivers/crypto/qat/qat_sym.c | 15 + dpdk/drivers/crypto/qat/qat_sym_session.c | 19 +- dpdk/drivers/crypto/snow3g/meson.build | 13 + .../crypto/snow3g/rte_snow3g_pmd_ops.c | 5 + dpdk/drivers/crypto/virtio/virtio_logs.h | 4 +- dpdk/drivers/crypto/virtio/virtio_rxtx.c | 4 +- dpdk/drivers/crypto/zuc/meson.build | 8 +- dpdk/drivers/crypto/zuc/rte_zuc_pmd_ops.c | 5 + dpdk/drivers/event/dpaa2/dpaa2_eventdev.h | 7 +- .../drivers/event/dpaa2/dpaa2_eventdev_logs.h | 3 +- dpdk/drivers/event/dsw/dsw_evdev.c | 13 +- dpdk/drivers/event/meson.build | 6 +- dpdk/drivers/event/opdl/opdl_evdev.c | 7 +- dpdk/drivers/event/opdl/opdl_evdev_xstats.c | 7 +- dpdk/drivers/event/opdl/opdl_ring.h | 8 +- dpdk/drivers/event/sw/sw_evdev_selftest.c | 22 +- dpdk/drivers/mempool/dpaa2/dpaa2_hw_mempool.c | 4 +- .../mempool/dpaa2/dpaa2_hw_mempool_logs.h | 3 +- .../drivers/net/af_packet/rte_eth_af_packet.c | 3 +- dpdk/drivers/net/atlantic/atl_ethdev.c | 106 +- dpdk/drivers/net/atlantic/atl_rxtx.c | 23 +- dpdk/drivers/net/atlantic/atl_types.h | 9 +- dpdk/drivers/net/atlantic/hw_atl/hw_atl_b0.c | 14 +- dpdk/drivers/net/atlantic/hw_atl/hw_atl_b0.h | 2 + .../net/atlantic/hw_atl/hw_atl_utils.c | 19 +- .../net/atlantic/hw_atl/hw_atl_utils.h | 16 +- .../net/atlantic/hw_atl/hw_atl_utils_fw2x.c | 130 +- dpdk/drivers/net/avf/avf_ethdev.c | 3 +- dpdk/drivers/net/avf/base/avf_adminq_cmd.h | 3 +- dpdk/drivers/net/axgbe/axgbe_common.h | 4 +- dpdk/drivers/net/bnx2x/bnx2x.c | 210 +- dpdk/drivers/net/bnx2x/bnx2x.h | 12 +- dpdk/drivers/net/bnx2x/bnx2x_ethdev.c | 52 +- dpdk/drivers/net/bnx2x/bnx2x_ethdev.h | 1 + dpdk/drivers/net/bnx2x/bnx2x_rxtx.c | 21 +- dpdk/drivers/net/bnx2x/bnx2x_rxtx.h | 3 +- dpdk/drivers/net/bnx2x/ecore_hsi.h | 2 +- dpdk/drivers/net/bnx2x/ecore_reg.h | 2 +- dpdk/drivers/net/bnx2x/ecore_sp.c | 20 +- dpdk/drivers/net/bnx2x/ecore_sp.h | 17 +- dpdk/drivers/net/bnx2x/elink.h | 2 +- dpdk/drivers/net/bnxt/bnxt.h | 2 +- dpdk/drivers/net/bnxt/bnxt_ethdev.c | 22 +- dpdk/drivers/net/bnxt/bnxt_rxq.c | 3 +- dpdk/drivers/net/bnxt/bnxt_rxr.c | 4 +- .../drivers/net/bonding/rte_eth_bond_8023ad.c | 22 +- .../net/bonding/rte_eth_bond_8023ad_private.h | 1 + dpdk/drivers/net/bonding/rte_eth_bond_alb.c | 4 +- dpdk/drivers/net/bonding/rte_eth_bond_api.c | 19 +- dpdk/drivers/net/bonding/rte_eth_bond_pmd.c | 173 +- .../net/bonding/rte_eth_bond_private.h | 15 +- dpdk/drivers/net/cxgbe/base/t4_hw.c | 2 +- dpdk/drivers/net/cxgbe/base/t4_pci_id_tbl.h | 52 +- dpdk/drivers/net/cxgbe/cxgbe.h | 24 +- dpdk/drivers/net/cxgbe/cxgbe_ethdev.c | 15 +- dpdk/drivers/net/cxgbe/cxgbe_flow.c | 4 + dpdk/drivers/net/cxgbe/cxgbe_main.c | 50 +- dpdk/drivers/net/cxgbe/cxgbevf_main.c | 10 +- dpdk/drivers/net/cxgbe/sge.c | 78 +- dpdk/drivers/net/dpaa/dpaa_ethdev.c | 6 +- dpdk/drivers/net/dpaa2/dpaa2_ethdev.c | 12 +- dpdk/drivers/net/dpaa2/dpaa2_pmd_logs.h | 3 +- dpdk/drivers/net/e1000/base/e1000_82575.h | 4 +- dpdk/drivers/net/e1000/base/e1000_ich8lan.c | 2 +- dpdk/drivers/net/e1000/em_rxtx.c | 2 + dpdk/drivers/net/e1000/igb_ethdev.c | 43 +- dpdk/drivers/net/ena/ena_ethdev.c | 268 +- dpdk/drivers/net/enetc/enetc_ethdev.c | 6 +- dpdk/drivers/net/enetc/enetc_rxtx.c | 12 +- dpdk/drivers/net/enic/enic.h | 12 +- dpdk/drivers/net/enic/enic_clsf.c | 40 +- dpdk/drivers/net/enic/enic_flow.c | 659 +- dpdk/drivers/net/enic/enic_main.c | 10 +- dpdk/drivers/net/enic/enic_res.c | 5 +- dpdk/drivers/net/enic/enic_rxtx_common.h | 3 +- dpdk/drivers/net/fm10k/fm10k_ethdev.c | 1 + dpdk/drivers/net/fm10k/fm10k_rxtx.c | 6 +- dpdk/drivers/net/fm10k/fm10k_rxtx_vec.c | 6 +- dpdk/drivers/net/i40e/base/i40e_type.h | 1 + dpdk/drivers/net/i40e/i40e_ethdev.c | 177 +- dpdk/drivers/net/i40e/i40e_ethdev.h | 3 + dpdk/drivers/net/i40e/i40e_ethdev_vf.c | 27 +- dpdk/drivers/net/i40e/i40e_flow.c | 8 + dpdk/drivers/net/i40e/i40e_pf.c | 25 + dpdk/drivers/net/i40e/i40e_rxtx.c | 17 +- dpdk/drivers/net/i40e/rte_pmd_i40e.c | 12 +- dpdk/drivers/net/i40e/rte_pmd_i40e.h | 4 +- dpdk/drivers/net/ifc/base/ifcvf.h | 2 +- dpdk/drivers/net/ifc/ifcvf_vdpa.c | 8 +- dpdk/drivers/net/ixgbe/base/ixgbe_82599.c | 2 + dpdk/drivers/net/ixgbe/base/ixgbe_phy.c | 13 + dpdk/drivers/net/ixgbe/base/ixgbe_phy.h | 1 + dpdk/drivers/net/ixgbe/base/ixgbe_type.h | 2 + dpdk/drivers/net/ixgbe/base/ixgbe_x550.c | 4 + dpdk/drivers/net/ixgbe/ixgbe_ethdev.c | 14 + dpdk/drivers/net/ixgbe/ixgbe_ethdev.h | 3 + dpdk/drivers/net/ixgbe/ixgbe_pf.c | 12 +- dpdk/drivers/net/ixgbe/ixgbe_rxtx.c | 31 +- dpdk/drivers/net/kni/rte_eth_kni.c | 5 +- dpdk/drivers/net/mlx4/mlx4.c | 14 +- dpdk/drivers/net/mlx4/mlx4.h | 26 +- dpdk/drivers/net/mlx4/mlx4_ethdev.c | 38 +- dpdk/drivers/net/mlx4/mlx4_flow.c | 67 +- dpdk/drivers/net/mlx4/mlx4_flow.h | 6 +- dpdk/drivers/net/mlx4/mlx4_intr.c | 40 +- dpdk/drivers/net/mlx4/mlx4_mr.c | 51 +- dpdk/drivers/net/mlx4/mlx4_rxq.c | 56 +- dpdk/drivers/net/mlx4/mlx4_rxtx.h | 18 +- dpdk/drivers/net/mlx4/mlx4_txq.c | 14 +- dpdk/drivers/net/mlx5/Makefile | 5 + dpdk/drivers/net/mlx5/meson.build | 2 + dpdk/drivers/net/mlx5/mlx5.c | 46 +- dpdk/drivers/net/mlx5/mlx5.h | 7 +- dpdk/drivers/net/mlx5/mlx5_defs.h | 3 +- dpdk/drivers/net/mlx5/mlx5_ethdev.c | 28 +- dpdk/drivers/net/mlx5/mlx5_flow.c | 74 +- dpdk/drivers/net/mlx5/mlx5_flow.h | 1 + dpdk/drivers/net/mlx5/mlx5_flow_dv.c | 20 +- dpdk/drivers/net/mlx5/mlx5_flow_tcf.c | 877 +- dpdk/drivers/net/mlx5/mlx5_flow_verbs.c | 26 +- dpdk/drivers/net/mlx5/mlx5_mac.c | 4 +- dpdk/drivers/net/mlx5/mlx5_mr.c | 57 +- dpdk/drivers/net/mlx5/mlx5_nl.c | 12 +- dpdk/drivers/net/mlx5/mlx5_rss.c | 10 +- dpdk/drivers/net/mlx5/mlx5_rxmode.c | 8 +- dpdk/drivers/net/mlx5/mlx5_rxq.c | 79 +- dpdk/drivers/net/mlx5/mlx5_rxtx.c | 5 +- dpdk/drivers/net/mlx5/mlx5_rxtx.h | 13 +- dpdk/drivers/net/mlx5/mlx5_rxtx_vec.c | 4 +- dpdk/drivers/net/mlx5/mlx5_rxtx_vec.h | 17 +- dpdk/drivers/net/mlx5/mlx5_rxtx_vec_neon.h | 12 +- dpdk/drivers/net/mlx5/mlx5_rxtx_vec_sse.h | 11 +- dpdk/drivers/net/mlx5/mlx5_socket.c | 8 +- dpdk/drivers/net/mlx5/mlx5_stats.c | 14 +- dpdk/drivers/net/mlx5/mlx5_trigger.c | 16 +- dpdk/drivers/net/mlx5/mlx5_txq.c | 65 +- dpdk/drivers/net/mlx5/mlx5_vlan.c | 6 +- dpdk/drivers/net/mvpp2/mrvl_mtr.c | 3 +- dpdk/drivers/net/netvsc/hn_ethdev.c | 12 +- dpdk/drivers/net/netvsc/hn_nvs.c | 6 +- dpdk/drivers/net/netvsc/hn_rxtx.c | 66 +- dpdk/drivers/net/netvsc/hn_var.h | 33 +- dpdk/drivers/net/netvsc/hn_vf.c | 86 +- dpdk/drivers/net/nfp/nfp_net.c | 53 +- dpdk/drivers/net/nfp/nfp_net_ctrl.h | 4 +- dpdk/drivers/net/nfp/nfp_net_pmd.h | 4 +- .../net/nfp/nfpcore/nfp-common/nfp_cppat.h | 3 + .../net/nfp/nfpcore/nfp_cpp_pcie_ops.c | 18 +- dpdk/drivers/net/nfp/nfpcore/nfp_cppcore.c | 9 +- dpdk/drivers/net/octeontx/octeontx_ethdev.h | 1 + dpdk/drivers/net/pcap/rte_eth_pcap.c | 5 +- dpdk/drivers/net/qede/base/common_hsi.h | 4 +- dpdk/drivers/net/qede/base/ecore_hsi_common.h | 2 +- dpdk/drivers/net/qede/base/ecore_hsi_eth.h | 2 +- dpdk/drivers/net/qede/base/ecore_hw_defs.h | 2 +- dpdk/drivers/net/qede/qede_ethdev.c | 6 +- dpdk/drivers/net/qede/qede_rxtx.c | 101 +- dpdk/drivers/net/qede/qede_rxtx.h | 2 + dpdk/drivers/net/ring/rte_eth_ring.c | 96 +- dpdk/drivers/net/sfc/base/efx_tx.c | 3 +- dpdk/drivers/net/sfc/efsys.h | 2 +- dpdk/drivers/net/sfc/sfc.c | 6 +- dpdk/drivers/net/sfc/sfc.h | 6 +- dpdk/drivers/net/sfc/sfc_debug.h | 3 +- dpdk/drivers/net/sfc/sfc_ef10_tx.c | 18 +- dpdk/drivers/net/sfc/sfc_ethdev.c | 108 +- dpdk/drivers/net/sfc/sfc_log.h | 3 +- dpdk/drivers/net/sfc/sfc_mcdi.c | 3 +- dpdk/drivers/net/sfc/sfc_port.c | 14 + dpdk/drivers/net/sfc/sfc_rx.c | 22 +- dpdk/drivers/net/sfc/sfc_rx.h | 4 + dpdk/drivers/net/sfc/sfc_tso.c | 11 +- dpdk/drivers/net/sfc/sfc_tso.h | 13 + dpdk/drivers/net/sfc/sfc_tx.c | 9 +- .../net/softnic/rte_eth_softnic_flow.c | 5 +- dpdk/drivers/net/tap/rte_eth_tap.c | 77 +- dpdk/drivers/net/tap/tap_bpf_program.c | 2 +- dpdk/drivers/net/tap/tap_tcmsgs.c | 2 +- dpdk/drivers/net/vdev_netvsc/vdev_netvsc.c | 7 +- dpdk/drivers/net/vhost/rte_eth_vhost.c | 1 - dpdk/drivers/net/virtio/virtio_ethdev.c | 24 +- dpdk/drivers/net/virtio/virtio_ethdev.h | 2 + dpdk/drivers/net/virtio/virtio_rxtx.c | 36 +- dpdk/drivers/net/virtio/virtio_user/vhost.h | 4 +- .../net/virtio/virtio_user/vhost_kernel_tap.c | 12 +- .../net/virtio/virtio_user/vhost_user.c | 5 +- .../net/virtio/virtio_user/virtio_user_dev.c | 5 +- .../net/virtio/virtio_user/virtio_user_dev.h | 2 +- dpdk/drivers/net/virtio/virtio_user_ethdev.c | 61 +- dpdk/drivers/net/virtio/virtqueue.h | 5 + dpdk/drivers/net/vmxnet3/vmxnet3_ethdev.c | 1 + dpdk/drivers/net/vmxnet3/vmxnet3_rxtx.c | 2 + dpdk/drivers/raw/dpaa2_cmdif/dpaa2_cmdif.c | 2 + dpdk/drivers/raw/dpaa2_qdma/dpaa2_qdma.c | 23 +- .../raw/dpaa2_qdma/rte_pmd_dpaa2_qdma.h | 4 +- .../raw/ifpga_rawdev/base/opae_hw_api.c | 14 +- .../raw/ifpga_rawdev/base/opae_hw_api.h | 3 +- dpdk/drivers/raw/ifpga_rawdev/ifpga_rawdev.c | 15 +- dpdk/drivers/raw/ifpga_rawdev/ifpga_rawdev.h | 4 +- .../raw/skeleton_rawdev/skeleton_rawdev.c | 5 + dpdk/examples/bond/main.c | 29 +- dpdk/examples/ethtool/lib/rte_ethtool.h | 4 +- dpdk/examples/fips_validation/main.c | 8 +- dpdk/examples/flow_filtering/flow_blocks.c | 18 +- dpdk/examples/ip_pipeline/meson.build | 1 + dpdk/examples/ipsec-secgw/Makefile | 2 +- dpdk/examples/ipsec-secgw/esp.c | 5 +- dpdk/examples/ipsec-secgw/ipsec-secgw.c | 213 +- dpdk/examples/ipsec-secgw/ipsec.c | 99 +- dpdk/examples/ipsec-secgw/ipsec.h | 25 +- dpdk/examples/ipsec-secgw/sa.c | 65 +- dpdk/examples/ipsec-secgw/sp4.c | 57 +- dpdk/examples/ipsec-secgw/sp6.c | 57 +- dpdk/examples/kni/build/.kni.cmd | 1 - dpdk/examples/kni/build/.main.o.cmd | 1 - dpdk/examples/kni/build/.main.o.d | 150 - dpdk/examples/kni/build/_install | 0 dpdk/examples/kni/build/_postbuild | 0 dpdk/examples/kni/build/_postinstall | 0 dpdk/examples/kni/build/_preinstall | 0 dpdk/examples/kni/build/app/kni | Bin 7980792 -> 0 bytes dpdk/examples/kni/build/app/kni.map | 39524 ---------------- dpdk/examples/kni/build/kni | Bin 7980792 -> 0 bytes dpdk/examples/kni/build/kni.map | 39524 ---------------- dpdk/examples/kni/main.c | 12 + dpdk/examples/l2fwd-cat/cat.c | 2 +- .../client_server_mp/mp_server/init.c | 13 +- .../performance-thread/common/lthread_api.h | 10 +- dpdk/examples/tep_termination/main.c | 3 - dpdk/examples/vhost/main.c | 10 +- dpdk/examples/vhost_crypto/main.c | 9 +- dpdk/examples/vhost_crypto/meson.build | 1 + dpdk/examples/vhost_scsi/vhost_scsi.c | 6 + .../vm_power_manager/channel_monitor.c | 12 +- dpdk/examples/vm_power_manager/main.c | 15 +- .../vm_power_manager/oob_monitor_x86.c | 23 +- .../examples/vm_power_manager/power_manager.c | 2 +- dpdk/kernel/linux/kni/compat.h | 9 +- dpdk/kernel/linux/kni/ethtool/igb/igb_main.c | 11 + dpdk/kernel/linux/kni/ethtool/igb/kcompat.h | 13 +- dpdk/kernel/linux/kni/ethtool/ixgbe/kcompat.h | 4 + dpdk/kernel/linux/kni/kni_misc.c | 2 +- dpdk/lib/librte_acl/acl_vect.h | 4 +- dpdk/lib/librte_acl/meson.build | 2 +- dpdk/lib/librte_bbdev/rte_bbdev.h | 4 +- dpdk/lib/librte_bitratestats/rte_bitrate.c | 6 +- dpdk/lib/librte_bpf/rte_bpf.h | 6 +- dpdk/lib/librte_bpf/rte_bpf_ethdev.h | 4 +- dpdk/lib/librte_cfgfile/rte_cfgfile.c | 4 +- dpdk/lib/librte_compressdev/rte_comp.h | 4 +- dpdk/lib/librte_cryptodev/rte_crypto_asym.h | 10 +- dpdk/lib/librte_cryptodev/rte_cryptodev.c | 4 +- dpdk/lib/librte_cryptodev/rte_cryptodev.h | 2 +- .../rte_distributor_private.h | 2 +- dpdk/lib/librte_eal/bsdapp/eal/eal.c | 56 +- .../librte_eal/bsdapp/eal/eal_hugepage_info.c | 2 +- .../lib/librte_eal/common/eal_common_memory.c | 25 +- .../librte_eal/common/eal_common_memzone.c | 8 +- .../librte_eal/common/eal_common_options.c | 284 +- dpdk/lib/librte_eal/common/eal_common_proc.c | 99 +- .../lib/librte_eal/common/eal_common_thread.c | 23 +- dpdk/lib/librte_eal/common/eal_filesystem.h | 9 +- dpdk/lib/librte_eal/common/eal_internal_cfg.h | 9 +- dpdk/lib/librte_eal/common/eal_options.h | 3 + dpdk/lib/librte_eal/common/eal_private.h | 6 +- dpdk/lib/librte_eal/common/hotplug_mp.c | 6 +- .../common/include/arch/ppc_64/rte_atomic.h | 8 - .../common/include/generic/rte_atomic.h | 6 +- .../common/include/generic/rte_cycles.h | 2 +- .../common/include/generic/rte_rwlock.h | 16 +- .../common/include/generic/rte_spinlock.h | 18 +- .../common/include/generic/rte_vect.h | 2 +- .../lib/librte_eal/common/include/rte_class.h | 2 +- .../librte_eal/common/include/rte_common.h | 4 +- dpdk/lib/librte_eal/common/include/rte_eal.h | 26 +- .../lib/librte_eal/common/include/rte_lcore.h | 17 +- dpdk/lib/librte_eal/common/include/rte_log.h | 2 +- .../librte_eal/common/include/rte_malloc.h | 15 +- .../librte_eal/common/include/rte_service.h | 2 +- .../common/include/rte_string_fns.h | 16 + .../lib/librte_eal/common/include/rte_tailq.h | 2 +- dpdk/lib/librte_eal/common/include/rte_uuid.h | 4 +- .../librte_eal/common/include/rte_version.h | 2 +- dpdk/lib/librte_eal/common/include/rte_vfio.h | 6 +- dpdk/lib/librte_eal/common/malloc_elem.c | 4 + dpdk/lib/librte_eal/common/malloc_mp.c | 10 +- dpdk/lib/librte_eal/common/rte_malloc.c | 34 +- dpdk/lib/librte_eal/common/rte_option.c | 5 +- dpdk/lib/librte_eal/linuxapp/eal/eal.c | 167 +- dpdk/lib/librte_eal/linuxapp/eal/eal_dev.c | 4 +- .../linuxapp/eal/eal_hugepage_info.c | 2 +- .../librte_eal/linuxapp/eal/eal_memalloc.c | 54 +- dpdk/lib/librte_eal/linuxapp/eal/eal_memory.c | 28 +- dpdk/lib/librte_eal/linuxapp/eal/eal_vfio.c | 91 +- dpdk/lib/librte_eal/linuxapp/eal/eal_vfio.h | 12 +- .../linuxapp/eal/eal_vfio_mp_sync.c | 16 + .../eal/include/exec-env/rte_kni_common.h | 2 +- dpdk/lib/librte_efd/rte_efd.c | 14 + dpdk/lib/librte_efd/rte_efd.h | 2 +- dpdk/lib/librte_ethdev/rte_eth_ctrl.h | 2 +- dpdk/lib/librte_ethdev/rte_ethdev.c | 11 +- dpdk/lib/librte_ethdev/rte_ethdev.h | 17 +- dpdk/lib/librte_ethdev/rte_ethdev_core.h | 4 +- dpdk/lib/librte_ethdev/rte_ethdev_driver.h | 2 +- dpdk/lib/librte_ethdev/rte_tm.h | 8 +- .../rte_event_crypto_adapter.c | 16 +- .../rte_event_crypto_adapter.h | 2 +- .../rte_event_eth_rx_adapter.c | 4 +- .../rte_event_eth_rx_adapter.h | 4 +- .../rte_event_eth_tx_adapter.c | 56 +- .../rte_event_eth_tx_adapter.h | 3 +- .../librte_eventdev/rte_event_timer_adapter.h | 57 +- dpdk/lib/librte_eventdev/rte_eventdev.h | 25 +- dpdk/lib/librte_eventdev/rte_eventdev_pmd.h | 2 +- .../librte_flow_classify/rte_flow_classify.h | 4 +- dpdk/lib/librte_gro/gro_tcp4.c | 10 +- dpdk/lib/librte_gro/gro_tcp4.h | 5 + dpdk/lib/librte_gro/gro_vxlan_tcp4.c | 10 +- dpdk/lib/librte_gso/gso_common.h | 4 +- dpdk/lib/librte_hash/rte_cuckoo_hash.c | 27 +- dpdk/lib/librte_hash/rte_cuckoo_hash.h | 11 + dpdk/lib/librte_hash/rte_hash.h | 4 +- dpdk/lib/librte_ip_frag/rte_ip_frag.h | 3 +- .../librte_ip_frag/rte_ipv6_fragmentation.c | 18 +- dpdk/lib/librte_kni/rte_kni.h | 2 +- .../librte_latencystats/rte_latencystats.h | 2 +- dpdk/lib/librte_lpm/rte_lpm.h | 2 +- dpdk/lib/librte_mbuf/rte_mbuf.h | 18 +- dpdk/lib/librte_mbuf/rte_mbuf_ptype.h | 2 +- dpdk/lib/librte_mempool/rte_mempool.h | 4 +- dpdk/lib/librte_net/rte_ether.h | 2 +- dpdk/lib/librte_net/rte_ip.h | 12 +- dpdk/lib/librte_power/power_acpi_cpufreq.c | 5 +- dpdk/lib/librte_power/rte_power.c | 30 +- dpdk/lib/librte_power/rte_power.h | 2 +- dpdk/lib/librte_power/rte_power_empty_poll.c | 3 - dpdk/lib/librte_power/rte_power_empty_poll.h | 2 +- dpdk/lib/librte_rawdev/rte_rawdev.h | 6 +- dpdk/lib/librte_rawdev/rte_rawdev_pmd.h | 8 +- dpdk/lib/librte_reorder/rte_reorder.h | 2 +- dpdk/lib/librte_ring/rte_ring.c | 3 +- dpdk/lib/librte_ring/rte_ring.h | 4 +- dpdk/lib/librte_ring/rte_ring_generic.h | 9 +- dpdk/lib/librte_sched/rte_sched.c | 2 + dpdk/lib/librte_sched/rte_sched.h | 2 +- dpdk/lib/librte_security/rte_security.h | 4 +- dpdk/lib/librte_table/rte_table_hash.h | 6 +- dpdk/lib/librte_table/rte_table_hash_func.h | 2 +- dpdk/lib/librte_telemetry/Makefile | 5 + dpdk/lib/librte_telemetry/rte_telemetry.c | 40 +- .../librte_telemetry/rte_telemetry_internal.h | 2 +- .../librte_telemetry/rte_telemetry_parser.c | 22 +- dpdk/lib/librte_timer/rte_timer.c | 28 +- dpdk/lib/librte_vhost/fd_man.c | 4 + dpdk/lib/librte_vhost/fd_man.h | 1 + dpdk/lib/librte_vhost/rte_vhost.h | 4 +- dpdk/lib/librte_vhost/socket.c | 26 +- dpdk/lib/librte_vhost/vdpa.c | 7 +- dpdk/lib/librte_vhost/vhost.c | 16 +- dpdk/lib/librte_vhost/vhost.h | 52 +- dpdk/lib/librte_vhost/vhost_crypto.c | 142 +- dpdk/lib/librte_vhost/vhost_user.c | 76 +- dpdk/lib/librte_vhost/virtio_net.c | 66 +- dpdk/lib/meson.build | 2 +- dpdk/meson.build | 15 +- dpdk/mk/exec-env/linuxapp/rte.vars.mk | 6 + dpdk/mk/rte.app.mk | 3 - dpdk/mk/rte.cpuflags.mk | 4 +- dpdk/mk/rte.lib.mk | 2 + dpdk/mk/rte.sdkinstall.mk | 5 +- dpdk/mk/toolchain/gcc/rte.toolchain-compat.mk | 19 + dpdk/mk/toolchain/gcc/rte.vars.mk | 3 + dpdk/pkg/dpdk.spec | 2 +- dpdk/test/test/autotest_data.py | 6 - dpdk/test/test/commands.c | 12 +- dpdk/test/test/meson.build | 6 +- dpdk/test/test/test_barrier.c | 6 +- dpdk/test/test/test_compressdev.c | 1 + dpdk/test/test/test_cryptodev.c | 3 +- dpdk/test/test/test_cryptodev_blockcipher.c | 5 +- dpdk/test/test/test_cryptodev_blockcipher.h | 4 +- dpdk/test/test/test_distributor.c | 7 +- dpdk/test/test/test_eal_flags.c | 68 +- dpdk/test/test/test_event_eth_rx_adapter.c | 3 +- dpdk/test/test/test_hash_perf.c | 6 +- dpdk/test/test/test_hash_readwrite.c | 12 +- dpdk/test/test/test_link_bonding.c | 45 +- dpdk/test/test/test_metrics.c | 2 +- dpdk/test/test/test_pmd_perf.c | 13 +- dpdk/test/test/test_spinlock.c | 31 +- dpdk/test/test/test_string_fns.c | 45 + 557 files changed, 8130 insertions(+), 83025 deletions(-) mode change 100644 => 100755 dpdk/app/test-bbdev/test-bbdev.py mode change 100755 => 100644 dpdk/buildtools/symlink-drivers-solibs.sh mode change 100644 => 100755 dpdk/config/arm/armv8_machine.py mode change 100644 => 100755 dpdk/devtools/check-forbidden-tokens.awk mode change 100644 => 100755 dpdk/devtools/check-symbol-change.sh mode change 100644 => 100755 dpdk/devtools/check-symbol-maps.sh mode change 100644 => 100755 dpdk/devtools/test-meson-builds.sh mode change 100644 => 100755 dpdk/doc/api/generate_doxygen.sh mode change 100644 => 100755 dpdk/doc/api/generate_examples.sh create mode 100644 dpdk/drivers/crypto/snow3g/meson.build delete mode 100644 dpdk/examples/kni/build/.kni.cmd delete mode 100644 dpdk/examples/kni/build/.main.o.cmd delete mode 100644 dpdk/examples/kni/build/.main.o.d delete mode 100644 dpdk/examples/kni/build/_install delete mode 100644 dpdk/examples/kni/build/_postbuild delete mode 100644 dpdk/examples/kni/build/_postinstall delete mode 100644 dpdk/examples/kni/build/_preinstall delete mode 100644 dpdk/examples/kni/build/app/kni delete mode 100644 dpdk/examples/kni/build/app/kni.map delete mode 100644 dpdk/examples/kni/build/kni delete mode 100644 dpdk/examples/kni/build/kni.map diff --git a/.gitignore b/.gitignore index 88212b6f7..c48a95acb 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,5 @@ lib/vnode_if_newproto.h lib/vnode_if_typedef.h app/nginx-1.11.10/objs/ app/nginx-1.11.10/Makefile +dpdk/.ci/ +dpdk/.travis.yml diff --git a/config.ini b/config.ini index e935267a5..faa5b58d7 100644 --- a/config.ini +++ b/config.ini @@ -20,7 +20,7 @@ vlan_strip=1 # sleep when no pkts incomming # unit: microseconds -idle_sleep=0 +idle_sleep=100 # enabled port list # @@ -36,49 +36,30 @@ idle_sleep=0 # 1-3,4,7 ports 1,2,3,4,7 are enabled port_list=0 -# Number of vdev. -nb_vdev=0 - # Port config section # Correspond to dpdk.port_list's index: port0, port1... [port0] -addr=192.168.1.2 -netmask=255.255.225.0 -broadcast=192.168.1.255 -gateway=192.168.1.1 +addr=172.16.0.12 +netmask=255.255.240.0 +broadcast=172.16.15.255 +gateway=172.16.0.1 # lcore list used to handle this port # the format is same as port_list # lcore_list= 0 # Packet capture path, this will hurt performance -#pcap=./a.pcap - -# Vdev config section -# orrespond to dpdk.nb_vdev's index: vdev0, vdev1... -# iface : Shouldn't set always. -# path : The vuser device path in container. Required. -# queues : The max queues of vuser. Optional, default 1, greater or equal to the number of processes. -# queue_size : Queue size.Optional, default 256. -# mac : The mac address of vuser. Optional, default random, if vhost use phy NIC, it should be set to the phy NIC's mac. -# cq : Optional, if queues = 1, default 0; if queues > 1 default 1. -#[vdev0] -##iface=/usr/local/var/run/openvswitch/vhost-user0 -#path=/var/run/openvswitch/vhost-user0 -#queues=1 -#queue_size=256 -#mac=00:00:00:00:00:01 -#cq=0 +pcap=./a.pcap # Kni config: if enabled and method=reject, # all packets that do not belong to the following tcp_port and udp_port # will transmit to kernel; if method=accept, all packets that belong to # the following tcp_port and udp_port will transmit to kernel. -#[kni] -#enable=1 -#method=reject +[kni] +enable=1 +method=reject # The format is same as port_list -#tcp_port=80,443 +tcp_port=80,443 #udp_port=53 # FreeBSD network performance tuning configurations. diff --git a/dpdk/.gitignore b/dpdk/.gitignore index 9105e26c5..3d6b35ed6 100644 --- a/dpdk/.gitignore +++ b/dpdk/.gitignore @@ -3,6 +3,7 @@ doc/guides/cryptodevs/overview_feature_table.txt doc/guides/cryptodevs/overview_cipher_table.txt doc/guides/cryptodevs/overview_auth_table.txt doc/guides/cryptodevs/overview_aead_table.txt +doc/guides/cryptodevs/overview_asym_table.txt doc/guides/compressdevs/overview_feature_table.txt cscope.out.po cscope.out.in diff --git a/dpdk/MAINTAINERS b/dpdk/MAINTAINERS index 71ba31208..d0ba42ee6 100644 --- a/dpdk/MAINTAINERS +++ b/dpdk/MAINTAINERS @@ -120,6 +120,12 @@ F: config/rte_config.h F: buildtools/gen-pmdinfo-cfile.sh F: buildtools/symlink-drivers-solibs.sh +Public CI +M: Aaron Conole +M: Michael Santana +F: .travis.yml +F: .ci/ + ABI versioning M: Neil Horman F: lib/librte_compat/ @@ -234,7 +240,7 @@ F: drivers/net/i40e/i40e_rxtx_vec_neon.c F: drivers/net/virtio/virtio_rxtx_simple_neon.c IBM POWER (alpha) -M: Chao Zhu +M: David Christensen F: lib/librte_eal/common/arch/ppc_64/ F: lib/librte_eal/common/include/arch/ppc_64/ F: drivers/net/i40e/i40e_rxtx_vec_altivec.c diff --git a/dpdk/app/pdump/main.c b/dpdk/app/pdump/main.c index 9e86bf623..ccf2a1d2f 100644 --- a/dpdk/app/pdump/main.c +++ b/dpdk/app/pdump/main.c @@ -494,6 +494,7 @@ cleanup_pdump_resources(void) { int i; struct pdump_tuples *pt; + char name[RTE_ETH_NAME_MAX_LEN]; /* disable pdump and free the pdump_tuple resources */ for (i = 0; i < num_tuples; i++) { @@ -510,6 +511,21 @@ cleanup_pdump_resources(void) free_ring_data(pt->rx_ring, pt->rx_vdev_id, &pt->stats); if (pt->dir & RTE_PDUMP_FLAG_TX) free_ring_data(pt->tx_ring, pt->tx_vdev_id, &pt->stats); + + /* Remove the vdev(s) created */ + if (pt->dir & RTE_PDUMP_FLAG_RX) { + rte_eth_dev_get_name_by_port(pt->rx_vdev_id, name); + rte_eal_hotplug_remove("vdev", name); + } + + if (pt->single_pdump_dev) + continue; + + if (pt->dir & RTE_PDUMP_FLAG_TX) { + rte_eth_dev_get_name_by_port(pt->tx_vdev_id, name); + rte_eal_hotplug_remove("vdev", name); + } + } cleanup_rings(); } diff --git a/dpdk/app/test-bbdev/test-bbdev.py b/dpdk/app/test-bbdev/test-bbdev.py old mode 100644 new mode 100755 diff --git a/dpdk/app/test-bbdev/test_bbdev.c b/dpdk/app/test-bbdev/test_bbdev.c index a914817bc..137c74cde 100644 --- a/dpdk/app/test-bbdev/test_bbdev.c +++ b/dpdk/app/test-bbdev/test_bbdev.c @@ -14,6 +14,8 @@ #include #include #include +#include +#include #include "main.h" @@ -788,14 +790,14 @@ test_bbdev_driver_init(void) /* Initialize the maximum amount of devices */ do { - sprintf(name_tmp, "%s%i", "name_", num_devs); + snprintf(name_tmp, sizeof(name_tmp), "%s%i", "name_", num_devs); dev2 = rte_bbdev_allocate(name_tmp); TEST_ASSERT(dev2 != NULL, "Failed to initialize bbdev driver"); ++num_devs; } while (num_devs < (RTE_BBDEV_MAX_DEVS - 1)); - sprintf(name_tmp, "%s%i", "name_", num_devs); + snprintf(name_tmp, sizeof(name_tmp), "%s%i", "name_", num_devs); dev2 = rte_bbdev_allocate(name_tmp); TEST_ASSERT(dev2 == NULL, "Failed to initialize bbdev driver number %d " "more drivers than RTE_BBDEV_MAX_DEVS: %d ", num_devs, @@ -804,7 +806,7 @@ test_bbdev_driver_init(void) num_devs--; while (num_devs >= num_devs_tmp) { - sprintf(name_tmp, "%s%i", "name_", num_devs); + snprintf(name_tmp, sizeof(name_tmp), "%s%i", "name_", num_devs); dev2 = rte_bbdev_get_named_dev(name_tmp); TEST_ASSERT_SUCCESS(rte_bbdev_release(dev2), "Failed to uninitialize bbdev driver %s ", @@ -825,7 +827,7 @@ test_bbdev_driver_init(void) TEST_ASSERT_FAIL(rte_bbdev_release(NULL), "Failed to uninitialize bbdev driver with NULL bbdev"); - sprintf(name_tmp, "%s", "invalid_name"); + strlcpy(name_tmp, "invalid_name", sizeof(name_tmp)); dev2 = rte_bbdev_get_named_dev(name_tmp); TEST_ASSERT_FAIL(rte_bbdev_release(dev2), "Failed to uninitialize bbdev driver with invalid name"); diff --git a/dpdk/app/test-bbdev/test_bbdev_perf.c b/dpdk/app/test-bbdev/test_bbdev_perf.c index fbe6cc91c..fa26deb1e 100644 --- a/dpdk/app/test-bbdev/test_bbdev_perf.c +++ b/dpdk/app/test-bbdev/test_bbdev_perf.c @@ -1953,7 +1953,10 @@ offload_latency_test_dec(struct rte_mempool *mempool, struct test_buffers *bufs, if (unlikely(num_to_process - dequeued < burst_sz)) burst_sz = num_to_process - dequeued; - rte_bbdev_dec_op_alloc_bulk(mempool, ops_enq, burst_sz); + ret = rte_bbdev_dec_op_alloc_bulk(mempool, ops_enq, burst_sz); + TEST_ASSERT_SUCCESS(ret, "Allocation failed for %d ops", + burst_sz); + if (test_vector.op_type != RTE_BBDEV_OP_NONE) copy_reference_dec_op(ops_enq, burst_sz, dequeued, bufs->inputs, @@ -2035,7 +2038,10 @@ offload_latency_test_enc(struct rte_mempool *mempool, struct test_buffers *bufs, if (unlikely(num_to_process - dequeued < burst_sz)) burst_sz = num_to_process - dequeued; - rte_bbdev_enc_op_alloc_bulk(mempool, ops_enq, burst_sz); + ret = rte_bbdev_enc_op_alloc_bulk(mempool, ops_enq, burst_sz); + TEST_ASSERT_SUCCESS(ret, "Allocation failed for %d ops", + burst_sz); + if (test_vector.op_type != RTE_BBDEV_OP_NONE) copy_reference_enc_op(ops_enq, burst_sz, dequeued, bufs->inputs, diff --git a/dpdk/app/test-crypto-perf/main.c b/dpdk/app/test-crypto-perf/main.c index 953e058c9..0aa0de8bd 100644 --- a/dpdk/app/test-crypto-perf/main.c +++ b/dpdk/app/test-crypto-perf/main.c @@ -129,6 +129,11 @@ cperf_initialize_cryptodev(struct cperf_options *opts, uint8_t *enabled_cdevs, struct rte_cryptodev_info cdev_info; uint8_t socket_id = rte_cryptodev_socket_id(cdev_id); + /* range check the socket_id - negative values become big + * positive ones due to use of unsigned value + */ + if (socket_id >= RTE_MAX_NUMA_NODES) + socket_id = 0; rte_cryptodev_info_get(cdev_id, &cdev_info); if (opts->nb_qps > cdev_info.max_nb_queue_pairs) { diff --git a/dpdk/app/test-eventdev/test_perf_common.c b/dpdk/app/test-eventdev/test_perf_common.c index 861877532..f99a6a607 100644 --- a/dpdk/app/test-eventdev/test_perf_common.c +++ b/dpdk/app/test-eventdev/test_perf_common.c @@ -327,7 +327,8 @@ perf_launch_lcores(struct evt_test *test, struct evt_options *opt, } if (new_cycles - dead_lock_cycles > dead_lock_sample && - opt->prod_type == EVT_PROD_TYPE_SYNT) { + (opt->prod_type == EVT_PROD_TYPE_SYNT || + opt->prod_type == EVT_PROD_TYPE_EVENT_TIMER_ADPTR)) { remaining = t->outstand_pkts - processed_pkts(t); if (dead_lock_remaining == remaining) { rte_event_dev_dump(opt->dev_id, stdout); diff --git a/dpdk/app/test-pmd/cmdline.c b/dpdk/app/test-pmd/cmdline.c index 127507410..eeadb2de4 100644 --- a/dpdk/app/test-pmd/cmdline.c +++ b/dpdk/app/test-pmd/cmdline.c @@ -94,14 +94,15 @@ static void cmd_help_brief_parsed(__attribute__((unused)) void *parsed_result, cl, "\n" "Help is available for the following sections:\n\n" - " help control : Start and stop forwarding.\n" - " help display : Displaying port, stats and config " + " help control : Start and stop forwarding.\n" + " help display : Displaying port, stats and config " "information.\n" - " help config : Configuration information.\n" - " help ports : Configuring ports.\n" - " help registers : Reading and setting port registers.\n" - " help filters : Filters configuration help.\n" - " help all : All of the above sections.\n\n" + " help config : Configuration information.\n" + " help ports : Configuring ports.\n" + " help registers : Reading and setting port registers.\n" + " help filters : Filters configuration help.\n" + " help traffic_management : Traffic Management commmands.\n" + " help all : All of the above sections.\n\n" ); } @@ -210,21 +211,32 @@ static void cmd_help_long_parsed(void *parsed_result, "show port meter stats (port_id) (meter_id) (clear)\n" " Get meter stats on a port\n\n" - "show port tm cap (port_id)\n" - " Display the port TM capability.\n\n" - "show port tm level cap (port_id) (level_id)\n" - " Display the port TM hierarchical level capability.\n\n" + "show fwd stats all\n" + " Display statistics for all fwd engines.\n\n" - "show port tm node cap (port_id) (node_id)\n" - " Display the port TM node capability.\n\n" + "clear fwd stats all\n" + " Clear statistics for all fwd engines.\n\n" - "show port tm node type (port_id) (node_id)\n" - " Display the port TM node type.\n\n" + "show port (port_id) rx_offload capabilities\n" + " List all per queue and per port Rx offloading" + " capabilities of a port\n\n" - "show port tm node stats (port_id) (node_id) (clear)\n" - " Display the port TM node stats.\n\n" + "show port (port_id) rx_offload configuration\n" + " List port level and all queue level" + " Rx offloading configuration\n\n" + "show port (port_id) tx_offload capabilities\n" + " List all per queue and per port" + " Tx offloading capabilities of a port\n\n" + + "show port (port_id) tx_offload configuration\n" + " List port level and all queue level" + " Tx offloading configuration\n\n" + + "show port (port_id) tx_metadata\n" + " Show Tx metadata value set" + " for a specific port\n\n" ); } @@ -642,11 +654,6 @@ static void cmd_help_long_parsed(void *parsed_result, "E-tag set filter del e-tag-id (value) port (port_id)\n" " Delete an E-tag forwarding filter on a port\n\n" -#if defined RTE_LIBRTE_PMD_SOFTNIC && defined RTE_LIBRTE_SCHED - "set port tm hierarchy default (port_id)\n" - " Set default traffic Management hierarchy on a port\n\n" - -#endif "ddp add (port_id) (profile_path[,backup_profile_path])\n" " Load a profile package on a port\n\n" @@ -727,62 +734,6 @@ static void cmd_help_long_parsed(void *parsed_result, "show port (port_id) queue-region\n" " show all queue region related configuration info\n\n" - "add port tm node shaper profile (port_id) (shaper_profile_id)" - " (cmit_tb_rate) (cmit_tb_size) (peak_tb_rate) (peak_tb_size)" - " (packet_length_adjust)\n" - " Add port tm node private shaper profile.\n\n" - - "del port tm node shaper profile (port_id) (shaper_profile_id)\n" - " Delete port tm node private shaper profile.\n\n" - - "add port tm node shared shaper (port_id) (shared_shaper_id)" - " (shaper_profile_id)\n" - " Add/update port tm node shared shaper.\n\n" - - "del port tm node shared shaper (port_id) (shared_shaper_id)\n" - " Delete port tm node shared shaper.\n\n" - - "set port tm node shaper profile (port_id) (node_id)" - " (shaper_profile_id)\n" - " Set port tm node shaper profile.\n\n" - - "add port tm node wred profile (port_id) (wred_profile_id)" - " (color_g) (min_th_g) (max_th_g) (maxp_inv_g) (wq_log2_g)" - " (color_y) (min_th_y) (max_th_y) (maxp_inv_y) (wq_log2_y)" - " (color_r) (min_th_r) (max_th_r) (maxp_inv_r) (wq_log2_r)\n" - " Add port tm node wred profile.\n\n" - - "del port tm node wred profile (port_id) (wred_profile_id)\n" - " Delete port tm node wred profile.\n\n" - - "add port tm nonleaf node (port_id) (node_id) (parent_node_id)" - " (priority) (weight) (level_id) (shaper_profile_id)" - " (n_sp_priorities) (stats_mask) (n_shared_shapers)" - " [(shared_shaper_id_0) (shared_shaper_id_1)...]\n" - " Add port tm nonleaf node.\n\n" - - "add port tm leaf node (port_id) (node_id) (parent_node_id)" - " (priority) (weight) (level_id) (shaper_profile_id)" - " (cman_mode) (wred_profile_id) (stats_mask) (n_shared_shapers)" - " [(shared_shaper_id_0) (shared_shaper_id_1)...]\n" - " Add port tm leaf node.\n\n" - - "del port tm node (port_id) (node_id)\n" - " Delete port tm node.\n\n" - - "set port tm node parent (port_id) (node_id) (parent_node_id)" - " (priority) (weight)\n" - " Set port tm node parent.\n\n" - - "suspend port tm node (port_id) (node_id)" - " Suspend tm node.\n\n" - - "resume port tm node (port_id) (node_id)" - " Resume tm node.\n\n" - - "port tm hierarchy commit (port_id) (clean_on_fail)\n" - " Commit tm hierarchy.\n\n" - "vxlan ip-version (ipv4|ipv6) vni (vni) udp-src" " (udp-src) udp-dst (udp-dst) ip-src (ip-src) ip-dst" " (ip-dst) eth-src (eth-src) eth-dst (eth-dst)\n" @@ -918,6 +869,52 @@ static void cmd_help_long_parsed(void *parsed_result, "port config (port_id) udp_tunnel_port add|rm vxlan|geneve (udp_port)\n\n" " Add/remove UDP tunnel port for tunneling offload\n\n" + + "port config rx_offload vlan_strip|" + "ipv4_cksum|udp_cksum|tcp_cksum|tcp_lro|qinq_strip|" + "outer_ipv4_cksum|macsec_strip|header_split|" + "vlan_filter|vlan_extend|jumbo_frame|crc_strip|" + "scatter|timestamp|security|keep_crc on|off\n" + " Enable or disable a per port Rx offloading" + " on all Rx queues of a port\n\n" + + "port (port_id) rxq (queue_id) rx_offload vlan_strip|" + "ipv4_cksum|udp_cksum|tcp_cksum|tcp_lro|qinq_strip|" + "outer_ipv4_cksum|macsec_strip|header_split|" + "vlan_filter|vlan_extend|jumbo_frame|crc_strip|" + "scatter|timestamp|security|keep_crc on|off\n" + " Enable or disable a per queue Rx offloading" + " only on a specific Rx queue\n\n" + + "port config (port_id) tx_offload vlan_insert|" + "ipv4_cksum|udp_cksum|tcp_cksum|sctp_cksum|tcp_tso|" + "udp_tso|outer_ipv4_cksum|qinq_insert|vxlan_tnl_tso|" + "gre_tnl_tso|ipip_tnl_tso|geneve_tnl_tso|" + "macsec_insert|mt_lockfree|multi_segs|mbuf_fast_free|" + "security|match_metadata on|off\n" + " Enable or disable a per port Tx offloading" + " on all Tx queues of a port\n\n" + + "port (port_id) txq (queue_id) tx_offload vlan_insert|" + "ipv4_cksum|udp_cksum|tcp_cksum|sctp_cksum|tcp_tso|" + "udp_tso|outer_ipv4_cksum|qinq_insert|vxlan_tnl_tso|" + "gre_tnl_tso|ipip_tnl_tso|geneve_tnl_tso|macsec_insert" + "|mt_lockfree|multi_segs|mbuf_fast_free|security" + " on|off\n" + " Enable or disable a per queue Tx offloading" + " only on a specific Tx queue\n\n" + + "bpf-load rx|tx (port) (queue) (J|M|B) (file_name)\n" + " Load an eBPF program as a callback" + " for particular RX/TX queue\n\n" + + "bpf-unload rx|tx (port) (queue)\n" + " Unload previously loaded eBPF program" + " for particular RX/TX queue\n\n" + + "port config (port_id) tx_metadata (value)\n" + " Set Tx metadata value per port. Testpmd will add this value" + " to any Tx packet sent from this port\n\n" ); } @@ -1137,6 +1134,107 @@ static void cmd_help_long_parsed(void *parsed_result, " flow rules\n\n" ); } + + if (show_all || !strcmp(res->section, "traffic_management")) { + cmdline_printf( + cl, + "\n" + "Traffic Management:\n" + "--------------\n" + "show port tm cap (port_id)\n" + " Display the port TM capability.\n\n" + + "show port tm level cap (port_id) (level_id)\n" + " Display the port TM hierarchical level capability.\n\n" + + "show port tm node cap (port_id) (node_id)\n" + " Display the port TM node capability.\n\n" + + "show port tm node type (port_id) (node_id)\n" + " Display the port TM node type.\n\n" + + "show port tm node stats (port_id) (node_id) (clear)\n" + " Display the port TM node stats.\n\n" + +#if defined RTE_LIBRTE_PMD_SOFTNIC && defined RTE_LIBRTE_SCHED + "set port tm hierarchy default (port_id)\n" + " Set default traffic Management hierarchy on a port\n\n" +#endif + + "add port tm node shaper profile (port_id) (shaper_profile_id)" + " (cmit_tb_rate) (cmit_tb_size) (peak_tb_rate) (peak_tb_size)" + " (packet_length_adjust)\n" + " Add port tm node private shaper profile.\n\n" + + "del port tm node shaper profile (port_id) (shaper_profile_id)\n" + " Delete port tm node private shaper profile.\n\n" + + "add port tm node shared shaper (port_id) (shared_shaper_id)" + " (shaper_profile_id)\n" + " Add/update port tm node shared shaper.\n\n" + + "del port tm node shared shaper (port_id) (shared_shaper_id)\n" + " Delete port tm node shared shaper.\n\n" + + "set port tm node shaper profile (port_id) (node_id)" + " (shaper_profile_id)\n" + " Set port tm node shaper profile.\n\n" + + "add port tm node wred profile (port_id) (wred_profile_id)" + " (color_g) (min_th_g) (max_th_g) (maxp_inv_g) (wq_log2_g)" + " (color_y) (min_th_y) (max_th_y) (maxp_inv_y) (wq_log2_y)" + " (color_r) (min_th_r) (max_th_r) (maxp_inv_r) (wq_log2_r)\n" + " Add port tm node wred profile.\n\n" + + "del port tm node wred profile (port_id) (wred_profile_id)\n" + " Delete port tm node wred profile.\n\n" + + "add port tm nonleaf node (port_id) (node_id) (parent_node_id)" + " (priority) (weight) (level_id) (shaper_profile_id)" + " (n_sp_priorities) (stats_mask) (n_shared_shapers)" + " [(shared_shaper_id_0) (shared_shaper_id_1)...]\n" + " Add port tm nonleaf node.\n\n" + + "add port tm leaf node (port_id) (node_id) (parent_node_id)" + " (priority) (weight) (level_id) (shaper_profile_id)" + " (cman_mode) (wred_profile_id) (stats_mask) (n_shared_shapers)" + " [(shared_shaper_id_0) (shared_shaper_id_1)...]\n" + " Add port tm leaf node.\n\n" + + "del port tm node (port_id) (node_id)\n" + " Delete port tm node.\n\n" + + "set port tm node parent (port_id) (node_id) (parent_node_id)" + " (priority) (weight)\n" + " Set port tm node parent.\n\n" + + "suspend port tm node (port_id) (node_id)" + " Suspend tm node.\n\n" + + "resume port tm node (port_id) (node_id)" + " Resume tm node.\n\n" + + "port tm hierarchy commit (port_id) (clean_on_fail)\n" + " Commit tm hierarchy.\n\n" + + "set port tm mark ip_ecn (port) (green) (yellow)" + " (red)\n" + " Enables/Disables the traffic management marking" + " for IP ECN (Explicit Congestion Notification)" + " packets on a given port\n\n" + + "set port tm mark ip_dscp (port) (green) (yellow)" + " (red)\n" + " Enables/Disables the traffic management marking" + " on the port for IP dscp packets\n\n" + + "set port tm mark vlan_dei (port) (green) (yellow)" + " (red)\n" + " Enables/Disables the traffic management marking" + " on the port for VLAN packets with DEI enabled\n\n" + ); + } + } cmdline_parse_token_string_t cmd_help_long_help = @@ -1145,12 +1243,13 @@ cmdline_parse_token_string_t cmd_help_long_help = cmdline_parse_token_string_t cmd_help_long_section = TOKEN_STRING_INITIALIZER(struct cmd_help_long_result, section, "all#control#display#config#" - "ports#registers#filters"); + "ports#registers#filters#traffic_management"); cmdline_parse_inst_t cmd_help_long = { .f = cmd_help_long_parsed, .data = NULL, - .help_str = "help all|control|display|config|ports|register|filters: " + .help_str = "help all|control|display|config|ports|register|" + "filters|traffic_management: " "Show help", .tokens = { (void *)&cmd_help_long_help, @@ -12070,7 +12169,7 @@ cmd_set_hash_global_config_parsed(void *parsed_result, res->port_id); else printf("Global hash configurations have been set " - "succcessfully by port %d\n", res->port_id); + "successfully by port %d\n", res->port_id); } cmdline_parse_token_string_t cmd_set_hash_global_config_all = @@ -15567,10 +15666,9 @@ static void cmd_set_mplsogre_encap_parsed(void *parsed_result, struct cmd_set_mplsogre_encap_result *res = parsed_result; union { uint32_t mplsogre_label; - uint8_t label[3]; + uint8_t label[4]; } id = { - .mplsogre_label = - rte_cpu_to_be_32(res->label) & RTE_BE32(0x00ffffff), + .mplsogre_label = rte_cpu_to_be_32(res->label<<12), }; if (strcmp(res->mplsogre, "mplsogre_encap") == 0) @@ -15583,7 +15681,7 @@ static void cmd_set_mplsogre_encap_parsed(void *parsed_result, mplsogre_encap_conf.select_ipv4 = 0; else return; - rte_memcpy(mplsogre_encap_conf.label, &id.label[1], 3); + rte_memcpy(mplsogre_encap_conf.label, &id.label, 3); if (mplsogre_encap_conf.select_ipv4) { IPV4_ADDR_TO_UINT(res->ip_src, mplsogre_encap_conf.ipv4_src); IPV4_ADDR_TO_UINT(res->ip_dst, mplsogre_encap_conf.ipv4_dst); @@ -15804,10 +15902,9 @@ static void cmd_set_mplsoudp_encap_parsed(void *parsed_result, struct cmd_set_mplsoudp_encap_result *res = parsed_result; union { uint32_t mplsoudp_label; - uint8_t label[3]; + uint8_t label[4]; } id = { - .mplsoudp_label = - rte_cpu_to_be_32(res->label) & RTE_BE32(0x00ffffff), + .mplsoudp_label = rte_cpu_to_be_32(res->label<<12), }; if (strcmp(res->mplsoudp, "mplsoudp_encap") == 0) @@ -15820,7 +15917,7 @@ static void cmd_set_mplsoudp_encap_parsed(void *parsed_result, mplsoudp_encap_conf.select_ipv4 = 0; else return; - rte_memcpy(mplsoudp_encap_conf.label, &id.label[1], 3); + rte_memcpy(mplsoudp_encap_conf.label, &id.label, 3); mplsoudp_encap_conf.udp_src = rte_cpu_to_be_16(res->udp_src); mplsoudp_encap_conf.udp_dst = rte_cpu_to_be_16(res->udp_dst); if (mplsoudp_encap_conf.select_ipv4) { @@ -17627,7 +17724,7 @@ print_rx_offloads(uint64_t offloads) begin = __builtin_ctzll(offloads); end = sizeof(offloads) * CHAR_BIT - __builtin_clzll(offloads); - single_offload = 1 << begin; + single_offload = 1ULL << begin; for (bit = begin; bit < end; bit++) { if (offloads & single_offload) printf(" %s", @@ -18021,7 +18118,7 @@ print_tx_offloads(uint64_t offloads) begin = __builtin_ctzll(offloads); end = sizeof(offloads) * CHAR_BIT - __builtin_clzll(offloads); - single_offload = 1 << begin; + single_offload = 1ULL << begin; for (bit = begin; bit < end; bit++) { if (offloads & single_offload) printf(" %s", @@ -18198,13 +18295,13 @@ search_tx_offload(const char *name) single_offload = 1; for (bit = 0; bit < sizeof(single_offload) * CHAR_BIT; bit++) { single_name = rte_eth_dev_tx_offload_name(single_offload); + if (single_name == NULL) + break; if (!strcasecmp(single_name, name)) { found = 1; break; } else if (!strcasecmp(single_name, "UNKNOWN")) break; - else if (single_name == NULL) - break; single_offload <<= 1; } @@ -18457,7 +18554,7 @@ cmd_show_tx_metadata_parsed(void *parsed_result, } if (!strcmp(res->cmd_keyword, "tx_metadata")) { printf("Port %u tx_metadata: %u\n", res->cmd_pid, - ports[res->cmd_pid].tx_metadata); + rte_be_to_cpu_32(ports[res->cmd_pid].tx_metadata)); } } diff --git a/dpdk/app/test-pmd/cmdline_flow.c b/dpdk/app/test-pmd/cmdline_flow.c index 23ea7cc82..d202566b2 100644 --- a/dpdk/app/test-pmd/cmdline_flow.c +++ b/dpdk/app/test-pmd/cmdline_flow.c @@ -35,6 +35,7 @@ enum index { PREFIX, BOOLEAN, STRING, + HEX, MAC_ADDR, IPV4_ADDR, IPV6_ADDR, @@ -1122,6 +1123,9 @@ static int parse_boolean(struct context *, const struct token *, static int parse_string(struct context *, const struct token *, const char *, unsigned int, void *, unsigned int); +static int parse_hex(struct context *ctx, const struct token *token, + const char *str, unsigned int len, + void *buf, unsigned int size); static int parse_mac_addr(struct context *, const struct token *, const char *, unsigned int, void *, unsigned int); @@ -1198,6 +1202,13 @@ static const struct token token_list[] = { .call = parse_string, .comp = comp_none, }, + [HEX] = { + .name = "{hex}", + .type = "HEX", + .help = "fixed string", + .call = parse_hex, + .comp = comp_none, + }, [MAC_ADDR] = { .name = "{MAC address}", .type = "MAC-48", @@ -2306,7 +2317,7 @@ static const struct token token_list[] = { [ACTION_RSS_KEY] = { .name = "key", .help = "RSS hash key", - .next = NEXT(action_rss, NEXT_ENTRY(STRING)), + .next = NEXT(action_rss, NEXT_ENTRY(HEX)), .args = ARGS(ARGS_ENTRY_ARB(0, 0), ARGS_ENTRY_ARB (offsetof(struct action_rss_data, conf) + @@ -3808,6 +3819,7 @@ parse_vc_action_mplsogre_encap(struct context *ctx, const struct token *token, header += sizeof(gre); memcpy(mpls.label_tc_s, mplsogre_encap_conf.label, RTE_DIM(mplsogre_encap_conf.label)); + mpls.label_tc_s[2] |= 0x1; memcpy(header, &mpls, sizeof(mpls)); header += sizeof(mpls); action_encap_data->conf.size = header - @@ -3998,6 +4010,7 @@ parse_vc_action_mplsoudp_encap(struct context *ctx, const struct token *token, header += sizeof(udp); memcpy(mpls.label_tc_s, mplsoudp_encap_conf.label, RTE_DIM(mplsoudp_encap_conf.label)); + mpls.label_tc_s[2] |= 0x1; memcpy(header, &mpls, sizeof(mpls)); header += sizeof(mpls); action_encap_data->conf.size = header - @@ -4439,6 +4452,121 @@ error: return -1; } +static int +parse_hex_string(const char *src, uint8_t *dst, uint32_t *size) +{ + char *c = NULL; + uint32_t i, len; + char tmp[3]; + + /* Check input parameters */ + if ((src == NULL) || + (dst == NULL) || + (size == NULL) || + (*size == 0)) + return -1; + + /* Convert chars to bytes */ + for (i = 0, len = 0; i < *size; i += 2) { + snprintf(tmp, 3, "%s", src + i); + dst[len++] = strtoul(tmp, &c, 16); + if (*c != 0) { + len--; + dst[len] = 0; + *size = len; + return -1; + } + } + dst[len] = 0; + *size = len; + + return 0; +} + +static int +parse_hex(struct context *ctx, const struct token *token, + const char *str, unsigned int len, + void *buf, unsigned int size) +{ + const struct arg *arg_data = pop_args(ctx); + const struct arg *arg_len = pop_args(ctx); + const struct arg *arg_addr = pop_args(ctx); + char tmp[16]; /* Ought to be enough. */ + int ret; + unsigned int hexlen = len; + unsigned int length = 256; + uint8_t hex_tmp[length]; + + /* Arguments are expected. */ + if (!arg_data) + return -1; + if (!arg_len) { + push_args(ctx, arg_data); + return -1; + } + if (!arg_addr) { + push_args(ctx, arg_len); + push_args(ctx, arg_data); + return -1; + } + size = arg_data->size; + /* Bit-mask fill is not supported. */ + if (arg_data->mask) + goto error; + if (!ctx->object) + return len; + + /* translate bytes string to array. */ + if (str[0] == '0' && ((str[1] == 'x') || + (str[1] == 'X'))) { + str += 2; + hexlen -= 2; + } + if (hexlen > length) + return -1; + ret = parse_hex_string(str, hex_tmp, &hexlen); + if (ret < 0) + goto error; + /* Let parse_int() fill length information first. */ + ret = snprintf(tmp, sizeof(tmp), "%u", hexlen); + if (ret < 0) + goto error; + push_args(ctx, arg_len); + ret = parse_int(ctx, token, tmp, ret, NULL, 0); + if (ret < 0) { + pop_args(ctx); + goto error; + } + buf = (uint8_t *)ctx->object + arg_data->offset; + /* Output buffer is not necessarily NUL-terminated. */ + memcpy(buf, hex_tmp, hexlen); + memset((uint8_t *)buf + hexlen, 0x00, size - hexlen); + if (ctx->objmask) + memset((uint8_t *)ctx->objmask + arg_data->offset, + 0xff, hexlen); + /* Save address if requested. */ + if (arg_addr->size) { + memcpy((uint8_t *)ctx->object + arg_addr->offset, + (void *[]){ + (uint8_t *)ctx->object + arg_data->offset + }, + arg_addr->size); + if (ctx->objmask) + memcpy((uint8_t *)ctx->objmask + arg_addr->offset, + (void *[]){ + (uint8_t *)ctx->objmask + arg_data->offset + }, + arg_addr->size); + } + return len; +error: + push_args(ctx, arg_addr); + push_args(ctx, arg_len); + push_args(ctx, arg_data); + return -1; + +} + /** * Parse a MAC address. * diff --git a/dpdk/app/test-pmd/cmdline_tm.c b/dpdk/app/test-pmd/cmdline_tm.c index 4c763482a..101208474 100644 --- a/dpdk/app/test-pmd/cmdline_tm.c +++ b/dpdk/app/test-pmd/cmdline_tm.c @@ -1156,18 +1156,18 @@ struct cmd_add_port_tm_node_wred_profile_result { uint16_t port_id; uint32_t wred_profile_id; cmdline_fixed_string_t color_g; - uint16_t min_th_g; - uint16_t max_th_g; + uint64_t min_th_g; + uint64_t max_th_g; uint16_t maxp_inv_g; uint16_t wq_log2_g; cmdline_fixed_string_t color_y; - uint16_t min_th_y; - uint16_t max_th_y; + uint64_t min_th_y; + uint64_t max_th_y; uint16_t maxp_inv_y; uint16_t wq_log2_y; cmdline_fixed_string_t color_r; - uint16_t min_th_r; - uint16_t max_th_r; + uint64_t min_th_r; + uint64_t max_th_r; uint16_t maxp_inv_r; uint16_t wq_log2_r; }; @@ -1206,11 +1206,11 @@ cmdline_parse_token_string_t cmd_add_port_tm_node_wred_profile_color_g = cmdline_parse_token_num_t cmd_add_port_tm_node_wred_profile_min_th_g = TOKEN_NUM_INITIALIZER( struct cmd_add_port_tm_node_wred_profile_result, - min_th_g, UINT16); + min_th_g, UINT64); cmdline_parse_token_num_t cmd_add_port_tm_node_wred_profile_max_th_g = TOKEN_NUM_INITIALIZER( struct cmd_add_port_tm_node_wred_profile_result, - max_th_g, UINT16); + max_th_g, UINT64); cmdline_parse_token_num_t cmd_add_port_tm_node_wred_profile_maxp_inv_g = TOKEN_NUM_INITIALIZER( struct cmd_add_port_tm_node_wred_profile_result, @@ -1226,11 +1226,11 @@ cmdline_parse_token_string_t cmd_add_port_tm_node_wred_profile_color_y = cmdline_parse_token_num_t cmd_add_port_tm_node_wred_profile_min_th_y = TOKEN_NUM_INITIALIZER( struct cmd_add_port_tm_node_wred_profile_result, - min_th_y, UINT16); + min_th_y, UINT64); cmdline_parse_token_num_t cmd_add_port_tm_node_wred_profile_max_th_y = TOKEN_NUM_INITIALIZER( struct cmd_add_port_tm_node_wred_profile_result, - max_th_y, UINT16); + max_th_y, UINT64); cmdline_parse_token_num_t cmd_add_port_tm_node_wred_profile_maxp_inv_y = TOKEN_NUM_INITIALIZER( struct cmd_add_port_tm_node_wred_profile_result, @@ -1246,11 +1246,11 @@ cmdline_parse_token_string_t cmd_add_port_tm_node_wred_profile_color_r = cmdline_parse_token_num_t cmd_add_port_tm_node_wred_profile_min_th_r = TOKEN_NUM_INITIALIZER( struct cmd_add_port_tm_node_wred_profile_result, - min_th_r, UINT16); + min_th_r, UINT64); cmdline_parse_token_num_t cmd_add_port_tm_node_wred_profile_max_th_r = TOKEN_NUM_INITIALIZER( struct cmd_add_port_tm_node_wred_profile_result, - max_th_r, UINT16); + max_th_r, UINT64); cmdline_parse_token_num_t cmd_add_port_tm_node_wred_profile_maxp_inv_r = TOKEN_NUM_INITIALIZER( struct cmd_add_port_tm_node_wred_profile_result, diff --git a/dpdk/app/test-pmd/config.c b/dpdk/app/test-pmd/config.c index b9e5dd923..4004e3a49 100644 --- a/dpdk/app/test-pmd/config.c +++ b/dpdk/app/test-pmd/config.c @@ -2955,7 +2955,6 @@ vlan_tpid_set(portid_t port_id, enum rte_vlan_type vlan_type, uint16_t tp_id) void tx_vlan_set(portid_t port_id, uint16_t vlan_id) { - int vlan_offload; struct rte_eth_dev_info dev_info; if (port_id_is_invalid(port_id, ENABLED_WARN)) @@ -2963,8 +2962,8 @@ tx_vlan_set(portid_t port_id, uint16_t vlan_id) if (vlan_id_is_invalid(vlan_id)) return; - vlan_offload = rte_eth_dev_get_vlan_offload(port_id); - if (vlan_offload & ETH_VLAN_EXTEND_OFFLOAD) { + if (ports[port_id].dev_conf.txmode.offloads & + DEV_TX_OFFLOAD_QINQ_INSERT) { printf("Error, as QinQ has been enabled.\n"); return; } @@ -2983,7 +2982,6 @@ tx_vlan_set(portid_t port_id, uint16_t vlan_id) void tx_qinq_set(portid_t port_id, uint16_t vlan_id, uint16_t vlan_id_outer) { - int vlan_offload; struct rte_eth_dev_info dev_info; if (port_id_is_invalid(port_id, ENABLED_WARN)) @@ -2993,11 +2991,6 @@ tx_qinq_set(portid_t port_id, uint16_t vlan_id, uint16_t vlan_id_outer) if (vlan_id_is_invalid(vlan_id_outer)) return; - vlan_offload = rte_eth_dev_get_vlan_offload(port_id); - if (!(vlan_offload & ETH_VLAN_EXTEND_OFFLOAD)) { - printf("Error, as QinQ hasn't been enabled.\n"); - return; - } rte_eth_dev_info_get(port_id, &dev_info); if ((dev_info.tx_offload_capa & DEV_TX_OFFLOAD_QINQ_INSERT) == 0) { printf("Error: qinq insert not supported by port %d\n", @@ -3006,7 +2999,8 @@ tx_qinq_set(portid_t port_id, uint16_t vlan_id, uint16_t vlan_id_outer) } tx_vlan_reset(port_id); - ports[port_id].dev_conf.txmode.offloads |= DEV_TX_OFFLOAD_QINQ_INSERT; + ports[port_id].dev_conf.txmode.offloads |= (DEV_TX_OFFLOAD_VLAN_INSERT | + DEV_TX_OFFLOAD_QINQ_INSERT); ports[port_id].tx_vlan_id = vlan_id; ports[port_id].tx_vlan_id_outer = vlan_id_outer; } diff --git a/dpdk/app/test-pmd/csumonly.c b/dpdk/app/test-pmd/csumonly.c index ffeee2051..f4f2a7b29 100644 --- a/dpdk/app/test-pmd/csumonly.c +++ b/dpdk/app/test-pmd/csumonly.c @@ -575,7 +575,7 @@ mbuf_copy_split(const struct rte_mbuf *ms, struct rte_mbuf *md[], /* * Allocate a new mbuf with up to tx_pkt_nb_segs segments. - * Copy packet contents and offload information into then new segmented mbuf. + * Copy packet contents and offload information into the new segmented mbuf. */ static struct rte_mbuf * pkt_copy_split(const struct rte_mbuf *pkt) diff --git a/dpdk/app/test-pmd/testpmd.c b/dpdk/app/test-pmd/testpmd.c index 4c75587d0..cf983b16b 100644 --- a/dpdk/app/test-pmd/testpmd.c +++ b/dpdk/app/test-pmd/testpmd.c @@ -188,6 +188,8 @@ struct fwd_engine * fwd_engines[] = { NULL, }; +struct rte_mempool *mempools[RTE_MAX_NUMA_NODES]; + struct fwd_config cur_fwd_config; struct fwd_engine *cur_fwd_eng = &io_fwd_engine; /**< IO mode by default. */ uint32_t retry_enabled; @@ -844,7 +846,7 @@ setup_extmem(uint32_t nb_mbufs, uint32_t mbuf_sz, bool huge) /* * Configuration initialisation done once at init time. */ -static void +static struct rte_mempool * mbuf_pool_create(uint16_t mbuf_seg_size, unsigned nb_mbuf, unsigned int socket_id) { @@ -922,6 +924,7 @@ err: } else if (verbose_level > 0) { rte_mempool_dump(stdout, rte_mp); } + return rte_mp; } /* @@ -1139,14 +1142,18 @@ init_config(void) uint8_t i; for (i = 0; i < num_sockets; i++) - mbuf_pool_create(mbuf_data_size, nb_mbuf_per_pool, - socket_ids[i]); + mempools[i] = mbuf_pool_create(mbuf_data_size, + nb_mbuf_per_pool, + socket_ids[i]); } else { if (socket_num == UMA_NO_CONFIG) - mbuf_pool_create(mbuf_data_size, nb_mbuf_per_pool, 0); + mempools[0] = mbuf_pool_create(mbuf_data_size, + nb_mbuf_per_pool, 0); else - mbuf_pool_create(mbuf_data_size, nb_mbuf_per_pool, - socket_num); + mempools[socket_num] = mbuf_pool_create + (mbuf_data_size, + nb_mbuf_per_pool, + socket_num); } init_port_config(); @@ -1388,7 +1395,7 @@ fwd_port_stats_display(portid_t port_id, struct rte_eth_stats *stats) printf(" RX-packets: %-14"PRIu64" RX-dropped: %-14"PRIu64"RX-total: " "%-"PRIu64"\n", stats->ipackets, stats->imissed, - (uint64_t) (stats->ipackets + stats->imissed)); + stats->ipackets + stats->imissed); if (cur_fwd_eng == &csum_fwd_engine) printf(" Bad-ipcsum: %-14"PRIu64" Bad-l4csum: %-14"PRIu64"Bad-outer-l4csum: %-14"PRIu64"\n", @@ -1402,13 +1409,13 @@ fwd_port_stats_display(portid_t port_id, struct rte_eth_stats *stats) printf(" TX-packets: %-14"PRIu64" TX-dropped: %-14"PRIu64"TX-total: " "%-"PRIu64"\n", stats->opackets, port->tx_dropped, - (uint64_t) (stats->opackets + port->tx_dropped)); + stats->opackets + port->tx_dropped); } else { printf(" RX-packets: %14"PRIu64" RX-dropped:%14"PRIu64" RX-total:" "%14"PRIu64"\n", stats->ipackets, stats->imissed, - (uint64_t) (stats->ipackets + stats->imissed)); + stats->ipackets + stats->imissed); if (cur_fwd_eng == &csum_fwd_engine) printf(" Bad-ipcsum:%14"PRIu64" Bad-l4csum:%14"PRIu64" Bad-outer-l4csum: %-14"PRIu64"\n", @@ -1423,7 +1430,7 @@ fwd_port_stats_display(portid_t port_id, struct rte_eth_stats *stats) printf(" TX-packets: %14"PRIu64" TX-dropped:%14"PRIu64" TX-total:" "%14"PRIu64"\n", stats->opackets, port->tx_dropped, - (uint64_t) (stats->opackets + port->tx_dropped)); + stats->opackets + port->tx_dropped); } #ifdef RTE_TEST_PMD_RECORD_BURST_STATS @@ -1471,15 +1478,19 @@ fwd_stream_stats_display(streamid_t stream_id) "TX Port=%2d/Queue=%2d %s\n", fwd_top_stats_border, fs->rx_port, fs->rx_queue, fs->tx_port, fs->tx_queue, fwd_top_stats_border); - printf(" RX-packets: %-14u TX-packets: %-14u TX-dropped: %-14u", + printf(" RX-packets: %-14"PRIu64" TX-packets: %-14"PRIu64 + " TX-dropped: %-14"PRIu64, fs->rx_packets, fs->tx_packets, fs->fwd_dropped); /* if checksum mode */ if (cur_fwd_eng == &csum_fwd_engine) { - printf(" RX- bad IP checksum: %-14u Rx- bad L4 checksum: " - "%-14u Rx- bad outer L4 checksum: %-14u\n", + printf(" RX- bad IP checksum: %-14"PRIu64 + " Rx- bad L4 checksum: %-14"PRIu64 + " Rx- bad outer L4 checksum: %-14"PRIu64"\n", fs->rx_bad_ip_csum, fs->rx_bad_l4_csum, fs->rx_bad_outer_l4_csum); + } else { + printf("\n"); } #ifdef RTE_TEST_PMD_RECORD_BURST_STATS @@ -1755,9 +1766,6 @@ stop_packet_forwarding(void) uint64_t total_rx_dropped; uint64_t total_tx_dropped; uint64_t total_rx_nombuf; - uint64_t tx_dropped; - uint64_t rx_bad_ip_csum; - uint64_t rx_bad_l4_csum; #ifdef RTE_TEST_PMD_RECORD_CORE_CYCLES uint64_t fwd_cycles; #endif @@ -1784,38 +1792,22 @@ stop_packet_forwarding(void) fwd_cycles = 0; #endif for (sm_id = 0; sm_id < cur_fwd_config.nb_fwd_streams; sm_id++) { + struct fwd_stream *fs = fwd_streams[sm_id]; + if (cur_fwd_config.nb_fwd_streams > cur_fwd_config.nb_fwd_ports) { fwd_stream_stats_display(sm_id); - ports[fwd_streams[sm_id]->tx_port].tx_stream = NULL; - ports[fwd_streams[sm_id]->rx_port].rx_stream = NULL; + ports[fs->tx_port].tx_stream = NULL; + ports[fs->rx_port].rx_stream = NULL; } else { - ports[fwd_streams[sm_id]->tx_port].tx_stream = - fwd_streams[sm_id]; - ports[fwd_streams[sm_id]->rx_port].rx_stream = - fwd_streams[sm_id]; + ports[fs->tx_port].tx_stream = fs; + ports[fs->rx_port].rx_stream = fs; } - tx_dropped = ports[fwd_streams[sm_id]->tx_port].tx_dropped; - tx_dropped = (uint64_t) (tx_dropped + - fwd_streams[sm_id]->fwd_dropped); - ports[fwd_streams[sm_id]->tx_port].tx_dropped = tx_dropped; - - rx_bad_ip_csum = - ports[fwd_streams[sm_id]->rx_port].rx_bad_ip_csum; - rx_bad_ip_csum = (uint64_t) (rx_bad_ip_csum + - fwd_streams[sm_id]->rx_bad_ip_csum); - ports[fwd_streams[sm_id]->rx_port].rx_bad_ip_csum = - rx_bad_ip_csum; - - rx_bad_l4_csum = - ports[fwd_streams[sm_id]->rx_port].rx_bad_l4_csum; - rx_bad_l4_csum = (uint64_t) (rx_bad_l4_csum + - fwd_streams[sm_id]->rx_bad_l4_csum); - ports[fwd_streams[sm_id]->rx_port].rx_bad_l4_csum = - rx_bad_l4_csum; - - ports[fwd_streams[sm_id]->rx_port].rx_bad_outer_l4_csum += - fwd_streams[sm_id]->rx_bad_outer_l4_csum; + ports[fs->tx_port].tx_dropped += fs->fwd_dropped; + ports[fs->rx_port].rx_bad_ip_csum += fs->rx_bad_ip_csum; + ports[fs->rx_port].rx_bad_l4_csum += fs->rx_bad_l4_csum; + ports[fs->rx_port].rx_bad_outer_l4_csum += + fs->rx_bad_outer_l4_csum; #ifdef RTE_TEST_PMD_RECORD_CORE_CYCLES fwd_cycles = (uint64_t) (fwd_cycles + @@ -2399,6 +2391,7 @@ pmd_test_exit(void) struct rte_device *device; portid_t pt_id; int ret; + int i; if (test_done == 0) stop_packet_forwarding(); @@ -2406,9 +2399,13 @@ pmd_test_exit(void) if (ports != NULL) { no_link_check = 1; RTE_ETH_FOREACH_DEV(pt_id) { - printf("\nShutting down port %d...\n", pt_id); + printf("\nStopping port %d...\n", pt_id); fflush(stdout); stop_port(pt_id); + } + RTE_ETH_FOREACH_DEV(pt_id) { + printf("\nShutting down port %d...\n", pt_id); + fflush(stdout); close_port(pt_id); /* @@ -2448,6 +2445,10 @@ pmd_test_exit(void) return; } } + for (i = 0 ; i < RTE_MAX_NUMA_NODES ; i++) { + if (mempools[i]) + rte_mempool_free(mempools[i]); + } printf("\nBye...\n"); } @@ -2961,8 +2962,9 @@ init_port_dcb_config(portid_t pid, port_conf.rxmode.offloads |= DEV_RX_OFFLOAD_VLAN_FILTER; /* re-configure the device . */ - rte_eth_dev_configure(pid, nb_rxq, nb_rxq, &port_conf); - + retval = rte_eth_dev_configure(pid, nb_rxq, nb_rxq, &port_conf); + if (retval < 0) + return retval; rte_eth_dev_info_get(pid, &rte_port->dev_info); /* If dev_info.vmdq_pool_base is greater than 0, @@ -3054,6 +3056,8 @@ print_stats(void) printf("\nPort statistics ===================================="); for (i = 0; i < cur_fwd_config.nb_fwd_ports; i++) nic_stats_display(fwd_ports_ids[i]); + + fflush(stdout); } static void diff --git a/dpdk/app/test-pmd/testpmd.h b/dpdk/app/test-pmd/testpmd.h index 3ff11e644..37d61b804 100644 --- a/dpdk/app/test-pmd/testpmd.h +++ b/dpdk/app/test-pmd/testpmd.h @@ -119,12 +119,12 @@ struct fwd_stream { unsigned int retry_enabled; /* "read-write" results */ - unsigned int rx_packets; /**< received packets */ - unsigned int tx_packets; /**< received packets transmitted */ - unsigned int fwd_dropped; /**< received packets not forwarded */ - unsigned int rx_bad_ip_csum ; /**< received packets has bad ip checksum */ - unsigned int rx_bad_l4_csum ; /**< received packets has bad l4 checksum */ - unsigned int rx_bad_outer_l4_csum; + uint64_t rx_packets; /**< received packets */ + uint64_t tx_packets; /**< received packets transmitted */ + uint64_t fwd_dropped; /**< received packets not forwarded */ + uint64_t rx_bad_ip_csum ; /**< received packets has bad ip checksum */ + uint64_t rx_bad_l4_csum ; /**< received packets has bad l4 checksum */ + uint64_t rx_bad_outer_l4_csum; /**< received packets has bad outer l4 checksum */ unsigned int gro_times; /**< GRO operation times */ #ifdef RTE_TEST_PMD_RECORD_CORE_CYCLES @@ -173,7 +173,6 @@ struct rte_port { uint16_t tunnel_tso_segsz; /**< Segmentation offload MSS for tunneled pkts. */ uint16_t tx_vlan_id;/**< The tag ID */ uint16_t tx_vlan_id_outer;/**< The outer tag ID */ - void *fwd_ctx; /**< Forwarding mode context */ uint64_t rx_bad_ip_csum; /**< rx pkts with bad ip checksum */ uint64_t rx_bad_l4_csum; /**< rx pkts with bad l4 checksum */ uint64_t rx_bad_outer_l4_csum; diff --git a/dpdk/buildtools/symlink-drivers-solibs.sh b/dpdk/buildtools/symlink-drivers-solibs.sh old mode 100755 new mode 100644 index 9826c6ae3..42985e855 --- a/dpdk/buildtools/symlink-drivers-solibs.sh +++ b/dpdk/buildtools/symlink-drivers-solibs.sh @@ -7,6 +7,7 @@ # others, e.g. PCI device PMDs depending on the PCI bus driver. # parameters to script are paths relative to install prefix: -# 1. directory containing driver files e.g. lib64/dpdk/drivers -# 2. directory for installed regular libs e.g. lib64 -ln -rsf ${DESTDIR}/${MESON_INSTALL_PREFIX}/$1/* ${DESTDIR}/${MESON_INSTALL_PREFIX}/$2 +# 1. directory for installed regular libs e.g. lib64 +# 2. subdirectory of libdir where the pmds are + +cd ${MESON_INSTALL_DESTDIR_PREFIX}/$1 && ln -sfv $2/librte_*.so* . diff --git a/dpdk/config/arm/armv8_machine.py b/dpdk/config/arm/armv8_machine.py old mode 100644 new mode 100755 diff --git a/dpdk/config/arm/meson.build b/dpdk/config/arm/meson.build index 3f917250d..9feb54f22 100644 --- a/dpdk/config/arm/meson.build +++ b/dpdk/config/arm/meson.build @@ -6,6 +6,7 @@ march_opt = '-march=@0@'.format(machine) arm_force_native_march = false +arm_force_default_march = (machine == 'default') machine_args_generic = [ ['default', ['-march=armv8-a+crc+crypto']], @@ -47,6 +48,7 @@ flags_common_default = [ flags_generic = [ ['RTE_MACHINE', '"armv8a"'], ['RTE_MAX_LCORE', 256], + ['RTE_USE_C11_MEM_MODEL', true], ['RTE_CACHE_LINE_SIZE', 128]] flags_cavium = [ ['RTE_MACHINE', '"thunderx"'], @@ -57,11 +59,13 @@ flags_cavium = [ ['RTE_USE_C11_MEM_MODEL', false]] flags_dpaa = [ ['RTE_MACHINE', '"dpaa"'], + ['RTE_USE_C11_MEM_MODEL', true], ['RTE_CACHE_LINE_SIZE', 64], ['RTE_MAX_NUMA_NODES', 1], ['RTE_MAX_LCORE', 16]] flags_dpaa2 = [ ['RTE_MACHINE', '"dpaa2"'], + ['RTE_USE_C11_MEM_MODEL', true], ['RTE_CACHE_LINE_SIZE', 64], ['RTE_MAX_NUMA_NODES', 1], ['RTE_MAX_LCORE', 16], @@ -102,7 +106,10 @@ else cmd_generic = ['generic', '', '', 'default', ''] cmd_output = cmd_generic # Set generic by default machine_args = [] # Clear previous machine args - if not meson.is_cross_build() + if arm_force_default_march and not meson.is_cross_build() + machine = impl_generic + impl_pn = 'default' + elif not meson.is_cross_build() # The script returns ['Implementer', 'Variant', 'Architecture', # 'Primary Part number', 'Revision'] detect_vendor = find_program(join_paths( @@ -112,8 +119,8 @@ else cmd_output = cmd.stdout().to_lower().strip().split(' ') endif # Set to generic if variable is not found - machine = get_variable('impl_' + cmd_output[0], 'generic') - if machine == 'generic' + machine = get_variable('impl_' + cmd_output[0], ['generic']) + if machine[0] == 'generic' machine = impl_generic cmd_output = cmd_generic endif diff --git a/dpdk/config/meson.build b/dpdk/config/meson.build index db32499b3..80d253828 100644 --- a/dpdk/config/meson.build +++ b/dpdk/config/meson.build @@ -1,6 +1,13 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2017 Intel Corporation +# driver .so files often depend upon the bus drivers for their connect bus, +# e.g. ixgbe depends on librte_bus_pci. This means that the bus drivers need +# to be in the library path, so symlink the drivers from the main lib directory. +meson.add_install_script('../buildtools/symlink-drivers-solibs.sh', + get_option('libdir'), + pmd_subdir_opt) + # set the machine type and cflags for it if meson.is_cross_build() machine = host_machine.cpu() diff --git a/dpdk/config/x86/meson.build b/dpdk/config/x86/meson.build index 33efb5e54..ae92f86a2 100644 --- a/dpdk/config/x86/meson.build +++ b/dpdk/config/x86/meson.build @@ -1,14 +1,24 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2017 Intel Corporation -# for checking defines we need to use the correct compiler flags -march_opt = '-march=@0@'.format(machine) +# get binutils version for the workaround of Bug 97 +ldver = run_command('ld', '-v').stdout().strip() +if ldver.contains('2.30') + if cc.has_argument('-mno-avx512f') + machine_args += '-mno-avx512f' + message('Binutils 2.30 detected, disabling AVX512 support as workaround for bug #97') + endif + if ldver.contains('2.31') and cc.has_argument('-mno-avx512f') + machine_args += '-mno-avx512f' + message('Binutils 2.31 detected, disabling AVX512 support as workaround for bug #249') + endif +endif # we require SSE4.2 for DPDK sse_errormsg = '''SSE4.2 instruction set is required for DPDK. Please set the machine type to "nehalem" or "corei7" or higher value''' -if cc.get_define('__SSE4_2__', args: march_opt) == '' +if cc.get_define('__SSE4_2__', args: machine_args) == '' error(sse_errormsg) endif @@ -28,23 +38,23 @@ else dpdk_conf.set('RTE_ARCH', 'i686') endif -if cc.get_define('__AES__', args: march_opt) != '' +if cc.get_define('__AES__', args: machine_args) != '' dpdk_conf.set('RTE_MACHINE_CPUFLAG_AES', 1) compile_time_cpuflags += ['RTE_CPUFLAG_AES'] endif -if cc.get_define('__PCLMUL__', args: march_opt) != '' +if cc.get_define('__PCLMUL__', args: machine_args) != '' dpdk_conf.set('RTE_MACHINE_CPUFLAG_PCLMULQDQ', 1) compile_time_cpuflags += ['RTE_CPUFLAG_PCLMULQDQ'] endif -if cc.get_define('__AVX__', args: march_opt) != '' +if cc.get_define('__AVX__', args: machine_args) != '' dpdk_conf.set('RTE_MACHINE_CPUFLAG_AVX', 1) compile_time_cpuflags += ['RTE_CPUFLAG_AVX'] endif -if cc.get_define('__AVX2__', args: march_opt) != '' +if cc.get_define('__AVX2__', args: machine_args) != '' dpdk_conf.set('RTE_MACHINE_CPUFLAG_AVX2', 1) compile_time_cpuflags += ['RTE_CPUFLAG_AVX2'] endif -if cc.get_define('__AVX512F__', args: march_opt) != '' +if cc.get_define('__AVX512F__', args: machine_args) != '' dpdk_conf.set('RTE_MACHINE_CPUFLAG_AVX512F', 1) compile_time_cpuflags += ['RTE_CPUFLAG_AVX512F'] endif diff --git a/dpdk/devtools/check-forbidden-tokens.awk b/dpdk/devtools/check-forbidden-tokens.awk old mode 100644 new mode 100755 diff --git a/dpdk/devtools/check-git-log.sh b/dpdk/devtools/check-git-log.sh index 85d67fb9a..d39064f9d 100755 --- a/dpdk/devtools/check-git-log.sh +++ b/dpdk/devtools/check-git-log.sh @@ -90,9 +90,10 @@ bad=$(echo "$headlines" | grep -E --color=always \ -e ':.*\<[hsf]w\>' \ -e ':.*\' \ -e ':.*\' \ - -e ':.*\' \ - -e ':.*\' \ - -e ':.*\' \ + -e ':.*\' \ + -e ':.*\<(Aarch64|AArch64|AARCH64|Aarch32|AArch32|AARCH32)\>' \ + -e ':.*\<(Armv7|ARMv7|ArmV7|armV7|ARMV7)\>' \ + -e ':.*\<(Armv8|ARMv8|ArmV8|armV8|ARMV8)\>' \ -e ':.*\' \ -e ':.*\' \ -e ':.*\' \ diff --git a/dpdk/devtools/check-symbol-change.sh b/dpdk/devtools/check-symbol-change.sh old mode 100644 new mode 100755 index 1d21e9165..f6f79a883 --- a/dpdk/devtools/check-symbol-change.sh +++ b/dpdk/devtools/check-symbol-change.sh @@ -31,6 +31,7 @@ build_map_changes() # Triggering this rule sets in_sec to 1, which actives the # symbol rule below /^.*{/ { + gsub("+", ""); if (in_map == 1) { sec=$(NF-1); in_sec=1; } @@ -96,7 +97,7 @@ check_for_rule_violations() then # Just inform the user of this occurrence, but # don't flag it as an error - echo -n "INFO: symbol $syname is added but " + echo -n "INFO: symbol $symname is added but " echo -n "patch has insuficient context " echo -n "to determine the section name " echo -n "please ensure the version is " @@ -104,26 +105,46 @@ check_for_rule_violations() continue fi - if [ "$secname" != "EXPERIMENTAL" ] + oldsecname=$(sed -n \ + "s#$mname $symname \(.*\) del#\1#p" "$mapdb") + + # A symbol can not enter a non experimental + # section directly + if [ -z "$oldsecname" ] then - # Symbols that are getting added in a section - # other than the experimental section - # to be moving from an already supported - # section or its a violation - grep -q \ - "$mname $symname [^EXPERIMENTAL] del" "$mapdb" - if [ $? -ne 0 ] + if [ "$secname" = 'EXPERIMENTAL' ] then + echo -n "INFO: symbol $symname has " + echo -n "been added to the " + echo -n "EXPERIMENTAL section of the " + echo "version map" + continue + else echo -n "ERROR: symbol $symname " - echo -n "is added in a section " - echo -n "other than the EXPERIMENTAL " + echo -n "is added in the $secname " + echo -n "section, but is expected to " + echo -n "be added in the EXPERIMENTAL " echo "section of the version map" ret=1 + continue fi fi + + # This symbol is moving between two sections (the + # original section is not experimental). + # This can be legit, just warn. + if [ "$oldsecname" != 'EXPERIMENTAL' ] + then + echo -n "INFO: symbol $symname is being " + echo -n "moved from $oldsecname to $secname. " + echo -n "Ensure that it has gone through the " + echo "deprecation process" + continue + fi else - if [ "$secname" != "EXPERIMENTAL" ] + if ! grep -q "$mname $symname .* add" "$mapdb" && \ + [ "$secname" != "EXPERIMENTAL" ] then # Just inform users that non-experimenal # symbols need to go through a deprecation diff --git a/dpdk/devtools/check-symbol-maps.sh b/dpdk/devtools/check-symbol-maps.sh old mode 100644 new mode 100755 diff --git a/dpdk/devtools/checkpatches.sh b/dpdk/devtools/checkpatches.sh index ee8debecf..02d1c303e 100755 --- a/dpdk/devtools/checkpatches.sh +++ b/dpdk/devtools/checkpatches.sh @@ -44,6 +44,8 @@ print_usage () { } check_forbidden_additions() { # + res=0 + # refrain from new additions of rte_panic() and rte_exit() # multiple folders and expressions are separated by spaces awk -v FOLDERS="lib drivers" \ @@ -51,7 +53,8 @@ check_forbidden_additions() { # -v RET_ON_FAIL=1 \ -v MESSAGE='Using rte_panic/rte_exit' \ -f $(dirname $(readlink -e $0))/check-forbidden-tokens.awk \ - "$1" + "$1" || res=1 + # svg figures must be included with wildcard extension # because of png conversion for pdf docs awk -v FOLDERS='doc' \ @@ -59,7 +62,9 @@ check_forbidden_additions() { # -v RET_ON_FAIL=1 \ -v MESSAGE='Using explicit .svg extension instead of .*' \ -f $(dirname $(readlink -e $0))/check-forbidden-tokens.awk \ - "$1" + "$1" || res=1 + + return $res } number=0 diff --git a/dpdk/devtools/test-build.sh b/dpdk/devtools/test-build.sh index 42f4ad003..d37b121ca 100755 --- a/dpdk/devtools/test-build.sh +++ b/dpdk/devtools/test-build.sh @@ -9,6 +9,7 @@ default_path=$PATH # - DPDK_BUILD_TEST_CONFIGS (defconfig1+option1+option2 defconfig2) # - DPDK_DEP_ARCHIVE # - DPDK_DEP_CFLAGS +# - DPDK_DEP_ELF (y/[n]) # - DPDK_DEP_ISAL (y/[n]) # - DPDK_DEP_JSON (y/[n]) # - DPDK_DEP_LDFLAGS @@ -96,6 +97,7 @@ reset_env () unset CROSS unset DPDK_DEP_ARCHIVE unset DPDK_DEP_CFLAGS + unset DPDK_DEP_ELF unset DPDK_DEP_ISAL unset DPDK_DEP_JSON unset DPDK_DEP_LDFLAGS @@ -148,7 +150,7 @@ config () # test "$DPDK_DEP_ARCHIVE" != y || \ sed -ri 's,(RESOURCE_TAR=)n,\1y,' $1/.config test "$DPDK_DEP_ISAL" != y || \ - sed -ri 's,(ISAL_PMD=)n,\1y,' $1/.config + sed -ri 's,(PMD_ISAL=)n,\1y,' $1/.config test "$DPDK_DEP_MLX" != y || \ sed -ri 's,(MLX._PMD=)n,\1y,' $1/.config test "$DPDK_DEP_SZE" != y || \ @@ -156,6 +158,8 @@ config () # test "$DPDK_DEP_ZLIB" != y || \ sed -ri 's,(BNX2X_PMD=)n,\1y,' $1/.config test "$DPDK_DEP_ZLIB" != y || \ + sed -ri 's,(PMD_ZLIB=)n,\1y,' $1/.config + test "$DPDK_DEP_ZLIB" != y || \ sed -ri 's,(COMPRESSDEV_TEST=)n,\1y,' $1/.config test "$DPDK_DEP_PCAP" != y || \ sed -ri 's,(PCAP=)n,\1y,' $1/.config @@ -176,7 +180,7 @@ config () # test "$DPDK_DEP_SSL" != y || \ sed -ri 's,(PMD_OPENSSL=)n,\1y,' $1/.config test "$DPDK_DEP_SSL" != y || \ - sed -ri 's,(PMD_QAT=)n,\1y,' $1/.config + sed -ri 's,(QAT_SYM=)n,\1y,' $1/.config test -z "$FLEXRAN_SDK" || \ sed -ri 's,(BBDEV_TURBO_SW=)n,\1y,' $1/.config sed -ri 's,(SCHED_.*=)n,\1y,' $1/.config @@ -186,7 +190,9 @@ config () # sed -ri 's,(MVPP2_PMD=)n,\1y,' $1/.config test -z "$LIBMUSDK_PATH" || \ sed -ri 's,(MVNETA_PMD=)n,\1y,' $1/.config - test -z "$DPDK_DEP_JSON" || \ + test "$DPDK_DEP_ELF" != y || \ + sed -ri 's,(BPF_ELF=)n,\1y,' $1/.config + test "$DPDK_DEP_JSON" != y || \ sed -ri 's,(TELEMETRY=)n,\1y,' $1/.config build_config_hook $1 $2 $3 diff --git a/dpdk/devtools/test-meson-builds.sh b/dpdk/devtools/test-meson-builds.sh old mode 100644 new mode 100755 index 79109b757..79148ba28 --- a/dpdk/devtools/test-meson-builds.sh +++ b/dpdk/devtools/test-meson-builds.sh @@ -7,7 +7,7 @@ # * if a build-directory already exists we assume it was properly configured # Run ninja after configuration is done. -srcdir=$(dirname $(readlink -m $0))/.. +srcdir=$(dirname $(readlink -f $0))/.. MESON=${MESON:-meson} use_shared="--default-library=shared" @@ -24,7 +24,7 @@ build () # { builddir=$1 shift - if [ ! -d "$builddir" ] ; then + if [ ! -f "$builddir/build.ninja" ] ; then options="--werror -Dexamples=all $*" echo "$MESON $options $srcdir $builddir" $MESON $options $srcdir $builddir @@ -36,6 +36,7 @@ build () # # shared and static linked builds with gcc and clang for c in gcc clang ; do + command -v $c >/dev/null 2>&1 || continue for s in static shared ; do export CC="ccache $c" build build-$c-$s --default-library=$s @@ -43,7 +44,12 @@ for c in gcc clang ; do done # test compilation with minimal x86 instruction set -build build-x86-default -Dmachine=nehalem $use_shared +default_machine='nehalem' +ok=$(cc -march=$default_machine -E - < /dev/null > /dev/null 2>&1 || echo false) +if [ "$ok" = "false" ] ; then + default_machine='corei7' +fi +build build-x86-default -Dmachine=$default_machine $use_shared # enable cross compilation if gcc cross-compiler is found c=aarch64-linux-gnu-gcc diff --git a/dpdk/doc/api/generate_doxygen.sh b/dpdk/doc/api/generate_doxygen.sh old mode 100644 new mode 100755 diff --git a/dpdk/doc/api/generate_examples.sh b/dpdk/doc/api/generate_examples.sh old mode 100644 new mode 100755 diff --git a/dpdk/doc/guides/compressdevs/overview.rst b/dpdk/doc/guides/compressdevs/overview.rst index 70bbe82b7..809e4e6e7 100644 --- a/dpdk/doc/guides/compressdevs/overview.rst +++ b/dpdk/doc/guides/compressdevs/overview.rst @@ -18,7 +18,7 @@ Supported Feature Flags without making any modifications to it (no compression done). - "OOP SGL In SGL Out" feature flag stands for - "Out-of-place Scatter-gather list Input, Scatter-gater list Output", + "Out-of-place Scatter-gather list Input, Scatter-gather list Output", which means PMD supports different scatter-gather styled input and output buffers (i.e. both can consists of multiple segments). diff --git a/dpdk/doc/guides/conf.py b/dpdk/doc/guides/conf.py index c883306d7..a85f6c9d9 100644 --- a/dpdk/doc/guides/conf.py +++ b/dpdk/doc/guides/conf.py @@ -9,6 +9,7 @@ from sphinx import __version__ as sphinx_version from sphinx.highlighting import PygmentsBridge from pygments.formatters.latex import LatexFormatter from os import listdir +from os import environ from os.path import basename from os.path import dirname from os.path import join as path_join @@ -37,7 +38,9 @@ html_add_permalinks = "" html_show_copyright = False highlight_language = 'none' -version = subprocess.check_output(['make', '-sRrC', '../../', 'showversion']) +# If MAKEFLAGS is exported by the user, garbage text might end up in version +version = subprocess.check_output(['make', '-sRrC', '../../', 'showversion'], + env=dict(environ, MAKEFLAGS="")) version = version.decode('utf-8').rstrip() release = version @@ -388,6 +391,11 @@ def setup(app): 'AEAD', 'AEAD algorithms in crypto drivers', 'AEAD algorithm') + table_file = dirname(__file__) + '/cryptodevs/overview_asym_table.txt' + generate_overview_table(table_file, 5, + 'Asymmetric', + 'Asymmetric algorithms in crypto drivers', + 'Asymmetric algorithm') table_file = dirname(__file__) + '/compressdevs/overview_feature_table.txt' generate_overview_table(table_file, 1, 'Features', diff --git a/dpdk/doc/guides/contributing/coding_style.rst b/dpdk/doc/guides/contributing/coding_style.rst index d96698a73..656563dde 100644 --- a/dpdk/doc/guides/contributing/coding_style.rst +++ b/dpdk/doc/guides/contributing/coding_style.rst @@ -825,10 +825,10 @@ format. .. code-block:: python sources = files('file1.c', ...) - headers = files('file1.c', ...) + headers = files('file1.h', ...) -The will build based on a number of conventions and assumptions within the DPDK +This will build based on a number of conventions and assumptions within the DPDK itself, for example, that the library name is the same as the directory name in which the files are stored. diff --git a/dpdk/doc/guides/contributing/documentation.rst b/dpdk/doc/guides/contributing/documentation.rst index c28a95c34..408859e2c 100644 --- a/dpdk/doc/guides/contributing/documentation.rst +++ b/dpdk/doc/guides/contributing/documentation.rst @@ -40,14 +40,14 @@ The main directories that contain files related to documentation are shown below |-- ... -The API documentation is built from `Doxygen `_ comments in the header files. +The API documentation is built from `Doxygen `_ comments in the header files. These files are mainly in the ``lib/librte_*`` directories although some of the Poll Mode Drivers in ``drivers/net`` are also documented with Doxygen. The configuration files that are used to control the Doxygen output are in the ``doc/api`` directory. The user guides such as *The Programmers Guide* and the *FreeBSD* and *Linux Getting Started* Guides are generated -from RST markup text files using the `Sphinx `_ Documentation Generator. +from RST markup text files using the `Sphinx `_ Documentation Generator. These files are included in the ``doc/guides/`` directory. The output is controlled by the ``doc/guides/conf.py`` file. @@ -174,7 +174,8 @@ For full support with figure and table captioning the latest version of Sphinx c sudo pip install --upgrade sphinx sudo pip install --upgrade sphinx_rtd_theme -For further information on getting started with Sphinx see the `Sphinx Tutorial `_. +For further information on getting started with Sphinx see the +`Sphinx Getting Started `_. .. Note:: @@ -204,6 +205,19 @@ The main required packages can be installed as follows: # Red Hat/Fedora, selective install. sudo dnf -y install texlive-collection-latexextra +`Latexmk `_ is a perl script +for running LaTeX for resolving cross references, +and it also runs auxiliary programs like bibtex, makeindex if necessary, and dvips. +It has also a number of other useful capabilities (see man 1 latexmk). + +.. code-block:: console + + # Ubuntu/Debian. + sudo apt-get -y install latexmk + + # Red Hat/Fedora. + sudo dnf -y install latexmk + Build commands ~~~~~~~~~~~~~~ @@ -583,7 +597,7 @@ Doxygen Guidelines The DPDK API is documented using Doxygen comment annotations in the header files. Doxygen is a very powerful tool, it is extremely configurable and with a little effort can be used to create expressive documents. -See the `Doxygen website `_ for full details on how to use it. +See the `Doxygen website `_ for full details on how to use it. The following are some guidelines for use of Doxygen in the DPDK API documentation: diff --git a/dpdk/doc/guides/contributing/patches.rst b/dpdk/doc/guides/contributing/patches.rst index a64bb0368..1bd91b7e7 100644 --- a/dpdk/doc/guides/contributing/patches.rst +++ b/dpdk/doc/guides/contributing/patches.rst @@ -8,7 +8,7 @@ Contributing Code to DPDK This document outlines the guidelines for submitting code to DPDK. -The DPDK development process is modelled (loosely) on the Linux Kernel development model so it is worth reading the +The DPDK development process is modeled (loosely) on the Linux Kernel development model so it is worth reading the Linux kernel guide on submitting patches: `How to Get Your Change Into the Linux Kernel `_. The rationale for many of the DPDK guidelines is explained in greater detail in the kernel guidelines. @@ -32,6 +32,10 @@ The mailing list for DPDK development is `dev@dpdk.org `_ in order to submit patches. It is also worth registering for the DPDK `Patchwork `_ +If you are using the GitHub service, you can link your repository to +the ``travis-ci.org`` build service. When you push patches to your GitHub +repository, the travis service will automatically build your changes. + The development process requires some familiarity with the ``git`` version control system. Refer to the `Pro Git Book `_ for further information. diff --git a/dpdk/doc/guides/contributing/versioning.rst b/dpdk/doc/guides/contributing/versioning.rst index 01b36247e..fe17c7f13 100644 --- a/dpdk/doc/guides/contributing/versioning.rst +++ b/dpdk/doc/guides/contributing/versioning.rst @@ -548,26 +548,29 @@ utilities which can be installed via a package manager. For example:: The syntax of the ``validate-abi.sh`` utility is:: - ./devtools/validate-abi.sh + ./devtools/validate-abi.sh Where ``REV1`` and ``REV2`` are valid gitrevisions(7) https://www.kernel.org/pub/software/scm/git/docs/gitrevisions.html -on the local repo and target is the usual DPDK compilation target. +on the local repo. For example:: # Check between the previous and latest commit: - ./devtools/validate-abi.sh HEAD~1 HEAD x86_64-native-linuxapp-gcc + ./devtools/validate-abi.sh HEAD~1 HEAD + + # Check on a specific compilation target: + ./devtools/validate-abi.sh -t x86_64-native-linux-gcc HEAD~1 HEAD # Check between two tags: - ./devtools/validate-abi.sh v2.0.0 v2.1.0 x86_64-native-linuxapp-gcc + ./devtools/validate-abi.sh v2.0.0 v2.1.0 # Check between git master and local topic-branch "vhost-hacking": - ./devtools/validate-abi.sh master vhost-hacking x86_64-native-linuxapp-gcc + ./devtools/validate-abi.sh master vhost-hacking After the validation script completes (it can take a while since it need to compile both tags) it will create compatibility reports in the -``./compat_report`` directory. Listed incompatibilities can be found as -follows:: +``./abi-check/compat_report`` directory. Listed incompatibilities can be found +as follows:: - grep -lr Incompatible compat_reports/ + grep -lr Incompatible abi-check/compat_reports/ diff --git a/dpdk/doc/guides/cryptodevs/aesni_mb.rst b/dpdk/doc/guides/cryptodevs/aesni_mb.rst index 63e060d75..ccfc137f1 100644 --- a/dpdk/doc/guides/cryptodevs/aesni_mb.rst +++ b/dpdk/doc/guides/cryptodevs/aesni_mb.rst @@ -1,5 +1,5 @@ .. SPDX-License-Identifier: BSD-3-Clause - Copyright(c) 2015-2017 Intel Corporation. + Copyright(c) 2015-2018 Intel Corporation. AESN-NI Multi Buffer Crypto Poll Mode Driver ============================================ @@ -51,6 +51,8 @@ Limitations * Chained mbufs are not supported. * Only in-place is currently supported (destination address is the same as source address). +* RTE_CRYPTO_AEAD_AES_GCM only works properly when the multi-buffer library is + 0.51.0 or newer. Installation @@ -59,8 +61,8 @@ Installation To build DPDK with the AESNI_MB_PMD the user is required to download the multi-buffer library from `here `_ and compile it on their user system before building DPDK. -The latest version of the library supported by this PMD is v0.50, which -can be downloaded from ``_. +The latest version of the library supported by this PMD is v0.51, which +can be downloaded from ``. .. code-block:: console @@ -123,7 +125,7 @@ Extra notes For AES Counter mode (AES-CTR), the library supports two different sizes for Initialization Vector (IV): -* 12 bytes: used mainly for IPSec, as it requires 12 bytes from the user, which internally +* 12 bytes: used mainly for IPsec, as it requires 12 bytes from the user, which internally are appended the counter block (4 bytes), which is set to 1 for the first block (no padding required from the user) diff --git a/dpdk/doc/guides/cryptodevs/features/aesni_gcm.ini b/dpdk/doc/guides/cryptodevs/features/aesni_gcm.ini index b9e9c9060..fdd3df690 100644 --- a/dpdk/doc/guides/cryptodevs/features/aesni_gcm.ini +++ b/dpdk/doc/guides/cryptodevs/features/aesni_gcm.ini @@ -30,3 +30,8 @@ AES GMAC = Y AES GCM (128) = Y AES GCM (192) = Y AES GCM (256) = Y + +; +; Supported Asymmetric algorithms of the 'aesni_gcm' crypto driver. +; +[Asymmetric] \ No newline at end of file diff --git a/dpdk/doc/guides/cryptodevs/features/aesni_mb.ini b/dpdk/doc/guides/cryptodevs/features/aesni_mb.ini index f72957451..9b4428ef0 100644 --- a/dpdk/doc/guides/cryptodevs/features/aesni_mb.ini +++ b/dpdk/doc/guides/cryptodevs/features/aesni_mb.ini @@ -32,16 +32,30 @@ DES DOCSIS BPI = Y ; [Auth] MD5 HMAC = Y +SHA1 = Y SHA1 HMAC = Y +SHA224 = Y SHA224 HMAC = Y +SHA256 = Y SHA256 HMAC = Y +SHA384 = Y SHA384 HMAC = Y +SHA512 = Y SHA512 HMAC = Y AES XCBC MAC = Y AES CMAC (128) = Y +AES GMAC = Y ; ; Supported AEAD algorithms of the 'aesni_mb' crypto driver. ; [AEAD] AES CCM (128) = Y +AES GCM (128) = Y +AES GCM (192) = Y +AES GCM (256) = Y + +; +; Supported Asymmetric algorithms of the 'aesni_mb' crypto driver. +; +[Asymmetric] diff --git a/dpdk/doc/guides/cryptodevs/features/armv8.ini b/dpdk/doc/guides/cryptodevs/features/armv8.ini index 1e1047714..e588f9021 100644 --- a/dpdk/doc/guides/cryptodevs/features/armv8.ini +++ b/dpdk/doc/guides/cryptodevs/features/armv8.ini @@ -26,3 +26,8 @@ SHA256 HMAC = Y ; Supported AEAD algorithms of the 'armv8' crypto driver. ; [AEAD] + +; +; Supported Asymmetric algorithms of the 'armv8' crypto driver. +; +[Asymmetric] diff --git a/dpdk/doc/guides/cryptodevs/features/caam_jr.ini b/dpdk/doc/guides/cryptodevs/features/caam_jr.ini index 68f8d8195..c64bd35da 100644 --- a/dpdk/doc/guides/cryptodevs/features/caam_jr.ini +++ b/dpdk/doc/guides/cryptodevs/features/caam_jr.ini @@ -44,3 +44,8 @@ SHA512 HMAC = Y AES GCM (128) = Y AES GCM (192) = Y AES GCM (256) = Y + +; +; Supported Asymmetric algorithms of the 'dpaa2_sec' crypto driver. +; +[Asymmetric] \ No newline at end of file diff --git a/dpdk/doc/guides/cryptodevs/features/ccp.ini b/dpdk/doc/guides/cryptodevs/features/ccp.ini index 4722e135d..2970076b8 100644 --- a/dpdk/doc/guides/cryptodevs/features/ccp.ini +++ b/dpdk/doc/guides/cryptodevs/features/ccp.ini @@ -57,3 +57,8 @@ SHA3_512 HMAC = Y AES GCM (128) = Y AES GCM (192) = Y AES GCM (256) = Y + +; +; Supported Asymmetric algorithms of the 'ccp' crypto driver. +; +[Asymmetric] \ No newline at end of file diff --git a/dpdk/doc/guides/cryptodevs/features/default.ini b/dpdk/doc/guides/cryptodevs/features/default.ini index 810da0d7d..73ec389ba 100644 --- a/dpdk/doc/guides/cryptodevs/features/default.ini +++ b/dpdk/doc/guides/cryptodevs/features/default.ini @@ -95,3 +95,12 @@ AES GCM (256) = AES CCM (128) = AES CCM (192) = AES CCM (256) = +; +; Supported Asymmetric algorithms of a default crypto driver. +; +[Asymmetric] +RSA = +DSA = +Modular Exponentiation = +Modular Inversion = +Diffie-hellman = \ No newline at end of file diff --git a/dpdk/doc/guides/cryptodevs/features/dpaa2_sec.ini b/dpdk/doc/guides/cryptodevs/features/dpaa2_sec.ini index 69700df40..9f4e4029c 100644 --- a/dpdk/doc/guides/cryptodevs/features/dpaa2_sec.ini +++ b/dpdk/doc/guides/cryptodevs/features/dpaa2_sec.ini @@ -44,3 +44,8 @@ SHA512 HMAC = Y AES GCM (128) = Y AES GCM (192) = Y AES GCM (256) = Y + +; +; Supported Asymmetric algorithms of the 'dpaa2_sec' crypto driver. +; +[Asymmetric] \ No newline at end of file diff --git a/dpdk/doc/guides/cryptodevs/features/dpaa_sec.ini b/dpdk/doc/guides/cryptodevs/features/dpaa_sec.ini index 937b621c0..954a70808 100644 --- a/dpdk/doc/guides/cryptodevs/features/dpaa_sec.ini +++ b/dpdk/doc/guides/cryptodevs/features/dpaa_sec.ini @@ -44,3 +44,8 @@ SHA512 HMAC = Y AES GCM (128) = Y AES GCM (192) = Y AES GCM (256) = Y + +; +; Supported Asymmetric algorithms of the 'dpaa_sec' crypto driver. +; +[Asymmetric] \ No newline at end of file diff --git a/dpdk/doc/guides/cryptodevs/features/kasumi.ini b/dpdk/doc/guides/cryptodevs/features/kasumi.ini index 0e138f5a6..f3d061009 100644 --- a/dpdk/doc/guides/cryptodevs/features/kasumi.ini +++ b/dpdk/doc/guides/cryptodevs/features/kasumi.ini @@ -22,3 +22,8 @@ KASUMI F9 = Y ; Supported AEAD algorithms of the 'kasumi' crypto driver. ; [AEAD] + +; +; Supported Asymmetric algorithms of the 'kasumi' crypto driver. +; +[Asymmetric] \ No newline at end of file diff --git a/dpdk/doc/guides/cryptodevs/features/mvsam.ini b/dpdk/doc/guides/cryptodevs/features/mvsam.ini index 0cc90a53d..829deff68 100644 --- a/dpdk/doc/guides/cryptodevs/features/mvsam.ini +++ b/dpdk/doc/guides/cryptodevs/features/mvsam.ini @@ -52,3 +52,8 @@ AES GMAC = Y AES GCM (128) = Y AES GCM (192) = Y AES GCM (256) = Y + +; +; Supported Asymmetric algorithms of the 'mvsam' crypto driver. +; +[Asymmetric] \ No newline at end of file diff --git a/dpdk/doc/guides/cryptodevs/features/null.ini b/dpdk/doc/guides/cryptodevs/features/null.ini index ecf5779ac..a1c3e22a3 100644 --- a/dpdk/doc/guides/cryptodevs/features/null.ini +++ b/dpdk/doc/guides/cryptodevs/features/null.ini @@ -24,3 +24,8 @@ NULL = Y ; Supported AEAD algorithms of the 'null' crypto driver. ; [AEAD] + +; +; Supported Asymmetric algorithms of the 'null' crypto driver. +; +[Asymmetric] \ No newline at end of file diff --git a/dpdk/doc/guides/cryptodevs/features/octeontx.ini b/dpdk/doc/guides/cryptodevs/features/octeontx.ini index 307ab88cc..1735b8f5a 100644 --- a/dpdk/doc/guides/cryptodevs/features/octeontx.ini +++ b/dpdk/doc/guides/cryptodevs/features/octeontx.ini @@ -60,3 +60,8 @@ ZUC EIA3 = Y AES GCM (128) = Y AES GCM (192) = Y AES GCM (256) = Y + +; +; Supported Asymmetric algorithms of the 'octeontx' crypto driver. +; +[Asymmetric] \ No newline at end of file diff --git a/dpdk/doc/guides/cryptodevs/features/qat.ini b/dpdk/doc/guides/cryptodevs/features/qat.ini index 4f15ee0e8..7955d8841 100644 --- a/dpdk/doc/guides/cryptodevs/features/qat.ini +++ b/dpdk/doc/guides/cryptodevs/features/qat.ini @@ -60,3 +60,8 @@ AES GCM (256) = Y AES CCM (128) = Y AES CCM (192) = Y AES CCM (256) = Y + +; +; Supported Asymmetric algorithms of the 'qat' crypto driver. +; +[Asymmetric] diff --git a/dpdk/doc/guides/cryptodevs/features/snow3g.ini b/dpdk/doc/guides/cryptodevs/features/snow3g.ini index 277136177..ec2daf6c6 100644 --- a/dpdk/doc/guides/cryptodevs/features/snow3g.ini +++ b/dpdk/doc/guides/cryptodevs/features/snow3g.ini @@ -22,3 +22,8 @@ SNOW3G UIA2 = Y ; Supported AEAD algorithms of the 'snow3g' crypto driver. ; [AEAD] + +; +; Supported Asymmetric algorithms of the 'snow3g' crypto driver. +; +[Asymmetric] \ No newline at end of file diff --git a/dpdk/doc/guides/cryptodevs/features/virtio.ini b/dpdk/doc/guides/cryptodevs/features/virtio.ini index 168fc174c..b59f1669b 100644 --- a/dpdk/doc/guides/cryptodevs/features/virtio.ini +++ b/dpdk/doc/guides/cryptodevs/features/virtio.ini @@ -24,3 +24,8 @@ SHA1 HMAC = Y ; Supported AEAD algorithms of the 'virtio' crypto driver. ; [AEAD] + +; +; Supported Asymmetric algorithms of the 'virtio' crypto driver. +; +[Asymmetric] diff --git a/dpdk/doc/guides/cryptodevs/features/zuc.ini b/dpdk/doc/guides/cryptodevs/features/zuc.ini index 5bb02afd4..9b6a4287e 100644 --- a/dpdk/doc/guides/cryptodevs/features/zuc.ini +++ b/dpdk/doc/guides/cryptodevs/features/zuc.ini @@ -22,3 +22,8 @@ ZUC EIA3 = Y ; Supported AEAD algorithms of the 'zuc' crypto driver. ; [AEAD] + +; +; Supported Asymmetric algorithms of the 'zuc' crypto driver. +; +[Asymmetric] diff --git a/dpdk/doc/guides/cryptodevs/openssl.rst b/dpdk/doc/guides/cryptodevs/openssl.rst index bdc30f66f..2ac8090cc 100644 --- a/dpdk/doc/guides/cryptodevs/openssl.rst +++ b/dpdk/doc/guides/cryptodevs/openssl.rst @@ -46,6 +46,14 @@ Supported AEAD algorithms: * ``RTE_CRYPTO_AEAD_AES_GCM`` * ``RTE_CRYPTO_AEAD_AES_CCM`` +Supported Asymmetric Crypto algorithms: + +* ``RTE_CRYPTO_ASYM_XFORM_RSA`` +* ``RTE_CRYPTO_ASYM_XFORM_DSA`` +* ``RTE_CRYPTO_ASYM_XFORM_DH`` +* ``RTE_CRYPTO_ASYM_XFORM_MODINV`` +* ``RTE_CRYPTO_ASYM_XFORM_MODEX`` + Installation ------------ diff --git a/dpdk/doc/guides/cryptodevs/overview.rst b/dpdk/doc/guides/cryptodevs/overview.rst index 607e758da..f9f8c7bec 100644 --- a/dpdk/doc/guides/cryptodevs/overview.rst +++ b/dpdk/doc/guides/cryptodevs/overview.rst @@ -18,7 +18,7 @@ Supported Feature Flags being the operation in-place (input address = output address). - "OOP SGL In SGL Out" feature flag stands for - "Out-of-place Scatter-gather list Input, Scatter-gater list Output", + "Out-of-place Scatter-gather list Input, Scatter-gather list Output", which means pmd supports different scatter-gather styled input and output buffers (i.e. both can consists of multiple segments). @@ -58,3 +58,10 @@ Supported AEAD Algorithms .. _table_crypto_pmd_aead_algos: .. include:: overview_aead_table.txt + +Supported Asymmetric Algorithms +------------------------------- + +.. _table_crypto_pmd_asym_algos: + +.. include:: overview_asym_table.txt diff --git a/dpdk/doc/guides/cryptodevs/qat.rst b/dpdk/doc/guides/cryptodevs/qat.rst index 9fb9f01d1..3ca70bc05 100644 --- a/dpdk/doc/guides/cryptodevs/qat.rst +++ b/dpdk/doc/guides/cryptodevs/qat.rst @@ -79,10 +79,9 @@ Limitations * SNOW 3G (UIA2) and ZUC (EIA3) supported only if hash length and offset fields are byte-multiple. * No BSD support as BSD QAT kernel driver not available. * ZUC EEA3/EIA3 is not supported by dh895xcc devices -* Maximum additional authenticated data (AAD) for GCM is 240 bytes long. +* Maximum additional authenticated data (AAD) for GCM is 240 bytes long and must be passed to the device in a buffer rounded up to the nearest block-size multiple (x16) and padded with zeros. * Queue pairs are not thread-safe (that is, within a single queue pair, RX and TX from different lcores is not supported). - Extra notes on KASUMI F9 ~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/dpdk/doc/guides/cryptodevs/scheduler.rst b/dpdk/doc/guides/cryptodevs/scheduler.rst index a754a27e6..7004ca431 100644 --- a/dpdk/doc/guides/cryptodevs/scheduler.rst +++ b/dpdk/doc/guides/cryptodevs/scheduler.rst @@ -165,7 +165,7 @@ operation: For pure small packet size (64 bytes) traffic however the multi-core mode is not an optimal solution, as it doesn't give significant per-core performance improvement. For mixed traffic (IMIX) the optimal number of worker cores is around 2-3. - For large packets (1.5 Kbytes) scheduler shows linear scaling in performance + For large packets (1.5 kbytes) scheduler shows linear scaling in performance up to eight cores. Each worker uses its own slave cryptodev. Only software cryptodevs are supported. Only the same type of cryptodevs should be used concurrently. diff --git a/dpdk/doc/guides/eventdevs/opdl.rst b/dpdk/doc/guides/eventdevs/opdl.rst index 0262a337a..979f6cd8d 100644 --- a/dpdk/doc/guides/eventdevs/opdl.rst +++ b/dpdk/doc/guides/eventdevs/opdl.rst @@ -8,7 +8,7 @@ The OPDL (Ordered Packet Distribution Library) eventdev is a specific\ implementation of the eventdev API. It is particularly suited to packet\ processing workloads that have high throughput and low latency requirements.\ All packets follow the same path through the device. The order in which\ -packets follow is determinted by the order in which queues are set up.\ +packets follow is determined by the order in which queues are set up.\ Events are left on the ring until they are transmitted. As a result packets\ do not go out of order diff --git a/dpdk/doc/guides/eventdevs/sw.rst b/dpdk/doc/guides/eventdevs/sw.rst index afdcad760..04c8b0305 100644 --- a/dpdk/doc/guides/eventdevs/sw.rst +++ b/dpdk/doc/guides/eventdevs/sw.rst @@ -70,7 +70,7 @@ Credit Quanta The credit quanta is the number of credits that a port will fetch at a time from the instance's credit pool. Higher numbers will cause less overhead in the atomic credit fetch code, however it also reduces the overall number of credits -in the system faster. A balanced number (eg 32) ensures that only small numbers +in the system faster. A balanced number (e.g. 32) ensures that only small numbers of credits are pre-allocated at a time, while also mitigating performance impact of the atomics. @@ -100,7 +100,7 @@ feature would be significant. ~~~~~~~~~~~~~~~~~~ The software eventdev does not support creating queues that handle all types of -traffic. An eventdev with this capability allows enqueueing Atomic, Ordered and +traffic. An eventdev with this capability allows enqueuing Atomic, Ordered and Parallel traffic to the same queue, but scheduling each of them appropriately. The reason to not allow Atomic, Ordered and Parallel event types in the diff --git a/dpdk/doc/guides/howto/lm_bond_virtio_sriov.rst b/dpdk/doc/guides/howto/lm_bond_virtio_sriov.rst index a47d6dbf8..4e5ef4d56 100644 --- a/dpdk/doc/guides/howto/lm_bond_virtio_sriov.rst +++ b/dpdk/doc/guides/howto/lm_bond_virtio_sriov.rst @@ -328,7 +328,7 @@ On host_server_2: Terminal 1 .. code-block:: console - testomd> show port info all + testpmd> show port info all testpmd> show port stats all testpmd> show bonding config 2 testpmd> port attach 0000:00:04.0 diff --git a/dpdk/doc/guides/howto/lm_virtio_vhost_user.rst b/dpdk/doc/guides/howto/lm_virtio_vhost_user.rst index 3f5ebd58a..019c124d4 100644 --- a/dpdk/doc/guides/howto/lm_virtio_vhost_user.rst +++ b/dpdk/doc/guides/howto/lm_virtio_vhost_user.rst @@ -243,7 +243,7 @@ On host_server_2: Terminal 1 .. code-block:: console - testomd> show port info all + testpmd> show port info all testpmd> show port stats all Virtio traffic is seen at P0 and P1. @@ -338,7 +338,7 @@ reset_vf_on_212_131.sh #!/bin/sh # This script is run on the host 10.237.212.131 to reset SRIOV - # BDF for Ninatic NIC is 0000:06:00.0 + # BDF for Niantic NIC is 0000:06:00.0 cat /sys/bus/pci/devices/0000\:06\:00.0/max_vfs echo 0 > /sys/bus/pci/devices/0000\:06\:00.0/max_vfs cat /sys/bus/pci/devices/0000\:06\:00.0/max_vfs diff --git a/dpdk/doc/guides/howto/rte_flow.rst b/dpdk/doc/guides/howto/rte_flow.rst index 6a8534d98..e080570e9 100644 --- a/dpdk/doc/guides/howto/rte_flow.rst +++ b/dpdk/doc/guides/howto/rte_flow.rst @@ -23,7 +23,7 @@ In this example we will create a simple rule that drops packets whose IPv4 destination equals 192.168.3.2. This code is equivalent to the following testpmd command (wrapped for clarity):: - tpmd> flow create 0 ingress pattern eth / vlan / + testpmd> flow create 0 ingress pattern eth / vlan / ipv4 dst is 192.168.3.2 / end actions drop / end Code @@ -118,7 +118,7 @@ a mask. This code is equivalent to the following testpmd command (wrapped for clarity):: - tpmd> flow create 0 ingress pattern eth / vlan / + testpmd> flow create 0 ingress pattern eth / vlan / ipv4 dst spec 192.168.3.0 dst mask 255.255.255.0 / end actions drop / end @@ -219,7 +219,7 @@ In this example we will create a rule that routes all vlan id 123 to queue 3. This code is equivalent to the following testpmd command (wrapped for clarity):: - tpmd> flow create 0 ingress pattern eth / vlan vid spec 123 / + testpmd> flow create 0 ingress pattern eth / vlan vid spec 123 / end actions queue index 3 / end Code diff --git a/dpdk/doc/guides/howto/virtio_user_as_exceptional_path.rst b/dpdk/doc/guides/howto/virtio_user_as_exceptional_path.rst index 4910c12df..ec021af39 100644 --- a/dpdk/doc/guides/howto/virtio_user_as_exceptional_path.rst +++ b/dpdk/doc/guides/howto/virtio_user_as_exceptional_path.rst @@ -1,7 +1,7 @@ .. SPDX-License-Identifier: BSD-3-Clause Copyright(c) 2016 Intel Corporation. -.. _virtio_user_as_excpetional_path: +.. _virtio_user_as_exceptional_path: Virtio_user as Exceptional Path =============================== @@ -22,7 +22,7 @@ solution is very promising in: * Features vhost-net is born to be a networking solution, which has lots of networking - related featuers, like multi queue, tso, multi-seg mbuf, etc. + related features, like multi queue, tso, multi-seg mbuf, etc. * Performance @@ -38,7 +38,7 @@ in :numref:`figure_virtio_user_as_exceptional_path`. .. figure:: img/virtio_user_as_exceptional_path.* - Overview of a DPDK app using virtio-user as excpetional path + Overview of a DPDK app using virtio-user as exceptional path Sample Usage @@ -75,7 +75,7 @@ compiling the kernel and those kernel modules should be inserted. * ``queues`` - Number of multi-queues. Each qeueue will be served by a kthread. For example: + Number of multi-queues. Each queue will be served by a kthread. For example: .. code-block:: console diff --git a/dpdk/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst b/dpdk/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst index 9d1f0fa00..fd7a46c80 100644 --- a/dpdk/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst +++ b/dpdk/doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst @@ -14,25 +14,25 @@ This chapter describes how to cross compile DPDK for ARM64 from x86 build hosts. Obtain the cross tool chain --------------------------- The latest cross compile tool chain can be downloaded from: -https://releases.linaro.org/components/toolchain/binaries/latest/aarch64-linux-gnu/. +https://developer.arm.com/open-source/gnu-toolchain/gnu-a/downloads. -Following is the step to get the version 7.2.1, latest one at the time of this writing. +Following is the step to get the version 8.2, latest one at the time of this writing. .. code-block:: console - wget https://releases.linaro.org/components/toolchain/binaries/latest/aarch64-linux-gnu/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu.tar.xz + wget https://developer.arm.com/-/media/Files/downloads/gnu-a/8.2-2019.01/gcc-arm-8.2-2019.01-x86_64-aarch64-linux-gnu.tar.xz Unzip and add into the PATH --------------------------- .. code-block:: console - tar -xvf gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu.tar.xz - export PATH=$PATH:/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu/bin + tar -xvf gcc-arm-8.2-2019.01-x86_64-aarch64-linux-gnu.tar.xz + export PATH=$PATH:/gcc-arm-8.2-2019.01-x86_64-aarch64-linux-gnu/bin .. note:: - For the host requirements and other info, refer to the release note section: https://releases.linaro.org/components/toolchain/binaries/latest/ + For the host requirements and other info, refer to the release note section: https://releases.linaro.org/components/toolchain/binaries/ Getting the prerequisite library -------------------------------- @@ -69,8 +69,8 @@ Copy the NUMA header files and lib to the cross compiler's directories: .. code-block:: console - cp /include/numa*.h /gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu/bin/../aarch64-linux-gnu/libc/usr/include/ - cp /lib/libnuma.a /gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/7.2.1/ + cp /include/numa*.h /gcc-arm-8.2-2019.01-x86_64-aarch64-linux-gnu/bin/../aarch64-linux-gnu/libc/usr/include/ + cp /lib/libnuma.a /gcc-arm-8.2-2019.01-x86_64-aarch64-linux-gnu/lib/gcc/aarch64-linux-gnu/8.2/ .. _configure_and_cross_compile_dpdk_build: diff --git a/dpdk/doc/guides/linux_gsg/sys_reqs.rst b/dpdk/doc/guides/linux_gsg/sys_reqs.rst index 29c5f47a5..735bc6ee5 100644 --- a/dpdk/doc/guides/linux_gsg/sys_reqs.rst +++ b/dpdk/doc/guides/linux_gsg/sys_reqs.rst @@ -70,6 +70,15 @@ Compilation of the DPDK * libnuma-dev in Debian/Ubuntu; + .. note:: + + On systems with NUMA support, `libnuma-dev` (aka `numactl-devel`) + is a recommended dependency when `--legacy-mem` switch is used, + and a *required* dependency if default memory mode is used. + While DPDK will compile and run without `libnuma` + even on NUMA-enabled systems, + both usability and performance will be degraded. + * Python, version 2.7+ or 3.2+, to use various helper scripts included in the DPDK package. @@ -175,7 +184,7 @@ In the case of a dual-socket NUMA system, the number of hugepages reserved at boot time is generally divided equally between the two sockets (on the assumption that sufficient memory is present on both sockets). -See the Documentation/kernel-parameters.txt file in your Linux source tree for further details of these and other kernel options. +See the Documentation/admin-guide/kernel-parameters.txt file in your Linux source tree for further details of these and other kernel options. **Alternative:** diff --git a/dpdk/doc/guides/nics/atlantic.rst b/dpdk/doc/guides/nics/atlantic.rst index 80591b13c..f6f2c66bf 100644 --- a/dpdk/doc/guides/nics/atlantic.rst +++ b/dpdk/doc/guides/nics/atlantic.rst @@ -18,7 +18,7 @@ Supported features - Port statistics - RSS (Receive Side Scaling) - Checksum offload -- Jumbo Frame upto 16K +- Jumbo Frame up to 16K Configuration Information ^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/dpdk/doc/guides/nics/cxgbe.rst b/dpdk/doc/guides/nics/cxgbe.rst index 58d88eef5..39106274e 100644 --- a/dpdk/doc/guides/nics/cxgbe.rst +++ b/dpdk/doc/guides/nics/cxgbe.rst @@ -126,7 +126,7 @@ enabling debugging options may affect system performance. - ``CONFIG_RTE_LIBRTE_CXGBE_TPUT`` (default **y**) - Toggle behaviour to prefer Throughput or Latency. + Toggle behavior to prefer Throughput or Latency. Runtime Options ~~~~~~~~~~~~~~~ @@ -140,7 +140,7 @@ be passed as part of EAL arguments. For example, - ``keep_ovlan`` (default **0**) - Toggle behaviour to keep/strip outer VLAN in Q-in-Q packets. If + Toggle behavior to keep/strip outer VLAN in Q-in-Q packets. If enabled, the outer VLAN tag is preserved in Q-in-Q packets. Otherwise, the outer VLAN tag is stripped in Q-in-Q packets. diff --git a/dpdk/doc/guides/nics/dpaa.rst b/dpdk/doc/guides/nics/dpaa.rst index 2173673b9..5900ed0df 100644 --- a/dpdk/doc/guides/nics/dpaa.rst +++ b/dpdk/doc/guides/nics/dpaa.rst @@ -251,7 +251,7 @@ state during application initialization: automatically be assigned from the these high perf PUSH queues. Any queue configuration beyond that will be standard Rx queues. The application can choose to change their number if HW portals are limited. - The valid values are from '0' to '4'. The valuse shall be set to '0' if the + The valid values are from '0' to '4'. The values shall be set to '0' if the application want to use eventdev with DPAA device. diff --git a/dpdk/doc/guides/nics/dpaa2.rst b/dpdk/doc/guides/nics/dpaa2.rst index 769dc4e12..04370e4cd 100644 --- a/dpdk/doc/guides/nics/dpaa2.rst +++ b/dpdk/doc/guides/nics/dpaa2.rst @@ -379,7 +379,7 @@ active -- Ethernet, crypto, compression, etc. DPBP based Mempool driver ~~~~~~~~~~~~~~~~~~~~~~~~~ -The DPBP driver is bound to a DPBP objects and provides sevices to +The DPBP driver is bound to a DPBP objects and provides services to create a hardware offloaded packet buffer mempool. DPAA2 NIC Driver diff --git a/dpdk/doc/guides/nics/enetc.rst b/dpdk/doc/guides/nics/enetc.rst index 8038bf205..376768d39 100644 --- a/dpdk/doc/guides/nics/enetc.rst +++ b/dpdk/doc/guides/nics/enetc.rst @@ -69,7 +69,7 @@ Supported ENETC SoCs Prerequisites ~~~~~~~~~~~~~ -There are three main pre-requisities for executing ENETC PMD on a ENETC +There are three main pre-requisites for executing ENETC PMD on a ENETC compatible board: 1. **ARM 64 Tool Chain** diff --git a/dpdk/doc/guides/nics/enic.rst b/dpdk/doc/guides/nics/enic.rst index bc38f51aa..c1b83b9b6 100644 --- a/dpdk/doc/guides/nics/enic.rst +++ b/dpdk/doc/guides/nics/enic.rst @@ -224,7 +224,7 @@ the use of SR-IOV. passthrough devices do not require libvirt, port profiles, and VM-FEX. -.. _enic-genic-flow-api: +.. _enic-generic-flow-api: Generic Flow API support ------------------------ @@ -247,7 +247,7 @@ Generic Flow API is supported. The baseline support is: in the pattern. - Attributes: ingress - - Items: eth, ipv4, ipv6, udp, tcp, vxlan, inner eth, ipv4, ipv6, udp, tcp + - Items: eth, vlan, ipv4, ipv6, udp, tcp, vxlan, inner eth, vlan, ipv4, ipv6, udp, tcp - Actions: queue and void - Selectors: 'is', 'spec' and 'mask'. 'last' is not supported - In total, up to 64 bytes of mask is allowed across all headers @@ -255,7 +255,7 @@ Generic Flow API is supported. The baseline support is: - **1300 and later series VICS with advanced filters enabled** - Attributes: ingress - - Items: eth, ipv4, ipv6, udp, tcp, vxlan, inner eth, ipv4, ipv6, udp, tcp + - Items: eth, vlan, ipv4, ipv6, udp, tcp, vxlan, inner eth, vlan, ipv4, ipv6, udp, tcp - Actions: queue, mark, drop, flag and void - Selectors: 'is', 'spec' and 'mask'. 'last' is not supported - In total, up to 64 bytes of mask is allowed across all headers @@ -266,6 +266,12 @@ Generic Flow API is supported. The baseline support is: - Action: count +The VIC performs packet matching after applying VLAN strip. If VLAN +stripping is enabled, EtherType in the ETH item corresponds to the +stripped VLAN header's EtherType. Stripping does not affect the VLAN +item. TCI and EtherType in the VLAN item are matched against those in +the (stripped) VLAN header whether stripping is enabled or disabled. + More features may be added in future firmware and new versions of the VIC. Please refer to the release notes. @@ -450,6 +456,7 @@ PKT_RX_VLAN_STRIPPED mbuf flags would not be set. This mode is enabled with the 1000 for 1300 series VICs). Filters are checked for matching in the order they were added. Since there currently is no grouping or priority support, 'catch-all' filters should be added last. + - The supported range of IDs for the 'MARK' action is 0 - 0xFFFD. - **Statistics** diff --git a/dpdk/doc/guides/nics/features.rst b/dpdk/doc/guides/nics/features.rst index d3f904839..d57ddc2ff 100644 --- a/dpdk/doc/guides/nics/features.rst +++ b/dpdk/doc/guides/nics/features.rst @@ -285,7 +285,7 @@ Inner RSS Supports RX RSS hashing on Inner headers. -* **[users] rte_flow_action_rss**: ``level``. +* **[uses] rte_flow_action_rss**: ``level``. * **[provides] mbuf**: ``mbuf.ol_flags:PKT_RX_RSS_HASH``, ``mbuf.rss``. @@ -495,7 +495,7 @@ Supports adding traffic mirroring rules. Inline crypto ------------- -Supports inline crypto processing (eg. inline IPsec). See Security library and PMD documentation for more details. +Supports inline crypto processing (e.g. inline IPsec). See Security library and PMD documentation for more details. * **[uses] rte_eth_rxconf,rte_eth_rxmode**: ``offloads:DEV_RX_OFFLOAD_SECURITY``, * **[uses] rte_eth_txconf,rte_eth_txmode**: ``offloads:DEV_TX_OFFLOAD_SECURITY``. diff --git a/dpdk/doc/guides/nics/features/qede.ini b/dpdk/doc/guides/nics/features/qede.ini index 0d0810021..f69e4f843 100644 --- a/dpdk/doc/guides/nics/features/qede.ini +++ b/dpdk/doc/guides/nics/features/qede.ini @@ -23,6 +23,7 @@ N-tuple filter = Y Tunnel filter = Y Flow director = Y Flow control = Y +Flow API = Y CRC offload = Y VLAN offload = Y L3 checksum offload = Y diff --git a/dpdk/doc/guides/nics/i40e.rst b/dpdk/doc/guides/nics/i40e.rst index bfacbd117..62e90d9fd 100644 --- a/dpdk/doc/guides/nics/i40e.rst +++ b/dpdk/doc/guides/nics/i40e.rst @@ -571,7 +571,7 @@ bandwidth setting. TC TX scheduling mode setting ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -There're 2 TX scheduling modes for TCs, round robin and strict priority mode. +There are 2 TX scheduling modes for TCs, round robin and strict priority mode. If a TC is set to strict priority mode, it can consume unlimited bandwidth. It means if APP has set the max bandwidth for that TC, it comes to no effect. @@ -695,3 +695,9 @@ See :numref:`figure_intel_perf_test_setup` for the performance test setup. * Start creating a stream on packet generator. * Set the Ethernet II type to 0x0800. + +Tx bytes affected by the link status change +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +For firmware versions prior to 6.01 for X710 series and 3.33 for X722 series, the tx_bytes statistics data is affected by +the link down event. Each time the link status changes to down, the tx_bytes decreases 110 bytes. diff --git a/dpdk/doc/guides/nics/ifc.rst b/dpdk/doc/guides/nics/ifc.rst index 48f9adf1d..08fe1d232 100644 --- a/dpdk/doc/guides/nics/ifc.rst +++ b/dpdk/doc/guides/nics/ifc.rst @@ -19,9 +19,9 @@ Config File Options The following option can be modified in the ``config`` file. -- ``CONFIG_RTE_LIBRTE_IFCVF_VDPA_PMD`` (default ``y`` for linux) +- ``CONFIG_RTE_LIBRTE_IFC_PMD`` (default ``y`` for linux) - Toggle compilation of the ``librte_ifcvf_vdpa`` driver. + Toggle compilation of the ``librte_pmd_ifc`` driver. IFCVF vDPA Implementation diff --git a/dpdk/doc/guides/nics/ixgbe.rst b/dpdk/doc/guides/nics/ixgbe.rst index 1c294b06a..975143f8b 100644 --- a/dpdk/doc/guides/nics/ixgbe.rst +++ b/dpdk/doc/guides/nics/ixgbe.rst @@ -203,8 +203,8 @@ as a workaround. X550 does not support legacy interrupt mode ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Desccription -^^^^^^^^^^^^ +Description +^^^^^^^^^^^ X550 cannot get interrupts if using ``uio_pci_generic`` module or using legacy interrupt mode of ``igb_uio`` or ``vfio``. Because the errata of X550 states that the Interrupt Status bit is not implemented. The errata is the item #22 diff --git a/dpdk/doc/guides/nics/kni.rst b/dpdk/doc/guides/nics/kni.rst index 204fbd563..c4fc96373 100644 --- a/dpdk/doc/guides/nics/kni.rst +++ b/dpdk/doc/guides/nics/kni.rst @@ -64,7 +64,7 @@ backend device by default. PMD arguments ------------- -``no_request_thread``, by default PMD creates a phtread for each KNI interface +``no_request_thread``, by default PMD creates a pthread for each KNI interface to handle Linux network interface control commands, like ``ifconfig kni0 up`` With ``no_request_thread`` option, pthread is not created and control commands diff --git a/dpdk/doc/guides/nics/mlx5.rst b/dpdk/doc/guides/nics/mlx5.rst index 23f0f5700..31238ae35 100644 --- a/dpdk/doc/guides/nics/mlx5.rst +++ b/dpdk/doc/guides/nics/mlx5.rst @@ -85,6 +85,11 @@ Limitations - Forked secondary process not supported. - All mempools must be initialized before rte_eth_dev_start(). + - External memory unregistered in EAL memseg list cannot be used for DMA + unless such memory has been registered by ``mlx5_mr_update_ext_mp()`` in + primary process and remapped to the same virtual address in secondary + process. If the external memory is registered by primary process but has + different virtual address in secondary process, unexpected error may happen. - Flow pattern without any specific vlan will match for vlan packets as well: @@ -148,7 +153,7 @@ Limitations - E-Switch VXLAN decapsulation Flow: - - can be appiled to PF port only. + - can be applied to PF port only. - must specify VF port action (packet redirection from PF to VF). - must specify tunnel outer UDP local (destination) port, wildcards not allowed. - must specify tunnel outer VNI, wildcards not allowed. @@ -163,7 +168,7 @@ Limitations - must specify the VXLAN item with tunnel outer parameters. - must specify the tunnel outer VNI in the VXLAN item. - must specify the tunnel outer remote (destination) UDP port in the VXLAN item. - - must specify the tunnel outer local (source) IPv4 or IPv6 in the , this address will locally (with scope link) assigned to the outer network interace, wildcards not allowed. + - must specify the tunnel outer local (source) IPv4 or IPv6 in the , this address will locally (with scope link) assigned to the outer network interface, wildcards not allowed. - must specify the tunnel outer remote (destination) IPv4 or IPv6 in the VXLAN item, group IPs allowed. - must specify the tunnel outer destination MAC address in the VXLAN item, this address will be used to create neigh rule. @@ -227,20 +232,6 @@ Environment variables enabled and most useful when ``CONFIG_RTE_EAL_PMD_PATH`` is also set, since ``LD_LIBRARY_PATH`` has no effect in this case. -- ``MLX5_PMD_ENABLE_PADDING`` - - Enables HW packet padding in PCI bus transactions. - - When packet size is cache aligned and CRC stripping is enabled, 4 fewer - bytes are written to the PCI bus. Enabling padding makes such packets - aligned again. - - In cases where PCI bandwidth is the bottleneck, padding can improve - performance by 10%. - - This is disabled by default since this can also decrease performance for - unaligned packet sizes. - - ``MLX5_SHUT_UP_BF`` Configures HW Tx doorbell register as IO-mapped. @@ -295,6 +286,19 @@ Run-time configuration - CPU having 128B cacheline with ConnectX-5 and Bluefield. +- ``rxq_pkt_pad_en`` parameter [int] + + A nonzero value enables padding Rx packet to the size of cacheline on PCI + transaction. This feature would waste PCI bandwidth but could improve + performance by avoiding partial cacheline write which may cause costly + read-modify-copy in memory transaction on some architectures. Disabled by + default. + + Supported on: + + - x86_64 with ConnectX-4, ConnectX-4 LX, ConnectX-5, ConnectX-6 and Bluefield. + - POWER8 and ARMv8 with ConnectX-4 LX, ConnectX-5, ConnectX-6 and Bluefield. + - ``mprq_en`` parameter [int] A nonzero value enables configuring Multi-Packet Rx queues. Rx queue is @@ -307,7 +311,7 @@ Run-time configuration buffers per a packet, one large buffer is posted in order to receive multiple packets on the buffer. A MPRQ buffer consists of multiple fixed-size strides and each stride receives one packet. MPRQ can improve throughput for - small-packet tarffic. + small-packet traffic. When MPRQ is enabled, max_rx_pkt_len can be larger than the size of user-provided mbuf even if DEV_RX_OFFLOAD_SCATTER isn't enabled. PMD will @@ -318,7 +322,7 @@ Run-time configuration - ``mprq_log_stride_num`` parameter [int] Log 2 of the number of strides for Multi-Packet Rx queue. Configuring more - strides can reduce PCIe tarffic further. If configured value is not in the + strides can reduce PCIe traffic further. If configured value is not in the range of device capability, the default value will be set with a warning message. The default value is 4 which is 16 strides per a buffer, valid only if ``mprq_en`` is set. @@ -565,7 +569,7 @@ Either RDMA Core library with a recent enough Linux kernel release (recommended) or Mellanox OFED, which provides compatibility with older releases. -RMDA Core with Linux Kernel +RDMA Core with Linux Kernel ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Minimal kernel version : v4.14 or the most recent 4.14-rc (see `Linux installation documentation`_) diff --git a/dpdk/doc/guides/nics/mvpp2.rst b/dpdk/doc/guides/nics/mvpp2.rst index b2ddeab50..f63d85875 100644 --- a/dpdk/doc/guides/nics/mvpp2.rst +++ b/dpdk/doc/guides/nics/mvpp2.rst @@ -91,7 +91,7 @@ Limitations chance to start in a sane state. - MUSDK architecture does not support changing configuration in run time. - All nessesary configurations should be done before first dev_start(). + All necessary configurations should be done before first dev_start(). - RX queue start/stop is not supported. diff --git a/dpdk/doc/guides/nics/netvsc.rst b/dpdk/doc/guides/nics/netvsc.rst index 87fabf5b8..6dbb9a551 100644 --- a/dpdk/doc/guides/nics/netvsc.rst +++ b/dpdk/doc/guides/nics/netvsc.rst @@ -89,7 +89,7 @@ operations: .. Note:: - The dpkd-devbind.py script can not be used since it only handles PCI devices. + The dpdk-devbind.py script can not be used since it only handles PCI devices. Prerequisites diff --git a/dpdk/doc/guides/nics/sfc_efx.rst b/dpdk/doc/guides/nics/sfc_efx.rst index 40065284b..f449b19d6 100644 --- a/dpdk/doc/guides/nics/sfc_efx.rst +++ b/dpdk/doc/guides/nics/sfc_efx.rst @@ -96,7 +96,7 @@ Non-supported Features The features not yet supported include: -- Receive queue interupts +- Receive queue interrupts - Priority-based flow control @@ -207,12 +207,12 @@ Supported actions: Validating flow rules depends on the firmware variant. -Ethernet destinaton individual/group match -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Ethernet destination individual/group match +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ethernet item supports I/G matching, if only the corresponding bit is set -in the mask of destination address. If destinaton address in the spec is -multicast, it matches all multicast (and broadcast) packets, oherwise it +in the mask of destination address. If destination address in the spec is +multicast, it matches all multicast (and broadcast) packets, otherwise it matches unicast packets that are not filtered by other flow rules. Exceptions to flow rules @@ -346,10 +346,10 @@ boolean parameters value. - ``perf_profile`` [auto|throughput|low-latency] (default **throughput**) - Choose hardware tunning to be optimized for either throughput or + Choose hardware tuning to be optimized for either throughput or low-latency. **auto** allows NIC firmware to make a choice based on - installed licences and firmware variant configured using **sfboot**. + installed licenses and firmware variant configured using **sfboot**. - ``stats_update_period_ms`` [long] (default **1000**) diff --git a/dpdk/doc/guides/nics/szedata2.rst b/dpdk/doc/guides/nics/szedata2.rst index a2092f9c5..94dba82d9 100644 --- a/dpdk/doc/guides/nics/szedata2.rst +++ b/dpdk/doc/guides/nics/szedata2.rst @@ -89,7 +89,7 @@ The NFB cards are multi-port multi-queue cards, where (generally) data from any Ethernet port may be sent to any queue. They were historically represented in DPDK as a single port. -However, the new NFB-200G2QL card employs an addon cable which allows to connect +However, the new NFB-200G2QL card employs an add-on cable which allows to connect it to two physical PCI-E slots at the same time (see the diagram below). This is done to allow 200 Gbps of traffic to be transferred through the PCI-E bus (note that a single PCI-E 3.0 x16 slot provides only 125 Gbps theoretical diff --git a/dpdk/doc/guides/nics/tap.rst b/dpdk/doc/guides/nics/tap.rst index 9a3d7b348..14c669b7b 100644 --- a/dpdk/doc/guides/nics/tap.rst +++ b/dpdk/doc/guides/nics/tap.rst @@ -40,7 +40,7 @@ actual MAC address: ``00:64:74:61:70:[00-FF]``. --vdev=net_tap0,mac="00:64:74:61:70:11" The MAC address will have a user value passed as string. The MAC address is in -format with delimeter ``:``. The string is byte converted to hex and you get +format with delimiter ``:``. The string is byte converted to hex and you get the actual MAC address: ``00:64:74:61:70:11``. It is possible to specify a remote netdevice to capture packets from by adding diff --git a/dpdk/doc/guides/platform/dpaa.rst b/dpdk/doc/guides/platform/dpaa.rst index 390487152..6005f2221 100644 --- a/dpdk/doc/guides/platform/dpaa.rst +++ b/dpdk/doc/guides/platform/dpaa.rst @@ -4,7 +4,7 @@ NXP QorIQ DPAA Board Support Package ==================================== -This doc has information about steps to setup QorIq dpaa +This doc has information about steps to setup QorIQ dpaa based layerscape platform and information about common offload hw block drivers of **NXP QorIQ DPAA** SoC family. @@ -38,7 +38,7 @@ Common Offload HW Block Drivers Steps To Setup Platform ----------------------- -There are four main pre-requisities for executing DPAA PMD on a DPAA +There are four main pre-requisites for executing DPAA PMD on a DPAA compatible board: 1. **ARM 64 Tool Chain** diff --git a/dpdk/doc/guides/platform/dpaa2.rst b/dpdk/doc/guides/platform/dpaa2.rst index 5a64406eb..2586af0ff 100644 --- a/dpdk/doc/guides/platform/dpaa2.rst +++ b/dpdk/doc/guides/platform/dpaa2.rst @@ -4,7 +4,7 @@ NXP QorIQ DPAA2 Board Support Package ===================================== -This doc has information about steps to setup NXP QoriQ DPAA2 platform +This doc has information about steps to setup NXP QorIQ DPAA2 platform and information about common offload hw block drivers of **NXP QorIQ DPAA2** SoC family. @@ -48,7 +48,7 @@ Common Offload HW Block Drivers Steps To Setup Platform ----------------------- -There are four main pre-requisities for executing DPAA2 PMD on a DPAA2 +There are four main pre-requisites for executing DPAA2 PMD on a DPAA2 compatible board: 1. **ARM 64 Tool Chain** diff --git a/dpdk/doc/guides/prog_guide/bbdev.rst b/dpdk/doc/guides/prog_guide/bbdev.rst index 9de14443e..658ffd400 100644 --- a/dpdk/doc/guides/prog_guide/bbdev.rst +++ b/dpdk/doc/guides/prog_guide/bbdev.rst @@ -78,7 +78,7 @@ From the application point of view, each instance of a bbdev device consists of one or more queues identified by queue IDs. While different devices may have different capabilities (e.g. support different operation types), all queues on a device support identical configuration possibilities. A queue is configured -for only one type of operation and is configured at initializations time. +for only one type of operation and is configured at initialization time. When an operation is enqueued to a specific queue ID, the result is dequeued from the same queue ID. @@ -678,7 +678,7 @@ bbdev framework, by giving a sample code performing a loop-back operation with a baseband processor capable of transceiving data packets. The following sample C-like pseudo-code shows the basic steps to encode several -buffers using (**sw_trubo**) bbdev PMD. +buffers using (**sw_turbo**) bbdev PMD. .. code-block:: c diff --git a/dpdk/doc/guides/prog_guide/compressdev.rst b/dpdk/doc/guides/prog_guide/compressdev.rst index 87e264906..3ba4238ce 100644 --- a/dpdk/doc/guides/prog_guide/compressdev.rst +++ b/dpdk/doc/guides/prog_guide/compressdev.rst @@ -17,7 +17,7 @@ Device Creation Physical compression devices are discovered during the bus probe of the EAL function which is executed at DPDK initialization, based on their unique device identifier. -For eg. PCI devices can be identified using PCI BDF (bus/bridge, device, function). +For e.g. PCI devices can be identified using PCI BDF (bus/bridge, device, function). Specific physical compression devices, like other physical devices in DPDK can be white-listed or black-listed using the EAL command line options. @@ -379,7 +379,7 @@ using priv_xform would look like: setup op->m_src and op->m_dst; } num_enqd = rte_compressdev_enqueue_burst(cdev_id, 0, comp_ops, NUM_OPS); - /* wait for this to complete before enqueing next*/ + /* wait for this to complete before enqueuing next*/ do { num_deque = rte_compressdev_dequeue_burst(cdev_id, 0 , &processed_ops, NUM_OPS); } while (num_dqud < num_enqd); @@ -526,7 +526,7 @@ An example pseudocode to set up and process a stream having NUM_CHUNKS with each op->src.length = CHUNK_LEN; op->input_chksum = 0; num_enqd = rte_compressdev_enqueue_burst(cdev_id, 0, &op[i], 1); - /* wait for this to complete before enqueing next*/ + /* wait for this to complete before enqueuing next*/ do { num_deqd = rte_compressdev_dequeue_burst(cdev_id, 0 , &processed_ops, 1); } while (num_deqd < num_enqd); diff --git a/dpdk/doc/guides/prog_guide/cryptodev_lib.rst b/dpdk/doc/guides/prog_guide/cryptodev_lib.rst index 8ee33c875..23770ffd4 100644 --- a/dpdk/doc/guides/prog_guide/cryptodev_lib.rst +++ b/dpdk/doc/guides/prog_guide/cryptodev_lib.rst @@ -14,7 +14,7 @@ and AEAD symmetric and asymmetric Crypto operations. Design Principles ----------------- -The cryptodev library follows the same basic principles as those used in DPDKs +The cryptodev library follows the same basic principles as those used in DPDK's Ethernet Device framework. The Crypto framework provides a generic Crypto device framework which supports both physical (hardware) and virtual (software) Crypto devices as well as a generic Crypto API which allows Crypto devices to be @@ -48,7 +48,7 @@ From the command line using the --vdev EAL option * If DPDK application requires multiple software crypto PMD devices then required number of ``--vdev`` with appropriate libraries are to be added. - * An Application with crypto PMD instaces sharing the same library requires unique ID. + * An Application with crypto PMD instances sharing the same library requires unique ID. Example: ``--vdev 'crypto_aesni_mb0' --vdev 'crypto_aesni_mb1'`` @@ -382,7 +382,7 @@ Operation Management and Allocation The cryptodev library provides an API set for managing Crypto operations which utilize the Mempool Library to allocate operation buffers. Therefore, it ensures -that the crytpo operation is interleaved optimally across the channels and +that the crypto operation is interleaved optimally across the channels and ranks for optimal processing. A ``rte_crypto_op`` contains a field indicating the pool that it originated from. When calling ``rte_crypto_op_free(op)``, the operation returns to its original pool. @@ -586,7 +586,7 @@ Sample code There are various sample applications that show how to use the cryptodev library, such as the L2fwd with Crypto sample application (L2fwd-crypto) and -the IPSec Security Gateway application (ipsec-secgw). +the IPsec Security Gateway application (ipsec-secgw). While these applications demonstrate how an application can be created to perform generic crypto operation, the required complexity hides the basic steps of @@ -767,7 +767,7 @@ using one of the crypto PMDs available in DPDK. /* * Dequeue the crypto operations until all the operations - * are proccessed in the crypto device. + * are processed in the crypto device. */ uint16_t num_dequeued_ops, total_num_dequeued_ops = 0; do { @@ -846,7 +846,7 @@ the order in which the transforms are passed indicates the order of the chaining Not all asymmetric crypto xforms are supported for chaining. Currently supported asymmetric crypto chaining is Diffie-Hellman private key generation followed by public generation. Also, currently API does not support chaining of symmetric and -asymmetric crypto xfroms. +asymmetric crypto xforms. Each xform defines specific asymmetric crypto algo. Currently supported are: * RSA diff --git a/dpdk/doc/guides/prog_guide/dev_kit_build_system.rst b/dpdk/doc/guides/prog_guide/dev_kit_build_system.rst index da83a31ee..a851a8112 100644 --- a/dpdk/doc/guides/prog_guide/dev_kit_build_system.rst +++ b/dpdk/doc/guides/prog_guide/dev_kit_build_system.rst @@ -216,8 +216,6 @@ Objects Misc ^^^^ -* rte.doc.mk: Documentation in the development kit framework - * rte.gnuconfigure.mk: Build an application that is configure-based. * rte.subdir.mk: Build several directories in the development kit framework. @@ -249,7 +247,7 @@ Creates the following symbol: Which ``dpdk-pmdinfogen`` scans for. Using this information other relevant bits of data can be exported from the object file and used to produce a hardware support description, that ``dpdk-pmdinfogen`` then encodes into a -json formatted string in the following format: +JSON formatted string in the following format: .. code-block:: c diff --git a/dpdk/doc/guides/prog_guide/efd_lib.rst b/dpdk/doc/guides/prog_guide/efd_lib.rst index cb1a1df86..2b355ff2a 100644 --- a/dpdk/doc/guides/prog_guide/efd_lib.rst +++ b/dpdk/doc/guides/prog_guide/efd_lib.rst @@ -423,6 +423,6 @@ References 1- EFD is based on collaborative research work between Intel and Carnegie Mellon University (CMU), interested readers can refer to the paper -“Scaling Up Clustered Network Appliances with ScaleBricks;” Dong Zhou et al. +"Scaling Up Clustered Network Appliances with ScaleBricks" Dong Zhou et al. at SIGCOMM 2015 (`http://conferences.sigcomm.org/sigcomm/2015/pdf/papers/p241.pdf`) for more information. diff --git a/dpdk/doc/guides/prog_guide/env_abstraction_layer.rst b/dpdk/doc/guides/prog_guide/env_abstraction_layer.rst index 8b5d050c7..2bb77b019 100644 --- a/dpdk/doc/guides/prog_guide/env_abstraction_layer.rst +++ b/dpdk/doc/guides/prog_guide/env_abstraction_layer.rst @@ -147,14 +147,13 @@ A default validator callback is provided by EAL, which can be enabled with a ``--socket-limit`` command-line option, for a simple way to limit maximum amount of memory that can be used by DPDK application. -.. note:: - - In multiprocess scenario, all related processes (i.e. primary process, and - secondary processes running with the same prefix) must be in the same memory - modes. That is, if primary process is run in dynamic memory mode, all of its - secondary processes must be run in the same mode. The same is applicable to - ``--single-file-segments`` command-line option - both primary and secondary - processes must shared this mode. +.. warning:: + Memory subsystem uses DPDK IPC internally, so memory allocations/callbacks + and IPC must not be mixed: it is not safe to allocate/free memory inside + memory-related or IPC callbacks, and it is not safe to use IPC inside + memory-related callbacks. See chapter + :ref:`Multi-process Support ` for more details about + DPDK IPC. + Legacy memory mode @@ -450,6 +449,28 @@ Those TLS include *_cpuset* and *_socket_id*: * *_socket_id* stores the NUMA node of the CPU set. If the CPUs in CPU set belong to different NUMA node, the *_socket_id* will be set to SOCKET_ID_ANY. +Control Thread API +~~~~~~~~~~~~~~~~~~ + +It is possible to create Control Threads using the public API +``rte_ctrl_thread_create()``. +Those threads can be used for management/infrastructure tasks and are used +internally by DPDK for multi process support and interrupt handling. + +Those threads will be scheduled on CPUs part of the original process CPU +affinity from which the dataplane and service lcores are excluded. + +For example, on a 8 CPUs system, starting a dpdk application with -l 2,3 +(dataplane cores), then depending on the affinity configuration which can be +controlled with tools like taskset (Linux) or cpuset (FreeBSD), + +- with no affinity configuration, the Control Threads will end up on + 0-1,4-7 CPUs. +- with affinity restricted to 2-4, the Control Threads will end up on + CPU 4. +- with affinity restricted to 2-3, the Control Threads will end up on + CPU 2 (master lcore, which is the default when no CPU is available). + .. _known_issue_label: Known Issues @@ -635,7 +656,7 @@ The most important fields in the structure and how they are used are described b Malloc heap is a doubly-linked list, where each element keeps track of its previous and next elements. Due to the fact that hugepage memory can come and -go, neighbouring malloc elements may not necessarily be adjacent in memory. +go, neighboring malloc elements may not necessarily be adjacent in memory. Also, since a malloc element may span multiple pages, its contents may not necessarily be IOVA-contiguous either - each malloc element is only guaranteed to be virtually contiguous. diff --git a/dpdk/doc/guides/prog_guide/event_ethernet_rx_adapter.rst b/dpdk/doc/guides/prog_guide/event_ethernet_rx_adapter.rst index 0166bb45d..7bc559c8a 100644 --- a/dpdk/doc/guides/prog_guide/event_ethernet_rx_adapter.rst +++ b/dpdk/doc/guides/prog_guide/event_ethernet_rx_adapter.rst @@ -157,7 +157,7 @@ The servicing_weight member of struct rte_event_eth_rx_adapter_queue_conf is applicable when the adapter uses a service core function. The application has to enable Rx queue interrupts when configuring the ethernet device using the ``rte_eth_dev_configure()`` function and then use a servicing_weight -of zero when addding the Rx queue to the adapter. +of zero when adding the Rx queue to the adapter. The adapter creates a thread blocked on the interrupt, on an interrupt this thread enqueues the port id and the queue id to a ring buffer. The adapter @@ -175,9 +175,9 @@ Rx Callback for SW Rx Adapter For SW based packet transfers, i.e., when the ``RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT`` is not set in the adapter's capabilities flags for a particular ethernet device, the service function -temporarily enqueues mbufs to an event buffer before batch enqueueing these +temporarily enqueues mbufs to an event buffer before batch enqueuing these to the event device. If the buffer fills up, the service function stops -dequeueing packets from the ethernet device. The application may want to +dequeuing packets from the ethernet device. The application may want to monitor the buffer fill level and instruct the service function to selectively enqueue packets to the event device. The application may also use some other criteria to decide which packets should enter the event device even when diff --git a/dpdk/doc/guides/prog_guide/eventdev.rst b/dpdk/doc/guides/prog_guide/eventdev.rst index 8fcae5469..27c51d256 100644 --- a/dpdk/doc/guides/prog_guide/eventdev.rst +++ b/dpdk/doc/guides/prog_guide/eventdev.rst @@ -42,7 +42,7 @@ The rte_event structure contains the following metadata fields, which the application fills in to have the event scheduled as required: * ``flow_id`` - The targeted flow identifier for the enq/deq operation. -* ``event_type`` - The source of this event, eg RTE_EVENT_TYPE_ETHDEV or CPU. +* ``event_type`` - The source of this event, e.g. RTE_EVENT_TYPE_ETHDEV or CPU. * ``sub_event_type`` - Distinguishes events inside the application, that have the same event_type (see above) * ``op`` - This field takes one of the RTE_EVENT_OP_* values, and tells the @@ -265,7 +265,7 @@ Linking Queues and Ports The final step is to "wire up" the ports to the queues. After this, the eventdev is capable of scheduling events, and when cores request work to do, the correct events are provided to that core. Note that the RX core takes input -from eg: a NIC so it is not linked to any eventdev queues. +from e.g.: a NIC so it is not linked to any eventdev queues. Linking all workers to atomic queues, and the TX core to the single-link queue can be achieved like this: @@ -276,7 +276,7 @@ can be achieved like this: uint8_t tx_port_id = 5; uint8_t atomic_qs[] = {0, 1}; uint8_t single_link_q = 2; - uin8t_t priority = RTE_EVENT_DEV_PRIORITY_NORMAL; + uint8_t priority = RTE_EVENT_DEV_PRIORITY_NORMAL; for(int worker_port_id = 1; worker_port_id <= 4; worker_port_id++) { int links_made = rte_event_port_link(dev_id, worker_port_id, atomic_qs, NULL, 2); diff --git a/dpdk/doc/guides/prog_guide/generic_receive_offload_lib.rst b/dpdk/doc/guides/prog_guide/generic_receive_offload_lib.rst index 9c6a4d08c..5b3fb91c8 100644 --- a/dpdk/doc/guides/prog_guide/generic_receive_offload_lib.rst +++ b/dpdk/doc/guides/prog_guide/generic_receive_offload_lib.rst @@ -191,3 +191,22 @@ Header fields deciding if packets are neighbors include: ignore IPv4 ID fields for the packets whose DF bit is 1. Additionally, packets which have different value of DF bit can't be merged. + +GRO Library Limitations +----------------------- + +- GRO library uses MBUF->l2_len/l3_len/l4_len/outer_l2_len/ + outer_l3_len/packet_type to get protocol headers for the + input packet, rather than parsing the packet header. Therefore, + before call GRO APIs to merge packets, user applications + must set MBUF->l2_len/l3_len/l4_len/outer_l2_len/outer_l3_len/ + packet_type to the same values as the protocol headers of the + packet. + +- GRO library doesn't support to process the packets with IPv4 + Options or VLAN tagged. + +- GRO library just supports to process the packet organized + in a single MBUF. If the input packet consists of multiple + MBUFs (i.e. chained MBUFs), GRO reassembly behaviors are + unknown. diff --git a/dpdk/doc/guides/prog_guide/kernel_nic_interface.rst b/dpdk/doc/guides/prog_guide/kernel_nic_interface.rst index 33ea980e5..7b8a481a6 100644 --- a/dpdk/doc/guides/prog_guide/kernel_nic_interface.rst +++ b/dpdk/doc/guides/prog_guide/kernel_nic_interface.rst @@ -225,7 +225,7 @@ application functions: ``config_promiscusity``: - Called when the user changes the promiscusity state of the KNI + Called when the user changes the promiscuity state of the KNI interface. For example, when the user runs ``ip link set promisc [on|off] dev ``. If the user sets this callback function to NULL, but sets the ``port_id`` field to a value other than -1, a default diff --git a/dpdk/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst b/dpdk/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst index 56abee547..2459fd243 100644 --- a/dpdk/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst +++ b/dpdk/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst @@ -477,22 +477,22 @@ Create a bonded device in round robin mode with two slaves specified by their PC .. code-block:: console - $RTE_TARGET/app/testpmd -l 0-3 -n 4 --vdev 'net_bonding0,mode=0, slave=0000:00a:00.01,slave=0000:004:00.00' -- --port-topology=chained + $RTE_TARGET/app/testpmd -l 0-3 -n 4 --vdev 'net_bonding0,mode=0,slave=0000:0a:00.01,slave=0000:04:00.00' -- --port-topology=chained Create a bonded device in round robin mode with two slaves specified by their PCI address and an overriding MAC address: .. code-block:: console - $RTE_TARGET/app/testpmd -l 0-3 -n 4 --vdev 'net_bonding0,mode=0, slave=0000:00a:00.01,slave=0000:004:00.00,mac=00:1e:67:1d:fd:1d' -- --port-topology=chained + $RTE_TARGET/app/testpmd -l 0-3 -n 4 --vdev 'net_bonding0,mode=0,slave=0000:0a:00.01,slave=0000:04:00.00,mac=00:1e:67:1d:fd:1d' -- --port-topology=chained Create a bonded device in active backup mode with two slaves specified, and a primary slave specified by their PCI addresses: .. code-block:: console - $RTE_TARGET/app/testpmd -l 0-3 -n 4 --vdev 'net_bonding0,mode=1, slave=0000:00a:00.01,slave=0000:004:00.00,primary=0000:00a:00.01' -- --port-topology=chained + $RTE_TARGET/app/testpmd -l 0-3 -n 4 --vdev 'net_bonding0,mode=1,slave=0000:0a:00.01,slave=0000:04:00.00,primary=0000:0a:00.01' -- --port-topology=chained Create a bonded device in balance mode with two slaves specified by their PCI addresses, and a transmission policy of layer 3 + 4 forwarding: .. code-block:: console - $RTE_TARGET/app/testpmd -l 0-3 -n 4 --vdev 'net_bonding0,mode=2, slave=0000:00a:00.01,slave=0000:004:00.00,xmit_policy=l34' -- --port-topology=chained + $RTE_TARGET/app/testpmd -l 0-3 -n 4 --vdev 'net_bonding0,mode=2,slave=0000:0a:00.01,slave=0000:04:00.00,xmit_policy=l34' -- --port-topology=chained diff --git a/dpdk/doc/guides/prog_guide/lpm_lib.rst b/dpdk/doc/guides/prog_guide/lpm_lib.rst index 99563a4a6..1609a57d0 100644 --- a/dpdk/doc/guides/prog_guide/lpm_lib.rst +++ b/dpdk/doc/guides/prog_guide/lpm_lib.rst @@ -195,4 +195,4 @@ References `http://www.ietf.org/rfc/rfc1519 `_ * Pankaj Gupta, Algorithms for Routing Lookups and Packet Classification, PhD Thesis, Stanford University, - 2000 (`http://klamath.stanford.edu/~pankaj/thesis/ thesis_1sided.pdf `_ ) + 2000 (`http://klamath.stanford.edu/~pankaj/thesis/thesis_1sided.pdf `_ ) diff --git a/dpdk/doc/guides/prog_guide/metrics_lib.rst b/dpdk/doc/guides/prog_guide/metrics_lib.rst index e68e4e743..89bc7d68f 100644 --- a/dpdk/doc/guides/prog_guide/metrics_lib.rst +++ b/dpdk/doc/guides/prog_guide/metrics_lib.rst @@ -25,7 +25,7 @@ individual device. Since the metrics library is self-contained, the only restriction on port numbers is that they are less than ``RTE_MAX_ETHPORTS`` - there is no requirement for the ports to actually exist. -Initialising the library +Initializing the library ------------------------ Before the library can be used, it has to be initialized by calling diff --git a/dpdk/doc/guides/prog_guide/multi_proc_support.rst b/dpdk/doc/guides/prog_guide/multi_proc_support.rst index 1384fe335..a84083b96 100644 --- a/dpdk/doc/guides/prog_guide/multi_proc_support.rst +++ b/dpdk/doc/guides/prog_guide/multi_proc_support.rst @@ -176,7 +176,7 @@ Some of these are documented below: * The use of function pointers between multiple processes running based of different compiled binaries is not supported, since the location of a given function in one process may be different to its location in a second. - This prevents the librte_hash library from behaving properly as in a multi-threaded instance, + This prevents the librte_hash library from behaving properly as in a multi-process instance, since it uses a pointer to the hash function internally. To work around this issue, it is recommended that multi-process applications perform the hash calculations by directly calling @@ -263,9 +263,9 @@ To send a request, a message descriptor ``rte_mp_msg`` must be populated. Additionally, a ``timespec`` value must be specified as a timeout, after which IPC will stop waiting and return. -For synchronous synchronous requests, the ``rte_mp_reply`` descriptor must also -be created. This is where the responses will be stored. The list of fields that -will be populated by IPC are as follows: +For synchronous requests, the ``rte_mp_reply`` descriptor must also be created. +This is where the responses will be stored. +The list of fields that will be populated by IPC are as follows: * ``nb_sent`` - number indicating how many requests were sent (i.e. how many peer processes were active at the time of the request). @@ -273,7 +273,7 @@ will be populated by IPC are as follows: those peer processes that were active at the time of request, how many have replied) * ``msgs`` - pointer to where all of the responses are stored. The order in - which responses appear is undefined. Whendoing sycnrhonous requests, this + which responses appear is undefined. When doing synchronous requests, this memory must be freed by the requestor after request completes! For asynchronous requests, a function pointer to the callback function must be @@ -309,6 +309,13 @@ If a response is required, a new ``rte_mp_msg`` message descriptor must be constructed and sent via ``rte_mp_reply()`` function, along with ``peer`` pointer. The resulting response will then be delivered to the correct requestor. +.. warning:: + Simply returning a value when processing a request callback will not send a + response to the request - it must always be explicitly sent even in case + of errors. Implementation of error signalling rests with the application, + there is no built-in way to indicate success or error for a request. Failing + to do so will cause the requestor to time out while waiting on a response. + Misc considerations ~~~~~~~~~~~~~~~~~~~~~~~~ @@ -318,6 +325,11 @@ supported. However, since sending messages (not requests) does not involve an IPC thread, sending messages while processing another message or request is supported. +Since the memory sybsystem uses IPC internally, memory allocations and IPC must +not be mixed: it is not safe to use IPC inside a memory-related callback, nor is +it safe to allocate/free memory inside IPC callbacks. Attempting to do so may +lead to a deadlock. + Asynchronous request callbacks may be triggered either from IPC thread or from interrupt thread, depending on whether the request has timed out. It is therefore suggested to avoid waiting for interrupt-based events (such as alarms) diff --git a/dpdk/doc/guides/prog_guide/poll_mode_drv.rst b/dpdk/doc/guides/prog_guide/poll_mode_drv.rst index b2cf48354..6fae39f90 100644 --- a/dpdk/doc/guides/prog_guide/poll_mode_drv.rst +++ b/dpdk/doc/guides/prog_guide/poll_mode_drv.rst @@ -374,9 +374,9 @@ parameters to those ports. this argument allows user to specify which switch ports to enable port representors for.:: - -w BDBF,representor=0 - -w BDBF,representor=[0,4,6,9] - -w BDBF,representor=[0-31] + -w DBDF,representor=0 + -w DBDF,representor=[0,4,6,9] + -w DBDF,representor=[0-31] Note: PMDs are not required to support the standard device arguments and users should consult the relevant PMD documentation to see support devargs. diff --git a/dpdk/doc/guides/prog_guide/power_man.rst b/dpdk/doc/guides/prog_guide/power_man.rst index 68b7e8b64..0a3755a90 100644 --- a/dpdk/doc/guides/prog_guide/power_man.rst +++ b/dpdk/doc/guides/prog_guide/power_man.rst @@ -184,7 +184,7 @@ API Overview for Empty Poll Power Management * **Update Valid Poll Counter**: update the valid poll counter. -* **Set the Fequence Index**: update the power state/frequency mapping. +* **Set the Frequency Index**: update the power state/frequency mapping. * **Detect empty poll state change**: empty poll state change detection algorithm then take action. @@ -195,6 +195,8 @@ The mechanism can applied to any device which is based on polling. e.g. NIC, FPG References ---------- -* l3fwd-power: The sample application in DPDK that performs L3 forwarding with power management. +* The :doc:`../sample_app_ug/l3_forward_power_man` + chapter in the :doc:`../sample_app_ug/index` section. -* The "L3 Forwarding with Power Management Sample Application" chapter in the *DPDK Sample Application's User Guide*. +* The :doc:`../sample_app_ug/vm_power_management` + chapter in the :doc:`../sample_app_ug/index` section. diff --git a/dpdk/doc/guides/prog_guide/profile_app.rst b/dpdk/doc/guides/prog_guide/profile_app.rst index 02f05614a..c1b29f937 100644 --- a/dpdk/doc/guides/prog_guide/profile_app.rst +++ b/dpdk/doc/guides/prog_guide/profile_app.rst @@ -64,7 +64,7 @@ The default ``cntvct_el0`` based ``rte_rdtsc()`` provides a portable means to get a wall clock counter in user space. Typically it runs at <= 100MHz. The alternative method to enable ``rte_rdtsc()`` for a high resolution wall -clock counter is through the armv8 PMU subsystem. The PMU cycle counter runs +clock counter is through the ARMv8 PMU subsystem. The PMU cycle counter runs at CPU frequency. However, access to the PMU cycle counter from user space is not enabled by default in the arm64 linux kernel. It is possible to enable cycle counter for user space access by configuring the PMU from the privileged @@ -75,7 +75,7 @@ scheme. Application can choose the PMU based implementation with ``CONFIG_RTE_ARM_EAL_RDTSC_USE_PMU``. The example below shows the steps to configure the PMU based cycle counter on -an armv8 machine. +an ARMv8 machine. .. code-block:: console diff --git a/dpdk/doc/guides/prog_guide/rte_flow.rst b/dpdk/doc/guides/prog_guide/rte_flow.rst index c18637500..4e9b4440b 100644 --- a/dpdk/doc/guides/prog_guide/rte_flow.rst +++ b/dpdk/doc/guides/prog_guide/rte_flow.rst @@ -2131,7 +2131,7 @@ as defined in the ``rte_flow_action_raw_decap`` This action modifies the payload of matched flows. The data supplied must be a valid header, either holding layer 2 data in case of removing layer 2 -before eincapsulation of layer 3 tunnel (for example MPLSoGRE) or complete +before encapsulation of layer 3 tunnel (for example MPLSoGRE) or complete tunnel definition starting from layer 2 and moving to the tunnel item itself. When applied to the original packet the resulting packet must be a valid packet. @@ -2281,7 +2281,7 @@ Action: ``DEC_TTL`` Decrease TTL value. If there is no valid RTE_FLOW_ITEM_TYPE_IPV4 or RTE_FLOW_ITEM_TYPE_IPV6 -in pattern, Some PMDs will reject rule because behaviour will be undefined. +in pattern, Some PMDs will reject rule because behavior will be undefined. .. _table_rte_flow_action_dec_ttl: @@ -2299,7 +2299,7 @@ Action: ``SET_TTL`` Assigns a new TTL value. If there is no valid RTE_FLOW_ITEM_TYPE_IPV4 or RTE_FLOW_ITEM_TYPE_IPV6 -in pattern, Some PMDs will reject rule because behaviour will be undefined. +in pattern, Some PMDs will reject rule because behavior will be undefined. .. _table_rte_flow_action_set_ttl: @@ -2314,7 +2314,10 @@ in pattern, Some PMDs will reject rule because behaviour will be undefined. Action: ``SET_MAC_SRC`` ^^^^^^^^^^^^^^^^^^^^^^^ -Set source MAC address +Set source MAC address. + +It must be used with a valid RTE_FLOW_ITEM_TYPE_ETH flow pattern item. +Otherwise, RTE_FLOW_ERROR_TYPE_ACTION error will be returned. .. _table_rte_flow_action_set_mac_src: @@ -2329,7 +2332,10 @@ Set source MAC address Action: ``SET_MAC_DST`` ^^^^^^^^^^^^^^^^^^^^^^^ -Set source MAC address +Set destination MAC address. + +It must be used with a valid RTE_FLOW_ITEM_TYPE_ETH flow pattern item. +Otherwise, RTE_FLOW_ERROR_TYPE_ACTION error will be returned. .. _table_rte_flow_action_set_mac_dst: @@ -2719,7 +2725,7 @@ Caveats - API operations are synchronous and blocking (``EAGAIN`` cannot be returned). -- There is no provision for reentrancy/multi-thread safety, although nothing +- There is no provision for re-entrancy/multi-thread safety, although nothing should prevent different devices from being configured at the same time. PMDs may protect their control path functions accordingly. diff --git a/dpdk/doc/guides/prog_guide/rte_security.rst b/dpdk/doc/guides/prog_guide/rte_security.rst index cb70caa74..7d0734a37 100644 --- a/dpdk/doc/guides/prog_guide/rte_security.rst +++ b/dpdk/doc/guides/prog_guide/rte_security.rst @@ -40,7 +40,7 @@ Inline Crypto ~~~~~~~~~~~~~ RTE_SECURITY_ACTION_TYPE_INLINE_CRYPTO: -The crypto processing for security protocol (e.g. IPSec) is processed +The crypto processing for security protocol (e.g. IPsec) is processed inline during receive and transmission on NIC port. The flow based security action should be configured on the port. @@ -48,7 +48,7 @@ Ingress Data path - The packet is decrypted in RX path and relevant crypto status is set in Rx descriptors. After the successful inline crypto processing the packet is presented to host as a regular Rx packet however all security protocol related headers are still attached to the -packet. e.g. In case of IPSec, the IPSec tunnel headers (if any), +packet. e.g. In case of IPsec, the IPsec tunnel headers (if any), ESP/AH headers will remain in the packet but the received packet contains the decrypted data where the encrypted data was when the packet arrived. The driver Rx path check the descriptors and and based on the @@ -111,7 +111,7 @@ Inline protocol offload ~~~~~~~~~~~~~~~~~~~~~~~ RTE_SECURITY_ACTION_TYPE_INLINE_PROTOCOL: -The crypto and protocol processing for security protocol (e.g. IPSec) +The crypto and protocol processing for security protocol (e.g. IPsec) is processed inline during receive and transmission. The flow based security action should be configured on the port. @@ -119,7 +119,7 @@ Ingress Data path - The packet is decrypted in the RX path and relevant crypto status is set in the Rx descriptors. After the successful inline crypto processing the packet is presented to the host as a regular Rx packet but all security protocol related headers are optionally removed from the -packet. e.g. in the case of IPSec, the IPSec tunnel headers (if any), +packet. e.g. in the case of IPsec, the IPsec tunnel headers (if any), ESP/AH headers will be removed from the packet and the received packet will contains the decrypted packet only. The driver Rx path checks the descriptors and based on the crypto status sets additional flags in @@ -132,7 +132,7 @@ to identify the security processing done on the packet. The underlying device in this case is stateful. It is expected that the device shall support crypto processing for all kind of packets matching to a given flow, this includes fragmented packets (post reassembly). - E.g. in case of IPSec the device may internally manage anti-replay etc. + E.g. in case of IPsec the device may internally manage anti-replay etc. It will provide a configuration option for anti-replay behavior i.e. to drop the packets or pass them to driver with error flags set in the descriptor. @@ -150,7 +150,7 @@ to cross the MTU size. .. note:: The underlying device will manage state information required for egress - processing. E.g. in case of IPSec, the seq number will be added to the + processing. E.g. in case of IPsec, the seq number will be added to the packet, however the device shall provide indication when the sequence number is about to overflow. The underlying device may support post encryption TSO. @@ -199,13 +199,13 @@ crypto device. Decryption: The packet is sent to the crypto device for security protocol processing. The device will decrypt the packet and it will also optionally remove additional security headers from the packet. -E.g. in case of IPSec, IPSec tunnel headers (if any), ESP/AH headers +E.g. in case of IPsec, IPsec tunnel headers (if any), ESP/AH headers will be removed from the packet and the decrypted packet may contain plain data only. .. note:: - In case of IPSec the device may internally manage anti-replay etc. + In case of IPsec the device may internally manage anti-replay etc. It will provide a configuration option for anti-replay behavior i.e. to drop the packets or pass them to driver with error flags set in descriptor. @@ -217,7 +217,7 @@ for any protocol header addition. .. note:: - In the case of IPSec, the seq number will be added to the packet, + In the case of IPsec, the seq number will be added to the packet, It shall provide an indication when the sequence number is about to overflow. @@ -549,7 +549,7 @@ IPsec related configuration parameters are defined in ``rte_security_ipsec_xform struct rte_security_ipsec_sa_options options; /**< various SA options */ enum rte_security_ipsec_sa_direction direction; - /**< IPSec SA Direction - Egress/Ingress */ + /**< IPsec SA Direction - Egress/Ingress */ enum rte_security_ipsec_sa_protocol proto; /**< IPsec SA Protocol - AH/ESP */ enum rte_security_ipsec_sa_mode mode; diff --git a/dpdk/doc/guides/prog_guide/traffic_management.rst b/dpdk/doc/guides/prog_guide/traffic_management.rst index 98ac4310b..05b34d93a 100644 --- a/dpdk/doc/guides/prog_guide/traffic_management.rst +++ b/dpdk/doc/guides/prog_guide/traffic_management.rst @@ -39,7 +39,7 @@ whether a specific implementation does meet the needs to the user application. At the TM level, users can get high level idea with the help of various parameters such as maximum number of nodes, maximum number of hierarchical levels, maximum number of shapers, maximum number of private shapers, type of -scheduling algorithm (Strict Priority, Weighted Fair Queueing , etc.), etc., +scheduling algorithm (Strict Priority, Weighted Fair Queuing , etc.), etc., supported by the implementation. Likewise, users can query the capability of the TM at the hierarchical level to diff --git a/dpdk/doc/guides/prog_guide/vhost_lib.rst b/dpdk/doc/guides/prog_guide/vhost_lib.rst index c77df338f..27c3af8f9 100644 --- a/dpdk/doc/guides/prog_guide/vhost_lib.rst +++ b/dpdk/doc/guides/prog_guide/vhost_lib.rst @@ -63,7 +63,7 @@ The following is an overview of some key Vhost API functions: 512). * zero copy is really good for VM2VM case. For iperf between two VMs, the - boost could be above 70% (when TSO is enableld). + boost could be above 70% (when TSO is enabled). * For zero copy in VM2NIC case, guest Tx used vring may be starved if the PMD driver consume the mbuf but not release them timely. diff --git a/dpdk/doc/guides/rawdevs/ifpga_rawdev.rst b/dpdk/doc/guides/rawdevs/ifpga_rawdev.rst index d400db6ed..a3d92a62e 100644 --- a/dpdk/doc/guides/rawdevs/ifpga_rawdev.rst +++ b/dpdk/doc/guides/rawdevs/ifpga_rawdev.rst @@ -91,7 +91,7 @@ Run-time parameters ------------------- This driver is invoked automatically in systems added with Intel FPGA, -but PR and IFPGA Bus scan is trigged by command line using +but PR and IFPGA Bus scan is triggered by command line using ``--vdev 'ifpga_rawdev_cfg`` EAL option. The following device parameters are supported: diff --git a/dpdk/doc/guides/rel_notes/known_issues.rst b/dpdk/doc/guides/rel_notes/known_issues.rst index a1face9c1..276327c15 100644 --- a/dpdk/doc/guides/rel_notes/known_issues.rst +++ b/dpdk/doc/guides/rel_notes/known_issues.rst @@ -676,7 +676,7 @@ igb uio legacy mode can not be used in X710/XL710/XXV710 **Description**: X710/XL710/XXV710 NICs lack support for indicating INTx is asserted via the interrupt - bit in the PCI status register. Linux delected them from INTx support table. The related + bit in the PCI status register. Linux deleted them from INTx support table. The related `commit `_. **Implication**: @@ -722,9 +722,9 @@ Linux kernel 4.10.0 iommu attribute read error **Description**: When VT-d is enabled (``iommu=pt intel_iommu=on``), reading IOMMU attributes from /sys/devices/virtual/iommu/dmarXXX/intel-iommu/cap on Linux kernel 4.10.0 error. - This bug is fixed in `Linux commmit a7fdb6e648fb + This bug is fixed in `Linux commit a7fdb6e648fb `_, - This bug is introduced in `Linux commmit 39ab9555c241 + This bug is introduced in `Linux commit 39ab9555c241 `_, **Implication**: @@ -826,3 +826,38 @@ Kernel crash when hot-unplug igb_uio device while DPDK application is running **Driver/Module**: ``igb_uio`` module. + + +AVX-512 support disabled +------------------------ + +**Description**: + ``AVX-512`` support has been disabled on some conditions. + This shouldn't be confused with ``CONFIG_RTE_ENABLE_AVX512`` config option which is already + disabled by default. This config option defines if ``AVX-512`` specific implementations of + some file to be used or not. What has been disabled is compiler feature to produce ``AVX-512`` + instructions from any source code. + + On DPDK v18.11 ``AVX-512`` is disabled for all ``GCC`` builds which reported to cause a performance + drop. + + On DPDK v19.02 ``AVX-512`` disable scope is reduced to ``GCC`` and ``binutils version 2.30`` based + on information accrued from the GCC community defect. + +**Reason**: + Generated ``AVX-512`` code cause crash: + https://bugs.dpdk.org/show_bug.cgi?id=97 + https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88096 + +**Resolution/Workaround**: + * Update ``binutils`` to newer version than ``2.30``. + + OR + + * Use different compiler, like ``clang`` for this case. + +**Affected Environment/Platform**: + ``GCC`` and ``binutils version 2.30``. + +**Driver/Module**: + ALL. diff --git a/dpdk/doc/guides/rel_notes/release_17_11.rst b/dpdk/doc/guides/rel_notes/release_17_11.rst index 2a93af323..6448b6cb1 100644 --- a/dpdk/doc/guides/rel_notes/release_17_11.rst +++ b/dpdk/doc/guides/rel_notes/release_17_11.rst @@ -168,7 +168,7 @@ New Features * The DES CBC algorithm. * The DES DOCSIS BPI algorithm. - This change requires version 0.47 of the IPSec Multi-buffer library. For + This change requires version 0.47 of the IPsec Multi-buffer library. For more details see the :doc:`../cryptodevs/aesni_mb` documentation. * **Updated the OpenSSL PMD.** @@ -198,7 +198,7 @@ New Features * **Added the Security Offload Library.** Added an experimental library - ``rte_security``. This provide security APIs - for protocols like IPSec using inline ipsec offload to ethernet devices or + for protocols like IPsec using inline ipsec offload to ethernet devices or full protocol offload with lookaside crypto devices. See the :doc:`../prog_guide/rte_security` section of the DPDK Programmers @@ -207,11 +207,11 @@ New Features * **Updated the DPAA2_SEC crypto driver to support rte_security.** Updated the ``dpaa2_sec`` crypto PMD to support ``rte_security`` lookaside - protocol offload for IPSec. + protocol offload for IPsec. * **Updated the IXGBE ethernet driver to support rte_security.** - Updated ixgbe ethernet PMD to support ``rte_security`` inline IPSec offload. + Updated ixgbe ethernet PMD to support ``rte_security`` inline IPsec offload. * **Updated i40e driver to support GTP-C/GTP-U.** @@ -509,7 +509,7 @@ ABI Changes * **New parameter added to rte_eth_dev.** A new parameter ``security_ctx`` has been added to ``rte_eth_dev`` to - support security operations like IPSec inline. + support security operations like IPsec inline. * **New parameter added to rte_cryptodev.** diff --git a/dpdk/doc/guides/rel_notes/release_18_11.rst b/dpdk/doc/guides/rel_notes/release_18_11.rst index 65bab557d..071e010d7 100644 --- a/dpdk/doc/guides/rel_notes/release_18_11.rst +++ b/dpdk/doc/guides/rel_notes/release_18_11.rst @@ -861,3 +861,830 @@ Tested Platforms * Ubuntu 18.04.1 LTS with NXP QorIQ LSDK 1809 support packages * Ubuntu 16.04.3 LTS with NXP QorIQ LSDK 1803 support packages + +18.11.1 Release Notes +---------------------- + +18.11.1 Fixes +~~~~~~~~~~~~~ + +* app/bbdev: fix return value check +* app/eventdev: detect deadlock for timer event producer +* app/pdump: fix vdev cleanup +* app/testpmd: expand RED queue thresholds to 64 bits +* app/testpmd: fix MPLS BoS bit default value +* app/testpmd: fix MPLSoGRE encapsulation +* app/testpmd: fix MPLSoUDP encapsulation +* app/testpmd: fix quit to stop all ports before close +* app/testpmd: fix Tx metadata show command +* bb/turbo_sw: fix dynamic linking +* build: fix meson check for binutils 2.30 +* build: fix variable name in dependency error message +* build: mention -march in pkg-config description +* build: use static deps for pkg-config libs.private +* bus/dpaa: do nothing if bus not present +* bus/dpaa: fix logical to physical core affine logic +* bus/fslmc: fix parse method for bus devices +* bus/fslmc: fix ring mode to use correct cache settings +* bus/fslmc: fix to convert error msg to warning +* bus/fslmc: fix to reset portal memory before use +* bus/fslmc: fix to use correct physical core for logical core +* bus/ifpga: fix AFU probe failure handler +* bus/ifpga: fix build for cpp applications +* bus/ifpga: fix forcing optional devargs +* bus/vmbus: fix race in subchannel creation +* common/qat: remove check of valid firmware response +* compressdev: fix structure comment +* compress/qat: fix dequeue error counter +* compress/qat: fix returned status on overflow +* compress/qat: fix return on building request error +* config: enable C11 memory model for armv8 with meson +* crypto/dpaa2_sec: fix FLC address for physical mode +* crypto/qat: fix block size error handling +* crypto/qat: fix digest in wireless auth case +* crypto/qat: fix message for CCM when setting unused counter +* crypto/qat: fix message for NULL algo setting unused counter +* devtools: fix build check for whether meson has run +* devtools: fix return of forbidden addition checks +* devtools: fix symbol check when adding experimental section +* devtools: fix wrong headline lowercase for arm +* doc: add dependency for PDF in contributing guide +* doc: add GCM AAD limitation in qat guide +* doc: add GRO limitations in programmers guide +* doc: add missing loopback option in testpmd guide +* doc: clarify libnuma requirement for NUMA systems +* doc: fix AESNI_MB guide +* doc: fix a parameter name in testpmd guide +* doc: fix a typo in power management guide +* doc: fix a typo in testpmd guide +* doc: fix a typo in testpmd guide +* doc: fix flow action command names in testpmd guide +* doc: fix garbage text in generated HTML guides +* doc: fix ifc naming +* doc: fix MAC address rewrite actions in prog guide +* doc: fix references in power management guide +* doc: remove note on memory mode limitation in multi-process +* drivers/crypto: fix PMDs memory leak +* drivers: fix sprintf with snprintf +* drivers/net: fix several Tx prepare functions +* eal/bsd: remove clean up of files at startup +* eal: check string parameter lengths +* eal: clean up unused files on initialization +* eal: close multi-process socket during cleanup +* eal: fix build of external app with clang on armv8 +* eal: fix clang build with intrinsics forced +* eal: fix core number validation +* eal: fix detection of duplicate option register +* eal: fix leak on multi-process request error +* eal: fix log level of error in option register +* eal: fix missing newline in a log +* eal: fix out of bound access when no CPU available +* eal: fix strdup usages in internal config +* eal/linux: fix parsing zero socket memory and limits +* efd: fix tail queue leak +* ethdev: declare Tx prepare API as not experimental +* ethdev: fix errno to have positive value +* ethdev: fix typo in queue setup error log +* eventdev: fix error log in eth Rx adapter +* eventdev: fix eth Tx adapter queue count checks +* eventdev: fix xstats documentation typo +* eventdev: remove redundant timer adapter function prototypes +* examples/bond: fix crash when there is no active slave +* examples/bond: fix initialization order +* examples/flow_filtering: fix example documentation +* examples/ipsec-secgw: fix crypto-op might never get dequeued +* examples/ipsec-secgw: fix inbound SA checking +* examples/ipsec-secgw: fix outbound codepath for single SA +* examples/ipsec-secgw: make local variables static +* examples/kni: fix crash while handling userspace request +* examples/tep_term: remove unused constant +* examples/vhost_crypto: fix bracket +* examples/vhost: fix a typo +* examples/vhost: fix path allocation failure handling +* gro: check invalid TCP header length +* gro: fix overflow of payload length calculation +* gso: fix VxLAN/GRE tunnel checks +* hash: fix out-of-bound write while freeing key slot +* hash: fix return of bulk lookup +* ip_frag: fix IPv6 when MTU sizes not aligned to 8 bytes +* kni: fix build for dev_open in Linux 5.0 +* kni: fix build for igb_ndo_bridge_setlink in Linux 5.0 +* kni: fix build on RHEL 8 +* kni: fix build on RHEL8 for arm and Power9 +* malloc: fix deadlock when reading stats +* malloc: fix duplicate mem event notification +* malloc: fix finding maximum contiguous IOVA size +* malloc: make alignment requirements more stringent +* malloc: notify primary process about hotplug in secondary +* mem: check for memfd support in segment fd API +* mem: fix segment fd API error code for external segment +* mem: fix storing old policy +* mem: fix variable shadowing +* memzone: fix unlock on initialization failure +* mk: do not install meson.build in usertools +* mk: fix scope of disabling AVX512F support +* net/af_packet: fix setting MTU decrements sockaddr twice +* net/avf/base: fix comment referencing internal data +* net/bnx2x: cleanup info logs +* net/bnx2x: fix segfaults due to stale interrupt status +* net/bonding: fix possible null pointer reference +* net/bonding: fix reset active slave +* net/cxgbe: fix control queue mbuf pool naming convention +* net/cxgbe: fix overlapping regions in TID table +* net/cxgbe: skip parsing match items with no spec +* net/dpaa2: fix bad check for not-null +* net/dpaa2: fix device init for secondary process +* net/dpaa: fix secondary process +* net/ena: add reset reason in Rx error +* net/ena: add supported RSS offloads types +* net/ena: destroy queues if start failed +* net/ena: do not reconfigure queues on reset +* net/ena: fix cleanup for out of order packets +* net/ena: fix dev init with multi-process +* net/ena: fix errno to positive value +* net/ena: fix invalid reference to variable in union +* net/ena: skip packet with wrong request id +* net/ena: update completion queue after cleanup +* net/enic: remove useless include +* net: fix underflow for checksum of invalid IPv4 packets +* net/fm10k: fix internal switch initial status +* net/i40e: clear VF reset flags after reset +* net/i40e: fix config name in comment +* net/i40e: fix get RSS conf +* net/i40e: fix getting RSS configuration +* net/i40e: fix overwriting RSS RETA +* net/i40e: fix port close +* net/i40e: fix queue region DCB configure +* net/i40e: fix statistics +* net/i40e: fix statistics inconsistency +* net/i40e: fix using recovery mode firmware +* net/i40e: fix VF overwrite PF RSS LUT for X722 +* net/i40e: perform basic validation on VF messages +* net/i40e: remove redundant reset of queue number +* net/i40e: revert fix offload not supported mask +* net/ifc: store only registered device instance +* net/ifcvf: fix typo on struct name +* net/igb: fix LSC interrupt when using MSI-X +* net/ixgbe/base: add LHA ID +* net/ixgbe: fix crash on remove +* net/ixgbe: fix over using multicast table for VF +* net/ixgbe: fix overwriting RSS RETA +* net/ixgbe: fix Rx LRO capability offload for x550 +* net/mlx5: fix build for armv8 +* net/mlx5: fix deprecated library API for Rx padding +* net/mlx5: fix function documentation +* net/mlx5: fix instruction hotspot on replenishing Rx buffer +* net/mlx5: fix Multi-Packet RQ mempool free +* net/mlx5: fix Rx packet padding +* net/mlx5: fix shared counter allocation logic +* net/mlx5: fix TC rule handle assignment +* net/mlx5: fix typos and code style +* net/mlx5: fix validation of Rx queue number +* net/mlx5: fix VXLAN port registration race condition +* net/mlx5: fix VXLAN without decap action for E-Switch +* net/mlx5: remove checks for outer tunnel items on E-Switch +* net/mlx5: support ethernet type for tunnels on E-Switch +* net/mlx5: support tunnel inner items on E-Switch +* net/mlx5: validate ethernet type on E-Switch +* net/mlx5: validate tunnel inner items on E-Switch +* net/netvsc: disable multi-queue on older servers +* net/netvsc: enable SR-IOV +* net/netvsc: fix probe when VF not found +* net/netvsc: fix transmit descriptor pool cleanup +* net/qede: fix performance bottleneck in Rx path +* net/qede: remove prefetch in Tx path +* net/sfc: add missing header guard to TSO header file +* net/sfc/base: fix Tx descriptor max number check +* net/sfc: discard last seen VLAN TCI if Tx packet is dropped +* net/sfc: fix crash in EF10 TSO if no payload +* net/sfc: fix datapath name references in logs +* net/sfc: fix port ID log +* net/sfc: fix Rx packets counter +* net/sfc: fix typo in preprocessor check +* net/sfc: fix VF error/missed stats mapping +* net/sfc: pass HW Tx queue index on creation +* net/tap: add buffer overflow checks before checksum +* net/tap: allow full length names +* net/tap: fix possible uninitialized variable access +* net/tap: let kernel choose tun device name +* net/vhost: fix double free of MAC address +* net/virtio: add barrier before reading the flags +* net/virtio-user: fix used ring in cvq handling +* raw/ifpga: fix memory leak +* Revert "net/mlx5: fix instruction hotspot on replenishing Rx buffer" +* sched: fix memory leak on init failure +* telemetry: fix using ports of different types +* test: check zero socket memory as valid +* test/crypto: fix misleading trace message +* test/fbarray: add to meson +* test/hash: fix perf result +* test/mem: add external mem autotest to meson +* test/metrics: fix a negative case +* timer: fix race condition +* version: 18.11.1-rc1 +* version: 18.11.1-rc2 +* vfio: allow secondary process to query IOMMU type +* vfio: do not unregister callback in secondary process +* vfio: fix error message +* vhost/crypto: fix possible dead loop +* vhost/crypto: fix possible out of bound access +* vhost: enforce avail index and desc read ordering +* vhost: enforce desc flags and content read ordering +* vhost: ensure event idx is mapped when negotiated +* vhost: fix access for indirect descriptors +* vhost: fix crash after mmap failure +* vhost: fix deadlock in driver unregister +* vhost: fix double read of descriptor flags +* vhost: fix memory leak on realloc failure +* vhost: fix possible dead loop in vector filling +* vhost: fix possible out of bound access in vector filling +* vhost: fix race condition when adding fd in the fdset + +18.11.1 Validation +~~~~~~~~~~~~~~~~~~ + +* Intel(R) Testing + + * 18.11.1 LTS release passed the basic Intel(R) NIC(ixgbe and i40e) testing + + * cryptodev + * virtio and Intel NIC/virtio performance + * vlan + * vxlan + * Jumbo frames + * Generic filter + * Flow director + * PF and VF + +* Mellanox(R) Testing + + * Basic functionality + + * Send and receive multiple types of traffic + * testpmd xstats counter test + * testpmd timestamp test + + * Changing/checking link status through testpmd + + * RTE flow and flow_director tests + * Some RSS tests + * VLAN stripping and insertion tests + * Checksum and TSO tests + * ptype tests + * Port interrupt testing + * Multi-process testing + + * Drivers tested + + * MLNX_OFED_LINUX-4.5-1.0.1.0 + * MLNX_OFED_LINUX-4.4-2.0.1.0 + * rdma-core upstream commit 0ea43f6 + + * Tested NICs + + * ConnectX-4 Lx (fw 14.24.1000) + * ConnectX-5 (fw 16.24.1000) + + * OSes tested + + * RHEL7.4 (kernel 5.0.0) + * RHEL7.4 (kernel 3.10.0-693.el7.x86_64) + + +* OVS Testing Intel(R) + + * OVS testing against head OVS Master and OVS 2.11.0 with VSPERF + * Tested with i40e (X710), ixgbe (82599ES) and igb(I350) devices + + * PVP + * P2P + * Multiqueue + * Vhostuserclient reconnect + * Vhost cross-NUMA awareness + * Jumbo frames + * Rate limiting + * QoS policer + +* Microsoft(R) Azure Testing + + * SRIOV/Failsafe + * DPDK-OVS + +* Red Hat(R) Virtualization Testing + + * PF + * VF + * vhost single/multi queues and cross-NUMA + * vhostclient reconnect + * vhost live migration with single/multi queues and cross-NUMA + +18.11.2 Release Notes +---------------------- + +18.11.2 Fixes +~~~~~~~~~~~~~ + +* acl: fix compiler flags with meson and AVX2 runtime +* app/bbdev: replace sprintf with snprintf or strlcpy +* app/crypto-perf: check range of socket id +* app/pdump: remove only created vdevs +* app/test: fix build with musl libc +* app/test: fix flags with meson +* app/test: fix sprintf with strlcat +* app/testpmd: add missing newline when showing statistics +* app/testpmd: extend forwarding statistics to 64 bits +* app/testpmd: fix a typo in log message +* app/testpmd: fix help info for interactive commands +* app/testpmd: fix hex string parser support for flow API +* app/testpmd: fix mempool free on exit +* app/testpmd: fix offload flags after port config +* app/testpmd: fix return value check +* app/testpmd: fix stdout flush after printing stats +* app/testpmd: fix Tx QinQ set +* app/testpmd: fix Tx VLAN and QinQ dependency +* app/testpmd: fix typo in comment +* app/testpmd: fix unintentional integer overflow +* app/testpmd: fix variable use before null check +* app/testpmd: remove unused field from port struct +* app/testpmd: remove useless casts on statistics +* bitrate: fix unchecked return value +* build: fix crash by disabling AVX512 with binutils 2.31 +* build: fix meson binutils workaround +* build: fix ninja install on FreeBSD +* build: remove meson warning for Arm +* build: use default flags for default Arm machine +* bus/dpaa: fix Rx discard register mask +* bus/fslmc: decrease log level for unsupported devices +* bus/fslmc: fix build with musl libc +* bus/fslmc: fix warning with GCC 9 +* bus/fslmc: fix warning with GCC 9 +* bus/fslmc: remove unused include of error.h +* bus/vdev: fix debug message on probing +* bus/vdev: fix hotplug twice +* bus/vmbus: fix check for mmap failure +* bus/vmbus: fix resource leak on error +* bus/vmbus: fix secondary process setup +* bus/vmbus: map ring in secondary process +* bus/vmbus: stop mapping if empty resource found +* cfgfile: replace strcat with strlcat +* ci: add a distinguisher to the extra Travis builds +* ci: enable ccache in Travis +* ci: introduce Travis builds for GitHub repositories +* common/cpt: fix null auth only +* compress/isal: fix compression stream initialization +* compress/isal: fix getting information about CPU +* compress/qat: fix setup inter buffers +* crypto/caam_jr: fix memory leak and illegal access +* crypto/caam_jr: fix shared descriptor endianness +* crypto/caam_jr: fix total length in auth only s/g +* cryptodev: fix driver name comparison +* crypto/dpaa2_sec: fix offset calculation for GCM +* crypto/dpaa2_sec: fix session clearing +* crypto/dpaa: fix session destroy +* crypto/kasumi: fix dependency check +* crypto/openssl: fix big numbers after computations +* crypto/openssl: fix modexp +* crypto/qat: fix null cipher algo for non 8-byte multiple +* crypto/snow3g: add to meson build +* crypto/virtio: fix IV offset +* crypto/virtio: use local log type +* crypto/zuc: fix dependency check +* devtools: accept experimental symbol promotion +* devtools: add libelf dependency to build test +* devtools: fix build test on FreeBSD +* devtools: fix check of symbol added as stable API +* devtools: fix result of svg include check +* devtools: fix symbol name in check log +* devtools: fix test of some build options +* devtools: skip meson build for missing compilers +* devtools: support older compilers with meson test +* devtools: test build of zlib PMD +* doc: add flow API to qede NIC features +* doc: add missing algorithms for AESNI-MB PMD +* doc: fix ABI check script examples +* doc: fix a minor typo in testpmd guide +* doc: fix broken link in LPM guide +* doc: fix examples in bonding guide +* doc: fix formatting in testpmd guide +* doc: fix heading levels in bbdev test guide +* doc: fix interactive commands in testpmd guide +* doc: fix JSON interface for power sample +* doc: fix link in Linux getting started guide +* doc: fix links to doxygen and sphinx sites +* doc: fix missing asymmetric crypto table +* doc: fix PCI whitelist typo in prog guide +* doc: fix spelling in testpmd guide +* doc: fix spelling reported by aspell in comments +* doc: fix spelling reported by aspell in guides +* doc: fix tag for inner RSS feature +* doc: fix two typos in contributing guide +* doc: fix typo in IPC guide +* doc: fix typo in mlx5 guide +* doc: fix typos in mlx5 guide +* doc: fix typos in testpmd user guide +* doc: remove reference to rte.doc.mk in programmers guide +* doc: update cross Arm toolchain in Linux guide +* drivers/event: disable OcteonTx for buggy Arm compilers +* drivers: fix SPDX license id consistency +* drivers/net: fix possible overflow using strlcat +* drivers/net: fix shifting 32-bit signed variable 31 times +* drivers/qat: fix queue pair NUMA node +* eal: fix check when retrieving current CPU affinity +* eal: fix cleanup in no-shconf mode +* eal: fix control threads pinnning +* eal: fix core list validation with disabled cores +* eal: fix formatting of hotplug error message +* eal: fix typo in comment of vector function +* eal: initialize alarms early +* eal/linux: fix log levels for pagemap reading failure +* eal/linux: remove thread ID from debug message +* eal/ppc: fix global memory barrier +* eal: remove dead code in core list parsing +* eal: restrict control threads to startup CPU affinity +* eal: support strlcat function +* eal: tighten permissions on shared memory files +* ethdev: fix a typo +* ethdev: fix method name in doxygen comment +* ethdev: fix typo in error messages +* ethdev: remove unused variable +* eventdev: fix crypto adapter +* eventdev: fix Rx adapter event flush +* eventdev: update references to removed function +* event/dsw: fix capability flags +* event/dsw: ignore scheduling type for single-link queues +* event/opdl: replace sprintf with snprintf +* event/sw: fix enqueue checks in self-test +* examples/ethtool: fix two typos +* examples/fips_validation: fix CMAC test +* examples/ip_pipeline: disable build when no epoll +* examples/ipsec-secgw: fix AES-CTR block size +* examples/ipsec-secgw: fix build error log +* examples/ipsec-secgw: fix debug logs +* examples/ipsec-secgw: fix SPD no-match case +* examples/l2fwd-cat: fix build on FreeBSD +* examples/multi_process: fix buffer underrun +* examples/power: fix buffer overrun +* examples/power: fix build with some disabled PMDs +* examples/power: fix json null termination +* examples/power: fix overflowed value +* examples/power: fix resource leak +* examples/power: fix string null termination +* examples/power: fix string overflow +* examples/power: fix unreachable VF MAC init +* examples/vhost_crypto: fix dependency on vhost library +* examples/vhost_scsi: fix null-check for parameter +* hash: fix doc about thread/process safety +* hash: fix position returned in free slots +* hash: fix total entries count +* ipc: add warnings about correct API usage +* ipc: add warnings about not using IPC with memory API +* ipc: fix memory leak on request failure +* ipc: fix send error handling +* ipc: handle more invalid parameter cases +* ipc: harden message receive +* ipc: unlock on failure +* kni: fix build with Linux 5.1 +* kni: fix type for MAC address +* maintainers: update for IBM POWER +* malloc: fix documentation of realloc function +* malloc: fix IPC message initialization +* mbuf: fix a typo +* mbuf: update Tx VLAN and QinQ flags documentation +* mem: limit use of address hint +* mempool/dpaa2: fix continuous print on empty pool +* mem: warn user when running without NUMA support +* mk: disable packed member pointer warning for telemetry +* mk: disable warning for packed member pointer +* mk: fix AVX512 disabled warning on non x86 +* mk: fix build of shared library with libbsd +* net/atlantic: bad logic with offsets talking with firmware +* net/atlantic: eeprom get/set should consider offset +* net/atlantic: eliminate excessive log levels on Rx/Tx +* net/atlantic: enable broadcast traffic +* net/atlantic: error handling for mailbox access +* net/atlantic: extra line at eof +* net/atlantic: fix buffer overflow +* net/atlantic: fix EEPROM get for small and uneven lengths +* net/atlantic: fix link configuration +* net/atlantic: fix max eeprom size +* net/atlantic: fix missing VLAN filter offload +* net/atlantic: fix negative error codes +* net/atlantic: fix xstats return +* net/atlantic: flow control settings synchronization on rx +* net/atlantic: remove extra checks for error codes +* net/atlantic: remove unused variable +* net/atlantic: use capability bits to detect eeprom access +* net/atlantic: validity check for eeprom dev address +* net/avf: fix admin queue interrupt for ICE +* net/bnx2x: fix DMAE timeout +* net/bnx2x: fix memory leak +* net/bnx2x: fix MTU for jumbo frame +* net/bnx2x: fix optic module verification +* net/bnx2x: fix race for periodic flags +* net/bnx2x: fix ramrod timeout +* net/bnxt: fix big endian build +* net/bnxt: fix Rx VLAN offload flags +* net/bnxt: silence IOVA warnings +* net/bnxt: support IOVA VA mode +* net/bnxt: suppress spurious error log +* net/bonding: avoid warning for invalid port +* net/bonding: fix buffer length when printing strings +* net/bonding: fix LACP negotiation +* net/bonding: fix link status +* net/bonding: fix packet count type for LACP +* net/bonding: fix port id types +* net/bonding: fix queue index types +* net/bonding: fix slave id types +* net/bonding: fix slave Tx burst for mode 4 +* net/bonding: fix Tx in 802.3ad mode +* net/bonding: fix values of descriptor limits +* net/cxgbe: fix colliding function names +* net/cxgbe: fix missing checksum flags and packet type +* net/cxgbe: update Chelsio T5/T6 NIC device ids +* net/enetc: fix big endian build and buffer allocation +* net/enetc: fix crash at high speed traffic +* net/enetc: fix SMMU unhandled context fault +* net/enic: allow flow mark ID 0 +* net/enic: check for unsupported flow item types +* net/enic: fix endianness in VLAN match +* net/enic: fix flow director SCTP matching +* net/enic: fix inner packet matching +* net/enic: fix max MTU calculation +* net/enic: fix SCTP match for flow API +* net/enic: fix VLAN inner type matching for old hardware +* net/enic: fix VXLAN match +* net/enic: move arguments into struct +* net/enic: reset VXLAN port regardless of overlay offload +* net: fix Tx VLAN flag for offload emulation +* net/fm10k: fix VLAN strip offload flag +* net/i40e: fix dereference before check when getting EEPROM +* net/i40e: fix dereference before null check in mbuf release +* net/i40e: fix link speed for X722 +* net/i40e: fix logging on VF close +* net/i40e: fix queue number check +* net/i40e: fix scattered Rx enabling +* net/i40e: fix time sync for 25G +* net/i40e: forbid two RSS flow rules +* net/i40e: log when provided RSS key is not valid +* net/iavf: fix info get +* net/ixgbe: fix warning with GCC 9 +* net/ixgbe: restore VLAN filter for VF +* net/kni: fix return value check +* net/mlx4: change device reference for secondary process +* net/mlx4: fix memory region cleanup +* net/mlx5: check Tx queue size overflow +* net/mlx5: fix comments mixing Rx and Tx +* net/mlx5: fix errno typos in comments +* net/mlx5: fix external memory registration +* net/mlx5: fix flow priorities probing error path +* net/mlx5: fix hex dump of error completion +* net/mlx5: fix instruction hotspot on replenishing Rx buffer +* net/mlx5: fix max number of queues for NEON Tx +* net/mlx5: fix memory event on secondary process +* net/mlx5: fix memory region cleanup +* net/mlx5: fix Multi-Packet RQ mempool name +* net/mlx5: fix packet inline on Tx queue wraparound +* net/mlx5: fix release of Rx queue object +* net/mlx5: fix RSS validation function +* net/mlx5: fix sync when handling Tx completions +* net/mlx5: fix Tx metadata for multi-segment packet +* net/mlx: prefix private structure +* net/mlx: remove debug messages on datapath +* net/netvsc: fix include of fcntl.h +* net/netvsc: fix VF support with secondary process +* net/netvsc: remove useless condition +* net/netvsc: reset mbuf port on VF Rx +* net/nfp: check return value +* net/nfp: fix build with musl libc +* net/nfp: fix file descriptor check +* net/nfp: fix memory leak +* net/nfp: fix possible buffer overflow +* net/nfp: fix potential integer overflow +* net/nfp: fix RSS query +* net/nfp: fix setting MAC address +* net/octeontx: fix vdev name +* net/pcap: fix memory leak +* net/qede: fix Rx packet drop +* net/qede: fix Tx packet prepare for tunnel packets +* net/qede: support IOVA VA mode +* net/ring: avoid hard-coded length +* net/ring: check length of ring name +* net/ring: fix coding style +* net/ring: fix return value check +* net/ring: use calloc style where appropriate +* net/sfc: fix logging from secondary process +* net/sfc: fix MTU change to check Rx scatter consistency +* net/sfc: fix speed capabilities reported in device info +* net/sfc: improve TSO header length check in EF10 datapath +* net/sfc: improve TSO header length check in EFX datapath +* net/sfc: log port ID as 16-bit unsigned integer on panic +* net/sfc: remove control path logging from Rx queue count +* net/softnic: fix possible buffer overflow +* net/tap: fix getting max iovec +* net/tap: fix memory leak on IPC request +* net/tap: fix multi process reply buffer +* net/tap: fix multi-process request +* net/tap: fix potential IPC buffer overrun +* net/vdev_netvsc: fix device cast +* net/virtio: add barrier in interrupt enable +* net/virtio: add barriers for extra descriptors on Rx split +* net/virtio: fix buffer leak on VLAN insert +* net/virtio: fix dangling pointer on failure +* net/virtio: fix duplicate naming of include guard +* net/virtio: fix in-order Tx path for split ring +* net/virtio: remove forward declaration +* net/virtio: remove useless condition +* net/virtio: set offload flag for jumbo frames +* net/virtio-user: fix multi-process support +* net/virtio-user: fix multiqueue with vhost kernel +* net/virtio-user: fix return value check +* net/vmxnet3: add VLAN filter capability +* power: fix cache line alignment +* power: fix governor storage to trim newlines +* power: fix thread-safety environment modification +* power: remove unused variable +* raw/dpaa2_cmdif: fix warnings with GCC 9 +* raw/dpaa2_qdma: fix spin lock release +* raw/dpaa2_qdma: fix to support multiprocess execution +* raw/ifpga: fix file descriptor leak in error path +* raw/ifpga: modify log output +* raw/skeleton: fix warnings with GCC 9 +* Revert "app/testpmd: fix offload flags after port config" +* ring: enforce reading tail before slots +* ring: fix an error message +* ring: fix namesize macro documentation block +* rwlock: reimplement with atomic builtins +* spinlock: reimplement with atomic one-way barrier +* table: fix arm64 hash function selection +* telemetry: fix mapping of statistics +* test/barrier: fix allocation check +* test/barrier: fix for Power CPUs +* test/barrier: fix typo in log +* test/bonding: fix MAC assignment for re-run +* test: clean remaining trace of devargs autotest +* test/compress: fix missing header include +* test/crypto: fix duplicate id used by CCP device +* test/crypto: fix possible overflow using strlcat +* test/distributor: replace sprintf with strlcpy +* test/event: replace sprintf with snprintf +* test/hash: replace sprintf with snprintf +* test/pmd_perf: fix the way to drain the port +* test/spinlock: amortize the cost of getting time +* test/spinlock: remove delay for correct benchmarking +* version: 18.11.2-rc1 +* vfio: document multiprocess limitation for container API +* vhost/crypto: fix parens +* vhost: fix device leak on connection add failure +* vhost: fix interrupt suppression for the split ring +* vhost: fix null pointer checking +* vhost: fix passing destroyed device to destroy callback +* vhost: fix potential use-after-free for memory region +* vhost: fix potential use-after-free for zero copy mbuf +* vhost: fix silent queue enabling with legacy guests +* vhost: fix sprintf with snprintf +* vhost: prevent disabled rings to be processed with zero-copy +* vhost: restore mbuf first when freeing zmbuf + +18.11.2 Validation +~~~~~~~~~~~~~~~~~~ + +* IBM(R) Testing + + * Tests run + + * Single port stability test using l3fwd (16 cpus) and TRex + * 64 and 1500 byte packets at a 0.0% drop rate for 4 hours each + + * System tested + + * IBM Power9 Model 8335-101 CPU: 2.3 (pvr 004e 1203) + + * Tested NICs + + * ConnectX-5 (fw 16.23.1020). + + * OS Tested + + * Ubuntu 18.04.2 LTS (kernel 4.15.0-47-generic) + +* Intel(R) Openvswitch Testing + + * OVS testing against head OVS Master and OVS 2.11.0 with VSPERF + + * Tested NICs + + * i40e (X710) and i40eVF + * ixgbe (82599ES) and ixgbeVF + * igb (I350) and igbVF + + * Functionality + + * P2P + * PVP + * PVVP + * PV-PV in parallel + * Hotplug + * Multiqueue + * Vhostuserclient reconnect + * Vhost cross-NUMA awareness + * Jumbo frames + * Rate limiting + * QoS policer + +* Mellanox(R) Testing + + * Basic functionality + + * Send and receive multiple types of traffic + * testpmd xstats counter test + * testpmd timestamp test + * Changing/checking link status through testpmd + * RTE flow and flow_director tests + * Some RSS tests + * VLAN stripping and insertion tests + * Checksum and TSO tests + * ptype tests + * Port interrupt testing + * Multi-process testing + + * OFED versions tested + + * MLNX_OFED_LINUX-4.5-1.0.1.0 + * MLNX_OFED_LINUX-4.6-1.0.1.1 + + * Tested NICs + + * ConnectX-4 Lx (fw 14.25.1010). + * ConnectX-5 (fw 16.25.1010). + + * OS tested + + * RHEL7.4 (kernel 3.10.0-693.el7.x86_64). + +* Microsoft(R) Azure Testing + + * Images + + * Canonical UbuntuServer 16.04-LTS latest + * Canonical UbuntuServer 18.04-DAILY-LTS latest + * RedHat RHEL 7-RAW latest + * RedHat RHEL 7.5 latest + * Openlogic CentOS 7.5 latest + * SUSE SLES 15 latest + + * Drivers + + * Mellanox and netvsc poll-mode drivers + + * Functionality + + * VM to VM traffic + * SRIOV/Failsafe + * Single and multicore performance + +* Red Hat(R) Testing + + * RHEL 7 and RHEL 8 + * Functionality + + * PF + * VF + * vhost single/multi queues and cross-NUMA + * vhostclient reconnect + * vhost live migration with single/multi queues and cross-NUMA + * OVS PVP + + * Tested NICs + + * X540-AT2 NIC(ixgbe, 10G) + +* Intel(R) Testing + + * Basic Intel(R) NIC(ixgbe and i40e) testing + + * vlan + * vxlan + * Jumbo frames + * Generic filter + * Flow director + * PF and VF + * Intel NIC single core/NIC performance + + * Basic cryptodev and virtio testing + + * cryptodev + * vhost/virtio basic loopback, PVP and performance test + +18.11.2 Known Issues +~~~~~~~~~~~~~~~~~~~~ + +* DPDK 18.11.2 contains fixes up to DPDK v19.05. Issues identified/fixed in DPDK master branch after DPDK v19.05 may be present in DPDK 18.11.2 +* testpmd: queue specific offloads may be over-written by the default config. This is not a regression from earlier DPDK 18.11 releases. + +Fixes skipped and status unresolved +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* dcfbc594f net/iavf: fix queue interrupt for ice (18.02) +* 281bd1aa3 net/iavf: fix stats reset (18.02) +* fe252fb69 test/rwlock: benchmark on all available cores (1.2.3r0) +* 6fef1ae4f test/rwlock: amortize the cost of getting time (1.2.3r0) diff --git a/dpdk/doc/guides/sample_app_ug/bbdev_app.rst b/dpdk/doc/guides/sample_app_ug/bbdev_app.rst index 653f972f3..6ade9c6e1 100644 --- a/dpdk/doc/guides/sample_app_ug/bbdev_app.rst +++ b/dpdk/doc/guides/sample_app_ug/bbdev_app.rst @@ -68,7 +68,7 @@ The application accepts a number of command line options: where: -* ``e ENCODING_CORES``: hexmask for encoding lcored (default = 0x2) +* ``e ENCODING_CORES``: hexmask for encoding lcores (default = 0x2) * ``d DECODING_CORES``: hexmask for decoding lcores (default = 0x4) * ``p ETH_PORT_ID``: ethernet port ID (default = 0) * ``b BBDEV_ID``: BBDev ID (default = 0) @@ -87,7 +87,7 @@ issue the command: $ ./build/bbdev --vdev='baseband_turbo_sw' -w -c 0x38 --socket-mem=2,2 \ --file-prefix=bbdev -- -e 0x10 -d 0x20 -where, NIC0PCIADDR is the PCI addresse of the Rx port +where, NIC0PCIADDR is the PCI address of the Rx port This command creates one virtual bbdev devices ``baseband_turbo_sw`` where the device gets linked to a corresponding ethernet port as whitelisted by diff --git a/dpdk/doc/guides/sample_app_ug/eventdev_pipeline.rst b/dpdk/doc/guides/sample_app_ug/eventdev_pipeline.rst index 0ec02907d..dc7972aa9 100644 --- a/dpdk/doc/guides/sample_app_ug/eventdev_pipeline.rst +++ b/dpdk/doc/guides/sample_app_ug/eventdev_pipeline.rst @@ -49,7 +49,7 @@ these settings is shown below: ./build/eventdev_pipeline --vdev event_sw0 -- -r1 -t1 -e4 -w FF00 -s4 -n0 -c32 -W1000 -D The application has some sanity checking built-in, so if there is a function -(eg; the RX core) which doesn't have a cpu core mask assigned, the application +(e.g.; the RX core) which doesn't have a cpu core mask assigned, the application will print an error message: .. code-block:: console diff --git a/dpdk/doc/guides/sample_app_ug/flow_filtering.rst b/dpdk/doc/guides/sample_app_ug/flow_filtering.rst index 840d557c5..9dba85acf 100644 --- a/dpdk/doc/guides/sample_app_ug/flow_filtering.rst +++ b/dpdk/doc/guides/sample_app_ug/flow_filtering.rst @@ -53,7 +53,7 @@ applications and the Environment Abstraction Layer (EAL) options. Explanation ----------- -The example is build from 2 main files, +The example is built from 2 files, ``main.c`` which holds the example logic and ``flow_blocks.c`` that holds the implementation for building the flow rule. @@ -380,13 +380,9 @@ This function is located in the ``flow_blocks.c`` file. { struct rte_flow_attr attr; struct rte_flow_item pattern[MAX_PATTERN_NUM]; - struct rte_flow_action action[MAX_PATTERN_NUM]; + struct rte_flow_action action[MAX_ACTION_NUM]; struct rte_flow *flow = NULL; struct rte_flow_action_queue queue = { .index = rx_q }; - struct rte_flow_item_eth eth_spec; - struct rte_flow_item_eth eth_mask; - struct rte_flow_item_vlan vlan_spec; - struct rte_flow_item_vlan vlan_mask; struct rte_flow_item_ipv4 ip_spec; struct rte_flow_item_ipv4 ip_mask; @@ -404,37 +400,19 @@ This function is located in the ``flow_blocks.c`` file. * create the action sequence. * one action only, move packet to queue */ - action[0].type = RTE_FLOW_ACTION_TYPE_QUEUE; action[0].conf = &queue; action[1].type = RTE_FLOW_ACTION_TYPE_END; /* - * set the first level of the pattern (eth). + * set the first level of the pattern (ETH). * since in this example we just want to get the * ipv4 we set this level to allow all. */ - memset(ð_spec, 0, sizeof(struct rte_flow_item_eth)); - memset(ð_mask, 0, sizeof(struct rte_flow_item_eth)); - eth_spec.type = 0; - eth_mask.type = 0; pattern[0].type = RTE_FLOW_ITEM_TYPE_ETH; - pattern[0].spec = ð_spec; - pattern[0].mask = ð_mask; /* - * setting the second level of the pattern (vlan). - * since in this example we just want to get the - * ipv4 we also set this level to allow all. - */ - memset(&vlan_spec, 0, sizeof(struct rte_flow_item_vlan)); - memset(&vlan_mask, 0, sizeof(struct rte_flow_item_vlan)); - pattern[1].type = RTE_FLOW_ITEM_TYPE_VLAN; - pattern[1].spec = &vlan_spec; - pattern[1].mask = &vlan_mask; - - /* - * setting the third level of the pattern (ip). + * setting the second level of the pattern (IP). * in this example this is the level we care about * so we set it according to the parameters. */ @@ -444,12 +422,12 @@ This function is located in the ``flow_blocks.c`` file. ip_mask.hdr.dst_addr = dest_mask; ip_spec.hdr.src_addr = htonl(src_ip); ip_mask.hdr.src_addr = src_mask; - pattern[2].type = RTE_FLOW_ITEM_TYPE_IPV4; - pattern[2].spec = &ip_spec; - pattern[2].mask = &ip_mask; + pattern[1].type = RTE_FLOW_ITEM_TYPE_IPV4; + pattern[1].spec = &ip_spec; + pattern[1].mask = &ip_mask; /* the final level must be always type end */ - pattern[3].type = RTE_FLOW_ITEM_TYPE_END; + pattern[2].type = RTE_FLOW_ITEM_TYPE_END; int res = rte_flow_validate(port_id, &attr, pattern, action, error); if(!res) @@ -464,14 +442,10 @@ The first part of the function is declaring the structures that will be used. struct rte_flow_attr attr; struct rte_flow_item pattern[MAX_PATTERN_NUM]; - struct rte_flow_action action[MAX_PATTERN_NUM]; + struct rte_flow_action action[MAX_ACTION_NUM]; struct rte_flow *flow; struct rte_flow_error error; struct rte_flow_action_queue queue = { .index = rx_q }; - struct rte_flow_item_eth eth_spec; - struct rte_flow_item_eth eth_mask; - struct rte_flow_item_vlan vlan_spec; - struct rte_flow_item_vlan vlan_mask; struct rte_flow_item_ipv4 ip_spec; struct rte_flow_item_ipv4 ip_mask; @@ -491,33 +465,17 @@ the rule. In this case send the packet to queue. action[0].conf = &queue; action[1].type = RTE_FLOW_ACTION_TYPE_END; -The forth part is responsible for creating the pattern and is build from -number of step. In each step we build one level of the pattern starting with +The fourth part is responsible for creating the pattern and is built from +number of steps. In each step we build one level of the pattern starting with the lowest one. Setting the first level of the pattern ETH: .. code-block:: c - memset(ð_spec, 0, sizeof(struct rte_flow_item_eth)); - memset(ð_mask, 0, sizeof(struct rte_flow_item_eth)); - eth_spec.type = 0; - eth_mask.type = 0; pattern[0].type = RTE_FLOW_ITEM_TYPE_ETH; - pattern[0].spec = ð_spec; - pattern[0].mask = ð_mask; -Setting the second level of the pattern VLAN: - -.. code-block:: c - - memset(&vlan_spec, 0, sizeof(struct rte_flow_item_vlan)); - memset(&vlan_mask, 0, sizeof(struct rte_flow_item_vlan)); - pattern[1].type = RTE_FLOW_ITEM_TYPE_VLAN; - pattern[1].spec = &vlan_spec; - pattern[1].mask = &vlan_mask; - -Setting the third level ip: +Setting the second level of the pattern IP: .. code-block:: c @@ -527,15 +485,15 @@ Setting the third level ip: ip_mask.hdr.dst_addr = dest_mask; ip_spec.hdr.src_addr = htonl(src_ip); ip_mask.hdr.src_addr = src_mask; - pattern[2].type = RTE_FLOW_ITEM_TYPE_IPV4; - pattern[2].spec = &ip_spec; - pattern[2].mask = &ip_mask; + pattern[1].type = RTE_FLOW_ITEM_TYPE_IPV4; + pattern[1].spec = &ip_spec; + pattern[1].mask = &ip_mask; Closing the pattern part. .. code-block:: c - pattern[3].type = RTE_FLOW_ITEM_TYPE_END; + pattern[2].type = RTE_FLOW_ITEM_TYPE_END; The last part of the function is to validate the rule and create it. diff --git a/dpdk/doc/guides/sample_app_ug/intro.rst b/dpdk/doc/guides/sample_app_ug/intro.rst index 159bcf73b..90704194a 100644 --- a/dpdk/doc/guides/sample_app_ug/intro.rst +++ b/dpdk/doc/guides/sample_app_ug/intro.rst @@ -106,7 +106,7 @@ examples are highlighted below. (packet arrival) and TX (packet transmission) by adding callbacks to the RX and TX packet processing functions. -* :doc:`IPSec Security Gateway`: The IPSec Security +* :doc:`IPsec Security Gateway`: The IPsec Security Gateway application is minimal example of something closer to a real world example. This is also a good example of an application using the DPDK Cryptodev framework. diff --git a/dpdk/doc/guides/sample_app_ug/ip_pipeline.rst b/dpdk/doc/guides/sample_app_ug/ip_pipeline.rst index 447a544d5..4da0fcf89 100644 --- a/dpdk/doc/guides/sample_app_ug/ip_pipeline.rst +++ b/dpdk/doc/guides/sample_app_ug/ip_pipeline.rst @@ -113,7 +113,7 @@ Application stages Initialization ~~~~~~~~~~~~~~ -During this stage, EAL layer is initialised and application specific arguments are parsed. Furthermore, the data strcutures +During this stage, EAL layer is initialised and application specific arguments are parsed. Furthermore, the data structures (i.e. linked lists) for application objects are initialized. In case of any initialization error, an error message is displayed and the application is terminated. @@ -185,7 +185,7 @@ Examples +-----------------------+----------------------+----------------+------------------------------------+ | IP routing | LPM (IPv4) | Forward | 1. Mempool Create | | | | | 2. Link create | - | | * Key = IP dest addr | | 3. Pipeline creat | + | | * Key = IP dest addr | | 3. Pipeline create | | | * Offset = 286 | | 4. Pipeline port in/out | | | * Table size = 4K | | 5. Pipeline table | | | | | 6. Pipeline port in table | diff --git a/dpdk/doc/guides/sample_app_ug/ipsec_secgw.rst b/dpdk/doc/guides/sample_app_ug/ipsec_secgw.rst index 4869a011d..5f7d39736 100644 --- a/dpdk/doc/guides/sample_app_ug/ipsec_secgw.rst +++ b/dpdk/doc/guides/sample_app_ug/ipsec_secgw.rst @@ -25,8 +25,8 @@ The application classifies the ports as *Protected* and *Unprotected*. Thus, traffic received on an Unprotected or Protected port is consider Inbound or Outbound respectively. -The application also supports complete IPSec protocol offload to hardware -(Look aside crypto accelarator or using ethernet device). It also support +The application also supports complete IPsec protocol offload to hardware +(Look aside crypto accelerator or using ethernet device). It also support inline ipsec processing by the supported ethernet device during transmission. These modes can be selected during the SA creation configuration. diff --git a/dpdk/doc/guides/sample_app_ug/performance_thread.rst b/dpdk/doc/guides/sample_app_ug/performance_thread.rst index fbd30a5ea..96f0fc6fd 100644 --- a/dpdk/doc/guides/sample_app_ug/performance_thread.rst +++ b/dpdk/doc/guides/sample_app_ug/performance_thread.rst @@ -500,8 +500,8 @@ An application may save and retrieve a single pointer to application data in the L-thread struct. For legacy and backward compatibility reasons two alternative methods are also -offered, the first is modelled directly on the pthread get/set specific APIs, -the second approach is modelled on the ``RTE_PER_LCORE`` macros, whereby +offered, the first is modeled directly on the pthread get/set specific APIs, +the second approach is modeled on the ``RTE_PER_LCORE`` macros, whereby ``PER_LTHREAD`` macros are introduced, in both cases the storage is local to the L-thread. diff --git a/dpdk/doc/guides/sample_app_ug/qos_metering.rst b/dpdk/doc/guides/sample_app_ug/qos_metering.rst index 2e8e0175f..d75f7da52 100644 --- a/dpdk/doc/guides/sample_app_ug/qos_metering.rst +++ b/dpdk/doc/guides/sample_app_ug/qos_metering.rst @@ -151,5 +151,5 @@ In this particular case: * For the rest of the cases, the color is changed to red. .. note:: - * In color blind mode, first row GREEN colour is only valid. + * In color blind mode, first row GREEN color is only valid. * To drop the packet, policer_table action has to be set to DROP. diff --git a/dpdk/doc/guides/sample_app_ug/test_pipeline.rst b/dpdk/doc/guides/sample_app_ug/test_pipeline.rst index a9370c80b..af9665b2c 100644 --- a/dpdk/doc/guides/sample_app_ug/test_pipeline.rst +++ b/dpdk/doc/guides/sample_app_ug/test_pipeline.rst @@ -32,7 +32,7 @@ Compiling the Application ------------------------- To compile the sample application see :doc:`compiling` -The application is located in the ``$RTE_SDK/test/test-pipline`` directory. +The application is located in the ``$RTE_SDK/test/test-pipeline`` directory. Running the Application diff --git a/dpdk/doc/guides/sample_app_ug/vhost.rst b/dpdk/doc/guides/sample_app_ug/vhost.rst index df4d6f9a0..a71ada654 100644 --- a/dpdk/doc/guides/sample_app_ug/vhost.rst +++ b/dpdk/doc/guides/sample_app_ug/vhost.rst @@ -116,7 +116,7 @@ will create it. Put simply, it's the server to create the socket file. The vm2vm parameter sets the mode of packet switching between guests in the host. -- 0 disables vm2vm, impling that VM's packets will always go to the NIC port. +- 0 disables vm2vm, implying that VM's packets will always go to the NIC port. - 1 means a normal mac lookup packet routing. - 2 means hardware mode packet forwarding between guests, it allows packets go to the NIC port, hardware L2 switch will determine which guest the @@ -148,7 +148,7 @@ default value is 15. **--dequeue-zero-copy** Dequeue zero copy will be enabled when this option is given. it is worth to -note that if NIC is binded to driver with iommu enabled, dequeue zero copy +note that if NIC is bound to driver with iommu enabled, dequeue zero copy cannot work at VM2NIC mode (vm2vm=0) due to currently we don't setup iommu dma mapping for guest memory. diff --git a/dpdk/doc/guides/sample_app_ug/vhost_scsi.rst b/dpdk/doc/guides/sample_app_ug/vhost_scsi.rst index 7ab7d0d53..6b9bf62eb 100644 --- a/dpdk/doc/guides/sample_app_ug/vhost_scsi.rst +++ b/dpdk/doc/guides/sample_app_ug/vhost_scsi.rst @@ -63,7 +63,7 @@ Vhost_scsi Common Issues * vhost_scsi can not start with block size 512 Bytes: - Currently DPDK vhost library was designed for NET device(althrough the APIs + Currently DPDK vhost library was designed for NET device(although the APIs are generic now), for 512 Bytes block device, Qemu BIOS(x86 BIOS Enhanced Disk Device) will enumerate all block device and do some IOs to those block devices with 512 Bytes sector size. DPDK vhost library can not process such diff --git a/dpdk/doc/guides/sample_app_ug/vm_power_management.rst b/dpdk/doc/guides/sample_app_ug/vm_power_management.rst index 5be9f24d5..a7b7a2c7b 100644 --- a/dpdk/doc/guides/sample_app_ug/vm_power_management.rst +++ b/dpdk/doc/guides/sample_app_ug/vm_power_management.rst @@ -339,7 +339,7 @@ monitoring of branch ratio on cores doing busy polling via PMDs. When this parameter is used, the list of cores specified will monitor the ratio between branch hits and branch misses. A tightly polling PMD thread will have a - very low branch ratio, so the core frequency will be scaled down to the minimim + very low branch ratio, so the core frequency will be scaled down to the minimum allowed value. When packets are received, the code path will alter, causing the branch ratio to increase. When the ratio goes above the ratio threshold, the core frequency will be scaled up to the maximum allowed value. @@ -379,7 +379,7 @@ the file. The fifo is at /tmp/powermonitor/fifo -The jason string can be a policy or instruction, and takes the following +The JSON string can be a policy or instruction, and takes the following format: .. code-block:: javascript @@ -592,7 +592,7 @@ Profile destroy example: .. code-block:: javascript - {"profile": { + {"policy": { "name": "ubuntu", "command": "destroy", }} @@ -601,8 +601,9 @@ Power command example: .. code-block:: javascript - {"command": { + {"instruction": { "name": "ubuntu", + "command": "power", "unit": "SCALE_MAX", "resource_id": 10 }} @@ -729,7 +730,7 @@ policy down to the host application. These parameters are as follows: A comma-separated list of cores in the VM that the user wants the host application to monitor. The list of cores in any vm starts at zero, and these are mapped to the physical cores by the host application once the policy is passed down. - Valid syntax includes individial cores '2,3,4', or a range of cores '2-4', or a + Valid syntax includes individual cores '2,3,4', or a range of cores '2-4', or a combination of both '1,3,5-7' .. code-block:: console @@ -737,7 +738,7 @@ policy down to the host application. These parameters are as follows: --busy-hours {list of busy hours} A comma-separated list of hours within which to set the core frequency to maximum. - Valid syntax includes individial hours '2,3,4', or a range of hours '2-4', or a + Valid syntax includes individual hours '2,3,4', or a range of hours '2-4', or a combination of both '1,3,5-7'. Valid hours are 0 to 23. .. code-block:: console @@ -745,7 +746,7 @@ policy down to the host application. These parameters are as follows: --quiet-hours {list of quiet hours} A comma-separated list of hours within which to set the core frequency to minimum. - Valid syntax includes individial hours '2,3,4', or a range of hours '2-4', or a + Valid syntax includes individual hours '2,3,4', or a range of hours '2-4', or a combination of both '1,3,5-7'. Valid hours are 0 to 23. .. code-block:: console diff --git a/dpdk/doc/guides/testpmd_app_ug/run_app.rst b/dpdk/doc/guides/testpmd_app_ug/run_app.rst index f717bd3f4..89df03166 100644 --- a/dpdk/doc/guides/testpmd_app_ug/run_app.rst +++ b/dpdk/doc/guides/testpmd_app_ug/run_app.rst @@ -22,7 +22,7 @@ They must be separated from the EAL options, shown in the previous section, with sudo ./testpmd -l 0-3 -n 4 -- -i --portmask=0x1 --nb-cores=2 -The commandline options are: +The command line options are: * ``-i, --interactive`` @@ -196,7 +196,7 @@ The commandline options are: * ``--port-topology=mode`` - Set port topology, where mode is ``paired`` (the default) or ``chained``. + Set port topology, where mode is ``paired`` (the default), ``chained`` or ``loop``. In ``paired`` mode, the forwarding is between pairs of ports, for example: (0,1), (2,3), (4,5). @@ -204,6 +204,8 @@ The commandline options are: The ordering of the ports can be changed using the portlist testpmd runtime function. + In ``loop`` mode, ingress traffic is simply transmitted back on the same interface. + * ``--forward-mode=mode`` Set the forwarding mode where ``mode`` is one of the following:: @@ -363,7 +365,7 @@ The commandline options are: * ``--hot-plug`` - Enable device event monitor machenism for hotplug. + Enable device event monitor mechanism for hotplug. * ``--vxlan-gpe-port=N`` @@ -403,21 +405,21 @@ The commandline options are: * ``--noisy-lkup-memory=N`` - Set the size of the noisy neighbour simulation memory buffer in MB to N. + Set the size of the noisy neighbor simulation memory buffer in MB to N. Only available with the noisy forwarding mode. The default value is 0. * ``--noisy-lkup-num-reads=N`` - Set the number of reads to be done in noisy neighbour simulation memory buffer to N. + Set the number of reads to be done in noisy neighbor simulation memory buffer to N. Only available with the noisy forwarding mode. The default value is 0. * ``--noisy-lkup-num-writes=N`` - Set the number of writes to be done in noisy neighbour simulation memory buffer to N. + Set the number of writes to be done in noisy neighbor simulation memory buffer to N. Only available with the noisy forwarding mode. The default value is 0. * ``--noisy-lkup-num-reads-writes=N`` - Set the number of r/w accesses to be done in noisy neighbour simulation memory buffer to N. + Set the number of r/w accesses to be done in noisy neighbor simulation memory buffer to N. Only available with the noisy forwarding mode. The default value is 0. diff --git a/dpdk/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/dpdk/doc/guides/testpmd_app_ug/testpmd_funcs.rst index 056f8bb32..81f10727f 100644 --- a/dpdk/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/dpdk/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -302,9 +302,9 @@ The available information categories are: This is the default mode. * ``mac``: Changes the source and the destination Ethernet addresses of packets before forwarding them. - Default application behaviour is to set source Ethernet address to that of the transmitting interface, and destination + Default application behavior is to set source Ethernet address to that of the transmitting interface, and destination address to a dummy value (set during init). The user may specify a target destination Ethernet address via the 'eth-peer' or - 'eth-peer-configfile' command-line options. It is not currently possible to specify a specific source Ethernet address. + 'eth-peers-configfile' command-line options. It is not currently possible to specify a specific source Ethernet address. * ``macswap``: MAC swap forwarding mode. Swaps the source and the destination Ethernet addresses of packets before forwarding them. @@ -318,14 +318,14 @@ The available information categories are: * ``csum``: Changes the checksum field with hardware or software methods depending on the offload flags on the packet. -* ``icmpecho``: Receives a burst of packets, lookup for IMCP echo requests and, if any, send back ICMP echo replies. +* ``icmpecho``: Receives a burst of packets, lookup for ICMP echo requests and, if any, send back ICMP echo replies. * ``ieee1588``: Demonstrate L2 IEEE1588 V2 PTP timestamping for RX and TX. Requires ``CONFIG_RTE_LIBRTE_IEEE1588=y``. * ``softnic``: Demonstrates the softnic forwarding operation. In this mode, packet forwarding is similar to I/O mode except for the fact that packets are loopback to the softnic ports only. Therefore, portmask parameter should be set to softnic port only. The various software based custom NIC pipelines specified through the softnic firmware (DPDK packet framework script) can be tested in this mode. Furthermore, it allows to build 5-level hierarchical QoS scheduler as a default option that can be enabled through CLI once testpmd application is initialised. The user can modify the default scheduler hierarchy or can specify the new QoS Scheduler hierarchy through CLI. Requires ``CONFIG_RTE_LIBRTE_PMD_SOFTNIC=y``. -* ``noisy``: Noisy neighbour simulation. +* ``noisy``: Noisy neighbor simulation. Simulate more realistic behavior of a guest machine engaged in receiving and sending packets performing Virtual Network Function (VNF). @@ -430,6 +430,56 @@ Show Tx metadata value set for a specific port:: testpmd> show port (port_id) tx_metadata +dump physmem +~~~~~~~~~~~~ + +Dumps all physical memory segment layouts:: + + testpmd> dump_physmem + +dump memzone +~~~~~~~~~~~~ + +Dumps the layout of all memory zones:: + + testpmd> dump_memzone + + +dump struct size +~~~~~~~~~~~~~~~~ + +Dumps the size of all memory structures:: + + testpmd> dump_struct_sizes + +dump ring +~~~~~~~~~ + +Dumps the status of all or specific element in DPDK rings:: + + testpmd> dump_ring [ring_name] + +dump mempool +~~~~~~~~~~~~ + +Dumps the statistics of all or specific memory pool:: + + testpmd> dump_mempool [mempool_name] + +dump devargs +~~~~~~~~~~~~ + +Dumps the user device list:: + + testpmd> dump_devargs + +dump log types +~~~~~~~~~~~~~~ + +Dumps the log level for all the dpdk modules:: + + testpmd> dump_log_types + Configuration Functions ----------------------- @@ -476,9 +526,11 @@ Where: * ``level`` is the log level. For example, to change the global log level:: + testpmd> set log global (level) Regexes can also be used for type. To change log level of user1, user2 and user3:: + testpmd> set log user[1-3] (level) set nbport @@ -930,11 +982,12 @@ Flush all queue region related configuration on a port:: where: -* "on"is just an enable function which server for other configuration, +* ``on``: is just an enable function which server for other configuration, it is for all configuration about queue region from up layer, - at first will only keep in DPDK softwarestored in driver, + at first will only keep in DPDK software stored in driver, only after "flush on", it commit all configuration to HW. - "off" is just clean all configuration about queue region just now, + +* ``off``: is just clean all configuration about queue region just now, and restore all to DPDK i40e driver default config when start up. Show all queue region related configuration info on a port:: @@ -1002,6 +1055,20 @@ Display the status of TCP Segmentation Offload:: testpmd> tso show (port_id) +tunnel tso set +~~~~~~~~~~~~~~ + +Set tso segment size of tunneled packets for a port in csum engine:: + + testpmd> tunnel_tso set (tso_segsz) (port_id) + +tunnel tso show +~~~~~~~~~~~~~~~ + +Display the status of tunneled TCP Segmentation Offload for a port:: + + testpmd> tunnel_tso show (port_id) + set port - gro ~~~~~~~~~~~~~~ @@ -1123,6 +1190,22 @@ Remove a MAC address from a port:: testpmd> mac_addr remove (port_id) (XX:XX:XX:XX:XX:XX) +mcast_addr add +~~~~~~~~~~~~~~ + +To add the multicast MAC address to/from the set of multicast addresses +filtered by port:: + + testpmd> mcast_addr add (port_id) (mcast_addr) + +mcast_addr remove +~~~~~~~~~~~~~~~~~ + +To remove the multicast MAC address to/from the set of multicast addresses +filtered by port:: + + testpmd> mcast_addr remove (port_id) (mcast_addr) + mac_addr add (for VF) ~~~~~~~~~~~~~~~~~~~~~ @@ -1149,7 +1232,7 @@ set eth-peer Set the forwarding peer address for certain port:: - testpmd> set eth-peer (port_id) (perr_addr) + testpmd> set eth-peer (port_id) (peer_addr) This is equivalent to the ``--eth-peer`` command-line option. @@ -1583,7 +1666,7 @@ Configure the outer layer to encapsulate a packet inside a VXLAN tunnel:: udp-dst (udp-dst) ip-src (ip-src) ip-dst (ip-dst) vlan-tci (vlan-tci) \ eth-src (eth-src) eth-dst (eth-dst) -Those command will set an internal configuration inside testpmd, any following +These commands will set an internal configuration inside testpmd, any following flow rule using the action vxlan_encap will use the last configuration set. To have a different encapsulation header, one of those commands must be called before the flow rule creation. @@ -1598,7 +1681,7 @@ Configure the outer layer to encapsulate a packet inside a NVGRE tunnel:: set nvgre-with-vlan ip-version (ipv4|ipv6) tni (tni) ip-src (ip-src) \ ip-dst (ip-dst) vlan-tci (vlan-tci) eth-src (eth-src) eth-dst (eth-dst) -Those command will set an internal configuration inside testpmd, any following +These commands will set an internal configuration inside testpmd, any following flow rule using the action nvgre_encap will use the last configuration set. To have a different encapsulation header, one of those commands must be called before the flow rule creation. @@ -1641,7 +1724,7 @@ Configure the outer layer to encapsulate a packet inside a MPLSoGRE tunnel:: ip-src (ip-src) ip-dst (ip-dst) vlan-tci (vlan-tci) \ eth-src (eth-src) eth-dst (eth-dst) -Those command will set an internal configuration inside testpmd, any following +These commands will set an internal configuration inside testpmd, any following flow rule using the action mplsogre_encap will use the last configuration set. To have a different encapsulation header, one of those commands must be called before the flow rule creation. @@ -1654,7 +1737,7 @@ Configure the outer layer to decapsulate MPLSoGRE packet:: set mplsogre_decap ip-version (ipv4|ipv6) set mplsogre_decap-with-vlan ip-version (ipv4|ipv6) -Those command will set an internal configuration inside testpmd, any following +These commands will set an internal configuration inside testpmd, any following flow rule using the action mplsogre_decap will use the last configuration set. To have a different decapsulation header, one of those commands must be called before the flow rule creation. @@ -1671,7 +1754,7 @@ Configure the outer layer to encapsulate a packet inside a MPLSoUDP tunnel:: udp-src (udp-src) udp-dst (udp-dst) ip-src (ip-src) ip-dst (ip-dst) \ vlan-tci (vlan-tci) eth-src (eth-src) eth-dst (eth-dst) -Those command will set an internal configuration inside testpmd, any following +These commands will set an internal configuration inside testpmd, any following flow rule using the action mplsoudp_encap will use the last configuration set. To have a different encapsulation header, one of those commands must be called before the flow rule creation. @@ -1684,7 +1767,7 @@ Configure the outer layer to decapsulate MPLSoUDP packet:: set mplsoudp_decap ip-version (ipv4|ipv6) set mplsoudp_decap-with-vlan ip-version (ipv4|ipv6) -Those command will set an internal configuration inside testpmd, any following +These commands will set an internal configuration inside testpmd, any following flow rule using the action mplsoudp_decap will use the last configuration set. To have a different decapsulation header, one of those commands must be called before the flow rule creation. @@ -2113,11 +2196,13 @@ port config input set ~~~~~~~~~~~~~~~~~~~~~ Config RSS/FDIR/FDIR flexible payload input set for some pctype:: + testpmd> port config (port_id) pctype (pctype_id) \ (hash_inset|fdir_inset|fdir_flx_inset) \ (get|set|clear) field (field_idx) Clear RSS/FDIR/FDIR flexible payload input set for some pctype:: + testpmd> port config (port_id) pctype (pctype_id) \ (hash_inset|fdir_inset|fdir_flx_inset) clear all @@ -2130,6 +2215,7 @@ port config udp_tunnel_port ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Add/remove UDP tunnel port for VXLAN/GENEVE tunneling protocols:: + testpmd> port config (port_id) udp_tunnel_port add|rm vxlan|geneve (udp_port) port config tx_metadata @@ -2140,6 +2226,26 @@ testpmd will add this value to any Tx packet sent from this port:: testpmd> port config (port_id) tx_metadata (value) +port config mtu +~~~~~~~~~~~~~~~ + +To configure MTU(Maximum Transmission Unit) on devices using testpmd:: + + testpmd> port config mtu (port_id) (value) + +port config rss hash key +~~~~~~~~~~~~~~~~~~~~~~~~ + +To configure the RSS hash key used to compute the RSS +hash of input [IP] packets received on port:: + + testpmd> port config rss-hash-key (ipv4|ipv4-frag|\ + ipv4-tcp|ipv4-udp|ipv4-sctp|ipv4-other|\ + ipv6|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|\ + ipv6-other|l2-payload|ipv6-ex|ipv6-tcp-ex|\ + ipv6-udp-ex ) + Link Bonding Functions ---------------------- @@ -2246,7 +2352,7 @@ set bonding lacp dedicated_queue ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Enable dedicated tx/rx queues on bonding devices slaves to handle LACP control plane traffic -when in mode 4 (link-aggregration-802.3ad):: +when in mode 4 (link-aggregation-802.3ad):: testpmd> set bonding lacp dedicated_queues (port_id) (enable|disable) @@ -2254,7 +2360,7 @@ when in mode 4 (link-aggregration-802.3ad):: set bonding agg_mode ~~~~~~~~~~~~~~~~~~~~ -Enable one of the specific aggregators mode when in mode 4 (link-aggregration-802.3ad):: +Enable one of the specific aggregators mode when in mode 4 (link-aggregation-802.3ad):: testpmd> set bonding agg_mode (port_id) (bandwidth|count|stable) @@ -2648,8 +2754,8 @@ where: * ``shared_shaper_id``: Shared shaper ID to be deleted. -Set port traffic management hiearchy node private shaper -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Set port traffic management hierarchy node private shaper +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ set the port traffic management hierarchy node private shaper:: @@ -2700,7 +2806,7 @@ Delete the WRED profile:: Add port traffic management hierarchy nonleaf node ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Add nonleaf node to port traffic management hiearchy:: +Add nonleaf node to port traffic management hierarchy:: testpmd> add port tm nonleaf node (port_id) (node_id) (parent_node_id) \ (priority) (weight) (level_id) (shaper_profile_id) \ @@ -2715,7 +2821,7 @@ where: * ``weight``: Node weight (lowest weight is one). The node weight is relative to the weight sum of all siblings that have the same priority. It is used by the WFQ algorithm running on the parent node for scheduling this node. -* ``level_id``: Hiearchy level of the node. +* ``level_id``: Hierarchy level of the node. * ``shaper_profile_id``: Shaper profile ID of the private shaper to be used by the node. * ``n_sp_priorities``: Number of strict priorities. @@ -2726,7 +2832,7 @@ where: Add port traffic management hierarchy leaf node ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Add leaf node to port traffic management hiearchy:: +Add leaf node to port traffic management hierarchy:: testpmd> add port tm leaf node (port_id) (node_id) (parent_node_id) \ (priority) (weight) (level_id) (shaper_profile_id) \ @@ -2741,7 +2847,7 @@ where: * ``weight``: Node weight (lowest weight is one). The node weight is relative to the weight sum of all siblings that have the same priority. It is used by the WFQ algorithm running on the parent node for scheduling this node. -* ``level_id``: Hiearchy level of the node. +* ``level_id``: Hierarchy level of the node. * ``shaper_profile_id``: Shaper profile ID of the private shaper to be used by the node. * ``cman_mode``: Congestion management mode to be enabled for this node. @@ -2753,7 +2859,7 @@ where: Delete port traffic management hierarchy node ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Delete node from port traffic management hiearchy:: +Delete node from port traffic management hierarchy:: testpmd> del port tm node (port_id) (node_id) @@ -3705,7 +3811,7 @@ This section lists supported pattern items and their attributes, if any. - ``sla {MAC-48}``: source Ethernet LLA. -- ``icmp6_nd_opt_sla_eth``: match ICMPv6 neighbor discovery target Ethernet +- ``icmp6_nd_opt_tla_eth``: match ICMPv6 neighbor discovery target Ethernet link-layer address option. - ``tla {MAC-48}``: target Ethernet LLA. @@ -3931,12 +4037,12 @@ This section lists supported actions and their attributes, if any. - ``ipv6_addr``: New IPv6 destination address. -- ``of_set_tp_src``: Set a new source port number in the outermost TCP/UDP +- ``set_tp_src``: Set a new source port number in the outermost TCP/UDP header. - ``port``: New TCP/UDP source port number. -- ``of_set_tp_dst``: Set a new destination port number in the outermost TCP/UDP +- ``set_tp_dst``: Set a new destination port number in the outermost TCP/UDP header. - ``port``: New TCP/UDP destination port number. @@ -3946,7 +4052,7 @@ This section lists supported actions and their attributes, if any. - ``dec_ttl``: Performs a decrease TTL value action -- ``set_ttl``: Set TTL value with specificed value +- ``set_ttl``: Set TTL value with specified value - ``ttl_value {unsigned}``: The new TTL value to be set - ``set_mac_src``: set source MAC address @@ -4467,7 +4573,7 @@ The following sections show functions to load/unload eBPF based filters. bpf-load ~~~~~~~~ -Load an eBPF program as a callback for partciular RX/TX queue:: +Load an eBPF program as a callback for particular RX/TX queue:: testpmd> bpf-load rx|tx (portid) (queueid) (load-flags) (bpf-prog-filename) @@ -4490,13 +4596,13 @@ For example: cd test/bpf clang -O2 -target bpf -c t1.c -Then to load (and JIT compile) t1.o at RX queue 0, port 1:: +Then to load (and JIT compile) t1.o at RX queue 0, port 1: .. code-block:: console testpmd> bpf-load rx 1 0 J ./dpdk.org/test/bpf/t1.o -To load (not JITed) t1.o at TX queue 0, port 0:: +To load (not JITed) t1.o at TX queue 0, port 0: .. code-block:: console @@ -4505,7 +4611,7 @@ To load (not JITed) t1.o at TX queue 0, port 0:: bpf-unload ~~~~~~~~~~ -Unload previously loaded eBPF program for partciular RX/TX queue:: +Unload previously loaded eBPF program for particular RX/TX queue:: testpmd> bpf-unload rx|tx (portid) (queueid) diff --git a/dpdk/doc/guides/tools/cryptoperf.rst b/dpdk/doc/guides/tools/cryptoperf.rst index c366af4e9..2fc65441d 100644 --- a/dpdk/doc/guides/tools/cryptoperf.rst +++ b/dpdk/doc/guides/tools/cryptoperf.rst @@ -59,7 +59,7 @@ To set on the linearization options add below definition to the **Step 3: Build the application** Execute the ``dpdk-setup.sh`` script to build the DPDK library together with the -``dpdk-test-crypto-perf`` applcation. +``dpdk-test-crypto-perf`` application. Initially, the user must select a DPDK target to choose the correct target type and compiler options to use when building the libraries. @@ -80,7 +80,7 @@ EAL Options ~~~~~~~~~~~ The following are the EAL command-line options that can be used in conjunction -with the ``dpdk-test-crypto-perf`` applcation. +with the ``dpdk-test-crypto-perf`` application. See the DPDK Getting Started Guides for more information on these options. * ``-c `` or ``-l `` @@ -96,10 +96,10 @@ See the DPDK Getting Started Guides for more information on these options. Add a virtual device. -Appication Options -~~~~~~~~~~~~~~~~~~ +Application Options +~~~~~~~~~~~~~~~~~~~ -The following are the appication command-line options: +The following are the application command-line options: * ``--ptest type`` @@ -338,13 +338,13 @@ Test Vector File The test vector file is a text file contain information about test vectors. The file is made of the sections. The first section doesn't have header. It contain global information used in each test variant vectors - -typically information about plaintext, ciphertext, cipher key, aut key, +typically information about plaintext, ciphertext, cipher key, auth key, initial vector. All other sections begin header. The sections contain particular information typically digest. **Format of the file:** -Each line beginig with sign '#' contain comment and it is ignored by parser:: +Each line beginning with sign '#' contain comment and it is ignored by parser:: # @@ -352,16 +352,16 @@ Header line is just name in square bracket:: [
] -Data line contain information tocken then sign '=' and +Data line contain information token then sign '=' and a string of bytes in C byte array format:: - = + = -**Tockens list:** +**Tokens list:** * ``plaintext`` - Original plaintext to be crypted. + Original plaintext to be encrypted. * ``ciphertext`` diff --git a/dpdk/doc/guides/tools/proc_info.rst b/dpdk/doc/guides/tools/proc_info.rst index d5b5ed6a6..e9a0b79d3 100644 --- a/dpdk/doc/guides/tools/proc_info.rst +++ b/dpdk/doc/guides/tools/proc_info.rst @@ -48,7 +48,7 @@ Limitations * When running ``dpdk-procinfo`` with shared library mode, it is required to pass the same NIC PMD libraries as used for the primary application. Any - mismatch in PMD library arguments can lead to undefined behaviour and results + mismatch in PMD library arguments can lead to undefined behavior and results affecting primary application too. * Stats retrieval using ``dpdk-procinfo`` is not supported for virtual devices like PCAP and TAP. diff --git a/dpdk/doc/guides/tools/testbbdev.rst b/dpdk/doc/guides/tools/testbbdev.rst index 5caa90239..a8cb6fbbe 100644 --- a/dpdk/doc/guides/tools/testbbdev.rst +++ b/dpdk/doc/guides/tools/testbbdev.rst @@ -139,7 +139,7 @@ There are 6 main test cases that can be executed using testbbdev tool: * Latency measurement [-c latency] - Measures the time consumed from the first enqueue until the first appearance of a dequeued result - - This measurment represents the full latency of a bbdev operation + - This measurement represents the full latency of a bbdev operation (encode or decode) to execute * Poll-mode Throughput measurement [-c throughput] @@ -307,7 +307,7 @@ baseband_null device does not have to be defined explicitly as it is created by Test Vector files -================= +----------------- Test Vector files contain the data which is used to set turbo decoder/encoder parameters and buffers for validation purpose. New test vector files should be @@ -316,7 +316,7 @@ the syntax of the test vector files is in the following section. Basic principles for test vector files --------------------------------------- +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Line started with ``#`` is treated as a comment and is ignored. If variable is a chain of values, values should be separated by a comma. If @@ -351,7 +351,7 @@ documented in *rte_bbdev_op.h* Turbo decoder test vectors template ------------------------------------ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ For turbo decoder it has to be always set to ``RTE_BBDEV_OP_TURBO_DEC`` @@ -528,7 +528,7 @@ Following statuses can be used: Turbo encoder test vectors template ------------------------------------ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ For turbo encoder it has to be always set to ``RTE_BBDEV_OP_TURBO_ENC`` diff --git a/dpdk/drivers/baseband/turbo_sw/Makefile b/dpdk/drivers/baseband/turbo_sw/Makefile index 79eb55477..d36467706 100644 --- a/dpdk/drivers/baseband/turbo_sw/Makefile +++ b/dpdk/drivers/baseband/turbo_sw/Makefile @@ -27,8 +27,8 @@ CFLAGS += -I$(FLEXRAN_SDK)/lib_turbo CFLAGS += -I$(FLEXRAN_SDK)/lib_crc CFLAGS += -I$(FLEXRAN_SDK)/lib_rate_matching -LDLIBS += -L$(FLEXRAN_SDK)/lib_crc -lcrc LDLIBS += -L$(FLEXRAN_SDK)/lib_turbo -lturbo +LDLIBS += -L$(FLEXRAN_SDK)/lib_crc -lcrc LDLIBS += -L$(FLEXRAN_SDK)/lib_rate_matching -lrate_matching LDLIBS += -L$(FLEXRAN_SDK)/lib_common -lcommon LDLIBS += -lstdc++ -lirc -limf -lipps diff --git a/dpdk/drivers/bus/dpaa/base/fman/fman_hw.c b/dpdk/drivers/bus/dpaa/base/fman/fman_hw.c index 4ebbc3d34..9ab8e835d 100644 --- a/dpdk/drivers/bus/dpaa/base/fman/fman_hw.c +++ b/dpdk/drivers/bus/dpaa/base/fman/fman_hw.c @@ -603,9 +603,9 @@ fman_if_discard_rx_errors(struct fman_if *fm_if) out_be32(fmbm_rfsem, 0); /* Configure the discard mask to discard the error packets which have - * DMA errors, Frame size error, Header error etc. The mask 0x010CE3F0 + * DMA errors, Frame size error, Header error etc. The mask 0x010EE3F0 * is to configured discard all the errors which come in the FD[STATUS] */ fmbm_rfsdm = &((struct rx_bmi_regs *)__if->bmi_map)->fmbm_rfsdm; - out_be32(fmbm_rfsdm, 0x010CE3F0); + out_be32(fmbm_rfsdm, 0x010EE3F0); } diff --git a/dpdk/drivers/bus/dpaa/dpaa_bus.c b/dpdk/drivers/bus/dpaa/dpaa_bus.c index 203f60dc1..c7da96f8d 100644 --- a/dpdk/drivers/bus/dpaa/dpaa_bus.c +++ b/dpdk/drivers/bus/dpaa/dpaa_bus.c @@ -250,52 +250,53 @@ dpaa_clean_device_list(void) int rte_dpaa_portal_init(void *arg) { - cpu_set_t cpuset; pthread_t id; - uint32_t cpu = rte_lcore_id(); + unsigned int cpu, lcore = rte_lcore_id(); int ret; struct dpaa_portal *dpaa_io_portal; BUS_INIT_FUNC_TRACE(); - if ((size_t)arg == 1 || cpu == LCORE_ID_ANY) - cpu = rte_get_master_lcore(); - /* if the core id is not supported */ + if ((size_t)arg == 1 || lcore == LCORE_ID_ANY) + lcore = rte_get_master_lcore(); else - if (cpu >= RTE_MAX_LCORE) + if (lcore >= RTE_MAX_LCORE) return -1; - /* Set CPU affinity for this thread */ - CPU_ZERO(&cpuset); - CPU_SET(cpu, &cpuset); + cpu = lcore_config[lcore].core_id; + + /* Set CPU affinity for this thread.*/ id = pthread_self(); - ret = pthread_setaffinity_np(id, sizeof(cpu_set_t), &cpuset); + ret = pthread_setaffinity_np(id, sizeof(cpu_set_t), + &lcore_config[lcore].cpuset); if (ret) { - DPAA_BUS_LOG(ERR, "pthread_setaffinity_np failed on " - "core :%d with ret: %d", cpu, ret); + DPAA_BUS_LOG(ERR, "pthread_setaffinity_np failed on core :%u" + " (lcore=%u) with ret: %d", cpu, lcore, ret); return ret; } /* Initialise bman thread portals */ ret = bman_thread_init(); if (ret) { - DPAA_BUS_LOG(ERR, "bman_thread_init failed on " - "core %d with ret: %d", cpu, ret); + DPAA_BUS_LOG(ERR, "bman_thread_init failed on core %u" + " (lcore=%u) with ret: %d", cpu, lcore, ret); return ret; } - DPAA_BUS_LOG(DEBUG, "BMAN thread initialized"); + DPAA_BUS_LOG(DEBUG, "BMAN thread initialized - CPU=%d lcore=%d", + cpu, lcore); /* Initialise qman thread portals */ ret = qman_thread_init(); if (ret) { - DPAA_BUS_LOG(ERR, "bman_thread_init failed on " - "core %d with ret: %d", cpu, ret); + DPAA_BUS_LOG(ERR, "qman_thread_init failed on core %u" + " (lcore=%u) with ret: %d", cpu, lcore, ret); bman_thread_finish(); return ret; } - DPAA_BUS_LOG(DEBUG, "QMAN thread initialized"); + DPAA_BUS_LOG(DEBUG, "QMAN thread initialized - CPU=%d lcore=%d", + cpu, lcore); dpaa_io_portal = rte_malloc(NULL, sizeof(struct dpaa_portal), RTE_CACHE_LINE_SIZE); @@ -312,8 +313,8 @@ int rte_dpaa_portal_init(void *arg) ret = pthread_setspecific(dpaa_portal_key, (void *)dpaa_io_portal); if (ret) { - DPAA_BUS_LOG(ERR, "pthread_setspecific failed on " - "core %d with ret: %d", cpu, ret); + DPAA_BUS_LOG(ERR, "pthread_setspecific failed on core %u" + " (lcore=%u) with ret: %d", cpu, lcore, ret); dpaa_portal_finish(NULL); return ret; @@ -542,6 +543,10 @@ rte_dpaa_bus_probe(void) unsigned int svr_ver; int probe_all = rte_dpaa_bus.bus.conf.scan_mode != RTE_BUS_SCAN_WHITELIST; + /* If DPAA bus is not present nothing needs to be done */ + if (TAILQ_EMPTY(&rte_dpaa_bus.device_list)) + return 0; + svr_file = fopen(DPAA_SOC_ID_FILE, "r"); if (svr_file) { if (fscanf(svr_file, "svr:%x", &svr_ver) > 0) @@ -586,8 +591,7 @@ rte_dpaa_bus_probe(void) /* Register DPAA mempool ops only if any DPAA device has * been detected. */ - if (!TAILQ_EMPTY(&rte_dpaa_bus.device_list)) - rte_mbuf_set_platform_mempool_ops(DPAA_MEMPOOL_OPS_NAME); + rte_mbuf_set_platform_mempool_ops(DPAA_MEMPOOL_OPS_NAME); return 0; } diff --git a/dpdk/drivers/bus/fslmc/fslmc_bus.c b/dpdk/drivers/bus/fslmc/fslmc_bus.c index 89af9385a..776b7caad 100644 --- a/dpdk/drivers/bus/fslmc/fslmc_bus.c +++ b/dpdk/drivers/bus/fslmc/fslmc_bus.c @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: BSD-3-Clause * - * Copyright 2016 NXP + * Copyright 2016,2018 NXP * */ @@ -195,7 +195,7 @@ scan_one_fslmc_device(char *dev_name) t_ptr = strtok(NULL, "."); if (!t_ptr) { - DPAA2_BUS_ERR("Incorrect device string observed (%s)", t_ptr); + DPAA2_BUS_ERR("Incorrect device string observed (null)"); goto cleanup; } @@ -227,20 +227,16 @@ static int rte_fslmc_parse(const char *name, void *addr) { uint16_t dev_id; - char *t_ptr; - char *sep = strchr(name, ':'); + char *t_ptr = NULL, *dname = NULL; - if (strncmp(name, RTE_STR(FSLMC_BUS_NAME), - strlen(RTE_STR(FSLMC_BUS_NAME)))) { + /* 'name' is expected to contain name of device, for example, dpio.1, + * dpni.2, etc. + */ + + dname = strdup(name); + if (!dname) return -EINVAL; - } - - if (!sep) { - DPAA2_BUS_ERR("Incorrect device name observed"); - return -EINVAL; - } - - t_ptr = (char *)(sep + 1); + t_ptr = dname; if (strncmp("dpni", t_ptr, 4) && strncmp("dpseci", t_ptr, 6) && @@ -250,25 +246,30 @@ rte_fslmc_parse(const char *name, void *addr) strncmp("dpci", t_ptr, 4) && strncmp("dpmcp", t_ptr, 5) && strncmp("dpdmai", t_ptr, 6)) { - DPAA2_BUS_ERR("Unknown or unsupported device"); - return -EINVAL; + DPAA2_BUS_DEBUG("Unknown or unsupported device (%s)", name); + goto err_out; } t_ptr = strchr(name, '.'); if (!t_ptr) { - DPAA2_BUS_ERR("Incorrect device string observed (%s)", t_ptr); - return -EINVAL; + DPAA2_BUS_ERR("Incorrect device string observed (null)"); + goto err_out; } t_ptr = (char *)(t_ptr + 1); if (sscanf(t_ptr, "%hu", &dev_id) <= 0) { DPAA2_BUS_ERR("Incorrect device string observed (%s)", t_ptr); - return -EINVAL; + goto err_out; } + free(dname); if (addr) - strcpy(addr, (char *)(sep + 1)); + strcpy(addr, name); + return 0; +err_out: + free(dname); + return -EINVAL; } static int @@ -293,8 +294,8 @@ rte_fslmc_scan(void) goto scan_fail; /* Scan devices on the group */ - sprintf(fslmc_dirpath, "%s/%d/devices", VFIO_IOMMU_GROUP_PATH, - groupid); + snprintf(fslmc_dirpath, sizeof(fslmc_dirpath), "%s/%d/devices", + VFIO_IOMMU_GROUP_PATH, groupid); dir = opendir(fslmc_dirpath); if (!dir) { DPAA2_BUS_ERR("Unable to open VFIO group directory"); diff --git a/dpdk/drivers/bus/fslmc/fslmc_vfio.c b/dpdk/drivers/bus/fslmc/fslmc_vfio.c index 493b6e5be..ce82a99f6 100644 --- a/dpdk/drivers/bus/fslmc/fslmc_vfio.c +++ b/dpdk/drivers/bus/fslmc/fslmc_vfio.c @@ -176,7 +176,7 @@ static int vfio_map_irq_region(struct fslmc_vfio_group *group) vaddr = (unsigned long *)mmap(NULL, 0x1000, PROT_WRITE | PROT_READ, MAP_SHARED, container_device_fd, 0x6030000); if (vaddr == MAP_FAILED) { - DPAA2_BUS_ERR("Unable to map region (errno = %d)", errno); + DPAA2_BUS_INFO("Unable to map region (errno = %d)", errno); return -errno; } diff --git a/dpdk/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c b/dpdk/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c index ce0699842..ba2e28ce1 100644 --- a/dpdk/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c +++ b/dpdk/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c @@ -53,6 +53,10 @@ static uint32_t io_space_count; /* Variable to store DPAA2 platform type */ uint32_t dpaa2_svr_family; +/* Physical core id for lcores running on dpaa2. */ +/* DPAA2 only support 1 lcore to 1 phy cpu mapping */ +static unsigned int dpaa2_cpu[RTE_MAX_LCORE]; + /* Variable to store DPAA2 DQRR size */ uint8_t dpaa2_dqrr_size; /* Variable to store DPAA2 EQCR size */ @@ -92,7 +96,8 @@ dpaa2_core_cluster_sdest(int cpu_id) } #ifdef RTE_LIBRTE_PMD_DPAA2_EVENTDEV -static void dpaa2_affine_dpio_intr_to_respective_core(int32_t dpio_id) +static void +dpaa2_affine_dpio_intr_to_respective_core(int32_t dpio_id, int lcoreid) { #define STRING_LEN 28 #define COMMAND_LEN 50 @@ -125,7 +130,7 @@ static void dpaa2_affine_dpio_intr_to_respective_core(int32_t dpio_id) return; } - cpu_mask = cpu_mask << rte_lcore_id(); + cpu_mask = cpu_mask << dpaa2_cpu[lcoreid]; snprintf(command, COMMAND_LEN, "echo %X > /proc/irq/%s/smp_affinity", cpu_mask, token); ret = system(command); @@ -139,7 +144,7 @@ static void dpaa2_affine_dpio_intr_to_respective_core(int32_t dpio_id) fclose(file); } -static int dpaa2_dpio_intr_init(struct dpaa2_dpio_dev *dpio_dev) +static int dpaa2_dpio_intr_init(struct dpaa2_dpio_dev *dpio_dev, int lcoreid) { struct epoll_event epoll_ev; int eventfd, dpio_epoll_fd, ret; @@ -176,32 +181,36 @@ static int dpaa2_dpio_intr_init(struct dpaa2_dpio_dev *dpio_dev) } dpio_dev->epoll_fd = dpio_epoll_fd; - dpaa2_affine_dpio_intr_to_respective_core(dpio_dev->hw_id); + dpaa2_affine_dpio_intr_to_respective_core(dpio_dev->hw_id, lcoreid); return 0; } #endif static int -dpaa2_configure_stashing(struct dpaa2_dpio_dev *dpio_dev, int cpu_id) +dpaa2_configure_stashing(struct dpaa2_dpio_dev *dpio_dev, int lcoreid) { int sdest, ret; + int cpu_id; /* Set the Stashing Destination */ - if (cpu_id < 0) { - cpu_id = rte_get_master_lcore(); - if (cpu_id < 0) { + if (lcoreid < 0) { + lcoreid = rte_get_master_lcore(); + if (lcoreid < 0) { DPAA2_BUS_ERR("Getting CPU Index failed"); return -1; } } + + cpu_id = dpaa2_cpu[lcoreid]; + /* Set the STASH Destination depending on Current CPU ID. * Valid values of SDEST are 4,5,6,7. Where, */ sdest = dpaa2_core_cluster_sdest(cpu_id); - DPAA2_BUS_DEBUG("Portal= %d CPU= %u SDEST= %d", - dpio_dev->index, cpu_id, sdest); + DPAA2_BUS_DEBUG("Portal= %d CPU= %u lcore id =%u SDEST= %d", + dpio_dev->index, cpu_id, lcoreid, sdest); ret = dpio_set_stashing_destination(dpio_dev->dpio, CMD_PRI_LOW, dpio_dev->token, sdest); @@ -211,7 +220,7 @@ dpaa2_configure_stashing(struct dpaa2_dpio_dev *dpio_dev, int cpu_id) } #ifdef RTE_LIBRTE_PMD_DPAA2_EVENTDEV - if (dpaa2_dpio_intr_init(dpio_dev)) { + if (dpaa2_dpio_intr_init(dpio_dev, lcoreid)) { DPAA2_BUS_ERR("Interrupt registration failed for dpio"); return -1; } @@ -220,7 +229,7 @@ dpaa2_configure_stashing(struct dpaa2_dpio_dev *dpio_dev, int cpu_id) return 0; } -struct dpaa2_dpio_dev *dpaa2_get_qbman_swp(int cpu_id) +struct dpaa2_dpio_dev *dpaa2_get_qbman_swp(int lcoreid) { struct dpaa2_dpio_dev *dpio_dev = NULL; int ret; @@ -236,7 +245,7 @@ struct dpaa2_dpio_dev *dpaa2_get_qbman_swp(int cpu_id) DPAA2_BUS_DEBUG("New Portal %p (%d) affined thread - %lu", dpio_dev, dpio_dev->index, syscall(SYS_gettid)); - ret = dpaa2_configure_stashing(dpio_dev, cpu_id); + ret = dpaa2_configure_stashing(dpio_dev, lcoreid); if (ret) DPAA2_BUS_ERR("dpaa2_configure_stashing failed"); @@ -340,6 +349,39 @@ dpaa2_affine_qbman_ethrx_swp(void) } } +/* + * This checks for not supported lcore mappings as well as get the physical + * cpuid for the lcore. + * one lcore can only map to 1 cpu i.e. 1@10-14 not supported. + * one cpu can be mapped to more than one lcores. + */ +static int +dpaa2_check_lcore_cpuset(void) +{ + unsigned int lcore_id, i; + int ret = 0; + + for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id++) + dpaa2_cpu[lcore_id] = 0xffffffff; + + for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id++) { + for (i = 0; i < RTE_MAX_LCORE; i++) { + if (CPU_ISSET(i, &lcore_config[lcore_id].cpuset)) { + RTE_LOG(DEBUG, EAL, "lcore id = %u cpu=%u\n", + lcore_id, i); + if (dpaa2_cpu[lcore_id] != 0xffffffff) { + DPAA2_BUS_ERR( + "ERR:lcore map to multi-cpu not supported"); + ret = -1; + } else { + dpaa2_cpu[lcore_id] = i; + } + } + } + } + return ret; +} + static int dpaa2_create_dpio_device(int vdev_fd, struct vfio_device_info *obj_info, @@ -349,6 +391,7 @@ dpaa2_create_dpio_device(int vdev_fd, struct vfio_region_info reg_info = { .argsz = sizeof(reg_info)}; struct qbman_swp_desc p_des; struct dpio_attr attr; + static int check_lcore_cpuset; if (obj_info->num_regions < NUM_DPIO_REGIONS) { DPAA2_BUS_ERR("Not sufficient number of DPIO regions"); @@ -368,7 +411,16 @@ dpaa2_create_dpio_device(int vdev_fd, /* Using single portal for all devices */ dpio_dev->mc_portal = rte_mcp_ptr_list[MC_PORTAL_INDEX]; + if (!check_lcore_cpuset) { + check_lcore_cpuset = 1; + + if (dpaa2_check_lcore_cpuset() < 0) + goto err; + } + dpio_dev->dpio = malloc(sizeof(struct fsl_mc_io)); + memset(dpio_dev->dpio, 0, sizeof(struct fsl_mc_io)); + if (!dpio_dev->dpio) { DPAA2_BUS_ERR("Memory allocation failure"); goto err; diff --git a/dpdk/drivers/bus/fslmc/qbman/include/compat.h b/dpdk/drivers/bus/fslmc/qbman/include/compat.h index 655bff4b6..1ddd69e12 100644 --- a/dpdk/drivers/bus/fslmc/qbman/include/compat.h +++ b/dpdk/drivers/bus/fslmc/qbman/include/compat.h @@ -11,13 +11,13 @@ #ifndef _GNU_SOURCE #define _GNU_SOURCE #endif +#include #include #include #include #include #include #include -#include #include #include diff --git a/dpdk/drivers/bus/fslmc/qbman/include/fsl_qbman_debug.h b/dpdk/drivers/bus/fslmc/qbman/include/fsl_qbman_debug.h index 072ad551c..e010b1b6a 100644 --- a/dpdk/drivers/bus/fslmc/qbman/include/fsl_qbman_debug.h +++ b/dpdk/drivers/bus/fslmc/qbman/include/fsl_qbman_debug.h @@ -1,7 +1,7 @@ -/* Copyright (C) 2015 Freescale Semiconductor, Inc. - * - * SPDX-License-Identifier: BSD-3-Clause +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (C) 2015 Freescale Semiconductor, Inc. */ + struct qbman_swp; struct qbman_fq_query_np_rslt { diff --git a/dpdk/drivers/bus/fslmc/qbman/qbman_debug.c b/dpdk/drivers/bus/fslmc/qbman/qbman_debug.c index 591673abc..0bb2ce880 100644 --- a/dpdk/drivers/bus/fslmc/qbman/qbman_debug.c +++ b/dpdk/drivers/bus/fslmc/qbman/qbman_debug.c @@ -1,6 +1,5 @@ -/* Copyright (C) 2015 Freescale Semiconductor, Inc. - * - * SPDX-License-Identifier: BSD-3-Clause +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (C) 2015 Freescale Semiconductor, Inc. */ #include "compat.h" diff --git a/dpdk/drivers/bus/fslmc/qbman/qbman_portal.c b/dpdk/drivers/bus/fslmc/qbman/qbman_portal.c index 3380e54f5..bbea37efc 100644 --- a/dpdk/drivers/bus/fslmc/qbman/qbman_portal.c +++ b/dpdk/drivers/bus/fslmc/qbman/qbman_portal.c @@ -683,8 +683,8 @@ static int qbman_swp_enqueue_ring_mode_mem_back(struct qbman_swp *s, full_mask = s->eqcr.pi_mask; if (!s->eqcr.available) { eqcr_ci = s->eqcr.ci; - s->eqcr.ci = qbman_cinh_read(&s->sys, - QBMAN_CENA_SWP_EQCR_CI) & full_mask; + s->eqcr.ci = qbman_cena_read_reg(&s->sys, + QBMAN_CENA_SWP_EQCR_CI_MEMBACK) & full_mask; s->eqcr.available = qm_cyc_diff(s->eqcr.pi_ring_size, eqcr_ci, s->eqcr.ci); if (!s->eqcr.available) @@ -809,8 +809,8 @@ static int qbman_swp_enqueue_multiple_mem_back(struct qbman_swp *s, full_mask = s->eqcr.pi_mask; if (!s->eqcr.available) { eqcr_ci = s->eqcr.ci; - s->eqcr.ci = qbman_cinh_read(&s->sys, - QBMAN_CENA_SWP_EQCR_CI) & full_mask; + s->eqcr.ci = qbman_cena_read_reg(&s->sys, + QBMAN_CENA_SWP_EQCR_CI_MEMBACK) & full_mask; s->eqcr.available = qm_cyc_diff(s->eqcr.pi_ring_size, eqcr_ci, s->eqcr.ci); if (!s->eqcr.available) @@ -941,8 +941,8 @@ static int qbman_swp_enqueue_multiple_desc_mem_back(struct qbman_swp *s, full_mask = s->eqcr.pi_mask; if (!s->eqcr.available) { eqcr_ci = s->eqcr.ci; - s->eqcr.ci = qbman_cinh_read(&s->sys, - QBMAN_CENA_SWP_EQCR_CI) & full_mask; + s->eqcr.ci = qbman_cena_read_reg(&s->sys, + QBMAN_CENA_SWP_EQCR_CI_MEMBACK) & full_mask; s->eqcr.available = qm_cyc_diff(s->eqcr.pi_ring_size, eqcr_ci, s->eqcr.ci); if (!s->eqcr.available) diff --git a/dpdk/drivers/bus/fslmc/qbman/qbman_sys.h b/dpdk/drivers/bus/fslmc/qbman/qbman_sys.h index d41af8358..0571097ab 100644 --- a/dpdk/drivers/bus/fslmc/qbman/qbman_sys.h +++ b/dpdk/drivers/bus/fslmc/qbman/qbman_sys.h @@ -55,6 +55,7 @@ #define QBMAN_CENA_SWP_RR(vb) (0x700 + ((uint32_t)(vb) >> 1)) #define QBMAN_CENA_SWP_VDQCR 0x780 #define QBMAN_CENA_SWP_EQCR_CI 0x840 +#define QBMAN_CENA_SWP_EQCR_CI_MEMBACK 0x1840 /* CENA register offsets in memory-backed mode */ #define QBMAN_CENA_SWP_DQRR_MEM(n) (0x800 + ((uint32_t)(n) << 6)) diff --git a/dpdk/drivers/bus/ifpga/ifpga_bus.c b/dpdk/drivers/bus/ifpga/ifpga_bus.c index 5f23ed8b4..55d3abf9f 100644 --- a/dpdk/drivers/bus/ifpga/ifpga_bus.c +++ b/dpdk/drivers/bus/ifpga/ifpga_bus.c @@ -125,15 +125,13 @@ ifpga_scan_one(struct rte_rawdev *rawdev, IFPGA_AFU_BTS); goto end; } + afu_pr_conf.pr_enable = 1; } else { - IFPGA_BUS_ERR("arg %s is mandatory for ifpga bus", - IFPGA_AFU_BTS); - goto end; + afu_pr_conf.pr_enable = 0; } afu_pr_conf.afu_id.uuid.uuid_low = 0; afu_pr_conf.afu_id.uuid.uuid_high = 0; - afu_pr_conf.pr_enable = path?1:0; if (ifpga_find_afu_dev(rawdev, &afu_pr_conf.afu_id)) goto end; @@ -308,12 +306,19 @@ ifpga_probe_all_drivers(struct rte_afu_device *afu_dev) } TAILQ_FOREACH(drv, &ifpga_afu_drv_list, next) { - if (ifpga_probe_one_driver(drv, afu_dev)) { - ret = -1; - break; - } + ret = ifpga_probe_one_driver(drv, afu_dev); + if (ret < 0) + /* negative value is an error */ + return ret; + if (ret > 0) + /* positive value means driver doesn't support it */ + continue; + return 0; } - return ret; + if ((ret > 0) && (afu_dev->driver == NULL)) + return 0; + else + return ret; } /* diff --git a/dpdk/drivers/bus/ifpga/rte_bus_ifpga.h b/dpdk/drivers/bus/ifpga/rte_bus_ifpga.h index d53c0f483..0bf43ba88 100644 --- a/dpdk/drivers/bus/ifpga/rte_bus_ifpga.h +++ b/dpdk/drivers/bus/ifpga/rte_bus_ifpga.h @@ -13,7 +13,7 @@ #ifdef __cplusplus extern "C" { -#endif +#endif /* __cplusplus */ #include #include @@ -143,4 +143,8 @@ RTE_PMD_EXPORT_NAME(nm, __COUNTER__) #define RTE_PMD_REGISTER_AFU_ALIAS(nm, alias)\ static const char *afudrvinit_ ## nm ## _alias = RTE_STR(alias) +#ifdef __cplusplus +} +#endif /* __cplusplus */ + #endif /* _RTE_BUS_IFPGA_H_ */ diff --git a/dpdk/drivers/bus/pci/linux/pci_vfio.c b/dpdk/drivers/bus/pci/linux/pci_vfio.c index 54a4c959e..8e3d43e9c 100644 --- a/dpdk/drivers/bus/pci/linux/pci_vfio.c +++ b/dpdk/drivers/bus/pci/linux/pci_vfio.c @@ -658,7 +658,7 @@ pci_vfio_map_resource_primary(struct rte_pci_device *dev) vfio_res = rte_zmalloc("VFIO_RES", sizeof(*vfio_res), 0); if (vfio_res == NULL) { RTE_LOG(ERR, EAL, - "%s(): cannot store uio mmap details\n", __func__); + "%s(): cannot store vfio mmap details\n", __func__); goto err_vfio_dev_fd; } memcpy(&vfio_res->pci_addr, &dev->addr, sizeof(vfio_res->pci_addr)); diff --git a/dpdk/drivers/bus/vdev/vdev.c b/dpdk/drivers/bus/vdev/vdev.c index 2c03ca418..87f0e2b6b 100644 --- a/dpdk/drivers/bus/vdev/vdev.c +++ b/dpdk/drivers/bus/vdev/vdev.c @@ -143,10 +143,11 @@ vdev_probe_all_drivers(struct rte_vdev_device *dev) struct rte_vdev_driver *driver; int ret; - name = rte_vdev_device_name(dev); + if (rte_dev_is_probed(&dev->device)) + return -EEXIST; - VDEV_LOG(DEBUG, "Search driver %s to probe device %s", name, - rte_vdev_device_name(dev)); + name = rte_vdev_device_name(dev); + VDEV_LOG(DEBUG, "Search driver to probe device %s", name); if (vdev_parse(name, &driver)) return -1; @@ -482,7 +483,7 @@ static int vdev_probe(void) { struct rte_vdev_device *dev; - int ret = 0; + int r, ret = 0; /* call the init function for each virtual device */ TAILQ_FOREACH(dev, &vdev_device_list, next) { @@ -491,10 +492,10 @@ vdev_probe(void) * we call each driver probe. */ - if (rte_dev_is_probed(&dev->device)) - continue; - - if (vdev_probe_all_drivers(dev)) { + r = vdev_probe_all_drivers(dev); + if (r != 0) { + if (r == -EEXIST) + continue; VDEV_LOG(ERR, "failed to initialize %s device", rte_vdev_device_name(dev)); ret = -1; diff --git a/dpdk/drivers/bus/vmbus/linux/vmbus_uio.c b/dpdk/drivers/bus/vmbus/linux/vmbus_uio.c index 12e97e3a4..7cab5c19f 100644 --- a/dpdk/drivers/bus/vmbus/linux/vmbus_uio.c +++ b/dpdk/drivers/bus/vmbus/linux/vmbus_uio.c @@ -202,6 +202,7 @@ static int vmbus_uio_map_subchan(const struct rte_vmbus_device *dev, char ring_path[PATH_MAX]; size_t file_size; struct stat sb; + void *mapaddr; int fd; snprintf(ring_path, sizeof(ring_path), @@ -232,18 +233,65 @@ static int vmbus_uio_map_subchan(const struct rte_vmbus_device *dev, return -EINVAL; } - *ring_size = file_size / 2; - *ring_buf = vmbus_map_resource(vmbus_map_addr, fd, - 0, sb.st_size, 0); + mapaddr = vmbus_map_resource(vmbus_map_addr, fd, + 0, file_size, 0); close(fd); - if (ring_buf == MAP_FAILED) + if (mapaddr == MAP_FAILED) return -EIO; + *ring_size = file_size / 2; + *ring_buf = mapaddr; + vmbus_map_addr = RTE_PTR_ADD(ring_buf, file_size); return 0; } +int +vmbus_uio_map_secondary_subchan(const struct rte_vmbus_device *dev, + const struct vmbus_channel *chan) +{ + const struct vmbus_br *br = &chan->txbr; + char ring_path[PATH_MAX]; + void *mapaddr, *ring_buf; + uint32_t ring_size; + int fd; + + snprintf(ring_path, sizeof(ring_path), + "%s/%s/channels/%u/ring", + SYSFS_VMBUS_DEVICES, dev->device.name, + chan->relid); + + ring_buf = br->vbr; + ring_size = br->dsize + sizeof(struct vmbus_bufring); + VMBUS_LOG(INFO, "secondary ring_buf %p size %u", + ring_buf, ring_size); + + fd = open(ring_path, O_RDWR); + if (fd < 0) { + VMBUS_LOG(ERR, "Cannot open %s: %s", + ring_path, strerror(errno)); + return -errno; + } + + mapaddr = vmbus_map_resource(ring_buf, fd, 0, 2 * ring_size, 0); + close(fd); + + if (mapaddr == ring_buf) + return 0; + + if (mapaddr == MAP_FAILED) + VMBUS_LOG(ERR, + "mmap subchan %u in secondary failed", chan->relid); + else { + VMBUS_LOG(ERR, + "mmap subchan %u in secondary address mismatch", + chan->relid); + vmbus_unmap_resource(mapaddr, 2 * ring_size); + } + return -1; +} + int vmbus_uio_map_rings(struct vmbus_channel *chan) { const struct rte_vmbus_device *dev = chan->device; @@ -357,6 +405,12 @@ int vmbus_uio_get_subchan(struct vmbus_channel *primary, continue; } + if (!vmbus_isnew_subchannel(primary, relid)) + continue; /* Already know about you */ + + if (!vmbus_uio_ring_present(dev, relid)) + continue; /* Ring may not be ready yet */ + snprintf(subchan_path, sizeof(subchan_path), "%s/%lu", chan_path, relid); err = vmbus_uio_sysfs_read(subchan_path, "subchannel_id", @@ -370,12 +424,6 @@ int vmbus_uio_get_subchan(struct vmbus_channel *primary, if (subid == 0) continue; /* skip primary channel */ - if (!vmbus_isnew_subchannel(primary, relid)) - continue; - - if (!vmbus_uio_ring_present(dev, relid)) - continue; /* Ring may not be ready yet */ - err = vmbus_uio_sysfs_read(subchan_path, "monitor_id", &monid, UINT8_MAX); if (err) { diff --git a/dpdk/drivers/bus/vmbus/private.h b/dpdk/drivers/bus/vmbus/private.h index 211127dd8..f19b14e4a 100644 --- a/dpdk/drivers/bus/vmbus/private.h +++ b/dpdk/drivers/bus/vmbus/private.h @@ -45,6 +45,7 @@ struct mapped_vmbus_resource { rte_uuid_t id; int nb_maps; + struct vmbus_channel *primary; struct vmbus_map maps[VMBUS_MAX_RESOURCE]; char path[PATH_MAX]; }; @@ -107,6 +108,8 @@ bool vmbus_uio_subchannels_supported(const struct rte_vmbus_device *dev, int vmbus_uio_get_subchan(struct vmbus_channel *primary, struct vmbus_channel **subchan); int vmbus_uio_map_rings(struct vmbus_channel *chan); +int vmbus_uio_map_secondary_subchan(const struct rte_vmbus_device *dev, + const struct vmbus_channel *chan); void vmbus_br_setup(struct vmbus_br *br, void *buf, unsigned int blen); diff --git a/dpdk/drivers/bus/vmbus/vmbus_channel.c b/dpdk/drivers/bus/vmbus/vmbus_channel.c index bd14c0662..46b3ba3f9 100644 --- a/dpdk/drivers/bus/vmbus/vmbus_channel.c +++ b/dpdk/drivers/bus/vmbus/vmbus_channel.c @@ -352,12 +352,21 @@ int vmbus_chan_create(const struct rte_vmbus_device *device, int rte_vmbus_chan_open(struct rte_vmbus_device *device, struct vmbus_channel **new_chan) { + struct mapped_vmbus_resource *uio_res; int err; + uio_res = vmbus_uio_find_resource(device); + if (!uio_res) { + VMBUS_LOG(ERR, "can't find uio resource"); + return -EINVAL; + } + err = vmbus_chan_create(device, device->relid, 0, device->monitor_id, new_chan); - if (!err) + if (!err) { device->primary = *new_chan; + uio_res->primary = *new_chan; + } return err; } @@ -396,11 +405,16 @@ void rte_vmbus_chan_close(struct vmbus_channel *chan) const struct rte_vmbus_device *device = chan->device; struct vmbus_channel *primary = device->primary; - if (chan != primary) + /* + * intentionally leak primary channel because + * secondary may still reference it + */ + if (chan != primary) { STAILQ_REMOVE(&primary->subchannel_list, chan, vmbus_channel, next); + rte_free(chan); + } - rte_free(chan); } static void vmbus_dump_ring(FILE *f, const char *id, const struct vmbus_br *br) diff --git a/dpdk/drivers/bus/vmbus/vmbus_common_uio.c b/dpdk/drivers/bus/vmbus/vmbus_common_uio.c index 5ddd36ab6..9947f82ab 100644 --- a/dpdk/drivers/bus/vmbus/vmbus_common_uio.c +++ b/dpdk/drivers/bus/vmbus/vmbus_common_uio.c @@ -27,6 +27,7 @@ static int vmbus_uio_map_secondary(struct rte_vmbus_device *dev) { int fd, i; + struct vmbus_channel *chan; struct mapped_vmbus_resource *uio_res; struct mapped_vmbus_res_list *uio_res_list = RTE_TAILQ_CAST(vmbus_tailq.head, mapped_vmbus_res_list); @@ -47,9 +48,10 @@ vmbus_uio_map_secondary(struct rte_vmbus_device *dev) for (i = 0; i != uio_res->nb_maps; i++) { void *mapaddr; + off_t offset = i * PAGE_SIZE; mapaddr = vmbus_map_resource(uio_res->maps[i].addr, - fd, 0, + fd, offset, uio_res->maps[i].size, 0); if (mapaddr == uio_res->maps[i].addr) @@ -75,6 +77,20 @@ vmbus_uio_map_secondary(struct rte_vmbus_device *dev) /* fd is not needed in slave process, close it */ close(fd); + + dev->primary = uio_res->primary; + if (!dev->primary) { + VMBUS_LOG(ERR, "missing primary channel"); + return -1; + } + + STAILQ_FOREACH(chan, &dev->primary->subchannel_list, next) { + if (vmbus_uio_map_secondary_subchan(dev, chan) != 0) { + VMBUS_LOG(ERR, "cannot map secondary subchan"); + return -1; + } + } + return 0; } @@ -97,9 +113,9 @@ vmbus_uio_map_primary(struct rte_vmbus_device *dev) /* Map the resources */ for (i = 0; i < VMBUS_MAX_RESOURCE; i++) { - /* skip empty BAR */ + /* stop at empty BAR */ if (dev->resource[i].len == 0) - continue; + break; ret = vmbus_uio_map_resource_by_index(dev, i, uio_res, 0); if (ret) diff --git a/dpdk/drivers/common/cpt/cpt_ucode.h b/dpdk/drivers/common/cpt/cpt_ucode.h index 5933ea77e..d408d50e3 100644 --- a/dpdk/drivers/common/cpt/cpt_ucode.h +++ b/dpdk/drivers/common/cpt/cpt_ucode.h @@ -549,7 +549,7 @@ cpt_digest_gen_prep(uint32_t flags, /* Minor op is passthrough */ opcode.s.minor = 0x03; /* Send out completion code only */ - vq_cmd_w0.s.param2 = 0x1; + vq_cmd_w0.s.param2 = rte_cpu_to_be_16(0x1); } vq_cmd_w0.s.opcode = rte_cpu_to_be_16(opcode.flags); diff --git a/dpdk/drivers/common/qat/qat_qp.c b/dpdk/drivers/common/qat/qat_qp.c index 79f6a01ba..935ec3fb5 100644 --- a/dpdk/drivers/common/qat/qat_qp.c +++ b/dpdk/drivers/common/qat/qat_qp.c @@ -211,16 +211,17 @@ int qat_qp_setup(struct qat_pci_device *qat_dev, } /* Allocate the queue pair data structure. */ - qp = rte_zmalloc("qat PMD qp metadata", - sizeof(*qp), RTE_CACHE_LINE_SIZE); + qp = rte_zmalloc_socket("qat PMD qp metadata", + sizeof(*qp), RTE_CACHE_LINE_SIZE, + qat_qp_conf->socket_id); if (qp == NULL) { QAT_LOG(ERR, "Failed to alloc mem for qp struct"); return -ENOMEM; } qp->nb_descriptors = qat_qp_conf->nb_descriptors; - qp->op_cookies = rte_zmalloc("qat PMD op cookie pointer", + qp->op_cookies = rte_zmalloc_socket("qat PMD op cookie pointer", qat_qp_conf->nb_descriptors * sizeof(*qp->op_cookies), - RTE_CACHE_LINE_SIZE); + RTE_CACHE_LINE_SIZE, qat_qp_conf->socket_id); if (qp->op_cookies == NULL) { QAT_LOG(ERR, "Failed to alloc mem for cookie"); rte_free(qp); @@ -260,7 +261,8 @@ int qat_qp_setup(struct qat_pci_device *qat_dev, qp->op_cookie_pool = rte_mempool_create(op_cookie_pool_name, qp->nb_descriptors, qat_qp_conf->cookie_size, 64, 0, - NULL, NULL, NULL, NULL, qat_qp_conf->socket_id, + NULL, NULL, NULL, NULL, + qat_dev->pci_dev->device.numa_node, 0); if (!qp->op_cookie_pool) { QAT_LOG(ERR, "QAT PMD Cannot create" @@ -388,7 +390,7 @@ qat_queue_create(struct qat_pci_device *qat_dev, struct qat_queue *queue, qp_conf->service_str, "qp_mem", queue->hw_bundle_number, queue->hw_queue_number); qp_mz = queue_dma_zone_reserve(queue->memz_name, queue_size_bytes, - qp_conf->socket_id); + qat_dev->pci_dev->device.numa_node); if (qp_mz == NULL) { QAT_LOG(ERR, "Failed to allocate ring memzone"); return -ENOMEM; @@ -634,27 +636,20 @@ qat_dequeue_op_burst(void *qp, void **ops, uint16_t nb_ops) uint32_t head; uint32_t resp_counter = 0; uint8_t *resp_msg; - uint8_t hdr_flags; rx_queue = &(tmp_qp->rx_q); tx_queue = &(tmp_qp->tx_q); head = rx_queue->head; resp_msg = (uint8_t *)rx_queue->base_addr + rx_queue->head; - hdr_flags = ((struct icp_qat_fw_comn_resp_hdr *)resp_msg)->hdr_flags; while (*(uint32_t *)resp_msg != ADF_RING_EMPTY_SIG && resp_counter != nb_ops) { - if (unlikely(!ICP_QAT_FW_COMN_VALID_FLAG_GET(hdr_flags))) { - /* Fatal firmware error */ - QAT_LOG(ERR, "QAT Firmware returned invalid response"); - return 0; - } - if (tmp_qp->service_type == QAT_SERVICE_SYMMETRIC) qat_sym_process_response(ops, resp_msg); else if (tmp_qp->service_type == QAT_SERVICE_COMPRESSION) - qat_comp_process_response(ops, resp_msg); + qat_comp_process_response(ops, resp_msg, + &tmp_qp->stats.dequeue_err_count); head = adf_modulo(head + rx_queue->msg_size, rx_queue->modulo_mask); @@ -682,7 +677,8 @@ qat_dequeue_op_burst(void *qp, void **ops, uint16_t nb_ops) } __rte_weak int -qat_comp_process_response(void **op __rte_unused, uint8_t *resp __rte_unused) +qat_comp_process_response(void **op __rte_unused, uint8_t *resp __rte_unused, + uint64_t *dequeue_err_count __rte_unused) { return 0; } diff --git a/dpdk/drivers/common/qat/qat_qp.h b/dpdk/drivers/common/qat/qat_qp.h index 6f1525e1e..9833bcbd8 100644 --- a/dpdk/drivers/common/qat/qat_qp.h +++ b/dpdk/drivers/common/qat/qat_qp.h @@ -107,6 +107,7 @@ qat_qps_per_service(const struct qat_qp_hw_data *qp_hw_data, /* Needed for weak function*/ int -qat_comp_process_response(void **op __rte_unused, uint8_t *resp __rte_unused); +qat_comp_process_response(void **op __rte_unused, uint8_t *resp __rte_unused, + uint64_t *dequeue_err_count); #endif /* _QAT_QP_H_ */ diff --git a/dpdk/drivers/compress/isal/isal_compress_pmd.c b/dpdk/drivers/compress/isal/isal_compress_pmd.c index 9f1e96888..f208b6501 100644 --- a/dpdk/drivers/compress/isal/isal_compress_pmd.c +++ b/dpdk/drivers/compress/isal/isal_compress_pmd.c @@ -372,7 +372,7 @@ process_isal_deflate(struct rte_comp_op *op, struct isal_comp_qp *qp, uint8_t *temp_level_buf = qp->stream->level_buf; /* Initialize compression stream */ - isal_deflate_stateless_init(qp->stream); + isal_deflate_init(qp->stream); qp->stream->level_buf = temp_level_buf; @@ -461,8 +461,6 @@ process_isal_deflate(struct rte_comp_op *op, struct isal_comp_qp *qp, } op->consumed = qp->stream->total_in; op->produced = qp->stream->total_out; - isal_deflate_reset(qp->stream); - return ret; } @@ -538,7 +536,6 @@ process_isal_inflate(struct rte_comp_op *op, struct isal_comp_qp *qp) op->consumed = op->src.length - qp->state->avail_in; } op->produced = qp->state->total_out; - isal_inflate_reset(qp->state); return ret; } diff --git a/dpdk/drivers/compress/isal/isal_compress_pmd_ops.c b/dpdk/drivers/compress/isal/isal_compress_pmd_ops.c index 41cade87e..472e54e8e 100644 --- a/dpdk/drivers/compress/isal/isal_compress_pmd_ops.c +++ b/dpdk/drivers/compress/isal/isal_compress_pmd_ops.c @@ -133,10 +133,18 @@ isal_comp_pmd_info_get(struct rte_compressdev *dev __rte_unused, { if (dev_info != NULL) { dev_info->capabilities = isal_pmd_capabilities; - dev_info->feature_flags = RTE_COMPDEV_FF_CPU_AVX512 | - RTE_COMPDEV_FF_CPU_AVX2 | - RTE_COMPDEV_FF_CPU_AVX | - RTE_COMPDEV_FF_CPU_SSE; + + /* Check CPU for supported vector instruction and set + * feature_flags + */ + if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX512F)) + dev_info->feature_flags |= RTE_COMPDEV_FF_CPU_AVX512; + else if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX2)) + dev_info->feature_flags |= RTE_COMPDEV_FF_CPU_AVX2; + else if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX)) + dev_info->feature_flags |= RTE_COMPDEV_FF_CPU_AVX; + else + dev_info->feature_flags |= RTE_COMPDEV_FF_CPU_SSE; } } diff --git a/dpdk/drivers/compress/qat/qat_comp.c b/dpdk/drivers/compress/qat/qat_comp.c index 27547428f..450cfd659 100644 --- a/dpdk/drivers/compress/qat/qat_comp.c +++ b/dpdk/drivers/compress/qat/qat_comp.c @@ -36,6 +36,7 @@ qat_comp_build_request(void *in_op, uint8_t *out_msg, QAT_DP_LOG(ERR, "QAT PMD only supports stateless compression " "operation requests, op (%p) is not a " "stateless operation.", op); + op->status = RTE_COMP_OP_STATUS_INVALID_ARGS; return -EINVAL; } @@ -61,6 +62,7 @@ qat_comp_build_request(void *in_op, uint8_t *out_msg, RTE_PMD_QAT_COMP_SGL_MAX_SEGMENTS); if (ret) { QAT_DP_LOG(ERR, "QAT PMD Cannot fill source sgl array"); + op->status = RTE_COMP_OP_STATUS_INVALID_ARGS; return ret; } @@ -71,6 +73,7 @@ qat_comp_build_request(void *in_op, uint8_t *out_msg, RTE_PMD_QAT_COMP_SGL_MAX_SEGMENTS); if (ret) { QAT_DP_LOG(ERR, "QAT PMD Cannot fill dest. sgl array"); + op->status = RTE_COMP_OP_STATUS_INVALID_ARGS; return ret; } @@ -106,7 +109,7 @@ qat_comp_build_request(void *in_op, uint8_t *out_msg, } int -qat_comp_process_response(void **op, uint8_t *resp) +qat_comp_process_response(void **op, uint8_t *resp, uint64_t *dequeue_err_count) { struct icp_qat_fw_comp_resp *resp_msg = (struct icp_qat_fw_comp_resp *)resp; @@ -114,6 +117,9 @@ qat_comp_process_response(void **op, uint8_t *resp) (resp_msg->opaque_data); struct qat_comp_xform *qat_xform = (struct qat_comp_xform *) (rx_op->private_xform); + int err = resp_msg->comn_resp.comn_status & + ((1 << QAT_COMN_RESP_CMP_STATUS_BITPOS) | + (1 << QAT_COMN_RESP_XLAT_STATUS_BITPOS)); #if RTE_LOG_DP_LEVEL >= RTE_LOG_DEBUG QAT_DP_LOG(DEBUG, "Direction: %s", @@ -132,24 +138,36 @@ qat_comp_process_response(void **op, uint8_t *resp) rx_op->debug_status = ERR_CODE_QAT_COMP_WRONG_FW; *op = (void *)rx_op; QAT_DP_LOG(ERR, "QAT has wrong firmware"); + ++(*dequeue_err_count); return 0; } } - if ((ICP_QAT_FW_COMN_RESP_CMP_STAT_GET(resp_msg->comn_resp.comn_status) - | ICP_QAT_FW_COMN_RESP_XLAT_STAT_GET( - resp_msg->comn_resp.comn_status)) != - ICP_QAT_FW_COMN_STATUS_FLAG_OK) { - - if (unlikely((ICP_QAT_FW_COMN_RESP_XLAT_STAT_GET( - resp_msg->comn_resp.comn_status) != - ICP_QAT_FW_COMN_STATUS_FLAG_OK) && - (qat_xform->qat_comp_request_type - == QAT_COMP_REQUEST_DYNAMIC_COMP_STATELESS))) + if (err) { + if (unlikely((err & (1 << QAT_COMN_RESP_XLAT_STATUS_BITPOS)) + && (qat_xform->qat_comp_request_type + == QAT_COMP_REQUEST_DYNAMIC_COMP_STATELESS))) { QAT_DP_LOG(ERR, "QAT intermediate buffer may be too " "small for output, try configuring a larger size"); + } - rx_op->status = RTE_COMP_OP_STATUS_ERROR; + int8_t cmp_err_code = + (int8_t)resp_msg->comn_resp.comn_error.cmp_err_code; + int8_t xlat_err_code = + (int8_t)resp_msg->comn_resp.comn_error.xlat_err_code; + + if ((cmp_err_code == ERR_CODE_OVERFLOW_ERROR && !xlat_err_code) + || + (!cmp_err_code && xlat_err_code == ERR_CODE_OVERFLOW_ERROR) + || + (cmp_err_code == ERR_CODE_OVERFLOW_ERROR && + xlat_err_code == ERR_CODE_OVERFLOW_ERROR)) + rx_op->status = + RTE_COMP_OP_STATUS_OUT_OF_SPACE_TERMINATED; + else + rx_op->status = RTE_COMP_OP_STATUS_ERROR; + + ++(*dequeue_err_count); rx_op->debug_status = *((uint16_t *)(&resp_msg->comn_resp.comn_error)); } else { diff --git a/dpdk/drivers/compress/qat/qat_comp.h b/dpdk/drivers/compress/qat/qat_comp.h index 99a4462eb..19f48df59 100644 --- a/dpdk/drivers/compress/qat/qat_comp.h +++ b/dpdk/drivers/compress/qat/qat_comp.h @@ -60,8 +60,8 @@ qat_comp_build_request(void *in_op, uint8_t *out_msg, void *op_cookie, enum qat_device_gen qat_dev_gen __rte_unused); int -qat_comp_process_response(void **op, uint8_t *resp); - +qat_comp_process_response(void **op, uint8_t *resp, + uint64_t *dequeue_err_count); int qat_comp_private_xform_create(struct rte_compressdev *dev, diff --git a/dpdk/drivers/compress/qat/qat_comp_pmd.c b/dpdk/drivers/compress/qat/qat_comp_pmd.c index ea9307721..139298efe 100644 --- a/dpdk/drivers/compress/qat/qat_comp_pmd.c +++ b/dpdk/drivers/compress/qat/qat_comp_pmd.c @@ -185,7 +185,7 @@ qat_comp_setup_inter_buffers(struct qat_comp_dev_private *comp_dev, memzone = rte_memzone_reserve_aligned(inter_buff_mz_name, full_size, comp_dev->compressdev->data->socket_id, - RTE_MEMZONE_2MB, QAT_64_BYTE_ALIGN); + RTE_MEMZONE_IOVA_CONTIG, QAT_64_BYTE_ALIGN); if (memzone == NULL) { QAT_LOG(ERR, "Can't allocate intermediate buffers" " for device %s", comp_dev->qat_dev->name); @@ -239,7 +239,8 @@ qat_comp_setup_inter_buffers(struct qat_comp_dev_private *comp_dev, static struct rte_mempool * qat_comp_create_xform_pool(struct qat_comp_dev_private *comp_dev, - uint32_t num_elements) + struct rte_compressdev_config *config, + uint32_t num_elements) { char xform_pool_name[RTE_MEMPOOL_NAMESIZE]; struct rte_mempool *mp; @@ -264,7 +265,7 @@ qat_comp_create_xform_pool(struct qat_comp_dev_private *comp_dev, mp = rte_mempool_create(xform_pool_name, num_elements, qat_comp_xform_size(), 0, 0, - NULL, NULL, NULL, NULL, rte_socket_id(), + NULL, NULL, NULL, NULL, config->socket_id, 0); if (mp == NULL) { QAT_LOG(ERR, "Err creating mempool %s w %d elements of size %d", @@ -320,7 +321,7 @@ qat_comp_dev_config(struct rte_compressdev *dev, } } - comp_dev->xformpool = qat_comp_create_xform_pool(comp_dev, + comp_dev->xformpool = qat_comp_create_xform_pool(comp_dev, config, config->max_nb_priv_xforms); if (comp_dev->xformpool == NULL) { diff --git a/dpdk/drivers/crypto/aesni_gcm/aesni_gcm_pmd_ops.c b/dpdk/drivers/crypto/aesni_gcm/aesni_gcm_pmd_ops.c index c343a393f..cd15245bd 100644 --- a/dpdk/drivers/crypto/aesni_gcm/aesni_gcm_pmd_ops.c +++ b/dpdk/drivers/crypto/aesni_gcm/aesni_gcm_pmd_ops.c @@ -153,6 +153,11 @@ static int aesni_gcm_pmd_qp_release(struct rte_cryptodev *dev, uint16_t qp_id) { if (dev->data->queue_pairs[qp_id] != NULL) { + struct aesni_gcm_qp *qp = dev->data->queue_pairs[qp_id]; + + if (qp->processed_pkts) + rte_ring_free(qp->processed_pkts); + rte_free(dev->data->queue_pairs[qp_id]); dev->data->queue_pairs[qp_id] = NULL; } diff --git a/dpdk/drivers/crypto/caam_jr/caam_jr.c b/dpdk/drivers/crypto/caam_jr/caam_jr.c index f505adf6b..efc69b6eb 100644 --- a/dpdk/drivers/crypto/caam_jr/caam_jr.c +++ b/dpdk/drivers/crypto/caam_jr/caam_jr.c @@ -311,7 +311,7 @@ caam_jr_prep_cdb(struct caam_jr_session *ses) int32_t shared_desc_len = 0; struct sec_cdb *cdb; int err; -#if RTE_BYTE_ORDER == RTE_BIG_ENDIAN +#if CAAM_BYTE_ORDER == CORE_BYTE_ORDER int swap = false; #else int swap = true; @@ -798,7 +798,7 @@ build_auth_only_sg(struct rte_crypto_op *op, struct caam_jr_session *ses) sg->len = cpu_to_caam32(ses->digest_length); length += ses->digest_length; } else { - length -= ses->digest_length; + sg->len -= ses->digest_length; } /* last element*/ @@ -2012,7 +2012,7 @@ caam_jr_dev_configure(struct rte_cryptodev *dev, PMD_INIT_FUNC_TRACE(); internals = dev->data->dev_private; - sprintf(str, "ctx_pool_%d", dev->data->dev_id); + snprintf(str, sizeof(str), "ctx_pool_%d", dev->data->dev_id); if (!internals->ctx_pool) { internals->ctx_pool = rte_mempool_create((const char *)str, CTX_POOL_NUM_BUFS, diff --git a/dpdk/drivers/crypto/caam_jr/caam_jr_uio.c b/dpdk/drivers/crypto/caam_jr/caam_jr_uio.c index d94101c2f..afd75c9a6 100644 --- a/dpdk/drivers/crypto/caam_jr/caam_jr_uio.c +++ b/dpdk/drivers/crypto/caam_jr/caam_jr_uio.c @@ -284,11 +284,11 @@ uio_map_registers(int uio_device_fd, int uio_device_id, memset(uio_map_size_str, 0, sizeof(uio_map_size_str)); /* Compose string: /sys/class/uio/uioX */ - sprintf(uio_sys_root, "%s/%s%d", SEC_UIO_DEVICE_SYS_ATTR_PATH, - "uio", uio_device_id); + snprintf(uio_sys_root, sizeof(uio_sys_root), "%s/%s%d", + SEC_UIO_DEVICE_SYS_ATTR_PATH, "uio", uio_device_id); /* Compose string: maps/mapY */ - sprintf(uio_sys_map_subdir, "%s%d", SEC_UIO_DEVICE_SYS_MAP_ATTR, - uio_map_id); + snprintf(uio_sys_map_subdir, sizeof(uio_sys_map_subdir), "%s%d", + SEC_UIO_DEVICE_SYS_MAP_ATTR, uio_map_id); /* Read first (and only) line from file * /sys/class/uio/uioX/maps/mapY/size @@ -362,8 +362,8 @@ free_job_ring(uint32_t uio_fd) job_ring->register_base_addr, (unsigned long)job_ring->map_size, strerror(errno)); } else - CAAM_JR_DEBUG(" JR UIO memory unmapped at %p", - job_ring->register_base_addr); + CAAM_JR_DEBUG("JR UIO memory is unmapped"); + job_ring->register_base_addr = NULL; } @@ -389,9 +389,8 @@ uio_job_ring *config_job_ring(void) /* Find UIO device created by SEC kernel driver for this job ring. */ memset(uio_device_file_name, 0, sizeof(uio_device_file_name)); - - sprintf(uio_device_file_name, "%s%d", SEC_UIO_DEVICE_FILE_NAME, - job_ring->uio_minor_number); + snprintf(uio_device_file_name, sizeof(uio_device_file_name), "%s%d", + SEC_UIO_DEVICE_FILE_NAME, job_ring->uio_minor_number); /* Open device file */ job_ring->uio_fd = open(uio_device_file_name, O_RDWR); @@ -446,7 +445,11 @@ sec_configure(void) ret = file_read_first_line(SEC_UIO_DEVICE_SYS_ATTR_PATH, dir->d_name, "name", uio_name); CAAM_JR_INFO("sec device uio name: %s", uio_name); - SEC_ASSERT(ret == 0, -1, "file_read_first_line failed"); + if (ret != 0) { + CAAM_JR_ERR("file_read_first_line failed\n"); + closedir(d); + return -1; + } if (file_name_match_extract(uio_name, SEC_UIO_DEVICE_NAME, diff --git a/dpdk/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/dpdk/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c index 6095c6021..a7973cc04 100644 --- a/dpdk/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c +++ b/dpdk/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c @@ -108,7 +108,7 @@ build_proto_compound_fd(dpaa2_sec_session *sess, /* Configure FD as a FRAME LIST */ DPAA2_SET_FD_ADDR(fd, DPAA2_VADDR_TO_IOVA(op_fle)); DPAA2_SET_FD_COMPOUND_FMT(fd); - DPAA2_SET_FD_FLC(fd, (ptrdiff_t)flc); + DPAA2_SET_FD_FLC(fd, DPAA2_VADDR_TO_IOVA(flc)); /* Configure Output FLE with dst mbuf data */ DPAA2_SET_FLE_ADDR(op_fle, DPAA2_MBUF_VADDR_TO_IOVA(dst_mbuf)); @@ -160,7 +160,7 @@ build_proto_fd(dpaa2_sec_session *sess, DPAA2_SET_FD_ADDR(fd, DPAA2_MBUF_VADDR_TO_IOVA(sym_op->m_src)); DPAA2_SET_FD_OFFSET(fd, sym_op->m_src->data_off); DPAA2_SET_FD_LEN(fd, sym_op->m_src->pkt_len); - DPAA2_SET_FD_FLC(fd, (ptrdiff_t)flc); + DPAA2_SET_FD_FLC(fd, DPAA2_VADDR_TO_IOVA(flc)); /* save physical address of mbuf */ op->sym->aead.digest.phys_addr = mbuf->buf_iova; @@ -236,8 +236,8 @@ build_authenc_gcm_sg_fd(dpaa2_sec_session *sess, /* Configure Output SGE for Encap/Decap */ DPAA2_SET_FLE_ADDR(sge, DPAA2_MBUF_VADDR_TO_IOVA(mbuf)); - DPAA2_SET_FLE_OFFSET(sge, mbuf->data_off + sym_op->aead.data.offset - - auth_only_len); + DPAA2_SET_FLE_OFFSET(sge, mbuf->data_off + + RTE_ALIGN_CEIL(auth_only_len, 16) - auth_only_len); sge->length = mbuf->data_len - sym_op->aead.data.offset + auth_only_len; mbuf = mbuf->next; @@ -400,8 +400,8 @@ build_authenc_gcm_fd(dpaa2_sec_session *sess, /* Configure Output SGE for Encap/Decap */ DPAA2_SET_FLE_ADDR(sge, DPAA2_MBUF_VADDR_TO_IOVA(dst)); - DPAA2_SET_FLE_OFFSET(sge, sym_op->aead.data.offset + - dst->data_off - auth_only_len); + DPAA2_SET_FLE_OFFSET(sge, dst->data_off + + RTE_ALIGN_CEIL(auth_only_len, 16) - auth_only_len); sge->length = sym_op->aead.data.length + auth_only_len; if (sess->dir == DIR_ENC) { @@ -2864,7 +2864,7 @@ dpaa2_sec_security_session_destroy(void *dev __rte_unused, rte_free(s->ctxt); rte_free(s->cipher_key.data); rte_free(s->auth_key.data); - memset(sess, 0, sizeof(dpaa2_sec_session)); + memset(s, 0, sizeof(dpaa2_sec_session)); set_sec_session_private_data(sess, NULL); rte_mempool_put(sess_mp, sess_priv); } @@ -2913,7 +2913,7 @@ dpaa2_sec_sym_session_clear(struct rte_cryptodev *dev, rte_free(s->ctxt); rte_free(s->cipher_key.data); rte_free(s->auth_key.data); - memset(sess, 0, sizeof(dpaa2_sec_session)); + memset(s, 0, sizeof(dpaa2_sec_session)); struct rte_mempool *sess_mp = rte_mempool_from_obj(sess_priv); set_sym_session_private_data(sess, index, NULL); rte_mempool_put(sess_mp, sess_priv); @@ -3372,14 +3372,15 @@ dpaa2_sec_dev_init(struct rte_cryptodev *cryptodev) retcode); goto init_error; } - sprintf(cryptodev->data->name, "dpsec-%u", hw_id); + snprintf(cryptodev->data->name, sizeof(cryptodev->data->name), + "dpsec-%u", hw_id); internals->max_nb_queue_pairs = attr.num_tx_queues; cryptodev->data->nb_queue_pairs = internals->max_nb_queue_pairs; internals->hw = dpseci; internals->token = token; - sprintf(str, "fle_pool_%d", cryptodev->data->dev_id); + snprintf(str, sizeof(str), "fle_pool_%d", cryptodev->data->dev_id); internals->fle_pool = rte_mempool_create((const char *)str, FLE_POOL_NUM_BUFS, FLE_POOL_BUF_SIZE, @@ -3410,7 +3411,8 @@ cryptodev_dpaa2_sec_probe(struct rte_dpaa2_driver *dpaa2_drv __rte_unused, int retval; - sprintf(cryptodev_name, "dpsec-%d", dpaa2_dev->object_id); + snprintf(cryptodev_name, sizeof(cryptodev_name), "dpsec-%d", + dpaa2_dev->object_id); cryptodev = rte_cryptodev_pmd_allocate(cryptodev_name, rte_socket_id()); if (cryptodev == NULL) diff --git a/dpdk/drivers/crypto/dpaa2_sec/hw/desc/pdcp.h b/dpdk/drivers/crypto/dpaa2_sec/hw/desc/pdcp.h index 719ef605f..fee844100 100644 --- a/dpdk/drivers/crypto/dpaa2_sec/hw/desc/pdcp.h +++ b/dpdk/drivers/crypto/dpaa2_sec/hw/desc/pdcp.h @@ -1,7 +1,5 @@ -/* +/* SPDX-License-Identifier: BSD-3-Clause or GPL-2.0+ * Copyright 2008-2013 Freescale Semiconductor, Inc. - * - * SPDX-License-Identifier: BSD-3-Clause or GPL-2.0+ */ #ifndef __DESC_PDCP_H__ diff --git a/dpdk/drivers/crypto/dpaa_sec/dpaa_sec.c b/dpdk/drivers/crypto/dpaa_sec/dpaa_sec.c index d83e74541..10201c58c 100644 --- a/dpdk/drivers/crypto/dpaa_sec/dpaa_sec.c +++ b/dpdk/drivers/crypto/dpaa_sec/dpaa_sec.c @@ -2166,7 +2166,7 @@ dpaa_sec_security_session_destroy(void *dev __rte_unused, rte_free(s->cipher_key.data); rte_free(s->auth_key.data); - memset(sess, 0, sizeof(dpaa_sec_session)); + memset(s, 0, sizeof(dpaa_sec_session)); set_sec_session_private_data(sess, NULL); rte_mempool_put(sess_mp, sess_priv); } @@ -2185,7 +2185,7 @@ dpaa_sec_dev_configure(struct rte_cryptodev *dev, PMD_INIT_FUNC_TRACE(); internals = dev->data->dev_private; - sprintf(str, "ctx_pool_%d", dev->data->dev_id); + snprintf(str, sizeof(str), "ctx_pool_%d", dev->data->dev_id); if (!internals->ctx_pool) { internals->ctx_pool = rte_mempool_create((const char *)str, CTX_POOL_NUM_BUFS, @@ -2391,7 +2391,8 @@ cryptodev_dpaa_sec_probe(struct rte_dpaa_driver *dpaa_drv __rte_unused, int retval; - sprintf(cryptodev_name, "dpaa_sec-%d", dpaa_dev->id.dev_id); + snprintf(cryptodev_name, sizeof(cryptodev_name), "dpaa_sec-%d", + dpaa_dev->id.dev_id); cryptodev = rte_cryptodev_pmd_allocate(cryptodev_name, rte_socket_id()); if (cryptodev == NULL) diff --git a/dpdk/drivers/crypto/kasumi/meson.build b/dpdk/drivers/crypto/kasumi/meson.build index a09b0e251..9a8956a03 100644 --- a/dpdk/drivers/crypto/kasumi/meson.build +++ b/dpdk/drivers/crypto/kasumi/meson.build @@ -1,12 +1,12 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2018 Intel Corporation -lib = cc.find_library('libsso_kasumi', required: false) -if not lib.found() +lib = cc.find_library('sso_kasumi', required: false) +if not lib.found() or not cc.has_header('sso_kasumi.h') build = false -else - ext_deps += lib + subdir_done() endif +ext_deps += lib sources = files('rte_kasumi_pmd.c', 'rte_kasumi_pmd_ops.c') deps += ['bus_vdev'] diff --git a/dpdk/drivers/crypto/meson.build b/dpdk/drivers/crypto/meson.build index bf1bd9286..83e78860e 100644 --- a/dpdk/drivers/crypto/meson.build +++ b/dpdk/drivers/crypto/meson.build @@ -3,7 +3,7 @@ drivers = ['aesni_gcm', 'aesni_mb', 'caam_jr', 'ccp', 'dpaa_sec', 'dpaa2_sec', 'kasumi', 'mvsam', 'null', 'octeontx', 'openssl', 'qat', 'scheduler', - 'virtio', 'zuc'] + 'snow3g', 'virtio', 'zuc'] std_deps = ['cryptodev'] # cryptodev pulls in all other needed deps config_flag_fmt = 'RTE_LIBRTE_@0@_PMD' diff --git a/dpdk/drivers/crypto/null/null_crypto_pmd_ops.c b/dpdk/drivers/crypto/null/null_crypto_pmd_ops.c index 2bdcd019e..319ca34e7 100644 --- a/dpdk/drivers/crypto/null/null_crypto_pmd_ops.c +++ b/dpdk/drivers/crypto/null/null_crypto_pmd_ops.c @@ -133,6 +133,11 @@ static int null_crypto_pmd_qp_release(struct rte_cryptodev *dev, uint16_t qp_id) { if (dev->data->queue_pairs[qp_id] != NULL) { + struct null_crypto_qp *qp = dev->data->queue_pairs[qp_id]; + + if (qp->processed_pkts) + rte_ring_free(qp->processed_pkts); + rte_free(dev->data->queue_pairs[qp_id]); dev->data->queue_pairs[qp_id] = NULL; } diff --git a/dpdk/drivers/crypto/openssl/rte_openssl_pmd.c b/dpdk/drivers/crypto/openssl/rte_openssl_pmd.c index 11ea0d190..5b27bb919 100644 --- a/dpdk/drivers/crypto/openssl/rte_openssl_pmd.c +++ b/dpdk/drivers/crypto/openssl/rte_openssl_pmd.c @@ -1799,6 +1799,9 @@ process_openssl_modinv_op(struct rte_crypto_op *cop, cop->status = RTE_CRYPTO_OP_STATUS_ERROR; } + BN_clear(res); + BN_clear(base); + return 0; } @@ -1820,17 +1823,20 @@ process_openssl_modexp_op(struct rte_crypto_op *cop, return -1; } - base = BN_bin2bn((const unsigned char *)op->modinv.base.data, - op->modinv.base.length, base); + base = BN_bin2bn((const unsigned char *)op->modex.base.data, + op->modex.base.length, base); if (BN_mod_exp(res, base, sess->u.e.exp, sess->u.e.mod, sess->u.e.ctx)) { - op->modinv.base.length = BN_bn2bin(res, op->modinv.base.data); + op->modex.base.length = BN_bn2bin(res, op->modex.base.data); cop->status = RTE_CRYPTO_OP_STATUS_SUCCESS; } else { cop->status = RTE_CRYPTO_OP_STATUS_ERROR; } + BN_clear(res); + BN_clear(base); + return 0; } diff --git a/dpdk/drivers/crypto/openssl/rte_openssl_pmd_ops.c b/dpdk/drivers/crypto/openssl/rte_openssl_pmd_ops.c index c2b029ec2..a65f9e582 100644 --- a/dpdk/drivers/crypto/openssl/rte_openssl_pmd_ops.c +++ b/dpdk/drivers/crypto/openssl/rte_openssl_pmd_ops.c @@ -657,6 +657,11 @@ static int openssl_pmd_qp_release(struct rte_cryptodev *dev, uint16_t qp_id) { if (dev->data->queue_pairs[qp_id] != NULL) { + struct openssl_qp *qp = dev->data->queue_pairs[qp_id]; + + if (qp->processed_ops) + rte_ring_free(qp->processed_ops); + rte_free(dev->data->queue_pairs[qp_id]); dev->data->queue_pairs[qp_id] = NULL; } diff --git a/dpdk/drivers/crypto/qat/qat_sym.c b/dpdk/drivers/crypto/qat/qat_sym.c index 10cdf2e10..8801ca567 100644 --- a/dpdk/drivers/crypto/qat/qat_sym.c +++ b/dpdk/drivers/crypto/qat/qat_sym.c @@ -157,6 +157,7 @@ qat_sym_build_request(void *in_op, uint8_t *out_msg, uint32_t min_ofs = 0; uint64_t src_buf_start = 0, dst_buf_start = 0; uint8_t do_sgl = 0; + uint8_t wireless_auth = 0, in_place = 1; struct rte_crypto_op *op = (struct rte_crypto_op *)in_op; struct qat_sym_op_cookie *cookie = (struct qat_sym_op_cookie *)op_cookie; @@ -269,6 +270,7 @@ qat_sym_build_request(void *in_op, uint8_t *out_msg, } auth_ofs = op->sym->auth.data.offset >> 3; auth_len = op->sym->auth.data.length >> 3; + wireless_auth = 1; auth_param->u1.aad_adr = rte_crypto_op_ctophys_offset(op, @@ -438,6 +440,7 @@ qat_sym_build_request(void *in_op, uint8_t *out_msg, * Don't align DMA start. DMA the minimum data-set * so as not to overwrite data in dest buffer */ + in_place = 0; src_buf_start = rte_pktmbuf_iova_offset(op->sym->m_src, min_ofs); dst_buf_start = @@ -530,6 +533,18 @@ qat_sym_build_request(void *in_op, uint8_t *out_msg, } else { qat_req->comn_mid.src_data_addr = src_buf_start; qat_req->comn_mid.dest_data_addr = dst_buf_start; + /* handle case of auth-gen-then-cipher with digest encrypted */ + if (wireless_auth && in_place && + (op->sym->auth.digest.phys_addr == + src_buf_start + auth_ofs + auth_len) && + (auth_ofs + auth_len + ctx->digest_length <= + cipher_ofs + cipher_len)) { + struct icp_qat_fw_comn_req_hdr *header = + &qat_req->comn_hdr; + ICP_QAT_FW_LA_DIGEST_IN_BUFFER_SET( + header->serv_specif_flags, + ICP_QAT_FW_LA_DIGEST_IN_BUFFER); + } } #if RTE_LOG_DP_LEVEL >= RTE_LOG_DEBUG diff --git a/dpdk/drivers/crypto/qat/qat_sym_session.c b/dpdk/drivers/crypto/qat/qat_sym_session.c index 8196e2333..e147572e1 100644 --- a/dpdk/drivers/crypto/qat/qat_sym_session.c +++ b/dpdk/drivers/crypto/qat/qat_sym_session.c @@ -242,7 +242,8 @@ qat_sym_session_configure_cipher(struct rte_cryptodev *dev, session->qat_mode = ICP_QAT_HW_CIPHER_ECB_MODE; break; case RTE_CRYPTO_CIPHER_NULL: - session->qat_mode = ICP_QAT_HW_CIPHER_ECB_MODE; + session->qat_cipher_alg = ICP_QAT_HW_CIPHER_ALGO_NULL; + session->qat_mode = ICP_QAT_HW_CIPHER_CTR_MODE; break; case RTE_CRYPTO_CIPHER_KASUMI_F8: if (qat_sym_validate_kasumi_key(cipher_xform->key.length, @@ -1143,8 +1144,8 @@ static int qat_sym_do_precomputes(enum icp_qat_hw_auth_algo hash_alg, } block_size = qat_hash_get_block_size(hash_alg); - if (block_size <= 0) - return -EFAULT; + if (block_size < 0) + return block_size; /* init ipad and opad from key and xor with fixed values */ memset(ipad, 0, block_size); memset(opad, 0, block_size); @@ -1488,11 +1489,17 @@ int qat_sym_session_aead_create_cd_auth(struct qat_sym_session *cdesc, || cdesc->qat_hash_alg == ICP_QAT_HW_AUTH_ALGO_KASUMI_F9 || cdesc->qat_hash_alg == ICP_QAT_HW_AUTH_ALGO_ZUC_3G_128_EIA3 || cdesc->qat_hash_alg == ICP_QAT_HW_AUTH_ALGO_AES_XCBC_MAC + || cdesc->qat_hash_alg == ICP_QAT_HW_AUTH_ALGO_AES_CBC_MAC + || cdesc->qat_hash_alg == ICP_QAT_HW_AUTH_ALGO_NULL ) hash->auth_counter.counter = 0; - else - hash->auth_counter.counter = rte_bswap32( - qat_hash_get_block_size(cdesc->qat_hash_alg)); + else { + int block_size = qat_hash_get_block_size(cdesc->qat_hash_alg); + + if (block_size < 0) + return block_size; + hash->auth_counter.counter = rte_bswap32(block_size); + } cdesc->cd_cur_ptr += sizeof(struct icp_qat_hw_auth_setup); diff --git a/dpdk/drivers/crypto/snow3g/meson.build b/dpdk/drivers/crypto/snow3g/meson.build new file mode 100644 index 000000000..c566a5f67 --- /dev/null +++ b/dpdk/drivers/crypto/snow3g/meson.build @@ -0,0 +1,13 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2019 Intel Corporation + +lib = cc.find_library('sso_snow3g', required: false) +if not lib.found() or not cc.has_header('sso_snow3g.h') + build = false + subdir_done() +endif + +allow_experimental_apis = true +ext_deps += lib +sources = files('rte_snow3g_pmd.c', 'rte_snow3g_pmd_ops.c') +deps += ['bus_vdev', 'cryptodev'] diff --git a/dpdk/drivers/crypto/snow3g/rte_snow3g_pmd_ops.c b/dpdk/drivers/crypto/snow3g/rte_snow3g_pmd_ops.c index cfbc9522a..a367ee9a0 100644 --- a/dpdk/drivers/crypto/snow3g/rte_snow3g_pmd_ops.c +++ b/dpdk/drivers/crypto/snow3g/rte_snow3g_pmd_ops.c @@ -142,6 +142,11 @@ static int snow3g_pmd_qp_release(struct rte_cryptodev *dev, uint16_t qp_id) { if (dev->data->queue_pairs[qp_id] != NULL) { + struct snow3g_qp *qp = dev->data->queue_pairs[qp_id]; + + if (qp->processed_ops) + rte_ring_free(qp->processed_ops); + rte_free(dev->data->queue_pairs[qp_id]); dev->data->queue_pairs[qp_id] = NULL; } diff --git a/dpdk/drivers/crypto/virtio/virtio_logs.h b/dpdk/drivers/crypto/virtio/virtio_logs.h index 26a286cf8..1ee381930 100644 --- a/dpdk/drivers/crypto/virtio/virtio_logs.h +++ b/dpdk/drivers/crypto/virtio/virtio_logs.h @@ -7,8 +7,10 @@ #include +extern int virtio_crypto_logtype_init; + #define PMD_INIT_LOG(level, fmt, args...) \ - rte_log(RTE_LOG_ ## level, RTE_LOGTYPE_PMD, \ + rte_log(RTE_LOG_ ## level, virtio_crypto_logtype_init, \ "PMD: %s(): " fmt "\n", __func__, ##args) #define PMD_INIT_FUNC_TRACE() PMD_INIT_LOG(DEBUG, " >>") diff --git a/dpdk/drivers/crypto/virtio/virtio_rxtx.c b/dpdk/drivers/crypto/virtio/virtio_rxtx.c index e32a1ecd6..e9a63cb5a 100644 --- a/dpdk/drivers/crypto/virtio/virtio_rxtx.c +++ b/dpdk/drivers/crypto/virtio/virtio_rxtx.c @@ -203,8 +203,8 @@ virtqueue_crypto_sym_enqueue_xmit( uint16_t req_data_len = sizeof(struct virtio_crypto_op_data_req); uint32_t indirect_vring_addr_offset = req_data_len + sizeof(struct virtio_crypto_inhdr); - uint32_t indirect_iv_addr_offset = indirect_vring_addr_offset + - sizeof(struct vring_desc) * NUM_ENTRY_VIRTIO_CRYPTO_OP; + uint32_t indirect_iv_addr_offset = + offsetof(struct virtio_crypto_op_cookie, iv); struct rte_crypto_sym_op *sym_op = cop->sym; struct virtio_crypto_session *session = (struct virtio_crypto_session *)get_sym_session_private_data( diff --git a/dpdk/drivers/crypto/zuc/meson.build b/dpdk/drivers/crypto/zuc/meson.build index b8ca7107e..2b48072c6 100644 --- a/dpdk/drivers/crypto/zuc/meson.build +++ b/dpdk/drivers/crypto/zuc/meson.build @@ -1,12 +1,12 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2018 Intel Corporation -lib = cc.find_library('libsso_zuc', required: false) -if not lib.found() +lib = cc.find_library('sso_zuc', required: false) +if not lib.found() or not cc.has_header('sso_zuc.h') build = false -else - ext_deps += lib + subdir_done() endif +ext_deps += lib sources = files('rte_zuc_pmd.c', 'rte_zuc_pmd_ops.c') deps += ['bus_vdev'] diff --git a/dpdk/drivers/crypto/zuc/rte_zuc_pmd_ops.c b/dpdk/drivers/crypto/zuc/rte_zuc_pmd_ops.c index 6da396542..04d45e449 100644 --- a/dpdk/drivers/crypto/zuc/rte_zuc_pmd_ops.c +++ b/dpdk/drivers/crypto/zuc/rte_zuc_pmd_ops.c @@ -142,6 +142,11 @@ static int zuc_pmd_qp_release(struct rte_cryptodev *dev, uint16_t qp_id) { if (dev->data->queue_pairs[qp_id] != NULL) { + struct zuc_qp *qp = dev->data->queue_pairs[qp_id]; + + if (qp->processed_ops) + rte_ring_free(qp->processed_ops); + rte_free(dev->data->queue_pairs[qp_id]); dev->data->queue_pairs[qp_id] = NULL; } diff --git a/dpdk/drivers/event/dpaa2/dpaa2_eventdev.h b/dpdk/drivers/event/dpaa2/dpaa2_eventdev.h index c847b3eab..bdac1aa56 100644 --- a/dpdk/drivers/event/dpaa2/dpaa2_eventdev.h +++ b/dpdk/drivers/event/dpaa2/dpaa2_eventdev.h @@ -1,8 +1,5 @@ -/* - * SPDX-License-Identifier: BSD-3-Clause - * - * Copyright 2017 NXP - * +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright 2017 NXP */ #ifndef __DPAA2_EVENTDEV_H__ diff --git a/dpdk/drivers/event/dpaa2/dpaa2_eventdev_logs.h b/dpdk/drivers/event/dpaa2/dpaa2_eventdev_logs.h index a2c2060cf..86f2e5393 100644 --- a/dpdk/drivers/event/dpaa2/dpaa2_eventdev_logs.h +++ b/dpdk/drivers/event/dpaa2/dpaa2_eventdev_logs.h @@ -1,5 +1,4 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause +/* SPDX-License-Identifier: BSD-3-Clause * Copyright 2018 NXP */ diff --git a/dpdk/drivers/event/dsw/dsw_evdev.c b/dpdk/drivers/event/dsw/dsw_evdev.c index 33ba13647..9387d4149 100644 --- a/dpdk/drivers/event/dsw/dsw_evdev.c +++ b/dpdk/drivers/event/dsw/dsw_evdev.c @@ -102,9 +102,6 @@ dsw_queue_setup(struct rte_eventdev *dev, uint8_t queue_id, if (RTE_EVENT_QUEUE_CFG_ALL_TYPES & conf->event_queue_cfg) return -ENOTSUP; - if (conf->schedule_type == RTE_SCHED_TYPE_ORDERED) - return -ENOTSUP; - /* SINGLE_LINK is better off treated as TYPE_ATOMIC, since it * avoid the "fake" TYPE_PARALLEL flow_id assignment. Since * the queue will only have a single serving port, no @@ -113,8 +110,12 @@ dsw_queue_setup(struct rte_eventdev *dev, uint8_t queue_id, */ if (RTE_EVENT_QUEUE_CFG_SINGLE_LINK & conf->event_queue_cfg) queue->schedule_type = RTE_SCHED_TYPE_ATOMIC; - else /* atomic or parallel */ + else { + if (conf->schedule_type == RTE_SCHED_TYPE_ORDERED) + return -ENOTSUP; + /* atomic or parallel */ queue->schedule_type = conf->schedule_type; + } queue->num_serving_ports = 0; @@ -217,7 +218,9 @@ dsw_info_get(struct rte_eventdev *dev __rte_unused, .max_event_port_enqueue_depth = DSW_MAX_PORT_ENQUEUE_DEPTH, .max_num_events = DSW_MAX_EVENTS, .event_dev_cap = RTE_EVENT_DEV_CAP_BURST_MODE| - RTE_EVENT_DEV_CAP_DISTRIBUTED_SCHED + RTE_EVENT_DEV_CAP_DISTRIBUTED_SCHED| + RTE_EVENT_DEV_CAP_NONSEQ_MODE| + RTE_EVENT_DEV_CAP_MULTIPLE_QUEUE_PORT }; } diff --git a/dpdk/drivers/event/meson.build b/dpdk/drivers/event/meson.build index 836ecbb74..fb723f727 100644 --- a/dpdk/drivers/event/meson.build +++ b/dpdk/drivers/event/meson.build @@ -1,7 +1,11 @@ # SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2017 Intel Corporation -drivers = ['dpaa', 'dpaa2', 'octeontx', 'opdl', 'skeleton', 'sw', 'dsw'] +drivers = ['dpaa', 'dpaa2', 'opdl', 'skeleton', 'sw', 'dsw'] +if not (toolchain == 'gcc' and cc.version().version_compare('<4.8.6') and + dpdk_conf.has('RTE_ARCH_ARM64')) + drivers += 'octeontx' +endif std_deps = ['eventdev', 'kvargs'] config_flag_fmt = 'RTE_LIBRTE_@0@_EVENTDEV_PMD' driver_name_fmt = 'rte_pmd_@0@_event' diff --git a/dpdk/drivers/event/opdl/opdl_evdev.c b/dpdk/drivers/event/opdl/opdl_evdev.c index a4f0bc8b6..d2d2be44b 100644 --- a/dpdk/drivers/event/opdl/opdl_evdev.c +++ b/dpdk/drivers/event/opdl/opdl_evdev.c @@ -422,16 +422,17 @@ opdl_dump(struct rte_eventdev *dev, FILE *f) else p_type = "????"; - sprintf(queue_id, "%02u", port->external_qid); + snprintf(queue_id, sizeof(queue_id), "%02u", + port->external_qid); if (port->p_type == OPDL_REGULAR_PORT || port->p_type == OPDL_ASYNC_PORT) - sprintf(total_cyc, + snprintf(total_cyc, sizeof(total_cyc), " %'16"PRIu64"", (cpg != 0 ? port->port_stat[total_cycles] / cpg : 0)); else - sprintf(total_cyc, + snprintf(total_cyc, sizeof(total_cyc), " ----"); fprintf(f, "%4s %10u %8u %9s %'16"PRIu64" %'16"PRIu64" %s " diff --git a/dpdk/drivers/event/opdl/opdl_evdev_xstats.c b/dpdk/drivers/event/opdl/opdl_evdev_xstats.c index 0e6c6bd5e..27b3d8802 100644 --- a/dpdk/drivers/event/opdl/opdl_evdev_xstats.c +++ b/dpdk/drivers/event/opdl/opdl_evdev_xstats.c @@ -32,10 +32,9 @@ opdl_xstats_init(struct rte_eventdev *dev) uint32_t index = (i * max_num_port_xstat) + j; /* Name */ - sprintf(device->port_xstat[index].stat.name, - "port_%02u_%s", - i, - port_xstat_str[j]); + snprintf(device->port_xstat[index].stat.name, + sizeof(device->port_xstat[index].stat.name), + "port_%02u_%s", i, port_xstat_str[j]); /* ID */ device->port_xstat[index].id = index; diff --git a/dpdk/drivers/event/opdl/opdl_ring.h b/dpdk/drivers/event/opdl/opdl_ring.h index 751a59dbc..14ababe0b 100644 --- a/dpdk/drivers/event/opdl/opdl_ring.h +++ b/dpdk/drivers/event/opdl/opdl_ring.h @@ -24,7 +24,7 @@ * packets. * * A opdl_ring can be used as the basis for pipeline based applications. Instead - * of each stage in a pipeline dequeueing from a ring, processing and enqueueing + * of each stage in a pipeline dequeuing from a ring, processing and enqueuing * to another ring, it can process entries in-place on the ring. If stages do * not depend on each other, they can run in parallel. * @@ -152,7 +152,7 @@ opdl_ring_get_name(const struct opdl_ring *t); * Enabling this may have a negative impact on performance if only one thread * will be processing this stage. * @param is_input - * Indication to nitialise the stage with all slots available or none + * Indication to initialise the stage with all slots available or none * * @return * A pointer to the new stage, or NULL on error. @@ -589,7 +589,7 @@ opdl_ring_set_stage_threadsafe(struct opdl_stage *s, bool threadsafe); * Compare the event descriptor with original version in the ring. * if key field event descriptor is changed by application, then * update the slot in the ring otherwise do nothing with it. - * the key field is flow_id, prioirty, mbuf, impl_opaque + * the key field is flow_id, priority, mbuf, impl_opaque * * @param s * The opdl_stage. @@ -600,7 +600,7 @@ opdl_ring_set_stage_threadsafe(struct opdl_stage *s, bool threadsafe); * @param atomic * queue type associate with the stage. * @return - * if the evevnt key field is changed compare with previous record. + * if the event key field is changed compare with previous record. */ bool diff --git a/dpdk/drivers/event/sw/sw_evdev_selftest.c b/dpdk/drivers/event/sw/sw_evdev_selftest.c index d00d5de61..38c21fa0f 100644 --- a/dpdk/drivers/event/sw/sw_evdev_selftest.c +++ b/dpdk/drivers/event/sw/sw_evdev_selftest.c @@ -385,7 +385,7 @@ run_prio_packet_test(struct test *t) .mbuf = arp }; err = rte_event_enqueue_burst(evdev, t->port[0], &ev, 1); - if (err < 0) { + if (err != 1) { printf("%d: error failed to enqueue\n", __LINE__); return -1; } @@ -477,7 +477,7 @@ test_single_directed_packet(struct test *t) /* generate pkt and enqueue */ err = rte_event_enqueue_burst(evdev, rx_enq, &ev, 1); - if (err < 0) { + if (err != 1) { printf("%d: error failed to enqueue\n", __LINE__); return -1; } @@ -546,7 +546,7 @@ test_directed_forward_credits(struct test *t) for (i = 0; i < 1000; i++) { err = rte_event_enqueue_burst(evdev, 0, &ev, 1); - if (err < 0) { + if (err != 1) { printf("%d: error failed to enqueue\n", __LINE__); return -1; } @@ -707,7 +707,7 @@ burst_packets(struct test *t) }; /* generate pkt and enqueue */ err = rte_event_enqueue_burst(evdev, t->port[rx_port], &ev, 1); - if (err < 0) { + if (err != 1) { printf("%d: Failed to enqueue\n", __LINE__); return -1; } @@ -795,7 +795,7 @@ abuse_inflights(struct test *t) /* Enqueue op only */ err = rte_event_enqueue_burst(evdev, t->port[rx_enq], &release_ev, 1); - if (err < 0) { + if (err != 1) { printf("%d: Failed to enqueue\n", __LINE__); return -1; } @@ -2026,7 +2026,7 @@ load_balancing(struct test *t) }; /* generate pkt and enqueue */ err = rte_event_enqueue_burst(evdev, t->port[rx_enq], &ev, 1); - if (err < 0) { + if (err != 1) { printf("%d: Failed to enqueue\n", __LINE__); return -1; } @@ -2125,7 +2125,7 @@ load_balancing_history(struct test *t) } arp->hash.rss = flows1[i]; err = rte_event_enqueue_burst(evdev, t->port[rx_enq], &ev, 1); - if (err < 0) { + if (err != 1) { printf("%d: Failed to enqueue\n", __LINE__); return -1; } @@ -2175,7 +2175,7 @@ load_balancing_history(struct test *t) arp->hash.rss = flows2[i]; err = rte_event_enqueue_burst(evdev, t->port[rx_enq], &ev, 1); - if (err < 0) { + if (err != 1) { printf("%d: Failed to enqueue\n", __LINE__); return -1; } @@ -2285,7 +2285,7 @@ invalid_qid(struct test *t) }; /* generate pkt and enqueue */ err = rte_event_enqueue_burst(evdev, t->port[rx_enq], &ev, 1); - if (err < 0) { + if (err != 1) { printf("%d: Failed to enqueue\n", __LINE__); return -1; } @@ -2372,7 +2372,7 @@ single_packet(struct test *t) arp->seqn = MAGIC_SEQN; err = rte_event_enqueue_burst(evdev, t->port[rx_enq], &ev, 1); - if (err < 0) { + if (err != 1) { printf("%d: Failed to enqueue\n", __LINE__); return -1; } @@ -2416,7 +2416,7 @@ single_packet(struct test *t) rte_pktmbuf_free(ev.mbuf); err = rte_event_enqueue_burst(evdev, t->port[wrk_enq], &release_ev, 1); - if (err < 0) { + if (err != 1) { printf("%d: Failed to enqueue\n", __LINE__); return -1; } diff --git a/dpdk/drivers/mempool/dpaa2/dpaa2_hw_mempool.c b/dpdk/drivers/mempool/dpaa2/dpaa2_hw_mempool.c index 790cded80..e26b0ba15 100644 --- a/dpdk/drivers/mempool/dpaa2/dpaa2_hw_mempool.c +++ b/dpdk/drivers/mempool/dpaa2/dpaa2_hw_mempool.c @@ -316,8 +316,8 @@ rte_dpaa2_mbuf_alloc_bulk(struct rte_mempool *pool, * in pool, qbman_swp_acquire returns 0 */ if (ret <= 0) { - DPAA2_MEMPOOL_ERR("Buffer acquire failed with" - " err code: %d", ret); + DPAA2_MEMPOOL_DP_DEBUG( + "Buffer acquire failed with err code: %d", ret); /* The API expect the exact number of requested bufs */ /* Releasing all buffers allocated */ rte_dpaa2_mbuf_release(pool, obj_table, bpid, diff --git a/dpdk/drivers/mempool/dpaa2/dpaa2_hw_mempool_logs.h b/dpdk/drivers/mempool/dpaa2/dpaa2_hw_mempool_logs.h index c79b3d1cf..986264319 100644 --- a/dpdk/drivers/mempool/dpaa2/dpaa2_hw_mempool_logs.h +++ b/dpdk/drivers/mempool/dpaa2/dpaa2_hw_mempool_logs.h @@ -1,5 +1,4 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause +/* SPDX-License-Identifier: BSD-3-Clause * Copyright 2017 NXP */ diff --git a/dpdk/drivers/net/af_packet/rte_eth_af_packet.c b/dpdk/drivers/net/af_packet/rte_eth_af_packet.c index 95a98c6b8..264cfc08f 100644 --- a/dpdk/drivers/net/af_packet/rte_eth_af_packet.c +++ b/dpdk/drivers/net/af_packet/rte_eth_af_packet.c @@ -433,8 +433,7 @@ eth_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) int ret; int s; unsigned int data_size = internals->req.tp_frame_size - - TPACKET2_HDRLEN - - sizeof(struct sockaddr_ll); + TPACKET2_HDRLEN; if (mtu > data_size) return -EINVAL; diff --git a/dpdk/drivers/net/atlantic/atl_ethdev.c b/dpdk/drivers/net/atlantic/atl_ethdev.c index 5bc04f55c..2d05bb4c7 100644 --- a/dpdk/drivers/net/atlantic/atl_ethdev.c +++ b/dpdk/drivers/net/atlantic/atl_ethdev.c @@ -165,7 +165,8 @@ static struct rte_pci_driver rte_atl_pmd = { | DEV_RX_OFFLOAD_IPV4_CKSUM \ | DEV_RX_OFFLOAD_UDP_CKSUM \ | DEV_RX_OFFLOAD_TCP_CKSUM \ - | DEV_RX_OFFLOAD_JUMBO_FRAME) + | DEV_RX_OFFLOAD_JUMBO_FRAME \ + | DEV_RX_OFFLOAD_VLAN_FILTER) #define ATL_TX_OFFLOADS (DEV_TX_OFFLOAD_VLAN_INSERT \ | DEV_TX_OFFLOAD_IPV4_CKSUM \ @@ -174,6 +175,8 @@ static struct rte_pci_driver rte_atl_pmd = { | DEV_TX_OFFLOAD_TCP_TSO \ | DEV_TX_OFFLOAD_MULTI_SEGS) +#define SFP_EEPROM_SIZE 0x100 + static const struct rte_eth_desc_lim rx_desc_lim = { .nb_max = ATL_MAX_RING_DESC, .nb_min = ATL_MIN_RING_DESC, @@ -465,8 +468,6 @@ atl_dev_start(struct rte_eth_dev *dev) struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); struct rte_intr_handle *intr_handle = &pci_dev->intr_handle; uint32_t intr_vector = 0; - uint32_t *link_speeds; - uint32_t speed = 0; int status; int err; @@ -543,6 +544,8 @@ atl_dev_start(struct rte_eth_dev *dev) goto error; } + err = atl_dev_set_link_up(dev); + err = hw->aq_fw_ops->update_link_status(hw); if (err) @@ -550,26 +553,6 @@ atl_dev_start(struct rte_eth_dev *dev) dev->data->dev_link.link_status = hw->aq_link_status.mbps != 0; - link_speeds = &dev->data->dev_conf.link_speeds; - - speed = 0x0; - - if (*link_speeds == ETH_LINK_SPEED_AUTONEG) { - speed = hw->aq_nic_cfg->link_speed_msk; - } else { - if (*link_speeds & ETH_LINK_SPEED_10G) - speed |= AQ_NIC_RATE_10G; - if (*link_speeds & ETH_LINK_SPEED_5G) - speed |= AQ_NIC_RATE_5G; - if (*link_speeds & ETH_LINK_SPEED_1G) - speed |= AQ_NIC_RATE_1G; - if (*link_speeds & ETH_LINK_SPEED_2_5G) - speed |= AQ_NIC_RATE_2G5; - if (*link_speeds & ETH_LINK_SPEED_100M) - speed |= AQ_NIC_RATE_100M; - } - - err = hw->aq_fw_ops->set_link_speed(hw, speed); if (err) goto error; @@ -657,9 +640,25 @@ static int atl_dev_set_link_up(struct rte_eth_dev *dev) { struct aq_hw_s *hw = ATL_DEV_PRIVATE_TO_HW(dev->data->dev_private); + uint32_t link_speeds = dev->data->dev_conf.link_speeds; + uint32_t speed_mask = 0; - return hw->aq_fw_ops->set_link_speed(hw, - hw->aq_nic_cfg->link_speed_msk); + if (link_speeds == ETH_LINK_SPEED_AUTONEG) { + speed_mask = hw->aq_nic_cfg->link_speed_msk; + } else { + if (link_speeds & ETH_LINK_SPEED_10G) + speed_mask |= AQ_NIC_RATE_10G; + if (link_speeds & ETH_LINK_SPEED_5G) + speed_mask |= AQ_NIC_RATE_5G; + if (link_speeds & ETH_LINK_SPEED_1G) + speed_mask |= AQ_NIC_RATE_1G; + if (link_speeds & ETH_LINK_SPEED_2_5G) + speed_mask |= AQ_NIC_RATE_2G5; + if (link_speeds & ETH_LINK_SPEED_100M) + speed_mask |= AQ_NIC_RATE_100M; + } + + return hw->aq_fw_ops->set_link_speed(hw, speed_mask); } /* @@ -761,7 +760,7 @@ atl_dev_xstats_get_names(struct rte_eth_dev *dev __rte_unused, snprintf(xstats_names[i].name, RTE_ETH_XSTATS_NAME_SIZE, "%s", atl_xstats_tbl[i].name); - return size; + return i; } static int @@ -781,7 +780,7 @@ atl_dev_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *stats, atl_xstats_tbl[i].offset); } - return n; + return i; } static int @@ -879,6 +878,7 @@ atl_dev_link_update(struct rte_eth_dev *dev, int wait __rte_unused) struct atl_interrupt *intr = ATL_DEV_PRIVATE_TO_INTR(dev->data->dev_private); struct rte_eth_link link, old; + u32 fc = AQ_NIC_FC_OFF; int err = 0; link.link_status = ETH_LINK_DOWN; @@ -915,6 +915,15 @@ atl_dev_link_update(struct rte_eth_dev *dev, int wait __rte_unused) if (link.link_status == old.link_status) return -1; + /* Driver has to update flow control settings on RX block + * on any link event. + * We should query FW whether it negotiated FC. + */ + if (hw->aq_fw_ops->get_flow_control) { + hw->aq_fw_ops->get_flow_control(hw, &fc); + hw_atl_b0_set_fc(hw, fc, 0U); + } + return 0; } @@ -1094,8 +1103,6 @@ atl_dev_interrupt_handler(void *param) atl_dev_interrupt_action(dev, dev->intr_handle); } -#define SFP_EEPROM_SIZE 0xff - static int atl_dev_get_eeprom_length(struct rte_eth_dev *dev __rte_unused) { @@ -1106,28 +1113,46 @@ static int atl_dev_get_eeprom(struct rte_eth_dev *dev, struct rte_dev_eeprom_info *eeprom) { struct aq_hw_s *hw = ATL_DEV_PRIVATE_TO_HW(dev->data->dev_private); + int dev_addr = SMBUS_DEVICE_ID; if (hw->aq_fw_ops->get_eeprom == NULL) return -ENOTSUP; - if (eeprom->length != SFP_EEPROM_SIZE || eeprom->data == NULL) + if (eeprom->length + eeprom->offset > SFP_EEPROM_SIZE || + eeprom->data == NULL) return -EINVAL; - return hw->aq_fw_ops->get_eeprom(hw, eeprom->data, eeprom->length); + if (eeprom->magic > 0x7F) + return -EINVAL; + + if (eeprom->magic) + dev_addr = eeprom->magic; + + return hw->aq_fw_ops->get_eeprom(hw, dev_addr, eeprom->data, + eeprom->length, eeprom->offset); } static int atl_dev_set_eeprom(struct rte_eth_dev *dev, struct rte_dev_eeprom_info *eeprom) { struct aq_hw_s *hw = ATL_DEV_PRIVATE_TO_HW(dev->data->dev_private); + int dev_addr = SMBUS_DEVICE_ID; if (hw->aq_fw_ops->set_eeprom == NULL) return -ENOTSUP; - if (eeprom->length != SFP_EEPROM_SIZE || eeprom->data == NULL) + if (eeprom->length + eeprom->offset > SFP_EEPROM_SIZE || + eeprom->data == NULL) return -EINVAL; - return hw->aq_fw_ops->set_eeprom(hw, eeprom->data, eeprom->length); + if (eeprom->magic > 0x7F) + return -EINVAL; + + if (eeprom->magic) + dev_addr = eeprom->magic; + + return hw->aq_fw_ops->set_eeprom(hw, dev_addr, eeprom->data, + eeprom->length, eeprom->offset); } static int @@ -1160,16 +1185,21 @@ static int atl_flow_ctrl_get(struct rte_eth_dev *dev, struct rte_eth_fc_conf *fc_conf) { struct aq_hw_s *hw = ATL_DEV_PRIVATE_TO_HW(dev->data->dev_private); + u32 fc = AQ_NIC_FC_OFF; - if (hw->aq_nic_cfg->flow_control == AQ_NIC_FC_OFF) + if (hw->aq_fw_ops->get_flow_control == NULL) + return -ENOTSUP; + + hw->aq_fw_ops->get_flow_control(hw, &fc); + + if (fc == AQ_NIC_FC_OFF) fc_conf->mode = RTE_FC_NONE; - else if (hw->aq_nic_cfg->flow_control & (AQ_NIC_FC_RX | AQ_NIC_FC_TX)) + else if ((fc & AQ_NIC_FC_RX) && (fc & AQ_NIC_FC_TX)) fc_conf->mode = RTE_FC_FULL; - else if (hw->aq_nic_cfg->flow_control & AQ_NIC_FC_RX) + else if (fc & AQ_NIC_FC_RX) fc_conf->mode = RTE_FC_RX_PAUSE; - else if (hw->aq_nic_cfg->flow_control & AQ_NIC_FC_RX) + else if (fc & AQ_NIC_FC_TX) fc_conf->mode = RTE_FC_TX_PAUSE; - return 0; } diff --git a/dpdk/drivers/net/atlantic/atl_rxtx.c b/dpdk/drivers/net/atlantic/atl_rxtx.c index fd909476c..fe0077044 100644 --- a/dpdk/drivers/net/atlantic/atl_rxtx.c +++ b/dpdk/drivers/net/atlantic/atl_rxtx.c @@ -21,6 +21,8 @@ #define ATL_TX_OFFLOAD_MASK ( \ PKT_TX_VLAN | \ + PKT_TX_IPV6 | \ + PKT_TX_IPV4 | \ PKT_TX_IP_CKSUM | \ PKT_TX_L4_MASK | \ PKT_TX_TCP_SEG) @@ -810,12 +812,12 @@ atl_prep_pkts(__rte_unused void *tx_queue, struct rte_mbuf **tx_pkts, ol_flags = m->ol_flags; if (m->nb_segs > AQ_HW_MAX_SEGS_SIZE) { - rte_errno = -EINVAL; + rte_errno = EINVAL; return i; } if (ol_flags & ATL_TX_OFFLOAD_NOTSUP_MASK) { - rte_errno = -ENOTSUP; + rte_errno = ENOTSUP; return i; } @@ -944,7 +946,7 @@ atl_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) break; } - PMD_RX_LOG(ERR, "port_id=%u queue_id=%u tail=%u " + PMD_RX_LOG(DEBUG, "port_id=%u queue_id=%u tail=%u " "eop=0x%x pkt_len=%u hash=0x%x hash_type=0x%x", (unsigned int)rxq->port_id, (unsigned int)rxq->queue_id, @@ -979,7 +981,7 @@ atl_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) while (true) { new_mbuf = rte_mbuf_raw_alloc(rxq->mb_pool); if (new_mbuf == NULL) { - PMD_RX_LOG(ERR, + PMD_RX_LOG(DEBUG, "RX mbuf alloc failed port_id=%u " "queue_id=%u", (unsigned int)rxq->port_id, (unsigned int)rxq->queue_id); @@ -1082,7 +1084,7 @@ atl_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) adapter->sw_stats.q_ibytes[rxq->queue_id] += rx_mbuf_first->pkt_len; - PMD_RX_LOG(ERR, "add mbuf segs=%d pkt_len=%d", + PMD_RX_LOG(DEBUG, "add mbuf segs=%d pkt_len=%d", rx_mbuf_first->nb_segs, rx_mbuf_first->pkt_len); } @@ -1102,7 +1104,7 @@ err_stop: */ nb_hold = (uint16_t)(nb_hold + rxq->nb_rx_hold); if (nb_hold > rxq->rx_free_thresh) { - PMD_RX_LOG(ERR, "port_id=%u queue_id=%u rx_tail=%u " + PMD_RX_LOG(DEBUG, "port_id=%u queue_id=%u rx_tail=%u " "nb_hold=%u nb_rx=%u", (unsigned int)rxq->port_id, (unsigned int)rxq->queue_id, (unsigned int)tail, (unsigned int)nb_hold, @@ -1127,8 +1129,6 @@ atl_xmit_cleanup(struct atl_tx_queue *txq) struct hw_atl_txd_s *txd; int to_clean = 0; - PMD_INIT_FUNC_TRACE(); - if (txq != NULL) { sw_ring = txq->sw_ring; int head = txq->tx_head; @@ -1179,11 +1179,7 @@ atl_tso_setup(struct rte_mbuf *tx_pkt, union hw_atl_txc_s *txc) uint32_t tx_cmd = 0; uint64_t ol_flags = tx_pkt->ol_flags; - PMD_INIT_FUNC_TRACE(); - if (ol_flags & PKT_TX_TCP_SEG) { - PMD_DRV_LOG(DEBUG, "xmit TSO pkt"); - tx_cmd |= tx_desc_cmd_lso | tx_desc_cmd_l4cs; txc->cmd = 0x4; @@ -1238,8 +1234,6 @@ atl_xmit_pkt(struct aq_hw_s *hw, struct atl_tx_queue *txq, u32 tx_cmd = 0U; int desc_count = 0; - PMD_INIT_FUNC_TRACE(); - tail = txq->tx_tail; txc = (union hw_atl_txc_s *)&txq->hw_ring[tail]; @@ -1354,4 +1348,3 @@ atl_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) return nb_tx; } - diff --git a/dpdk/drivers/net/atlantic/atl_types.h b/dpdk/drivers/net/atlantic/atl_types.h index 3d90f6cae..c53d58969 100644 --- a/dpdk/drivers/net/atlantic/atl_types.h +++ b/dpdk/drivers/net/atlantic/atl_types.h @@ -94,6 +94,8 @@ struct aq_hw_s { struct hw_atl_stats_s last_stats; struct aq_stats_s curr_stats; + u32 caps_lo; + u64 speed; unsigned int chip_features; u32 fw_ver_actual; @@ -133,13 +135,16 @@ struct aq_fw_ops { int (*get_eee_rate)(struct aq_hw_s *self, u32 *rate, u32 *supported_rates); + int (*get_flow_control)(struct aq_hw_s *self, u32 *fc); int (*set_flow_control)(struct aq_hw_s *self); int (*led_control)(struct aq_hw_s *self, u32 mode); - int (*get_eeprom)(struct aq_hw_s *self, u32 *data, u32 len); + int (*get_eeprom)(struct aq_hw_s *self, int dev_addr, + u32 *data, u32 len, u32 offset); - int (*set_eeprom)(struct aq_hw_s *self, u32 *data, u32 len); + int (*set_eeprom)(struct aq_hw_s *self, int dev_addr, + u32 *data, u32 len, u32 offset); }; struct atl_sw_stats { diff --git a/dpdk/drivers/net/atlantic/hw_atl/hw_atl_b0.c b/dpdk/drivers/net/atlantic/hw_atl/hw_atl_b0.c index 9400e0edb..a76268e92 100644 --- a/dpdk/drivers/net/atlantic/hw_atl/hw_atl_b0.c +++ b/dpdk/drivers/net/atlantic/hw_atl/hw_atl_b0.c @@ -26,12 +26,17 @@ int hw_atl_b0_hw_reset(struct aq_hw_s *self) return err; } +int hw_atl_b0_set_fc(struct aq_hw_s *self, u32 fc, u32 tc) +{ + hw_atl_rpb_rx_xoff_en_per_tc_set(self, !!(fc & AQ_NIC_FC_RX), tc); + return 0; +} + static int hw_atl_b0_hw_qos_set(struct aq_hw_s *self) { u32 tc = 0U; u32 buff_size = 0U; unsigned int i_priority = 0U; - bool is_rx_flow_control = false; /* TPS Descriptor rate init */ hw_atl_tps_tx_pkt_shed_desc_rate_curr_time_res_set(self, 0x0U); @@ -64,7 +69,6 @@ static int hw_atl_b0_hw_qos_set(struct aq_hw_s *self) /* QoS Rx buf size per TC */ tc = 0; - is_rx_flow_control = 0; buff_size = HW_ATL_B0_RXBUF_MAX; hw_atl_rpb_rx_pkt_buff_size_per_tc_set(self, buff_size, tc); @@ -76,9 +80,7 @@ static int hw_atl_b0_hw_qos_set(struct aq_hw_s *self) (buff_size * (1024U / 32U) * 50U) / 100U, tc); - hw_atl_rpb_rx_xoff_en_per_tc_set(self, - is_rx_flow_control ? 1U : 0U, - tc); + hw_atl_rpb_rx_xoff_en_per_tc_set(self, 0U, tc); /* QoS 802.1p priority -> TC mapping */ for (i_priority = 8U; i_priority--;) @@ -290,6 +292,8 @@ int hw_atl_b0_hw_init_rx_path(struct aq_hw_s *self) hw_atl_rpfl2broadcast_flr_act_set(self, 1U); hw_atl_rpfl2broadcast_count_threshold_set(self, 0xFFFFU & (~0U / 256U)); + hw_atl_rpfl2broadcast_en_set(self, 1U); + hw_atl_rdm_rx_dca_en_set(self, 0U); hw_atl_rdm_rx_dca_mode_set(self, 0U); diff --git a/dpdk/drivers/net/atlantic/hw_atl/hw_atl_b0.h b/dpdk/drivers/net/atlantic/hw_atl/hw_atl_b0.h index 06feb56c1..d1ba2aceb 100644 --- a/dpdk/drivers/net/atlantic/hw_atl/hw_atl_b0.h +++ b/dpdk/drivers/net/atlantic/hw_atl/hw_atl_b0.h @@ -11,6 +11,8 @@ int hw_atl_b0_hw_reset(struct aq_hw_s *self); int hw_atl_b0_hw_init(struct aq_hw_s *self, u8 *mac_addr); +int hw_atl_b0_set_fc(struct aq_hw_s *self, u32 fc, u32 tc); + int hw_atl_b0_hw_ring_tx_init(struct aq_hw_s *self, uint64_t base_addr, int index, int size, int cpu, int vec); int hw_atl_b0_hw_ring_rx_init(struct aq_hw_s *self, uint64_t base_addr, diff --git a/dpdk/drivers/net/atlantic/hw_atl/hw_atl_utils.c b/dpdk/drivers/net/atlantic/hw_atl/hw_atl_utils.c index f11093a50..262601941 100644 --- a/dpdk/drivers/net/atlantic/hw_atl/hw_atl_utils.c +++ b/dpdk/drivers/net/atlantic/hw_atl/hw_atl_utils.c @@ -306,6 +306,11 @@ int hw_atl_utils_fw_downld_dwords(struct aq_hw_s *self, u32 a, HW_ATL_MIF_CMD)), 1, 1000U); + if (err) { + err = -ETIMEDOUT; + goto err_exit; + } + *(p++) = aq_hw_read_reg(self, HW_ATL_MIF_VAL); a += 4; } @@ -328,12 +333,13 @@ int hw_atl_utils_fw_upload_dwords(struct aq_hw_s *self, u32 a, u32 *p, goto err_exit; } if (IS_CHIP_FEATURE(REVISION_B1)) { - u32 offset = 0; + u32 mbox_offset = (a - self->rpc_addr) / sizeof(u32); + u32 data_offset = 0; - for (; offset < cnt; ++offset) { - aq_hw_write_reg(self, 0x328, p[offset]); + for (; data_offset < cnt; ++mbox_offset, ++data_offset) { + aq_hw_write_reg(self, 0x328, p[data_offset]); aq_hw_write_reg(self, 0x32C, - (0x80000000 | (0xFFFF & (offset * 4)))); + (0x80000000 | (0xFFFF & (mbox_offset * 4)))); hw_atl_mcp_up_force_intr_set(self, 1); /* 1000 times by 10us = 10ms */ AQ_HW_WAIT_FOR((aq_hw_read_reg(self, @@ -462,8 +468,6 @@ int hw_atl_utils_fw_rpc_wait(struct aq_hw_s *self, goto err_exit; } } while (sw.tid != fw.tid || 0xFFFFU == fw.len); - if (err < 0) - goto err_exit; if (rpc) { if (fw.len) { @@ -875,8 +879,7 @@ static int aq_fw1x_set_wol(struct aq_hw_s *self, bool wol_enabled, u8 *mac) } err = hw_atl_utils_fw_rpc_call(self, rpc_size); - if (err < 0) - goto err_exit; + err_exit: return err; } diff --git a/dpdk/drivers/net/atlantic/hw_atl/hw_atl_utils.h b/dpdk/drivers/net/atlantic/hw_atl/hw_atl_utils.h index 5f3f70847..b1f03f42e 100644 --- a/dpdk/drivers/net/atlantic/hw_atl/hw_atl_utils.h +++ b/dpdk/drivers/net/atlantic/hw_atl/hw_atl_utils.h @@ -336,15 +336,8 @@ struct offload_info { u8 buf[0]; } __attribute__((__packed__)); -struct smbus_read_request { - u32 offset; /* not used */ - u32 device_id; - u32 address; - u32 length; -} __attribute__((__packed__)); - -struct smbus_write_request { - u32 offset; /* not used */ +struct smbus_request { + u32 msg_id; /* not used */ u32 device_id; u32 address; u32 length; @@ -389,8 +382,6 @@ enum hal_atl_utils_fw_state_e { #define HAL_ATLANTIC_UTILS_FW_MSG_OFFLOAD_DEL 10U #define HAL_ATLANTIC_UTILS_FW_MSG_CABLE_DIAG 13U // 0xd -#define SMBUS_READ_REQUEST BIT(13) -#define SMBUS_WRITE_REQUEST BIT(14) #define SMBUS_DEVICE_ID 0x50 enum hw_atl_fw2x_rate { @@ -414,6 +405,9 @@ enum hw_atl_fw2x_caps_lo { CAPS_LO_2P5GBASET_FD, CAPS_LO_5GBASET_FD, CAPS_LO_10GBASET_FD, + CAPS_LO_AUTONEG, + CAPS_LO_SMBUS_READ, + CAPS_LO_SMBUS_WRITE, }; enum hw_atl_fw2x_caps_hi { diff --git a/dpdk/drivers/net/atlantic/hw_atl/hw_atl_utils_fw2x.c b/dpdk/drivers/net/atlantic/hw_atl/hw_atl_utils_fw2x.c index 6841d9bce..11f14d1a2 100644 --- a/dpdk/drivers/net/atlantic/hw_atl/hw_atl_utils_fw2x.c +++ b/dpdk/drivers/net/atlantic/hw_atl/hw_atl_utils_fw2x.c @@ -34,7 +34,6 @@ #define HAL_ATLANTIC_WOL_FILTERS_COUNT 8 #define HAL_ATLANTIC_UTILS_FW2X_MSG_WOL 0x0E -#define HW_ATL_FW_FEATURE_EEPROM 0x03010025 #define HW_ATL_FW_FEATURE_LED 0x03010026 struct fw2x_msg_wol_pattern { @@ -62,6 +61,7 @@ static int aq_fw2x_set_state(struct aq_hw_s *self, static int aq_fw2x_init(struct aq_hw_s *self) { int err = 0; + struct hw_aq_atl_utils_mbox mbox; /* check 10 times by 1ms */ AQ_HW_WAIT_FOR(0U != (self->mbox_addr = @@ -70,6 +70,12 @@ static int aq_fw2x_init(struct aq_hw_s *self) AQ_HW_WAIT_FOR(0U != (self->rpc_addr = aq_hw_read_reg(self, HW_ATL_FW2X_MPI_RPC_ADDR)), 1000U, 100U); + + /* Read caps */ + hw_atl_utils_mpi_read_stats(self, &mbox); + + self->caps_lo = mbox.info.caps_lo; + return err; } @@ -462,7 +468,15 @@ static int aq_fw2x_get_eee_rate(struct aq_hw_s *self, u32 *rate, return err; } +static int aq_fw2x_get_flow_control(struct aq_hw_s *self, u32 *fc) +{ + u32 mpi_state = aq_hw_read_reg(self, HW_ATL_FW2X_MPI_CONTROL2_ADDR); + *fc = ((mpi_state & BIT(CAPS_HI_PAUSE)) ? AQ_NIC_FC_RX : 0) | + ((mpi_state & BIT(CAPS_HI_ASYMMETRIC_PAUSE)) ? AQ_NIC_FC_TX : 0); + + return 0; +} static int aq_fw2x_set_flow_control(struct aq_hw_s *self) { @@ -484,38 +498,42 @@ static int aq_fw2x_led_control(struct aq_hw_s *self, u32 mode) return 0; } -static int aq_fw2x_get_eeprom(struct aq_hw_s *self, u32 *data, u32 len) +static int aq_fw2x_get_eeprom(struct aq_hw_s *self, int dev_addr, + u32 *data, u32 len, u32 offset) { - int err = 0; - struct smbus_read_request request; - u32 mpi_opts; + u32 bytes_remains = len % sizeof(u32); + u32 num_dwords = len / sizeof(u32); + struct smbus_request request; u32 result = 0; + u32 mpi_opts; + int err = 0; - if (self->fw_ver_actual < HW_ATL_FW_FEATURE_EEPROM) + if ((self->caps_lo & BIT(CAPS_LO_SMBUS_READ)) == 0) return -EOPNOTSUPP; - request.device_id = SMBUS_DEVICE_ID; - request.address = 0; + request.msg_id = 0; + request.device_id = dev_addr; + request.address = offset; request.length = len; /* Write SMBUS request to cfg memory */ err = hw_atl_utils_fw_upload_dwords(self, self->rpc_addr, (u32 *)(void *)&request, - RTE_ALIGN(sizeof(request), sizeof(u32))); + sizeof(request) / sizeof(u32)); if (err < 0) return err; - /* Toggle 0x368.SMBUS_READ_REQUEST bit */ + /* Toggle 0x368.CAPS_LO_SMBUS_READ bit */ mpi_opts = aq_hw_read_reg(self, HW_ATL_FW2X_MPI_CONTROL_ADDR); - mpi_opts ^= SMBUS_READ_REQUEST; + mpi_opts ^= BIT(CAPS_LO_SMBUS_READ); aq_hw_write_reg(self, HW_ATL_FW2X_MPI_CONTROL_ADDR, mpi_opts); /* Wait until REQUEST_BIT matched in 0x370 */ AQ_HW_WAIT_FOR((aq_hw_read_reg(self, HW_ATL_FW2X_MPI_STATE_ADDR) & - SMBUS_READ_REQUEST) == (mpi_opts & SMBUS_READ_REQUEST), + BIT(CAPS_LO_SMBUS_READ)) == (mpi_opts & BIT(CAPS_LO_SMBUS_READ)), 10U, 10000U); if (err < 0) @@ -523,64 +541,106 @@ static int aq_fw2x_get_eeprom(struct aq_hw_s *self, u32 *data, u32 len) err = hw_atl_utils_fw_downld_dwords(self, self->rpc_addr + sizeof(u32), &result, - RTE_ALIGN(sizeof(result), sizeof(u32))); + sizeof(result) / sizeof(u32)); if (err < 0) return err; - if (result == 0) { + if (result) + return -EIO; + + if (num_dwords) { err = hw_atl_utils_fw_downld_dwords(self, - self->rpc_addr + sizeof(u32) * 2, - data, - RTE_ALIGN(len, sizeof(u32))); + self->rpc_addr + sizeof(u32) * 2, + data, + num_dwords); if (err < 0) return err; } + if (bytes_remains) { + u32 val = 0; + + err = hw_atl_utils_fw_downld_dwords(self, + self->rpc_addr + (sizeof(u32) * 2) + + (num_dwords * sizeof(u32)), + &val, + 1); + + if (err < 0) + return err; + + rte_memcpy((u8 *)data + len - bytes_remains, + &val, bytes_remains); + } + return 0; } -static int aq_fw2x_set_eeprom(struct aq_hw_s *self, u32 *data, u32 len) +static int aq_fw2x_set_eeprom(struct aq_hw_s *self, int dev_addr, + u32 *data, u32 len, u32 offset) { - struct smbus_write_request request; + struct smbus_request request; u32 mpi_opts, result = 0; int err = 0; - if (self->fw_ver_actual < HW_ATL_FW_FEATURE_EEPROM) + if ((self->caps_lo & BIT(CAPS_LO_SMBUS_WRITE)) == 0) return -EOPNOTSUPP; - request.device_id = SMBUS_DEVICE_ID; - request.address = 0; + request.msg_id = 0; + request.device_id = dev_addr; + request.address = offset; request.length = len; /* Write SMBUS request to cfg memory */ err = hw_atl_utils_fw_upload_dwords(self, self->rpc_addr, (u32 *)(void *)&request, - RTE_ALIGN(sizeof(request), sizeof(u32))); + sizeof(request) / sizeof(u32)); if (err < 0) return err; /* Write SMBUS data to cfg memory */ - err = hw_atl_utils_fw_upload_dwords(self, - self->rpc_addr + sizeof(request), - (u32 *)(void *)data, - RTE_ALIGN(len, sizeof(u32))); + u32 num_dwords = len / sizeof(u32); + u32 bytes_remains = len % sizeof(u32); - if (err < 0) - return err; + if (num_dwords) { + err = hw_atl_utils_fw_upload_dwords(self, + self->rpc_addr + sizeof(request), + (u32 *)(void *)data, + num_dwords); - /* Toggle 0x368.SMBUS_WRITE_REQUEST bit */ + if (err < 0) + return err; + } + + if (bytes_remains) { + u32 val = 0; + + rte_memcpy(&val, (u8 *)data + (sizeof(u32) * num_dwords), + bytes_remains); + + err = hw_atl_utils_fw_upload_dwords(self, + self->rpc_addr + sizeof(request) + + (num_dwords * sizeof(u32)), + &val, + 1); + + if (err < 0) + return err; + } + + /* Toggle 0x368.CAPS_LO_SMBUS_WRITE bit */ mpi_opts = aq_hw_read_reg(self, HW_ATL_FW2X_MPI_CONTROL_ADDR); - mpi_opts ^= SMBUS_WRITE_REQUEST; + mpi_opts ^= BIT(CAPS_LO_SMBUS_WRITE); aq_hw_write_reg(self, HW_ATL_FW2X_MPI_CONTROL_ADDR, mpi_opts); /* Wait until REQUEST_BIT matched in 0x370 */ AQ_HW_WAIT_FOR((aq_hw_read_reg(self, HW_ATL_FW2X_MPI_STATE_ADDR) & - SMBUS_WRITE_REQUEST) == (mpi_opts & SMBUS_WRITE_REQUEST), + BIT(CAPS_LO_SMBUS_WRITE)) == (mpi_opts & BIT(CAPS_LO_SMBUS_WRITE)), 10U, 10000U); if (err < 0) @@ -589,11 +649,14 @@ static int aq_fw2x_set_eeprom(struct aq_hw_s *self, u32 *data, u32 len) /* Read status of write operation */ err = hw_atl_utils_fw_downld_dwords(self, self->rpc_addr + sizeof(u32), &result, - RTE_ALIGN(sizeof(result), sizeof(u32))); + sizeof(result) / sizeof(u32)); if (err < 0) return err; + if (result) + return -EIO; + return 0; } @@ -611,6 +674,7 @@ const struct aq_fw_ops aq_fw_2x_ops = { .get_cable_len = aq_fw2x_get_cable_len, .set_eee_rate = aq_fw2x_set_eee_rate, .get_eee_rate = aq_fw2x_get_eee_rate, + .get_flow_control = aq_fw2x_get_flow_control, .set_flow_control = aq_fw2x_set_flow_control, .led_control = aq_fw2x_led_control, .get_eeprom = aq_fw2x_get_eeprom, diff --git a/dpdk/drivers/net/avf/avf_ethdev.c b/dpdk/drivers/net/avf/avf_ethdev.c index 13eec1b45..4dc61d9fe 100644 --- a/dpdk/drivers/net/avf/avf_ethdev.c +++ b/dpdk/drivers/net/avf/avf_ethdev.c @@ -498,7 +498,6 @@ avf_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) { struct avf_info *vf = AVF_DEV_PRIVATE_TO_VF(dev->data->dev_private); - memset(dev_info, 0, sizeof(*dev_info)); dev_info->max_rx_queues = vf->vsi_res->num_queue_pairs; dev_info->max_tx_queues = vf->vsi_res->num_queue_pairs; dev_info->min_rx_bufsize = AVF_BUF_SIZE_MIN; @@ -1159,7 +1158,7 @@ avf_enable_irq0(struct avf_hw *hw) AVF_WRITE_REG(hw, AVFINT_ICR0_ENA1, AVFINT_ICR0_ENA1_ADMINQ_MASK); AVF_WRITE_REG(hw, AVFINT_DYN_CTL01, AVFINT_DYN_CTL01_INTENA_MASK | - AVFINT_DYN_CTL01_ITR_INDX_MASK); + AVFINT_DYN_CTL01_CLEARPBA_MASK | AVFINT_DYN_CTL01_ITR_INDX_MASK); AVF_WRITE_FLUSH(hw); } diff --git a/dpdk/drivers/net/avf/base/avf_adminq_cmd.h b/dpdk/drivers/net/avf/base/avf_adminq_cmd.h index 1709f317e..795491187 100644 --- a/dpdk/drivers/net/avf/base/avf_adminq_cmd.h +++ b/dpdk/drivers/net/avf/base/avf_adminq_cmd.h @@ -1435,8 +1435,7 @@ struct avf_aqc_add_remove_cloud_filters_element_data { }; /* avf_aqc_add_rm_cloud_filt_elem_ext is used when - * AVF_AQC_ADD_REM_CLOUD_CMD_BIG_BUFFER flag is set. refer to - * DCR288 + * AVF_AQC_ADD_REM_CLOUD_CMD_BIG_BUFFER flag is set. */ struct avf_aqc_add_rm_cloud_filt_elem_ext { struct avf_aqc_add_remove_cloud_filters_element_data element; diff --git a/dpdk/drivers/net/axgbe/axgbe_common.h b/dpdk/drivers/net/axgbe/axgbe_common.h index d25d54cac..34f60f156 100644 --- a/dpdk/drivers/net/axgbe/axgbe_common.h +++ b/dpdk/drivers/net/axgbe/axgbe_common.h @@ -1351,9 +1351,9 @@ do { \ #define SET_BITS_LE(_var, _index, _width, _val) \ do { \ - (_var) &= rte_cpu_to_le_32(~(((0x1 << (_width)) - 1) << (_index)));\ + (_var) &= rte_cpu_to_le_32(~(((0x1U << (_width)) - 1) << (_index)));\ (_var) |= rte_cpu_to_le_32((((_val) & \ - ((0x1 << (_width)) - 1)) << (_index))); \ + ((0x1U << (_width)) - 1)) << (_index))); \ } while (0) /* Bit setting and getting macros based on register fields diff --git a/dpdk/drivers/net/bnx2x/bnx2x.c b/dpdk/drivers/net/bnx2x/bnx2x.c index 86c79c289..3e705c7a1 100644 --- a/dpdk/drivers/net/bnx2x/bnx2x.c +++ b/dpdk/drivers/net/bnx2x/bnx2x.c @@ -25,6 +25,7 @@ #include #include #include +#include #define BNX2X_PMD_VER_PREFIX "BNX2X PMD" #define BNX2X_PMD_VERSION_MAJOR 1 @@ -123,7 +124,7 @@ static __rte_noinline int bnx2x_nic_load(struct bnx2x_softc *sc); static int bnx2x_handle_sp_tq(struct bnx2x_softc *sc); -static void bnx2x_handle_fp_tq(struct bnx2x_fastpath *fp, int scan_fp); +static void bnx2x_handle_fp_tq(struct bnx2x_fastpath *fp); static void bnx2x_ack_sb(struct bnx2x_softc *sc, uint8_t igu_sb_id, uint8_t storm, uint16_t index, uint8_t op, uint8_t update); @@ -184,6 +185,7 @@ bnx2x_dma_alloc(struct bnx2x_softc *sc, size_t size, struct bnx2x_dma *dma, } dma->paddr = (uint64_t) z->iova; dma->vaddr = z->addr; + dma->mzone = (const void *)z; PMD_DRV_LOG(DEBUG, sc, "%s: virt=%p phys=%" PRIx64, msg, dma->vaddr, dma->paddr); @@ -191,6 +193,19 @@ bnx2x_dma_alloc(struct bnx2x_softc *sc, size_t size, struct bnx2x_dma *dma, return 0; } +void bnx2x_dma_free(struct bnx2x_dma *dma) +{ + if (dma->mzone == NULL) + return; + + rte_memzone_free((const struct rte_memzone *)dma->mzone); + dma->sc = NULL; + dma->paddr = 0; + dma->vaddr = NULL; + dma->nseg = 0; + dma->mzone = NULL; +} + static int bnx2x_acquire_hw_lock(struct bnx2x_softc *sc, uint32_t resource) { uint32_t lock_status; @@ -1099,6 +1114,12 @@ bnx2x_sp_post(struct bnx2x_softc *sc, int command, int cid, uint32_t data_hi, atomic_load_acq_long(&sc->cq_spq_left), atomic_load_acq_long(&sc->eq_spq_left)); + /* RAMROD completion is processed in bnx2x_intr_legacy() + * which can run from different contexts. + * Ask bnx2x_intr_intr() to process RAMROD + * completion whenever it gets scheduled. + */ + rte_atomic32_set(&sc->scan_fp, 1); bnx2x_sp_prod_update(sc); return 0; @@ -2435,6 +2456,7 @@ static int bnx2x_alloc_mem(struct bnx2x_softc *sc) static void bnx2x_free_fw_stats_mem(struct bnx2x_softc *sc) { + bnx2x_dma_free(&sc->fw_stats_dma); sc->fw_stats_num = 0; sc->fw_stats_req_size = 0; @@ -4201,6 +4223,9 @@ static uint16_t bnx2x_update_dsb_idx(struct bnx2x_softc *sc) struct host_sp_status_block *def_sb = sc->def_sb; uint16_t rc = 0; + if (!def_sb) + return 0; + mb(); /* status block is written to by the chip */ if (sc->def_att_idx != def_sb->atten_status_block.attn_bits_index) { @@ -4520,25 +4545,29 @@ static int bnx2x_handle_sp_tq(struct bnx2x_softc *sc) return rc; } -static void bnx2x_handle_fp_tq(struct bnx2x_fastpath *fp, int scan_fp) +static void bnx2x_handle_fp_tq(struct bnx2x_fastpath *fp) { struct bnx2x_softc *sc = fp->sc; uint8_t more_rx = FALSE; + /* Make sure FP is initialized */ + if (!fp->sb_running_index) + return; + PMD_DEBUG_PERIODIC_LOG(DEBUG, sc, "---> FP TASK QUEUE (%d) <--", fp->index); /* update the fastpath index */ bnx2x_update_fp_sb_idx(fp); - if (scan_fp) { + if (rte_atomic32_read(&sc->scan_fp) == 1) { if (bnx2x_has_rx_work(fp)) { more_rx = bnx2x_rxeof(sc, fp); } if (more_rx) { /* still more work to do */ - bnx2x_handle_fp_tq(fp, scan_fp); + bnx2x_handle_fp_tq(fp); return; } } @@ -4554,7 +4583,7 @@ static void bnx2x_handle_fp_tq(struct bnx2x_fastpath *fp, int scan_fp) * then calls a separate routine to handle the various * interrupt causes: link, RX, and TX. */ -int bnx2x_intr_legacy(struct bnx2x_softc *sc, int scan_fp) +int bnx2x_intr_legacy(struct bnx2x_softc *sc) { struct bnx2x_fastpath *fp; uint32_t status, mask; @@ -4586,7 +4615,7 @@ int bnx2x_intr_legacy(struct bnx2x_softc *sc, int scan_fp) /* acknowledge and disable further fastpath interrupts */ bnx2x_ack_sb(sc, fp->igu_sb_id, USTORM_ID, 0, IGU_INT_DISABLE, 0); - bnx2x_handle_fp_tq(fp, scan_fp); + bnx2x_handle_fp_tq(fp); status &= ~mask; } } @@ -5809,7 +5838,7 @@ static int bnx2x_set_power_state(struct bnx2x_softc *sc, uint8_t state) /* If there is no power capability, silently succeed */ if (!(sc->devinfo.pcie_cap_flags & BNX2X_PM_CAPABLE_FLAG)) { - PMD_DRV_LOG(WARNING, sc, "No power capability"); + PMD_DRV_LOG(INFO, sc, "No power capability"); return 0; } @@ -6918,19 +6947,19 @@ static void bnx2x_link_report_locked(struct bnx2x_softc *sc) return; } - PMD_DRV_LOG(INFO, sc, "Change in link status : cur_data = %lx, last_reported_link = %lx\n", - cur_data.link_report_flags, - sc->last_reported_link.link_report_flags); + ELINK_DEBUG_P2(sc, "Change in link status : cur_data = %lx, last_reported_link = %lx", + cur_data.link_report_flags, + sc->last_reported_link.link_report_flags); sc->link_cnt++; - PMD_DRV_LOG(INFO, sc, "link status change count = %x\n", sc->link_cnt); + ELINK_DEBUG_P1(sc, "link status change count = %x", sc->link_cnt); /* report new link params and remember the state for the next time */ rte_memcpy(&sc->last_reported_link, &cur_data, sizeof(cur_data)); if (bnx2x_test_bit(BNX2X_LINK_REPORT_LINK_DOWN, &cur_data.link_report_flags)) { - PMD_DRV_LOG(INFO, sc, "NIC Link is Down"); + ELINK_DEBUG_P0(sc, "NIC Link is Down"); } else { __rte_unused const char *duplex; __rte_unused const char *flow; @@ -6938,8 +6967,10 @@ static void bnx2x_link_report_locked(struct bnx2x_softc *sc) if (bnx2x_test_and_clear_bit(BNX2X_LINK_REPORT_FULL_DUPLEX, &cur_data.link_report_flags)) { duplex = "full"; + ELINK_DEBUG_P0(sc, "link set to full duplex"); } else { duplex = "half"; + ELINK_DEBUG_P0(sc, "link set to half duplex"); } /* @@ -7123,7 +7154,7 @@ void bnx2x_periodic_callout(struct bnx2x_softc *sc) { if ((sc->state != BNX2X_STATE_OPEN) || (atomic_load_acq_long(&sc->periodic_flags) == PERIODIC_STOP)) { - PMD_DRV_LOG(INFO, sc, "periodic callout exit (state=0x%x)", + PMD_DRV_LOG(DEBUG, sc, "periodic callout exit (state=0x%x)", sc->state); return; } @@ -8072,6 +8103,27 @@ static int bnx2x_get_shmem_info(struct bnx2x_softc *sc) ~ELINK_FEATURE_CONFIG_OVERRIDE_PREEMPHASIS_ENABLED; } + val = sc->devinfo.bc_ver >> 8; + if (val < BNX2X_BC_VER) { + /* for now only warn later we might need to enforce this */ + PMD_DRV_LOG(NOTICE, sc, "This driver needs bc_ver %X but found %X, please upgrade BC\n", + BNX2X_BC_VER, val); + } + sc->link_params.feature_config_flags |= + (val >= REQ_BC_VER_4_VRFY_FIRST_PHY_OPT_MDL) ? + ELINK_FEATURE_CONFIG_BC_SUPPORTS_OPT_MDL_VRFY : + 0; + + sc->link_params.feature_config_flags |= + (val >= REQ_BC_VER_4_VRFY_SPECIFIC_PHY_OPT_MDL) ? + ELINK_FEATURE_CONFIG_BC_SUPPORTS_DUAL_PHY_OPT_MDL_VRFY : 0; + sc->link_params.feature_config_flags |= + (val >= REQ_BC_VER_4_VRFY_AFEX_SUPPORTED) ? + ELINK_FEATURE_CONFIG_BC_SUPPORTS_AFEX : 0; + sc->link_params.feature_config_flags |= + (val >= REQ_BC_VER_4_SFP_TX_DISABLE_SUPPORTED) ? + ELINK_FEATURE_CONFIG_BC_SUPPORTS_SFP_TX_DISABLED : 0; + /* get the initial value of the link params */ sc->link_params.multi_phy_config = SHMEM_RD(sc, dev_info.port_hw_config[port].multi_phy_config); @@ -8317,7 +8369,7 @@ static int bnx2x_get_device_info(struct bnx2x_softc *sc) ((sc->devinfo.bc_ver >> 24) & 0xff), ((sc->devinfo.bc_ver >> 16) & 0xff), ((sc->devinfo.bc_ver >> 8) & 0xff)); - PMD_DRV_LOG(INFO, sc, "Bootcode version: %s", sc->devinfo.bc_ver_str); + PMD_DRV_LOG(DEBUG, sc, "Bootcode version: %s", sc->devinfo.bc_ver_str); /* get the bootcode shmem address */ sc->devinfo.mf_cfg_base = bnx2x_get_shmem_mf_cfg_base(sc); @@ -11732,53 +11784,47 @@ static const char *get_bnx2x_flags(uint32_t flags) for (i = 0; i < 5; i++) if (flags & (1 << i)) { - strcat(flag_str, flag[i]); + strlcat(flag_str, flag[i], sizeof(flag_str)); flags ^= (1 << i); } if (flags) { static char unknown[BNX2X_INFO_STR_MAX]; snprintf(unknown, 32, "Unknown flag mask %x", flags); - strcat(flag_str, unknown); + strlcat(flag_str, unknown, sizeof(flag_str)); } return flag_str; } -/* - * Prints useful adapter info. - */ +/* Prints useful adapter info. */ void bnx2x_print_adapter_info(struct bnx2x_softc *sc) { int i = 0; - __rte_unused uint32_t ext_phy_type; - PMD_INIT_FUNC_TRACE(sc); - if (sc->link_vars.phy_flags & PHY_XGXS_FLAG) - ext_phy_type = ELINK_XGXS_EXT_PHY_TYPE(REG_RD(sc, - sc-> - devinfo.shmem_base - + offsetof(struct - shmem_region, - dev_info.port_hw_config - [0].external_phy_config))); - else - ext_phy_type = ELINK_SERDES_EXT_PHY_TYPE(REG_RD(sc, - sc-> - devinfo.shmem_base - + - offsetof(struct - shmem_region, - dev_info.port_hw_config - [0].external_phy_config))); - - PMD_DRV_LOG(INFO, sc, "\n\n===================================\n"); + PMD_DRV_LOG(INFO, sc, "========================================"); + /* DPDK and Driver versions */ + PMD_DRV_LOG(INFO, sc, "%12s : %s", "DPDK", + rte_version()); + PMD_DRV_LOG(INFO, sc, "%12s : %s", "Driver", + bnx2x_pmd_version()); + /* Firmware versions. */ + PMD_DRV_LOG(INFO, sc, "%12s : %d.%d.%d", + "Firmware", + BNX2X_5710_FW_MAJOR_VERSION, + BNX2X_5710_FW_MINOR_VERSION, + BNX2X_5710_FW_REVISION_VERSION); + PMD_DRV_LOG(INFO, sc, "%12s : %s", + "Bootcode", sc->devinfo.bc_ver_str); /* Hardware chip info. */ PMD_DRV_LOG(INFO, sc, "%12s : %#08x", "ASIC", sc->devinfo.chip_id); PMD_DRV_LOG(INFO, sc, "%12s : %c%d", "Rev", (CHIP_REV(sc) >> 12) + 'A', (CHIP_METAL(sc) >> 4)); - - /* Bus info. */ - PMD_DRV_LOG(INFO, sc, - "%12s : %d, ", "Bus PCIe", sc->devinfo.pcie_link_width); + /* Bus PCIe info. */ + PMD_DRV_LOG(INFO, sc, "%12s : 0x%x", "Vendor Id", + sc->devinfo.vendor_id); + PMD_DRV_LOG(INFO, sc, "%12s : 0x%x", "Device Id", + sc->devinfo.device_id); + PMD_DRV_LOG(INFO, sc, "%12s : width x%d, ", "Bus PCIe", + sc->devinfo.pcie_link_width); switch (sc->devinfo.pcie_link_speed) { case 1: PMD_DRV_LOG(INFO, sc, "%23s", "2.5 Gbps"); @@ -11792,62 +11838,45 @@ void bnx2x_print_adapter_info(struct bnx2x_softc *sc) default: PMD_DRV_LOG(INFO, sc, "%33s", "Unknown link speed"); } - /* Device features. */ PMD_DRV_LOG(INFO, sc, "%12s : ", "Flags"); - /* Miscellaneous flags. */ if (sc->devinfo.pcie_cap_flags & BNX2X_MSI_CAPABLE_FLAG) { PMD_DRV_LOG(INFO, sc, "%18s", "MSI"); i++; } - if (sc->devinfo.pcie_cap_flags & BNX2X_MSIX_CAPABLE_FLAG) { if (i > 0) PMD_DRV_LOG(INFO, sc, "|"); PMD_DRV_LOG(INFO, sc, "%20s", "MSI-X"); i++; } + PMD_DRV_LOG(INFO, sc, "%12s : %s", "OVLAN", (OVLAN(sc) ? "YES" : "NO")); + PMD_DRV_LOG(INFO, sc, "%12s : %s", "MF", (IS_MF(sc) ? "YES" : "NO")); + PMD_DRV_LOG(INFO, sc, "========================================"); +} - if (IS_PF(sc)) { - PMD_DRV_LOG(INFO, sc, "%12s : ", "Queues"); - switch (sc->sp->rss_rdata.rss_mode) { - case ETH_RSS_MODE_DISABLED: - PMD_DRV_LOG(INFO, sc, "%19s", "None"); - break; - case ETH_RSS_MODE_REGULAR: - PMD_DRV_LOG(INFO, sc, - "%18s : %d", "RSS", sc->num_queues); - break; - default: - PMD_DRV_LOG(INFO, sc, "%22s", "Unknown"); - break; - } - } +/* Prints useful device info. */ +void bnx2x_print_device_info(struct bnx2x_softc *sc) +{ + __rte_unused uint32_t ext_phy_type; + uint32_t offset, reg_val; - /* RTE and Driver versions */ - PMD_DRV_LOG(INFO, sc, "%12s : %s", "DPDK", - rte_version()); - PMD_DRV_LOG(INFO, sc, "%12s : %s", "Driver", - bnx2x_pmd_version()); + PMD_INIT_FUNC_TRACE(sc); + offset = offsetof(struct shmem_region, + dev_info.port_hw_config[0].external_phy_config); + reg_val = REG_RD(sc, sc->devinfo.shmem_base + offset); + if (sc->link_vars.phy_flags & PHY_XGXS_FLAG) + ext_phy_type = ELINK_XGXS_EXT_PHY_TYPE(reg_val); + else + ext_phy_type = ELINK_SERDES_EXT_PHY_TYPE(reg_val); - /* Firmware versions and device features. */ - PMD_DRV_LOG(INFO, sc, "%12s : %d.%d.%d", - "Firmware", - BNX2X_5710_FW_MAJOR_VERSION, - BNX2X_5710_FW_MINOR_VERSION, - BNX2X_5710_FW_REVISION_VERSION); - PMD_DRV_LOG(INFO, sc, "%12s : %s", - "Bootcode", sc->devinfo.bc_ver_str); - - PMD_DRV_LOG(INFO, sc, "\n\n===================================\n"); + /* Device features. */ PMD_DRV_LOG(INFO, sc, "%12s : %u", "Bnx2x Func", sc->pcie_func); PMD_DRV_LOG(INFO, sc, "%12s : %s", "Bnx2x Flags", get_bnx2x_flags(sc->flags)); PMD_DRV_LOG(INFO, sc, "%12s : %s", "DMAE Is", (sc->dmae_ready ? "Ready" : "Not Ready")); - PMD_DRV_LOG(INFO, sc, "%12s : %s", "OVLAN", (OVLAN(sc) ? "YES" : "NO")); - PMD_DRV_LOG(INFO, sc, "%12s : %s", "MF", (IS_MF(sc) ? "YES" : "NO")); PMD_DRV_LOG(INFO, sc, "%12s : %u", "MTU", sc->mtu); PMD_DRV_LOG(INFO, sc, "%12s : %s", "PHY Type", get_ext_phy_type(ext_phy_type)); @@ -11863,9 +11892,30 @@ void bnx2x_print_adapter_info(struct bnx2x_softc *sc) if (sc->recovery_state) PMD_DRV_LOG(INFO, sc, "%12s : %s", "Recovery", get_recovery_state(sc->recovery_state)); + /* Queue info. */ + if (IS_PF(sc)) { + switch (sc->sp->rss_rdata.rss_mode) { + case ETH_RSS_MODE_DISABLED: + PMD_DRV_LOG(INFO, sc, "%12s : %s", "Queues", "RSS mode - None"); + break; + case ETH_RSS_MODE_REGULAR: + PMD_DRV_LOG(INFO, sc, "%12s : %s,", "Queues", "RSS mode - Regular"); + PMD_DRV_LOG(INFO, sc, "%16d", sc->num_queues); + break; + default: + PMD_DRV_LOG(INFO, sc, "%12s : %s", "Queues", "RSS mode - Unknown"); + break; + } + } PMD_DRV_LOG(INFO, sc, "%12s : CQ = %lx, EQ = %lx", "SPQ Left", sc->cq_spq_left, sc->eq_spq_left); + PMD_DRV_LOG(INFO, sc, "%12s : %x", "Switch", sc->link_params.switch_cfg); - PMD_DRV_LOG(INFO, sc, "\n\n===================================\n"); + PMD_DRV_LOG(INFO, sc, "pcie_bus=%d, pcie_device=%d", + sc->pcie_bus, sc->pcie_device); + PMD_DRV_LOG(INFO, sc, "bar0.addr=%p, bar1.addr=%p", + sc->bar[BAR0].base_addr, sc->bar[BAR1].base_addr); + PMD_DRV_LOG(INFO, sc, "port=%d, path=%d, vnic=%d, func=%d", + PORT_ID(sc), PATH_ID(sc), VNIC_ID(sc), FUNC_ID(sc)); } diff --git a/dpdk/drivers/net/bnx2x/bnx2x.h b/dpdk/drivers/net/bnx2x/bnx2x.h index 74780725b..ef1688ff3 100644 --- a/dpdk/drivers/net/bnx2x/bnx2x.h +++ b/dpdk/drivers/net/bnx2x/bnx2x.h @@ -119,6 +119,8 @@ int bnx2x_ilog2(int x) #define ilog2(x) bnx2x_ilog2(x) #endif +#define BNX2X_BC_VER 0x040200 + #include "ecore_sp.h" struct bnx2x_device_type { @@ -319,6 +321,7 @@ struct bnx2x_dma { rte_iova_t paddr; void *vaddr; int nseg; + const void *mzone; char msg[RTE_MEMZONE_NAMESIZE - 6]; }; @@ -1089,7 +1092,7 @@ struct bnx2x_softc { #define PERIODIC_STOP 0 #define PERIODIC_GO 1 volatile unsigned long periodic_flags; - + rte_atomic32_t scan_fp; struct bnx2x_fastpath fp[MAX_RSS_CHAINS]; struct bnx2x_sp_objs sp_objs[MAX_RSS_CHAINS]; @@ -1753,7 +1756,7 @@ int bnx2x_cmpxchg(volatile int *addr, int old, int new); int bnx2x_dma_alloc(struct bnx2x_softc *sc, size_t size, struct bnx2x_dma *dma, const char *msg, uint32_t align); - +void bnx2x_dma_free(struct bnx2x_dma *dma); uint32_t bnx2x_dmae_opcode_add_comp(uint32_t opcode, uint8_t comp_type); uint32_t bnx2x_dmae_opcode_clr_src_reset(uint32_t opcode); uint32_t bnx2x_dmae_opcode(struct bnx2x_softc *sc, uint8_t src_type, @@ -1937,7 +1940,8 @@ void bnx2x_dump_tx_chain(struct bnx2x_fastpath * fp, int bd_prod, int count); int bnx2x_tx_encap(struct bnx2x_tx_queue *txq, struct rte_mbuf *m0); uint8_t bnx2x_txeof(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp); void bnx2x_print_adapter_info(struct bnx2x_softc *sc); -int bnx2x_intr_legacy(struct bnx2x_softc *sc, int scan_fp); +void bnx2x_print_device_info(struct bnx2x_softc *sc); +int bnx2x_intr_legacy(struct bnx2x_softc *sc); void bnx2x_link_status_update(struct bnx2x_softc *sc); int bnx2x_complete_sp(struct bnx2x_softc *sc); int bnx2x_set_storm_rx_mode(struct bnx2x_softc *sc); @@ -1984,7 +1988,7 @@ bnx2x_set_rx_mode(struct bnx2x_softc *sc) bnx2x_vf_set_rx_mode(sc); } } else { - PMD_DRV_LOG(NOTICE, sc, "Card is not ready to change mode"); + PMD_DRV_LOG(INFO, sc, "Card is not ready to change mode"); } } diff --git a/dpdk/drivers/net/bnx2x/bnx2x_ethdev.c b/dpdk/drivers/net/bnx2x/bnx2x_ethdev.c index 0057843b5..c628cdc0f 100644 --- a/dpdk/drivers/net/bnx2x/bnx2x_ethdev.c +++ b/dpdk/drivers/net/bnx2x/bnx2x_ethdev.c @@ -107,14 +107,15 @@ bnx2x_link_update(struct rte_eth_dev *dev) } static void -bnx2x_interrupt_action(struct rte_eth_dev *dev) +bnx2x_interrupt_action(struct rte_eth_dev *dev, int intr_cxt) { struct bnx2x_softc *sc = dev->data->dev_private; uint32_t link_status; - bnx2x_intr_legacy(sc, 0); + bnx2x_intr_legacy(sc); - if (sc->periodic_flags & PERIODIC_GO) + if ((atomic_load_acq_long(&sc->periodic_flags) == PERIODIC_GO) && + !intr_cxt) bnx2x_periodic_callout(sc); link_status = REG_RD(sc, sc->link_params.shmem_base + offsetof(struct shmem_region, @@ -131,9 +132,7 @@ bnx2x_interrupt_handler(void *param) PMD_DEBUG_PERIODIC_LOG(INFO, sc, "Interrupt handled"); - atomic_store_rel_long(&sc->periodic_flags, PERIODIC_STOP); - bnx2x_interrupt_action(dev); - atomic_store_rel_long(&sc->periodic_flags, PERIODIC_GO); + bnx2x_interrupt_action(dev, 1); rte_intr_enable(&sc->pci_dev->intr_handle); } @@ -144,7 +143,7 @@ static void bnx2x_periodic_start(void *param) int ret = 0; atomic_store_rel_long(&sc->periodic_flags, PERIODIC_GO); - bnx2x_interrupt_action(dev); + bnx2x_interrupt_action(dev, 0); if (IS_PF(sc)) { ret = rte_eal_alarm_set(BNX2X_SP_TIMER_PERIOD, bnx2x_periodic_start, (void *)dev); @@ -164,6 +163,8 @@ void bnx2x_periodic_stop(void *param) atomic_store_rel_long(&sc->periodic_flags, PERIODIC_STOP); rte_eal_alarm_cancel(bnx2x_periodic_start, (void *)dev); + + PMD_DRV_LOG(DEBUG, sc, "Periodic poll stopped"); } /* @@ -180,8 +181,10 @@ bnx2x_dev_configure(struct rte_eth_dev *dev) PMD_INIT_FUNC_TRACE(sc); - if (rxmode->offloads & DEV_RX_OFFLOAD_JUMBO_FRAME) + if (rxmode->offloads & DEV_RX_OFFLOAD_JUMBO_FRAME) { sc->mtu = dev->data->dev_conf.rxmode.max_rx_pkt_len; + dev->data->mtu = sc->mtu; + } if (dev->data->nb_tx_queues > dev->data->nb_rx_queues) { PMD_DRV_LOG(ERR, sc, "The number of TX queues is greater than number of RX queues"); @@ -210,6 +213,7 @@ bnx2x_dev_configure(struct rte_eth_dev *dev) return -ENXIO; } + bnx2x_dev_rxtx_init_dummy(dev); return 0; } @@ -222,8 +226,10 @@ bnx2x_dev_start(struct rte_eth_dev *dev) PMD_INIT_FUNC_TRACE(sc); /* start the periodic callout */ - if (sc->periodic_flags & PERIODIC_STOP) + if (atomic_load_acq_long(&sc->periodic_flags) == PERIODIC_STOP) { bnx2x_periodic_start(dev); + PMD_DRV_LOG(DEBUG, sc, "Periodic poll re-started"); + } ret = bnx2x_init(sc); if (ret) { @@ -239,14 +245,9 @@ bnx2x_dev_start(struct rte_eth_dev *dev) PMD_DRV_LOG(ERR, sc, "rte_intr_enable failed"); } - ret = bnx2x_dev_rx_init(dev); - if (ret != 0) { - PMD_DRV_LOG(DEBUG, sc, "bnx2x_dev_rx_init returned error code"); - return -3; - } + bnx2x_dev_rxtx_init(dev); - /* Print important adapter info for the user. */ - bnx2x_print_adapter_info(sc); + bnx2x_print_device_info(sc); return ret; } @@ -259,6 +260,8 @@ bnx2x_dev_stop(struct rte_eth_dev *dev) PMD_INIT_FUNC_TRACE(sc); + bnx2x_dev_rxtx_init_dummy(dev); + if (IS_PF(sc)) { rte_intr_disable(&sc->pci_dev->intr_handle); rte_intr_callback_unregister(&sc->pci_dev->intr_handle, @@ -574,6 +577,7 @@ bnx2x_common_dev_init(struct rte_eth_dev *eth_dev, int is_vf) struct rte_pci_device *pci_dev; struct rte_pci_addr pci_addr; struct bnx2x_softc *sc; + static bool adapter_info = true; /* Extract key data structures */ sc = eth_dev->data->dev_private; @@ -632,8 +636,15 @@ bnx2x_common_dev_init(struct rte_eth_dev *eth_dev, int is_vf) return ret; } + /* Print important adapter info for the user. */ + if (adapter_info) { + bnx2x_print_adapter_info(sc); + adapter_info = false; + } + /* schedule periodic poll for slowpath link events */ if (IS_PF(sc)) { + PMD_DRV_LOG(DEBUG, sc, "Scheduling periodic poll for slowpath link events"); ret = rte_eal_alarm_set(BNX2X_SP_TIMER_PERIOD, bnx2x_periodic_start, (void *)eth_dev); if (ret) { @@ -645,15 +656,6 @@ bnx2x_common_dev_init(struct rte_eth_dev *eth_dev, int is_vf) eth_dev->data->mac_addrs = (struct ether_addr *)sc->link_params.mac_addr; - PMD_DRV_LOG(INFO, sc, "pcie_bus=%d, pcie_device=%d", - sc->pcie_bus, sc->pcie_device); - PMD_DRV_LOG(INFO, sc, "bar0.addr=%p, bar1.addr=%p", - sc->bar[BAR0].base_addr, sc->bar[BAR1].base_addr); - PMD_DRV_LOG(INFO, sc, "port=%d, path=%d, vnic=%d, func=%d", - PORT_ID(sc), PATH_ID(sc), VNIC_ID(sc), FUNC_ID(sc)); - PMD_DRV_LOG(INFO, sc, "portID=%d vendorID=0x%x deviceID=0x%x", - eth_dev->data->port_id, pci_dev->id.vendor_id, pci_dev->id.device_id); - if (IS_VF(sc)) { rte_spinlock_init(&sc->vf2pf_lock); diff --git a/dpdk/drivers/net/bnx2x/bnx2x_ethdev.h b/dpdk/drivers/net/bnx2x/bnx2x_ethdev.h index 807ba1780..45958db9a 100644 --- a/dpdk/drivers/net/bnx2x/bnx2x_ethdev.h +++ b/dpdk/drivers/net/bnx2x/bnx2x_ethdev.h @@ -47,6 +47,7 @@ #define FALSE 0 #define TRUE 1 +typedef int bool; #define false 0 #define true 1 #define min(a,b) RTE_MIN(a,b) diff --git a/dpdk/drivers/net/bnx2x/bnx2x_rxtx.c b/dpdk/drivers/net/bnx2x/bnx2x_rxtx.c index ca28aaccf..e5a2b25b5 100644 --- a/dpdk/drivers/net/bnx2x/bnx2x_rxtx.c +++ b/dpdk/drivers/net/bnx2x/bnx2x_rxtx.c @@ -311,7 +311,6 @@ bnx2x_dev_tx_queue_setup(struct rte_eth_dev *dev, txq->tx_bd_tail = 0; txq->tx_bd_head = 0; txq->nb_tx_avail = txq->nb_tx_desc; - dev->tx_pkt_burst = bnx2x_xmit_pkts; dev->data->tx_queues[queue_idx] = txq; if (!sc->tx_queues) sc->tx_queues = dev->data->tx_queues; @@ -441,12 +440,24 @@ next_rx: return nb_rx; } -int -bnx2x_dev_rx_init(struct rte_eth_dev *dev) +static uint16_t +bnx2x_rxtx_pkts_dummy(__rte_unused void *p_rxq, + __rte_unused struct rte_mbuf **rx_pkts, + __rte_unused uint16_t nb_pkts) +{ + return 0; +} + +void bnx2x_dev_rxtx_init_dummy(struct rte_eth_dev *dev) +{ + dev->rx_pkt_burst = bnx2x_rxtx_pkts_dummy; + dev->tx_pkt_burst = bnx2x_rxtx_pkts_dummy; +} + +void bnx2x_dev_rxtx_init(struct rte_eth_dev *dev) { dev->rx_pkt_burst = bnx2x_recv_pkts; - - return 0; + dev->tx_pkt_burst = bnx2x_xmit_pkts; } void diff --git a/dpdk/drivers/net/bnx2x/bnx2x_rxtx.h b/dpdk/drivers/net/bnx2x/bnx2x_rxtx.h index 6ad4928c1..3f4692b47 100644 --- a/dpdk/drivers/net/bnx2x/bnx2x_rxtx.h +++ b/dpdk/drivers/net/bnx2x/bnx2x_rxtx.h @@ -74,7 +74,8 @@ int bnx2x_dev_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id, void bnx2x_dev_rx_queue_release(void *rxq); void bnx2x_dev_tx_queue_release(void *txq); -int bnx2x_dev_rx_init(struct rte_eth_dev *dev); +void bnx2x_dev_rxtx_init(struct rte_eth_dev *dev); +void bnx2x_dev_rxtx_init_dummy(struct rte_eth_dev *dev); void bnx2x_dev_clear_queues(struct rte_eth_dev *dev); #endif /* _BNX2X_RXTX_H_ */ diff --git a/dpdk/drivers/net/bnx2x/ecore_hsi.h b/dpdk/drivers/net/bnx2x/ecore_hsi.h index 1192e5dd8..74189eed6 100644 --- a/dpdk/drivers/net/bnx2x/ecore_hsi.h +++ b/dpdk/drivers/net/bnx2x/ecore_hsi.h @@ -3545,7 +3545,7 @@ struct igu_regular #define IGU_REGULAR_CLEANUP_TYPE_SHIFT 28 #define IGU_REGULAR_CLEANUP_SET (0x1<<30) /* BitField sb_id_and_flags */ #define IGU_REGULAR_CLEANUP_SET_SHIFT 30 -#define IGU_REGULAR_BCLEANUP (0x1<<31) /* BitField sb_id_and_flags */ +#define IGU_REGULAR_BCLEANUP (0x1U<<31) /* BitField sb_id_and_flags */ #define IGU_REGULAR_BCLEANUP_SHIFT 31 uint32_t reserved_2; }; diff --git a/dpdk/drivers/net/bnx2x/ecore_reg.h b/dpdk/drivers/net/bnx2x/ecore_reg.h index d69e857bf..7af9a2d81 100644 --- a/dpdk/drivers/net/bnx2x/ecore_reg.h +++ b/dpdk/drivers/net/bnx2x/ecore_reg.h @@ -1981,7 +1981,7 @@ #define AEU_INPUTS_ATTN_BITS_ATC_PARITY_ERROR (0x1<<5) #define AEU_INPUTS_ATTN_BITS_BRB_HW_INTERRUPT (0x1<<19) #define AEU_INPUTS_ATTN_BITS_BRB_PARITY_ERROR (0x1<<18) -#define AEU_INPUTS_ATTN_BITS_CCM_HW_INTERRUPT (0x1<<31) +#define AEU_INPUTS_ATTN_BITS_CCM_HW_INTERRUPT (0x1U<<31) #define AEU_INPUTS_ATTN_BITS_CCM_PARITY_ERROR (0x1<<30) #define AEU_INPUTS_ATTN_BITS_CDU_HW_INTERRUPT (0x1<<9) #define AEU_INPUTS_ATTN_BITS_CDU_PARITY_ERROR (0x1<<8) diff --git a/dpdk/drivers/net/bnx2x/ecore_sp.c b/dpdk/drivers/net/bnx2x/ecore_sp.c index ab730abea..43194095b 100644 --- a/dpdk/drivers/net/bnx2x/ecore_sp.c +++ b/dpdk/drivers/net/bnx2x/ecore_sp.c @@ -291,25 +291,33 @@ static int ecore_state_wait(struct bnx2x_softc *sc, int state, cnt *= 20; ECORE_MSG(sc, "waiting for state to become %d", state); + /* being over protective to remind bnx2x_intr_legacy() to + * process RAMROD + */ + rte_atomic32_set(&sc->scan_fp, 1); ECORE_MIGHT_SLEEP(); while (cnt--) { - bnx2x_intr_legacy(sc, 1); + bnx2x_intr_legacy(sc); if (!ECORE_TEST_BIT(state, pstate)) { #ifdef ECORE_STOP_ON_ERROR ECORE_MSG(sc, "exit (cnt %d)", 5000 - cnt); #endif + rte_atomic32_set(&sc->scan_fp, 0); return ECORE_SUCCESS; } ECORE_WAIT(sc, delay_us); - if (sc->panic) + if (sc->panic) { + rte_atomic32_set(&sc->scan_fp, 0); return ECORE_IO; + } } /* timeout! */ PMD_DRV_LOG(ERR, sc, "timeout waiting for state %d", state); + rte_atomic32_set(&sc->scan_fp, 0); #ifdef ECORE_STOP_ON_ERROR ecore_panic(); #endif @@ -530,17 +538,15 @@ static void __ecore_vlan_mac_h_read_unlock(struct bnx2x_softc *sc, #endif } else { o->head_reader--; - PMD_DRV_LOG(INFO, sc, - "vlan_mac_lock - decreased readers to %d", - o->head_reader); + ECORE_MSG(sc, "vlan_mac_lock - decreased readers to %d", + o->head_reader); } /* It's possible a new pending execution was added, and that this reader * was last - if so we need to execute the command. */ if (!o->head_reader && o->head_exe_request) { - PMD_DRV_LOG(INFO, sc, - "vlan_mac_lock - reader release encountered a pending request"); + ECORE_MSG(sc, "vlan_mac_lock - reader release encountered a pending request"); /* Writer release will do the trick */ __ecore_vlan_mac_h_write_unlock(sc, o); diff --git a/dpdk/drivers/net/bnx2x/ecore_sp.h b/dpdk/drivers/net/bnx2x/ecore_sp.h index f295bf5af..7126097db 100644 --- a/dpdk/drivers/net/bnx2x/ecore_sp.h +++ b/dpdk/drivers/net/bnx2x/ecore_sp.h @@ -151,14 +151,15 @@ typedef rte_spinlock_t ECORE_MUTEX_SPIN; } \ } while (0) -#define ECORE_ILT_FREE(x, y, size) \ - do { \ - if (x) { \ - rte_free(x); \ - x = NULL; \ - y = 0; \ - } \ - } while (0) +#define ECORE_ILT_FREE(x, y, size) \ + do { \ + if (x) { \ + bnx2x_dma_free((struct bnx2x_dma *)x); \ + rte_free(x); \ + x = NULL; \ + y = 0; \ + } \ + } while (0) #define ECORE_IS_VALID_ETHER_ADDR(_mac) TRUE diff --git a/dpdk/drivers/net/bnx2x/elink.h b/dpdk/drivers/net/bnx2x/elink.h index c8b08bc35..dd70ac6c6 100644 --- a/dpdk/drivers/net/bnx2x/elink.h +++ b/dpdk/drivers/net/bnx2x/elink.h @@ -440,7 +440,7 @@ struct elink_params { #define ELINK_EEE_MODE_OUTPUT_TIME (1 << 28) #define ELINK_EEE_MODE_OVERRIDE_NVRAM (1 << 29) #define ELINK_EEE_MODE_ENABLE_LPI (1 << 30) -#define ELINK_EEE_MODE_ADV_LPI (1 << 31) +#define ELINK_EEE_MODE_ADV_LPI (1U << 31) uint16_t hw_led_mode; /* part of the hw_config read from the shmem */ uint32_t multi_phy_config; diff --git a/dpdk/drivers/net/bnxt/bnxt.h b/dpdk/drivers/net/bnxt/bnxt.h index f75b0ad3c..5535c376e 100644 --- a/dpdk/drivers/net/bnxt/bnxt.h +++ b/dpdk/drivers/net/bnxt/bnxt.h @@ -263,7 +263,7 @@ struct bnxt { #define BNXT_FLAG_TRUSTED_VF_EN (1 << 11) #define BNXT_FLAG_DFLT_VNIC_SET (1 << 12) #define BNXT_FLAG_NEW_RM (1 << 30) -#define BNXT_FLAG_INIT_DONE (1 << 31) +#define BNXT_FLAG_INIT_DONE (1U << 31) #define BNXT_PF(bp) (!((bp)->flags & BNXT_FLAG_VF)) #define BNXT_VF(bp) ((bp)->flags & BNXT_FLAG_VF) #define BNXT_NPAR(bp) ((bp)->port_partition_type) diff --git a/dpdk/drivers/net/bnxt/bnxt_ethdev.c b/dpdk/drivers/net/bnxt/bnxt_ethdev.c index 801c6ffad..e26b9e3ce 100644 --- a/dpdk/drivers/net/bnxt/bnxt_ethdev.c +++ b/dpdk/drivers/net/bnxt/bnxt_ethdev.c @@ -2649,7 +2649,7 @@ static int bnxt_map_regs(struct bnxt *bp, uint32_t *reg_arr, int count, return -ERANGE; } win_off = BNXT_GRCPF_REG_WINDOW_BASE_OUT + (reg_win - 1) * 4; - rte_cpu_to_le_32(rte_write32(reg_base, (uint8_t *)bp->bar0 + win_off)); + rte_write32(reg_base, (uint8_t *)bp->bar0 + win_off); return 0; } @@ -2680,10 +2680,10 @@ static int bnxt_map_ptp_regs(struct bnxt *bp) static void bnxt_unmap_ptp_regs(struct bnxt *bp) { - rte_cpu_to_le_32(rte_write32(0, (uint8_t *)bp->bar0 + - BNXT_GRCPF_REG_WINDOW_BASE_OUT + 16)); - rte_cpu_to_le_32(rte_write32(0, (uint8_t *)bp->bar0 + - BNXT_GRCPF_REG_WINDOW_BASE_OUT + 20)); + rte_write32(0, (uint8_t *)bp->bar0 + + BNXT_GRCPF_REG_WINDOW_BASE_OUT + 16); + rte_write32(0, (uint8_t *)bp->bar0 + + BNXT_GRCPF_REG_WINDOW_BASE_OUT + 20); } static uint64_t bnxt_cc_read(struct bnxt *bp) @@ -2733,8 +2733,8 @@ static int bnxt_get_rx_ts(struct bnxt *bp, uint64_t *ts) return -EAGAIN; port_id = pf->port_id; - rte_cpu_to_le_32(rte_write32(1 << port_id, (uint8_t *)bp->bar0 + - ptp->rx_mapped_regs[BNXT_PTP_RX_FIFO_ADV])); + rte_write32(1 << port_id, (uint8_t *)bp->bar0 + + ptp->rx_mapped_regs[BNXT_PTP_RX_FIFO_ADV]); fifo = rte_le_to_cpu_32(rte_read32((uint8_t *)bp->bar0 + ptp->rx_mapped_regs[BNXT_PTP_RX_FIFO])); @@ -3242,10 +3242,8 @@ skip_init: memset(mz->addr, 0, mz->len); mz_phys_addr = mz->iova; if ((unsigned long)mz->addr == mz_phys_addr) { - PMD_DRV_LOG(WARNING, - "Memzone physical address same as virtual.\n"); - PMD_DRV_LOG(WARNING, - "Using rte_mem_virt2iova()\n"); + PMD_DRV_LOG(INFO, + "Memzone physical address same as virtual using rte_mem_virt2iova()\n"); mz_phys_addr = rte_mem_virt2iova(mz->addr); if (mz_phys_addr == 0) { PMD_DRV_LOG(ERR, @@ -3548,7 +3546,7 @@ static int bnxt_pci_remove(struct rte_pci_device *pci_dev) static struct rte_pci_driver bnxt_rte_pmd = { .id_table = bnxt_pci_id_map, .drv_flags = RTE_PCI_DRV_NEED_MAPPING | - RTE_PCI_DRV_INTR_LSC, + RTE_PCI_DRV_INTR_LSC | RTE_PCI_DRV_IOVA_AS_VA, .probe = bnxt_pci_probe, .remove = bnxt_pci_remove, }; diff --git a/dpdk/drivers/net/bnxt/bnxt_rxq.c b/dpdk/drivers/net/bnxt/bnxt_rxq.c index 5345d3938..17e2909a7 100644 --- a/dpdk/drivers/net/bnxt/bnxt_rxq.c +++ b/dpdk/drivers/net/bnxt/bnxt_rxq.c @@ -100,7 +100,8 @@ int bnxt_mq_rx_configure(struct bnxt *bp) } } nb_q_per_grp = bp->rx_cp_nr_rings / pools; - PMD_DRV_LOG(ERR, "pools = %u nb_q_per_grp = %u\n", pools, nb_q_per_grp); + PMD_DRV_LOG(DEBUG, "pools = %u nb_q_per_grp = %u\n", + pools, nb_q_per_grp); start_grp_id = 0; end_grp_id = nb_q_per_grp; diff --git a/dpdk/drivers/net/bnxt/bnxt_rxr.c b/dpdk/drivers/net/bnxt/bnxt_rxr.c index 1bfc63d93..dc695e177 100644 --- a/dpdk/drivers/net/bnxt/bnxt_rxr.c +++ b/dpdk/drivers/net/bnxt/bnxt_rxr.c @@ -154,7 +154,7 @@ static void bnxt_tpa_start(struct bnxt_rx_queue *rxq, if (tpa_start1->flags2 & rte_cpu_to_le_32(RX_TPA_START_CMPL_FLAGS2_META_FORMAT_VLAN)) { mbuf->vlan_tci = rte_le_to_cpu_32(tpa_start1->metadata); - mbuf->ol_flags |= PKT_RX_VLAN; + mbuf->ol_flags |= PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED; } if (likely(tpa_start1->flags2 & rte_cpu_to_le_32(RX_TPA_START_CMPL_FLAGS2_L4_CS_CALC))) @@ -437,7 +437,7 @@ static int bnxt_rx_pkt(struct rte_mbuf **rx_pkt, (RX_PKT_CMPL_METADATA_VID_MASK | RX_PKT_CMPL_METADATA_DE | RX_PKT_CMPL_METADATA_PRI_MASK); - mbuf->ol_flags |= PKT_RX_VLAN; + mbuf->ol_flags |= PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED; } if (likely(RX_CMP_IP_CS_OK(rxcmp1))) diff --git a/dpdk/drivers/net/bonding/rte_eth_bond_8023ad.c b/dpdk/drivers/net/bonding/rte_eth_bond_8023ad.c index dd847c6f6..1e6a3fc7c 100644 --- a/dpdk/drivers/net/bonding/rte_eth_bond_8023ad.c +++ b/dpdk/drivers/net/bonding/rte_eth_bond_8023ad.c @@ -664,7 +664,7 @@ max_index(uint64_t *a, int n) * @param port_pos Port to assign. */ static void -selection_logic(struct bond_dev_private *internals, uint8_t slave_id) +selection_logic(struct bond_dev_private *internals, uint16_t slave_id) { struct port *agg, *port; uint16_t slaves_count, new_agg_id, i, j = 0; @@ -781,16 +781,23 @@ link_speed_key(uint16_t speed) { } static void -rx_machine_update(struct bond_dev_private *internals, uint8_t slave_id, +rx_machine_update(struct bond_dev_private *internals, uint16_t slave_id, struct rte_mbuf *lacp_pkt) { struct lacpdu_header *lacp; + struct lacpdu_actor_partner_params *partner; if (lacp_pkt != NULL) { lacp = rte_pktmbuf_mtod(lacp_pkt, struct lacpdu_header *); RTE_ASSERT(lacp->lacpdu.subtype == SLOW_SUBTYPE_LACP); - /* This is LACP frame so pass it to rx_machine */ - rx_machine(internals, slave_id, &lacp->lacpdu); + partner = &lacp->lacpdu.partner; + if (is_same_ether_addr(&partner->port_params.system, + &internals->mode4.mac_addr)) { + /* This LACP frame is sending to the bonding port + * so pass it to rx_machine. + */ + rx_machine(internals, slave_id, &lacp->lacpdu); + } rte_pktmbuf_free(lacp_pkt); } else rx_machine(internals, slave_id, NULL); @@ -805,8 +812,8 @@ bond_mode_8023ad_periodic_cb(void *arg) struct rte_eth_link link_info; struct ether_addr slave_addr; struct rte_mbuf *lacp_pkt = NULL; - - uint8_t i, slave_id; + uint16_t slave_id; + uint16_t i; /* Update link status on each port */ @@ -1149,7 +1156,7 @@ int bond_mode_8023ad_enable(struct rte_eth_dev *bond_dev) { struct bond_dev_private *internals = bond_dev->data->dev_private; - uint8_t i; + uint16_t i; for (i = 0; i < internals->active_slave_count; i++) bond_mode_8023ad_activate_slave(bond_dev, @@ -1165,6 +1172,7 @@ bond_mode_8023ad_start(struct rte_eth_dev *bond_dev) struct mode8023ad_private *mode4 = &internals->mode4; static const uint64_t us = BOND_MODE_8023AX_UPDATE_TIMEOUT_MS * 1000; + rte_eth_macaddr_get(internals->port_id, &mode4->mac_addr); if (mode4->slowrx_cb) return rte_eal_alarm_set(us, &bond_mode_8023ad_ext_periodic_cb, bond_dev); diff --git a/dpdk/drivers/net/bonding/rte_eth_bond_8023ad_private.h b/dpdk/drivers/net/bonding/rte_eth_bond_8023ad_private.h index c51426b85..f91902ebd 100644 --- a/dpdk/drivers/net/bonding/rte_eth_bond_8023ad_private.h +++ b/dpdk/drivers/net/bonding/rte_eth_bond_8023ad_private.h @@ -150,6 +150,7 @@ struct mode8023ad_private { uint64_t update_timeout_us; rte_eth_bond_8023ad_ext_slowrx_fn slowrx_cb; uint8_t external_sm; + struct ether_addr mac_addr; struct rte_eth_link slave_link; /***< slave link properties */ diff --git a/dpdk/drivers/net/bonding/rte_eth_bond_alb.c b/dpdk/drivers/net/bonding/rte_eth_bond_alb.c index c3891c7e3..d3e16d4bd 100644 --- a/dpdk/drivers/net/bonding/rte_eth_bond_alb.c +++ b/dpdk/drivers/net/bonding/rte_eth_bond_alb.c @@ -18,10 +18,10 @@ simple_hash(uint8_t *hash_start, int hash_size) return hash; } -static uint8_t +static uint16_t calculate_slave(struct bond_dev_private *internals) { - uint8_t idx; + uint16_t idx; idx = (internals->mode6.last_slave + 1) % internals->active_slave_count; internals->mode6.last_slave = idx; diff --git a/dpdk/drivers/net/bonding/rte_eth_bond_api.c b/dpdk/drivers/net/bonding/rte_eth_bond_api.c index 21bcd5044..a23988dc7 100644 --- a/dpdk/drivers/net/bonding/rte_eth_bond_api.c +++ b/dpdk/drivers/net/bonding/rte_eth_bond_api.c @@ -19,7 +19,10 @@ int check_for_bonded_ethdev(const struct rte_eth_dev *eth_dev) { /* Check valid pointer */ - if (eth_dev->device->driver->name == NULL) + if (eth_dev == NULL || + eth_dev->device == NULL || + eth_dev->device->driver == NULL || + eth_dev->device->driver->name == NULL) return -1; /* return 0 if driver name matches */ @@ -73,7 +76,7 @@ void activate_slave(struct rte_eth_dev *eth_dev, uint16_t port_id) { struct bond_dev_private *internals = eth_dev->data->dev_private; - uint8_t active_count = internals->active_slave_count; + uint16_t active_count = internals->active_slave_count; if (internals->mode == BONDING_MODE_8023AD) bond_mode_8023ad_activate_slave(eth_dev, port_id); @@ -126,6 +129,12 @@ deactivate_slave(struct rte_eth_dev *eth_dev, uint16_t port_id) RTE_ASSERT(active_count < RTE_DIM(internals->active_slaves)); internals->active_slave_count = active_count; + /* Resetting active_slave when reaches to max + * no of slaves in active list + */ + if (internals->active_slave >= active_count) + internals->active_slave = 0; + if (eth_dev->data->dev_started) { if (internals->mode == BONDING_MODE_8023AD) { bond_mode_8023ad_start(eth_dev); @@ -481,10 +490,6 @@ __eth_bond_slave_add_lock_free(uint16_t bonded_port_id, uint16_t slave_port_id) } } - /* Inherit eth dev link properties from first slave */ - link_properties_set(bonded_eth_dev, - &(slave_eth_dev->data->dev_link)); - /* Make primary slave */ internals->primary_port = slave_port_id; internals->current_primary_port = slave_port_id; @@ -791,7 +796,7 @@ rte_eth_bond_slaves_get(uint16_t bonded_port_id, uint16_t slaves[], uint16_t len) { struct bond_dev_private *internals; - uint8_t i; + uint16_t i; if (valid_bonded_port_id(bonded_port_id) != 0) return -1; diff --git a/dpdk/drivers/net/bonding/rte_eth_bond_pmd.c b/dpdk/drivers/net/bonding/rte_eth_bond_pmd.c index 44deaf119..154257ffe 100644 --- a/dpdk/drivers/net/bonding/rte_eth_bond_pmd.c +++ b/dpdk/drivers/net/bonding/rte_eth_bond_pmd.c @@ -84,7 +84,7 @@ bond_ethdev_rx_burst(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) active_slave = 0; } - if (++internals->active_slave == slave_count) + if (++internals->active_slave >= slave_count) internals->active_slave = 0; return num_rx_total; } @@ -288,7 +288,7 @@ bond_ethdev_rx_burst_8023ad_fast_queue(void *queue, struct rte_mbuf **bufs, active_slave = 0; } - if (++internals->active_slave == slave_count) + if (++internals->active_slave >= slave_count) internals->active_slave = 0; return num_rx_total; @@ -353,7 +353,7 @@ bond_ethdev_tx_burst_8023ad_fast_queue(void *queue, struct rte_mbuf **bufs, for (i = 0; i < nb_bufs; i++) { /* Populate slave mbuf arrays with mbufs for that slave. */ - uint8_t slave_idx = bufs_slave_port_idxs[i]; + uint16_t slave_idx = bufs_slave_port_idxs[i]; slave_bufs[slave_idx][slave_nb_bufs[slave_idx]++] = bufs[i]; } @@ -404,8 +404,10 @@ bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs, uint8_t collecting; /* current slave collecting status */ const uint8_t promisc = internals->promiscuous_en; - uint8_t i, j, k; uint8_t subtype; + uint16_t i; + uint16_t j; + uint16_t k; /* Copy slave list to protect against slave up/down changes during tx * bursting */ @@ -474,7 +476,7 @@ bond_ethdev_rx_burst_8023ad(void *queue, struct rte_mbuf **bufs, idx = 0; } - if (++internals->active_slave == slave_count) + if (++internals->active_slave >= slave_count) internals->active_slave = 0; return num_rx_total; @@ -487,35 +489,31 @@ uint32_t burstnumberTX; #ifdef RTE_LIBRTE_BOND_DEBUG_ALB static void -arp_op_name(uint16_t arp_op, char *buf) +arp_op_name(uint16_t arp_op, char *buf, size_t buf_len) { switch (arp_op) { case ARP_OP_REQUEST: - snprintf(buf, sizeof("ARP Request"), "%s", "ARP Request"); + snprintf(buf, buf_len, "%s", "ARP Request"); return; case ARP_OP_REPLY: - snprintf(buf, sizeof("ARP Reply"), "%s", "ARP Reply"); + snprintf(buf, buf_len, "%s", "ARP Reply"); return; case ARP_OP_REVREQUEST: - snprintf(buf, sizeof("Reverse ARP Request"), "%s", - "Reverse ARP Request"); + snprintf(buf, buf_len, "%s", "Reverse ARP Request"); return; case ARP_OP_REVREPLY: - snprintf(buf, sizeof("Reverse ARP Reply"), "%s", - "Reverse ARP Reply"); + snprintf(buf, buf_len, "%s", "Reverse ARP Reply"); return; case ARP_OP_INVREQUEST: - snprintf(buf, sizeof("Peer Identify Request"), "%s", - "Peer Identify Request"); + snprintf(buf, buf_len, "%s", "Peer Identify Request"); return; case ARP_OP_INVREPLY: - snprintf(buf, sizeof("Peer Identify Reply"), "%s", - "Peer Identify Reply"); + snprintf(buf, buf_len, "%s", "Peer Identify Reply"); return; default: break; } - snprintf(buf, sizeof("Unknown"), "%s", "Unknown"); + snprintf(buf, buf_len, "%s", "Unknown"); return; } #endif @@ -619,7 +617,8 @@ mode6_debug(const char __attribute__((unused)) *info, struct ether_hdr *eth_h, arp_h = (struct arp_hdr *)((char *)(eth_h + 1) + offset); ipv4_addr_to_dot(arp_h->arp_data.arp_sip, src_ip, MaxIPv4String); ipv4_addr_to_dot(arp_h->arp_data.arp_tip, dst_ip, MaxIPv4String); - arp_op_name(rte_be_to_cpu_16(arp_h->arp_op), ArpOp); + arp_op_name(rte_be_to_cpu_16(arp_h->arp_op), + ArpOp, sizeof(ArpOp)); MODE6_DEBUG(buf, src_ip, dst_ip, eth_h, ArpOp, port, *burstnumber); } #endif @@ -774,7 +773,7 @@ ipv6_hash(struct ipv6_hdr *ipv6_hdr) void burst_xmit_l2_hash(struct rte_mbuf **buf, uint16_t nb_pkts, - uint8_t slave_count, uint16_t *slaves) + uint16_t slave_count, uint16_t *slaves) { struct ether_hdr *eth_hdr; uint32_t hash; @@ -791,7 +790,7 @@ burst_xmit_l2_hash(struct rte_mbuf **buf, uint16_t nb_pkts, void burst_xmit_l23_hash(struct rte_mbuf **buf, uint16_t nb_pkts, - uint8_t slave_count, uint16_t *slaves) + uint16_t slave_count, uint16_t *slaves) { uint16_t i; struct ether_hdr *eth_hdr; @@ -829,7 +828,7 @@ burst_xmit_l23_hash(struct rte_mbuf **buf, uint16_t nb_pkts, void burst_xmit_l34_hash(struct rte_mbuf **buf, uint16_t nb_pkts, - uint8_t slave_count, uint16_t *slaves) + uint16_t slave_count, uint16_t *slaves) { struct ether_hdr *eth_hdr; uint16_t proto; @@ -899,7 +898,7 @@ burst_xmit_l34_hash(struct rte_mbuf **buf, uint16_t nb_pkts, struct bwg_slave { uint64_t bwg_left_int; uint64_t bwg_left_remainder; - uint8_t slave; + uint16_t slave; }; void @@ -952,11 +951,12 @@ bond_ethdev_update_tlb_slave_cb(void *arg) struct bond_dev_private *internals = arg; struct rte_eth_stats slave_stats; struct bwg_slave bwg_array[RTE_MAX_ETHPORTS]; - uint8_t slave_count; + uint16_t slave_count; uint64_t tx_bytes; uint8_t update_stats = 0; - uint8_t i, slave_id; + uint16_t slave_id; + uint16_t i; internals->slave_update_idx++; @@ -1243,7 +1243,7 @@ bond_ethdev_tx_burst_balance(void *queue, struct rte_mbuf **bufs, for (i = 0; i < nb_bufs; i++) { /* Populate slave mbuf arrays with mbufs for that slave. */ - uint8_t slave_idx = bufs_slave_port_idxs[i]; + uint16_t slave_idx = bufs_slave_port_idxs[i]; slave_bufs[slave_idx][slave_nb_bufs[slave_idx]++] = bufs[i]; } @@ -1298,9 +1298,6 @@ bond_ethdev_tx_burst_8023ad(void *queue, struct rte_mbuf **bufs, uint16_t i; - if (unlikely(nb_bufs == 0)) - return 0; - /* Copy slave list to protect against slave up/down changes during tx * bursting */ slave_count = internals->active_slave_count; @@ -1310,6 +1307,30 @@ bond_ethdev_tx_burst_8023ad(void *queue, struct rte_mbuf **bufs, memcpy(slave_port_ids, internals->active_slaves, sizeof(slave_port_ids[0]) * slave_count); + /* Check for LACP control packets and send if available */ + for (i = 0; i < slave_count; i++) { + struct port *port = &bond_mode_8023ad_ports[slave_port_ids[i]]; + struct rte_mbuf *ctrl_pkt = NULL; + + if (likely(rte_ring_empty(port->tx_ring))) + continue; + + if (rte_ring_dequeue(port->tx_ring, + (void **)&ctrl_pkt) != -ENOENT) { + slave_tx_count = rte_eth_tx_burst(slave_port_ids[i], + bd_tx_q->queue_id, &ctrl_pkt, 1); + /* + * re-enqueue LAG control plane packets to buffering + * ring if transmission fails so the packet isn't lost. + */ + if (slave_tx_count != 1) + rte_ring_enqueue(port->tx_ring, ctrl_pkt); + } + } + + if (unlikely(nb_bufs == 0)) + return 0; + dist_slave_count = 0; for (i = 0; i < slave_count; i++) { struct port *port = &bond_mode_8023ad_ports[slave_port_ids[i]]; @@ -1319,7 +1340,7 @@ bond_ethdev_tx_burst_8023ad(void *queue, struct rte_mbuf **bufs, slave_port_ids[i]; } - if (likely(dist_slave_count > 1)) { + if (likely(dist_slave_count > 0)) { /* * Populate slaves mbuf with the packets which are to be sent @@ -1333,7 +1354,7 @@ bond_ethdev_tx_burst_8023ad(void *queue, struct rte_mbuf **bufs, * Populate slave mbuf arrays with mbufs for that * slave */ - uint8_t slave_idx = bufs_slave_port_idxs[i]; + uint16_t slave_idx = bufs_slave_port_idxs[i]; slave_bufs[slave_idx][slave_nb_bufs[slave_idx]++] = bufs[i]; @@ -1365,27 +1386,6 @@ bond_ethdev_tx_burst_8023ad(void *queue, struct rte_mbuf **bufs, } } - /* Check for LACP control packets and send if available */ - for (i = 0; i < slave_count; i++) { - struct port *port = &bond_mode_8023ad_ports[slave_port_ids[i]]; - struct rte_mbuf *ctrl_pkt = NULL; - - if (likely(rte_ring_empty(port->tx_ring))) - continue; - - if (rte_ring_dequeue(port->tx_ring, - (void **)&ctrl_pkt) != -ENOENT) { - slave_tx_count = rte_eth_tx_burst(slave_port_ids[i], - bd_tx_q->queue_id, &ctrl_pkt, 1); - /* - * re-enqueue LAG control plane packets to buffering - * ring if transmission fails so the packet isn't lost. - */ - if (slave_tx_count != 1) - rte_ring_enqueue(port->tx_ring, ctrl_pkt); - } - } - return total_tx_count; } @@ -1396,8 +1396,9 @@ bond_ethdev_tx_burst_broadcast(void *queue, struct rte_mbuf **bufs, struct bond_dev_private *internals; struct bond_tx_queue *bd_tx_q; - uint8_t tx_failed_flag = 0, num_of_slaves; uint16_t slaves[RTE_MAX_ETHPORTS]; + uint8_t tx_failed_flag = 0; + uint16_t num_of_slaves; uint16_t max_nb_of_tx_pkts = 0; @@ -1449,7 +1450,7 @@ bond_ethdev_tx_burst_broadcast(void *queue, struct rte_mbuf **bufs, return max_nb_of_tx_pkts; } -void +static void link_properties_set(struct rte_eth_dev *ethdev, struct rte_eth_link *slave_link) { struct bond_dev_private *bond_ctx = ethdev->data->dev_private; @@ -1474,7 +1475,7 @@ link_properties_set(struct rte_eth_dev *ethdev, struct rte_eth_link *slave_link) } } -int +static int link_properties_valid(struct rte_eth_dev *ethdev, struct rte_eth_link *slave_link) { @@ -1948,7 +1949,7 @@ void slave_remove(struct bond_dev_private *internals, struct rte_eth_dev *slave_eth_dev) { - uint8_t i; + uint16_t i; for (i = 0; i < internals->slave_count; i++) if (internals->slaves[i].port_id == @@ -2124,7 +2125,7 @@ out_err: static void bond_ethdev_free_queues(struct rte_eth_dev *dev) { - uint8_t i; + uint16_t i; if (dev->data->rx_queues != NULL) { for (i = 0; i < dev->data->nb_rx_queues; i++) { @@ -2147,7 +2148,7 @@ void bond_ethdev_stop(struct rte_eth_dev *eth_dev) { struct bond_dev_private *internals = eth_dev->data->dev_private; - uint8_t i; + uint16_t i; if (internals->mode == BONDING_MODE_8023AD) { struct port *port; @@ -2196,7 +2197,7 @@ void bond_ethdev_close(struct rte_eth_dev *dev) { struct bond_dev_private *internals = dev->data->dev_private; - uint8_t bond_port_id = internals->port_id; + uint16_t bond_port_id = internals->port_id; int skipped = 0; struct rte_flow_error ferror; @@ -2228,6 +2229,8 @@ bond_ethdev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) uint16_t max_nb_rx_queues = UINT16_MAX; uint16_t max_nb_tx_queues = UINT16_MAX; + uint16_t max_rx_desc_lim = UINT16_MAX; + uint16_t max_tx_desc_lim = UINT16_MAX; dev_info->max_mac_addrs = BOND_MAX_MAC_ADDRS; @@ -2241,7 +2244,7 @@ bond_ethdev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) */ if (internals->slave_count > 0) { struct rte_eth_dev_info slave_info; - uint8_t idx; + uint16_t idx; for (idx = 0; idx < internals->slave_count; idx++) { rte_eth_dev_info_get(internals->slaves[idx].port_id, @@ -2252,6 +2255,12 @@ bond_ethdev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) if (slave_info.max_tx_queues < max_nb_tx_queues) max_nb_tx_queues = slave_info.max_tx_queues; + + if (slave_info.rx_desc_lim.nb_max < max_rx_desc_lim) + max_rx_desc_lim = slave_info.rx_desc_lim.nb_max; + + if (slave_info.tx_desc_lim.nb_max < max_tx_desc_lim) + max_tx_desc_lim = slave_info.tx_desc_lim.nb_max; } } @@ -2263,10 +2272,8 @@ bond_ethdev_info(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) memcpy(&dev_info->default_txconf, &internals->default_txconf, sizeof(dev_info->default_txconf)); - memcpy(&dev_info->rx_desc_lim, &internals->rx_desc_lim, - sizeof(dev_info->rx_desc_lim)); - memcpy(&dev_info->tx_desc_lim, &internals->tx_desc_lim, - sizeof(dev_info->tx_desc_lim)); + dev_info->rx_desc_lim.nb_max = max_rx_desc_lim; + dev_info->tx_desc_lim.nb_max = max_tx_desc_lim; /** * If dedicated hw queues enabled for link bonding device in LACP mode @@ -2593,6 +2600,9 @@ bond_ethdev_promiscuous_enable(struct rte_eth_dev *eth_dev) case BONDING_MODE_TLB: case BONDING_MODE_ALB: default: + /* Do not touch promisc when there cannot be primary ports */ + if (internals->slave_count == 0) + break; rte_eth_promiscuous_enable(internals->current_primary_port); } } @@ -2621,6 +2631,9 @@ bond_ethdev_promiscuous_disable(struct rte_eth_dev *dev) case BONDING_MODE_TLB: case BONDING_MODE_ALB: default: + /* Do not touch promisc when there cannot be primary ports */ + if (internals->slave_count == 0) + break; rte_eth_promiscuous_disable(internals->current_primary_port); } } @@ -2644,14 +2657,15 @@ bond_ethdev_lsc_event_callback(uint16_t port_id, enum rte_eth_event_type type, struct rte_eth_link link; int rc = -1; - int i, valid_slave = 0; - uint8_t active_pos; uint8_t lsc_flag = 0; + int valid_slave = 0; + uint16_t active_pos; + uint16_t i; if (type != RTE_ETH_EVENT_INTR_LSC || param == NULL) return rc; - bonded_eth_dev = &rte_eth_devices[*(uint8_t *)param]; + bonded_eth_dev = &rte_eth_devices[*(uint16_t *)param]; if (check_for_bonded_ethdev(bonded_eth_dev)) return rc; @@ -2687,16 +2701,6 @@ bond_ethdev_lsc_event_callback(uint16_t port_id, enum rte_eth_event_type type, if (active_pos < internals->active_slave_count) goto link_update; - /* if no active slave ports then set this port to be primary port */ - if (internals->active_slave_count < 1) { - /* If first active slave, then change link status */ - bonded_eth_dev->data->dev_link.link_status = ETH_LINK_UP; - internals->current_primary_port = port_id; - lsc_flag = 1; - - mac_address_slaves_update(bonded_eth_dev); - } - /* check link state properties if bonded link is up*/ if (bonded_eth_dev->data->dev_link.link_status == ETH_LINK_UP) { if (link_properties_valid(bonded_eth_dev, &link) != 0) @@ -2708,9 +2712,24 @@ bond_ethdev_lsc_event_callback(uint16_t port_id, enum rte_eth_event_type type, link_properties_set(bonded_eth_dev, &link); } + /* If no active slave ports then set this port to be + * the primary port. + */ + if (internals->active_slave_count < 1) { + /* If first active slave, then change link status */ + bonded_eth_dev->data->dev_link.link_status = + ETH_LINK_UP; + internals->current_primary_port = port_id; + lsc_flag = 1; + + mac_address_slaves_update(bonded_eth_dev); + } + activate_slave(bonded_eth_dev, port_id); - /* If user has defined the primary port then default to using it */ + /* If the user has defined the primary port then default to + * using it. + */ if (internals->user_defined_primary_port && internals->primary_port == port_id) bond_ethdev_primary_set(internals, port_id); diff --git a/dpdk/drivers/net/bonding/rte_eth_bond_private.h b/dpdk/drivers/net/bonding/rte_eth_bond_private.h index 3ea5d686b..8afef39ba 100644 --- a/dpdk/drivers/net/bonding/rte_eth_bond_private.h +++ b/dpdk/drivers/net/bonding/rte_eth_bond_private.h @@ -100,7 +100,7 @@ struct rte_flow { }; typedef void (*burst_xmit_hash_t)(struct rte_mbuf **buf, uint16_t nb_pkts, - uint8_t slave_count, uint16_t *slaves); + uint16_t slave_count, uint16_t *slaves); /** Link Bonding PMD device private configuration Structure */ struct bond_dev_private { @@ -222,13 +222,6 @@ deactivate_slave(struct rte_eth_dev *eth_dev, uint16_t port_id); void activate_slave(struct rte_eth_dev *eth_dev, uint16_t port_id); -void -link_properties_set(struct rte_eth_dev *bonded_eth_dev, - struct rte_eth_link *slave_dev_link); -int -link_properties_valid(struct rte_eth_dev *bonded_eth_dev, - struct rte_eth_link *slave_dev_link); - int mac_address_set(struct rte_eth_dev *eth_dev, struct ether_addr *new_mac_addr); @@ -263,15 +256,15 @@ slave_add(struct bond_dev_private *internals, void burst_xmit_l2_hash(struct rte_mbuf **buf, uint16_t nb_pkts, - uint8_t slave_count, uint16_t *slaves); + uint16_t slave_count, uint16_t *slaves); void burst_xmit_l23_hash(struct rte_mbuf **buf, uint16_t nb_pkts, - uint8_t slave_count, uint16_t *slaves); + uint16_t slave_count, uint16_t *slaves); void burst_xmit_l34_hash(struct rte_mbuf **buf, uint16_t nb_pkts, - uint8_t slave_count, uint16_t *slaves); + uint16_t slave_count, uint16_t *slaves); void diff --git a/dpdk/drivers/net/cxgbe/base/t4_hw.c b/dpdk/drivers/net/cxgbe/base/t4_hw.c index 701e0b1fe..774dd082d 100644 --- a/dpdk/drivers/net/cxgbe/base/t4_hw.c +++ b/dpdk/drivers/net/cxgbe/base/t4_hw.c @@ -4246,7 +4246,7 @@ int t4_free_raw_mac_filt(struct adapter *adap, unsigned int viid, V_FW_CMD_EXEC(0) | V_FW_VI_MAC_CMD_VIID(viid)); raw = V_FW_VI_MAC_CMD_ENTRY_TYPE(FW_VI_MAC_TYPE_RAW); - c.freemacs_to_len16 = cpu_to_be32(V_FW_VI_MAC_CMD_FREEMACS(0) | + c.freemacs_to_len16 = cpu_to_be32(V_FW_VI_MAC_CMD_FREEMACS(0U) | raw | V_FW_CMD_LEN16(1)); diff --git a/dpdk/drivers/net/cxgbe/base/t4_pci_id_tbl.h b/dpdk/drivers/net/cxgbe/base/t4_pci_id_tbl.h index 5f5cbe048..f5f027a2e 100644 --- a/dpdk/drivers/net/cxgbe/base/t4_pci_id_tbl.h +++ b/dpdk/drivers/net/cxgbe/base/t4_pci_id_tbl.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: BSD-3-Clause - * Copyright(c) 2014-2018 Chelsio Communications. + * Copyright(c) 2014-2019 Chelsio Communications. * All rights reserved. */ @@ -103,6 +103,12 @@ CH_PCI_DEVICE_ID_TABLE_DEFINE_BEGIN CH_PCI_ID_TABLE_FENTRY(0x5013), /* T580-chr */ CH_PCI_ID_TABLE_FENTRY(0x5014), /* T580-so */ CH_PCI_ID_TABLE_FENTRY(0x5015), /* T502-bt */ + CH_PCI_ID_TABLE_FENTRY(0x5016), /* T580-OCP-SO */ + CH_PCI_ID_TABLE_FENTRY(0x5017), /* T520-OCP-SO */ + CH_PCI_ID_TABLE_FENTRY(0x5018), /* T540-BT */ + CH_PCI_ID_TABLE_FENTRY(0x5019), /* T540-LP-BT */ + CH_PCI_ID_TABLE_FENTRY(0x501a), /* T540-SO-BT */ + CH_PCI_ID_TABLE_FENTRY(0x501b), /* T540-SO-CR */ CH_PCI_ID_TABLE_FENTRY(0x5080), /* Custom T540-cr */ CH_PCI_ID_TABLE_FENTRY(0x5081), /* Custom T540-LL-cr */ CH_PCI_ID_TABLE_FENTRY(0x5082), /* Custom T504-cr */ @@ -116,19 +122,63 @@ CH_PCI_DEVICE_ID_TABLE_DEFINE_BEGIN CH_PCI_ID_TABLE_FENTRY(0x5090), /* Custom T540-CR */ CH_PCI_ID_TABLE_FENTRY(0x5091), /* Custom T522-CR */ CH_PCI_ID_TABLE_FENTRY(0x5092), /* Custom T520-CR */ + CH_PCI_ID_TABLE_FENTRY(0x5093), /* Custom T580-LP-CR */ + CH_PCI_ID_TABLE_FENTRY(0x5094), /* Custom T540-CR */ + CH_PCI_ID_TABLE_FENTRY(0x5095), /* Custom T540-CR-SO */ + CH_PCI_ID_TABLE_FENTRY(0x5096), /* Custom T580-CR */ + CH_PCI_ID_TABLE_FENTRY(0x5097), /* Custom T520-KR */ + CH_PCI_ID_TABLE_FENTRY(0x5098), /* Custom 2x40G QSFP */ + CH_PCI_ID_TABLE_FENTRY(0x5099), /* Custom 2x40G QSFP */ + CH_PCI_ID_TABLE_FENTRY(0x509A), /* Custom T520-CR */ + CH_PCI_ID_TABLE_FENTRY(0x509B), /* Custom T540-CR LOM */ + CH_PCI_ID_TABLE_FENTRY(0x509c), /* Custom T520-CR SFP+ LOM */ + CH_PCI_ID_TABLE_FENTRY(0x509d), /* Custom T540-CR SFP+ */ + CH_PCI_ID_TABLE_FENTRY(0x509e), /* Custom T520-CR */ + CH_PCI_ID_TABLE_FENTRY(0x509f), /* Custom T540-CR */ + CH_PCI_ID_TABLE_FENTRY(0x50a0), /* Custom T540-CR */ + CH_PCI_ID_TABLE_FENTRY(0x50a1), /* Custom T540-CR */ + CH_PCI_ID_TABLE_FENTRY(0x50a2), /* Custom T580-KR4 */ + CH_PCI_ID_TABLE_FENTRY(0x50a3), /* Custom T580-KR4 */ + CH_PCI_ID_TABLE_FENTRY(0x50a4), /* Custom 2x T540-CR */ + CH_PCI_ID_TABLE_FENTRY(0x50a5), /* Custom T522-BT */ + CH_PCI_ID_TABLE_FENTRY(0x50a6), /* Custom T522-BT-SO */ + CH_PCI_ID_TABLE_FENTRY(0x50a7), /* Custom T580-CR */ + CH_PCI_ID_TABLE_FENTRY(0x50a8), /* Custom T580-KR */ + CH_PCI_ID_TABLE_FENTRY(0x50a9), /* Custom T580-KR */ + CH_PCI_ID_TABLE_FENTRY(0x50aa), /* Custom T580-CR */ + CH_PCI_ID_TABLE_FENTRY(0x50ab), /* Custom T520-CR */ + CH_PCI_ID_TABLE_FENTRY(0x50ac), /* Custom T540-BT */ + CH_PCI_ID_TABLE_FENTRY(0x50ad), /* Custom T520-CR */ + CH_PCI_ID_TABLE_FENTRY(0x50ae), /* Custom T540-XL-SO */ + CH_PCI_ID_TABLE_FENTRY(0x50af), /* Custom T580-KR-SO */ + CH_PCI_ID_TABLE_FENTRY(0x50b0), /* Custom T520-CR-LOM */ /* T6 adapter */ CH_PCI_ID_TABLE_FENTRY(0x6001), /* T6225-CR */ CH_PCI_ID_TABLE_FENTRY(0x6002), /* T6225-SO-CR */ CH_PCI_ID_TABLE_FENTRY(0x6003), /* T6425-CR */ + CH_PCI_ID_TABLE_FENTRY(0x6004), /* T6425-SO-CR */ CH_PCI_ID_TABLE_FENTRY(0x6005), /* T6225-OCP */ + CH_PCI_ID_TABLE_FENTRY(0x6006), /* T62100-OCP-SO */ CH_PCI_ID_TABLE_FENTRY(0x6007), /* T62100-LP-CR */ CH_PCI_ID_TABLE_FENTRY(0x6008), /* T62100-SO-CR */ + CH_PCI_ID_TABLE_FENTRY(0x6009), /* T6210-BT */ CH_PCI_ID_TABLE_FENTRY(0x600d), /* T62100-CR */ CH_PCI_ID_TABLE_FENTRY(0x6011), /* T6225-LL-CR */ CH_PCI_ID_TABLE_FENTRY(0x6014), /* T61100-OCP-SO */ + CH_PCI_ID_TABLE_FENTRY(0x6015), /* T6201-BT */ CH_PCI_ID_TABLE_FENTRY(0x6080), /* Custom T6225-CR SFP28 */ CH_PCI_ID_TABLE_FENTRY(0x6081), /* Custom T62100-CR */ + CH_PCI_ID_TABLE_FENTRY(0x6082), /* Custom T6225-CR */ + CH_PCI_ID_TABLE_FENTRY(0x6083), /* Custom T62100-CR */ + CH_PCI_ID_TABLE_FENTRY(0x6084), /* Custom T64100-CR */ + CH_PCI_ID_TABLE_FENTRY(0x6085), /* Custom T6240-SO */ + CH_PCI_ID_TABLE_FENTRY(0x6086), /* Custom T6225-SO-CR */ + CH_PCI_ID_TABLE_FENTRY(0x6087), /* Custom T6225-CR */ + CH_PCI_ID_TABLE_FENTRY(0x6088), /* Custom T62100-CR */ + CH_PCI_ID_TABLE_FENTRY(0x6089), /* Custom T62100-KR */ + CH_PCI_ID_TABLE_FENTRY(0x608a), /* Custom T62100-CR */ + CH_PCI_ID_TABLE_FENTRY(0x608b), /* Custom T6225-CR */ CH_PCI_DEVICE_ID_TABLE_DEFINE_END; #endif /* CH_PCI_DEVICE_ID_TABLE_DEFINE_BEGIN */ diff --git a/dpdk/drivers/net/cxgbe/cxgbe.h b/dpdk/drivers/net/cxgbe/cxgbe.h index eb58f8802..cf2621344 100644 --- a/dpdk/drivers/net/cxgbe/cxgbe.h +++ b/dpdk/drivers/net/cxgbe/cxgbe.h @@ -52,7 +52,7 @@ #define CXGBE_DEVARG_KEEP_OVLAN "keep_ovlan" #define CXGBE_DEVARG_FORCE_LINK_UP "force_link_up" -bool force_linkup(struct adapter *adap); +bool cxgbe_force_linkup(struct adapter *adap); int cxgbe_probe(struct adapter *adapter); int cxgbevf_probe(struct adapter *adapter); void cxgbe_get_speed_caps(struct port_info *pi, u32 *speed_caps); @@ -65,19 +65,17 @@ void cxgbevf_stats_get(struct port_info *pi, struct port_stats *stats); void cxgbe_stats_reset(struct port_info *pi); int cxgbe_poll_for_completion(struct sge_rspq *q, unsigned int us, unsigned int cnt, struct t4_completion *c); -int link_start(struct port_info *pi); -void init_rspq(struct adapter *adap, struct sge_rspq *q, unsigned int us, - unsigned int cnt, unsigned int size, unsigned int iqe_size); -int setup_sge_fwevtq(struct adapter *adapter); -int setup_sge_ctrl_txq(struct adapter *adapter); -void cfg_queues(struct rte_eth_dev *eth_dev); -int cfg_queue_count(struct rte_eth_dev *eth_dev); -int init_rss(struct adapter *adap); -int setup_rss(struct port_info *pi); +int cxgbe_link_start(struct port_info *pi); +int cxgbe_setup_sge_fwevtq(struct adapter *adapter); +int cxgbe_setup_sge_ctrl_txq(struct adapter *adapter); +void cxgbe_cfg_queues(struct rte_eth_dev *eth_dev); +int cxgbe_cfg_queue_count(struct rte_eth_dev *eth_dev); +int cxgbe_init_rss(struct adapter *adap); +int cxgbe_setup_rss(struct port_info *pi); void cxgbe_enable_rx_queues(struct port_info *pi); -void print_port_info(struct adapter *adap); -void print_adapter_info(struct adapter *adap); +void cxgbe_print_port_info(struct adapter *adap); +void cxgbe_print_adapter_info(struct adapter *adap); int cxgbe_get_devargs(struct rte_devargs *devargs, const char *key); -void configure_max_ethqsets(struct adapter *adapter); +void cxgbe_configure_max_ethqsets(struct adapter *adapter); #endif /* _CXGBE_H_ */ diff --git a/dpdk/drivers/net/cxgbe/cxgbe_ethdev.c b/dpdk/drivers/net/cxgbe/cxgbe_ethdev.c index b2f83ea37..7babdfb49 100644 --- a/dpdk/drivers/net/cxgbe/cxgbe_ethdev.c +++ b/dpdk/drivers/net/cxgbe/cxgbe_ethdev.c @@ -200,7 +200,8 @@ int cxgbe_dev_link_update(struct rte_eth_dev *eth_dev, cxgbe_poll(&s->fw_evtq, NULL, budget, &work_done); /* Exit if link status changed or always forced up */ - if (pi->link_cfg.link_ok != old_link || force_linkup(adapter)) + if (pi->link_cfg.link_ok != old_link || + cxgbe_force_linkup(adapter)) break; if (!wait_to_complete) @@ -209,7 +210,7 @@ int cxgbe_dev_link_update(struct rte_eth_dev *eth_dev, rte_delay_ms(CXGBE_LINK_STATUS_POLL_MS); } - new_link.link_status = force_linkup(adapter) ? + new_link.link_status = cxgbe_force_linkup(adapter) ? ETH_LINK_UP : pi->link_cfg.link_ok; new_link.link_autoneg = pi->link_cfg.autoneg; new_link.link_duplex = ETH_LINK_FULL_DUPLEX; @@ -356,7 +357,7 @@ int cxgbe_dev_start(struct rte_eth_dev *eth_dev) cxgbe_enable_rx_queues(pi); - err = setup_rss(pi); + err = cxgbe_setup_rss(pi); if (err) goto out; @@ -372,7 +373,7 @@ int cxgbe_dev_start(struct rte_eth_dev *eth_dev) goto out; } - err = link_start(pi); + err = cxgbe_link_start(pi); if (err) goto out; @@ -412,18 +413,18 @@ int cxgbe_dev_configure(struct rte_eth_dev *eth_dev) CXGBE_FUNC_TRACE(); if (!(adapter->flags & FW_QUEUE_BOUND)) { - err = setup_sge_fwevtq(adapter); + err = cxgbe_setup_sge_fwevtq(adapter); if (err) return err; adapter->flags |= FW_QUEUE_BOUND; if (is_pf4(adapter)) { - err = setup_sge_ctrl_txq(adapter); + err = cxgbe_setup_sge_ctrl_txq(adapter); if (err) return err; } } - err = cfg_queue_count(eth_dev); + err = cxgbe_cfg_queue_count(eth_dev); if (err) return err; diff --git a/dpdk/drivers/net/cxgbe/cxgbe_flow.c b/dpdk/drivers/net/cxgbe/cxgbe_flow.c index 4deaff8f2..7b87bdf58 100644 --- a/dpdk/drivers/net/cxgbe/cxgbe_flow.c +++ b/dpdk/drivers/net/cxgbe/cxgbe_flow.c @@ -732,6 +732,10 @@ cxgbe_rtef_parse_items(struct rte_flow *flow, "parse items cannot be repeated (except void)"); repeat[i->type] = 1; + /* No spec found for this pattern item. Skip it */ + if (!i->spec) + break; + /* validate the item */ ret = cxgbe_validate_item(i, e); if (ret) diff --git a/dpdk/drivers/net/cxgbe/cxgbe_main.c b/dpdk/drivers/net/cxgbe/cxgbe_main.c index ec080e5d3..6a3cbc1e5 100644 --- a/dpdk/drivers/net/cxgbe/cxgbe_main.c +++ b/dpdk/drivers/net/cxgbe/cxgbe_main.c @@ -116,12 +116,13 @@ out: /** * Setup sge control queues to pass control information. */ -int setup_sge_ctrl_txq(struct adapter *adapter) +int cxgbe_setup_sge_ctrl_txq(struct adapter *adapter) { struct sge *s = &adapter->sge; int err = 0, i = 0; for_each_port(adapter, i) { + struct port_info *pi = adap2pinfo(adapter, i); char name[RTE_ETH_NAME_MAX_LEN]; struct sge_ctrl_txq *q = &s->ctrlq[i]; @@ -135,16 +136,19 @@ int setup_sge_ctrl_txq(struct adapter *adapter) err); goto out; } - snprintf(name, sizeof(name), "cxgbe_ctrl_pool_%d", i); + snprintf(name, sizeof(name), "%s_ctrl_pool_%d", + pi->eth_dev->device->driver->name, + pi->eth_dev->data->port_id); q->mb_pool = rte_pktmbuf_pool_create(name, s->ctrlq[i].q.size, RTE_CACHE_LINE_SIZE, RTE_MBUF_PRIV_ALIGN, RTE_MBUF_DEFAULT_BUF_SIZE, SOCKET_ID_ANY); if (!q->mb_pool) { - dev_err(adapter, "Can't create ctrl pool for port: %d", - i); - err = -ENOMEM; + err = -rte_errno; + dev_err(adapter, + "Can't create ctrl pool for port %d. Err: %d\n", + pi->eth_dev->data->port_id, err); goto out; } } @@ -186,7 +190,7 @@ int cxgbe_poll_for_completion(struct sge_rspq *q, unsigned int ms, return -ETIMEDOUT; } -int setup_sge_fwevtq(struct adapter *adapter) +int cxgbe_setup_sge_fwevtq(struct adapter *adapter) { struct sge *s = &adapter->sge; int err = 0; @@ -411,7 +415,7 @@ static int tid_init(struct tid_info *t) return -ENOMEM; t->atid_tab = (union aopen_entry *)&t->tid_tab[t->ntids]; - t->ftid_tab = (struct filter_entry *)&t->tid_tab[t->natids]; + t->ftid_tab = (struct filter_entry *)&t->atid_tab[t->natids]; t->ftid_bmap_array = t4_os_alloc(ftid_bmap_size); if (!t->ftid_bmap_array) { tid_free(t); @@ -461,7 +465,7 @@ static inline bool is_x_10g_port(const struct link_config *lc) return high_speeds != 0; } -inline void init_rspq(struct adapter *adap, struct sge_rspq *q, +static inline void init_rspq(struct adapter *adap, struct sge_rspq *q, unsigned int us, unsigned int cnt, unsigned int size, unsigned int iqe_size) { @@ -471,7 +475,7 @@ inline void init_rspq(struct adapter *adap, struct sge_rspq *q, q->size = size; } -int cfg_queue_count(struct rte_eth_dev *eth_dev) +int cxgbe_cfg_queue_count(struct rte_eth_dev *eth_dev) { struct port_info *pi = (struct port_info *)(eth_dev->data->dev_private); struct adapter *adap = pi->adapter; @@ -498,7 +502,7 @@ int cfg_queue_count(struct rte_eth_dev *eth_dev) return 0; } -void cfg_queues(struct rte_eth_dev *eth_dev) +void cxgbe_cfg_queues(struct rte_eth_dev *eth_dev) { struct rte_config *config = rte_eal_get_configuration(); struct port_info *pi = (struct port_info *)(eth_dev->data->dev_private); @@ -592,7 +596,7 @@ static void setup_memwin(struct adapter *adap) MEMWIN_NIC)); } -int init_rss(struct adapter *adap) +int cxgbe_init_rss(struct adapter *adap) { unsigned int i; @@ -619,7 +623,7 @@ int init_rss(struct adapter *adap) /** * Dump basic information about the adapter. */ -void print_adapter_info(struct adapter *adap) +void cxgbe_print_adapter_info(struct adapter *adap) { /** * Hardware/Firmware/etc. Version/Revision IDs. @@ -627,7 +631,7 @@ void print_adapter_info(struct adapter *adap) t4_dump_version_info(adap); } -void print_port_info(struct adapter *adap) +void cxgbe_print_port_info(struct adapter *adap) { int i; char buf[80]; @@ -775,7 +779,7 @@ static void configure_pcie_ext_tag(struct adapter *adapter) } /* Figure out how many Queue Sets we can support */ -void configure_max_ethqsets(struct adapter *adapter) +void cxgbe_configure_max_ethqsets(struct adapter *adapter) { unsigned int ethqsets; @@ -1264,7 +1268,7 @@ static int adap_init0(struct adapter *adap) t4_init_tp_params(adap); configure_pcie_ext_tag(adap); configure_vlan_types(adap); - configure_max_ethqsets(adap); + cxgbe_configure_max_ethqsets(adap); adap->params.drv_memwin = MEMWIN_NIC; adap->flags |= FW_OK; @@ -1318,7 +1322,7 @@ void t4_os_portmod_changed(const struct adapter *adap, int port_id) pi->port_id, pi->mod_type); } -inline bool force_linkup(struct adapter *adap) +bool cxgbe_force_linkup(struct adapter *adap) { struct rte_pci_device *pdev = adap->pdev; @@ -1336,7 +1340,7 @@ inline bool force_linkup(struct adapter *adap) * * Performs the MAC and PHY actions needed to enable a port. */ -int link_start(struct port_info *pi) +int cxgbe_link_start(struct port_info *pi) { struct adapter *adapter = pi->adapter; u64 conf_offloads; @@ -1378,7 +1382,7 @@ int link_start(struct port_info *pi) true, true, false); } - if (ret == 0 && force_linkup(adapter)) + if (ret == 0 && cxgbe_force_linkup(adapter)) pi->eth_dev->data->dev_link.link_status = ETH_LINK_UP; return ret; } @@ -1486,7 +1490,7 @@ int cxgbe_write_rss(const struct port_info *pi, const u16 *queues) * We always configure the RSS mapping for all ports since the mapping * table has plenty of entries. */ -int setup_rss(struct port_info *pi) +int cxgbe_setup_rss(struct port_info *pi) { int j, err; struct adapter *adapter = pi->adapter; @@ -1860,10 +1864,10 @@ allocate_mac: } } - cfg_queues(adapter->eth_dev); + cxgbe_cfg_queues(adapter->eth_dev); - print_adapter_info(adapter); - print_port_info(adapter); + cxgbe_print_adapter_info(adapter); + cxgbe_print_port_info(adapter); adapter->clipt = t4_init_clip_tbl(adapter->clipt_start, adapter->clipt_end); @@ -1905,7 +1909,7 @@ allocate_mac: "Maskless filter support disabled. Continuing\n"); } - err = init_rss(adapter); + err = cxgbe_init_rss(adapter); if (err) goto out_free; diff --git a/dpdk/drivers/net/cxgbe/cxgbevf_main.c b/dpdk/drivers/net/cxgbe/cxgbevf_main.c index 61bd85193..c46bc98a4 100644 --- a/dpdk/drivers/net/cxgbe/cxgbevf_main.c +++ b/dpdk/drivers/net/cxgbe/cxgbevf_main.c @@ -50,7 +50,7 @@ static void size_nports_qsets(struct adapter *adapter) adapter->params.nports = pmask_nports; } - configure_max_ethqsets(adapter); + cxgbe_configure_max_ethqsets(adapter); if (adapter->sge.max_ethqsets < adapter->params.nports) { dev_warn(adapter->pdev_dev, "only using %d of %d available" " virtual interfaces (too few Queue Sets)\n", @@ -268,16 +268,16 @@ allocate_mac: } } - cfg_queues(adapter->eth_dev); - print_adapter_info(adapter); - print_port_info(adapter); + cxgbe_cfg_queues(adapter->eth_dev); + cxgbe_print_adapter_info(adapter); + cxgbe_print_port_info(adapter); adapter->mpstcam = t4_init_mpstcam(adapter); if (!adapter->mpstcam) dev_warn(adapter, "VF could not allocate mps tcam table. Continuing\n"); - err = init_rss(adapter); + err = cxgbe_init_rss(adapter); if (err) goto out_free; return 0; diff --git a/dpdk/drivers/net/cxgbe/sge.c b/dpdk/drivers/net/cxgbe/sge.c index f9d2d48a0..663c0a796 100644 --- a/dpdk/drivers/net/cxgbe/sge.c +++ b/dpdk/drivers/net/cxgbe/sge.c @@ -1604,6 +1604,52 @@ static inline void rspq_next(struct sge_rspq *q) } } +static inline void cxgbe_set_mbuf_info(struct rte_mbuf *pkt, uint32_t ptype, + uint64_t ol_flags) +{ + pkt->packet_type |= ptype; + pkt->ol_flags |= ol_flags; +} + +static inline void cxgbe_fill_mbuf_info(struct adapter *adap, + const struct cpl_rx_pkt *cpl, + struct rte_mbuf *pkt) +{ + bool csum_ok; + u16 err_vec; + + if (adap->params.tp.rx_pkt_encap) + err_vec = G_T6_COMPR_RXERR_VEC(ntohs(cpl->err_vec)); + else + err_vec = ntohs(cpl->err_vec); + + csum_ok = cpl->csum_calc && !err_vec; + + if (cpl->vlan_ex) + cxgbe_set_mbuf_info(pkt, RTE_PTYPE_L2_ETHER_VLAN, + PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED); + else + cxgbe_set_mbuf_info(pkt, RTE_PTYPE_L2_ETHER, 0); + + if (cpl->l2info & htonl(F_RXF_IP)) + cxgbe_set_mbuf_info(pkt, RTE_PTYPE_L3_IPV4, + csum_ok ? PKT_RX_IP_CKSUM_GOOD : + PKT_RX_IP_CKSUM_BAD); + else if (cpl->l2info & htonl(F_RXF_IP6)) + cxgbe_set_mbuf_info(pkt, RTE_PTYPE_L3_IPV6, + csum_ok ? PKT_RX_IP_CKSUM_GOOD : + PKT_RX_IP_CKSUM_BAD); + + if (cpl->l2info & htonl(F_RXF_TCP)) + cxgbe_set_mbuf_info(pkt, RTE_PTYPE_L4_TCP, + csum_ok ? PKT_RX_L4_CKSUM_GOOD : + PKT_RX_L4_CKSUM_BAD); + else if (cpl->l2info & htonl(F_RXF_UDP)) + cxgbe_set_mbuf_info(pkt, RTE_PTYPE_L4_UDP, + csum_ok ? PKT_RX_L4_CKSUM_GOOD : + PKT_RX_L4_CKSUM_BAD); +} + /** * process_responses - process responses from an SGE response queue * @q: the ingress queue to process @@ -1655,8 +1701,6 @@ static int process_responses(struct sge_rspq *q, int budget, (const void *)&q->cur_desc[1]; struct rte_mbuf *pkt, *npkt; u32 len, bufsz; - bool csum_ok; - u16 err_vec; rc = (const struct rsp_ctrl *) ((const char *)q->cur_desc + @@ -1673,16 +1717,6 @@ static int process_responses(struct sge_rspq *q, int budget, len = G_RSPD_LEN(len); pkt->pkt_len = len; - /* Compressed error vector is enabled for - * T6 only - */ - if (q->adapter->params.tp.rx_pkt_encap) - err_vec = G_T6_COMPR_RXERR_VEC( - ntohs(cpl->err_vec)); - else - err_vec = ntohs(cpl->err_vec); - csum_ok = cpl->csum_calc && !err_vec; - /* Chain mbufs into len if necessary */ while (len) { struct rte_mbuf *new_pkt = rsd->buf; @@ -1700,20 +1734,7 @@ static int process_responses(struct sge_rspq *q, int budget, npkt->next = NULL; pkt->nb_segs--; - if (cpl->l2info & htonl(F_RXF_IP)) { - pkt->packet_type = RTE_PTYPE_L3_IPV4; - if (unlikely(!csum_ok)) - pkt->ol_flags |= - PKT_RX_IP_CKSUM_BAD; - - if ((cpl->l2info & - htonl(F_RXF_UDP | F_RXF_TCP)) && - !csum_ok) - pkt->ol_flags |= - PKT_RX_L4_CKSUM_BAD; - } else if (cpl->l2info & htonl(F_RXF_IP6)) { - pkt->packet_type = RTE_PTYPE_L3_IPV6; - } + cxgbe_fill_mbuf_info(q->adapter, cpl, pkt); if (!rss_hdr->filter_tid && rss_hdr->hash_type) { @@ -1722,11 +1743,8 @@ static int process_responses(struct sge_rspq *q, int budget, ntohl(rss_hdr->hash_val); } - if (cpl->vlan_ex) { - pkt->ol_flags |= PKT_RX_VLAN | - PKT_RX_VLAN_STRIPPED; + if (cpl->vlan_ex) pkt->vlan_tci = ntohs(cpl->vlan); - } rte_pktmbuf_adj(pkt, s->pktshift); rxq->stats.pkts++; diff --git a/dpdk/drivers/net/dpaa/dpaa_ethdev.c b/dpdk/drivers/net/dpaa/dpaa_ethdev.c index d0572b3d9..5448a2ca7 100644 --- a/dpdk/drivers/net/dpaa/dpaa_ethdev.c +++ b/dpdk/drivers/net/dpaa/dpaa_ethdev.c @@ -1223,8 +1223,12 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev) PMD_INIT_FUNC_TRACE(); /* For secondary processes, the primary has done all the work */ - if (rte_eal_process_type() != RTE_PROC_PRIMARY) + if (rte_eal_process_type() != RTE_PROC_PRIMARY) { + eth_dev->dev_ops = &dpaa_devops; + /* Plugging of UCODE burst API not supported in Secondary */ + eth_dev->rx_pkt_burst = dpaa_eth_queue_rx; return 0; + } dpaa_device = DEV_TO_DPAA_DEVICE(eth_dev->device); dev_id = dpaa_device->id.dev_id; diff --git a/dpdk/drivers/net/dpaa2/dpaa2_ethdev.c b/dpdk/drivers/net/dpaa2/dpaa2_ethdev.c index fa71807e6..39f85ae7b 100644 --- a/dpdk/drivers/net/dpaa2/dpaa2_ethdev.c +++ b/dpdk/drivers/net/dpaa2/dpaa2_ethdev.c @@ -311,8 +311,7 @@ dpaa2_free_rx_tx_queues(struct rte_eth_dev *dev) /* cleanup tx queue cscn */ for (i = 0; i < priv->nb_tx_queues; i++) { dpaa2_q = (struct dpaa2_queue *)priv->tx_vq[i]; - if (!dpaa2_q->cscn) - rte_free(dpaa2_q->cscn); + rte_free(dpaa2_q->cscn); } /*free memory for all queues (RX+TX) */ rte_free(priv->rx_vq[0]); @@ -1919,8 +1918,15 @@ dpaa2_dev_init(struct rte_eth_dev *eth_dev) PMD_INIT_FUNC_TRACE(); /* For secondary processes, the primary has done all the work */ - if (rte_eal_process_type() != RTE_PROC_PRIMARY) + if (rte_eal_process_type() != RTE_PROC_PRIMARY) { + /* In case of secondary, only burst and ops API need to be + * plugged. + */ + eth_dev->dev_ops = &dpaa2_ethdev_ops; + eth_dev->rx_pkt_burst = dpaa2_dev_prefetch_rx; + eth_dev->tx_pkt_burst = dpaa2_dev_tx; return 0; + } dpaa2_dev = container_of(dev, struct rte_dpaa2_device, device); diff --git a/dpdk/drivers/net/dpaa2/dpaa2_pmd_logs.h b/dpdk/drivers/net/dpaa2/dpaa2_pmd_logs.h index c04babdb4..c47ba8e10 100644 --- a/dpdk/drivers/net/dpaa2/dpaa2_pmd_logs.h +++ b/dpdk/drivers/net/dpaa2/dpaa2_pmd_logs.h @@ -1,5 +1,4 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause +/* SPDX-License-Identifier: BSD-3-Clause * Copyright 2017 NXP */ diff --git a/dpdk/drivers/net/e1000/base/e1000_82575.h b/dpdk/drivers/net/e1000/base/e1000_82575.h index 4133cdd82..6f2b22c13 100644 --- a/dpdk/drivers/net/e1000/base/e1000_82575.h +++ b/dpdk/drivers/net/e1000/base/e1000_82575.h @@ -383,7 +383,7 @@ struct e1000_adv_tx_context_desc { #define E1000_ETQF_FILTER_ENABLE (1 << 26) #define E1000_ETQF_IMM_INT (1 << 29) #define E1000_ETQF_1588 (1 << 30) -#define E1000_ETQF_QUEUE_ENABLE (1 << 31) +#define E1000_ETQF_QUEUE_ENABLE (1U << 31) /* * ETQF filter list: one static filter per filter consumer. This is * to avoid filter collisions later. Add new filters @@ -410,7 +410,7 @@ struct e1000_adv_tx_context_desc { #define E1000_DTXSWC_LLE_MASK 0x00FF0000 /* Per VF Local LB enables */ #define E1000_DTXSWC_VLAN_SPOOF_SHIFT 8 #define E1000_DTXSWC_LLE_SHIFT 16 -#define E1000_DTXSWC_VMDQ_LOOPBACK_EN (1 << 31) /* global VF LB enable */ +#define E1000_DTXSWC_VMDQ_LOOPBACK_EN (1U << 31) /* global VF LB enable */ /* Easy defines for setting default pool, would normally be left a zero */ #define E1000_VT_CTL_DEFAULT_POOL_SHIFT 7 diff --git a/dpdk/drivers/net/e1000/base/e1000_ich8lan.c b/dpdk/drivers/net/e1000/base/e1000_ich8lan.c index 92ab6fc6c..2654a18ad 100644 --- a/dpdk/drivers/net/e1000/base/e1000_ich8lan.c +++ b/dpdk/drivers/net/e1000/base/e1000_ich8lan.c @@ -5166,7 +5166,7 @@ STATIC void e1000_initialize_hw_bits_ich8lan(struct e1000_hw *hw) /* Device Status */ if (hw->mac.type == e1000_ich8lan) { reg = E1000_READ_REG(hw, E1000_STATUS); - reg &= ~(1 << 31); + reg &= ~(1U << 31); E1000_WRITE_REG(hw, E1000_STATUS, reg); } diff --git a/dpdk/drivers/net/e1000/em_rxtx.c b/dpdk/drivers/net/e1000/em_rxtx.c index a9cd76518..005e1ea96 100644 --- a/dpdk/drivers/net/e1000/em_rxtx.c +++ b/dpdk/drivers/net/e1000/em_rxtx.c @@ -50,6 +50,8 @@ #define E1000_RXDCTL_GRAN 0x01000000 /* RXDCTL Granularity */ #define E1000_TX_OFFLOAD_MASK ( \ + PKT_TX_IPV6 | \ + PKT_TX_IPV4 | \ PKT_TX_IP_CKSUM | \ PKT_TX_L4_MASK | \ PKT_TX_VLAN_PKT) diff --git a/dpdk/drivers/net/e1000/igb_ethdev.c b/dpdk/drivers/net/e1000/igb_ethdev.c index d9d29d22f..87c9aedf2 100644 --- a/dpdk/drivers/net/e1000/igb_ethdev.c +++ b/dpdk/drivers/net/e1000/igb_ethdev.c @@ -68,6 +68,9 @@ #define E1000_VET_VET_EXT 0xFFFF0000 #define E1000_VET_VET_EXT_SHIFT 16 +/* MSI-X other interrupt vector */ +#define IGB_MSIX_OTHER_INTR_VEC 0 + static int eth_igb_configure(struct rte_eth_dev *dev); static int eth_igb_start(struct rte_eth_dev *dev); static void eth_igb_stop(struct rte_eth_dev *dev); @@ -138,7 +141,7 @@ static void igb_vlan_hw_extend_disable(struct rte_eth_dev *dev); static int eth_igb_led_on(struct rte_eth_dev *dev); static int eth_igb_led_off(struct rte_eth_dev *dev); -static void igb_intr_disable(struct e1000_hw *hw); +static void igb_intr_disable(struct rte_eth_dev *dev); static int igb_get_rx_buffer_size(struct e1000_hw *hw); static int eth_igb_rar_set(struct rte_eth_dev *dev, struct ether_addr *mac_addr, @@ -538,14 +541,31 @@ igb_intr_enable(struct rte_eth_dev *dev) E1000_DEV_PRIVATE_TO_INTR(dev->data->dev_private); struct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private); + struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); + struct rte_intr_handle *intr_handle = &pci_dev->intr_handle; + + if (rte_intr_allow_others(intr_handle) && + dev->data->dev_conf.intr_conf.lsc != 0) { + E1000_WRITE_REG(hw, E1000_EIMS, 1 << IGB_MSIX_OTHER_INTR_VEC); + } E1000_WRITE_REG(hw, E1000_IMS, intr->mask); E1000_WRITE_FLUSH(hw); } static void -igb_intr_disable(struct e1000_hw *hw) +igb_intr_disable(struct rte_eth_dev *dev) { + struct e1000_hw *hw = + E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private); + struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); + struct rte_intr_handle *intr_handle = &pci_dev->intr_handle; + + if (rte_intr_allow_others(intr_handle) && + dev->data->dev_conf.intr_conf.lsc != 0) { + E1000_WRITE_REG(hw, E1000_EIMC, 1 << IGB_MSIX_OTHER_INTR_VEC); + } + E1000_WRITE_REG(hw, E1000_IMC, ~0); E1000_WRITE_FLUSH(hw); } @@ -1486,7 +1506,7 @@ eth_igb_stop(struct rte_eth_dev *dev) eth_igb_rxtx_control(dev, false); - igb_intr_disable(hw); + igb_intr_disable(dev); /* disable intr eventfd mapping */ rte_intr_disable(intr_handle); @@ -2768,12 +2788,15 @@ static int eth_igb_rxq_interrupt_setup(struct rte_eth_dev *dev) uint32_t mask, regval; struct e1000_hw *hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private); + struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); + struct rte_intr_handle *intr_handle = &pci_dev->intr_handle; + int misc_shift = rte_intr_allow_others(intr_handle) ? 1 : 0; struct rte_eth_dev_info dev_info; memset(&dev_info, 0, sizeof(dev_info)); eth_igb_infos_get(dev, &dev_info); - mask = 0xFFFFFFFF >> (32 - dev_info.max_rx_queues); + mask = (0xFFFFFFFF >> (32 - dev_info.max_rx_queues)) << misc_shift; regval = E1000_READ_REG(hw, E1000_EIMS); E1000_WRITE_REG(hw, E1000_EIMS, regval | mask); @@ -2800,7 +2823,7 @@ eth_igb_interrupt_get_status(struct rte_eth_dev *dev) struct e1000_interrupt *intr = E1000_DEV_PRIVATE_TO_INTR(dev->data->dev_private); - igb_intr_disable(hw); + igb_intr_disable(dev); /* read-on-clear nic registers here */ icr = E1000_READ_REG(hw, E1000_ICR); @@ -5583,13 +5606,17 @@ eth_igb_configure_msix_intr(struct rte_eth_dev *dev) E1000_GPIE_NSICR); intr_mask = RTE_LEN2MASK(intr_handle->nb_efd, uint32_t) << misc_shift; + + if (dev->data->dev_conf.intr_conf.lsc != 0) + intr_mask |= (1 << IGB_MSIX_OTHER_INTR_VEC); + regval = E1000_READ_REG(hw, E1000_EIAC); E1000_WRITE_REG(hw, E1000_EIAC, regval | intr_mask); /* enable msix_other interrupt */ regval = E1000_READ_REG(hw, E1000_EIMS); E1000_WRITE_REG(hw, E1000_EIMS, regval | intr_mask); - tmpval = (dev->data->nb_rx_queues | E1000_IVAR_VALID) << 8; + tmpval = (IGB_MSIX_OTHER_INTR_VEC | E1000_IVAR_VALID) << 8; E1000_WRITE_REG(hw, E1000_IVAR_MISC, tmpval); } @@ -5598,6 +5625,10 @@ eth_igb_configure_msix_intr(struct rte_eth_dev *dev) */ intr_mask = RTE_LEN2MASK(intr_handle->nb_efd, uint32_t) << misc_shift; + + if (dev->data->dev_conf.intr_conf.lsc != 0) + intr_mask |= (1 << IGB_MSIX_OTHER_INTR_VEC); + regval = E1000_READ_REG(hw, E1000_EIAM); E1000_WRITE_REG(hw, E1000_EIAM, regval | intr_mask); diff --git a/dpdk/drivers/net/ena/ena_ethdev.c b/dpdk/drivers/net/ena/ena_ethdev.c index 91fb4e4e2..6f424337e 100644 --- a/dpdk/drivers/net/ena/ena_ethdev.c +++ b/dpdk/drivers/net/ena/ena_ethdev.c @@ -189,6 +189,8 @@ static const struct ena_stats ena_stats_ena_com_strings[] = { #define ENA_TX_OFFLOAD_MASK (\ PKT_TX_L4_MASK | \ + PKT_TX_IPV6 | \ + PKT_TX_IPV4 | \ PKT_TX_IP_CKSUM | \ PKT_TX_TCP_SEG) @@ -240,10 +242,12 @@ static void ena_tx_queue_release_bufs(struct ena_ring *ring); static int ena_link_update(struct rte_eth_dev *dev, int wait_to_complete); static int ena_create_io_queue(struct ena_ring *ring); -static void ena_free_io_queues_all(struct ena_adapter *adapter); -static int ena_queue_restart(struct ena_ring *ring); -static int ena_queue_restart_all(struct rte_eth_dev *dev, - enum ena_ring_type ring_type); +static void ena_queue_stop(struct ena_ring *ring); +static void ena_queue_stop_all(struct rte_eth_dev *dev, + enum ena_ring_type ring_type); +static int ena_queue_start(struct ena_ring *ring); +static int ena_queue_start_all(struct rte_eth_dev *dev, + enum ena_ring_type ring_type); static void ena_stats_restart(struct rte_eth_dev *dev); static void ena_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info); @@ -256,6 +260,8 @@ static int ena_rss_reta_query(struct rte_eth_dev *dev, static int ena_get_sset_count(struct rte_eth_dev *dev, int sset); static void ena_interrupt_handler_rte(void *cb_arg); static void ena_timer_wd_callback(struct rte_timer *timer, void *arg); +static void ena_destroy_device(struct rte_eth_dev *eth_dev); +static int eth_ena_dev_init(struct rte_eth_dev *eth_dev); static const struct eth_dev_ops ena_dev_ops = { .dev_configure = ena_dev_configure, @@ -539,64 +545,14 @@ static void ena_close(struct rte_eth_dev *dev) static int ena_dev_reset(struct rte_eth_dev *dev) { - struct rte_mempool *mb_pool_rx[ENA_MAX_NUM_QUEUES]; - struct rte_eth_dev *eth_dev; - struct rte_pci_device *pci_dev; - struct rte_intr_handle *intr_handle; - struct ena_com_dev *ena_dev; - struct ena_com_dev_get_features_ctx get_feat_ctx; - struct ena_adapter *adapter; - int nb_queues; - int rc, i; - bool wd_state; + int rc = 0; - adapter = (struct ena_adapter *)(dev->data->dev_private); - ena_dev = &adapter->ena_dev; - eth_dev = adapter->rte_dev; - pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev); - intr_handle = &pci_dev->intr_handle; - nb_queues = eth_dev->data->nb_rx_queues; - - ena_com_set_admin_running_state(ena_dev, false); - - rc = ena_com_dev_reset(ena_dev, adapter->reset_reason); + ena_destroy_device(dev); + rc = eth_ena_dev_init(dev); if (rc) - RTE_LOG(ERR, PMD, "Device reset failed\n"); - - for (i = 0; i < nb_queues; i++) - mb_pool_rx[i] = adapter->rx_ring[i].mb_pool; - - ena_rx_queue_release_all(eth_dev); - ena_tx_queue_release_all(eth_dev); - - rte_intr_disable(intr_handle); - - ena_com_abort_admin_commands(ena_dev); - ena_com_wait_for_abort_completion(ena_dev); - ena_com_admin_destroy(ena_dev); - ena_com_mmio_reg_read_request_destroy(ena_dev); - - rc = ena_device_init(ena_dev, &get_feat_ctx, &wd_state); - if (rc) { PMD_INIT_LOG(CRIT, "Cannot initialize device\n"); - return rc; - } - adapter->wd_state = wd_state; - rte_intr_enable(intr_handle); - ena_com_set_admin_polling_mode(ena_dev, false); - ena_com_admin_aenq_enable(ena_dev); - - for (i = 0; i < nb_queues; ++i) - ena_rx_queue_setup(eth_dev, i, adapter->rx_ring_size, 0, NULL, - mb_pool_rx[i]); - - for (i = 0; i < nb_queues; ++i) - ena_tx_queue_setup(eth_dev, i, adapter->tx_ring_size, 0, NULL); - - adapter->trigger_reset = false; - - return 0; + return rc; } static int ena_rss_reta_update(struct rte_eth_dev *dev, @@ -766,11 +722,6 @@ static void ena_rx_queue_release(void *queue) { struct ena_ring *ring = (struct ena_ring *)queue; - ena_assert_msg(ring->configured, - "API violation - releasing not configured queue"); - ena_assert_msg(ring->adapter->state != ENA_ADAPTER_STATE_RUNNING, - "API violation"); - /* Free ring resources */ if (ring->rx_buffer_info) rte_free(ring->rx_buffer_info); @@ -794,14 +745,6 @@ static void ena_tx_queue_release(void *queue) { struct ena_ring *ring = (struct ena_ring *)queue; - ena_assert_msg(ring->configured, - "API violation. Releasing not configured queue"); - ena_assert_msg(ring->adapter->state != ENA_ADAPTER_STATE_RUNNING, - "API violation"); - - /* Free all bufs */ - ena_tx_queue_release_bufs(ring); - /* Free ring resources */ if (ring->tx_buffer_info) rte_free(ring->tx_buffer_info); @@ -820,17 +763,13 @@ static void ena_tx_queue_release(void *queue) static void ena_rx_queue_release_bufs(struct ena_ring *ring) { - unsigned int ring_mask = ring->ring_size - 1; + unsigned int i; - while (ring->next_to_clean != ring->next_to_use) { - struct rte_mbuf *m = - ring->rx_buffer_info[ring->next_to_clean & ring_mask]; - - if (m) - rte_mbuf_raw_free(m); - - ring->next_to_clean++; - } + for (i = 0; i < ring->ring_size; ++i) + if (ring->rx_buffer_info[i]) { + rte_mbuf_raw_free(ring->rx_buffer_info[i]); + ring->rx_buffer_info[i] = NULL; + } } static void ena_tx_queue_release_bufs(struct ena_ring *ring) @@ -842,8 +781,6 @@ static void ena_tx_queue_release_bufs(struct ena_ring *ring) if (tx_buf->mbuf) rte_pktmbuf_free(tx_buf->mbuf); - - ring->next_to_clean++; } } @@ -862,8 +799,8 @@ static int ena_link_update(struct rte_eth_dev *dev, return 0; } -static int ena_queue_restart_all(struct rte_eth_dev *dev, - enum ena_ring_type ring_type) +static int ena_queue_start_all(struct rte_eth_dev *dev, + enum ena_ring_type ring_type) { struct ena_adapter *adapter = (struct ena_adapter *)(dev->data->dev_private); @@ -891,18 +828,25 @@ static int ena_queue_restart_all(struct rte_eth_dev *dev, "Inconsistent state of tx queues\n"); } - rc = ena_queue_restart(&queues[i]); + rc = ena_queue_start(&queues[i]); if (rc) { PMD_INIT_LOG(ERR, - "failed to restart queue %d type(%d)", + "failed to start queue %d type(%d)", i, ring_type); - return rc; + goto err; } } } return 0; + +err: + while (i--) + if (queues[i].configured) + ena_queue_stop(&queues[i]); + + return rc; } static uint32_t ena_get_mtu_conf(struct ena_adapter *adapter) @@ -1051,19 +995,19 @@ static int ena_start(struct rte_eth_dev *dev) if (rc) return rc; - rc = ena_queue_restart_all(dev, ENA_RING_TYPE_RX); + rc = ena_queue_start_all(dev, ENA_RING_TYPE_RX); if (rc) return rc; - rc = ena_queue_restart_all(dev, ENA_RING_TYPE_TX); + rc = ena_queue_start_all(dev, ENA_RING_TYPE_TX); if (rc) - return rc; + goto err_start_tx; if (adapter->rte_dev->data->dev_conf.rxmode.mq_mode & ETH_MQ_RX_RSS_FLAG && adapter->rte_dev->data->nb_rx_queues > 0) { rc = ena_rss_init_default(adapter); if (rc) - return rc; + goto err_rss_init; } ena_stats_restart(dev); @@ -1078,15 +1022,30 @@ static int ena_start(struct rte_eth_dev *dev) adapter->state = ENA_ADAPTER_STATE_RUNNING; return 0; + +err_rss_init: + ena_queue_stop_all(dev, ENA_RING_TYPE_TX); +err_start_tx: + ena_queue_stop_all(dev, ENA_RING_TYPE_RX); + return rc; } static void ena_stop(struct rte_eth_dev *dev) { struct ena_adapter *adapter = (struct ena_adapter *)(dev->data->dev_private); + struct ena_com_dev *ena_dev = &adapter->ena_dev; + int rc; rte_timer_stop_sync(&adapter->timer_wd); - ena_free_io_queues_all(adapter); + ena_queue_stop_all(dev, ENA_RING_TYPE_TX); + ena_queue_stop_all(dev, ENA_RING_TYPE_RX); + + if (adapter->trigger_reset) { + rc = ena_com_dev_reset(ena_dev, adapter->reset_reason); + if (rc) + RTE_LOG(ERR, PMD, "Device reset failed rc=%d\n", rc); + } adapter->state = ENA_ADAPTER_STATE_STOPPED; } @@ -1149,36 +1108,46 @@ static int ena_create_io_queue(struct ena_ring *ring) return 0; } -static void ena_free_io_queues_all(struct ena_adapter *adapter) +static void ena_queue_stop(struct ena_ring *ring) { - struct rte_eth_dev *eth_dev = adapter->rte_dev; - struct ena_com_dev *ena_dev = &adapter->ena_dev; - int i; - uint16_t ena_qid; - uint16_t nb_rxq = eth_dev->data->nb_rx_queues; - uint16_t nb_txq = eth_dev->data->nb_tx_queues; + struct ena_com_dev *ena_dev = &ring->adapter->ena_dev; - for (i = 0; i < nb_txq; ++i) { - ena_qid = ENA_IO_TXQ_IDX(i); - ena_com_destroy_io_queue(ena_dev, ena_qid); - - ena_tx_queue_release_bufs(&adapter->tx_ring[i]); - } - - for (i = 0; i < nb_rxq; ++i) { - ena_qid = ENA_IO_RXQ_IDX(i); - ena_com_destroy_io_queue(ena_dev, ena_qid); - - ena_rx_queue_release_bufs(&adapter->rx_ring[i]); + if (ring->type == ENA_RING_TYPE_RX) { + ena_com_destroy_io_queue(ena_dev, ENA_IO_RXQ_IDX(ring->id)); + ena_rx_queue_release_bufs(ring); + } else { + ena_com_destroy_io_queue(ena_dev, ENA_IO_TXQ_IDX(ring->id)); + ena_tx_queue_release_bufs(ring); } } -static int ena_queue_restart(struct ena_ring *ring) +static void ena_queue_stop_all(struct rte_eth_dev *dev, + enum ena_ring_type ring_type) +{ + struct ena_adapter *adapter = + (struct ena_adapter *)(dev->data->dev_private); + struct ena_ring *queues = NULL; + uint16_t nb_queues, i; + + if (ring_type == ENA_RING_TYPE_RX) { + queues = adapter->rx_ring; + nb_queues = dev->data->nb_rx_queues; + } else { + queues = adapter->tx_ring; + nb_queues = dev->data->nb_tx_queues; + } + + for (i = 0; i < nb_queues; ++i) + if (queues[i].configured) + ena_queue_stop(&queues[i]); +} + +static int ena_queue_start(struct ena_ring *ring) { int rc, bufs_num; ena_assert_msg(ring->configured == 1, - "Trying to restart unconfigured queue\n"); + "Trying to start unconfigured queue\n"); rc = ena_create_io_queue(ring); if (rc) { @@ -1195,6 +1164,8 @@ static int ena_queue_restart(struct ena_ring *ring) bufs_num = ring->ring_size - 1; rc = ena_populate_rx_queue(ring, bufs_num); if (rc != bufs_num) { + ena_com_destroy_io_queue(&ring->adapter->ena_dev, + ENA_IO_RXQ_IDX(ring->id)); PMD_INIT_LOG(ERR, "Failed to populate rx ring !"); return ENA_COM_FAULT; } @@ -1346,7 +1317,7 @@ static int ena_rx_queue_setup(struct rte_eth_dev *dev, } for (i = 0; i < nb_desc; i++) - rxq->empty_tx_reqs[i] = i; + rxq->empty_rx_reqs[i] = i; /* Store pointer to this queue in upper layer */ rxq->configured = 1; @@ -1603,20 +1574,20 @@ static int eth_ena_dev_init(struct rte_eth_dev *eth_dev) static int adapters_found; bool wd_state; - // Temporary modification for multi process - //memset(adapter, 0, sizeof(struct ena_adapter)); - ena_dev = &adapter->ena_dev; - eth_dev->dev_ops = &ena_dev_ops; eth_dev->rx_pkt_burst = ð_ena_recv_pkts; eth_dev->tx_pkt_burst = ð_ena_xmit_pkts; eth_dev->tx_pkt_prepare = ð_ena_prep_pkts; - adapter->rte_eth_dev_data = eth_dev->data; - adapter->rte_dev = eth_dev; if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; + memset(adapter, 0, sizeof(struct ena_adapter)); + ena_dev = &adapter->ena_dev; + + adapter->rte_eth_dev_data = eth_dev->data; + adapter->rte_dev = eth_dev; + pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev); adapter->pdev = pci_dev; @@ -1727,24 +1698,43 @@ err: return rc; } -static int eth_ena_dev_uninit(struct rte_eth_dev *eth_dev) +static void ena_destroy_device(struct rte_eth_dev *eth_dev) { struct ena_adapter *adapter = (struct ena_adapter *)(eth_dev->data->dev_private); + struct ena_com_dev *ena_dev = &adapter->ena_dev; - if (rte_eal_process_type() != RTE_PROC_PRIMARY) - return 0; + if (adapter->state == ENA_ADAPTER_STATE_FREE) + return; + + ena_com_set_admin_running_state(ena_dev, false); if (adapter->state != ENA_ADAPTER_STATE_CLOSED) ena_close(eth_dev); + ena_com_delete_debug_area(ena_dev); + ena_com_delete_host_info(ena_dev); + + ena_com_abort_admin_commands(ena_dev); + ena_com_wait_for_abort_completion(ena_dev); + ena_com_admin_destroy(ena_dev); + ena_com_mmio_reg_read_request_destroy(ena_dev); + + adapter->state = ENA_ADAPTER_STATE_FREE; +} + +static int eth_ena_dev_uninit(struct rte_eth_dev *eth_dev) +{ + if (rte_eal_process_type() != RTE_PROC_PRIMARY) + return 0; + + ena_destroy_device(eth_dev); + eth_dev->dev_ops = NULL; eth_dev->rx_pkt_burst = NULL; eth_dev->tx_pkt_burst = NULL; eth_dev->tx_pkt_prepare = NULL; - adapter->state = ENA_ADAPTER_STATE_FREE; - return 0; } @@ -1844,6 +1834,9 @@ static void ena_infos_get(struct rte_eth_dev *dev, dev_info->tx_offload_capa = tx_feat; dev_info->tx_queue_offload_capa = tx_feat; + dev_info->flow_type_rss_offloads = ETH_RSS_IP | ETH_RSS_TCP | + ETH_RSS_UDP; + dev_info->min_rx_bufsize = ENA_MIN_FRAME_LEN; dev_info->max_rx_pktlen = adapter->max_mtu; dev_info->max_mac_addrs = 1; @@ -1908,6 +1901,8 @@ static uint16_t eth_ena_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, &ena_rx_ctx); if (unlikely(rc)) { RTE_LOG(ERR, PMD, "ena_com_rx_pkt error %d\n", rc); + rx_ring->adapter->reset_reason = + ENA_REGS_RESET_TOO_MANY_RX_DESCS; rx_ring->adapter->trigger_reset = true; return 0; } @@ -1918,10 +1913,14 @@ static uint16_t eth_ena_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, while (segments < ena_rx_ctx.descs) { req_id = ena_rx_ctx.ena_bufs[segments].req_id; rc = validate_rx_req_id(rx_ring, req_id); - if (unlikely(rc)) + if (unlikely(rc)) { + if (segments != 0) + rte_mbuf_raw_free(mbuf_head); break; + } mbuf = rx_buff_info[req_id]; + rx_buff_info[req_id] = NULL; mbuf->data_len = ena_rx_ctx.ena_bufs[segments].len; mbuf->data_off = RTE_PKTMBUF_HEADROOM; mbuf->refcnt = 1; @@ -1943,6 +1942,8 @@ static uint16_t eth_ena_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, segments++; next_to_clean++; } + if (unlikely(rc)) + break; /* fill mbuf attributes if any */ ena_rx_mbuf_prepare(mbuf_head, &ena_rx_ctx); @@ -1957,8 +1958,10 @@ static uint16_t eth_ena_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, desc_in_use = desc_in_use - completed + 1; /* Burst refill to save doorbells, memory barriers, const interval */ - if (ring_size - desc_in_use > ENA_RING_DESCS_RATIO(ring_size)) + if (ring_size - desc_in_use > ENA_RING_DESCS_RATIO(ring_size)) { + ena_com_update_dev_comp_head(rx_ring->ena_com_io_cq); ena_populate_rx_queue(rx_ring, ring_size - desc_in_use); + } return recv_idx; } @@ -2005,14 +2008,14 @@ eth_ena_prep_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, if ((ol_flags & ENA_TX_OFFLOAD_NOTSUP_MASK) != 0 || (ol_flags & PKT_TX_L4_MASK) == PKT_TX_SCTP_CKSUM) { - rte_errno = -ENOTSUP; + rte_errno = ENOTSUP; return i; } #ifdef RTE_LIBRTE_ETHDEV_DEBUG ret = rte_validate_tx_offload(m); if (ret != 0) { - rte_errno = ret; + rte_errno = -ret; return i; } #endif @@ -2025,7 +2028,7 @@ eth_ena_prep_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, ret = rte_net_intel_cksum_flags_prepare(m, ol_flags & ~PKT_TX_TCP_SEG); if (ret != 0) { - rte_errno = ret; + rte_errno = -ret; return i; } } @@ -2208,8 +2211,9 @@ static uint16_t eth_ena_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, if (total_tx_descs > 0) { /* acknowledge completion of sent packets */ - ena_com_comp_ack(tx_ring->ena_com_io_sq, total_tx_descs); tx_ring->next_to_clean = next_to_clean; + ena_com_comp_ack(tx_ring->ena_com_io_sq, total_tx_descs); + ena_com_update_dev_comp_head(tx_ring->ena_com_io_cq); } return sent_idx; diff --git a/dpdk/drivers/net/enetc/enetc_ethdev.c b/dpdk/drivers/net/enetc/enetc_ethdev.c index 023fe7517..a21205af0 100644 --- a/dpdk/drivers/net/enetc/enetc_ethdev.c +++ b/dpdk/drivers/net/enetc/enetc_ethdev.c @@ -490,15 +490,15 @@ enetc_setup_rxbdr(struct enetc_hw *hw, struct enetc_bdr *rx_ring, ENETC_RTBLENR_LEN(rx_ring->bd_count)); rx_ring->mb_pool = mb_pool; - /* enable ring */ - enetc_rxbdr_wr(hw, idx, ENETC_RBMR, ENETC_RBMR_EN); - enetc_rxbdr_wr(hw, idx, ENETC_RBPIR, 0); rx_ring->rcir = (void *)((size_t)hw->reg + ENETC_BDR(RX, idx, ENETC_RBCIR)); enetc_refill_rx_ring(rx_ring, (enetc_bd_unused(rx_ring))); buf_size = (uint16_t)(rte_pktmbuf_data_room_size(rx_ring->mb_pool) - RTE_PKTMBUF_HEADROOM); enetc_rxbdr_wr(hw, idx, ENETC_RBBSR, buf_size); + /* enable ring */ + enetc_rxbdr_wr(hw, idx, ENETC_RBMR, ENETC_RBMR_EN); + enetc_rxbdr_wr(hw, idx, ENETC_RBPIR, 0); } static int diff --git a/dpdk/drivers/net/enetc/enetc_rxtx.c b/dpdk/drivers/net/enetc/enetc_rxtx.c index 631e2430d..ce5a542a7 100644 --- a/dpdk/drivers/net/enetc/enetc_rxtx.c +++ b/dpdk/drivers/net/enetc/enetc_rxtx.c @@ -49,11 +49,16 @@ enetc_xmit_pkts(void *tx_queue, uint16_t nb_pkts) { struct enetc_swbd *tx_swbd; - int i, start; + int i, start, bds_to_use; struct enetc_tx_bd *txbd; struct enetc_bdr *tx_ring = (struct enetc_bdr *)tx_queue; i = tx_ring->next_to_use; + + bds_to_use = enetc_bd_unused(tx_ring); + if (bds_to_use < nb_pkts) + nb_pkts = bds_to_use; + start = 0; while (nb_pkts--) { enetc_clean_tx_ring(tx_ring); @@ -88,8 +93,9 @@ enetc_refill_rx_ring(struct enetc_bdr *rx_ring, const int buff_cnt) rx_swbd = &rx_ring->q_swbd[i]; rxbd = ENETC_RXBD(*rx_ring, i); for (j = 0; j < buff_cnt; j++) { - rx_swbd->buffer_addr = - rte_cpu_to_le_64(rte_mbuf_raw_alloc(rx_ring->mb_pool)); + rx_swbd->buffer_addr = (void *)(uintptr_t) + rte_cpu_to_le_64((uint64_t)(uintptr_t) + rte_pktmbuf_alloc(rx_ring->mb_pool)); rxbd->w.addr = (uint64_t)(uintptr_t) rx_swbd->buffer_addr->buf_addr + rx_swbd->buffer_addr->data_off; diff --git a/dpdk/drivers/net/enic/enic.h b/dpdk/drivers/net/enic/enic.h index 7bca3cad2..377f607f7 100644 --- a/dpdk/drivers/net/enic/enic.h +++ b/dpdk/drivers/net/enic/enic.h @@ -78,8 +78,8 @@ struct enic_fdir { u32 modes; u32 types_mask; void (*copy_fltr_fn)(struct filter_v2 *filt, - struct rte_eth_fdir_input *input, - struct rte_eth_fdir_masks *masks); + const struct rte_eth_fdir_input *input, + const struct rte_eth_fdir_masks *masks); }; struct enic_soft_stats { @@ -201,8 +201,8 @@ struct enic { /* Compute ethdev's max packet size from MTU */ static inline uint32_t enic_mtu_to_max_rx_pktlen(uint32_t mtu) { - /* ethdev max size includes eth and crc whereas NIC MTU does not */ - return mtu + ETHER_HDR_LEN + ETHER_CRC_LEN; + /* ethdev max size includes eth whereas NIC MTU does not */ + return mtu + ETHER_HDR_LEN; } /* Get the CQ index from a Start of Packet(SOP) RQ index */ @@ -340,9 +340,5 @@ int enic_link_update(struct enic *enic); bool enic_use_vector_rx_handler(struct enic *enic); void enic_fdir_info(struct enic *enic); void enic_fdir_info_get(struct enic *enic, struct rte_eth_fdir_info *stats); -void copy_fltr_v1(struct filter_v2 *fltr, struct rte_eth_fdir_input *input, - struct rte_eth_fdir_masks *masks); -void copy_fltr_v2(struct filter_v2 *fltr, struct rte_eth_fdir_input *input, - struct rte_eth_fdir_masks *masks); extern const struct rte_flow_ops enic_flow_ops; #endif /* _ENIC_H_ */ diff --git a/dpdk/drivers/net/enic/enic_clsf.c b/dpdk/drivers/net/enic/enic_clsf.c index 9d95201ec..48c8e6264 100644 --- a/dpdk/drivers/net/enic/enic_clsf.c +++ b/dpdk/drivers/net/enic/enic_clsf.c @@ -3,8 +3,6 @@ * Copyright 2007 Nuova Systems, Inc. All rights reserved. */ -#include - #include #include #include @@ -38,6 +36,13 @@ #define ENICPMD_CLSF_HASH_ENTRIES ENICPMD_FDIR_MAX +static void copy_fltr_v1(struct filter_v2 *fltr, + const struct rte_eth_fdir_input *input, + const struct rte_eth_fdir_masks *masks); +static void copy_fltr_v2(struct filter_v2 *fltr, + const struct rte_eth_fdir_input *input, + const struct rte_eth_fdir_masks *masks); + void enic_fdir_stats_get(struct enic *enic, struct rte_eth_fdir_stats *stats) { *stats = enic->fdir.stats; @@ -81,9 +86,9 @@ enic_set_layer(struct filter_generic_1 *gp, unsigned int flag, /* Copy Flow Director filter to a VIC ipv4 filter (for Cisco VICs * without advanced filter support. */ -void -copy_fltr_v1(struct filter_v2 *fltr, struct rte_eth_fdir_input *input, - __rte_unused struct rte_eth_fdir_masks *masks) +static void +copy_fltr_v1(struct filter_v2 *fltr, const struct rte_eth_fdir_input *input, + __rte_unused const struct rte_eth_fdir_masks *masks) { fltr->type = FILTER_IPV4_5TUPLE; fltr->u.ipv4.src_addr = rte_be_to_cpu_32( @@ -106,9 +111,9 @@ copy_fltr_v1(struct filter_v2 *fltr, struct rte_eth_fdir_input *input, /* Copy Flow Director filter to a VIC generic filter (requires advanced * filter support. */ -void -copy_fltr_v2(struct filter_v2 *fltr, struct rte_eth_fdir_input *input, - struct rte_eth_fdir_masks *masks) +static void +copy_fltr_v2(struct filter_v2 *fltr, const struct rte_eth_fdir_input *input, + const struct rte_eth_fdir_masks *masks) { struct filter_generic_1 *gp = &fltr->u.generic_1; @@ -165,9 +170,11 @@ copy_fltr_v2(struct filter_v2 *fltr, struct rte_eth_fdir_input *input, sctp_val.tag = input->flow.sctp4_flow.verify_tag; } - /* v4 proto should be 132, override ip4_flow.proto */ - input->flow.ip4_flow.proto = 132; - + /* + * Unlike UDP/TCP (FILTER_GENERIC_1_{UDP,TCP}), the firmware + * has no "packet is SCTP" flag. Use flag=0 (generic L4) and + * manually set proto_id=sctp below. + */ enic_set_layer(gp, 0, FILTER_GENERIC_1_L4, &sctp_mask, &sctp_val, sizeof(struct sctp_hdr)); } @@ -191,6 +198,10 @@ copy_fltr_v2(struct filter_v2 *fltr, struct rte_eth_fdir_input *input, if (input->flow.ip4_flow.proto) { ip4_mask.next_proto_id = masks->ipv4_mask.proto; ip4_val.next_proto_id = input->flow.ip4_flow.proto; + } else if (input->flow_type == RTE_ETH_FLOW_NONFRAG_IPV4_SCTP) { + /* Explicitly match the SCTP protocol number */ + ip4_mask.next_proto_id = 0xff; + ip4_val.next_proto_id = IPPROTO_SCTP; } if (input->flow.ip4_flow.src_ip) { ip4_mask.src_addr = masks->ipv4_mask.src_ip; @@ -253,9 +264,6 @@ copy_fltr_v2(struct filter_v2 *fltr, struct rte_eth_fdir_input *input, sctp_val.tag = input->flow.sctp6_flow.verify_tag; } - /* v4 proto should be 132, override ipv6_flow.proto */ - input->flow.ipv6_flow.proto = 132; - enic_set_layer(gp, 0, FILTER_GENERIC_1_L4, &sctp_mask, &sctp_val, sizeof(struct sctp_hdr)); } @@ -271,6 +279,10 @@ copy_fltr_v2(struct filter_v2 *fltr, struct rte_eth_fdir_input *input, if (input->flow.ipv6_flow.proto) { ipv6_mask.proto = masks->ipv6_mask.proto; ipv6_val.proto = input->flow.ipv6_flow.proto; + } else if (input->flow_type == RTE_ETH_FLOW_NONFRAG_IPV6_SCTP) { + /* See comments for IPv4 SCTP above. */ + ipv6_mask.proto = 0xff; + ipv6_val.proto = IPPROTO_SCTP; } memcpy(ipv6_mask.src_addr, masks->ipv6_mask.src_ip, sizeof(ipv6_mask.src_addr)); diff --git a/dpdk/drivers/net/enic/enic_flow.c b/dpdk/drivers/net/enic/enic_flow.c index bb9ed037a..dbc8de839 100644 --- a/dpdk/drivers/net/enic/enic_flow.c +++ b/dpdk/drivers/net/enic/enic_flow.c @@ -23,33 +23,54 @@ rte_log(RTE_LOG_ ## level, enicpmd_logtype_flow, \ fmt "\n", ##args) +/* + * Common arguments passed to copy_item functions. Use this structure + * so we can easily add new arguments. + * item: Item specification. + * filter: Partially filled in NIC filter structure. + * inner_ofst: If zero, this is an outer header. If non-zero, this is + * the offset into L5 where the header begins. + * l2_proto_off: offset to EtherType eth or vlan header. + * l3_proto_off: offset to next protocol field in IPv4 or 6 header. + */ +struct copy_item_args { + const struct rte_flow_item *item; + struct filter_v2 *filter; + uint8_t *inner_ofst; + uint8_t l2_proto_off; + uint8_t l3_proto_off; + struct enic *enic; +}; + +/* functions for copying items into enic filters */ +typedef int (enic_copy_item_fn)(struct copy_item_args *arg); + /** Info about how to copy items into enic filters. */ struct enic_items { /** Function for copying and validating an item. */ - int (*copy_item)(const struct rte_flow_item *item, - struct filter_v2 *enic_filter, u8 *inner_ofst); + enic_copy_item_fn *copy_item; /** List of valid previous items. */ const enum rte_flow_item_type * const prev_items; /** True if it's OK for this item to be the first item. For some NIC * versions, it's invalid to start the stack above layer 3. */ const u8 valid_start_item; + /* Inner packet version of copy_item. */ + enic_copy_item_fn *inner_copy_item; }; /** Filtering capabilities for various NIC and firmware versions. */ struct enic_filter_cap { /** list of valid items and their handlers and attributes. */ const struct enic_items *item_info; + /* Max type in the above list, used to detect unsupported types */ + enum rte_flow_item_type max_item_type; }; /* functions for copying flow actions into enic actions */ typedef int (copy_action_fn)(const struct rte_flow_action actions[], struct filter_action_v2 *enic_action); -/* functions for copying items into enic filters */ -typedef int(enic_copy_item_fn)(const struct rte_flow_item *item, - struct filter_v2 *enic_filter, u8 *inner_ofst); - /** Action capabilities for various NICs. */ struct enic_action_cap { /** list of valid actions */ @@ -70,8 +91,13 @@ static enic_copy_item_fn enic_copy_item_ipv6_v2; static enic_copy_item_fn enic_copy_item_udp_v2; static enic_copy_item_fn enic_copy_item_tcp_v2; static enic_copy_item_fn enic_copy_item_sctp_v2; -static enic_copy_item_fn enic_copy_item_sctp_v2; static enic_copy_item_fn enic_copy_item_vxlan_v2; +static enic_copy_item_fn enic_copy_item_inner_eth_v2; +static enic_copy_item_fn enic_copy_item_inner_vlan_v2; +static enic_copy_item_fn enic_copy_item_inner_ipv4_v2; +static enic_copy_item_fn enic_copy_item_inner_ipv6_v2; +static enic_copy_item_fn enic_copy_item_inner_udp_v2; +static enic_copy_item_fn enic_copy_item_inner_tcp_v2; static copy_action_fn enic_copy_action_v1; static copy_action_fn enic_copy_action_v2; @@ -86,6 +112,7 @@ static const struct enic_items enic_items_v1[] = { .prev_items = (const enum rte_flow_item_type[]) { RTE_FLOW_ITEM_TYPE_END, }, + .inner_copy_item = NULL, }, [RTE_FLOW_ITEM_TYPE_UDP] = { .copy_item = enic_copy_item_udp_v1, @@ -94,6 +121,7 @@ static const struct enic_items enic_items_v1[] = { RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_END, }, + .inner_copy_item = NULL, }, [RTE_FLOW_ITEM_TYPE_TCP] = { .copy_item = enic_copy_item_tcp_v1, @@ -102,6 +130,7 @@ static const struct enic_items enic_items_v1[] = { RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_END, }, + .inner_copy_item = NULL, }, }; @@ -117,6 +146,7 @@ static const struct enic_items enic_items_v2[] = { RTE_FLOW_ITEM_TYPE_VXLAN, RTE_FLOW_ITEM_TYPE_END, }, + .inner_copy_item = enic_copy_item_inner_eth_v2, }, [RTE_FLOW_ITEM_TYPE_VLAN] = { .copy_item = enic_copy_item_vlan_v2, @@ -125,6 +155,7 @@ static const struct enic_items enic_items_v2[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_END, }, + .inner_copy_item = enic_copy_item_inner_vlan_v2, }, [RTE_FLOW_ITEM_TYPE_IPV4] = { .copy_item = enic_copy_item_ipv4_v2, @@ -134,6 +165,7 @@ static const struct enic_items enic_items_v2[] = { RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_END, }, + .inner_copy_item = enic_copy_item_inner_ipv4_v2, }, [RTE_FLOW_ITEM_TYPE_IPV6] = { .copy_item = enic_copy_item_ipv6_v2, @@ -143,6 +175,7 @@ static const struct enic_items enic_items_v2[] = { RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_END, }, + .inner_copy_item = enic_copy_item_inner_ipv6_v2, }, [RTE_FLOW_ITEM_TYPE_UDP] = { .copy_item = enic_copy_item_udp_v2, @@ -152,6 +185,7 @@ static const struct enic_items enic_items_v2[] = { RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_END, }, + .inner_copy_item = enic_copy_item_inner_udp_v2, }, [RTE_FLOW_ITEM_TYPE_TCP] = { .copy_item = enic_copy_item_tcp_v2, @@ -161,6 +195,7 @@ static const struct enic_items enic_items_v2[] = { RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_END, }, + .inner_copy_item = enic_copy_item_inner_tcp_v2, }, [RTE_FLOW_ITEM_TYPE_SCTP] = { .copy_item = enic_copy_item_sctp_v2, @@ -170,6 +205,7 @@ static const struct enic_items enic_items_v2[] = { RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_END, }, + .inner_copy_item = NULL, }, [RTE_FLOW_ITEM_TYPE_VXLAN] = { .copy_item = enic_copy_item_vxlan_v2, @@ -178,6 +214,7 @@ static const struct enic_items enic_items_v2[] = { RTE_FLOW_ITEM_TYPE_UDP, RTE_FLOW_ITEM_TYPE_END, }, + .inner_copy_item = NULL, }, }; @@ -190,6 +227,7 @@ static const struct enic_items enic_items_v3[] = { RTE_FLOW_ITEM_TYPE_VXLAN, RTE_FLOW_ITEM_TYPE_END, }, + .inner_copy_item = enic_copy_item_inner_eth_v2, }, [RTE_FLOW_ITEM_TYPE_VLAN] = { .copy_item = enic_copy_item_vlan_v2, @@ -198,6 +236,7 @@ static const struct enic_items enic_items_v3[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_END, }, + .inner_copy_item = enic_copy_item_inner_vlan_v2, }, [RTE_FLOW_ITEM_TYPE_IPV4] = { .copy_item = enic_copy_item_ipv4_v2, @@ -207,6 +246,7 @@ static const struct enic_items enic_items_v3[] = { RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_END, }, + .inner_copy_item = enic_copy_item_inner_ipv4_v2, }, [RTE_FLOW_ITEM_TYPE_IPV6] = { .copy_item = enic_copy_item_ipv6_v2, @@ -216,6 +256,7 @@ static const struct enic_items enic_items_v3[] = { RTE_FLOW_ITEM_TYPE_VLAN, RTE_FLOW_ITEM_TYPE_END, }, + .inner_copy_item = enic_copy_item_inner_ipv6_v2, }, [RTE_FLOW_ITEM_TYPE_UDP] = { .copy_item = enic_copy_item_udp_v2, @@ -225,6 +266,7 @@ static const struct enic_items enic_items_v3[] = { RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_END, }, + .inner_copy_item = enic_copy_item_inner_udp_v2, }, [RTE_FLOW_ITEM_TYPE_TCP] = { .copy_item = enic_copy_item_tcp_v2, @@ -234,15 +276,17 @@ static const struct enic_items enic_items_v3[] = { RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_END, }, + .inner_copy_item = enic_copy_item_inner_tcp_v2, }, [RTE_FLOW_ITEM_TYPE_SCTP] = { .copy_item = enic_copy_item_sctp_v2, - .valid_start_item = 1, + .valid_start_item = 0, .prev_items = (const enum rte_flow_item_type[]) { RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_IPV6, RTE_FLOW_ITEM_TYPE_END, }, + .inner_copy_item = NULL, }, [RTE_FLOW_ITEM_TYPE_VXLAN] = { .copy_item = enic_copy_item_vxlan_v2, @@ -251,6 +295,7 @@ static const struct enic_items enic_items_v3[] = { RTE_FLOW_ITEM_TYPE_UDP, RTE_FLOW_ITEM_TYPE_END, }, + .inner_copy_item = NULL, }, }; @@ -258,12 +303,15 @@ static const struct enic_items enic_items_v3[] = { static const struct enic_filter_cap enic_filter_cap[] = { [FILTER_IPV4_5TUPLE] = { .item_info = enic_items_v1, + .max_item_type = RTE_FLOW_ITEM_TYPE_TCP, }, [FILTER_USNIC_IP] = { .item_info = enic_items_v2, + .max_item_type = RTE_FLOW_ITEM_TYPE_VXLAN, }, [FILTER_DPDK_1] = { .item_info = enic_items_v3, + .max_item_type = RTE_FLOW_ITEM_TYPE_VXLAN, }, }; @@ -330,20 +378,11 @@ mask_exact_match(const u8 *supported, const u8 *supplied, return 1; } -/** - * Copy IPv4 item into version 1 NIC filter. - * - * @param item[in] - * Item specification. - * @param enic_filter[out] - * Partially filled in NIC filter structure. - * @param inner_ofst[in] - * Should always be 0 for version 1. - */ static int -enic_copy_item_ipv4_v1(const struct rte_flow_item *item, - struct filter_v2 *enic_filter, u8 *inner_ofst) +enic_copy_item_ipv4_v1(struct copy_item_args *arg) { + const struct rte_flow_item *item = arg->item; + struct filter_v2 *enic_filter = arg->filter; const struct rte_flow_item_ipv4 *spec = item->spec; const struct rte_flow_item_ipv4 *mask = item->mask; struct filter_ipv4_5tuple *enic_5tup = &enic_filter->u.ipv4; @@ -354,9 +393,6 @@ enic_copy_item_ipv4_v1(const struct rte_flow_item *item, FLOW_TRACE(); - if (*inner_ofst) - return ENOTSUP; - if (!mask) mask = &rte_flow_item_ipv4_mask; @@ -380,20 +416,11 @@ enic_copy_item_ipv4_v1(const struct rte_flow_item *item, return 0; } -/** - * Copy UDP item into version 1 NIC filter. - * - * @param item[in] - * Item specification. - * @param enic_filter[out] - * Partially filled in NIC filter structure. - * @param inner_ofst[in] - * Should always be 0 for version 1. - */ static int -enic_copy_item_udp_v1(const struct rte_flow_item *item, - struct filter_v2 *enic_filter, u8 *inner_ofst) +enic_copy_item_udp_v1(struct copy_item_args *arg) { + const struct rte_flow_item *item = arg->item; + struct filter_v2 *enic_filter = arg->filter; const struct rte_flow_item_udp *spec = item->spec; const struct rte_flow_item_udp *mask = item->mask; struct filter_ipv4_5tuple *enic_5tup = &enic_filter->u.ipv4; @@ -404,9 +431,6 @@ enic_copy_item_udp_v1(const struct rte_flow_item *item, FLOW_TRACE(); - if (*inner_ofst) - return ENOTSUP; - if (!mask) mask = &rte_flow_item_udp_mask; @@ -431,20 +455,11 @@ enic_copy_item_udp_v1(const struct rte_flow_item *item, return 0; } -/** - * Copy TCP item into version 1 NIC filter. - * - * @param item[in] - * Item specification. - * @param enic_filter[out] - * Partially filled in NIC filter structure. - * @param inner_ofst[in] - * Should always be 0 for version 1. - */ static int -enic_copy_item_tcp_v1(const struct rte_flow_item *item, - struct filter_v2 *enic_filter, u8 *inner_ofst) +enic_copy_item_tcp_v1(struct copy_item_args *arg) { + const struct rte_flow_item *item = arg->item; + struct filter_v2 *enic_filter = arg->filter; const struct rte_flow_item_tcp *spec = item->spec; const struct rte_flow_item_tcp *mask = item->mask; struct filter_ipv4_5tuple *enic_5tup = &enic_filter->u.ipv4; @@ -455,9 +470,6 @@ enic_copy_item_tcp_v1(const struct rte_flow_item *item, FLOW_TRACE(); - if (*inner_ofst) - return ENOTSUP; - if (!mask) mask = &rte_flow_item_tcp_mask; @@ -482,21 +494,150 @@ enic_copy_item_tcp_v1(const struct rte_flow_item *item, return 0; } -/** - * Copy ETH item into version 2 NIC filter. - * - * @param item[in] - * Item specification. - * @param enic_filter[out] - * Partially filled in NIC filter structure. - * @param inner_ofst[in] - * If zero, this is an outer header. If non-zero, this is the offset into L5 - * where the header begins. +/* + * The common 'copy' function for all inner packet patterns. Patterns are + * first appended to the L5 pattern buffer. Then, since the NIC filter + * API has no special support for inner packet matching at the moment, + * we set EtherType and IP proto as necessary. */ static int -enic_copy_item_eth_v2(const struct rte_flow_item *item, - struct filter_v2 *enic_filter, u8 *inner_ofst) +copy_inner_common(struct filter_generic_1 *gp, uint8_t *inner_ofst, + const void *val, const void *mask, uint8_t val_size, + uint8_t proto_off, uint16_t proto_val, uint8_t proto_size) { + uint8_t *l5_mask, *l5_val; + uint8_t start_off; + + /* No space left in the L5 pattern buffer. */ + start_off = *inner_ofst; + if ((start_off + val_size) > FILTER_GENERIC_1_KEY_LEN) + return ENOTSUP; + l5_mask = gp->layer[FILTER_GENERIC_1_L5].mask; + l5_val = gp->layer[FILTER_GENERIC_1_L5].val; + /* Copy the pattern into the L5 buffer. */ + if (val) { + memcpy(l5_mask + start_off, mask, val_size); + memcpy(l5_val + start_off, val, val_size); + } + /* Set the protocol field in the previous header. */ + if (proto_off) { + void *m, *v; + + m = l5_mask + proto_off; + v = l5_val + proto_off; + if (proto_size == 1) { + *(uint8_t *)m = 0xff; + *(uint8_t *)v = (uint8_t)proto_val; + } else if (proto_size == 2) { + *(uint16_t *)m = 0xffff; + *(uint16_t *)v = proto_val; + } + } + /* All inner headers land in L5 buffer even if their spec is null. */ + *inner_ofst += val_size; + return 0; +} + +static int +enic_copy_item_inner_eth_v2(struct copy_item_args *arg) +{ + const void *mask = arg->item->mask; + uint8_t *off = arg->inner_ofst; + + FLOW_TRACE(); + if (!mask) + mask = &rte_flow_item_eth_mask; + arg->l2_proto_off = *off + offsetof(struct ether_hdr, ether_type); + return copy_inner_common(&arg->filter->u.generic_1, off, + arg->item->spec, mask, sizeof(struct ether_hdr), + 0 /* no previous protocol */, 0, 0); +} + +static int +enic_copy_item_inner_vlan_v2(struct copy_item_args *arg) +{ + const void *mask = arg->item->mask; + uint8_t *off = arg->inner_ofst; + uint8_t eth_type_off; + + FLOW_TRACE(); + if (!mask) + mask = &rte_flow_item_vlan_mask; + /* Append vlan header to L5 and set ether type = TPID */ + eth_type_off = arg->l2_proto_off; + arg->l2_proto_off = *off + offsetof(struct vlan_hdr, eth_proto); + return copy_inner_common(&arg->filter->u.generic_1, off, + arg->item->spec, mask, sizeof(struct vlan_hdr), + eth_type_off, rte_cpu_to_be_16(ETHER_TYPE_VLAN), 2); +} + +static int +enic_copy_item_inner_ipv4_v2(struct copy_item_args *arg) +{ + const void *mask = arg->item->mask; + uint8_t *off = arg->inner_ofst; + + FLOW_TRACE(); + if (!mask) + mask = &rte_flow_item_ipv4_mask; + /* Append ipv4 header to L5 and set ether type = ipv4 */ + arg->l3_proto_off = *off + offsetof(struct ipv4_hdr, next_proto_id); + return copy_inner_common(&arg->filter->u.generic_1, off, + arg->item->spec, mask, sizeof(struct ipv4_hdr), + arg->l2_proto_off, rte_cpu_to_be_16(ETHER_TYPE_IPv4), 2); +} + +static int +enic_copy_item_inner_ipv6_v2(struct copy_item_args *arg) +{ + const void *mask = arg->item->mask; + uint8_t *off = arg->inner_ofst; + + FLOW_TRACE(); + if (!mask) + mask = &rte_flow_item_ipv6_mask; + /* Append ipv6 header to L5 and set ether type = ipv6 */ + arg->l3_proto_off = *off + offsetof(struct ipv6_hdr, proto); + return copy_inner_common(&arg->filter->u.generic_1, off, + arg->item->spec, mask, sizeof(struct ipv6_hdr), + arg->l2_proto_off, rte_cpu_to_be_16(ETHER_TYPE_IPv6), 2); +} + +static int +enic_copy_item_inner_udp_v2(struct copy_item_args *arg) +{ + const void *mask = arg->item->mask; + uint8_t *off = arg->inner_ofst; + + FLOW_TRACE(); + if (!mask) + mask = &rte_flow_item_udp_mask; + /* Append udp header to L5 and set ip proto = udp */ + return copy_inner_common(&arg->filter->u.generic_1, off, + arg->item->spec, mask, sizeof(struct udp_hdr), + arg->l3_proto_off, IPPROTO_UDP, 1); +} + +static int +enic_copy_item_inner_tcp_v2(struct copy_item_args *arg) +{ + const void *mask = arg->item->mask; + uint8_t *off = arg->inner_ofst; + + FLOW_TRACE(); + if (!mask) + mask = &rte_flow_item_tcp_mask; + /* Append tcp header to L5 and set ip proto = tcp */ + return copy_inner_common(&arg->filter->u.generic_1, off, + arg->item->spec, mask, sizeof(struct tcp_hdr), + arg->l3_proto_off, IPPROTO_TCP, 1); +} + +static int +enic_copy_item_eth_v2(struct copy_item_args *arg) +{ + const struct rte_flow_item *item = arg->item; + struct filter_v2 *enic_filter = arg->filter; struct ether_hdr enic_spec; struct ether_hdr enic_mask; const struct rte_flow_item_eth *spec = item->spec; @@ -524,45 +665,24 @@ enic_copy_item_eth_v2(const struct rte_flow_item *item, enic_spec.ether_type = spec->type; enic_mask.ether_type = mask->type; - if (*inner_ofst == 0) { - /* outer header */ - memcpy(gp->layer[FILTER_GENERIC_1_L2].mask, &enic_mask, - sizeof(struct ether_hdr)); - memcpy(gp->layer[FILTER_GENERIC_1_L2].val, &enic_spec, - sizeof(struct ether_hdr)); - } else { - /* inner header */ - if ((*inner_ofst + sizeof(struct ether_hdr)) > - FILTER_GENERIC_1_KEY_LEN) - return ENOTSUP; - /* Offset into L5 where inner Ethernet header goes */ - memcpy(&gp->layer[FILTER_GENERIC_1_L5].mask[*inner_ofst], - &enic_mask, sizeof(struct ether_hdr)); - memcpy(&gp->layer[FILTER_GENERIC_1_L5].val[*inner_ofst], - &enic_spec, sizeof(struct ether_hdr)); - *inner_ofst += sizeof(struct ether_hdr); - } + /* outer header */ + memcpy(gp->layer[FILTER_GENERIC_1_L2].mask, &enic_mask, + sizeof(struct ether_hdr)); + memcpy(gp->layer[FILTER_GENERIC_1_L2].val, &enic_spec, + sizeof(struct ether_hdr)); return 0; } -/** - * Copy VLAN item into version 2 NIC filter. - * - * @param item[in] - * Item specification. - * @param enic_filter[out] - * Partially filled in NIC filter structure. - * @param inner_ofst[in] - * If zero, this is an outer header. If non-zero, this is the offset into L5 - * where the header begins. - */ static int -enic_copy_item_vlan_v2(const struct rte_flow_item *item, - struct filter_v2 *enic_filter, u8 *inner_ofst) +enic_copy_item_vlan_v2(struct copy_item_args *arg) { + const struct rte_flow_item *item = arg->item; + struct filter_v2 *enic_filter = arg->filter; const struct rte_flow_item_vlan *spec = item->spec; const struct rte_flow_item_vlan *mask = item->mask; struct filter_generic_1 *gp = &enic_filter->u.generic_1; + struct ether_hdr *eth_mask; + struct ether_hdr *eth_val; FLOW_TRACE(); @@ -573,99 +693,72 @@ enic_copy_item_vlan_v2(const struct rte_flow_item *item, if (!mask) mask = &rte_flow_item_vlan_mask; - if (*inner_ofst == 0) { - struct ether_hdr *eth_mask = - (void *)gp->layer[FILTER_GENERIC_1_L2].mask; - struct ether_hdr *eth_val = - (void *)gp->layer[FILTER_GENERIC_1_L2].val; + eth_mask = (void *)gp->layer[FILTER_GENERIC_1_L2].mask; + eth_val = (void *)gp->layer[FILTER_GENERIC_1_L2].val; + /* Outer TPID cannot be matched */ + if (eth_mask->ether_type) + return ENOTSUP; + /* + * For recent models: + * When packet matching, the VIC always compares vlan-stripped + * L2, regardless of vlan stripping settings. So, the inner type + * from vlan becomes the ether type of the eth header. + * + * Older models w/o hardware vxlan parser have a different + * behavior when vlan stripping is disabled. In this case, + * vlan tag remains in the L2 buffer. + */ + if (!arg->enic->vxlan && !arg->enic->ig_vlan_strip_en) { + struct vlan_hdr *vlan; - /* Outer TPID cannot be matched */ - if (eth_mask->ether_type) - return ENOTSUP; + vlan = (struct vlan_hdr *)(eth_mask + 1); + vlan->eth_proto = mask->inner_type; + vlan = (struct vlan_hdr *)(eth_val + 1); + vlan->eth_proto = spec->inner_type; + } else { eth_mask->ether_type = mask->inner_type; eth_val->ether_type = spec->inner_type; - - /* Outer header. Use the vlan mask/val fields */ - gp->mask_vlan = mask->tci; - gp->val_vlan = spec->tci; - } else { - /* Inner header. Mask/Val start at *inner_ofst into L5 */ - if ((*inner_ofst + sizeof(struct vlan_hdr)) > - FILTER_GENERIC_1_KEY_LEN) - return ENOTSUP; - memcpy(&gp->layer[FILTER_GENERIC_1_L5].mask[*inner_ofst], - mask, sizeof(struct vlan_hdr)); - memcpy(&gp->layer[FILTER_GENERIC_1_L5].val[*inner_ofst], - spec, sizeof(struct vlan_hdr)); - *inner_ofst += sizeof(struct vlan_hdr); } + /* For TCI, use the vlan mask/val fields (little endian). */ + gp->mask_vlan = rte_be_to_cpu_16(mask->tci); + gp->val_vlan = rte_be_to_cpu_16(spec->tci); return 0; } -/** - * Copy IPv4 item into version 2 NIC filter. - * - * @param item[in] - * Item specification. - * @param enic_filter[out] - * Partially filled in NIC filter structure. - * @param inner_ofst[in] - * Must be 0. Don't support inner IPv4 filtering. - */ static int -enic_copy_item_ipv4_v2(const struct rte_flow_item *item, - struct filter_v2 *enic_filter, u8 *inner_ofst) +enic_copy_item_ipv4_v2(struct copy_item_args *arg) { + const struct rte_flow_item *item = arg->item; + struct filter_v2 *enic_filter = arg->filter; const struct rte_flow_item_ipv4 *spec = item->spec; const struct rte_flow_item_ipv4 *mask = item->mask; struct filter_generic_1 *gp = &enic_filter->u.generic_1; FLOW_TRACE(); - if (*inner_ofst == 0) { - /* Match IPv4 */ - gp->mask_flags |= FILTER_GENERIC_1_IPV4; - gp->val_flags |= FILTER_GENERIC_1_IPV4; + /* Match IPv4 */ + gp->mask_flags |= FILTER_GENERIC_1_IPV4; + gp->val_flags |= FILTER_GENERIC_1_IPV4; - /* Match all if no spec */ - if (!spec) - return 0; + /* Match all if no spec */ + if (!spec) + return 0; - if (!mask) - mask = &rte_flow_item_ipv4_mask; + if (!mask) + mask = &rte_flow_item_ipv4_mask; - memcpy(gp->layer[FILTER_GENERIC_1_L3].mask, &mask->hdr, - sizeof(struct ipv4_hdr)); - memcpy(gp->layer[FILTER_GENERIC_1_L3].val, &spec->hdr, - sizeof(struct ipv4_hdr)); - } else { - /* Inner IPv4 header. Mask/Val start at *inner_ofst into L5 */ - if ((*inner_ofst + sizeof(struct ipv4_hdr)) > - FILTER_GENERIC_1_KEY_LEN) - return ENOTSUP; - memcpy(&gp->layer[FILTER_GENERIC_1_L5].mask[*inner_ofst], - mask, sizeof(struct ipv4_hdr)); - memcpy(&gp->layer[FILTER_GENERIC_1_L5].val[*inner_ofst], - spec, sizeof(struct ipv4_hdr)); - *inner_ofst += sizeof(struct ipv4_hdr); - } + memcpy(gp->layer[FILTER_GENERIC_1_L3].mask, &mask->hdr, + sizeof(struct ipv4_hdr)); + memcpy(gp->layer[FILTER_GENERIC_1_L3].val, &spec->hdr, + sizeof(struct ipv4_hdr)); return 0; } -/** - * Copy IPv6 item into version 2 NIC filter. - * - * @param item[in] - * Item specification. - * @param enic_filter[out] - * Partially filled in NIC filter structure. - * @param inner_ofst[in] - * Must be 0. Don't support inner IPv6 filtering. - */ static int -enic_copy_item_ipv6_v2(const struct rte_flow_item *item, - struct filter_v2 *enic_filter, u8 *inner_ofst) +enic_copy_item_ipv6_v2(struct copy_item_args *arg) { + const struct rte_flow_item *item = arg->item; + struct filter_v2 *enic_filter = arg->filter; const struct rte_flow_item_ipv6 *spec = item->spec; const struct rte_flow_item_ipv6 *mask = item->mask; struct filter_generic_1 *gp = &enic_filter->u.generic_1; @@ -683,39 +776,18 @@ enic_copy_item_ipv6_v2(const struct rte_flow_item *item, if (!mask) mask = &rte_flow_item_ipv6_mask; - if (*inner_ofst == 0) { - memcpy(gp->layer[FILTER_GENERIC_1_L3].mask, &mask->hdr, - sizeof(struct ipv6_hdr)); - memcpy(gp->layer[FILTER_GENERIC_1_L3].val, &spec->hdr, - sizeof(struct ipv6_hdr)); - } else { - /* Inner IPv6 header. Mask/Val start at *inner_ofst into L5 */ - if ((*inner_ofst + sizeof(struct ipv6_hdr)) > - FILTER_GENERIC_1_KEY_LEN) - return ENOTSUP; - memcpy(&gp->layer[FILTER_GENERIC_1_L5].mask[*inner_ofst], - mask, sizeof(struct ipv6_hdr)); - memcpy(&gp->layer[FILTER_GENERIC_1_L5].val[*inner_ofst], - spec, sizeof(struct ipv6_hdr)); - *inner_ofst += sizeof(struct ipv6_hdr); - } + memcpy(gp->layer[FILTER_GENERIC_1_L3].mask, &mask->hdr, + sizeof(struct ipv6_hdr)); + memcpy(gp->layer[FILTER_GENERIC_1_L3].val, &spec->hdr, + sizeof(struct ipv6_hdr)); return 0; } -/** - * Copy UDP item into version 2 NIC filter. - * - * @param item[in] - * Item specification. - * @param enic_filter[out] - * Partially filled in NIC filter structure. - * @param inner_ofst[in] - * Must be 0. Don't support inner UDP filtering. - */ static int -enic_copy_item_udp_v2(const struct rte_flow_item *item, - struct filter_v2 *enic_filter, u8 *inner_ofst) +enic_copy_item_udp_v2(struct copy_item_args *arg) { + const struct rte_flow_item *item = arg->item; + struct filter_v2 *enic_filter = arg->filter; const struct rte_flow_item_udp *spec = item->spec; const struct rte_flow_item_udp *mask = item->mask; struct filter_generic_1 *gp = &enic_filter->u.generic_1; @@ -733,39 +805,18 @@ enic_copy_item_udp_v2(const struct rte_flow_item *item, if (!mask) mask = &rte_flow_item_udp_mask; - if (*inner_ofst == 0) { - memcpy(gp->layer[FILTER_GENERIC_1_L4].mask, &mask->hdr, - sizeof(struct udp_hdr)); - memcpy(gp->layer[FILTER_GENERIC_1_L4].val, &spec->hdr, - sizeof(struct udp_hdr)); - } else { - /* Inner IPv6 header. Mask/Val start at *inner_ofst into L5 */ - if ((*inner_ofst + sizeof(struct udp_hdr)) > - FILTER_GENERIC_1_KEY_LEN) - return ENOTSUP; - memcpy(&gp->layer[FILTER_GENERIC_1_L5].mask[*inner_ofst], - mask, sizeof(struct udp_hdr)); - memcpy(&gp->layer[FILTER_GENERIC_1_L5].val[*inner_ofst], - spec, sizeof(struct udp_hdr)); - *inner_ofst += sizeof(struct udp_hdr); - } + memcpy(gp->layer[FILTER_GENERIC_1_L4].mask, &mask->hdr, + sizeof(struct udp_hdr)); + memcpy(gp->layer[FILTER_GENERIC_1_L4].val, &spec->hdr, + sizeof(struct udp_hdr)); return 0; } -/** - * Copy TCP item into version 2 NIC filter. - * - * @param item[in] - * Item specification. - * @param enic_filter[out] - * Partially filled in NIC filter structure. - * @param inner_ofst[in] - * Must be 0. Don't support inner TCP filtering. - */ static int -enic_copy_item_tcp_v2(const struct rte_flow_item *item, - struct filter_v2 *enic_filter, u8 *inner_ofst) +enic_copy_item_tcp_v2(struct copy_item_args *arg) { + const struct rte_flow_item *item = arg->item; + struct filter_v2 *enic_filter = arg->filter; const struct rte_flow_item_tcp *spec = item->spec; const struct rte_flow_item_tcp *mask = item->mask; struct filter_generic_1 *gp = &enic_filter->u.generic_1; @@ -783,47 +834,48 @@ enic_copy_item_tcp_v2(const struct rte_flow_item *item, if (!mask) return ENOTSUP; - if (*inner_ofst == 0) { - memcpy(gp->layer[FILTER_GENERIC_1_L4].mask, &mask->hdr, - sizeof(struct tcp_hdr)); - memcpy(gp->layer[FILTER_GENERIC_1_L4].val, &spec->hdr, - sizeof(struct tcp_hdr)); - } else { - /* Inner IPv6 header. Mask/Val start at *inner_ofst into L5 */ - if ((*inner_ofst + sizeof(struct tcp_hdr)) > - FILTER_GENERIC_1_KEY_LEN) - return ENOTSUP; - memcpy(&gp->layer[FILTER_GENERIC_1_L5].mask[*inner_ofst], - mask, sizeof(struct tcp_hdr)); - memcpy(&gp->layer[FILTER_GENERIC_1_L5].val[*inner_ofst], - spec, sizeof(struct tcp_hdr)); - *inner_ofst += sizeof(struct tcp_hdr); - } + memcpy(gp->layer[FILTER_GENERIC_1_L4].mask, &mask->hdr, + sizeof(struct tcp_hdr)); + memcpy(gp->layer[FILTER_GENERIC_1_L4].val, &spec->hdr, + sizeof(struct tcp_hdr)); return 0; } -/** - * Copy SCTP item into version 2 NIC filter. - * - * @param item[in] - * Item specification. - * @param enic_filter[out] - * Partially filled in NIC filter structure. - * @param inner_ofst[in] - * Must be 0. Don't support inner SCTP filtering. - */ static int -enic_copy_item_sctp_v2(const struct rte_flow_item *item, - struct filter_v2 *enic_filter, u8 *inner_ofst) +enic_copy_item_sctp_v2(struct copy_item_args *arg) { + const struct rte_flow_item *item = arg->item; + struct filter_v2 *enic_filter = arg->filter; const struct rte_flow_item_sctp *spec = item->spec; const struct rte_flow_item_sctp *mask = item->mask; struct filter_generic_1 *gp = &enic_filter->u.generic_1; + uint8_t *ip_proto_mask = NULL; + uint8_t *ip_proto = NULL; FLOW_TRACE(); - if (*inner_ofst) - return ENOTSUP; + /* + * The NIC filter API has no flags for "match sctp", so explicitly set + * the protocol number in the IP pattern. + */ + if (gp->val_flags & FILTER_GENERIC_1_IPV4) { + struct ipv4_hdr *ip; + ip = (struct ipv4_hdr *)gp->layer[FILTER_GENERIC_1_L3].mask; + ip_proto_mask = &ip->next_proto_id; + ip = (struct ipv4_hdr *)gp->layer[FILTER_GENERIC_1_L3].val; + ip_proto = &ip->next_proto_id; + } else if (gp->val_flags & FILTER_GENERIC_1_IPV6) { + struct ipv6_hdr *ip; + ip = (struct ipv6_hdr *)gp->layer[FILTER_GENERIC_1_L3].mask; + ip_proto_mask = &ip->proto; + ip = (struct ipv6_hdr *)gp->layer[FILTER_GENERIC_1_L3].val; + ip_proto = &ip->proto; + } else { + /* Need IPv4/IPv6 pattern first */ + return EINVAL; + } + *ip_proto = IPPROTO_SCTP; + *ip_proto_mask = 0xff; /* Match all if no spec */ if (!spec) @@ -839,29 +891,29 @@ enic_copy_item_sctp_v2(const struct rte_flow_item *item, return 0; } -/** - * Copy UDP item into version 2 NIC filter. - * - * @param item[in] - * Item specification. - * @param enic_filter[out] - * Partially filled in NIC filter structure. - * @param inner_ofst[in] - * Must be 0. VxLAN headers always start at the beginning of L5. - */ static int -enic_copy_item_vxlan_v2(const struct rte_flow_item *item, - struct filter_v2 *enic_filter, u8 *inner_ofst) +enic_copy_item_vxlan_v2(struct copy_item_args *arg) { + const struct rte_flow_item *item = arg->item; + struct filter_v2 *enic_filter = arg->filter; + uint8_t *inner_ofst = arg->inner_ofst; const struct rte_flow_item_vxlan *spec = item->spec; const struct rte_flow_item_vxlan *mask = item->mask; struct filter_generic_1 *gp = &enic_filter->u.generic_1; + struct udp_hdr *udp; FLOW_TRACE(); - if (*inner_ofst) - return EINVAL; - + /* + * The NIC filter API has no flags for "match vxlan". Set UDP port to + * avoid false positives. + */ + gp->mask_flags |= FILTER_GENERIC_1_UDP; + gp->val_flags |= FILTER_GENERIC_1_UDP; + udp = (struct udp_hdr *)gp->layer[FILTER_GENERIC_1_L4].mask; + udp->dst_port = 0xffff; + udp = (struct udp_hdr *)gp->layer[FILTER_GENERIC_1_L4].val; + udp->dst_port = RTE_BE16(4789); /* Match all if no spec */ if (!spec) return 0; @@ -909,6 +961,36 @@ item_stacking_valid(enum rte_flow_item_type prev_item, return 0; } +/* + * Fix up the L5 layer.. HW vxlan parsing removes vxlan header from L5. + * Instead it is in L4 following the UDP header. Append the vxlan + * pattern to L4 (udp) and shift any inner packet pattern in L5. + */ +static void +fixup_l5_layer(struct enic *enic, struct filter_generic_1 *gp, + uint8_t inner_ofst) +{ + uint8_t layer[FILTER_GENERIC_1_KEY_LEN]; + uint8_t inner; + uint8_t vxlan; + + if (!(inner_ofst > 0 && enic->vxlan)) + return; + FLOW_TRACE(); + vxlan = sizeof(struct vxlan_hdr); + memcpy(gp->layer[FILTER_GENERIC_1_L4].mask + sizeof(struct udp_hdr), + gp->layer[FILTER_GENERIC_1_L5].mask, vxlan); + memcpy(gp->layer[FILTER_GENERIC_1_L4].val + sizeof(struct udp_hdr), + gp->layer[FILTER_GENERIC_1_L5].val, vxlan); + inner = inner_ofst - vxlan; + memset(layer, 0, sizeof(layer)); + memcpy(layer, gp->layer[FILTER_GENERIC_1_L5].mask + vxlan, inner); + memcpy(gp->layer[FILTER_GENERIC_1_L5].mask, layer, sizeof(layer)); + memset(layer, 0, sizeof(layer)); + memcpy(layer, gp->layer[FILTER_GENERIC_1_L5].val + vxlan, inner); + memcpy(gp->layer[FILTER_GENERIC_1_L5].val, layer, sizeof(layer)); +} + /** * Build the intenal enic filter structure from the provided pattern. The * pattern is validated as the items are copied. @@ -922,7 +1004,8 @@ item_stacking_valid(enum rte_flow_item_type prev_item, */ static int enic_copy_filter(const struct rte_flow_item pattern[], - const struct enic_items *items_info, + const struct enic_filter_cap *cap, + struct enic *enic, struct filter_v2 *enic_filter, struct rte_flow_error *error) { @@ -931,13 +1014,17 @@ enic_copy_filter(const struct rte_flow_item pattern[], u8 inner_ofst = 0; /* If encapsulated, ofst into L5 */ enum rte_flow_item_type prev_item; const struct enic_items *item_info; - + struct copy_item_args args; + enic_copy_item_fn *copy_fn; u8 is_first_item = 1; FLOW_TRACE(); prev_item = 0; + args.filter = enic_filter; + args.inner_ofst = &inner_ofst; + args.enic = enic; for (; item->type != RTE_FLOW_ITEM_TYPE_END; item++) { /* Get info about how to validate and copy the item. If NULL * is returned the nic does not support the item. @@ -945,18 +1032,31 @@ enic_copy_filter(const struct rte_flow_item pattern[], if (item->type == RTE_FLOW_ITEM_TYPE_VOID) continue; - item_info = &items_info[item->type]; + item_info = &cap->item_info[item->type]; + if (item->type > cap->max_item_type || + item_info->copy_item == NULL || + (inner_ofst > 0 && item_info->inner_copy_item == NULL)) { + rte_flow_error_set(error, ENOTSUP, + RTE_FLOW_ERROR_TYPE_ITEM, + NULL, "Unsupported item."); + return -rte_errno; + } /* check to see if item stacking is valid */ if (!item_stacking_valid(prev_item, item_info, is_first_item)) goto stacking_error; - ret = item_info->copy_item(item, enic_filter, &inner_ofst); + args.item = item; + copy_fn = inner_ofst > 0 ? item_info->inner_copy_item : + item_info->copy_item; + ret = copy_fn(&args); if (ret) goto item_not_supported; prev_item = item->type; is_first_item = 0; } + fixup_l5_layer(enic, &enic_filter->u.generic_1, inner_ofst); + return 0; item_not_supported: @@ -1057,12 +1157,18 @@ enic_copy_action_v2(const struct rte_flow_action actions[], if (overlap & MARK) return ENOTSUP; overlap |= MARK; - /* ENIC_MAGIC_FILTER_ID is reserved and is the highest - * in the range of allows mark ids. + /* + * Map mark ID (32-bit) to filter ID (16-bit): + * - Reject values > 16 bits + * - Filter ID 0 is reserved for filters that steer + * but not mark. So add 1 to the mark ID to avoid + * using 0. + * - Filter ID (ENIC_MAGIC_FILTER_ID = 0xffff) is + * reserved for the "flag" action below. */ - if (mark->id >= ENIC_MAGIC_FILTER_ID) + if (mark->id >= ENIC_MAGIC_FILTER_ID - 1) return EINVAL; - enic_action->filter_id = mark->id; + enic_action->filter_id = mark->id + 1; enic_action->flags |= FILTER_ACTION_FILTER_ID_FLAG; break; } @@ -1070,6 +1176,7 @@ enic_copy_action_v2(const struct rte_flow_action actions[], if (overlap & MARK) return ENOTSUP; overlap |= MARK; + /* ENIC_MAGIC_FILTER_ID is reserved for flagging */ enic_action->filter_id = ENIC_MAGIC_FILTER_ID; enic_action->flags |= FILTER_ACTION_FILTER_ID_FLAG; break; @@ -1392,7 +1499,7 @@ enic_flow_parse(struct rte_eth_dev *dev, return -rte_errno; } enic_filter->type = enic->flow_filter_mode; - ret = enic_copy_filter(pattern, enic_filter_cap->item_info, + ret = enic_copy_filter(pattern, enic_filter_cap, enic, enic_filter, error); return ret; } diff --git a/dpdk/drivers/net/enic/enic_main.c b/dpdk/drivers/net/enic/enic_main.c index c3869de36..098a18d63 100644 --- a/dpdk/drivers/net/enic/enic_main.c +++ b/dpdk/drivers/net/enic/enic_main.c @@ -8,7 +8,6 @@ #include #include #include -#include #include #include @@ -1716,8 +1715,15 @@ static int enic_dev_init(struct enic *enic) PKT_TX_OUTER_IP_CKSUM | PKT_TX_TUNNEL_MASK; enic->overlay_offload = true; - enic->vxlan_port = ENIC_DEFAULT_VXLAN_PORT; dev_info(enic, "Overlay offload is enabled\n"); + } + /* + * Reset the vxlan port if HW vxlan parsing is available. It + * is always enabled regardless of overlay offload + * enable/disable. + */ + if (enic->vxlan) { + enic->vxlan_port = ENIC_DEFAULT_VXLAN_PORT; /* * Reset the vxlan port to the default, as the NIC firmware * does not reset it automatically and keeps the old setting. diff --git a/dpdk/drivers/net/enic/enic_res.c b/dpdk/drivers/net/enic/enic_res.c index 24b2844f3..78bb6b8f1 100644 --- a/dpdk/drivers/net/enic/enic_res.c +++ b/dpdk/drivers/net/enic/enic_res.c @@ -61,10 +61,9 @@ int enic_get_vnic_config(struct enic *enic) * and will be 0 for legacy firmware and VICs */ if (c->max_pkt_size > ENIC_DEFAULT_RX_MAX_PKT_SIZE) - enic->max_mtu = c->max_pkt_size - (ETHER_HDR_LEN + 4); + enic->max_mtu = c->max_pkt_size - ETHER_HDR_LEN; else - enic->max_mtu = ENIC_DEFAULT_RX_MAX_PKT_SIZE - - (ETHER_HDR_LEN + 4); + enic->max_mtu = ENIC_DEFAULT_RX_MAX_PKT_SIZE - ETHER_HDR_LEN; if (c->mtu == 0) c->mtu = 1500; diff --git a/dpdk/drivers/net/enic/enic_rxtx_common.h b/dpdk/drivers/net/enic/enic_rxtx_common.h index bfbb4909e..66f631dfe 100644 --- a/dpdk/drivers/net/enic/enic_rxtx_common.h +++ b/dpdk/drivers/net/enic/enic_rxtx_common.h @@ -226,7 +226,8 @@ enic_cq_rx_to_pkt_flags(struct cq_desc *cqd, struct rte_mbuf *mbuf) if (filter_id) { pkt_flags |= PKT_RX_FDIR; if (filter_id != ENIC_MAGIC_FILTER_ID) { - mbuf->hash.fdir.hi = clsf_cqd->filter_id; + /* filter_id = mark id + 1, so subtract 1 */ + mbuf->hash.fdir.hi = filter_id - 1; pkt_flags |= PKT_RX_FDIR_ID; } } diff --git a/dpdk/drivers/net/fm10k/fm10k_ethdev.c b/dpdk/drivers/net/fm10k/fm10k_ethdev.c index 85fb6c5cb..caf4d1bc0 100644 --- a/dpdk/drivers/net/fm10k/fm10k_ethdev.c +++ b/dpdk/drivers/net/fm10k/fm10k_ethdev.c @@ -3003,6 +3003,7 @@ fm10k_params_init(struct rte_eth_dev *dev) hw->bus.payload = fm10k_bus_payload_256; info->rx_vec_allowed = true; + info->sm_down = false; } static int diff --git a/dpdk/drivers/net/fm10k/fm10k_rxtx.c b/dpdk/drivers/net/fm10k/fm10k_rxtx.c index 4a5b46ec8..fb02e1152 100644 --- a/dpdk/drivers/net/fm10k/fm10k_rxtx.c +++ b/dpdk/drivers/net/fm10k/fm10k_rxtx.c @@ -39,6 +39,8 @@ static inline void dump_rxd(union fm10k_rx_desc *rxd) #define FM10K_TX_OFFLOAD_MASK ( \ PKT_TX_VLAN_PKT | \ + PKT_TX_IPV6 | \ + PKT_TX_IPV4 | \ PKT_TX_IP_CKSUM | \ PKT_TX_L4_MASK | \ PKT_TX_TCP_SEG) @@ -132,7 +134,7 @@ fm10k_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, * So, always PKT_RX_VLAN flag is set and vlan_tci * is valid for each RX packet's mbuf. */ - mbuf->ol_flags |= PKT_RX_VLAN; + mbuf->ol_flags |= PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED; mbuf->vlan_tci = desc.w.vlan; /** * mbuf->vlan_tci_outer is an idle field in fm10k driver, @@ -293,7 +295,7 @@ fm10k_recv_scattered_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, * So, always PKT_RX_VLAN flag is set and vlan_tci * is valid for each RX packet's mbuf. */ - first_seg->ol_flags |= PKT_RX_VLAN; + first_seg->ol_flags |= PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED; first_seg->vlan_tci = desc.w.vlan; /** * mbuf->vlan_tci_outer is an idle field in fm10k driver, diff --git a/dpdk/drivers/net/fm10k/fm10k_rxtx_vec.c b/dpdk/drivers/net/fm10k/fm10k_rxtx_vec.c index 005fda630..96b46a2bd 100644 --- a/dpdk/drivers/net/fm10k/fm10k_rxtx_vec.c +++ b/dpdk/drivers/net/fm10k/fm10k_rxtx_vec.c @@ -52,8 +52,10 @@ fm10k_desc_to_olflags_v(__m128i descs[4], struct rte_mbuf **rx_pkts) const __m128i pkttype_msk = _mm_set_epi16( 0x0000, 0x0000, 0x0000, 0x0000, - PKT_RX_VLAN, PKT_RX_VLAN, - PKT_RX_VLAN, PKT_RX_VLAN); + PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED, + PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED, + PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED, + PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED); /* mask everything except rss type */ const __m128i rsstype_msk = _mm_set_epi16( diff --git a/dpdk/drivers/net/i40e/base/i40e_type.h b/dpdk/drivers/net/i40e/base/i40e_type.h index 77562f24e..7ba62cc12 100644 --- a/dpdk/drivers/net/i40e/base/i40e_type.h +++ b/dpdk/drivers/net/i40e/base/i40e_type.h @@ -670,6 +670,7 @@ struct i40e_hw { u8 revision_id; u8 port; bool adapter_stopped; + bool adapter_closed; /* capabilities for entire device and PCI func */ struct i40e_hw_capabilities dev_caps; diff --git a/dpdk/drivers/net/i40e/i40e_ethdev.c b/dpdk/drivers/net/i40e/i40e_ethdev.c index 7030eb1fa..af5e844b3 100644 --- a/dpdk/drivers/net/i40e/i40e_ethdev.c +++ b/dpdk/drivers/net/i40e/i40e_ethdev.c @@ -1273,7 +1273,7 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused) struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); struct i40e_vsi *vsi; int ret; - uint32_t len; + uint32_t len, val; uint8_t aq_fail = 0; PMD_INIT_FUNC_TRACE(); @@ -1316,6 +1316,7 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused) hw->bus.device = pci_dev->addr.devid; hw->bus.func = pci_dev->addr.function; hw->adapter_stopped = 0; + hw->adapter_closed = 0; /* * Switch Tag value should not be identical to either the First Tag @@ -1324,6 +1325,15 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused) */ hw->switch_tag = 0xffff; + val = I40E_READ_REG(hw, I40E_GL_FWSTS); + if (val & I40E_GL_FWSTS_FWS1B_MASK) { + PMD_INIT_LOG(ERR, "\nERROR: " + "Firmware recovery mode detected. Limiting functionality.\n" + "Refer to the Intel(R) Ethernet Adapters and Devices " + "User Guide for details on firmware recovery mode."); + return -EIO; + } + /* Check if need to support multi-driver */ i40e_support_multi_driver(dev); /* Check if users want the latest supported vec path */ @@ -1483,9 +1493,6 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused) goto err_setup_pf_switch; } - /* reset all stats of the device, including pf and main vsi */ - i40e_dev_stats_reset(dev); - vsi = pf->main_vsi; /* Disable double vlan by default */ @@ -1580,6 +1587,9 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused) memset(&pf->rss_info, 0, sizeof(struct i40e_rte_flow_rss_conf)); + /* reset all stats of the device, including pf and main vsi */ + i40e_dev_stats_reset(dev); + return 0; err_init_fdir_filter_list: @@ -1704,7 +1714,7 @@ eth_i40e_dev_uninit(struct rte_eth_dev *dev) if (ret) PMD_INIT_LOG(WARNING, "failed to free switch domain: %d", ret); - if (hw->adapter_stopped == 0) + if (hw->adapter_closed == 0) i40e_dev_close(dev); dev->dev_ops = NULL; @@ -2444,6 +2454,8 @@ i40e_dev_stop(struct rte_eth_dev *dev) pf->tm_conf.committed = false; hw->adapter_stopped = 1; + + pf->adapter->rss_reta_updated = 0; } static void @@ -2523,6 +2535,8 @@ i40e_dev_close(struct rte_eth_dev *dev) I40E_WRITE_REG(hw, I40E_PFGEN_CTRL, (reg | I40E_PFGEN_CTRL_PFSWR_MASK)); I40E_WRITE_FLUSH(hw); + + hw->adapter_closed = 1; } /* @@ -2657,11 +2671,11 @@ update_link_reg(struct i40e_hw *hw, struct rte_eth_link *link) #define I40E_PRTMAC_MACC 0x001E24E0 #define I40E_REG_MACC_25GB 0x00020000 #define I40E_REG_SPEED_MASK 0x38000000 -#define I40E_REG_SPEED_100MB 0x00000000 -#define I40E_REG_SPEED_1GB 0x08000000 -#define I40E_REG_SPEED_10GB 0x10000000 -#define I40E_REG_SPEED_20GB 0x20000000 -#define I40E_REG_SPEED_25_40GB 0x18000000 +#define I40E_REG_SPEED_0 0x00000000 +#define I40E_REG_SPEED_1 0x08000000 +#define I40E_REG_SPEED_2 0x10000000 +#define I40E_REG_SPEED_3 0x18000000 +#define I40E_REG_SPEED_4 0x20000000 uint32_t link_speed; uint32_t reg_val; @@ -2675,26 +2689,35 @@ update_link_reg(struct i40e_hw *hw, struct rte_eth_link *link) /* Parse the link status */ switch (link_speed) { - case I40E_REG_SPEED_100MB: + case I40E_REG_SPEED_0: link->link_speed = ETH_SPEED_NUM_100M; break; - case I40E_REG_SPEED_1GB: + case I40E_REG_SPEED_1: link->link_speed = ETH_SPEED_NUM_1G; break; - case I40E_REG_SPEED_10GB: - link->link_speed = ETH_SPEED_NUM_10G; - break; - case I40E_REG_SPEED_20GB: - link->link_speed = ETH_SPEED_NUM_20G; - break; - case I40E_REG_SPEED_25_40GB: - reg_val = I40E_READ_REG(hw, I40E_PRTMAC_MACC); - - if (reg_val & I40E_REG_MACC_25GB) - link->link_speed = ETH_SPEED_NUM_25G; + case I40E_REG_SPEED_2: + if (hw->mac.type == I40E_MAC_X722) + link->link_speed = ETH_SPEED_NUM_2_5G; else - link->link_speed = ETH_SPEED_NUM_40G; + link->link_speed = ETH_SPEED_NUM_10G; + break; + case I40E_REG_SPEED_3: + if (hw->mac.type == I40E_MAC_X722) { + link->link_speed = ETH_SPEED_NUM_5G; + } else { + reg_val = I40E_READ_REG(hw, I40E_PRTMAC_MACC); + if (reg_val & I40E_REG_MACC_25GB) + link->link_speed = ETH_SPEED_NUM_25G; + else + link->link_speed = ETH_SPEED_NUM_40G; + } + break; + case I40E_REG_SPEED_4: + if (hw->mac.type == I40E_MAC_X722) + link->link_speed = ETH_SPEED_NUM_10G; + else + link->link_speed = ETH_SPEED_NUM_20G; break; default: PMD_DRV_LOG(ERR, "Unknown link speed info %u", link_speed); @@ -3160,20 +3183,20 @@ i40e_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) struct i40e_pf *pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private); struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); struct i40e_hw_port_stats *ns = &pf->stats; /* new stats */ + struct i40e_vsi *vsi; unsigned i; /* call read registers - updates values, now write them to struct */ i40e_read_stats_registers(pf, hw); - stats->ipackets = ns->eth.rx_unicast + - ns->eth.rx_multicast + - ns->eth.rx_broadcast - - ns->eth.rx_discards - + stats->ipackets = pf->main_vsi->eth_stats.rx_unicast + + pf->main_vsi->eth_stats.rx_multicast + + pf->main_vsi->eth_stats.rx_broadcast - pf->main_vsi->eth_stats.rx_discards; stats->opackets = ns->eth.tx_unicast + ns->eth.tx_multicast + ns->eth.tx_broadcast; - stats->ibytes = ns->eth.rx_bytes; + stats->ibytes = pf->main_vsi->eth_stats.rx_bytes; stats->obytes = ns->eth.tx_bytes; stats->oerrors = ns->eth.tx_errors + pf->main_vsi->eth_stats.tx_errors; @@ -3185,6 +3208,21 @@ i40e_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) ns->rx_length_errors + ns->rx_undersize + ns->rx_oversize + ns->rx_fragments + ns->rx_jabber; + if (pf->vfs) { + for (i = 0; i < pf->vf_num; i++) { + vsi = pf->vfs[i].vsi; + i40e_update_vsi_stats(vsi); + + stats->ipackets += (vsi->eth_stats.rx_unicast + + vsi->eth_stats.rx_multicast + + vsi->eth_stats.rx_broadcast - + vsi->eth_stats.rx_discards); + stats->ibytes += vsi->eth_stats.rx_bytes; + stats->oerrors += vsi->eth_stats.tx_errors; + stats->imissed += vsi->eth_stats.rx_discards; + } + } + PMD_DRV_LOG(DEBUG, "***************** PF stats start *******************"); PMD_DRV_LOG(DEBUG, "rx_bytes: %"PRIu64"", ns->eth.rx_bytes); PMD_DRV_LOG(DEBUG, "rx_unicast: %"PRIu64"", ns->eth.rx_unicast); @@ -3431,6 +3469,31 @@ i40e_fw_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size) return 0; } +/* + * When using NVM 6.01(for X710 XL710 XXV710)/3.33(for X722) or later, + * the Rx data path does not hang if the FW LLDP is stopped. + * return true if lldp need to stop + * return false if we cannot disable the LLDP to avoid Rx data path blocking. + */ +static bool +i40e_need_stop_lldp(struct rte_eth_dev *dev) +{ + double nvm_ver; + char ver_str[64] = {0}; + struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); + + i40e_fw_version_get(dev, ver_str, 64); + nvm_ver = atof(ver_str); + if ((hw->mac.type == I40E_MAC_X722 || + hw->mac.type == I40E_MAC_X722_VF) && + ((uint32_t)(nvm_ver * 1000) >= (uint32_t)(3.33 * 1000))) + return true; + else if ((uint32_t)(nvm_ver * 1000) >= (uint32_t)(6.01 * 1000)) + return true; + + return false; +} + static void i40e_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) { @@ -4154,7 +4217,8 @@ i40e_get_rss_lut(struct i40e_vsi *vsi, uint8_t *lut, uint16_t lut_size) return -EINVAL; if (pf->flags & I40E_FLAG_RSS_AQ_CAPABLE) { - ret = i40e_aq_get_rss_lut(hw, vsi->vsi_id, TRUE, + ret = i40e_aq_get_rss_lut(hw, vsi->vsi_id, + vsi->type != I40E_VSI_SRIOV, lut, lut_size); if (ret) { PMD_DRV_LOG(ERR, "Failed to get RSS lookup table"); @@ -4193,7 +4257,8 @@ i40e_set_rss_lut(struct i40e_vsi *vsi, uint8_t *lut, uint16_t lut_size) hw = I40E_VSI_TO_HW(vsi); if (pf->flags & I40E_FLAG_RSS_AQ_CAPABLE) { - ret = i40e_aq_set_rss_lut(hw, vsi->vsi_id, TRUE, + ret = i40e_aq_set_rss_lut(hw, vsi->vsi_id, + vsi->type != I40E_VSI_SRIOV, lut, lut_size); if (ret) { PMD_DRV_LOG(ERR, "Failed to set RSS lookup table"); @@ -4255,6 +4320,8 @@ i40e_dev_rss_reta_update(struct rte_eth_dev *dev, } ret = i40e_set_rss_lut(pf->main_vsi, lut, reta_size); + pf->adapter->rss_reta_updated = 1; + out: rte_free(lut); @@ -7376,7 +7443,7 @@ i40e_get_rss_key(struct i40e_vsi *vsi, uint8_t *key, uint8_t *key_len) int ret; if (!key || !key_len) - return -EINVAL; + return 0; if (pf->flags & I40E_FLAG_RSS_AQ_CAPABLE) { ret = i40e_aq_get_rss_key(hw, vsi->vsi_id, @@ -7459,9 +7526,15 @@ i40e_dev_rss_hash_conf_get(struct rte_eth_dev *dev, struct i40e_pf *pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private); struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); uint64_t hena; + int ret; - i40e_get_rss_key(pf->main_vsi, rss_conf->rss_key, + if (!rss_conf) + return -EINVAL; + + ret = i40e_get_rss_key(pf->main_vsi, rss_conf->rss_key, &rss_conf->rss_key_len); + if (ret) + return ret; hena = (uint64_t)i40e_read_rx_ctl(hw, I40E_PFQF_HENA(0)); hena |= ((uint64_t)i40e_read_rx_ctl(hw, I40E_PFQF_HENA(1))) << 32; @@ -8489,13 +8562,16 @@ i40e_pf_config_rss(struct i40e_pf *pf) return -ENOTSUP; } - for (i = 0, j = 0; i < hw->func_caps.rss_table_size; i++, j++) { - if (j == num) - j = 0; - lut = (lut << 8) | (j & ((0x1 << - hw->func_caps.rss_table_entry_width) - 1)); - if ((i & 3) == 3) - I40E_WRITE_REG(hw, I40E_PFQF_HLUT(i >> 2), lut); + if (pf->adapter->rss_reta_updated == 0) { + for (i = 0, j = 0; i < hw->func_caps.rss_table_size; i++, j++) { + if (j == num) + j = 0; + lut = (lut << 8) | (j & ((0x1 << + hw->func_caps.rss_table_entry_width) - 1)); + if ((i & 3) == 3) + I40E_WRITE_REG(hw, I40E_PFQF_HLUT(i >> 2), + rte_bswap32(lut)); + } } rss_conf = pf->dev_data->dev_conf.rx_adv_conf.rss_conf; @@ -10763,6 +10839,7 @@ i40e_start_timecounters(struct rte_eth_dev *dev) switch (link.link_speed) { case ETH_SPEED_NUM_40G: + case ETH_SPEED_NUM_25G: tsync_inc_l = I40E_PTP_40GB_INCVAL & 0xFFFFFFFF; tsync_inc_h = I40E_PTP_40GB_INCVAL >> 32; break; @@ -11385,11 +11462,7 @@ i40e_dcb_init_configure(struct rte_eth_dev *dev, bool sw_dcb) * LLDP MIB change event. */ if (sw_dcb == TRUE) { - /* When using NVM 6.01 or later, the RX data path does - * not hang if the FW LLDP is stopped. - */ - if (((hw->nvm.version >> 12) & 0xf) >= 6 && - ((hw->nvm.version >> 4) & 0xff) >= 1) { + if (i40e_need_stop_lldp(dev)) { ret = i40e_aq_stop_lldp(hw, TRUE, NULL); if (ret != I40E_SUCCESS) PMD_INIT_LOG(DEBUG, "Failed to stop lldp"); @@ -11827,16 +11900,17 @@ static int i40e_get_module_eeprom(struct rte_eth_dev *dev, struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); bool is_sfp = false; i40e_status status; - uint8_t *data = info->data; + uint8_t *data; uint32_t value = 0; uint32_t i; - if (!info || !info->length || !data) + if (!info || !info->length || !info->data) return -EINVAL; if (hw->phy.link_info.module_type[0] == I40E_MODULE_TYPE_SFP) is_sfp = true; + data = info->data; for (i = 0; i < info->length; i++) { u32 offset = i + info->offset; u32 addr = is_sfp ? I40E_I2C_EEPROM_DEV_ADDR : 0; @@ -12138,8 +12212,8 @@ i40e_update_customized_pctype(struct rte_eth_dev *dev, uint8_t *pkg, for (n = 0; n < proto_num; n++) { if (proto[n].proto_id != proto_id) continue; - strcat(name, proto[n].name); - strcat(name, "_"); + strlcat(name, proto[n].name, sizeof(name)); + strlcat(name, "_", sizeof(name)); break; } } @@ -12636,9 +12710,6 @@ i40e_config_rss_filter(struct i40e_pf *pf, return -EINVAL; } - if (rss_info->conf.queue_num) - return -EINVAL; - /* If both VMDQ and RSS enabled, not all of PF queues are configured. * It's necessary to calculate the actual PF queues that are configured. */ @@ -12681,6 +12752,8 @@ i40e_config_rss_filter(struct i40e_pf *pf, rss_conf.rss_key = (uint8_t *)rss_key_default; rss_conf.rss_key_len = (I40E_PFQF_HKEY_MAX_INDEX + 1) * sizeof(uint32_t); + PMD_DRV_LOG(INFO, + "No valid RSS key config for i40e, using default\n"); } i40e_hw_rss_hash_set(pf, &rss_conf); diff --git a/dpdk/drivers/net/i40e/i40e_ethdev.h b/dpdk/drivers/net/i40e/i40e_ethdev.h index 11ecfc30d..930eb9aba 100644 --- a/dpdk/drivers/net/i40e/i40e_ethdev.h +++ b/dpdk/drivers/net/i40e/i40e_ethdev.h @@ -1081,6 +1081,9 @@ struct i40e_adapter { /* For devargs */ uint8_t use_latest_vec; + + /* For RSS reta table update */ + uint8_t rss_reta_updated; }; /** diff --git a/dpdk/drivers/net/i40e/i40e_ethdev_vf.c b/dpdk/drivers/net/i40e/i40e_ethdev_vf.c index ae55b9b18..551f6fa61 100644 --- a/dpdk/drivers/net/i40e/i40e_ethdev_vf.c +++ b/dpdk/drivers/net/i40e/i40e_ethdev_vf.c @@ -1080,9 +1080,11 @@ i40evf_enable_irq0(struct i40e_hw *hw) } static int -i40evf_check_vf_reset_done(struct i40e_hw *hw) +i40evf_check_vf_reset_done(struct rte_eth_dev *dev) { int i, reset; + struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); + struct i40e_vf *vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private); for (i = 0; i < MAX_RESET_WAIT_CNT; i++) { reset = I40E_READ_REG(hw, I40E_VFGEN_RSTAT) & @@ -1097,12 +1099,16 @@ i40evf_check_vf_reset_done(struct i40e_hw *hw) if (i >= MAX_RESET_WAIT_CNT) return -1; + vf->vf_reset = false; + vf->pend_msg &= ~PFMSG_RESET_IMPENDING; + return 0; } static int -i40evf_reset_vf(struct i40e_hw *hw) +i40evf_reset_vf(struct rte_eth_dev *dev) { int ret; + struct i40e_hw *hw = I40E_DEV_PRIVATE_TO_HW(dev->data->dev_private); if (i40e_vf_reset(hw) != I40E_SUCCESS) { PMD_INIT_LOG(ERR, "Reset VF NIC failed"); @@ -1119,7 +1125,7 @@ i40evf_reset_vf(struct i40e_hw *hw) */ rte_delay_ms(200); - ret = i40evf_check_vf_reset_done(hw); + ret = i40evf_check_vf_reset_done(dev); if (ret) { PMD_INIT_LOG(ERR, "VF is still resetting"); return ret; @@ -1145,7 +1151,7 @@ i40evf_init_vf(struct rte_eth_dev *dev) goto err; } - err = i40evf_check_vf_reset_done(hw); + err = i40evf_check_vf_reset_done(dev); if (err) goto err; @@ -1157,7 +1163,7 @@ i40evf_init_vf(struct rte_eth_dev *dev) } /* Reset VF and wait until it's complete */ - if (i40evf_reset_vf(hw)) { + if (i40evf_reset_vf(dev)) { PMD_INIT_LOG(ERR, "reset NIC failed"); goto err_aq; } @@ -1256,7 +1262,7 @@ i40evf_uninit_vf(struct rte_eth_dev *dev) PMD_INIT_FUNC_TRACE(); - if (hw->adapter_stopped == 0) + if (hw->adapter_closed == 0) i40evf_dev_close(dev); rte_free(vf->vf_res); vf->vf_res = NULL; @@ -1438,6 +1444,7 @@ i40evf_dev_init(struct rte_eth_dev *eth_dev) hw->bus.func = pci_dev->addr.function; hw->hw_addr = (void *)pci_dev->mem_resource[0].addr; hw->adapter_stopped = 0; + hw->adapter_closed = 0; if(i40evf_init_vf(eth_dev) != 0) { PMD_INIT_LOG(ERR, "Init vf failed"); @@ -1717,9 +1724,8 @@ i40evf_rxq_init(struct rte_eth_dev *dev, struct i40e_rx_queue *rxq) } if ((dev_data->dev_conf.rxmode.offloads & DEV_RX_OFFLOAD_SCATTER) || - (rxq->max_pkt_len + 2 * I40E_VLAN_TAG_SIZE) > buf_size) { + rxq->max_pkt_len > buf_size) dev_data->scattered_rx = 1; - } return 0; } @@ -2255,11 +2261,12 @@ i40evf_dev_close(struct rte_eth_dev *dev) */ i40evf_dev_promiscuous_disable(dev); i40evf_dev_allmulticast_disable(dev); + rte_eal_alarm_cancel(i40evf_dev_alarm_handler, dev); - i40evf_reset_vf(hw); + i40evf_reset_vf(dev); i40e_shutdown_adminq(hw); i40evf_disable_irq0(hw); - rte_eal_alarm_cancel(i40evf_dev_alarm_handler, dev); + hw->adapter_closed = 1; } /* diff --git a/dpdk/drivers/net/i40e/i40e_flow.c b/dpdk/drivers/net/i40e/i40e_flow.c index 3694df255..a614ec1d0 100644 --- a/dpdk/drivers/net/i40e/i40e_flow.c +++ b/dpdk/drivers/net/i40e/i40e_flow.c @@ -4445,6 +4445,14 @@ i40e_flow_parse_rss_action(struct rte_eth_dev *dev, } } + if (rss_info->conf.queue_num) { + rte_flow_error_set(error, EINVAL, + RTE_FLOW_ERROR_TYPE_ACTION, + act, + "rss only allow one valid rule"); + return -rte_errno; + } + /* Parse RSS related parameters from configuration */ if (rss->func != RTE_ETH_HASH_FUNCTION_DEFAULT) return rte_flow_error_set diff --git a/dpdk/drivers/net/i40e/i40e_pf.c b/dpdk/drivers/net/i40e/i40e_pf.c index dd3962d38..1e2d1746f 100644 --- a/dpdk/drivers/net/i40e/i40e_pf.c +++ b/dpdk/drivers/net/i40e/i40e_pf.c @@ -1232,6 +1232,7 @@ i40e_pf_host_handle_vf_msg(struct rte_eth_dev *dev, uint16_t vf_id = abs_vf_id - hw->func_caps.vf_base_id; struct rte_pmd_i40e_mb_event_param ret_param; bool b_op = TRUE; + int ret; if (vf_id > pf->vf_num - 1 || !pf->vfs) { PMD_DRV_LOG(ERR, "invalid argument"); @@ -1246,6 +1247,30 @@ i40e_pf_host_handle_vf_msg(struct rte_eth_dev *dev, return; } + /* perform basic checks on the msg */ + ret = virtchnl_vc_validate_vf_msg(&vf->version, opcode, msg, msglen); + + /* perform additional checks specific to this driver */ + if (opcode == VIRTCHNL_OP_CONFIG_RSS_KEY) { + struct virtchnl_rss_key *vrk = (struct virtchnl_rss_key *)msg; + + if (vrk->key_len != ((I40E_PFQF_HKEY_MAX_INDEX + 1) * 4)) + ret = VIRTCHNL_ERR_PARAM; + } else if (opcode == VIRTCHNL_OP_CONFIG_RSS_LUT) { + struct virtchnl_rss_lut *vrl = (struct virtchnl_rss_lut *)msg; + + if (vrl->lut_entries != ((I40E_VFQF_HLUT1_MAX_INDEX + 1) * 4)) + ret = VIRTCHNL_ERR_PARAM; + } + + if (ret) { + PMD_DRV_LOG(ERR, "Invalid message from VF %u, opcode %u, len %u", + vf_id, opcode, msglen); + i40e_pf_host_send_msg_to_vf(vf, opcode, + I40E_ERR_PARAM, NULL, 0); + return; + } + /** * initialise structure to send to user application * will return response from user in retval field diff --git a/dpdk/drivers/net/i40e/i40e_rxtx.c b/dpdk/drivers/net/i40e/i40e_rxtx.c index e1152ff0e..1489552da 100644 --- a/dpdk/drivers/net/i40e/i40e_rxtx.c +++ b/dpdk/drivers/net/i40e/i40e_rxtx.c @@ -69,7 +69,7 @@ I40E_TX_IEEE1588_TMST) #define I40E_TX_OFFLOAD_NOTSUP_MASK \ - ~(PKT_TX_OFFLOAD_MASK & I40E_TX_OFFLOAD_MASK) + (PKT_TX_OFFLOAD_MASK ^ I40E_TX_OFFLOAD_MASK) static inline void i40e_rxd_to_vlan_tci(struct rte_mbuf *mb, volatile union i40e_rx_desc *rxdp) @@ -1718,7 +1718,7 @@ i40e_dev_rx_queue_setup_runtime(struct rte_eth_dev *dev, (uint16_t)(rte_pktmbuf_data_room_size(rxq->mp) - RTE_PKTMBUF_HEADROOM); int use_scattered_rx = - ((rxq->max_pkt_len + 2 * I40E_VLAN_TAG_SIZE) > buf_size); + (rxq->max_pkt_len > buf_size); if (i40e_rx_queue_init(rxq) != I40E_SUCCESS) { PMD_DRV_LOG(ERR, @@ -2423,13 +2423,13 @@ i40e_tx_queue_release_mbufs(struct i40e_tx_queue *txq) struct rte_eth_dev *dev; uint16_t i; - dev = &rte_eth_devices[txq->port_id]; - if (!txq || !txq->sw_ring) { - PMD_DRV_LOG(DEBUG, "Pointer to rxq or sw_ring is NULL"); + PMD_DRV_LOG(DEBUG, "Pointer to txq or sw_ring is NULL"); return; } + dev = &rte_eth_devices[txq->port_id]; + /** * vPMD tx will not set sw_ring's mbuf to NULL after free, * so need to free remains more carefully. @@ -2708,9 +2708,8 @@ i40e_rx_queue_init(struct i40e_rx_queue *rxq) RTE_PKTMBUF_HEADROOM); /* Check if scattered RX needs to be used. */ - if ((rxq->max_pkt_len + 2 * I40E_VLAN_TAG_SIZE) > buf_size) { + if (rxq->max_pkt_len > buf_size) dev_data->scattered_rx = 1; - } /* Init the RX tail regieter. */ I40E_PCI_REG_WRITE(rxq->qrx_tail, rxq->nb_rx_desc - 1); @@ -2753,7 +2752,6 @@ i40e_dev_free_queues(struct rte_eth_dev *dev) i40e_dev_rx_queue_release(dev->data->rx_queues[i]); dev->data->rx_queues[i] = NULL; } - dev->data->nb_rx_queues = 0; for (i = 0; i < dev->data->nb_tx_queues; i++) { if (!dev->data->tx_queues[i]) @@ -2761,7 +2759,6 @@ i40e_dev_free_queues(struct rte_eth_dev *dev) i40e_dev_tx_queue_release(dev->data->tx_queues[i]); dev->data->tx_queues[i] = NULL; } - dev->data->nb_tx_queues = 0; } #define I40E_FDIR_NUM_TX_DESC I40E_MIN_RING_DESC @@ -3184,7 +3181,7 @@ i40e_set_default_pctype_table(struct rte_eth_dev *dev) } } -/* Stubs needed for linkage when CONFIG_RTE_I40E_INC_VECTOR is set to 'n' */ +/* Stubs needed for linkage when CONFIG_RTE_LIBRTE_I40E_INC_VECTOR is set to 'n' */ __rte_weak int i40e_rx_vec_dev_conf_condition_check(struct rte_eth_dev __rte_unused *dev) { diff --git a/dpdk/drivers/net/i40e/rte_pmd_i40e.c b/dpdk/drivers/net/i40e/rte_pmd_i40e.c index 7ce5d02fa..c49c872b6 100644 --- a/dpdk/drivers/net/i40e/rte_pmd_i40e.c +++ b/dpdk/drivers/net/i40e/rte_pmd_i40e.c @@ -2818,13 +2818,23 @@ i40e_queue_region_dcb_configure(struct i40e_hw *hw, struct i40e_dcbx_config *old_cfg = &hw->local_dcbx_config; int32_t ret = -EINVAL; uint16_t i, j, prio_index, region_index; - uint8_t tc_map, tc_bw, bw_lf; + uint8_t tc_map, tc_bw, bw_lf, dcb_flag = 0; if (!info->queue_region_number) { PMD_DRV_LOG(ERR, "No queue region been set before"); return ret; } + for (i = 0; i < info->queue_region_number; i++) { + if (info->region[i].user_priority_num) { + dcb_flag = 1; + break; + } + } + + if (dcb_flag == 0) + return 0; + dcb_cfg = &dcb_cfg_local; memset(dcb_cfg, 0, sizeof(struct i40e_dcbx_config)); diff --git a/dpdk/drivers/net/i40e/rte_pmd_i40e.h b/dpdk/drivers/net/i40e/rte_pmd_i40e.h index be4a6024a..a1313146b 100644 --- a/dpdk/drivers/net/i40e/rte_pmd_i40e.h +++ b/dpdk/drivers/net/i40e/rte_pmd_i40e.h @@ -270,7 +270,7 @@ struct rte_pmd_i40e_pkt_template_action { struct rte_pmd_i40e_pkt_template_input { /** the pctype used for raw packet template */ uint16_t pctype; - /** the buffer conatining raw packet template */ + /** the buffer containing raw packet template */ void *packet; /** the length of buffer with raw packet template */ uint32_t length; @@ -314,7 +314,7 @@ struct rte_pmd_i40e_inset { * @param conf * Specifies configuration parameters of raw packet template filter. * @param add - * Speicifes an action to be taken - add or remove raw packet template filter. + * Specifies an action to be taken - add or remove raw packet template filter. * @return * - (0) if successful. * - (-ENODEV) if *port* invalid. diff --git a/dpdk/drivers/net/ifc/base/ifcvf.h b/dpdk/drivers/net/ifc/base/ifcvf.h index f026c70ab..c15c69107 100644 --- a/dpdk/drivers/net/ifc/base/ifcvf.h +++ b/dpdk/drivers/net/ifc/base/ifcvf.h @@ -121,7 +121,7 @@ struct ifcvf_hw { u8 notify_region; u32 notify_off_multiplier; struct ifcvf_pci_common_cfg *common_cfg; - struct ifcvf_net_device_config *dev_cfg; + struct ifcvf_net_config *dev_cfg; u8 *isr; u16 *notify_base; u16 *notify_addr[IFCVF_MAX_QUEUES * 2]; diff --git a/dpdk/drivers/net/ifc/ifcvf_vdpa.c b/dpdk/drivers/net/ifc/ifcvf_vdpa.c index 97a57f182..698d14f88 100644 --- a/dpdk/drivers/net/ifc/ifcvf_vdpa.c +++ b/dpdk/drivers/net/ifc/ifcvf_vdpa.c @@ -773,15 +773,15 @@ ifcvf_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, internal->dev_addr.type = PCI_ADDR; list->internal = internal; - pthread_mutex_lock(&internal_list_lock); - TAILQ_INSERT_TAIL(&internal_list, list, next); - pthread_mutex_unlock(&internal_list_lock); - internal->did = rte_vdpa_register_device(&internal->dev_addr, &ifcvf_ops); if (internal->did < 0) goto error; + pthread_mutex_lock(&internal_list_lock); + TAILQ_INSERT_TAIL(&internal_list, list, next); + pthread_mutex_unlock(&internal_list_lock); + rte_atomic32_set(&internal->started, 1); update_datapath(internal); diff --git a/dpdk/drivers/net/ixgbe/base/ixgbe_82599.c b/dpdk/drivers/net/ixgbe/base/ixgbe_82599.c index 7de753fd3..96bdde62c 100644 --- a/dpdk/drivers/net/ixgbe/base/ixgbe_82599.c +++ b/dpdk/drivers/net/ixgbe/base/ixgbe_82599.c @@ -392,6 +392,8 @@ s32 ixgbe_get_link_capabilities_82599(struct ixgbe_hw *hw, /* Check if 1G SFP module. */ if (hw->phy.sfp_type == ixgbe_sfp_type_1g_cu_core0 || hw->phy.sfp_type == ixgbe_sfp_type_1g_cu_core1 || + hw->phy.sfp_type == ixgbe_sfp_type_1g_lha_core0 || + hw->phy.sfp_type == ixgbe_sfp_type_1g_lha_core1 || hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core0 || hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core1 || hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core0 || diff --git a/dpdk/drivers/net/ixgbe/base/ixgbe_phy.c b/dpdk/drivers/net/ixgbe/base/ixgbe_phy.c index 6cdd8fbab..dd118f917 100644 --- a/dpdk/drivers/net/ixgbe/base/ixgbe_phy.c +++ b/dpdk/drivers/net/ixgbe/base/ixgbe_phy.c @@ -1402,6 +1402,13 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw) else hw->phy.sfp_type = ixgbe_sfp_type_1g_lx_core1; + } else if (comp_codes_1g & IXGBE_SFF_1GBASELHA_CAPABLE) { + if (hw->bus.lan_id == 0) + hw->phy.sfp_type = + ixgbe_sfp_type_1g_lha_core0; + else + hw->phy.sfp_type = + ixgbe_sfp_type_1g_lha_core1; } else { hw->phy.sfp_type = ixgbe_sfp_type_unknown; } @@ -1489,6 +1496,8 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw) if (comp_codes_10g == 0 && !(hw->phy.sfp_type == ixgbe_sfp_type_1g_cu_core1 || hw->phy.sfp_type == ixgbe_sfp_type_1g_cu_core0 || + hw->phy.sfp_type == ixgbe_sfp_type_1g_lha_core0 || + hw->phy.sfp_type == ixgbe_sfp_type_1g_lha_core1 || hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core0 || hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core1 || hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core0 || @@ -1508,6 +1517,8 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw) if (!(enforce_sfp & IXGBE_DEVICE_CAPS_ALLOW_ANY_SFP) && !(hw->phy.sfp_type == ixgbe_sfp_type_1g_cu_core0 || hw->phy.sfp_type == ixgbe_sfp_type_1g_cu_core1 || + hw->phy.sfp_type == ixgbe_sfp_type_1g_lha_core0 || + hw->phy.sfp_type == ixgbe_sfp_type_1g_lha_core1 || hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core0 || hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core1 || hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core0 || @@ -1835,11 +1846,13 @@ s32 ixgbe_get_sfp_init_sequence_offsets(struct ixgbe_hw *hw, */ if (sfp_type == ixgbe_sfp_type_da_act_lmt_core0 || sfp_type == ixgbe_sfp_type_1g_lx_core0 || + sfp_type == ixgbe_sfp_type_1g_lha_core0 || sfp_type == ixgbe_sfp_type_1g_cu_core0 || sfp_type == ixgbe_sfp_type_1g_sx_core0) sfp_type = ixgbe_sfp_type_srlr_core0; else if (sfp_type == ixgbe_sfp_type_da_act_lmt_core1 || sfp_type == ixgbe_sfp_type_1g_lx_core1 || + sfp_type == ixgbe_sfp_type_1g_lha_core1 || sfp_type == ixgbe_sfp_type_1g_cu_core1 || sfp_type == ixgbe_sfp_type_1g_sx_core1) sfp_type = ixgbe_sfp_type_srlr_core1; diff --git a/dpdk/drivers/net/ixgbe/base/ixgbe_phy.h b/dpdk/drivers/net/ixgbe/base/ixgbe_phy.h index 132fa542b..f1605f2cc 100644 --- a/dpdk/drivers/net/ixgbe/base/ixgbe_phy.h +++ b/dpdk/drivers/net/ixgbe/base/ixgbe_phy.h @@ -41,6 +41,7 @@ #define IXGBE_SFF_1GBASESX_CAPABLE 0x1 #define IXGBE_SFF_1GBASELX_CAPABLE 0x2 #define IXGBE_SFF_1GBASET_CAPABLE 0x8 +#define IXGBE_SFF_1GBASELHA_CAPABLE 0x10 #define IXGBE_SFF_10GBASESR_CAPABLE 0x10 #define IXGBE_SFF_10GBASELR_CAPABLE 0x20 #define IXGBE_SFF_SOFT_RS_SELECT_MASK 0x8 diff --git a/dpdk/drivers/net/ixgbe/base/ixgbe_type.h b/dpdk/drivers/net/ixgbe/base/ixgbe_type.h index cee6ba2e0..077b8f01c 100644 --- a/dpdk/drivers/net/ixgbe/base/ixgbe_type.h +++ b/dpdk/drivers/net/ixgbe/base/ixgbe_type.h @@ -3724,6 +3724,8 @@ enum ixgbe_sfp_type { ixgbe_sfp_type_1g_sx_core1 = 12, ixgbe_sfp_type_1g_lx_core0 = 13, ixgbe_sfp_type_1g_lx_core1 = 14, + ixgbe_sfp_type_1g_lha_core0 = 15, + ixgbe_sfp_type_1g_lha_core1 = 16, ixgbe_sfp_type_not_present = 0xFFFE, ixgbe_sfp_type_unknown = 0xFFFF }; diff --git a/dpdk/drivers/net/ixgbe/base/ixgbe_x550.c b/dpdk/drivers/net/ixgbe/base/ixgbe_x550.c index f7b98af52..a920a146e 100644 --- a/dpdk/drivers/net/ixgbe/base/ixgbe_x550.c +++ b/dpdk/drivers/net/ixgbe/base/ixgbe_x550.c @@ -1534,6 +1534,8 @@ STATIC s32 ixgbe_supported_sfp_modules_X550em(struct ixgbe_hw *hw, bool *linear) case ixgbe_sfp_type_1g_sx_core1: case ixgbe_sfp_type_1g_lx_core0: case ixgbe_sfp_type_1g_lx_core1: + case ixgbe_sfp_type_1g_lha_core0: + case ixgbe_sfp_type_1g_lha_core1: *linear = false; break; case ixgbe_sfp_type_unknown: @@ -1874,6 +1876,8 @@ s32 ixgbe_get_link_capabilities_X550em(struct ixgbe_hw *hw, /* Check if 1G SFP module. */ if (hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core0 || hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core1 + || hw->phy.sfp_type == ixgbe_sfp_type_1g_lha_core0 || + hw->phy.sfp_type == ixgbe_sfp_type_1g_lha_core1 || hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core0 || hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core1) { *speed = IXGBE_LINK_SPEED_1GB_FULL; diff --git a/dpdk/drivers/net/ixgbe/ixgbe_ethdev.c b/dpdk/drivers/net/ixgbe/ixgbe_ethdev.c index 91ba6201d..e9533e5a1 100644 --- a/dpdk/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/dpdk/drivers/net/ixgbe/ixgbe_ethdev.c @@ -1336,6 +1336,9 @@ eth_ixgbe_dev_uninit(struct rte_eth_dev *eth_dev) rte_delay_ms(100); } while (retries++ < (10 + IXGBE_LINK_UP_TIME)); + /* cancel the delay handler before remove dev */ + rte_eal_alarm_cancel(ixgbe_dev_interrupt_delayed_handler, eth_dev); + /* uninitialize PF if max_vfs not zero */ ixgbe_pf_host_uninit(eth_dev); @@ -2790,6 +2793,8 @@ static void ixgbe_dev_stop(struct rte_eth_dev *dev) { struct rte_eth_link link; + struct ixgbe_adapter *adapter = + (struct ixgbe_adapter *)dev->data->dev_private; struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); struct ixgbe_vf_info *vfinfo = @@ -2850,6 +2855,8 @@ ixgbe_dev_stop(struct rte_eth_dev *dev) /* reset hierarchy commit */ tm_conf->committed = false; + + adapter->rss_reta_updated = 0; } /* @@ -4779,6 +4786,8 @@ ixgbe_dev_rss_reta_update(struct rte_eth_dev *dev, uint8_t j, mask; uint32_t reta, r; uint16_t idx, shift; + struct ixgbe_adapter *adapter = + (struct ixgbe_adapter *)dev->data->dev_private; struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); uint32_t reta_reg; @@ -4820,6 +4829,7 @@ ixgbe_dev_rss_reta_update(struct rte_eth_dev *dev, } IXGBE_WRITE_REG(hw, reta_reg, reta); } + adapter->rss_reta_updated = 1; return 0; } @@ -5143,6 +5153,8 @@ static void ixgbevf_dev_stop(struct rte_eth_dev *dev) { struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); + struct ixgbe_adapter *adapter = + (struct ixgbe_adapter *)dev->data->dev_private; struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); struct rte_intr_handle *intr_handle = &pci_dev->intr_handle; @@ -5172,6 +5184,8 @@ ixgbevf_dev_stop(struct rte_eth_dev *dev) rte_free(intr_handle->intr_vec); intr_handle->intr_vec = NULL; } + + adapter->rss_reta_updated = 0; } static void diff --git a/dpdk/drivers/net/ixgbe/ixgbe_ethdev.h b/dpdk/drivers/net/ixgbe/ixgbe_ethdev.h index d0b93968b..565c69c9e 100644 --- a/dpdk/drivers/net/ixgbe/ixgbe_ethdev.h +++ b/dpdk/drivers/net/ixgbe/ixgbe_ethdev.h @@ -490,6 +490,9 @@ struct ixgbe_adapter { struct rte_timecounter rx_tstamp_tc; struct rte_timecounter tx_tstamp_tc; struct ixgbe_tm_conf tm_conf; + + /* For RSS reta table update */ + uint8_t rss_reta_updated; }; struct ixgbe_vf_representor { diff --git a/dpdk/drivers/net/ixgbe/ixgbe_pf.c b/dpdk/drivers/net/ixgbe/ixgbe_pf.c index 4b833ffab..be0c0768c 100644 --- a/dpdk/drivers/net/ixgbe/ixgbe_pf.c +++ b/dpdk/drivers/net/ixgbe/ixgbe_pf.c @@ -351,7 +351,7 @@ ixgbe_vf_reset_event(struct rte_eth_dev *dev, uint16_t vf) int rar_entry = hw->mac.num_rar_entries - (vf + 1); uint32_t vmolr = IXGBE_READ_REG(hw, IXGBE_VMOLR(vf)); - vmolr |= (IXGBE_VMOLR_ROPE | IXGBE_VMOLR_ROMPE | + vmolr |= (IXGBE_VMOLR_ROPE | IXGBE_VMOLR_BAM | IXGBE_VMOLR_AUPE); IXGBE_WRITE_REG(hw, IXGBE_VMOLR(vf), vmolr); @@ -503,6 +503,7 @@ ixgbe_vf_set_multicast(struct rte_eth_dev *dev, uint32_t vf, uint32_t *msgbuf) const uint32_t IXGBE_MTA_BIT_MASK = (0x1 << IXGBE_MTA_BIT_SHIFT) - 1; uint32_t reg_val; int i; + u32 vmolr = IXGBE_READ_REG(hw, IXGBE_VMOLR(vf)); /* Disable multicast promiscuous first */ ixgbe_disable_vf_mc_promisc(dev, vf); @@ -516,6 +517,12 @@ ixgbe_vf_set_multicast(struct rte_eth_dev *dev, uint32_t vf, uint32_t *msgbuf) vfinfo->vf_mc_hashes[i] = hash_list[i]; } + if (nb_entries == 0) { + vmolr &= ~IXGBE_VMOLR_ROMPE; + IXGBE_WRITE_REG(hw, IXGBE_VMOLR(vf), vmolr); + return 0; + } + for (i = 0; i < vfinfo->num_vf_mc_hashes; i++) { mta_idx = (vfinfo->vf_mc_hashes[i] >> IXGBE_MTA_BIT_SHIFT) & IXGBE_MTA_INDEX_MASK; @@ -525,6 +532,9 @@ ixgbe_vf_set_multicast(struct rte_eth_dev *dev, uint32_t vf, uint32_t *msgbuf) IXGBE_WRITE_REG(hw, IXGBE_MTA(mta_idx), reg_val); } + vmolr |= IXGBE_VMOLR_ROMPE; + IXGBE_WRITE_REG(hw, IXGBE_VMOLR(vf), vmolr); + return 0; } diff --git a/dpdk/drivers/net/ixgbe/ixgbe_rxtx.c b/dpdk/drivers/net/ixgbe/ixgbe_rxtx.c index ddc7efa87..46c93f595 100644 --- a/dpdk/drivers/net/ixgbe/ixgbe_rxtx.c +++ b/dpdk/drivers/net/ixgbe/ixgbe_rxtx.c @@ -2029,7 +2029,7 @@ ixgbe_recv_pkts_lro(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts, struct ixgbe_rx_entry *next_rxe = NULL; struct rte_mbuf *first_seg; struct rte_mbuf *rxm; - struct rte_mbuf *nmb; + struct rte_mbuf *nmb = NULL; union ixgbe_adv_rx_desc rxd; uint16_t data_len; uint16_t next_id; @@ -2853,21 +2853,22 @@ ixgbe_get_rx_port_offloads(struct rte_eth_dev *dev) DEV_RX_OFFLOAD_TCP_CKSUM | DEV_RX_OFFLOAD_KEEP_CRC | DEV_RX_OFFLOAD_JUMBO_FRAME | + DEV_RX_OFFLOAD_VLAN_FILTER | DEV_RX_OFFLOAD_SCATTER; if (hw->mac.type == ixgbe_mac_82598EB) offloads |= DEV_RX_OFFLOAD_VLAN_STRIP; if (ixgbe_is_vf(dev) == 0) - offloads |= (DEV_RX_OFFLOAD_VLAN_FILTER | - DEV_RX_OFFLOAD_VLAN_EXTEND); + offloads |= DEV_RX_OFFLOAD_VLAN_EXTEND; /* * RSC is only supported by 82599 and x540 PF devices in a non-SR-IOV * mode. */ if ((hw->mac.type == ixgbe_mac_82599EB || - hw->mac.type == ixgbe_mac_X540) && + hw->mac.type == ixgbe_mac_X540 || + hw->mac.type == ixgbe_mac_X550) && !RTE_ETH_DEV_SRIOV(dev).active) offloads |= DEV_RX_OFFLOAD_TCP_LRO; @@ -3417,6 +3418,7 @@ static void ixgbe_rss_configure(struct rte_eth_dev *dev) { struct rte_eth_rss_conf rss_conf; + struct ixgbe_adapter *adapter; struct ixgbe_hw *hw; uint32_t reta; uint16_t i; @@ -3425,6 +3427,7 @@ ixgbe_rss_configure(struct rte_eth_dev *dev) uint32_t reta_reg; PMD_INIT_FUNC_TRACE(); + adapter = (struct ixgbe_adapter *)dev->data->dev_private; hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); sp_reta_size = ixgbe_reta_size_get(hw->mac.type); @@ -3434,16 +3437,18 @@ ixgbe_rss_configure(struct rte_eth_dev *dev) * The byte-swap is needed because NIC registers are in * little-endian order. */ - reta = 0; - for (i = 0, j = 0; i < sp_reta_size; i++, j++) { - reta_reg = ixgbe_reta_reg_get(hw->mac.type, i); + if (adapter->rss_reta_updated == 0) { + reta = 0; + for (i = 0, j = 0; i < sp_reta_size; i++, j++) { + reta_reg = ixgbe_reta_reg_get(hw->mac.type, i); - if (j == dev->data->nb_rx_queues) - j = 0; - reta = (reta << 8) | j; - if ((i & 3) == 3) - IXGBE_WRITE_REG(hw, reta_reg, - rte_bswap32(reta)); + if (j == dev->data->nb_rx_queues) + j = 0; + reta = (reta << 8) | j; + if ((i & 3) == 3) + IXGBE_WRITE_REG(hw, reta_reg, + rte_bswap32(reta)); + } } /* diff --git a/dpdk/drivers/net/kni/rte_eth_kni.c b/dpdk/drivers/net/kni/rte_eth_kni.c index a1e9970df..9879985ec 100644 --- a/dpdk/drivers/net/kni/rte_eth_kni.c +++ b/dpdk/drivers/net/kni/rte_eth_kni.c @@ -454,6 +454,7 @@ eth_kni_remove(struct rte_vdev_device *vdev) struct rte_eth_dev *eth_dev; struct pmd_internals *internals; const char *name; + int ret; name = rte_vdev_device_name(vdev); PMD_LOG(INFO, "Un-Initializing eth_kni for %s", name); @@ -472,7 +473,9 @@ eth_kni_remove(struct rte_vdev_device *vdev) eth_kni_dev_stop(eth_dev); internals = eth_dev->data->dev_private; - rte_kni_release(internals->kni); + ret = rte_kni_release(internals->kni); + if (ret) + PMD_LOG(WARNING, "Not able to release kni for %s", name); rte_eth_dev_release_port(eth_dev); diff --git a/dpdk/drivers/net/mlx4/mlx4.c b/dpdk/drivers/net/mlx4/mlx4.c index 7f07b8dc0..4bc966d5f 100644 --- a/dpdk/drivers/net/mlx4/mlx4.c +++ b/dpdk/drivers/net/mlx4/mlx4.c @@ -81,7 +81,7 @@ static void mlx4_dev_stop(struct rte_eth_dev *dev); static int mlx4_dev_configure(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; struct rte_flow_error error; int ret; @@ -117,7 +117,7 @@ exit: static int mlx4_dev_start(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; struct rte_flow_error error; int ret; @@ -169,7 +169,7 @@ err: static void mlx4_dev_stop(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; if (!priv->started) return; @@ -194,7 +194,7 @@ mlx4_dev_stop(struct rte_eth_dev *dev) static void mlx4_dev_close(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; unsigned int i; DEBUG("%p: closing device \"%s\"", @@ -599,7 +599,7 @@ mlx4_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev) struct ibv_context *ctx = NULL; struct ibv_port_attr port_attr; struct ibv_pd *pd = NULL; - struct priv *priv = NULL; + struct mlx4_priv *priv = NULL; struct rte_eth_dev *eth_dev = NULL; struct ether_addr mac; @@ -752,11 +752,11 @@ mlx4_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev) * handled by rte_intr_rx_ctl(). */ eth_dev->intr_handle = &priv->intr_handle; - priv->dev = eth_dev; + priv->dev_data = eth_dev->data; eth_dev->dev_ops = &mlx4_dev_ops; /* Bring Ethernet device up. */ DEBUG("forcing Ethernet interface up"); - mlx4_dev_set_link_up(priv->dev); + mlx4_dev_set_link_up(eth_dev); /* Update link status once if waiting for LSC. */ if (eth_dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC) mlx4_link_update(eth_dev, 0); diff --git a/dpdk/drivers/net/mlx4/mlx4.h b/dpdk/drivers/net/mlx4/mlx4.h index e6fb934fa..fc568eb3e 100644 --- a/dpdk/drivers/net/mlx4/mlx4.h +++ b/dpdk/drivers/net/mlx4/mlx4.h @@ -72,13 +72,14 @@ struct rxq; struct txq; struct rte_flow; -LIST_HEAD(mlx4_dev_list, priv); +LIST_HEAD(mlx4_dev_list, mlx4_priv); LIST_HEAD(mlx4_mr_list, mlx4_mr); /** Private data structure. */ -struct priv { - LIST_ENTRY(priv) mem_event_cb; /* Called by memory event callback. */ - struct rte_eth_dev *dev; /**< Ethernet device. */ +struct mlx4_priv { + LIST_ENTRY(mlx4_priv) mem_event_cb; + /**< Called by memory event callback. */ + struct rte_eth_dev_data *dev_data; /* Pointer to device data. */ struct ibv_context *ctx; /**< Verbs context. */ struct ibv_device_attr device_attr; /**< Device properties. */ struct ibv_pd *pd; /**< Protection Domain. */ @@ -112,11 +113,14 @@ struct priv { /**< Configured MAC addresses. Unused entries are zeroed. */ }; +#define PORT_ID(priv) ((priv)->dev_data->port_id) +#define ETH_DEV(priv) (&rte_eth_devices[PORT_ID(priv)]) + /* mlx4_ethdev.c */ -int mlx4_get_ifname(const struct priv *priv, char (*ifname)[IF_NAMESIZE]); -int mlx4_get_mac(struct priv *priv, uint8_t (*mac)[ETHER_ADDR_LEN]); -int mlx4_mtu_get(struct priv *priv, uint16_t *mtu); +int mlx4_get_ifname(const struct mlx4_priv *priv, char (*ifname)[IF_NAMESIZE]); +int mlx4_get_mac(struct mlx4_priv *priv, uint8_t (*mac)[ETHER_ADDR_LEN]); +int mlx4_mtu_get(struct mlx4_priv *priv, uint16_t *mtu); int mlx4_mtu_set(struct rte_eth_dev *dev, uint16_t mtu); int mlx4_dev_set_link_down(struct rte_eth_dev *dev); int mlx4_dev_set_link_up(struct rte_eth_dev *dev); @@ -143,10 +147,10 @@ int mlx4_is_removed(struct rte_eth_dev *dev); /* mlx4_intr.c */ -int mlx4_intr_uninstall(struct priv *priv); -int mlx4_intr_install(struct priv *priv); -int mlx4_rxq_intr_enable(struct priv *priv); -void mlx4_rxq_intr_disable(struct priv *priv); +int mlx4_intr_uninstall(struct mlx4_priv *priv); +int mlx4_intr_install(struct mlx4_priv *priv); +int mlx4_rxq_intr_enable(struct mlx4_priv *priv); +void mlx4_rxq_intr_disable(struct mlx4_priv *priv); int mlx4_rx_intr_disable(struct rte_eth_dev *dev, uint16_t idx); int mlx4_rx_intr_enable(struct rte_eth_dev *dev, uint16_t idx); diff --git a/dpdk/drivers/net/mlx4/mlx4_ethdev.c b/dpdk/drivers/net/mlx4/mlx4_ethdev.c index 195a1b6df..084b24e49 100644 --- a/dpdk/drivers/net/mlx4/mlx4_ethdev.c +++ b/dpdk/drivers/net/mlx4/mlx4_ethdev.c @@ -59,7 +59,7 @@ * 0 on success, negative errno value otherwise and rte_errno is set. */ int -mlx4_get_ifname(const struct priv *priv, char (*ifname)[IF_NAMESIZE]) +mlx4_get_ifname(const struct mlx4_priv *priv, char (*ifname)[IF_NAMESIZE]) { DIR *dir; struct dirent *dent; @@ -146,7 +146,7 @@ try_dev_id: * 0 on success, negative errno value otherwise and rte_errno is set. */ static int -mlx4_ifreq(const struct priv *priv, int req, struct ifreq *ifr) +mlx4_ifreq(const struct mlx4_priv *priv, int req, struct ifreq *ifr) { int sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP); int ret; @@ -176,7 +176,7 @@ mlx4_ifreq(const struct priv *priv, int req, struct ifreq *ifr) * 0 on success, negative errno value otherwise and rte_errno is set. */ int -mlx4_get_mac(struct priv *priv, uint8_t (*mac)[ETHER_ADDR_LEN]) +mlx4_get_mac(struct mlx4_priv *priv, uint8_t (*mac)[ETHER_ADDR_LEN]) { struct ifreq request; int ret = mlx4_ifreq(priv, SIOCGIFHWADDR, &request); @@ -199,7 +199,7 @@ mlx4_get_mac(struct priv *priv, uint8_t (*mac)[ETHER_ADDR_LEN]) * 0 on success, negative errno value otherwise and rte_errno is set. */ int -mlx4_mtu_get(struct priv *priv, uint16_t *mtu) +mlx4_mtu_get(struct mlx4_priv *priv, uint16_t *mtu) { struct ifreq request; int ret = mlx4_ifreq(priv, SIOCGIFMTU, &request); @@ -224,7 +224,7 @@ mlx4_mtu_get(struct priv *priv, uint16_t *mtu) int mlx4_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; struct ifreq request = { .ifr_mtu = mtu, }; int ret = mlx4_ifreq(priv, SIOCSIFMTU, &request); @@ -248,7 +248,7 @@ mlx4_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) * 0 on success, negative errno value otherwise and rte_errno is set. */ static int -mlx4_set_flags(struct priv *priv, unsigned int keep, unsigned int flags) +mlx4_set_flags(struct mlx4_priv *priv, unsigned int keep, unsigned int flags) { struct ifreq request; int ret = mlx4_ifreq(priv, SIOCGIFFLAGS, &request); @@ -272,7 +272,7 @@ mlx4_set_flags(struct priv *priv, unsigned int keep, unsigned int flags) * 0 on success, negative errno value otherwise and rte_errno is set. */ static int -mlx4_dev_set_link(struct priv *priv, int up) +mlx4_dev_set_link(struct mlx4_priv *priv, int up) { int err; @@ -300,7 +300,7 @@ mlx4_dev_set_link(struct priv *priv, int up) int mlx4_dev_set_link_down(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; return mlx4_dev_set_link(priv, 0); } @@ -317,7 +317,7 @@ mlx4_dev_set_link_down(struct rte_eth_dev *dev) int mlx4_dev_set_link_up(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; return mlx4_dev_set_link(priv, 1); } @@ -345,7 +345,7 @@ enum rxmode_toggle { static void mlx4_rxmode_toggle(struct rte_eth_dev *dev, enum rxmode_toggle toggle) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; const char *mode; struct rte_flow_error error; @@ -430,7 +430,7 @@ mlx4_allmulticast_disable(struct rte_eth_dev *dev) void mlx4_mac_addr_remove(struct rte_eth_dev *dev, uint32_t index) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; struct rte_flow_error error; if (index >= RTE_DIM(priv->mac)) { @@ -466,7 +466,7 @@ int mlx4_mac_addr_add(struct rte_eth_dev *dev, struct ether_addr *mac_addr, uint32_t index, uint32_t vmdq) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; struct rte_flow_error error; int ret; @@ -503,7 +503,7 @@ mlx4_mac_addr_add(struct rte_eth_dev *dev, struct ether_addr *mac_addr, int mlx4_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; struct rte_flow_error error; unsigned int vidx = vlan_id / 64; unsigned int vbit = vlan_id % 64; @@ -557,7 +557,7 @@ mlx4_mac_addr_set(struct rte_eth_dev *dev, struct ether_addr *mac_addr) void mlx4_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; unsigned int max; char ifname[IF_NAMESIZE]; @@ -688,7 +688,7 @@ mlx4_stats_reset(struct rte_eth_dev *dev) int mlx4_link_update(struct rte_eth_dev *dev, int wait_to_complete) { - const struct priv *priv = dev->data->dev_private; + const struct mlx4_priv *priv = dev->data->dev_private; struct ethtool_cmd edata = { .cmd = ETHTOOL_GSET, }; @@ -741,7 +741,7 @@ mlx4_link_update(struct rte_eth_dev *dev, int wait_to_complete) int mlx4_flow_ctrl_get(struct rte_eth_dev *dev, struct rte_eth_fc_conf *fc_conf) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; struct ifreq ifr; struct ethtool_pauseparam ethpause = { .cmd = ETHTOOL_GPAUSEPARAM, @@ -785,7 +785,7 @@ out: int mlx4_flow_ctrl_set(struct rte_eth_dev *dev, struct rte_eth_fc_conf *fc_conf) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; struct ifreq ifr; struct ethtool_pauseparam ethpause = { .cmd = ETHTOOL_SPAUSEPARAM, @@ -853,7 +853,7 @@ mlx4_dev_supported_ptypes_get(struct rte_eth_dev *dev) RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN, RTE_PTYPE_UNKNOWN }; - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; if (dev->rx_pkt_burst == mlx4_rx_burst) { if (priv->hw_csum_l2tun) @@ -877,7 +877,7 @@ int mlx4_is_removed(struct rte_eth_dev *dev) { struct ibv_device_attr device_attr; - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; if (mlx4_glue->query_device(priv->ctx, &device_attr) == EIO) return 1; diff --git a/dpdk/drivers/net/mlx4/mlx4_flow.c b/dpdk/drivers/net/mlx4/mlx4_flow.c index b40e7e5c3..5136d136f 100644 --- a/dpdk/drivers/net/mlx4/mlx4_flow.c +++ b/dpdk/drivers/net/mlx4/mlx4_flow.c @@ -71,7 +71,7 @@ struct mlx4_flow_proc_item { struct mlx4_drop { struct ibv_qp *qp; /**< QP target. */ struct ibv_cq *cq; /**< CQ associated with above QP. */ - struct priv *priv; /**< Back pointer to private data. */ + struct mlx4_priv *priv; /**< Back pointer to private data. */ uint32_t refcnt; /**< Reference count. */ }; @@ -95,7 +95,7 @@ struct mlx4_drop { * rte_errno is set. */ uint64_t -mlx4_conv_rss_types(struct priv *priv, uint64_t types, int verbs_to_dpdk) +mlx4_conv_rss_types(struct mlx4_priv *priv, uint64_t types, int verbs_to_dpdk) { enum { INNER, @@ -657,7 +657,7 @@ static const struct mlx4_flow_proc_item mlx4_flow_proc_item_list[] = { * 0 on success, a negative errno value otherwise and rte_errno is set. */ static int -mlx4_flow_prepare(struct priv *priv, +mlx4_flow_prepare(struct mlx4_priv *priv, const struct rte_flow_attr *attr, const struct rte_flow_item pattern[], const struct rte_flow_action actions[], @@ -767,7 +767,7 @@ fill: if (flow->rss) break; queue = action->conf; - if (queue->index >= priv->dev->data->nb_rx_queues) { + if (queue->index >= ETH_DEV(priv)->data->nb_rx_queues) { msg = "queue target index beyond number of" " configured Rx queues"; goto exit_action_not_supported; @@ -796,7 +796,7 @@ fill: /* Sanity checks. */ for (i = 0; i < rss->queue_num; ++i) if (rss->queue[i] >= - priv->dev->data->nb_rx_queues) + ETH_DEV(priv)->data->nb_rx_queues) break; if (i != rss->queue_num) { msg = "queue index target beyond number of" @@ -928,7 +928,7 @@ mlx4_flow_validate(struct rte_eth_dev *dev, const struct rte_flow_action actions[], struct rte_flow_error *error) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; return mlx4_flow_prepare(priv, attr, pattern, actions, error, NULL); } @@ -944,7 +944,7 @@ mlx4_flow_validate(struct rte_eth_dev *dev, * is set. */ static struct mlx4_drop * -mlx4_drop_get(struct priv *priv) +mlx4_drop_get(struct mlx4_priv *priv) { struct mlx4_drop *drop = priv->drop; @@ -1020,7 +1020,7 @@ mlx4_drop_put(struct mlx4_drop *drop) * 0 on success, a negative errno value otherwise and rte_errno is set. */ static int -mlx4_flow_toggle(struct priv *priv, +mlx4_flow_toggle(struct mlx4_priv *priv, struct rte_flow *flow, int enable, struct rte_flow_error *error) @@ -1066,8 +1066,8 @@ mlx4_flow_toggle(struct priv *priv, /* Stop at the first nonexistent target queue. */ for (i = 0; i != rss->queues; ++i) if (rss->queue_id[i] >= - priv->dev->data->nb_rx_queues || - !priv->dev->data->rx_queues[rss->queue_id[i]]) { + ETH_DEV(priv)->data->nb_rx_queues || + !ETH_DEV(priv)->data->rx_queues[rss->queue_id[i]]) { missing = 1; break; } @@ -1136,7 +1136,7 @@ mlx4_flow_create(struct rte_eth_dev *dev, const struct rte_flow_action actions[], struct rte_flow_error *error) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; struct rte_flow *flow; int err; @@ -1177,7 +1177,7 @@ mlx4_flow_isolate(struct rte_eth_dev *dev, int enable, struct rte_flow_error *error) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; if (!!enable == !!priv->isolated) return 0; @@ -1200,7 +1200,7 @@ mlx4_flow_destroy(struct rte_eth_dev *dev, struct rte_flow *flow, struct rte_flow_error *error) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; int err = mlx4_flow_toggle(priv, flow, 0, error); if (err) @@ -1224,7 +1224,7 @@ static int mlx4_flow_flush(struct rte_eth_dev *dev, struct rte_flow_error *error) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; struct rte_flow *flow = LIST_FIRST(&priv->flows); while (flow) { @@ -1249,10 +1249,10 @@ mlx4_flow_flush(struct rte_eth_dev *dev, * Next configured VLAN ID or a high value (>= 4096) if there is none. */ static uint16_t -mlx4_flow_internal_next_vlan(struct priv *priv, uint16_t vlan) +mlx4_flow_internal_next_vlan(struct mlx4_priv *priv, uint16_t vlan) { while (vlan < 4096) { - if (priv->dev->data->vlan_filter_conf.ids[vlan / 64] & + if (ETH_DEV(priv)->data->vlan_filter_conf.ids[vlan / 64] & (UINT64_C(1) << (vlan % 64))) return vlan; ++vlan; @@ -1289,7 +1289,7 @@ mlx4_flow_internal_next_vlan(struct priv *priv, uint16_t vlan) * 0 on success, a negative errno value otherwise and rte_errno is set. */ static int -mlx4_flow_internal(struct priv *priv, struct rte_flow_error *error) +mlx4_flow_internal(struct mlx4_priv *priv, struct rte_flow_error *error) { struct rte_flow_attr attr = { .priority = MLX4_FLOW_PRIORITY_LAST, @@ -1329,7 +1329,7 @@ mlx4_flow_internal(struct priv *priv, struct rte_flow_error *error) * get RSS by default. */ uint32_t queues = - rte_align32pow2(priv->dev->data->nb_rx_queues + 1) >> 1; + rte_align32pow2(ETH_DEV(priv)->data->nb_rx_queues + 1) >> 1; uint16_t queue[queues]; struct rte_flow_action_rss action_rss = { .func = RTE_ETH_HASH_FUNCTION_DEFAULT, @@ -1351,9 +1351,9 @@ mlx4_flow_internal(struct priv *priv, struct rte_flow_error *error) }; struct ether_addr *rule_mac = ð_spec.dst; rte_be16_t *rule_vlan = - (priv->dev->data->dev_conf.rxmode.offloads & + (ETH_DEV(priv)->data->dev_conf.rxmode.offloads & DEV_RX_OFFLOAD_VLAN_FILTER) && - !priv->dev->data->promiscuous ? + !ETH_DEV(priv)->data->promiscuous ? &vlan_spec.tci : NULL; uint16_t vlan = 0; @@ -1433,7 +1433,7 @@ next_vlan: if (!flow || !flow->internal) { /* Not found, create a new flow rule. */ memcpy(rule_mac, mac, sizeof(*mac)); - flow = mlx4_flow_create(priv->dev, &attr, pattern, + flow = mlx4_flow_create(ETH_DEV(priv), &attr, pattern, actions, error); if (!flow) { err = -rte_errno; @@ -1449,15 +1449,16 @@ next_vlan: goto next_vlan; } /* Take care of promiscuous and all multicast flow rules. */ - if (priv->dev->data->promiscuous || priv->dev->data->all_multicast) { + if (ETH_DEV(priv)->data->promiscuous || + ETH_DEV(priv)->data->all_multicast) { for (flow = LIST_FIRST(&priv->flows); flow && flow->internal; flow = LIST_NEXT(flow, next)) { - if (priv->dev->data->promiscuous) { + if (ETH_DEV(priv)->data->promiscuous) { if (flow->promisc) break; } else { - assert(priv->dev->data->all_multicast); + assert(ETH_DEV(priv)->data->all_multicast); if (flow->allmulti) break; } @@ -1471,16 +1472,16 @@ next_vlan: } if (!flow || !flow->internal) { /* Not found, create a new flow rule. */ - if (priv->dev->data->promiscuous) { + if (ETH_DEV(priv)->data->promiscuous) { pattern[1].spec = NULL; pattern[1].mask = NULL; } else { - assert(priv->dev->data->all_multicast); + assert(ETH_DEV(priv)->data->all_multicast); pattern[1].spec = ð_allmulti; pattern[1].mask = ð_allmulti; } pattern[2] = pattern[3]; - flow = mlx4_flow_create(priv->dev, &attr, pattern, + flow = mlx4_flow_create(ETH_DEV(priv), &attr, pattern, actions, error); if (!flow) { err = -rte_errno; @@ -1497,7 +1498,8 @@ error: struct rte_flow *next = LIST_NEXT(flow, next); if (!flow->select) - claim_zero(mlx4_flow_destroy(priv->dev, flow, error)); + claim_zero(mlx4_flow_destroy(ETH_DEV(priv), flow, + error)); else flow->select = 0; flow = next; @@ -1521,7 +1523,7 @@ error: * 0 on success, a negative errno value otherwise and rte_errno is set. */ int -mlx4_flow_sync(struct priv *priv, struct rte_flow_error *error) +mlx4_flow_sync(struct mlx4_priv *priv, struct rte_flow_error *error) { struct rte_flow *flow; int ret; @@ -1535,7 +1537,8 @@ mlx4_flow_sync(struct priv *priv, struct rte_flow_error *error) for (flow = LIST_FIRST(&priv->flows); flow && flow->internal; flow = LIST_FIRST(&priv->flows)) - claim_zero(mlx4_flow_destroy(priv->dev, flow, error)); + claim_zero(mlx4_flow_destroy(ETH_DEV(priv), flow, + error)); } else { /* Refresh internal rules. */ ret = mlx4_flow_internal(priv, error); @@ -1563,12 +1566,12 @@ mlx4_flow_sync(struct priv *priv, struct rte_flow_error *error) * Pointer to private structure. */ void -mlx4_flow_clean(struct priv *priv) +mlx4_flow_clean(struct mlx4_priv *priv) { struct rte_flow *flow; while ((flow = LIST_FIRST(&priv->flows))) - mlx4_flow_destroy(priv->dev, flow, NULL); + mlx4_flow_destroy(ETH_DEV(priv), flow, NULL); assert(LIST_EMPTY(&priv->rss)); } diff --git a/dpdk/drivers/net/mlx4/mlx4_flow.h b/dpdk/drivers/net/mlx4/mlx4_flow.h index 2917ebe95..03a4bd05e 100644 --- a/dpdk/drivers/net/mlx4/mlx4_flow.h +++ b/dpdk/drivers/net/mlx4/mlx4_flow.h @@ -48,10 +48,10 @@ struct rte_flow { /* mlx4_flow.c */ -uint64_t mlx4_conv_rss_types(struct priv *priv, uint64_t types, +uint64_t mlx4_conv_rss_types(struct mlx4_priv *priv, uint64_t types, int verbs_to_dpdk); -int mlx4_flow_sync(struct priv *priv, struct rte_flow_error *error); -void mlx4_flow_clean(struct priv *priv); +int mlx4_flow_sync(struct mlx4_priv *priv, struct rte_flow_error *error); +void mlx4_flow_clean(struct mlx4_priv *priv); int mlx4_filter_ctrl(struct rte_eth_dev *dev, enum rte_filter_type filter_type, enum rte_filter_op filter_op, diff --git a/dpdk/drivers/net/mlx4/mlx4_intr.c b/dpdk/drivers/net/mlx4/mlx4_intr.c index eeb982a09..4f3352675 100644 --- a/dpdk/drivers/net/mlx4/mlx4_intr.c +++ b/dpdk/drivers/net/mlx4/mlx4_intr.c @@ -33,7 +33,7 @@ #include "mlx4_rxtx.h" #include "mlx4_utils.h" -static int mlx4_link_status_check(struct priv *priv); +static int mlx4_link_status_check(struct mlx4_priv *priv); /** * Clean up Rx interrupts handler. @@ -42,7 +42,7 @@ static int mlx4_link_status_check(struct priv *priv); * Pointer to private structure. */ static void -mlx4_rx_intr_vec_disable(struct priv *priv) +mlx4_rx_intr_vec_disable(struct mlx4_priv *priv) { struct rte_intr_handle *intr_handle = &priv->intr_handle; @@ -62,10 +62,10 @@ mlx4_rx_intr_vec_disable(struct priv *priv) * 0 on success, negative errno value otherwise and rte_errno is set. */ static int -mlx4_rx_intr_vec_enable(struct priv *priv) +mlx4_rx_intr_vec_enable(struct mlx4_priv *priv) { unsigned int i; - unsigned int rxqs_n = priv->dev->data->nb_rx_queues; + unsigned int rxqs_n = ETH_DEV(priv)->data->nb_rx_queues; unsigned int n = RTE_MIN(rxqs_n, (uint32_t)RTE_MAX_RXTX_INTR_VEC_ID); unsigned int count = 0; struct rte_intr_handle *intr_handle = &priv->intr_handle; @@ -79,7 +79,7 @@ mlx4_rx_intr_vec_enable(struct priv *priv) return -rte_errno; } for (i = 0; i != n; ++i) { - struct rxq *rxq = priv->dev->data->rx_queues[i]; + struct rxq *rxq = ETH_DEV(priv)->data->rx_queues[i]; /* Skip queues that cannot request interrupts. */ if (!rxq || !rxq->channel) { @@ -117,15 +117,15 @@ mlx4_rx_intr_vec_enable(struct priv *priv) * Pointer to private structure. */ static void -mlx4_link_status_alarm(struct priv *priv) +mlx4_link_status_alarm(struct mlx4_priv *priv) { const struct rte_intr_conf *const intr_conf = - &priv->dev->data->dev_conf.intr_conf; + Ð_DEV(priv)->data->dev_conf.intr_conf; assert(priv->intr_alarm == 1); priv->intr_alarm = 0; if (intr_conf->lsc && !mlx4_link_status_check(priv)) - _rte_eth_dev_callback_process(priv->dev, + _rte_eth_dev_callback_process(ETH_DEV(priv), RTE_ETH_EVENT_INTR_LSC, NULL); } @@ -143,10 +143,10 @@ mlx4_link_status_alarm(struct priv *priv) * otherwise and rte_errno is set. */ static int -mlx4_link_status_check(struct priv *priv) +mlx4_link_status_check(struct mlx4_priv *priv) { - struct rte_eth_link *link = &priv->dev->data->dev_link; - int ret = mlx4_link_update(priv->dev, 0); + struct rte_eth_link *link = Ð_DEV(priv)->data->dev_link; + int ret = mlx4_link_update(ETH_DEV(priv), 0); if (ret) return ret; @@ -175,7 +175,7 @@ mlx4_link_status_check(struct priv *priv) * Pointer to private structure. */ static void -mlx4_interrupt_handler(struct priv *priv) +mlx4_interrupt_handler(struct mlx4_priv *priv) { enum { LSC, RMV, }; static const enum rte_eth_event_type type[] = { @@ -185,7 +185,7 @@ mlx4_interrupt_handler(struct priv *priv) uint32_t caught[RTE_DIM(type)] = { 0 }; struct ibv_async_event event; const struct rte_intr_conf *const intr_conf = - &priv->dev->data->dev_conf.intr_conf; + Ð_DEV(priv)->data->dev_conf.intr_conf; unsigned int i; /* Read all message and acknowledge them. */ @@ -208,7 +208,7 @@ mlx4_interrupt_handler(struct priv *priv) } for (i = 0; i != RTE_DIM(caught); ++i) if (caught[i]) - _rte_eth_dev_callback_process(priv->dev, type[i], + _rte_eth_dev_callback_process(ETH_DEV(priv), type[i], NULL); } @@ -251,7 +251,7 @@ mlx4_arm_cq(struct rxq *rxq, int solicited) * 0 on success, negative errno value otherwise and rte_errno is set. */ int -mlx4_intr_uninstall(struct priv *priv) +mlx4_intr_uninstall(struct mlx4_priv *priv) { int err = rte_errno; /* Make sure rte_errno remains unchanged. */ @@ -279,10 +279,10 @@ mlx4_intr_uninstall(struct priv *priv) * 0 on success, negative errno value otherwise and rte_errno is set. */ int -mlx4_intr_install(struct priv *priv) +mlx4_intr_install(struct mlx4_priv *priv) { const struct rte_intr_conf *const intr_conf = - &priv->dev->data->dev_conf.intr_conf; + Ð_DEV(priv)->data->dev_conf.intr_conf; int rc; mlx4_intr_uninstall(priv); @@ -378,10 +378,10 @@ mlx4_rx_intr_enable(struct rte_eth_dev *dev, uint16_t idx) * 0 on success, negative errno value otherwise and rte_errno is set. */ int -mlx4_rxq_intr_enable(struct priv *priv) +mlx4_rxq_intr_enable(struct mlx4_priv *priv) { const struct rte_intr_conf *const intr_conf = - &priv->dev->data->dev_conf.intr_conf; + Ð_DEV(priv)->data->dev_conf.intr_conf; if (intr_conf->rxq && mlx4_rx_intr_vec_enable(priv) < 0) goto error; @@ -397,7 +397,7 @@ error: * Pointer to private structure. */ void -mlx4_rxq_intr_disable(struct priv *priv) +mlx4_rxq_intr_disable(struct mlx4_priv *priv) { int err = rte_errno; /* Make sure rte_errno remains unchanged. */ diff --git a/dpdk/drivers/net/mlx4/mlx4_mr.c b/dpdk/drivers/net/mlx4/mlx4_mr.c index a0094483a..98c236fb7 100644 --- a/dpdk/drivers/net/mlx4/mlx4_mr.c +++ b/dpdk/drivers/net/mlx4/mlx4_mr.c @@ -348,7 +348,7 @@ mr_find_next_chunk(struct mlx4_mr *mr, struct mlx4_mr_cache *entry, static int mr_insert_dev_cache(struct rte_eth_dev *dev, struct mlx4_mr *mr) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; unsigned int n; DEBUG("port %u inserting MR(%p) to global cache", @@ -389,7 +389,7 @@ static struct mlx4_mr * mr_lookup_dev_list(struct rte_eth_dev *dev, struct mlx4_mr_cache *entry, uintptr_t addr) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; struct mlx4_mr *mr; /* Iterate all the existing MRs. */ @@ -430,7 +430,7 @@ static uint32_t mr_lookup_dev(struct rte_eth_dev *dev, struct mlx4_mr_cache *entry, uintptr_t addr) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; uint16_t idx; uint32_t lkey = UINT32_MAX; struct mlx4_mr *mr; @@ -477,7 +477,7 @@ mr_free(struct mlx4_mr *mr) } /** - * Releass resources of detached MR having no online entry. + * Release resources of detached MR having no online entry. * * @param dev * Pointer to Ethernet device. @@ -485,7 +485,7 @@ mr_free(struct mlx4_mr *mr) static void mlx4_mr_garbage_collect(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; struct mlx4_mr *mr_next; struct mlx4_mr_list free_list = LIST_HEAD_INITIALIZER(free_list); @@ -525,7 +525,7 @@ mr_find_contig_memsegs_cb(const struct rte_memseg_list *msl, } /** - * Create a new global Memroy Region (MR) for a missing virtual address. + * Create a new global Memory Region (MR) for a missing virtual address. * Register entire virtually contiguous memory chunk around the address. * * @param dev @@ -543,7 +543,7 @@ static uint32_t mlx4_mr_create(struct rte_eth_dev *dev, struct mlx4_mr_cache *entry, uintptr_t addr) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; struct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config; const struct rte_memseg_list *msl; const struct rte_memseg *ms; @@ -623,7 +623,7 @@ alloc_resources: bmp_mem = RTE_PTR_ALIGN_CEIL(mr + 1, RTE_CACHE_LINE_SIZE); mr->ms_bmp = rte_bitmap_init(ms_n, bmp_mem, bmp_size); if (mr->ms_bmp == NULL) { - WARN("port %u unable to initialize bitamp for a new MR of" + WARN("port %u unable to initialize bitmap for a new MR of" " address (%p).", dev->data->port_id, (void *)addr); rte_errno = EINVAL; @@ -769,7 +769,7 @@ err_nolock: static void mr_rebuild_dev_cache(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; struct mlx4_mr *mr; DEBUG("port %u rebuild dev cache[]", dev->data->port_id); @@ -801,7 +801,7 @@ mr_rebuild_dev_cache(struct rte_eth_dev *dev) static void mlx4_mr_mem_event_free_cb(struct rte_eth_dev *dev, const void *addr, size_t len) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; const struct rte_memseg_list *msl; struct mlx4_mr *mr; int ms_n; @@ -889,14 +889,14 @@ void mlx4_mr_mem_event_cb(enum rte_mem_event event_type, const void *addr, size_t len, void *arg __rte_unused) { - struct priv *priv; + struct mlx4_priv *priv; switch (event_type) { case RTE_MEM_EVENT_FREE: rte_rwlock_read_lock(&mlx4_mem_event_rwlock); /* Iterate all the existing mlx4 devices. */ LIST_FOREACH(priv, &mlx4_mem_event_cb_list, mem_event_cb) - mlx4_mr_mem_event_free_cb(priv->dev, addr, len); + mlx4_mr_mem_event_free_cb(ETH_DEV(priv), addr, len); rte_rwlock_read_unlock(&mlx4_mem_event_rwlock); break; case RTE_MEM_EVENT_ALLOC: @@ -926,7 +926,7 @@ static uint32_t mlx4_mr_lookup_dev(struct rte_eth_dev *dev, struct mlx4_mr_ctrl *mr_ctrl, struct mlx4_mr_cache *entry, uintptr_t addr) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; struct mlx4_mr_btree *bt = &mr_ctrl->cache_bh; uint16_t idx; uint32_t lkey; @@ -1024,11 +1024,9 @@ uint32_t mlx4_rx_addr2mr_bh(struct rxq *rxq, uintptr_t addr) { struct mlx4_mr_ctrl *mr_ctrl = &rxq->mr_ctrl; - struct priv *priv = rxq->priv; + struct mlx4_priv *priv = rxq->priv; - DEBUG("Rx queue %u: miss on top-half, mru=%u, head=%u, addr=%p", - rxq->stats.idx, mr_ctrl->mru, mr_ctrl->head, (void *)addr); - return mlx4_mr_addr2mr_bh(priv->dev, mr_ctrl, addr); + return mlx4_mr_addr2mr_bh(ETH_DEV(priv), mr_ctrl, addr); } /** @@ -1046,11 +1044,9 @@ static uint32_t mlx4_tx_addr2mr_bh(struct txq *txq, uintptr_t addr) { struct mlx4_mr_ctrl *mr_ctrl = &txq->mr_ctrl; - struct priv *priv = txq->priv; + struct mlx4_priv *priv = txq->priv; - DEBUG("Tx queue %u: miss on top-half, mru=%u, head=%u, addr=%p", - txq->stats.idx, mr_ctrl->mru, mr_ctrl->head, (void *)addr); - return mlx4_mr_addr2mr_bh(priv->dev, mr_ctrl, addr); + return mlx4_mr_addr2mr_bh(ETH_DEV(priv), mr_ctrl, addr); } /** @@ -1122,7 +1118,7 @@ mlx4_mr_update_ext_mp_cb(struct rte_mempool *mp, void *opaque, { struct mr_update_mp_data *data = opaque; struct rte_eth_dev *dev = data->dev; - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; struct mlx4_mr_ctrl *mr_ctrl = data->mr_ctrl; struct mlx4_mr *mr = NULL; uintptr_t addr = (uintptr_t)memhdr->addr; @@ -1223,9 +1219,9 @@ uint32_t mlx4_tx_update_ext_mp(struct txq *txq, uintptr_t addr, struct rte_mempool *mp) { struct mlx4_mr_ctrl *mr_ctrl = &txq->mr_ctrl; - struct priv *priv = txq->priv; + struct mlx4_priv *priv = txq->priv; - mlx4_mr_update_ext_mp(priv->dev, mr_ctrl, mp); + mlx4_mr_update_ext_mp(ETH_DEV(priv), mr_ctrl, mp); return mlx4_tx_addr2mr_bh(txq, addr); } @@ -1289,7 +1285,7 @@ mlx4_mr_update_mp(struct rte_eth_dev *dev, struct mlx4_mr_ctrl *mr_ctrl, void mlx4_mr_dump_dev(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; struct mlx4_mr *mr; int mr_n = 0; int chunk_n = 0; @@ -1332,8 +1328,8 @@ mlx4_mr_dump_dev(struct rte_eth_dev *dev) void mlx4_mr_release(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; - struct mlx4_mr *mr_next = LIST_FIRST(&priv->mr.mr_list); + struct mlx4_priv *priv = dev->data->dev_private; + struct mlx4_mr *mr_next; /* Remove from memory callback device list. */ rte_rwlock_write_lock(&mlx4_mem_event_rwlock); @@ -1344,6 +1340,7 @@ mlx4_mr_release(struct rte_eth_dev *dev) #endif rte_rwlock_write_lock(&priv->mr.rwlock); /* Detach from MR list and move to free list. */ + mr_next = LIST_FIRST(&priv->mr.mr_list); while (mr_next != NULL) { struct mlx4_mr *mr = mr_next; diff --git a/dpdk/drivers/net/mlx4/mlx4_rxq.c b/dpdk/drivers/net/mlx4/mlx4_rxq.c index 6804c6344..50f33eb0c 100644 --- a/dpdk/drivers/net/mlx4/mlx4_rxq.c +++ b/dpdk/drivers/net/mlx4/mlx4_rxq.c @@ -87,7 +87,7 @@ mlx4_rss_hash_key_default[MLX4_RSS_HASH_KEY_SIZE] = { * Pointer to RSS context on success, NULL otherwise and rte_errno is set. */ struct mlx4_rss * -mlx4_rss_get(struct priv *priv, uint64_t fields, +mlx4_rss_get(struct mlx4_priv *priv, uint64_t fields, const uint8_t key[MLX4_RSS_HASH_KEY_SIZE], uint16_t queues, const uint16_t queue_id[]) { @@ -175,7 +175,8 @@ mlx4_rss_attach(struct mlx4_rss *rss) } struct ibv_wq *ind_tbl[rss->queues]; - struct priv *priv = rss->priv; + struct mlx4_priv *priv = rss->priv; + struct rte_eth_dev *dev = ETH_DEV(priv); const char *msg; unsigned int i = 0; int ret; @@ -189,8 +190,8 @@ mlx4_rss_attach(struct mlx4_rss *rss) uint16_t id = rss->queue_id[i]; struct rxq *rxq = NULL; - if (id < priv->dev->data->nb_rx_queues) - rxq = priv->dev->data->rx_queues[id]; + if (id < dev->data->nb_rx_queues) + rxq = dev->data->rx_queues[id]; if (!rxq) { ret = EINVAL; msg = "RSS target queue is not configured"; @@ -269,7 +270,7 @@ error: rss->ind = NULL; } while (i--) - mlx4_rxq_detach(priv->dev->data->rx_queues[rss->queue_id[i]]); + mlx4_rxq_detach(dev->data->rx_queues[rss->queue_id[i]]); ERROR("mlx4: %s", msg); --rss->usecnt; rte_errno = ret; @@ -290,7 +291,8 @@ error: void mlx4_rss_detach(struct mlx4_rss *rss) { - struct priv *priv = rss->priv; + struct mlx4_priv *priv = rss->priv; + struct rte_eth_dev *dev = ETH_DEV(priv); unsigned int i; assert(rss->refcnt); @@ -303,7 +305,7 @@ mlx4_rss_detach(struct mlx4_rss *rss) claim_zero(mlx4_glue->destroy_rwq_ind_table(rss->ind)); rss->ind = NULL; for (i = 0; i != rss->queues; ++i) - mlx4_rxq_detach(priv->dev->data->rx_queues[rss->queue_id[i]]); + mlx4_rxq_detach(dev->data->rx_queues[rss->queue_id[i]]); } /** @@ -327,9 +329,9 @@ mlx4_rss_detach(struct mlx4_rss *rss) * 0 on success, a negative errno value otherwise and rte_errno is set. */ int -mlx4_rss_init(struct priv *priv) +mlx4_rss_init(struct mlx4_priv *priv) { - struct rte_eth_dev *dev = priv->dev; + struct rte_eth_dev *dev = ETH_DEV(priv); uint8_t log2_range = rte_log2_u32(dev->data->nb_rx_queues); uint32_t wq_num_prev = 0; const char *msg; @@ -338,7 +340,7 @@ mlx4_rss_init(struct priv *priv) if (priv->rss_init) return 0; - if (priv->dev->data->nb_rx_queues > priv->hw_rss_max_qps) { + if (ETH_DEV(priv)->data->nb_rx_queues > priv->hw_rss_max_qps) { ERROR("RSS does not support more than %d queues", priv->hw_rss_max_qps); rte_errno = EINVAL; @@ -356,8 +358,8 @@ mlx4_rss_init(struct priv *priv) rte_errno = ret; return -ret; } - for (i = 0; i != priv->dev->data->nb_rx_queues; ++i) { - struct rxq *rxq = priv->dev->data->rx_queues[i]; + for (i = 0; i != ETH_DEV(priv)->data->nb_rx_queues; ++i) { + struct rxq *rxq = ETH_DEV(priv)->data->rx_queues[i]; struct ibv_cq *cq; struct ibv_wq *wq; uint32_t wq_num; @@ -432,7 +434,7 @@ error: ERROR("cannot initialize common RSS resources (queue %u): %s: %s", i, msg, strerror(ret)); while (i--) { - struct rxq *rxq = priv->dev->data->rx_queues[i]; + struct rxq *rxq = ETH_DEV(priv)->data->rx_queues[i]; if (rxq) mlx4_rxq_detach(rxq); @@ -451,14 +453,14 @@ error: * Pointer to private structure. */ void -mlx4_rss_deinit(struct priv *priv) +mlx4_rss_deinit(struct mlx4_priv *priv) { unsigned int i; if (!priv->rss_init) return; - for (i = 0; i != priv->dev->data->nb_rx_queues; ++i) { - struct rxq *rxq = priv->dev->data->rx_queues[i]; + for (i = 0; i != ETH_DEV(priv)->data->nb_rx_queues; ++i) { + struct rxq *rxq = ETH_DEV(priv)->data->rx_queues[i]; if (rxq) { assert(rxq->usecnt == 1); @@ -493,8 +495,8 @@ mlx4_rxq_attach(struct rxq *rxq) return 0; } - struct priv *priv = rxq->priv; - struct rte_eth_dev *dev = priv->dev; + struct mlx4_priv *priv = rxq->priv; + struct rte_eth_dev *dev = ETH_DEV(priv); const uint32_t elts_n = 1 << rxq->elts_n; const uint32_t sges_n = 1 << rxq->sges_n; struct rte_mbuf *(*elts)[elts_n] = rxq->elts; @@ -561,7 +563,7 @@ mlx4_rxq_attach(struct rxq *rxq) } /* Pre-register Rx mempool. */ DEBUG("port %u Rx queue %u registering mp %s having %u chunks", - priv->dev->data->port_id, rxq->stats.idx, + ETH_DEV(priv)->data->port_id, rxq->stats.idx, rxq->mp->name, rxq->mp->nb_mem_chunks); mlx4_mr_update_mp(dev, &rxq->mr_ctrl, rxq->mp); wqes = (volatile struct mlx4_wqe_data_seg (*)[]) @@ -675,7 +677,7 @@ mlx4_rxq_detach(struct rxq *rxq) * Supported Tx offloads. */ uint64_t -mlx4_get_rx_queue_offloads(struct priv *priv) +mlx4_get_rx_queue_offloads(struct mlx4_priv *priv) { uint64_t offloads = DEV_RX_OFFLOAD_SCATTER | DEV_RX_OFFLOAD_KEEP_CRC | @@ -696,7 +698,7 @@ mlx4_get_rx_queue_offloads(struct priv *priv) * Supported Rx offloads. */ uint64_t -mlx4_get_rx_port_offloads(struct priv *priv) +mlx4_get_rx_port_offloads(struct mlx4_priv *priv) { uint64_t offloads = DEV_RX_OFFLOAD_VLAN_FILTER; @@ -728,7 +730,7 @@ mlx4_rx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, unsigned int socket, const struct rte_eth_rxconf *conf, struct rte_mempool *mp) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; uint32_t mb_len = rte_pktmbuf_data_room_size(mp); struct rte_mbuf *(*elts)[rte_align32pow2(desc)]; struct rxq *rxq; @@ -911,17 +913,17 @@ void mlx4_rx_queue_release(void *dpdk_rxq) { struct rxq *rxq = (struct rxq *)dpdk_rxq; - struct priv *priv; + struct mlx4_priv *priv; unsigned int i; if (rxq == NULL) return; priv = rxq->priv; - for (i = 0; i != priv->dev->data->nb_rx_queues; ++i) - if (priv->dev->data->rx_queues[i] == rxq) { + for (i = 0; i != ETH_DEV(priv)->data->nb_rx_queues; ++i) + if (ETH_DEV(priv)->data->rx_queues[i] == rxq) { DEBUG("%p: removing Rx queue %p from list", - (void *)priv->dev, (void *)rxq); - priv->dev->data->rx_queues[i] = NULL; + (void *)ETH_DEV(priv), (void *)rxq); + ETH_DEV(priv)->data->rx_queues[i] = NULL; break; } assert(!rxq->cq); diff --git a/dpdk/drivers/net/mlx4/mlx4_rxtx.h b/dpdk/drivers/net/mlx4/mlx4_rxtx.h index d7ec4e0c5..29389f1ea 100644 --- a/dpdk/drivers/net/mlx4/mlx4_rxtx.h +++ b/dpdk/drivers/net/mlx4/mlx4_rxtx.h @@ -38,7 +38,7 @@ struct mlx4_rxq_stats { /** Rx queue descriptor. */ struct rxq { - struct priv *priv; /**< Back pointer to private data. */ + struct mlx4_priv *priv; /**< Back pointer to private data. */ struct rte_mempool *mp; /**< Memory pool for allocations. */ struct ibv_cq *cq; /**< Completion queue. */ struct ibv_wq *wq; /**< Work queue. */ @@ -65,7 +65,7 @@ struct rxq { /** Shared flow target for Rx queues. */ struct mlx4_rss { LIST_ENTRY(mlx4_rss) next; /**< Next entry in list. */ - struct priv *priv; /**< Back pointer to private data. */ + struct mlx4_priv *priv; /**< Back pointer to private data. */ uint32_t refcnt; /**< Reference count for this object. */ uint32_t usecnt; /**< Number of users relying on @p qp and @p ind. */ struct ibv_qp *qp; /**< Queue pair. */ @@ -111,7 +111,7 @@ struct txq { uint32_t lb:1; /**< Whether packets should be looped back by eSwitch. */ uint8_t *bounce_buf; /**< Memory used for storing the first DWORD of data TXBBs. */ - struct priv *priv; /**< Back pointer to private data. */ + struct mlx4_priv *priv; /**< Back pointer to private data. */ unsigned int socket; /**< CPU socket ID for allocations. */ struct ibv_cq *cq; /**< Completion queue. */ struct ibv_qp *qp; /**< Queue pair. */ @@ -121,9 +121,9 @@ struct txq { /* mlx4_rxq.c */ uint8_t mlx4_rss_hash_key_default[MLX4_RSS_HASH_KEY_SIZE]; -int mlx4_rss_init(struct priv *priv); -void mlx4_rss_deinit(struct priv *priv); -struct mlx4_rss *mlx4_rss_get(struct priv *priv, uint64_t fields, +int mlx4_rss_init(struct mlx4_priv *priv); +void mlx4_rss_deinit(struct mlx4_priv *priv); +struct mlx4_rss *mlx4_rss_get(struct mlx4_priv *priv, uint64_t fields, const uint8_t key[MLX4_RSS_HASH_KEY_SIZE], uint16_t queues, const uint16_t queue_id[]); void mlx4_rss_put(struct mlx4_rss *rss); @@ -131,8 +131,8 @@ int mlx4_rss_attach(struct mlx4_rss *rss); void mlx4_rss_detach(struct mlx4_rss *rss); int mlx4_rxq_attach(struct rxq *rxq); void mlx4_rxq_detach(struct rxq *rxq); -uint64_t mlx4_get_rx_port_offloads(struct priv *priv); -uint64_t mlx4_get_rx_queue_offloads(struct priv *priv); +uint64_t mlx4_get_rx_port_offloads(struct mlx4_priv *priv); +uint64_t mlx4_get_rx_queue_offloads(struct mlx4_priv *priv); int mlx4_rx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, unsigned int socket, const struct rte_eth_rxconf *conf, @@ -152,7 +152,7 @@ uint16_t mlx4_rx_burst_removed(void *dpdk_rxq, struct rte_mbuf **pkts, /* mlx4_txq.c */ -uint64_t mlx4_get_tx_port_offloads(struct priv *priv); +uint64_t mlx4_get_tx_port_offloads(struct mlx4_priv *priv); int mlx4_tx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, unsigned int socket, const struct rte_eth_txconf *conf); diff --git a/dpdk/drivers/net/mlx4/mlx4_txq.c b/dpdk/drivers/net/mlx4/mlx4_txq.c index 9aa7440d3..352700820 100644 --- a/dpdk/drivers/net/mlx4/mlx4_txq.c +++ b/dpdk/drivers/net/mlx4/mlx4_txq.c @@ -107,7 +107,7 @@ mlx4_txq_fill_dv_obj_info(struct txq *txq, struct mlx4dv_obj *mlxdv) * Supported Tx offloads. */ uint64_t -mlx4_get_tx_port_offloads(struct priv *priv) +mlx4_get_tx_port_offloads(struct mlx4_priv *priv) { uint64_t offloads = DEV_TX_OFFLOAD_MULTI_SEGS; @@ -148,7 +148,7 @@ int mlx4_tx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, unsigned int socket, const struct rte_eth_txconf *conf) { - struct priv *priv = dev->data->dev_private; + struct mlx4_priv *priv = dev->data->dev_private; struct mlx4dv_obj mlxdv; struct mlx4dv_qp dv_qp; struct mlx4dv_cq dv_cq; @@ -351,17 +351,17 @@ void mlx4_tx_queue_release(void *dpdk_txq) { struct txq *txq = (struct txq *)dpdk_txq; - struct priv *priv; + struct mlx4_priv *priv; unsigned int i; if (txq == NULL) return; priv = txq->priv; - for (i = 0; i != priv->dev->data->nb_tx_queues; ++i) - if (priv->dev->data->tx_queues[i] == txq) { + for (i = 0; i != ETH_DEV(priv)->data->nb_tx_queues; ++i) + if (ETH_DEV(priv)->data->tx_queues[i] == txq) { DEBUG("%p: removing Tx queue %p from list", - (void *)priv->dev, (void *)txq); - priv->dev->data->tx_queues[i] = NULL; + (void *)ETH_DEV(priv), (void *)txq); + ETH_DEV(priv)->data->tx_queues[i] = NULL; break; } mlx4_txq_free_elts(txq); diff --git a/dpdk/drivers/net/mlx5/Makefile b/dpdk/drivers/net/mlx5/Makefile index 895cdfeed..63dfa45b2 100644 --- a/dpdk/drivers/net/mlx5/Makefile +++ b/dpdk/drivers/net/mlx5/Makefile @@ -117,6 +117,11 @@ mlx5_autoconf.h.new: $(RTE_SDK)/buildtools/auto-config-h.sh infiniband/verbs.h \ enum IBV_FLOW_SPEC_MPLS \ $(AUTOCONF_OUTPUT) + $Q sh -- '$<' '$@' \ + HAVE_IBV_WQ_FLAGS_PCI_WRITE_END_PADDING \ + infiniband/verbs.h \ + enum IBV_WQ_FLAGS_PCI_WRITE_END_PADDING \ + $(AUTOCONF_OUTPUT) $Q sh -- '$<' '$@' \ HAVE_IBV_WQ_FLAG_RX_END_PADDING \ infiniband/verbs.h \ diff --git a/dpdk/drivers/net/mlx5/meson.build b/dpdk/drivers/net/mlx5/meson.build index 28938db0f..de0c32bcf 100644 --- a/dpdk/drivers/net/mlx5/meson.build +++ b/dpdk/drivers/net/mlx5/meson.build @@ -102,6 +102,8 @@ if build 'mlx5dv_create_flow_action_packet_reformat' ], [ 'HAVE_IBV_DEVICE_MPLS_SUPPORT', 'infiniband/verbs.h', 'IBV_FLOW_SPEC_MPLS' ], + [ 'HAVE_IBV_WQ_FLAGS_PCI_WRITE_END_PADDING', 'infiniband/verbs.h', + 'IBV_WQ_FLAGS_PCI_WRITE_END_PADDING' ], [ 'HAVE_IBV_WQ_FLAG_RX_END_PADDING', 'infiniband/verbs.h', 'IBV_WQ_FLAG_RX_END_PADDING' ], [ 'HAVE_SUPPORTED_40000baseKR4_Full', 'linux/ethtool.h', diff --git a/dpdk/drivers/net/mlx5/mlx5.c b/dpdk/drivers/net/mlx5/mlx5.c index 9e5cab169..d91d55b56 100644 --- a/dpdk/drivers/net/mlx5/mlx5.c +++ b/dpdk/drivers/net/mlx5/mlx5.c @@ -54,6 +54,9 @@ /* Device parameter to enable RX completion entry padding to 128B. */ #define MLX5_RXQ_CQE_PAD_EN "rxq_cqe_pad_en" +/* Device parameter to enable padding Rx packet to cacheline size. */ +#define MLX5_RXQ_PKT_PAD_EN "rxq_pkt_pad_en" + /* Device parameter to enable Multi-Packet Rx queue. */ #define MLX5_RX_MPRQ_EN "mprq_en" @@ -154,9 +157,10 @@ mlx5_prepare_shared_data(void) if (rte_eal_process_type() == RTE_PROC_PRIMARY) { LIST_INIT(&mlx5_shared_data->mem_event_cb_list); rte_rwlock_init(&mlx5_shared_data->mem_event_rwlock); + rte_mem_event_callback_register("MLX5_MEM_EVENT_CB", + mlx5_mr_mem_event_cb, + NULL); } - rte_mem_event_callback_register("MLX5_MEM_EVENT_CB", - mlx5_mr_mem_event_cb, NULL); } rte_spinlock_unlock(&mlx5_shared_data_lock); } @@ -197,7 +201,7 @@ mlx5_getenv_int(const char *name) static void * mlx5_alloc_verbs_buf(size_t size, void *data) { - struct priv *priv = data; + struct mlx5_priv *priv = data; void *ret; size_t alignment = sysconf(_SC_PAGESIZE); unsigned int socket = SOCKET_ID_ANY; @@ -245,7 +249,7 @@ mlx5_free_verbs_buf(void *ptr, void *data __rte_unused) static void mlx5_dev_close(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; unsigned int i; int ret; @@ -332,7 +336,7 @@ mlx5_dev_close(struct rte_eth_dev *dev) i = RTE_MIN(mlx5_dev_to_port_id(dev->device, port_id, i), i); while (i--) { - struct priv *opriv = + struct mlx5_priv *opriv = rte_eth_devices[port_id[i]].data->dev_private; if (!opriv || @@ -486,6 +490,8 @@ mlx5_args_check(const char *key, const char *val, void *opaque) config->cqe_comp = !!tmp; } else if (strcmp(MLX5_RXQ_CQE_PAD_EN, key) == 0) { config->cqe_pad = !!tmp; + } else if (strcmp(MLX5_RXQ_PKT_PAD_EN, key) == 0) { + config->hw_padding = !!tmp; } else if (strcmp(MLX5_RX_MPRQ_EN, key) == 0) { config->mprq.enabled = !!tmp; } else if (strcmp(MLX5_RX_MPRQ_LOG_STRIDE_NUM, key) == 0) { @@ -541,6 +547,7 @@ mlx5_args(struct mlx5_dev_config *config, struct rte_devargs *devargs) const char **params = (const char *[]){ MLX5_RXQ_CQE_COMP_EN, MLX5_RXQ_CQE_PAD_EN, + MLX5_RXQ_PKT_PAD_EN, MLX5_RX_MPRQ_EN, MLX5_RX_MPRQ_LOG_STRIDE_NUM, MLX5_RX_MPRQ_MAX_MEMCPY_LEN, @@ -624,7 +631,7 @@ find_lower_va_bound(const struct rte_memseg_list *msl, static int mlx5_uar_init_primary(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; void *addr = (void *)0; if (uar_base) { /* UAR address space mapped. */ @@ -670,7 +677,7 @@ mlx5_uar_init_primary(struct rte_eth_dev *dev) static int mlx5_uar_init_secondary(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; void *addr; assert(priv->uar_base); @@ -733,8 +740,9 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev, struct ibv_pd *pd = NULL; struct mlx5dv_context dv_attr = { .comp_mask = 0 }; struct rte_eth_dev *eth_dev = NULL; - struct priv *priv = NULL; + struct mlx5_priv *priv = NULL; int err = 0; + unsigned int hw_padding = 0; unsigned int mps; unsigned int cqe_comp; unsigned int cqe_pad = 0; @@ -994,7 +1002,7 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev, i = RTE_MIN(mlx5_dev_to_port_id(dpdk_dev, port_id, i), i); while (i--) { - const struct priv *opriv = + const struct mlx5_priv *opriv = rte_eth_devices[port_id[i]].data->dev_private; if (!opriv || @@ -1053,11 +1061,18 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev, IBV_RAW_PACKET_CAP_SCATTER_FCS); DRV_LOG(DEBUG, "FCS stripping configuration is %ssupported", (config.hw_fcs_strip ? "" : "not ")); -#ifdef HAVE_IBV_WQ_FLAG_RX_END_PADDING - config.hw_padding = !!attr.rx_pad_end_addr_align; +#if defined(HAVE_IBV_WQ_FLAG_RX_END_PADDING) + hw_padding = !!attr.rx_pad_end_addr_align; +#elif defined(HAVE_IBV_WQ_FLAGS_PCI_WRITE_END_PADDING) + hw_padding = !!(attr.device_cap_flags_ex & + IBV_DEVICE_PCI_WRITE_END_PADDING); #endif - DRV_LOG(DEBUG, "hardware Rx end alignment padding is %ssupported", - (config.hw_padding ? "" : "not ")); + if (config.hw_padding && !hw_padding) { + DRV_LOG(DEBUG, "Rx end alignment padding isn't supported"); + config.hw_padding = 0; + } else if (config.hw_padding) { + DRV_LOG(DEBUG, "Rx end alignment padding is enabled"); + } config.tso = (attr.tso_caps.max_tso > 0 && (attr.tso_caps.supported_qpts & (1 << IBV_QPT_RAW_PACKET))); @@ -1219,8 +1234,10 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev, priv->config = config; /* Supported Verbs flow priority number detection. */ err = mlx5_flow_discover_priorities(eth_dev); - if (err < 0) + if (err < 0) { + err = -err; goto error; + } priv->config.flow_prio = err; /* * Once the device is added to the list of memory event @@ -1434,6 +1451,7 @@ mlx5_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, qsort(list, n, sizeof(*list), mlx5_dev_spawn_data_cmp); /* Default configuration. */ dev_config = (struct mlx5_dev_config){ + .hw_padding = 0, .mps = MLX5_ARG_UNSET, .tx_vec_en = 1, .rx_vec_en = 1, diff --git a/dpdk/drivers/net/mlx5/mlx5.h b/dpdk/drivers/net/mlx5/mlx5.h index bc500b2bc..91efd21b9 100644 --- a/dpdk/drivers/net/mlx5/mlx5.h +++ b/dpdk/drivers/net/mlx5/mlx5.h @@ -62,7 +62,7 @@ struct mlx5_switch_info { uint64_t switch_id; /**< Switch identifier. */ }; -LIST_HEAD(mlx5_dev_list, priv); +LIST_HEAD(mlx5_dev_list, mlx5_priv); /* Shared memory between primary and secondary processes. */ struct mlx5_shared_data { @@ -172,8 +172,9 @@ struct mlx5_drop { struct mlx5_flow_tcf_context; -struct priv { - LIST_ENTRY(priv) mem_event_cb; /* Called by memory event callback. */ +struct mlx5_priv { + LIST_ENTRY(mlx5_priv) mem_event_cb; + /**< Called by memory event callback. */ struct rte_eth_dev_data *dev_data; /* Pointer to device data. */ struct ibv_context *ctx; /* Verbs context. */ struct ibv_device_attr_ex device_attr; /* Device properties. */ diff --git a/dpdk/drivers/net/mlx5/mlx5_defs.h b/dpdk/drivers/net/mlx5/mlx5_defs.h index bfe665580..480b33c81 100644 --- a/dpdk/drivers/net/mlx5/mlx5_defs.h +++ b/dpdk/drivers/net/mlx5/mlx5_defs.h @@ -63,10 +63,11 @@ /* Default maximum number of Tx queues for vectorized Tx. */ #if defined(RTE_ARCH_ARM64) #define MLX5_VPMD_MAX_TXQS 8 +#define MLX5_VPMD_MAX_TXQS_BLUEFIELD 16 #else #define MLX5_VPMD_MAX_TXQS 4 +#define MLX5_VPMD_MAX_TXQS_BLUEFIELD MLX5_VPMD_MAX_TXQS #endif -#define MLX5_VPMD_MAX_TXQS_BLUEFIELD 16 /* Threshold of buffer replenishment for vectorized Rx. */ #define MLX5_VPMD_RXQ_RPLNSH_THRESH(n) \ diff --git a/dpdk/drivers/net/mlx5/mlx5_ethdev.c b/dpdk/drivers/net/mlx5/mlx5_ethdev.c index d178ed6a1..fb8e313a2 100644 --- a/dpdk/drivers/net/mlx5/mlx5_ethdev.c +++ b/dpdk/drivers/net/mlx5/mlx5_ethdev.c @@ -131,7 +131,7 @@ static int mlx5_get_master_ifname(const struct rte_eth_dev *dev, char (*ifname)[IF_NAMESIZE]) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; DIR *dir; struct dirent *dent; unsigned int dev_type = 0; @@ -219,7 +219,7 @@ try_dev_id: int mlx5_get_ifname(const struct rte_eth_dev *dev, char (*ifname)[IF_NAMESIZE]) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; unsigned int ifindex = priv->nl_socket_rdma >= 0 ? mlx5_nl_ifindex(priv->nl_socket_rdma, priv->ibdev_name) : 0; @@ -377,7 +377,7 @@ mlx5_set_flags(struct rte_eth_dev *dev, unsigned int keep, unsigned int flags) int mlx5_dev_configure(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; unsigned int rxqs_n = dev->data->nb_rx_queues; unsigned int txqs_n = dev->data->nb_tx_queues; unsigned int i; @@ -460,7 +460,7 @@ mlx5_dev_configure(struct rte_eth_dev *dev) static void mlx5_set_default_params(struct rte_eth_dev *dev, struct rte_eth_dev_info *info) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; /* Minimum CPU utilization. */ info->default_rxportconf.ring_size = 256; @@ -499,7 +499,7 @@ mlx5_set_default_params(struct rte_eth_dev *dev, struct rte_eth_dev_info *info) void mlx5_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_dev_config *config = &priv->config; unsigned int max; char ifname[IF_NAMESIZE]; @@ -540,7 +540,7 @@ mlx5_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info) i = RTE_MIN(mlx5_dev_to_port_id(dev->device, port_id, i), i); while (i--) { - struct priv *opriv = + struct mlx5_priv *opriv = rte_eth_devices[port_id[i]].data->dev_private; if (!opriv || @@ -609,7 +609,7 @@ static int mlx5_link_update_unlocked_gset(struct rte_eth_dev *dev, struct rte_eth_link *link) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct ethtool_cmd edata = { .cmd = ETHTOOL_GSET /* Deprecated since Linux v4.5. */ }; @@ -685,7 +685,7 @@ mlx5_link_update_unlocked_gs(struct rte_eth_dev *dev, struct rte_eth_link *link) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct ethtool_link_settings gcmd = { .cmd = ETHTOOL_GLINKSETTINGS }; struct ifreq ifr; struct rte_eth_link dev_link; @@ -840,7 +840,7 @@ mlx5_link_update(struct rte_eth_dev *dev, int wait_to_complete) int mlx5_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; uint16_t kern_mtu = 0; int ret; @@ -1015,7 +1015,7 @@ mlx5_ibv_device_to_pci_addr(const struct ibv_device *device, static uint32_t mlx5_dev_status_handler(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct ibv_async_event event; uint32_t ret = 0; @@ -1087,7 +1087,7 @@ mlx5_dev_handler_socket(void *cb_arg) void mlx5_dev_interrupt_handler_uninstall(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; if (dev->data->dev_conf.intr_conf.lsc || dev->data->dev_conf.intr_conf.rmv) @@ -1111,7 +1111,7 @@ mlx5_dev_interrupt_handler_uninstall(struct rte_eth_dev *dev) void mlx5_dev_interrupt_handler_install(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; int ret; int flags; @@ -1187,7 +1187,7 @@ mlx5_set_link_up(struct rte_eth_dev *dev) eth_tx_burst_t mlx5_select_tx_function(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; eth_tx_burst_t tx_pkt_burst = mlx5_tx_burst; struct mlx5_dev_config *config = &priv->config; uint64_t tx_offloads = dev->data->dev_conf.txmode.offloads; @@ -1271,7 +1271,7 @@ int mlx5_is_removed(struct rte_eth_dev *dev) { struct ibv_device_attr device_attr; - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; if (mlx5_glue->query_device(priv->ctx, &device_attr) == EIO) return 1; diff --git a/dpdk/drivers/net/mlx5/mlx5_flow.c b/dpdk/drivers/net/mlx5/mlx5_flow.c index 97dc3e1f8..222cd81d0 100644 --- a/dpdk/drivers/net/mlx5/mlx5_flow.c +++ b/dpdk/drivers/net/mlx5/mlx5_flow.c @@ -350,6 +350,7 @@ mlx5_flow_discover_priorities(struct rte_eth_dev *dev) claim_zero(mlx5_glue->destroy_flow(flow)); priority = vprio[i]; } + mlx5_hrxq_drop_release(dev); switch (priority) { case 8: priority = RTE_DIM(priority_map_3); @@ -361,10 +362,9 @@ mlx5_flow_discover_priorities(struct rte_eth_dev *dev) rte_errno = ENOTSUP; DRV_LOG(ERR, "port %u verbs maximum priority: %d expected 8/16", - dev->data->port_id, vprio[i]); + dev->data->port_id, priority); return -rte_errno; } - mlx5_hrxq_drop_release(dev); DRV_LOG(INFO, "port %u flow maximum priority: %d", dev->data->port_id, priority); return priority; @@ -387,7 +387,7 @@ uint32_t mlx5_flow_adjust_priority(struct rte_eth_dev *dev, int32_t priority, uint32_t subpriority) { uint32_t res = 0; - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; switch (priv->config.flow_prio) { case RTE_DIM(priority_map_3): @@ -536,7 +536,7 @@ flow_rxq_tunnel_ptype_update(struct mlx5_rxq_ctrl *rxq_ctrl) static void flow_drv_rxq_flags_set(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct rte_flow *flow = dev_flow->flow; const int mark = !!(flow->actions & (MLX5_FLOW_ACTION_FLAG | MLX5_FLOW_ACTION_MARK)); @@ -599,7 +599,7 @@ flow_rxq_flags_set(struct rte_eth_dev *dev, struct rte_flow *flow) static void flow_drv_rxq_flags_trim(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct rte_flow *flow = dev_flow->flow; const int mark = !!(flow->actions & (MLX5_FLOW_ACTION_FLAG | MLX5_FLOW_ACTION_MARK)); @@ -661,7 +661,7 @@ flow_rxq_flags_trim(struct rte_eth_dev *dev, struct rte_flow *flow) static void flow_rxq_flags_clear(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; unsigned int i; for (i = 0; i != priv->rxqs_n; ++i) { @@ -786,7 +786,7 @@ mlx5_flow_validate_action_mark(const struct rte_flow_action *action, * Pointer to error structure. * * @return - * 0 on success, a negative errno value otherwise and rte_ernno is set. + * 0 on success, a negative errno value otherwise and rte_errno is set. */ int mlx5_flow_validate_action_drop(uint64_t action_flags, @@ -829,7 +829,7 @@ mlx5_flow_validate_action_drop(uint64_t action_flags, * Pointer to error structure. * * @return - * 0 on success, a negative errno value otherwise and rte_ernno is set. + * 0 on success, a negative errno value otherwise and rte_errno is set. */ int mlx5_flow_validate_action_queue(const struct rte_flow_action *action, @@ -838,7 +838,7 @@ mlx5_flow_validate_action_queue(const struct rte_flow_action *action, const struct rte_flow_attr *attr, struct rte_flow_error *error) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; const struct rte_flow_action_queue *queue = action->conf; if (action_flags & MLX5_FLOW_FATE_ACTIONS) @@ -875,21 +875,25 @@ mlx5_flow_validate_action_queue(const struct rte_flow_action *action, * Pointer to the Ethernet device structure. * @param[in] attr * Attributes of flow that includes this action. + * @param[in] item_flags + * Items that were detected. * @param[out] error * Pointer to error structure. * * @return - * 0 on success, a negative errno value otherwise and rte_ernno is set. + * 0 on success, a negative errno value otherwise and rte_errno is set. */ int mlx5_flow_validate_action_rss(const struct rte_flow_action *action, uint64_t action_flags, struct rte_eth_dev *dev, const struct rte_flow_attr *attr, + uint64_t item_flags, struct rte_flow_error *error) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; const struct rte_flow_action_rss *rss = action->conf; + int tunnel = !!(item_flags & MLX5_FLOW_LAYER_TUNNEL); unsigned int i; if (action_flags & MLX5_FLOW_FATE_ACTIONS) @@ -950,6 +954,11 @@ mlx5_flow_validate_action_rss(const struct rte_flow_action *action, RTE_FLOW_ERROR_TYPE_ATTR_EGRESS, NULL, "rss action not supported for " "egress"); + if (rss->level > 1 && !tunnel) + return rte_flow_error_set(error, EINVAL, + RTE_FLOW_ERROR_TYPE_ACTION_CONF, NULL, + "inner RSS is not supported for " + "non-tunnel flows"); return 0; } @@ -964,7 +973,7 @@ mlx5_flow_validate_action_rss(const struct rte_flow_action *action, * Pointer to error structure. * * @return - * 0 on success, a negative errno value otherwise and rte_ernno is set. + * 0 on success, a negative errno value otherwise and rte_errno is set. */ int mlx5_flow_validate_action_count(struct rte_eth_dev *dev __rte_unused, @@ -998,7 +1007,7 @@ mlx5_flow_validate_attributes(struct rte_eth_dev *dev, const struct rte_flow_attr *attributes, struct rte_flow_error *error) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; uint32_t priority_max = priv->config.flow_prio - 1; if (attributes->group) @@ -1462,7 +1471,7 @@ mlx5_flow_validate_item_vxlan_gpe(const struct rte_flow_item *item, struct rte_eth_dev *dev, struct rte_flow_error *error) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; const struct rte_flow_item_vxlan_gpe *spec = item->spec; const struct rte_flow_item_vxlan_gpe *mask = item->mask; int ret; @@ -1616,7 +1625,7 @@ mlx5_flow_validate_item_mpls(struct rte_eth_dev *dev __rte_unused, { #ifdef HAVE_IBV_DEVICE_MPLS_SUPPORT const struct rte_flow_item_mpls *mask = item->mask; - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; int ret; if (!priv->config.mpls_en) @@ -1747,7 +1756,7 @@ const struct mlx5_flow_driver_ops mlx5_flow_null_drv_ops = { static enum mlx5_flow_drv_type flow_get_drv_type(struct rte_eth_dev *dev, const struct rte_flow_attr *attr) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; enum mlx5_flow_drv_type type = MLX5_FLOW_TYPE_MAX; if (attr->transfer) @@ -1776,7 +1785,7 @@ flow_get_drv_type(struct rte_eth_dev *dev, const struct rte_flow_attr *attr) * Pointer to the error structure. * * @return - * 0 on success, a negative errno value otherwise and rte_ernno is set. + * 0 on success, a negative errno value otherwise and rte_errno is set. */ static inline int flow_drv_validate(struct rte_eth_dev *dev, @@ -1815,7 +1824,7 @@ flow_drv_validate(struct rte_eth_dev *dev, * Pointer to the error structure. * * @return - * Pointer to device flow on success, otherwise NULL and rte_ernno is set. + * Pointer to device flow on success, otherwise NULL and rte_errno is set. */ static inline struct mlx5_flow * flow_drv_prepare(const struct rte_flow *flow, @@ -1859,7 +1868,7 @@ flow_drv_prepare(const struct rte_flow *flow, * Pointer to the error structure. * * @return - * 0 on success, a negative errno value otherwise and rte_ernno is set. + * 0 on success, a negative errno value otherwise and rte_errno is set. */ static inline int flow_drv_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, @@ -2121,8 +2130,9 @@ mlx5_flow_create(struct rte_eth_dev *dev, const struct rte_flow_action actions[], struct rte_flow_error *error) { - return flow_list_create(dev, - &((struct priv *)dev->data->dev_private)->flows, + struct mlx5_priv *priv = (struct mlx5_priv *)dev->data->dev_private; + + return flow_list_create(dev, &priv->flows, attr, items, actions, error); } @@ -2232,7 +2242,7 @@ error: int mlx5_flow_verify(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct rte_flow *flow; int ret = 0; @@ -2268,7 +2278,7 @@ mlx5_ctrl_flow_vlan(struct rte_eth_dev *dev, struct rte_flow_item_vlan *vlan_spec, struct rte_flow_item_vlan *vlan_mask) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; const struct rte_flow_attr attr = { .ingress = 1, .priority = MLX5_FLOW_PRIO_RSVD, @@ -2314,7 +2324,7 @@ mlx5_ctrl_flow_vlan(struct rte_eth_dev *dev, struct rte_flow_error error; unsigned int i; - if (!priv->reta_idx_n) { + if (!priv->reta_idx_n || !priv->rxqs_n) { rte_errno = EINVAL; return -rte_errno; } @@ -2359,7 +2369,7 @@ mlx5_flow_destroy(struct rte_eth_dev *dev, struct rte_flow *flow, struct rte_flow_error *error __rte_unused) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; flow_list_destroy(dev, &priv->flows, flow); return 0; @@ -2375,7 +2385,7 @@ int mlx5_flow_flush(struct rte_eth_dev *dev, struct rte_flow_error *error __rte_unused) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; mlx5_flow_list_flush(dev, &priv->flows); return 0; @@ -2392,7 +2402,7 @@ mlx5_flow_isolate(struct rte_eth_dev *dev, int enable, struct rte_flow_error *error) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; if (dev->data->dev_started) { rte_flow_error_set(error, EBUSY, @@ -2470,7 +2480,7 @@ flow_fdir_filter_convert(struct rte_eth_dev *dev, const struct rte_eth_fdir_filter *fdir_filter, struct mlx5_fdir *attributes) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; const struct rte_eth_fdir_input *input = &fdir_filter->input; const struct rte_eth_fdir_masks *mask = &dev->data->dev_conf.fdir_conf.mask; @@ -2687,7 +2697,7 @@ flow_fdir_cmp(const struct mlx5_fdir *f1, const struct mlx5_fdir *f2) static struct rte_flow * flow_fdir_filter_lookup(struct rte_eth_dev *dev, struct mlx5_fdir *fdir_flow) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct rte_flow *flow = NULL; assert(fdir_flow); @@ -2716,7 +2726,7 @@ static int flow_fdir_filter_add(struct rte_eth_dev *dev, const struct rte_eth_fdir_filter *fdir_filter) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_fdir *fdir_flow; struct rte_flow *flow; int ret; @@ -2763,7 +2773,7 @@ static int flow_fdir_filter_delete(struct rte_eth_dev *dev, const struct rte_eth_fdir_filter *fdir_filter) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct rte_flow *flow; struct mlx5_fdir fdir_flow = { .attr.group = 0, @@ -2816,7 +2826,7 @@ flow_fdir_filter_update(struct rte_eth_dev *dev, static void flow_fdir_filter_flush(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; mlx5_flow_list_flush(dev, &priv->flows); } diff --git a/dpdk/drivers/net/mlx5/mlx5_flow.h b/dpdk/drivers/net/mlx5/mlx5_flow.h index 4a7c05293..e1424c789 100644 --- a/dpdk/drivers/net/mlx5/mlx5_flow.h +++ b/dpdk/drivers/net/mlx5/mlx5_flow.h @@ -363,6 +363,7 @@ int mlx5_flow_validate_action_rss(const struct rte_flow_action *action, uint64_t action_flags, struct rte_eth_dev *dev, const struct rte_flow_attr *attr, + uint64_t item_flags, struct rte_flow_error *error); int mlx5_flow_validate_attributes(struct rte_eth_dev *dev, const struct rte_flow_attr *attributes, diff --git a/dpdk/drivers/net/mlx5/mlx5_flow_dv.c b/dpdk/drivers/net/mlx5/mlx5_flow_dv.c index 1f3187487..207edcbc5 100644 --- a/dpdk/drivers/net/mlx5/mlx5_flow_dv.c +++ b/dpdk/drivers/net/mlx5/mlx5_flow_dv.c @@ -293,7 +293,7 @@ flow_dv_encap_decap_resource_register struct mlx5_flow *dev_flow, struct rte_flow_error *error) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_flow_dv_encap_decap_resource *cache_resource; /* Lookup a matching resource from cache. */ @@ -722,7 +722,7 @@ flow_dv_validate_attributes(struct rte_eth_dev *dev, const struct rte_flow_attr *attributes, struct rte_flow_error *error) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; uint32_t priority_max = priv->config.flow_prio - 1; if (attributes->group) @@ -764,7 +764,7 @@ flow_dv_validate_attributes(struct rte_eth_dev *dev, * Pointer to the error structure. * * @return - * 0 on success, a negative errno value otherwise and rte_ernno is set. + * 0 on success, a negative errno value otherwise and rte_errno is set. */ static int flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, @@ -776,7 +776,6 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, uint64_t action_flags = 0; uint64_t item_flags = 0; uint64_t last_item = 0; - int tunnel = 0; uint8_t next_protocol = 0xff; int actions_n = 0; @@ -786,7 +785,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, if (ret < 0) return ret; for (; items->type != RTE_FLOW_ITEM_TYPE_END; items++) { - tunnel = !!(item_flags & MLX5_FLOW_LAYER_TUNNEL); + int tunnel = !!(item_flags & MLX5_FLOW_LAYER_TUNNEL); switch (items->type) { case RTE_FLOW_ITEM_TYPE_VOID: break; @@ -958,7 +957,8 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, case RTE_FLOW_ACTION_TYPE_RSS: ret = mlx5_flow_validate_action_rss(actions, action_flags, dev, - attr, error); + attr, item_flags, + error); if (ret < 0) return ret; action_flags |= MLX5_FLOW_ACTION_RSS; @@ -1043,7 +1043,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, * * @return * Pointer to mlx5_flow object on success, - * otherwise NULL and rte_ernno is set. + * otherwise NULL and rte_errno is set. */ static struct mlx5_flow * flow_dv_prepare(const struct rte_flow_attr *attr __rte_unused, @@ -1800,7 +1800,7 @@ flow_dv_matcher_register(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, struct rte_flow_error *error) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_flow_dv_matcher *cache_matcher; struct mlx5dv_flow_matcher_attr dv_attr = { .type = IBV_FLOW_ATTR_NORMAL, @@ -1873,7 +1873,7 @@ flow_dv_matcher_register(struct rte_eth_dev *dev, * Pointer to the error structure. * * @return - * 0 on success, a negative errno value otherwise and rte_ernno is set. + * 0 on success, a negative errno value otherwise and rte_errno is set. */ static int flow_dv_translate(struct rte_eth_dev *dev, @@ -1883,7 +1883,7 @@ flow_dv_translate(struct rte_eth_dev *dev, const struct rte_flow_action actions[], struct rte_flow_error *error) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct rte_flow *flow = dev_flow->flow; uint64_t item_flags = 0; uint64_t last_item = 0; diff --git a/dpdk/drivers/net/mlx5/mlx5_flow_tcf.c b/dpdk/drivers/net/mlx5/mlx5_flow_tcf.c index fb284c355..92f984f96 100644 --- a/dpdk/drivers/net/mlx5/mlx5_flow_tcf.c +++ b/dpdk/drivers/net/mlx5/mlx5_flow_tcf.c @@ -28,6 +28,7 @@ #include #include #include +#include #include "mlx5.h" #include "mlx5_flow.h" @@ -320,6 +321,11 @@ struct tc_tunnel_key { #define MLX5_VXLAN_PORT_MIN 30000 #define MLX5_VXLAN_PORT_MAX 60000 #define MLX5_VXLAN_DEVICE_PFX "vmlx_" +/** + * Timeout in milliseconds to wait VXLAN UDP offloaded port + * registration completed within the mlx5 driver. + */ +#define MLX5_VXLAN_WAIT_PORT_REG_MS 250 /** Tunnel action type, used for @p type in header structure. */ enum flow_tcf_tunact_type { @@ -403,7 +409,8 @@ struct tcf_vtep { unsigned int ifindex; /**< Own interface index. */ unsigned int ifouter; /**< Index of device attached to. */ uint16_t port; - uint8_t created; + uint32_t created:1; /**< Actually created by PMD. */ + uint32_t waitreg:1; /**< Wait for VXLAN UDP port registration. */ }; /** Tunnel descriptor header, common for all tunnel types. */ @@ -436,7 +443,7 @@ struct flow_tcf_vxlan_encap { uint8_t src[IPV6_ADDR_LEN]; } ipv6; }; -struct { + struct { rte_be16_t src; rte_be16_t dst; } udp; @@ -463,7 +470,9 @@ static const union { struct rte_flow_item_tcp tcp; struct rte_flow_item_udp udp; struct rte_flow_item_vxlan vxlan; -} flow_tcf_mask_empty; +} flow_tcf_mask_empty = { + {0}, +}; /** Supported masks for known item types. */ static const struct { @@ -1279,7 +1288,7 @@ flow_tcf_validate_vxlan_encap_ipv4(const struct rte_flow_item *item, * Pointer to the error structure. * * @return - * 0 on success, a negative errno value otherwise and rte_ernno is set. + * 0 on success, a negative errno value otherwise and rte_errno is set. **/ static int flow_tcf_validate_vxlan_encap_ipv6(const struct rte_flow_item *item, @@ -1365,7 +1374,7 @@ flow_tcf_validate_vxlan_encap_ipv6(const struct rte_flow_item *item, * Pointer to the error structure. * * @return - * 0 on success, a negative errno value otherwise and rte_ernno is set. + * 0 on success, a negative errno value otherwise and rte_errno is set. **/ static int flow_tcf_validate_vxlan_encap_udp(const struct rte_flow_item *item, @@ -1433,7 +1442,7 @@ flow_tcf_validate_vxlan_encap_udp(const struct rte_flow_item *item, * Pointer to the error structure. * * @return - * 0 on success, a negative errno value otherwise and rte_ernno is set. + * 0 on success, a negative errno value otherwise and rte_errno is set. **/ static int flow_tcf_validate_vxlan_encap_vni(const struct rte_flow_item *item, @@ -1481,7 +1490,7 @@ flow_tcf_validate_vxlan_encap_vni(const struct rte_flow_item *item, * Pointer to the error structure. * * @return - * 0 on success, a negative errno value otherwise and rte_ernno is set. + * 0 on success, a negative errno value otherwise and rte_errno is set. **/ static int flow_tcf_validate_vxlan_encap(const struct rte_flow_action *action, @@ -1584,141 +1593,8 @@ flow_tcf_validate_vxlan_encap(const struct rte_flow_action *action, } /** - * Validate RTE_FLOW_ITEM_TYPE_IPV4 item if VXLAN_DECAP action - * is present in actions list. - * - * @param[in] ipv4 - * Outer IPv4 address item (if any, NULL otherwise). - * @param[out] error - * Pointer to the error structure. - * - * @return - * 0 on success, a negative errno value otherwise and rte_ernno is set. - **/ -static int -flow_tcf_validate_vxlan_decap_ipv4(const struct rte_flow_item *ipv4, - struct rte_flow_error *error) -{ - const struct rte_flow_item_ipv4 *spec = ipv4->spec; - const struct rte_flow_item_ipv4 *mask = ipv4->mask; - - if (!spec) { - /* - * Specification for IP addresses cannot be empty - * because it is required as decap parameter. - */ - return rte_flow_error_set(error, EINVAL, - RTE_FLOW_ERROR_TYPE_ITEM, ipv4, - "NULL outer ipv4 address" - " specification for vxlan" - " for vxlan decapsulation"); - } - if (!mask) - mask = &rte_flow_item_ipv4_mask; - if (mask->hdr.dst_addr != RTE_BE32(0x00000000)) { - if (mask->hdr.dst_addr != RTE_BE32(0xffffffff)) - return rte_flow_error_set - (error, ENOTSUP, - RTE_FLOW_ERROR_TYPE_ITEM_MASK, mask, - "no support for partial mask on" - " \"ipv4.hdr.dst_addr\" field"); - /* More IP address validations can be put here. */ - } else { - /* - * Kernel uses the destination IP address - * to determine the ingress network interface - * for traffic being decapsulated. - */ - return rte_flow_error_set(error, EINVAL, - RTE_FLOW_ERROR_TYPE_ITEM, ipv4, - "outer ipv4 destination address" - " must be specified for" - " vxlan decapsulation"); - } - /* Source IP address is optional for decap. */ - if (mask->hdr.src_addr != RTE_BE32(0x00000000) && - mask->hdr.src_addr != RTE_BE32(0xffffffff)) - return rte_flow_error_set(error, ENOTSUP, - RTE_FLOW_ERROR_TYPE_ITEM_MASK, mask, - "no support for partial mask on" - " \"ipv4.hdr.src_addr\" field"); - return 0; -} - -/** - * Validate RTE_FLOW_ITEM_TYPE_IPV6 item if VXLAN_DECAP action - * is present in actions list. - * - * @param[in] ipv6 - * Outer IPv6 address item (if any, NULL otherwise). - * @param[out] error - * Pointer to the error structure. - * - * @return - * 0 on success, a negative errno value otherwise and rte_ernno is set. - **/ -static int -flow_tcf_validate_vxlan_decap_ipv6(const struct rte_flow_item *ipv6, - struct rte_flow_error *error) -{ - const struct rte_flow_item_ipv6 *spec = ipv6->spec; - const struct rte_flow_item_ipv6 *mask = ipv6->mask; - - if (!spec) { - /* - * Specification for IP addresses cannot be empty - * because it is required as decap parameter. - */ - return rte_flow_error_set(error, EINVAL, - RTE_FLOW_ERROR_TYPE_ITEM, ipv6, - "NULL outer ipv6 address" - " specification for vxlan" - " decapsulation"); - } - if (!mask) - mask = &rte_flow_item_ipv6_mask; - if (memcmp(&mask->hdr.dst_addr, - &flow_tcf_mask_empty.ipv6.hdr.dst_addr, - IPV6_ADDR_LEN)) { - if (memcmp(&mask->hdr.dst_addr, - &rte_flow_item_ipv6_mask.hdr.dst_addr, - IPV6_ADDR_LEN)) - return rte_flow_error_set - (error, ENOTSUP, - RTE_FLOW_ERROR_TYPE_ITEM_MASK, mask, - "no support for partial mask on" - " \"ipv6.hdr.dst_addr\" field"); - /* More IP address validations can be put here. */ - } else { - /* - * Kernel uses the destination IP address - * to determine the ingress network interface - * for traffic being decapsulated. - */ - return rte_flow_error_set(error, EINVAL, - RTE_FLOW_ERROR_TYPE_ITEM, ipv6, - "outer ipv6 destination address must be " - "specified for vxlan decapsulation"); - } - /* Source IP address is optional for decap. */ - if (memcmp(&mask->hdr.src_addr, - &flow_tcf_mask_empty.ipv6.hdr.src_addr, - IPV6_ADDR_LEN)) { - if (memcmp(&mask->hdr.src_addr, - &rte_flow_item_ipv6_mask.hdr.src_addr, - IPV6_ADDR_LEN)) - return rte_flow_error_set - (error, ENOTSUP, - RTE_FLOW_ERROR_TYPE_ITEM_MASK, mask, - "no support for partial mask on" - " \"ipv6.hdr.src_addr\" field"); - } - return 0; -} - -/** - * Validate RTE_FLOW_ITEM_TYPE_UDP item if VXLAN_DECAP action - * is present in actions list. + * Validate outer RTE_FLOW_ITEM_TYPE_UDP item if tunnel item + * RTE_FLOW_ITEM_TYPE_VXLAN is present in item list. * * @param[in] udp * Outer UDP layer item (if any, NULL otherwise). @@ -1726,7 +1602,7 @@ flow_tcf_validate_vxlan_decap_ipv6(const struct rte_flow_item *ipv6, * Pointer to the error structure. * * @return - * 0 on success, a negative errno value otherwise and rte_ernno is set. + * 0 on success, a negative errno value otherwise and rte_errno is set. **/ static int flow_tcf_validate_vxlan_decap_udp(const struct rte_flow_item *udp, @@ -1794,7 +1670,7 @@ flow_tcf_validate_vxlan_decap_udp(const struct rte_flow_item *udp, * Pointer to the error structure. * * @return - * 0 on success, a negative errno value otherwise and rte_ernno is set. + * 0 on success, a negative errno value otherwise and rte_errno is set. */ static int flow_tcf_validate(struct rte_eth_dev *dev, @@ -1825,9 +1701,13 @@ flow_tcf_validate(struct rte_eth_dev *dev, const struct rte_flow_action_set_ipv4 *set_ipv4; const struct rte_flow_action_set_ipv6 *set_ipv6; } conf; + const struct rte_flow_item *outer_udp = NULL; + rte_be16_t inner_etype = RTE_BE16(ETH_P_ALL); + rte_be16_t outer_etype = RTE_BE16(ETH_P_ALL); + rte_be16_t vlan_etype = RTE_BE16(ETH_P_ALL); uint64_t item_flags = 0; uint64_t action_flags = 0; - uint8_t next_protocol = -1; + uint8_t next_protocol = 0xff; unsigned int tcm_ifindex = 0; uint8_t pedit_validated = 0; struct flow_tcf_ptoi ptoi[PTOI_TABLE_SZ_MAX(dev)]; @@ -2011,17 +1891,16 @@ flow_tcf_validate(struct rte_eth_dev *dev, for (; items->type != RTE_FLOW_ITEM_TYPE_END; items++) { unsigned int i; - if ((item_flags & MLX5_FLOW_LAYER_TUNNEL) && - items->type != RTE_FLOW_ITEM_TYPE_ETH) - return rte_flow_error_set(error, ENOTSUP, - RTE_FLOW_ERROR_TYPE_ITEM, - items, - "only L2 inner item" - " is supported"); switch (items->type) { case RTE_FLOW_ITEM_TYPE_VOID: break; case RTE_FLOW_ITEM_TYPE_PORT_ID: + if (item_flags & MLX5_FLOW_LAYER_TUNNEL) + return rte_flow_error_set + (error, ENOTSUP, + RTE_FLOW_ERROR_TYPE_ITEM, items, + "inner tunnel port id" + " item is not supported"); mask.port_id = flow_tcf_item_mask (items, &rte_flow_item_port_id_mask, &flow_tcf_mask_supported.port_id, @@ -2072,8 +1951,8 @@ flow_tcf_validate(struct rte_eth_dev *dev, if (ret < 0) return ret; item_flags |= (item_flags & MLX5_FLOW_LAYER_TUNNEL) ? - MLX5_FLOW_LAYER_INNER_L2 : - MLX5_FLOW_LAYER_OUTER_L2; + MLX5_FLOW_LAYER_INNER_L2 : + MLX5_FLOW_LAYER_OUTER_L2; /* TODO: * Redundant check due to different supported mask. * Same for the rest of items. @@ -2094,8 +1973,40 @@ flow_tcf_validate(struct rte_eth_dev *dev, mask.eth, "no support for partial mask on" " \"type\" field"); + assert(items->spec); + spec.eth = items->spec; + if (mask.eth->type && + (item_flags & MLX5_FLOW_LAYER_TUNNEL) && + inner_etype != RTE_BE16(ETH_P_ALL) && + inner_etype != spec.eth->type) + return rte_flow_error_set + (error, EINVAL, + RTE_FLOW_ERROR_TYPE_ITEM, + items, + "inner eth_type conflict"); + if (mask.eth->type && + !(item_flags & MLX5_FLOW_LAYER_TUNNEL) && + outer_etype != RTE_BE16(ETH_P_ALL) && + outer_etype != spec.eth->type) + return rte_flow_error_set + (error, EINVAL, + RTE_FLOW_ERROR_TYPE_ITEM, + items, + "outer eth_type conflict"); + if (mask.eth->type) { + if (item_flags & MLX5_FLOW_LAYER_TUNNEL) + inner_etype = spec.eth->type; + else + outer_etype = spec.eth->type; + } break; case RTE_FLOW_ITEM_TYPE_VLAN: + if (item_flags & MLX5_FLOW_LAYER_TUNNEL) + return rte_flow_error_set + (error, ENOTSUP, + RTE_FLOW_ERROR_TYPE_ITEM, items, + "inner tunnel VLAN" + " is not supported"); ret = mlx5_flow_validate_item_vlan(items, item_flags, error); if (ret < 0) @@ -2124,13 +2035,36 @@ flow_tcf_validate(struct rte_eth_dev *dev, "no support for partial masks on" " \"tci\" (PCP and VID parts) and" " \"inner_type\" fields"); + if (outer_etype != RTE_BE16(ETH_P_ALL) && + outer_etype != RTE_BE16(ETH_P_8021Q)) + return rte_flow_error_set + (error, EINVAL, + RTE_FLOW_ERROR_TYPE_ITEM, + items, + "outer eth_type conflict," + " must be 802.1Q"); + outer_etype = RTE_BE16(ETH_P_8021Q); + assert(items->spec); + spec.vlan = items->spec; + if (mask.vlan->inner_type && + vlan_etype != RTE_BE16(ETH_P_ALL) && + vlan_etype != spec.vlan->inner_type) + return rte_flow_error_set + (error, EINVAL, + RTE_FLOW_ERROR_TYPE_ITEM, + items, + "vlan eth_type conflict"); + if (mask.vlan->inner_type) + vlan_etype = spec.vlan->inner_type; break; case RTE_FLOW_ITEM_TYPE_IPV4: ret = mlx5_flow_validate_item_ipv4(items, item_flags, error); if (ret < 0) return ret; - item_flags |= MLX5_FLOW_LAYER_OUTER_L3_IPV4; + item_flags |= (item_flags & MLX5_FLOW_LAYER_TUNNEL) ? + MLX5_FLOW_LAYER_INNER_L3_IPV4 : + MLX5_FLOW_LAYER_OUTER_L3_IPV4; mask.ipv4 = flow_tcf_item_mask (items, &rte_flow_item_ipv4_mask, &flow_tcf_mask_supported.ipv4, @@ -2151,11 +2085,36 @@ flow_tcf_validate(struct rte_eth_dev *dev, next_protocol = ((const struct rte_flow_item_ipv4 *) (items->spec))->hdr.next_proto_id; - if (action_flags & MLX5_FLOW_ACTION_VXLAN_DECAP) { - ret = flow_tcf_validate_vxlan_decap_ipv4 - (items, error); - if (ret < 0) - return ret; + if (item_flags & MLX5_FLOW_LAYER_TUNNEL) { + if (inner_etype != RTE_BE16(ETH_P_ALL) && + inner_etype != RTE_BE16(ETH_P_IP)) + return rte_flow_error_set + (error, EINVAL, + RTE_FLOW_ERROR_TYPE_ITEM, + items, + "inner eth_type conflict," + " IPv4 is required"); + inner_etype = RTE_BE16(ETH_P_IP); + } else if (item_flags & MLX5_FLOW_LAYER_OUTER_VLAN) { + if (vlan_etype != RTE_BE16(ETH_P_ALL) && + vlan_etype != RTE_BE16(ETH_P_IP)) + return rte_flow_error_set + (error, EINVAL, + RTE_FLOW_ERROR_TYPE_ITEM, + items, + "vlan eth_type conflict," + " IPv4 is required"); + vlan_etype = RTE_BE16(ETH_P_IP); + } else { + if (outer_etype != RTE_BE16(ETH_P_ALL) && + outer_etype != RTE_BE16(ETH_P_IP)) + return rte_flow_error_set + (error, EINVAL, + RTE_FLOW_ERROR_TYPE_ITEM, + items, + "eth_type conflict," + " IPv4 is required"); + outer_etype = RTE_BE16(ETH_P_IP); } break; case RTE_FLOW_ITEM_TYPE_IPV6: @@ -2163,7 +2122,9 @@ flow_tcf_validate(struct rte_eth_dev *dev, error); if (ret < 0) return ret; - item_flags |= MLX5_FLOW_LAYER_OUTER_L3_IPV6; + item_flags |= (item_flags & MLX5_FLOW_LAYER_TUNNEL) ? + MLX5_FLOW_LAYER_INNER_L3_IPV6 : + MLX5_FLOW_LAYER_OUTER_L3_IPV6; mask.ipv6 = flow_tcf_item_mask (items, &rte_flow_item_ipv6_mask, &flow_tcf_mask_supported.ipv6, @@ -2184,11 +2145,36 @@ flow_tcf_validate(struct rte_eth_dev *dev, next_protocol = ((const struct rte_flow_item_ipv6 *) (items->spec))->hdr.proto; - if (action_flags & MLX5_FLOW_ACTION_VXLAN_DECAP) { - ret = flow_tcf_validate_vxlan_decap_ipv6 - (items, error); - if (ret < 0) - return ret; + if (item_flags & MLX5_FLOW_LAYER_TUNNEL) { + if (inner_etype != RTE_BE16(ETH_P_ALL) && + inner_etype != RTE_BE16(ETH_P_IPV6)) + return rte_flow_error_set + (error, EINVAL, + RTE_FLOW_ERROR_TYPE_ITEM, + items, + "inner eth_type conflict," + " IPv6 is required"); + inner_etype = RTE_BE16(ETH_P_IPV6); + } else if (item_flags & MLX5_FLOW_LAYER_OUTER_VLAN) { + if (vlan_etype != RTE_BE16(ETH_P_ALL) && + vlan_etype != RTE_BE16(ETH_P_IPV6)) + return rte_flow_error_set + (error, EINVAL, + RTE_FLOW_ERROR_TYPE_ITEM, + items, + "vlan eth_type conflict," + " IPv6 is required"); + vlan_etype = RTE_BE16(ETH_P_IPV6); + } else { + if (outer_etype != RTE_BE16(ETH_P_ALL) && + outer_etype != RTE_BE16(ETH_P_IPV6)) + return rte_flow_error_set + (error, EINVAL, + RTE_FLOW_ERROR_TYPE_ITEM, + items, + "eth_type conflict," + " IPv6 is required"); + outer_etype = RTE_BE16(ETH_P_IPV6); } break; case RTE_FLOW_ITEM_TYPE_UDP: @@ -2196,7 +2182,9 @@ flow_tcf_validate(struct rte_eth_dev *dev, next_protocol, error); if (ret < 0) return ret; - item_flags |= MLX5_FLOW_LAYER_OUTER_L4_UDP; + item_flags |= (item_flags & MLX5_FLOW_LAYER_TUNNEL) ? + MLX5_FLOW_LAYER_INNER_L4_UDP : + MLX5_FLOW_LAYER_OUTER_L4_UDP; mask.udp = flow_tcf_item_mask (items, &rte_flow_item_udp_mask, &flow_tcf_mask_supported.udp, @@ -2205,12 +2193,12 @@ flow_tcf_validate(struct rte_eth_dev *dev, error); if (!mask.udp) return -rte_errno; - if (action_flags & MLX5_FLOW_ACTION_VXLAN_DECAP) { - ret = flow_tcf_validate_vxlan_decap_udp - (items, error); - if (ret < 0) - return ret; - } + /* + * Save the presumed outer UDP item for extra check + * if the tunnel item will be found later in the list. + */ + if (!(item_flags & MLX5_FLOW_LAYER_TUNNEL)) + outer_udp = items; break; case RTE_FLOW_ITEM_TYPE_TCP: ret = mlx5_flow_validate_item_tcp @@ -2220,7 +2208,9 @@ flow_tcf_validate(struct rte_eth_dev *dev, error); if (ret < 0) return ret; - item_flags |= MLX5_FLOW_LAYER_OUTER_L4_TCP; + item_flags |= (item_flags & MLX5_FLOW_LAYER_TUNNEL) ? + MLX5_FLOW_LAYER_INNER_L4_TCP : + MLX5_FLOW_LAYER_OUTER_L4_TCP; mask.tcp = flow_tcf_item_mask (items, &rte_flow_item_tcp_mask, &flow_tcf_mask_supported.tcp, @@ -2231,13 +2221,12 @@ flow_tcf_validate(struct rte_eth_dev *dev, return -rte_errno; break; case RTE_FLOW_ITEM_TYPE_VXLAN: - if (!(action_flags & MLX5_FLOW_ACTION_VXLAN_DECAP)) + if (item_flags & MLX5_FLOW_LAYER_OUTER_VLAN) return rte_flow_error_set (error, ENOTSUP, - RTE_FLOW_ERROR_TYPE_ITEM, - items, - "vni pattern should be followed by" - " vxlan decapsulation action"); + RTE_FLOW_ERROR_TYPE_ITEM, items, + "vxlan tunnel over vlan" + " is not supported"); ret = mlx5_flow_validate_item_vxlan(items, item_flags, error); if (ret < 0) @@ -2259,6 +2248,45 @@ flow_tcf_validate(struct rte_eth_dev *dev, mask.vxlan, "no support for partial or " "empty mask on \"vxlan.vni\" field"); + /* + * The VNI item assumes the VXLAN tunnel, it requires + * at least the outer destination UDP port must be + * specified without wildcards to allow kernel select + * the virtual VXLAN device by port. Also outer IPv4 + * or IPv6 item must be specified (wilcards or even + * zero mask are allowed) to let driver know the tunnel + * IP version and process UDP traffic correctly. + */ + if (!(item_flags & + (MLX5_FLOW_LAYER_OUTER_L3_IPV4 | + MLX5_FLOW_LAYER_OUTER_L3_IPV6))) + return rte_flow_error_set + (error, EINVAL, + RTE_FLOW_ERROR_TYPE_ACTION, + NULL, + "no outer IP pattern found" + " for vxlan tunnel"); + if (!(item_flags & MLX5_FLOW_LAYER_OUTER_L4_UDP)) + return rte_flow_error_set + (error, EINVAL, + RTE_FLOW_ERROR_TYPE_ACTION, + NULL, + "no outer UDP pattern found" + " for vxlan tunnel"); + /* + * All items preceding the tunnel item become outer + * ones and we should do extra validation for them + * due to tc limitations for tunnel outer parameters. + * Currently only outer UDP item requres extra check, + * use the saved pointer instead of item list rescan. + */ + assert(outer_udp); + ret = flow_tcf_validate_vxlan_decap_udp + (outer_udp, error); + if (ret < 0) + return ret; + /* Reset L4 protocol for inner parameters. */ + next_protocol = 0xff; break; default: return rte_flow_error_set(error, ENOTSUP, @@ -2316,7 +2344,7 @@ flow_tcf_validate(struct rte_eth_dev *dev, */ if ((action_flags & MLX5_FLOW_ACTION_OF_PUSH_VLAN) && (action_flags & MLX5_FLOW_ACTION_PORT_ID) && - ((struct priv *)port_id_dev->data->dev_private)->representor) + ((struct mlx5_priv *)port_id_dev->data->dev_private)->representor) return rte_flow_error_set(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_ACTION, actions, "vlan push can only be applied" @@ -2361,28 +2389,20 @@ flow_tcf_validate(struct rte_eth_dev *dev, "no ethernet found in" " pattern"); } - if (action_flags & MLX5_FLOW_ACTION_VXLAN_DECAP) { - if (!(item_flags & - (MLX5_FLOW_LAYER_OUTER_L3_IPV4 | - MLX5_FLOW_LAYER_OUTER_L3_IPV6))) - return rte_flow_error_set(error, EINVAL, - RTE_FLOW_ERROR_TYPE_ACTION, - NULL, - "no outer IP pattern found" - " for vxlan decap action"); - if (!(item_flags & MLX5_FLOW_LAYER_OUTER_L4_UDP)) - return rte_flow_error_set(error, EINVAL, - RTE_FLOW_ERROR_TYPE_ACTION, - NULL, - "no outer UDP pattern found" - " for vxlan decap action"); - if (!(item_flags & MLX5_FLOW_LAYER_VXLAN)) - return rte_flow_error_set(error, EINVAL, - RTE_FLOW_ERROR_TYPE_ACTION, - NULL, - "no VNI pattern found" - " for vxlan decap action"); - } + if ((action_flags & MLX5_FLOW_ACTION_VXLAN_DECAP) && + !(item_flags & MLX5_FLOW_LAYER_VXLAN)) + return rte_flow_error_set(error, EINVAL, + RTE_FLOW_ERROR_TYPE_ACTION, + NULL, + "no VNI pattern found" + " for vxlan decap action"); + if ((action_flags & MLX5_FLOW_ACTION_VXLAN_ENCAP) && + (item_flags & MLX5_FLOW_LAYER_TUNNEL)) + return rte_flow_error_set(error, EINVAL, + RTE_FLOW_ERROR_TYPE_ACTION, + NULL, + "vxlan encap not supported" + " for tunneled traffic"); return 0; } @@ -2393,17 +2413,21 @@ flow_tcf_validate(struct rte_eth_dev *dev, * Pointer to the flow attributes. * @param[in] items * Pointer to the list of items. + * @param[out] action_flags + * Pointer to the detected actions. * * @return * Maximum size of memory for items. */ static int flow_tcf_get_items_size(const struct rte_flow_attr *attr, - const struct rte_flow_item items[]) + const struct rte_flow_item items[], + uint64_t *action_flags) { int size = 0; size += SZ_NLATTR_STRZ_OF("flower") + + SZ_NLATTR_TYPE_OF(uint16_t) + /* Outer ether type. */ SZ_NLATTR_NEST + /* TCA_OPTIONS. */ SZ_NLATTR_TYPE_OF(uint32_t); /* TCA_CLS_FLAGS_SKIP_SW. */ if (attr->group > 0) @@ -2415,26 +2439,22 @@ flow_tcf_get_items_size(const struct rte_flow_attr *attr, case RTE_FLOW_ITEM_TYPE_PORT_ID: break; case RTE_FLOW_ITEM_TYPE_ETH: - size += SZ_NLATTR_TYPE_OF(uint16_t) + /* Ether type. */ - SZ_NLATTR_DATA_OF(ETHER_ADDR_LEN) * 4; + size += SZ_NLATTR_DATA_OF(ETHER_ADDR_LEN) * 4; /* dst/src MAC addr and mask. */ break; case RTE_FLOW_ITEM_TYPE_VLAN: - size += SZ_NLATTR_TYPE_OF(uint16_t) + /* Ether type. */ - SZ_NLATTR_TYPE_OF(uint16_t) + + size += SZ_NLATTR_TYPE_OF(uint16_t) + /* VLAN Ether type. */ SZ_NLATTR_TYPE_OF(uint8_t) + /* VLAN prio. */ SZ_NLATTR_TYPE_OF(uint16_t); /* VLAN ID. */ break; case RTE_FLOW_ITEM_TYPE_IPV4: - size += SZ_NLATTR_TYPE_OF(uint16_t) + /* Ether type. */ - SZ_NLATTR_TYPE_OF(uint8_t) + /* IP proto. */ + size += SZ_NLATTR_TYPE_OF(uint8_t) + /* IP proto. */ SZ_NLATTR_TYPE_OF(uint32_t) * 4; /* dst/src IP addr and mask. */ break; case RTE_FLOW_ITEM_TYPE_IPV6: - size += SZ_NLATTR_TYPE_OF(uint16_t) + /* Ether type. */ - SZ_NLATTR_TYPE_OF(uint8_t) + /* IP proto. */ + size += SZ_NLATTR_TYPE_OF(uint8_t) + /* IP proto. */ SZ_NLATTR_DATA_OF(IPV6_ADDR_LEN) * 4; /* dst/src IP addr and mask. */ break; @@ -2450,6 +2470,16 @@ flow_tcf_get_items_size(const struct rte_flow_attr *attr, break; case RTE_FLOW_ITEM_TYPE_VXLAN: size += SZ_NLATTR_TYPE_OF(uint32_t); + /* + * There might be no VXLAN decap action in the action + * list, nonetheless the VXLAN tunnel flow requires + * the decap structure to be correctly applied to + * VXLAN device, set the flag to create the structure. + * Translation routine will not put the decap action + * in tne Netlink message if there is no actual action + * in the list. + */ + *action_flags |= MLX5_FLOW_ACTION_VXLAN_DECAP; break; default: DRV_LOG(WARNING, @@ -2542,7 +2572,7 @@ flow_tcf_get_actions_and_size(const struct rte_flow_action actions[], uint64_t *action_flags) { int size = 0; - uint64_t flags = 0; + uint64_t flags = *action_flags; size += SZ_NLATTR_NEST; /* TCA_FLOWER_ACT. */ for (; actions->type != RTE_FLOW_ACTION_TYPE_END; actions++) { @@ -2642,27 +2672,6 @@ action_of_vlan: return size; } -/** - * Brand rtnetlink buffer with unique handle. - * - * This handle should be unique for a given network interface to avoid - * collisions. - * - * @param nlh - * Pointer to Netlink message. - * @param handle - * Unique 32-bit handle to use. - */ -static void -flow_tcf_nl_brand(struct nlmsghdr *nlh, uint32_t handle) -{ - struct tcmsg *tcm = mnl_nlmsg_get_payload(nlh); - - tcm->tcm_handle = handle; - DRV_LOG(DEBUG, "Netlink msg %p is branded with handle %x", - (void *)nlh, handle); -} - /** * Prepare a flow object for Linux TC flower. It calculates the maximum size of * memory required, allocates the memory, initializes Netlink message headers @@ -2679,7 +2688,7 @@ flow_tcf_nl_brand(struct nlmsghdr *nlh, uint32_t handle) * * @return * Pointer to mlx5_flow object on success, - * otherwise NULL and rte_ernno is set. + * otherwise NULL and rte_errno is set. */ static struct mlx5_flow * flow_tcf_prepare(const struct rte_flow_attr *attr, @@ -2698,7 +2707,7 @@ flow_tcf_prepare(const struct rte_flow_attr *attr, struct tcmsg *tcm; uint8_t *sp, *tun = NULL; - size += flow_tcf_get_items_size(attr, items); + size += flow_tcf_get_items_size(attr, items, &action_flags); size += flow_tcf_get_actions_and_size(actions, &action_flags); dev_flow = rte_zmalloc(__func__, size, MNL_ALIGNTO); if (!dev_flow) { @@ -2753,20 +2762,6 @@ flow_tcf_prepare(const struct rte_flow_attr *attr, dev_flow->tcf.tunnel->type = FLOW_TCF_TUNACT_VXLAN_DECAP; else if (action_flags & MLX5_FLOW_ACTION_VXLAN_ENCAP) dev_flow->tcf.tunnel->type = FLOW_TCF_TUNACT_VXLAN_ENCAP; - /* - * Generate a reasonably unique handle based on the address of the - * target buffer. - * - * This is straightforward on 32-bit systems where the flow pointer can - * be used directly. Otherwise, its least significant part is taken - * after shifting it by the previous power of two of the pointed buffer - * size. - */ - if (sizeof(dev_flow) <= 4) - flow_tcf_nl_brand(nlh, (uintptr_t)dev_flow); - else - flow_tcf_nl_brand(nlh, (uintptr_t)dev_flow >> - rte_log2_u32(rte_align32prevpow2(size))); return dev_flow; } @@ -3054,7 +3049,7 @@ flow_tcf_vxlan_encap_parse(const struct rte_flow_action *action, * Pointer to the error structure. * * @return - * 0 on success, a negative errno value otherwise and rte_ernno is set. + * 0 on success, a negative errno value otherwise and rte_errno is set. */ static int flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, @@ -3098,10 +3093,11 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, struct nlmsghdr *nlh = dev_flow->tcf.nlh; struct tcmsg *tcm = dev_flow->tcf.tcm; uint32_t na_act_index_cur; - bool eth_type_set = 0; - bool vlan_present = 0; - bool vlan_eth_type_set = 0; + rte_be16_t inner_etype = RTE_BE16(ETH_P_ALL); + rte_be16_t outer_etype = RTE_BE16(ETH_P_ALL); + rte_be16_t vlan_etype = RTE_BE16(ETH_P_ALL); bool ip_proto_set = 0; + bool tunnel_outer = 0; struct nlattr *na_flower; struct nlattr *na_flower_act; struct nlattr *na_vlan_id = NULL; @@ -3115,6 +3111,7 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, switch (dev_flow->tcf.tunnel->type) { case FLOW_TCF_TUNACT_VXLAN_DECAP: decap.vxlan = dev_flow->tcf.vxlan_decap; + tunnel_outer = 1; break; case FLOW_TCF_TUNACT_VXLAN_ENCAP: encap.vxlan = dev_flow->tcf.vxlan_encap; @@ -3136,8 +3133,7 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, * Priority cannot be zero to prevent the kernel from picking one * automatically. */ - tcm->tcm_info = TC_H_MAKE((attr->priority + 1) << 16, - RTE_BE16(ETH_P_ALL)); + tcm->tcm_info = TC_H_MAKE((attr->priority + 1) << 16, outer_etype); if (attr->group > 0) mnl_attr_put_u32(nlh, TCA_CHAIN, attr->group); mnl_attr_put_strz(nlh, TCA_KIND, "flower"); @@ -3169,7 +3165,7 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, tcm->tcm_ifindex = ptoi[i].ifindex; break; case RTE_FLOW_ITEM_TYPE_ETH: - item_flags |= (item_flags & MLX5_FLOW_LAYER_VXLAN) ? + item_flags |= (item_flags & MLX5_FLOW_LAYER_TUNNEL) ? MLX5_FLOW_LAYER_INNER_L2 : MLX5_FLOW_LAYER_OUTER_L2; mask.eth = flow_tcf_item_mask @@ -3182,18 +3178,18 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, if (mask.eth == &flow_tcf_mask_empty.eth) break; spec.eth = items->spec; - if (decap.vxlan && - !(item_flags & MLX5_FLOW_LAYER_VXLAN)) { - DRV_LOG(WARNING, - "outer L2 addresses cannot be forced" - " for vxlan decapsulation, parameter" - " ignored"); - break; - } if (mask.eth->type) { - mnl_attr_put_u16(nlh, TCA_FLOWER_KEY_ETH_TYPE, - spec.eth->type); - eth_type_set = 1; + if (item_flags & MLX5_FLOW_LAYER_TUNNEL) + inner_etype = spec.eth->type; + else + outer_etype = spec.eth->type; + } + if (tunnel_outer) { + DRV_LOG(WARNING, + "outer L2 addresses cannot be" + " forced is outer ones for tunnel," + " parameter is ignored"); + break; } if (!is_zero_ether_addr(&mask.eth->dst)) { mnl_attr_put(nlh, TCA_FLOWER_KEY_ETH_DST, @@ -3216,6 +3212,7 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, case RTE_FLOW_ITEM_TYPE_VLAN: assert(!encap.hdr); assert(!decap.hdr); + assert(!tunnel_outer); item_flags |= MLX5_FLOW_LAYER_OUTER_VLAN; mask.vlan = flow_tcf_item_mask (items, &rte_flow_item_vlan_mask, @@ -3224,20 +3221,14 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, sizeof(flow_tcf_mask_supported.vlan), error); assert(mask.vlan); - if (!eth_type_set) - mnl_attr_put_u16(nlh, TCA_FLOWER_KEY_ETH_TYPE, - RTE_BE16(ETH_P_8021Q)); - eth_type_set = 1; - vlan_present = 1; if (mask.vlan == &flow_tcf_mask_empty.vlan) break; spec.vlan = items->spec; - if (mask.vlan->inner_type) { - mnl_attr_put_u16(nlh, - TCA_FLOWER_KEY_VLAN_ETH_TYPE, - spec.vlan->inner_type); - vlan_eth_type_set = 1; - } + assert(outer_etype == RTE_BE16(ETH_P_ALL) || + outer_etype == RTE_BE16(ETH_P_8021Q)); + outer_etype = RTE_BE16(ETH_P_8021Q); + if (mask.vlan->inner_type) + vlan_etype = spec.vlan->inner_type; if (mask.vlan->tci & RTE_BE16(0xe000)) mnl_attr_put_u8(nlh, TCA_FLOWER_KEY_VLAN_PRIO, (rte_be_to_cpu_16 @@ -3250,7 +3241,9 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, assert(dev_flow->tcf.nlsize >= nlh->nlmsg_len); break; case RTE_FLOW_ITEM_TYPE_IPV4: - item_flags |= MLX5_FLOW_LAYER_OUTER_L3_IPV4; + item_flags |= (item_flags & MLX5_FLOW_LAYER_TUNNEL) ? + MLX5_FLOW_LAYER_INNER_L3_IPV4 : + MLX5_FLOW_LAYER_OUTER_L3_IPV4; mask.ipv4 = flow_tcf_item_mask (items, &rte_flow_item_ipv4_mask, &flow_tcf_mask_supported.ipv4, @@ -3258,57 +3251,83 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, sizeof(flow_tcf_mask_supported.ipv4), error); assert(mask.ipv4); - spec.ipv4 = items->spec; - if (!decap.vxlan) { - if (!eth_type_set || - (!vlan_eth_type_set && vlan_present)) - mnl_attr_put_u16 - (nlh, - vlan_present ? - TCA_FLOWER_KEY_VLAN_ETH_TYPE : - TCA_FLOWER_KEY_ETH_TYPE, - RTE_BE16(ETH_P_IP)); - eth_type_set = 1; - vlan_eth_type_set = 1; - if (mask.ipv4 == &flow_tcf_mask_empty.ipv4) - break; - if (mask.ipv4->hdr.next_proto_id) { - mnl_attr_put_u8 - (nlh, TCA_FLOWER_KEY_IP_PROTO, - spec.ipv4->hdr.next_proto_id); - ip_proto_set = 1; - } + if (item_flags & MLX5_FLOW_LAYER_TUNNEL) { + assert(inner_etype == RTE_BE16(ETH_P_ALL) || + inner_etype == RTE_BE16(ETH_P_IP)); + inner_etype = RTE_BE16(ETH_P_IP); + } else if (outer_etype == RTE_BE16(ETH_P_8021Q)) { + assert(vlan_etype == RTE_BE16(ETH_P_ALL) || + vlan_etype == RTE_BE16(ETH_P_IP)); + vlan_etype = RTE_BE16(ETH_P_IP); } else { - assert(mask.ipv4 != &flow_tcf_mask_empty.ipv4); + assert(outer_etype == RTE_BE16(ETH_P_ALL) || + outer_etype == RTE_BE16(ETH_P_IP)); + outer_etype = RTE_BE16(ETH_P_IP); + } + spec.ipv4 = items->spec; + if (!tunnel_outer && mask.ipv4->hdr.next_proto_id) { + /* + * No way to set IP protocol for outer tunnel + * layers. Usually it is fixed, for example, + * to UDP for VXLAN/GPE. + */ + assert(spec.ipv4); /* Mask is not empty. */ + mnl_attr_put_u8(nlh, TCA_FLOWER_KEY_IP_PROTO, + spec.ipv4->hdr.next_proto_id); + ip_proto_set = 1; + } + if (mask.ipv4 == &flow_tcf_mask_empty.ipv4 || + (!mask.ipv4->hdr.src_addr && + !mask.ipv4->hdr.dst_addr)) { + if (!tunnel_outer) + break; + /* + * For tunnel outer we must set outer IP key + * anyway, even if the specification/mask is + * empty. There is no another way to tell + * kernel about he outer layer protocol. + */ + mnl_attr_put_u32 + (nlh, TCA_FLOWER_KEY_ENC_IPV4_SRC, + mask.ipv4->hdr.src_addr); + mnl_attr_put_u32 + (nlh, TCA_FLOWER_KEY_ENC_IPV4_SRC_MASK, + mask.ipv4->hdr.src_addr); + assert(dev_flow->tcf.nlsize >= nlh->nlmsg_len); + break; } if (mask.ipv4->hdr.src_addr) { mnl_attr_put_u32 - (nlh, decap.vxlan ? + (nlh, tunnel_outer ? TCA_FLOWER_KEY_ENC_IPV4_SRC : TCA_FLOWER_KEY_IPV4_SRC, spec.ipv4->hdr.src_addr); mnl_attr_put_u32 - (nlh, decap.vxlan ? + (nlh, tunnel_outer ? TCA_FLOWER_KEY_ENC_IPV4_SRC_MASK : TCA_FLOWER_KEY_IPV4_SRC_MASK, mask.ipv4->hdr.src_addr); } if (mask.ipv4->hdr.dst_addr) { mnl_attr_put_u32 - (nlh, decap.vxlan ? + (nlh, tunnel_outer ? TCA_FLOWER_KEY_ENC_IPV4_DST : TCA_FLOWER_KEY_IPV4_DST, spec.ipv4->hdr.dst_addr); mnl_attr_put_u32 - (nlh, decap.vxlan ? + (nlh, tunnel_outer ? TCA_FLOWER_KEY_ENC_IPV4_DST_MASK : TCA_FLOWER_KEY_IPV4_DST_MASK, mask.ipv4->hdr.dst_addr); } assert(dev_flow->tcf.nlsize >= nlh->nlmsg_len); break; - case RTE_FLOW_ITEM_TYPE_IPV6: - item_flags |= MLX5_FLOW_LAYER_OUTER_L3_IPV6; + case RTE_FLOW_ITEM_TYPE_IPV6: { + bool ipv6_src, ipv6_dst; + + item_flags |= (item_flags & MLX5_FLOW_LAYER_TUNNEL) ? + MLX5_FLOW_LAYER_INNER_L3_IPV6 : + MLX5_FLOW_LAYER_OUTER_L3_IPV6; mask.ipv6 = flow_tcf_item_mask (items, &rte_flow_item_ipv6_mask, &flow_tcf_mask_supported.ipv6, @@ -3316,48 +3335,75 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, sizeof(flow_tcf_mask_supported.ipv6), error); assert(mask.ipv6); - spec.ipv6 = items->spec; - if (!decap.vxlan) { - if (!eth_type_set || - (!vlan_eth_type_set && vlan_present)) - mnl_attr_put_u16 - (nlh, - vlan_present ? - TCA_FLOWER_KEY_VLAN_ETH_TYPE : - TCA_FLOWER_KEY_ETH_TYPE, - RTE_BE16(ETH_P_IPV6)); - eth_type_set = 1; - vlan_eth_type_set = 1; - if (mask.ipv6 == &flow_tcf_mask_empty.ipv6) - break; - if (mask.ipv6->hdr.proto) { - mnl_attr_put_u8 - (nlh, TCA_FLOWER_KEY_IP_PROTO, - spec.ipv6->hdr.proto); - ip_proto_set = 1; - } + if (item_flags & MLX5_FLOW_LAYER_TUNNEL) { + assert(inner_etype == RTE_BE16(ETH_P_ALL) || + inner_etype == RTE_BE16(ETH_P_IPV6)); + inner_etype = RTE_BE16(ETH_P_IPV6); + } else if (outer_etype == RTE_BE16(ETH_P_8021Q)) { + assert(vlan_etype == RTE_BE16(ETH_P_ALL) || + vlan_etype == RTE_BE16(ETH_P_IPV6)); + vlan_etype = RTE_BE16(ETH_P_IPV6); } else { - assert(mask.ipv6 != &flow_tcf_mask_empty.ipv6); + assert(outer_etype == RTE_BE16(ETH_P_ALL) || + outer_etype == RTE_BE16(ETH_P_IPV6)); + outer_etype = RTE_BE16(ETH_P_IPV6); } - if (!IN6_IS_ADDR_UNSPECIFIED(mask.ipv6->hdr.src_addr)) { - mnl_attr_put(nlh, decap.vxlan ? + spec.ipv6 = items->spec; + if (!tunnel_outer && mask.ipv6->hdr.proto) { + /* + * No way to set IP protocol for outer tunnel + * layers. Usually it is fixed, for example, + * to UDP for VXLAN/GPE. + */ + assert(spec.ipv6); /* Mask is not empty. */ + mnl_attr_put_u8(nlh, TCA_FLOWER_KEY_IP_PROTO, + spec.ipv6->hdr.proto); + ip_proto_set = 1; + } + ipv6_dst = !IN6_IS_ADDR_UNSPECIFIED + (mask.ipv6->hdr.dst_addr); + ipv6_src = !IN6_IS_ADDR_UNSPECIFIED + (mask.ipv6->hdr.src_addr); + if (mask.ipv6 == &flow_tcf_mask_empty.ipv6 || + (!ipv6_dst && !ipv6_src)) { + if (!tunnel_outer) + break; + /* + * For tunnel outer we must set outer IP key + * anyway, even if the specification/mask is + * empty. There is no another way to tell + * kernel about he outer layer protocol. + */ + mnl_attr_put(nlh, + TCA_FLOWER_KEY_ENC_IPV6_SRC, + IPV6_ADDR_LEN, + mask.ipv6->hdr.src_addr); + mnl_attr_put(nlh, + TCA_FLOWER_KEY_ENC_IPV6_SRC_MASK, + IPV6_ADDR_LEN, + mask.ipv6->hdr.src_addr); + assert(dev_flow->tcf.nlsize >= nlh->nlmsg_len); + break; + } + if (ipv6_src) { + mnl_attr_put(nlh, tunnel_outer ? TCA_FLOWER_KEY_ENC_IPV6_SRC : TCA_FLOWER_KEY_IPV6_SRC, IPV6_ADDR_LEN, spec.ipv6->hdr.src_addr); - mnl_attr_put(nlh, decap.vxlan ? + mnl_attr_put(nlh, tunnel_outer ? TCA_FLOWER_KEY_ENC_IPV6_SRC_MASK : TCA_FLOWER_KEY_IPV6_SRC_MASK, IPV6_ADDR_LEN, mask.ipv6->hdr.src_addr); } - if (!IN6_IS_ADDR_UNSPECIFIED(mask.ipv6->hdr.dst_addr)) { - mnl_attr_put(nlh, decap.vxlan ? + if (ipv6_dst) { + mnl_attr_put(nlh, tunnel_outer ? TCA_FLOWER_KEY_ENC_IPV6_DST : TCA_FLOWER_KEY_IPV6_DST, IPV6_ADDR_LEN, spec.ipv6->hdr.dst_addr); - mnl_attr_put(nlh, decap.vxlan ? + mnl_attr_put(nlh, tunnel_outer ? TCA_FLOWER_KEY_ENC_IPV6_DST_MASK : TCA_FLOWER_KEY_IPV6_DST_MASK, IPV6_ADDR_LEN, @@ -3365,8 +3411,11 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, } assert(dev_flow->tcf.nlsize >= nlh->nlmsg_len); break; + } case RTE_FLOW_ITEM_TYPE_UDP: - item_flags |= MLX5_FLOW_LAYER_OUTER_L4_UDP; + item_flags |= (item_flags & MLX5_FLOW_LAYER_TUNNEL) ? + MLX5_FLOW_LAYER_INNER_L4_UDP : + MLX5_FLOW_LAYER_OUTER_L4_UDP; mask.udp = flow_tcf_item_mask (items, &rte_flow_item_udp_mask, &flow_tcf_mask_supported.udp, @@ -3375,7 +3424,7 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, error); assert(mask.udp); spec.udp = items->spec; - if (!decap.vxlan) { + if (!tunnel_outer) { if (!ip_proto_set) mnl_attr_put_u8 (nlh, TCA_FLOWER_KEY_IP_PROTO, @@ -3390,24 +3439,24 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, } if (mask.udp->hdr.src_port) { mnl_attr_put_u16 - (nlh, decap.vxlan ? + (nlh, tunnel_outer ? TCA_FLOWER_KEY_ENC_UDP_SRC_PORT : TCA_FLOWER_KEY_UDP_SRC, spec.udp->hdr.src_port); mnl_attr_put_u16 - (nlh, decap.vxlan ? + (nlh, tunnel_outer ? TCA_FLOWER_KEY_ENC_UDP_SRC_PORT_MASK : TCA_FLOWER_KEY_UDP_SRC_MASK, mask.udp->hdr.src_port); } if (mask.udp->hdr.dst_port) { mnl_attr_put_u16 - (nlh, decap.vxlan ? + (nlh, tunnel_outer ? TCA_FLOWER_KEY_ENC_UDP_DST_PORT : TCA_FLOWER_KEY_UDP_DST, spec.udp->hdr.dst_port); mnl_attr_put_u16 - (nlh, decap.vxlan ? + (nlh, tunnel_outer ? TCA_FLOWER_KEY_ENC_UDP_DST_PORT_MASK : TCA_FLOWER_KEY_UDP_DST_MASK, mask.udp->hdr.dst_port); @@ -3415,7 +3464,9 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, assert(dev_flow->tcf.nlsize >= nlh->nlmsg_len); break; case RTE_FLOW_ITEM_TYPE_TCP: - item_flags |= MLX5_FLOW_LAYER_OUTER_L4_TCP; + item_flags |= (item_flags & MLX5_FLOW_LAYER_TUNNEL) ? + MLX5_FLOW_LAYER_INNER_L4_TCP : + MLX5_FLOW_LAYER_OUTER_L4_TCP; mask.tcp = flow_tcf_item_mask (items, &rte_flow_item_tcp_mask, &flow_tcf_mask_supported.tcp, @@ -3459,6 +3510,7 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, break; case RTE_FLOW_ITEM_TYPE_VXLAN: assert(decap.vxlan); + tunnel_outer = 0; item_flags |= MLX5_FLOW_LAYER_VXLAN; spec.vxlan = items->spec; mnl_attr_put_u32(nlh, @@ -3472,6 +3524,34 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, NULL, "item not supported"); } } + /* + * Set the ether_type flower key and tc rule protocol: + * - if there is nor VLAN neither VXLAN the key is taken from + * eth item directly or deduced from L3 items. + * - if there is vlan item then key is fixed to 802.1q. + * - if there is vxlan item then key is set to inner tunnel type. + * - simultaneous vlan and vxlan items are prohibited. + */ + if (outer_etype != RTE_BE16(ETH_P_ALL)) { + tcm->tcm_info = TC_H_MAKE((attr->priority + 1) << 16, + outer_etype); + if (item_flags & MLX5_FLOW_LAYER_TUNNEL) { + if (inner_etype != RTE_BE16(ETH_P_ALL)) + mnl_attr_put_u16(nlh, + TCA_FLOWER_KEY_ETH_TYPE, + inner_etype); + } else { + mnl_attr_put_u16(nlh, + TCA_FLOWER_KEY_ETH_TYPE, + outer_etype); + if (outer_etype == RTE_BE16(ETH_P_8021Q) && + vlan_etype != RTE_BE16(ETH_P_ALL)) + mnl_attr_put_u16(nlh, + TCA_FLOWER_KEY_VLAN_ETH_TYPE, + vlan_etype); + } + assert(dev_flow->tcf.nlsize >= nlh->nlmsg_len); + } na_flower_act = mnl_attr_nest_start(nlh, TCA_FLOWER_ACT); na_act_index_cur = 1; for (; actions->type != RTE_FLOW_ACTION_TYPE_END; actions++) { @@ -3505,6 +3585,10 @@ flow_tcf_translate(struct rte_eth_dev *dev, struct mlx5_flow *dev_flow, mnl_attr_get_payload (mnl_nlmsg_get_payload_tail (nlh)))->ifindex; + } else if (decap.hdr) { + assert(dev_flow->tcf.tunnel); + dev_flow->tcf.tunnel->ifindex_ptr = + (unsigned int *)&tcm->tcm_ifindex; } mnl_attr_put(nlh, TCA_MIRRED_PARMS, sizeof(struct tc_mirred), @@ -4266,8 +4350,8 @@ flow_tcf_collect_vxlan_cb(const struct nlmsghdr *nlh, void *arg) /** * Cleanup the outer interface. Removes all found vxlan devices - * attached to specified index, flushes the meigh and local IP - * datavase. + * attached to specified index, flushes the neigh and local IP + * database. * * @param[in] tcf * Context object initialized by mlx5_flow_tcf_context_create(). @@ -4815,6 +4899,7 @@ flow_tcf_vtep_create(struct mlx5_flow_tcf_context *tcf, * when we do not need it anymore. */ vtep->created = 1; + vtep->waitreg = 1; } /* Try to get ifindex of created of pre-existing device. */ ret = if_nametoindex(name); @@ -5236,10 +5321,11 @@ flow_tcf_check_inhw(struct mlx5_flow_tcf_context *tcf, static void flow_tcf_remove(struct rte_eth_dev *dev, struct rte_flow *flow) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_flow_tcf_context *ctx = priv->tcf_context; struct mlx5_flow *dev_flow; struct nlmsghdr *nlh; + struct tcmsg *tcm; if (!flow) return; @@ -5260,10 +5346,53 @@ flow_tcf_remove(struct rte_eth_dev *dev, struct rte_flow *flow) dev_flow); dev_flow->tcf.tunnel->vtep = NULL; } + /* Cleanup the rule handle value. */ + tcm = mnl_nlmsg_get_payload(nlh); + tcm->tcm_handle = 0; dev_flow->tcf.applied = 0; } } +/** + * Fetch the applied rule handle. This is callback routine called by + * libmnl mnl_cb_run() in loop for every message in received packet. + * When the NLM_F_ECHO flag i sspecified the kernel sends the created + * rule descriptor back to the application and we can retrieve the + * actual rule handle from updated descriptor. + * + * @param[in] nlh + * Pointer to reply header. + * @param[in, out] arg + * Context pointer for this callback. + * + * @return + * A positive, nonzero value on success (required by libmnl + * to continue messages processing). + */ +static int +flow_tcf_collect_apply_cb(const struct nlmsghdr *nlh, void *arg) +{ + struct nlmsghdr *nlhrq = arg; + struct tcmsg *tcmrq = mnl_nlmsg_get_payload(nlhrq); + struct tcmsg *tcm = mnl_nlmsg_get_payload(nlh); + struct nlattr *na; + + if (nlh->nlmsg_type != RTM_NEWTFILTER || + nlh->nlmsg_seq != nlhrq->nlmsg_seq) + return 1; + mnl_attr_for_each(na, nlh, sizeof(*tcm)) { + switch (mnl_attr_get_type(na)) { + case TCA_KIND: + if (strcmp(mnl_attr_get_payload(na), "flower")) { + /* Not flower filter, drop entire message. */ + return 1; + } + tcmrq->tcm_handle = tcm->tcm_handle; + return 1; + } + } + return 1; +} /** * Apply flow to E-Switch by sending Netlink message. * @@ -5275,16 +5404,20 @@ flow_tcf_remove(struct rte_eth_dev *dev, struct rte_flow *flow) * Pointer to the error structure. * * @return - * 0 on success, a negative errno value otherwise and rte_ernno is set. + * 0 on success, a negative errno value otherwise and rte_errno is set. */ static int flow_tcf_apply(struct rte_eth_dev *dev, struct rte_flow *flow, struct rte_flow_error *error) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_flow_tcf_context *ctx = priv->tcf_context; struct mlx5_flow *dev_flow; struct nlmsghdr *nlh; + struct tcmsg *tcm; + uint64_t start = 0; + uint64_t twait = 0; + int ret; dev_flow = LIST_FIRST(&flow->dev_flows); /* E-Switch flow can't be expanded. */ @@ -5293,7 +5426,11 @@ flow_tcf_apply(struct rte_eth_dev *dev, struct rte_flow *flow, return 0; nlh = dev_flow->tcf.nlh; nlh->nlmsg_type = RTM_NEWTFILTER; - nlh->nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE | NLM_F_EXCL; + nlh->nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE | + NLM_F_EXCL | NLM_F_ECHO; + tcm = mnl_nlmsg_get_payload(nlh); + /* Allow kernel to assign handle on its own. */ + tcm->tcm_handle = 0; if (dev_flow->tcf.tunnel) { /* * Replace the interface index, target for @@ -5313,8 +5450,52 @@ flow_tcf_apply(struct rte_eth_dev *dev, struct rte_flow *flow, dev_flow->tcf.tunnel->ifindex_org); *dev_flow->tcf.tunnel->ifindex_ptr = dev_flow->tcf.tunnel->vtep->ifindex; + if (dev_flow->tcf.tunnel->vtep->waitreg) { + /* Clear wait flag for VXLAN port registration. */ + dev_flow->tcf.tunnel->vtep->waitreg = 0; + twait = rte_get_timer_hz(); + assert(twait > MS_PER_S); + twait = twait * MLX5_VXLAN_WAIT_PORT_REG_MS; + twait = twait / MS_PER_S; + start = rte_get_timer_cycles(); + } } - if (!flow_tcf_nl_ack(ctx, nlh, NULL, NULL)) { + /* + * Kernel creates the VXLAN devices and registers UDP ports to + * be hardware offloaded within the NIC kernel drivers. The + * registration process is being performed into context of + * working kernel thread and the race conditions might happen. + * The VXLAN device is created and success is returned to + * calling application, but the UDP port registration process + * is not completed yet. The next applied rule may be rejected + * by the driver with ENOSUP code. We are going to wait a bit, + * allowing registration process to be completed. The waiting + * is performed once after device been created. + */ + do { + struct timespec onems; + + ret = flow_tcf_nl_ack(ctx, nlh, + flow_tcf_collect_apply_cb, nlh); + if (!ret || ret != -ENOTSUP || !twait) + break; + /* Wait one millisecond and try again till timeout. */ + onems.tv_sec = 0; + onems.tv_nsec = NS_PER_S / MS_PER_S; + nanosleep(&onems, 0); + if ((rte_get_timer_cycles() - start) > twait) { + /* Timeout elapsed, try once more and exit. */ + twait = 0; + } + } while (true); + if (!ret) { + if (!tcm->tcm_handle) { + flow_tcf_remove(dev, flow); + return rte_flow_error_set + (error, ENOENT, + RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL, + "netlink: rule zero handle returned"); + } dev_flow->tcf.applied = 1; if (*dev_flow->tcf.ptc_flags & TCA_CLS_FLAGS_SKIP_SW) return 0; @@ -5713,7 +5894,7 @@ flow_tcf_query_count(struct rte_eth_dev *dev, { struct flow_tcf_stats_basic sb_data; struct rte_flow_query_count *qc = data; - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_flow_tcf_context *ctx = priv->tcf_context; struct mnl_socket *nl = ctx->nl; struct mlx5_flow *dev_flow; diff --git a/dpdk/drivers/net/mlx5/mlx5_flow_verbs.c b/dpdk/drivers/net/mlx5/mlx5_flow_verbs.c index 81ec59d78..1fdbca3d2 100644 --- a/dpdk/drivers/net/mlx5/mlx5_flow_verbs.c +++ b/dpdk/drivers/net/mlx5/mlx5_flow_verbs.c @@ -55,7 +55,7 @@ flow_verbs_counter_create(struct rte_eth_dev *dev, struct mlx5_flow_counter *counter) { #if defined(HAVE_IBV_DEVICE_COUNTERS_SET_V42) - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct ibv_counter_set_init_attr init = { .counter_set_id = counter->id}; @@ -66,7 +66,7 @@ flow_verbs_counter_create(struct rte_eth_dev *dev, } return 0; #elif defined(HAVE_IBV_DEVICE_COUNTERS_SET_V45) - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct ibv_counters_init_attr init = {0}; struct ibv_counter_attach_attr attach; int ret; @@ -117,17 +117,17 @@ flow_verbs_counter_create(struct rte_eth_dev *dev, static struct mlx5_flow_counter * flow_verbs_counter_new(struct rte_eth_dev *dev, uint32_t shared, uint32_t id) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_flow_counter *cnt; int ret; - LIST_FOREACH(cnt, &priv->flow_counters, next) { - if (!cnt->shared || cnt->shared != shared) - continue; - if (cnt->id != id) - continue; - cnt->ref_cnt++; - return cnt; + if (shared) { + LIST_FOREACH(cnt, &priv->flow_counters, next) { + if (cnt->shared && cnt->id == id) { + cnt->ref_cnt++; + return cnt; + } + } } cnt = rte_calloc(__func__, 1, sizeof(*cnt), 0); if (!cnt) { @@ -1191,7 +1191,7 @@ flow_verbs_validate(struct rte_eth_dev *dev, case RTE_FLOW_ACTION_TYPE_RSS: ret = mlx5_flow_validate_action_rss(actions, action_flags, dev, - attr, + attr, item_flags, error); if (ret < 0) return ret; @@ -1383,7 +1383,7 @@ flow_verbs_prepare(const struct rte_flow_attr *attr __rte_unused, * Pointer to the error structure. * * @return - * 0 on success, else a negative errno value otherwise and rte_ernno is set. + * 0 on success, else a negative errno value otherwise and rte_errno is set. */ static int flow_verbs_translate(struct rte_eth_dev *dev, @@ -1398,7 +1398,7 @@ flow_verbs_translate(struct rte_eth_dev *dev, uint64_t action_flags = 0; uint64_t priority = attr->priority; uint32_t subpriority = 0; - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; if (priority == MLX5_FLOW_PRIO_RSVD) priority = priv->config.flow_prio - 1; diff --git a/dpdk/drivers/net/mlx5/mlx5_mac.c b/dpdk/drivers/net/mlx5/mlx5_mac.c index 672a47619..bce026f98 100644 --- a/dpdk/drivers/net/mlx5/mlx5_mac.c +++ b/dpdk/drivers/net/mlx5/mlx5_mac.c @@ -67,7 +67,7 @@ mlx5_get_mac(struct rte_eth_dev *dev, uint8_t (*mac)[ETHER_ADDR_LEN]) static void mlx5_internal_mac_addr_remove(struct rte_eth_dev *dev, uint32_t index) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; const int vf = priv->config.vf; assert(index < MLX5_MAX_MAC_ADDRESSES); @@ -96,7 +96,7 @@ static int mlx5_internal_mac_addr_add(struct rte_eth_dev *dev, struct ether_addr *mac, uint32_t index) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; const int vf = priv->config.vf; unsigned int i; diff --git a/dpdk/drivers/net/mlx5/mlx5_mr.c b/dpdk/drivers/net/mlx5/mlx5_mr.c index 442b2d232..01bf59106 100644 --- a/dpdk/drivers/net/mlx5/mlx5_mr.c +++ b/dpdk/drivers/net/mlx5/mlx5_mr.c @@ -336,7 +336,7 @@ mr_find_next_chunk(struct mlx5_mr *mr, struct mlx5_mr_cache *entry, static int mr_insert_dev_cache(struct rte_eth_dev *dev, struct mlx5_mr *mr) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; unsigned int n; DRV_LOG(DEBUG, "port %u inserting MR(%p) to global cache", @@ -377,7 +377,7 @@ static struct mlx5_mr * mr_lookup_dev_list(struct rte_eth_dev *dev, struct mlx5_mr_cache *entry, uintptr_t addr) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_mr *mr; /* Iterate all the existing MRs. */ @@ -418,7 +418,7 @@ static uint32_t mr_lookup_dev(struct rte_eth_dev *dev, struct mlx5_mr_cache *entry, uintptr_t addr) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; uint16_t idx; uint32_t lkey = UINT32_MAX; struct mlx5_mr *mr; @@ -465,7 +465,7 @@ mr_free(struct mlx5_mr *mr) } /** - * Releass resources of detached MR having no online entry. + * Release resources of detached MR having no online entry. * * @param dev * Pointer to Ethernet device. @@ -473,7 +473,7 @@ mr_free(struct mlx5_mr *mr) static void mlx5_mr_garbage_collect(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_mr *mr_next; struct mlx5_mr_list free_list = LIST_HEAD_INITIALIZER(free_list); @@ -515,7 +515,7 @@ mr_find_contig_memsegs_cb(const struct rte_memseg_list *msl, } /** - * Create a new global Memroy Region (MR) for a missing virtual address. + * Create a new global Memory Region (MR) for a missing virtual address. * Register entire virtually contiguous memory chunk around the address. * * @param dev @@ -533,7 +533,7 @@ static uint32_t mlx5_mr_create(struct rte_eth_dev *dev, struct mlx5_mr_cache *entry, uintptr_t addr) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config; const struct rte_memseg_list *msl; const struct rte_memseg *ms; @@ -623,7 +623,7 @@ alloc_resources: bmp_mem = RTE_PTR_ALIGN_CEIL(mr + 1, RTE_CACHE_LINE_SIZE); mr->ms_bmp = rte_bitmap_init(ms_n, bmp_mem, bmp_size); if (mr->ms_bmp == NULL) { - DEBUG("port %u unable to initialize bitamp for a new MR of" + DEBUG("port %u unable to initialize bitmap for a new MR of" " address (%p).", dev->data->port_id, (void *)addr); rte_errno = EINVAL; @@ -769,7 +769,7 @@ err_nolock: static void mr_rebuild_dev_cache(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_mr *mr; DRV_LOG(DEBUG, "port %u rebuild dev cache[]", dev->data->port_id); @@ -803,7 +803,7 @@ mr_rebuild_dev_cache(struct rte_eth_dev *dev) static void mlx5_mr_mem_event_free_cb(struct rte_eth_dev *dev, const void *addr, size_t len) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; const struct rte_memseg_list *msl; struct mlx5_mr *mr; int ms_n; @@ -888,9 +888,11 @@ void mlx5_mr_mem_event_cb(enum rte_mem_event event_type, const void *addr, size_t len, void *arg __rte_unused) { - struct priv *priv; + struct mlx5_priv *priv; struct mlx5_dev_list *dev_list = &mlx5_shared_data->mem_event_cb_list; + /* Must be called from the primary process. */ + assert(rte_eal_process_type() == RTE_PROC_PRIMARY); switch (event_type) { case RTE_MEM_EVENT_FREE: rte_rwlock_write_lock(&mlx5_shared_data->mem_event_rwlock); @@ -926,7 +928,7 @@ static uint32_t mlx5_mr_lookup_dev(struct rte_eth_dev *dev, struct mlx5_mr_ctrl *mr_ctrl, struct mlx5_mr_cache *entry, uintptr_t addr) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_mr_btree *bt = &mr_ctrl->cache_bh; uint16_t idx; uint32_t lkey; @@ -1026,11 +1028,8 @@ mlx5_rx_addr2mr_bh(struct mlx5_rxq_data *rxq, uintptr_t addr) struct mlx5_rxq_ctrl *rxq_ctrl = container_of(rxq, struct mlx5_rxq_ctrl, rxq); struct mlx5_mr_ctrl *mr_ctrl = &rxq->mr_ctrl; - struct priv *priv = rxq_ctrl->priv; + struct mlx5_priv *priv = rxq_ctrl->priv; - DRV_LOG(DEBUG, - "Rx queue %u: miss on top-half, mru=%u, head=%u, addr=%p", - rxq_ctrl->idx, mr_ctrl->mru, mr_ctrl->head, (void *)addr); return mlx5_mr_addr2mr_bh(ETH_DEV(priv), mr_ctrl, addr); } @@ -1051,11 +1050,8 @@ mlx5_tx_addr2mr_bh(struct mlx5_txq_data *txq, uintptr_t addr) struct mlx5_txq_ctrl *txq_ctrl = container_of(txq, struct mlx5_txq_ctrl, txq); struct mlx5_mr_ctrl *mr_ctrl = &txq->mr_ctrl; - struct priv *priv = txq_ctrl->priv; + struct mlx5_priv *priv = txq_ctrl->priv; - DRV_LOG(DEBUG, - "Tx queue %u: miss on top-half, mru=%u, head=%u, addr=%p", - txq_ctrl->idx, mr_ctrl->mru, mr_ctrl->head, (void *)addr); return mlx5_mr_addr2mr_bh(ETH_DEV(priv), mr_ctrl, addr); } @@ -1128,7 +1124,7 @@ mlx5_mr_update_ext_mp_cb(struct rte_mempool *mp, void *opaque, { struct mr_update_mp_data *data = opaque; struct rte_eth_dev *dev = data->dev; - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_mr_ctrl *mr_ctrl = data->mr_ctrl; struct mlx5_mr *mr = NULL; uintptr_t addr = (uintptr_t)memhdr->addr; @@ -1136,6 +1132,7 @@ mlx5_mr_update_ext_mp_cb(struct rte_mempool *mp, void *opaque, struct mlx5_mr_cache entry; uint32_t lkey; + assert(rte_eal_process_type() == RTE_PROC_PRIMARY); /* If already registered, it should return. */ rte_rwlock_read_lock(&priv->mr.rwlock); lkey = mr_lookup_dev(dev, &entry, addr); @@ -1235,8 +1232,17 @@ mlx5_tx_update_ext_mp(struct mlx5_txq_data *txq, uintptr_t addr, struct mlx5_txq_ctrl *txq_ctrl = container_of(txq, struct mlx5_txq_ctrl, txq); struct mlx5_mr_ctrl *mr_ctrl = &txq->mr_ctrl; - struct priv *priv = txq_ctrl->priv; + struct mlx5_priv *priv = txq_ctrl->priv; + if (rte_eal_process_type() != RTE_PROC_PRIMARY) { + DRV_LOG(WARNING, + "port %u using address (%p) from unregistered mempool" + " having externally allocated memory" + " in secondary process, please create mempool" + " prior to rte_eth_dev_start()", + PORT_ID(priv), (void *)addr); + return UINT32_MAX; + } mlx5_mr_update_ext_mp(ETH_DEV(priv), mr_ctrl, mp); return mlx5_tx_addr2mr_bh(txq, addr); } @@ -1301,7 +1307,7 @@ void mlx5_mr_dump_dev(struct rte_eth_dev *dev __rte_unused) { #ifndef NDEBUG - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_mr *mr; int mr_n = 0; int chunk_n = 0; @@ -1343,8 +1349,8 @@ mlx5_mr_dump_dev(struct rte_eth_dev *dev __rte_unused) void mlx5_mr_release(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; - struct mlx5_mr *mr_next = LIST_FIRST(&priv->mr.mr_list); + struct mlx5_priv *priv = dev->data->dev_private; + struct mlx5_mr *mr_next; /* Remove from memory callback device list. */ rte_rwlock_write_lock(&mlx5_shared_data->mem_event_rwlock); @@ -1354,6 +1360,7 @@ mlx5_mr_release(struct rte_eth_dev *dev) mlx5_mr_dump_dev(dev); rte_rwlock_write_lock(&priv->mr.rwlock); /* Detach from MR list and move to free list. */ + mr_next = LIST_FIRST(&priv->mr.mr_list); while (mr_next != NULL) { struct mlx5_mr *mr = mr_next; diff --git a/dpdk/drivers/net/mlx5/mlx5_nl.c b/dpdk/drivers/net/mlx5/mlx5_nl.c index d61826aea..fe5a27461 100644 --- a/dpdk/drivers/net/mlx5/mlx5_nl.c +++ b/dpdk/drivers/net/mlx5/mlx5_nl.c @@ -361,7 +361,7 @@ static int mlx5_nl_mac_addr_list(struct rte_eth_dev *dev, struct ether_addr (*mac)[], int *mac_n) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; unsigned int iface_idx = mlx5_ifindex(dev); struct { struct nlmsghdr hdr; @@ -420,7 +420,7 @@ static int mlx5_nl_mac_addr_modify(struct rte_eth_dev *dev, struct ether_addr *mac, int add) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; unsigned int iface_idx = mlx5_ifindex(dev); struct { struct nlmsghdr hdr; @@ -492,7 +492,7 @@ int mlx5_nl_mac_addr_add(struct rte_eth_dev *dev, struct ether_addr *mac, uint32_t index) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; int ret; ret = mlx5_nl_mac_addr_modify(dev, mac, 1); @@ -520,7 +520,7 @@ int mlx5_nl_mac_addr_remove(struct rte_eth_dev *dev, struct ether_addr *mac, uint32_t index) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; BITFIELD_RESET(priv->mac_own, index); return mlx5_nl_mac_addr_modify(dev, mac, 0); @@ -572,7 +572,7 @@ mlx5_nl_mac_addr_sync(struct rte_eth_dev *dev) void mlx5_nl_mac_addr_flush(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; int i; for (i = MLX5_MAX_MAC_ADDRESSES - 1; i >= 0; --i) { @@ -599,7 +599,7 @@ mlx5_nl_mac_addr_flush(struct rte_eth_dev *dev) static int mlx5_nl_device_flags(struct rte_eth_dev *dev, uint32_t flags, int enable) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; unsigned int iface_idx = mlx5_ifindex(dev); struct { struct nlmsghdr hdr; diff --git a/dpdk/drivers/net/mlx5/mlx5_rss.c b/dpdk/drivers/net/mlx5/mlx5_rss.c index b95778a8c..891d764bb 100644 --- a/dpdk/drivers/net/mlx5/mlx5_rss.c +++ b/dpdk/drivers/net/mlx5/mlx5_rss.c @@ -41,7 +41,7 @@ int mlx5_rss_hash_update(struct rte_eth_dev *dev, struct rte_eth_rss_conf *rss_conf) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; unsigned int i; unsigned int idx; @@ -95,7 +95,7 @@ int mlx5_rss_hash_conf_get(struct rte_eth_dev *dev, struct rte_eth_rss_conf *rss_conf) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; if (!rss_conf) { rte_errno = EINVAL; @@ -125,7 +125,7 @@ mlx5_rss_hash_conf_get(struct rte_eth_dev *dev, int mlx5_rss_reta_index_resize(struct rte_eth_dev *dev, unsigned int reta_size) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; void *mem; unsigned int old_size = priv->reta_idx_n; @@ -165,7 +165,7 @@ mlx5_dev_rss_reta_query(struct rte_eth_dev *dev, struct rte_eth_rss_reta_entry64 *reta_conf, uint16_t reta_size) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; unsigned int idx; unsigned int i; @@ -201,7 +201,7 @@ mlx5_dev_rss_reta_update(struct rte_eth_dev *dev, uint16_t reta_size) { int ret; - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; unsigned int idx; unsigned int i; unsigned int pos; diff --git a/dpdk/drivers/net/mlx5/mlx5_rxmode.c b/dpdk/drivers/net/mlx5/mlx5_rxmode.c index e74fdef8b..d5077db0d 100644 --- a/dpdk/drivers/net/mlx5/mlx5_rxmode.c +++ b/dpdk/drivers/net/mlx5/mlx5_rxmode.c @@ -32,7 +32,7 @@ void mlx5_promiscuous_enable(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; int ret; dev->data->promiscuous = 1; @@ -60,7 +60,7 @@ mlx5_promiscuous_enable(struct rte_eth_dev *dev) void mlx5_promiscuous_disable(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; int ret; dev->data->promiscuous = 0; @@ -81,7 +81,7 @@ mlx5_promiscuous_disable(struct rte_eth_dev *dev) void mlx5_allmulticast_enable(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; int ret; dev->data->all_multicast = 1; @@ -109,7 +109,7 @@ mlx5_allmulticast_enable(struct rte_eth_dev *dev) void mlx5_allmulticast_disable(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; int ret; dev->data->all_multicast = 0; diff --git a/dpdk/drivers/net/mlx5/mlx5_rxq.c b/dpdk/drivers/net/mlx5/mlx5_rxq.c index 183da0e28..f1ce31703 100644 --- a/dpdk/drivers/net/mlx5/mlx5_rxq.c +++ b/dpdk/drivers/net/mlx5/mlx5_rxq.c @@ -68,7 +68,7 @@ static_assert(MLX5_RSS_HASH_KEY_LEN == inline int mlx5_check_mprq_support(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; if (priv->config.mprq.enabled && priv->rxqs_n >= priv->config.mprq.min_rxqs_num) @@ -103,7 +103,7 @@ mlx5_rxq_mprq_enabled(struct mlx5_rxq_data *rxq) inline int mlx5_mprq_enabled(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; uint16_t i; uint16_t n = 0; @@ -382,7 +382,7 @@ mlx5_rxq_cleanup(struct mlx5_rxq_ctrl *rxq_ctrl) uint64_t mlx5_get_rx_queue_offloads(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_dev_config *config = &priv->config; uint64_t offloads = (DEV_RX_OFFLOAD_SCATTER | DEV_RX_OFFLOAD_TIMESTAMP | @@ -438,7 +438,7 @@ mlx5_rx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, unsigned int socket, const struct rte_eth_rxconf *conf, struct rte_mempool *mp) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_rxq_data *rxq = (*priv->rxqs)[idx]; struct mlx5_rxq_ctrl *rxq_ctrl = container_of(rxq, struct mlx5_rxq_ctrl, rxq); @@ -489,7 +489,7 @@ mlx5_rx_queue_release(void *dpdk_rxq) { struct mlx5_rxq_data *rxq = (struct mlx5_rxq_data *)dpdk_rxq; struct mlx5_rxq_ctrl *rxq_ctrl; - struct priv *priv; + struct mlx5_priv *priv; if (rxq == NULL) return; @@ -514,7 +514,7 @@ mlx5_rx_queue_release(void *dpdk_rxq) int mlx5_rx_intr_vec_enable(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; unsigned int i; unsigned int rxqs_n = priv->rxqs_n; unsigned int n = RTE_MIN(rxqs_n, (uint32_t)RTE_MAX_RXTX_INTR_VEC_ID); @@ -592,7 +592,7 @@ mlx5_rx_intr_vec_enable(struct rte_eth_dev *dev) void mlx5_rx_intr_vec_disable(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct rte_intr_handle *intr_handle = dev->intr_handle; unsigned int i; unsigned int rxqs_n = priv->rxqs_n; @@ -664,7 +664,7 @@ mlx5_arm_cq(struct mlx5_rxq_data *rxq, int sq_n_rxq) int mlx5_rx_intr_enable(struct rte_eth_dev *dev, uint16_t rx_queue_id) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_rxq_data *rxq_data; struct mlx5_rxq_ctrl *rxq_ctrl; @@ -702,7 +702,7 @@ mlx5_rx_intr_enable(struct rte_eth_dev *dev, uint16_t rx_queue_id) int mlx5_rx_intr_disable(struct rte_eth_dev *dev, uint16_t rx_queue_id) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_rxq_data *rxq_data; struct mlx5_rxq_ctrl *rxq_ctrl; struct mlx5_rxq_ibv *rxq_ibv = NULL; @@ -730,6 +730,7 @@ mlx5_rx_intr_disable(struct rte_eth_dev *dev, uint16_t rx_queue_id) } rxq_data->cq_arm_sn++; mlx5_glue->ack_cq_events(rxq_ibv->cq, 1); + mlx5_rxq_ibv_release(rxq_ibv); return 0; exit: ret = rte_errno; /* Save rte_errno before cleanup. */ @@ -755,7 +756,7 @@ exit: struct mlx5_rxq_ibv * mlx5_rxq_ibv_new(struct rte_eth_dev *dev, uint16_t idx) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_rxq_data *rxq_data = (*priv->rxqs)[idx]; struct mlx5_rxq_ctrl *rxq_ctrl = container_of(rxq_data, struct mlx5_rxq_ctrl, rxq); @@ -881,12 +882,15 @@ mlx5_rxq_ibv_new(struct rte_eth_dev *dev, uint16_t idx) attr.wq.ibv.create_flags |= IBV_WQ_FLAGS_SCATTER_FCS; attr.wq.ibv.comp_mask |= IBV_WQ_INIT_ATTR_FLAGS; } -#ifdef HAVE_IBV_WQ_FLAG_RX_END_PADDING if (config->hw_padding) { +#if defined(HAVE_IBV_WQ_FLAG_RX_END_PADDING) attr.wq.ibv.create_flags |= IBV_WQ_FLAG_RX_END_PADDING; attr.wq.ibv.comp_mask |= IBV_WQ_INIT_ATTR_FLAGS; - } +#elif defined(HAVE_IBV_WQ_FLAGS_PCI_WRITE_END_PADDING) + attr.wq.ibv.create_flags |= IBV_WQ_FLAGS_PCI_WRITE_END_PADDING; + attr.wq.ibv.comp_mask |= IBV_WQ_INIT_ATTR_FLAGS; #endif + } #ifdef HAVE_IBV_DEVICE_STRIDING_RQ_SUPPORT attr.wq.mlx5 = (struct mlx5dv_wq_init_attr){ .comp_mask = 0, @@ -1039,7 +1043,7 @@ error: struct mlx5_rxq_ibv * mlx5_rxq_ibv_get(struct rte_eth_dev *dev, uint16_t idx) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_rxq_data *rxq_data = (*priv->rxqs)[idx]; struct mlx5_rxq_ctrl *rxq_ctrl; @@ -1095,7 +1099,7 @@ mlx5_rxq_ibv_release(struct mlx5_rxq_ibv *rxq_ibv) int mlx5_rxq_ibv_verify(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; int ret = 0; struct mlx5_rxq_ibv *rxq_ibv; @@ -1146,7 +1150,7 @@ mlx5_mprq_buf_init(struct rte_mempool *mp, void *opaque_arg __rte_unused, int mlx5_mprq_free_mp(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct rte_mempool *mp = priv->mprq_mp; unsigned int i; @@ -1179,6 +1183,7 @@ mlx5_mprq_free_mp(struct rte_eth_dev *dev) continue; rxq->mprq_mp = NULL; } + priv->mprq_mp = NULL; return 0; } @@ -1196,7 +1201,7 @@ mlx5_mprq_free_mp(struct rte_eth_dev *dev) int mlx5_mprq_alloc_mp(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct rte_mempool *mp = priv->mprq_mp; char name[RTE_MEMPOOL_NAMESIZE]; unsigned int desc = 0; @@ -1268,7 +1273,7 @@ mlx5_mprq_alloc_mp(struct rte_eth_dev *dev) return -rte_errno; } } - snprintf(name, sizeof(name), "%s-mprq", dev->device->name); + snprintf(name, sizeof(name), "port-%u-mprq", dev->data->port_id); mp = rte_mempool_create(name, obj_num, obj_size, MLX5_MPRQ_MP_CACHE_SZ, 0, NULL, NULL, mlx5_mprq_buf_init, NULL, dev->device->numa_node, 0); @@ -1315,7 +1320,7 @@ mlx5_rxq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, unsigned int socket, const struct rte_eth_rxconf *conf, struct rte_mempool *mp) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_rxq_ctrl *tmpl; unsigned int mb_len = rte_pktmbuf_data_room_size(mp); unsigned int mprq_stride_size; @@ -1490,7 +1495,7 @@ error: * @param dev * Pointer to Ethernet device. * @param idx - * TX queue index. + * RX queue index. * * @return * A pointer to the queue if it exists, NULL otherwise. @@ -1498,7 +1503,7 @@ error: struct mlx5_rxq_ctrl * mlx5_rxq_get(struct rte_eth_dev *dev, uint16_t idx) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_rxq_ctrl *rxq_ctrl = NULL; if ((*priv->rxqs)[idx]) { @@ -1517,7 +1522,7 @@ mlx5_rxq_get(struct rte_eth_dev *dev, uint16_t idx) * @param dev * Pointer to Ethernet device. * @param idx - * TX queue index. + * RX queue index. * * @return * 1 while a reference on it exists, 0 when freed. @@ -1525,7 +1530,7 @@ mlx5_rxq_get(struct rte_eth_dev *dev, uint16_t idx) int mlx5_rxq_release(struct rte_eth_dev *dev, uint16_t idx) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_rxq_ctrl *rxq_ctrl; if (!(*priv->rxqs)[idx]) @@ -1550,7 +1555,7 @@ mlx5_rxq_release(struct rte_eth_dev *dev, uint16_t idx) * @param dev * Pointer to Ethernet device. * @param idx - * TX queue index. + * RX queue index. * * @return * 1 if the queue can be released, negative errno otherwise and rte_errno is @@ -1559,7 +1564,7 @@ mlx5_rxq_release(struct rte_eth_dev *dev, uint16_t idx) int mlx5_rxq_releasable(struct rte_eth_dev *dev, uint16_t idx) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_rxq_ctrl *rxq_ctrl; if (!(*priv->rxqs)[idx]) { @@ -1582,7 +1587,7 @@ mlx5_rxq_releasable(struct rte_eth_dev *dev, uint16_t idx) int mlx5_rxq_verify(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_rxq_ctrl *rxq_ctrl; int ret = 0; @@ -1611,7 +1616,7 @@ struct mlx5_ind_table_ibv * mlx5_ind_table_ibv_new(struct rte_eth_dev *dev, const uint16_t *queues, uint32_t queues_n) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_ind_table_ibv *ind_tbl; const unsigned int wq_n = rte_is_power_of_2(queues_n) ? log2above(queues_n) : @@ -1675,7 +1680,7 @@ struct mlx5_ind_table_ibv * mlx5_ind_table_ibv_get(struct rte_eth_dev *dev, const uint16_t *queues, uint32_t queues_n) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_ind_table_ibv *ind_tbl; LIST_FOREACH(ind_tbl, &priv->ind_tbls, next) { @@ -1737,7 +1742,7 @@ mlx5_ind_table_ibv_release(struct rte_eth_dev *dev, int mlx5_ind_table_ibv_verify(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_ind_table_ibv *ind_tbl; int ret = 0; @@ -1779,7 +1784,7 @@ mlx5_hrxq_new(struct rte_eth_dev *dev, const uint16_t *queues, uint32_t queues_n, int tunnel __rte_unused) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_hrxq *hrxq; struct mlx5_ind_table_ibv *ind_tbl; struct ibv_qp *qp; @@ -1895,7 +1900,7 @@ mlx5_hrxq_get(struct rte_eth_dev *dev, uint64_t hash_fields, const uint16_t *queues, uint32_t queues_n) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_hrxq *hrxq; queues_n = hash_fields ? queues_n : 1; @@ -1958,7 +1963,7 @@ mlx5_hrxq_release(struct rte_eth_dev *dev, struct mlx5_hrxq *hrxq) int mlx5_hrxq_ibv_verify(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_hrxq *hrxq; int ret = 0; @@ -1983,7 +1988,7 @@ mlx5_hrxq_ibv_verify(struct rte_eth_dev *dev) struct mlx5_rxq_ibv * mlx5_rxq_ibv_drop_new(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct ibv_cq *cq; struct ibv_wq *wq = NULL; struct mlx5_rxq_ibv *rxq; @@ -2042,7 +2047,7 @@ error: void mlx5_rxq_ibv_drop_release(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_rxq_ibv *rxq = priv->drop_queue.rxq; if (rxq->wq) @@ -2065,7 +2070,7 @@ mlx5_rxq_ibv_drop_release(struct rte_eth_dev *dev) struct mlx5_ind_table_ibv * mlx5_ind_table_ibv_drop_new(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_ind_table_ibv *ind_tbl; struct mlx5_rxq_ibv *rxq; struct mlx5_ind_table_ibv tmpl; @@ -2108,7 +2113,7 @@ error: void mlx5_ind_table_ibv_drop_release(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_ind_table_ibv *ind_tbl = priv->drop_queue.hrxq->ind_table; claim_zero(mlx5_glue->destroy_rwq_ind_table(ind_tbl->ind_table)); @@ -2129,7 +2134,7 @@ mlx5_ind_table_ibv_drop_release(struct rte_eth_dev *dev) struct mlx5_hrxq * mlx5_hrxq_drop_new(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_ind_table_ibv *ind_tbl; struct ibv_qp *qp; struct mlx5_hrxq *hrxq; @@ -2192,7 +2197,7 @@ error: void mlx5_hrxq_drop_release(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_hrxq *hrxq = priv->drop_queue.hrxq; if (rte_atomic32_dec_and_test(&hrxq->refcnt)) { diff --git a/dpdk/drivers/net/mlx5/mlx5_rxtx.c b/dpdk/drivers/net/mlx5/mlx5_rxtx.c index 6eceea5fe..38ce0e29a 100644 --- a/dpdk/drivers/net/mlx5/mlx5_rxtx.c +++ b/dpdk/drivers/net/mlx5/mlx5_rxtx.c @@ -509,7 +509,7 @@ mlx5_rx_descriptor_status(void *rx_queue, uint16_t offset) uint32_t mlx5_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_rxq_data *rxq; if (dev->rx_pkt_burst != mlx5_rx_burst) { @@ -693,7 +693,8 @@ pkt_inline: RTE_CACHE_LINE_SIZE); copy_b = (addr_end > addr) ? RTE_MIN((addr_end - addr), length) : 0; - if (copy_b && ((end - (uintptr_t)raw) > copy_b)) { + if (copy_b && ((end - (uintptr_t)raw) > + (copy_b + sizeof(inl)))) { /* * One Dseg remains in the current WQE. To * keep the computation positive, it is diff --git a/dpdk/drivers/net/mlx5/mlx5_rxtx.h b/dpdk/drivers/net/mlx5/mlx5_rxtx.h index f47d327cf..820675b82 100644 --- a/dpdk/drivers/net/mlx5/mlx5_rxtx.h +++ b/dpdk/drivers/net/mlx5/mlx5_rxtx.h @@ -58,7 +58,7 @@ struct mlx5_txq_stats { uint64_t oerrors; /**< Total number of failed transmitted packets. */ }; -struct priv; +struct mlx5_priv; /* Compressed CQE context. */ struct rxq_zip { @@ -143,7 +143,7 @@ struct mlx5_rxq_ctrl { LIST_ENTRY(mlx5_rxq_ctrl) next; /* Pointer to the next element. */ rte_atomic32_t refcnt; /* Reference counter. */ struct mlx5_rxq_ibv *ibv; /* Verbs elements. */ - struct priv *priv; /* Back pointer to private data. */ + struct mlx5_priv *priv; /* Back pointer to private data. */ struct mlx5_rxq_data rxq; /* Data path structure. */ unsigned int socket; /* CPU socket ID for allocations. */ unsigned int irq:1; /* Whether IRQ is enabled. */ @@ -228,7 +228,7 @@ struct mlx5_txq_ctrl { unsigned int max_inline_data; /* Max inline data. */ unsigned int max_tso_header; /* Max TSO header size. */ struct mlx5_txq_ibv *ibv; /* Verbs queue object. */ - struct priv *priv; /* Back pointer to private data. */ + struct mlx5_priv *priv; /* Back pointer to private data. */ struct mlx5_txq_data txq; /* Data path structure. */ off_t uar_mmap_offset; /* UAR mmap offset for non-primary process. */ volatile void *bf_reg_orig; /* Blueflame register from verbs. */ @@ -491,7 +491,7 @@ check_cqe(volatile struct mlx5_cqe *cqe, op_code, op_code, syndrome); rte_hexdump(stderr, "MLX5 Error CQE:", (const void *)((uintptr_t)err_cqe), - sizeof(*err_cqe)); + sizeof(*cqe)); } return 1; } else if ((op_code != MLX5_CQE_RESP_SEND) && @@ -568,6 +568,7 @@ mlx5_tx_complete(struct mlx5_txq_data *txq) } #endif /* NDEBUG */ ++cq_ci; + rte_cio_rmb(); txq->wqe_pi = rte_be_to_cpu_16(cqe->wqe_counter); ctrl = (volatile struct mlx5_wqe_ctrl *) tx_mlx5_wqe(txq, txq->wqe_pi); @@ -733,10 +734,6 @@ mlx5_tx_dbrec(struct mlx5_txq_data *txq, volatile struct mlx5_wqe *wqe) * Pointer to the Tx queue. * @param buf * Pointer to the mbuf. - * @param tso - * TSO offloads enabled. - * @param vlan - * VLAN offloads enabled * @param offsets * Pointer to the SWP header offsets. * @param swp_types diff --git a/dpdk/drivers/net/mlx5/mlx5_rxtx_vec.c b/dpdk/drivers/net/mlx5/mlx5_rxtx_vec.c index 340292add..9a3a5ae43 100644 --- a/dpdk/drivers/net/mlx5/mlx5_rxtx_vec.c +++ b/dpdk/drivers/net/mlx5/mlx5_rxtx_vec.c @@ -273,7 +273,7 @@ mlx5_check_raw_vec_tx_support(struct rte_eth_dev *dev) int __attribute__((cold)) mlx5_check_vec_tx_support(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; uint64_t offloads = dev->data->dev_conf.txmode.offloads; if (!priv->config.tx_vec_en || @@ -318,7 +318,7 @@ mlx5_rxq_check_vec_support(struct mlx5_rxq_data *rxq) int __attribute__((cold)) mlx5_check_vec_rx_support(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; uint16_t i; if (!priv->config.rx_vec_en) diff --git a/dpdk/drivers/net/mlx5/mlx5_rxtx_vec.h b/dpdk/drivers/net/mlx5/mlx5_rxtx_vec.h index fda7004e2..86735044d 100644 --- a/dpdk/drivers/net/mlx5/mlx5_rxtx_vec.h +++ b/dpdk/drivers/net/mlx5/mlx5_rxtx_vec.h @@ -102,7 +102,22 @@ mlx5_rx_replenish_bulk_mbuf(struct mlx5_rxq_data *rxq, uint16_t n) return; } for (i = 0; i < n; ++i) { - wq[i].addr = rte_cpu_to_be_64((uintptr_t)elts[i]->buf_addr + + void *buf_addr; + + /* + * Load the virtual address for Rx WQE. non-x86 processors + * (mostly RISC such as ARM and Power) are more vulnerable to + * load stall. For x86, reducing the number of instructions + * seems to matter most. + */ +#ifdef RTE_ARCH_X86_64 + buf_addr = elts[i]->buf_addr; +#else + buf_addr = (char *)elts[i] + sizeof(struct rte_mbuf) + + rte_pktmbuf_priv_size(rxq->mp); + assert(buf_addr == elts[i]->buf_addr); +#endif + wq[i].addr = rte_cpu_to_be_64((uintptr_t)buf_addr + RTE_PKTMBUF_HEADROOM); /* If there's only one MR, no need to replace LKey in WQE. */ if (unlikely(mlx5_mr_btree_len(&rxq->mr_ctrl.cache_bh) > 1)) diff --git a/dpdk/drivers/net/mlx5/mlx5_rxtx_vec_neon.h b/dpdk/drivers/net/mlx5/mlx5_rxtx_vec_neon.h index 883fe1bf9..38e915c5c 100644 --- a/dpdk/drivers/net/mlx5/mlx5_rxtx_vec_neon.h +++ b/dpdk/drivers/net/mlx5/mlx5_rxtx_vec_neon.h @@ -104,6 +104,8 @@ txq_scatter_v(struct mlx5_txq_data *txq, struct rte_mbuf **pkts, sizeof(struct mlx5_wqe) / MLX5_WQE_DWORD_SIZE; unsigned int n; volatile struct mlx5_wqe *wqe = NULL; + bool metadata_ol = + txq->offloads & DEV_TX_OFFLOAD_MATCH_METADATA ? true : false; assert(elts_n > pkts_n); mlx5_tx_complete(txq); @@ -127,6 +129,9 @@ txq_scatter_v(struct mlx5_txq_data *txq, struct rte_mbuf **pkts, uint8x16_t *t_wqe; uint8_t *dseg; uint8x16_t ctrl; + rte_be32_t metadata = + metadata_ol && (buf->ol_flags & PKT_TX_METADATA) ? + buf->tx_metadata : 0; assert(segs_n); max_elts = elts_n - (elts_head - txq->elts_tail); @@ -164,9 +169,10 @@ txq_scatter_v(struct mlx5_txq_data *txq, struct rte_mbuf **pkts, ctrl = vqtbl1q_u8(ctrl, ctrl_shuf_m); vst1q_u8((void *)t_wqe, ctrl); /* Fill ESEG in the header. */ - vst1q_u16((void *)(t_wqe + 1), - ((uint16x8_t) { 0, 0, cs_flags, rte_cpu_to_be_16(len), - 0, 0, 0, 0 })); + vst1q_u32((void *)(t_wqe + 1), + ((uint32x4_t){ 0, + cs_flags << 16 | rte_cpu_to_be_16(len), + metadata, 0 })); txq->wqe_ci = wqe_ci; } if (!n) diff --git a/dpdk/drivers/net/mlx5/mlx5_rxtx_vec_sse.h b/dpdk/drivers/net/mlx5/mlx5_rxtx_vec_sse.h index 14117c4bb..fb384efde 100644 --- a/dpdk/drivers/net/mlx5/mlx5_rxtx_vec_sse.h +++ b/dpdk/drivers/net/mlx5/mlx5_rxtx_vec_sse.h @@ -104,6 +104,8 @@ txq_scatter_v(struct mlx5_txq_data *txq, struct rte_mbuf **pkts, sizeof(struct mlx5_wqe) / MLX5_WQE_DWORD_SIZE; unsigned int n; volatile struct mlx5_wqe *wqe = NULL; + bool metadata_ol = + txq->offloads & DEV_TX_OFFLOAD_MATCH_METADATA ? true : false; assert(elts_n > pkts_n); mlx5_tx_complete(txq); @@ -125,6 +127,9 @@ txq_scatter_v(struct mlx5_txq_data *txq, struct rte_mbuf **pkts, uint16_t max_wqe; __m128i *t_wqe, *dseg; __m128i ctrl; + rte_be32_t metadata = + metadata_ol && (buf->ol_flags & PKT_TX_METADATA) ? + buf->tx_metadata : 0; assert(segs_n); max_elts = elts_n - (elts_head - txq->elts_tail); @@ -165,9 +170,9 @@ txq_scatter_v(struct mlx5_txq_data *txq, struct rte_mbuf **pkts, _mm_store_si128(t_wqe, ctrl); /* Fill ESEG in the header. */ _mm_store_si128(t_wqe + 1, - _mm_set_epi16(0, 0, 0, 0, - rte_cpu_to_be_16(len), cs_flags, - 0, 0)); + _mm_set_epi32(0, metadata, + (rte_cpu_to_be_16(len) << 16) | + cs_flags, 0)); txq->wqe_ci = wqe_ci; } if (!n) diff --git a/dpdk/drivers/net/mlx5/mlx5_socket.c b/dpdk/drivers/net/mlx5/mlx5_socket.c index 00106171d..41cac3c6a 100644 --- a/dpdk/drivers/net/mlx5/mlx5_socket.c +++ b/dpdk/drivers/net/mlx5/mlx5_socket.c @@ -26,7 +26,7 @@ int mlx5_socket_init(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct sockaddr_un sun = { .sun_family = AF_UNIX, }; @@ -98,7 +98,7 @@ error: void mlx5_socket_uninit(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; MKSTR(path, "/var/tmp/%s_%d", MLX5_DRIVER_NAME, priv->primary_socket); claim_zero(close(priv->primary_socket)); @@ -115,7 +115,7 @@ mlx5_socket_uninit(struct rte_eth_dev *dev) void mlx5_socket_handle(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; int conn_sock; int ret = 0; struct cmsghdr *cmsg = NULL; @@ -208,7 +208,7 @@ error: int mlx5_socket_connect(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct sockaddr_un sun = { .sun_family = AF_UNIX, }; diff --git a/dpdk/drivers/net/mlx5/mlx5_stats.c b/dpdk/drivers/net/mlx5/mlx5_stats.c index fccb9af0d..132bf5b49 100644 --- a/dpdk/drivers/net/mlx5/mlx5_stats.c +++ b/dpdk/drivers/net/mlx5/mlx5_stats.c @@ -143,7 +143,7 @@ static const unsigned int xstats_n = RTE_DIM(mlx5_counters_init); static int mlx5_read_dev_counters(struct rte_eth_dev *dev, uint64_t *stats) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_xstats_ctrl *xstats_ctrl = &priv->xstats_ctrl; unsigned int i; struct ifreq ifr; @@ -221,7 +221,7 @@ mlx5_ethtool_get_stats_n(struct rte_eth_dev *dev) { void mlx5_xstats_init(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_xstats_ctrl *xstats_ctrl = &priv->xstats_ctrl; unsigned int i; unsigned int j; @@ -312,7 +312,7 @@ int mlx5_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *stats, unsigned int n) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; unsigned int i; uint64_t counters[n]; struct mlx5_xstats_ctrl *xstats_ctrl = &priv->xstats_ctrl; @@ -353,7 +353,7 @@ mlx5_xstats_get(struct rte_eth_dev *dev, struct rte_eth_xstat *stats, int mlx5_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct rte_eth_stats tmp; unsigned int i; unsigned int idx; @@ -416,7 +416,7 @@ mlx5_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) void mlx5_stats_reset(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; unsigned int i; unsigned int idx; @@ -448,7 +448,7 @@ mlx5_stats_reset(struct rte_eth_dev *dev) void mlx5_xstats_reset(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_xstats_ctrl *xstats_ctrl = &priv->xstats_ctrl; int stats_n; unsigned int i; @@ -492,7 +492,7 @@ mlx5_xstats_get_names(struct rte_eth_dev *dev __rte_unused, struct rte_eth_xstat_name *xstats_names, unsigned int n) { unsigned int i; - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_xstats_ctrl *xstats_ctrl = &priv->xstats_ctrl; unsigned int mlx5_xstats_n = xstats_ctrl->mlx5_stats_n; diff --git a/dpdk/drivers/net/mlx5/mlx5_trigger.c b/dpdk/drivers/net/mlx5/mlx5_trigger.c index e2a9bb703..f874657c7 100644 --- a/dpdk/drivers/net/mlx5/mlx5_trigger.c +++ b/dpdk/drivers/net/mlx5/mlx5_trigger.c @@ -23,7 +23,7 @@ static void mlx5_txq_stop(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; unsigned int i; for (i = 0; i != priv->txqs_n; ++i) @@ -42,7 +42,7 @@ mlx5_txq_stop(struct rte_eth_dev *dev) static int mlx5_txq_start(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; unsigned int i; int ret; @@ -83,7 +83,7 @@ error: static void mlx5_rxq_stop(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; unsigned int i; for (i = 0; i != priv->rxqs_n; ++i) @@ -102,7 +102,7 @@ mlx5_rxq_stop(struct rte_eth_dev *dev) static int mlx5_rxq_start(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; unsigned int i; int ret = 0; @@ -157,7 +157,7 @@ error: int mlx5_dev_start(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; int ret; DRV_LOG(DEBUG, "port %u starting device", dev->data->port_id); @@ -221,7 +221,7 @@ error: void mlx5_dev_stop(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; dev->data->dev_started = 0; /* Prevent crashes when queues are still in use. */ @@ -252,7 +252,7 @@ mlx5_dev_stop(struct rte_eth_dev *dev) int mlx5_traffic_enable(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct rte_flow_item_eth bcast = { .dst.addr_bytes = "\xff\xff\xff\xff\xff\xff", }; @@ -379,7 +379,7 @@ error: void mlx5_traffic_disable(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; mlx5_flow_list_flush(dev, &priv->ctrl_flows); } diff --git a/dpdk/drivers/net/mlx5/mlx5_txq.c b/dpdk/drivers/net/mlx5/mlx5_txq.c index b01bd6754..c5a3d1b4c 100644 --- a/dpdk/drivers/net/mlx5/mlx5_txq.c +++ b/dpdk/drivers/net/mlx5/mlx5_txq.c @@ -102,7 +102,7 @@ txq_free_elts(struct mlx5_txq_ctrl *txq_ctrl) uint64_t mlx5_get_tx_port_offloads(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; uint64_t offloads = (DEV_TX_OFFLOAD_MULTI_SEGS | DEV_TX_OFFLOAD_VLAN_INSERT); struct mlx5_dev_config *config = &priv->config; @@ -155,7 +155,7 @@ int mlx5_tx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, unsigned int socket, const struct rte_eth_txconf *conf) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_txq_data *txq = (*priv->txqs)[idx]; struct mlx5_txq_ctrl *txq_ctrl = container_of(txq, struct mlx5_txq_ctrl, txq); @@ -213,7 +213,7 @@ mlx5_tx_queue_release(void *dpdk_txq) { struct mlx5_txq_data *txq = (struct mlx5_txq_data *)dpdk_txq; struct mlx5_txq_ctrl *txq_ctrl; - struct priv *priv; + struct mlx5_priv *priv; unsigned int i; if (txq == NULL) @@ -246,7 +246,7 @@ mlx5_tx_queue_release(void *dpdk_txq) int mlx5_tx_uar_remap(struct rte_eth_dev *dev, int fd) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; unsigned int i, j; uintptr_t pages[priv->txqs_n]; unsigned int pages_n = 0; @@ -346,7 +346,7 @@ is_empw_burst_func(eth_tx_burst_t tx_pkt_burst) * @param dev * Pointer to Ethernet device. * @param idx - * Queue index in DPDK Rx queue array + * Queue index in DPDK Tx queue array. * * @return * The Verbs object initialised, NULL otherwise and rte_errno is set. @@ -354,7 +354,7 @@ is_empw_burst_func(eth_tx_burst_t tx_pkt_burst) struct mlx5_txq_ibv * mlx5_txq_ibv_new(struct rte_eth_dev *dev, uint16_t idx) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_txq_data *txq_data = (*priv->txqs)[idx]; struct mlx5_txq_ctrl *txq_ctrl = container_of(txq_data, struct mlx5_txq_ctrl, txq); @@ -554,7 +554,7 @@ error: * @param dev * Pointer to Ethernet device. * @param idx - * Queue index in DPDK Rx queue array + * Queue index in DPDK Tx queue array. * * @return * The Verbs object if it exists. @@ -562,7 +562,7 @@ error: struct mlx5_txq_ibv * mlx5_txq_ibv_get(struct rte_eth_dev *dev, uint16_t idx) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_txq_ctrl *txq_ctrl; if (idx >= priv->txqs_n) @@ -623,7 +623,7 @@ mlx5_txq_ibv_releasable(struct mlx5_txq_ibv *txq_ibv) int mlx5_txq_ibv_verify(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; int ret = 0; struct mlx5_txq_ibv *txq_ibv; @@ -635,6 +635,27 @@ mlx5_txq_ibv_verify(struct rte_eth_dev *dev) return ret; } +/** + * Calcuate the total number of WQEBB for Tx queue. + * + * Simplified version of calc_sq_size() in rdma-core. + * + * @param txq_ctrl + * Pointer to Tx queue control structure. + * + * @return + * The number of WQEBB. + */ +static int +txq_calc_wqebb_cnt(struct mlx5_txq_ctrl *txq_ctrl) +{ + unsigned int wqe_size; + const unsigned int desc = 1 << txq_ctrl->txq.elts_n; + + wqe_size = MLX5_WQE_SIZE + txq_ctrl->max_inline_data; + return rte_align32pow2(wqe_size * desc) / MLX5_WQE_SIZE; +} + /** * Set Tx queue parameters from device configuration. * @@ -644,7 +665,7 @@ mlx5_txq_ibv_verify(struct rte_eth_dev *dev) static void txq_set_params(struct mlx5_txq_ctrl *txq_ctrl) { - struct priv *priv = txq_ctrl->priv; + struct mlx5_priv *priv = txq_ctrl->priv; struct mlx5_dev_config *config = &priv->config; const unsigned int max_tso_inline = ((MLX5_MAX_TSO_HEADER + (RTE_CACHE_LINE_SIZE - 1)) / @@ -754,7 +775,7 @@ struct mlx5_txq_ctrl * mlx5_txq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, unsigned int socket, const struct rte_eth_txconf *conf) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_txq_ctrl *tmpl; tmpl = rte_calloc_socket("TXQ", 1, @@ -780,10 +801,16 @@ mlx5_txq_new(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc, tmpl->txq.elts_n = log2above(desc); tmpl->idx = idx; txq_set_params(tmpl); - DRV_LOG(DEBUG, "port %u priv->device_attr.max_qp_wr is %d", - dev->data->port_id, priv->device_attr.orig_attr.max_qp_wr); - DRV_LOG(DEBUG, "port %u priv->device_attr.max_sge is %d", - dev->data->port_id, priv->device_attr.orig_attr.max_sge); + if (txq_calc_wqebb_cnt(tmpl) > + priv->device_attr.orig_attr.max_qp_wr) { + DRV_LOG(ERR, + "port %u Tx WQEBB count (%d) exceeds the limit (%d)," + " try smaller queue size", + dev->data->port_id, txq_calc_wqebb_cnt(tmpl), + priv->device_attr.orig_attr.max_qp_wr); + rte_errno = ENOMEM; + goto error; + } tmpl->txq.elts = (struct rte_mbuf *(*)[1 << tmpl->txq.elts_n])(tmpl + 1); tmpl->txq.stats.idx = idx; @@ -809,7 +836,7 @@ error: struct mlx5_txq_ctrl * mlx5_txq_get(struct rte_eth_dev *dev, uint16_t idx) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_txq_ctrl *ctrl = NULL; if ((*priv->txqs)[idx]) { @@ -835,7 +862,7 @@ mlx5_txq_get(struct rte_eth_dev *dev, uint16_t idx) int mlx5_txq_release(struct rte_eth_dev *dev, uint16_t idx) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_txq_ctrl *txq; size_t page_size = sysconf(_SC_PAGESIZE); @@ -872,7 +899,7 @@ mlx5_txq_release(struct rte_eth_dev *dev, uint16_t idx) int mlx5_txq_releasable(struct rte_eth_dev *dev, uint16_t idx) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_txq_ctrl *txq; if (!(*priv->txqs)[idx]) @@ -893,7 +920,7 @@ mlx5_txq_releasable(struct rte_eth_dev *dev, uint16_t idx) int mlx5_txq_verify(struct rte_eth_dev *dev) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_txq_ctrl *txq; int ret = 0; diff --git a/dpdk/drivers/net/mlx5/mlx5_vlan.c b/dpdk/drivers/net/mlx5/mlx5_vlan.c index c91d08be1..6568a3a47 100644 --- a/dpdk/drivers/net/mlx5/mlx5_vlan.c +++ b/dpdk/drivers/net/mlx5/mlx5_vlan.c @@ -48,7 +48,7 @@ int mlx5_vlan_filter_set(struct rte_eth_dev *dev, uint16_t vlan_id, int on) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; unsigned int i; DRV_LOG(DEBUG, "port %u %s VLAN filter ID %" PRIu16, @@ -102,7 +102,7 @@ out: void mlx5_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_rxq_data *rxq = (*priv->rxqs)[queue]; struct mlx5_rxq_ctrl *rxq_ctrl = container_of(rxq, struct mlx5_rxq_ctrl, rxq); @@ -160,7 +160,7 @@ mlx5_vlan_strip_queue_set(struct rte_eth_dev *dev, uint16_t queue, int on) int mlx5_vlan_offload_set(struct rte_eth_dev *dev, int mask) { - struct priv *priv = dev->data->dev_private; + struct mlx5_priv *priv = dev->data->dev_private; unsigned int i; if (mask & ETH_VLAN_STRIP_MASK) { diff --git a/dpdk/drivers/net/mvpp2/mrvl_mtr.c b/dpdk/drivers/net/mvpp2/mrvl_mtr.c index 9adcd9751..39272acea 100644 --- a/dpdk/drivers/net/mvpp2/mrvl_mtr.c +++ b/dpdk/drivers/net/mvpp2/mrvl_mtr.c @@ -1,5 +1,4 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause +/* SPDX-License-Identifier: BSD-3-Clause * Copyright(c) 2018 Marvell International Ltd. * Copyright(c) 2018 Semihalf. * All rights reserved. diff --git a/dpdk/drivers/net/netvsc/hn_ethdev.c b/dpdk/drivers/net/netvsc/hn_ethdev.c index b330bf3d7..fad209f21 100644 --- a/dpdk/drivers/net/netvsc/hn_ethdev.c +++ b/dpdk/drivers/net/netvsc/hn_ethdev.c @@ -732,6 +732,8 @@ eth_hn_dev_init(struct rte_eth_dev *eth_dev) hv->chim_res = &vmbus->resource[HV_SEND_BUF_MAP]; hv->port_id = eth_dev->data->port_id; hv->latency = HN_CHAN_LATENCY_NS; + hv->max_queues = 1; + hv->vf_port = HN_INVALID_PORT; err = hn_parse_args(eth_dev); if (err) @@ -770,6 +772,10 @@ eth_hn_dev_init(struct rte_eth_dev *eth_dev) if (err) goto failed; + /* Multi queue requires later versions of windows server */ + if (hv->nvs_ver < NVS_VERSION_5) + return 0; + max_chan = rte_vmbus_max_channels(vmbus); PMD_INIT_LOG(DEBUG, "VMBus max channels %d", max_chan); if (max_chan <= 0) @@ -781,12 +787,12 @@ eth_hn_dev_init(struct rte_eth_dev *eth_dev) hv->max_queues = RTE_MIN(rxr_cnt, (unsigned int)max_chan); /* If VF was reported but not added, do it now */ - if (hv->vf_present && !hv->vf_dev) { + if (hv->vf_present && !hn_vf_attached(hv)) { PMD_INIT_LOG(DEBUG, "Adding VF device"); err = hn_vf_add(eth_dev, hv); if (err) - goto failed; + hv->vf_present = 0; } return 0; @@ -794,6 +800,7 @@ eth_hn_dev_init(struct rte_eth_dev *eth_dev) failed: PMD_INIT_LOG(NOTICE, "device init failed"); + hn_tx_pool_uninit(eth_dev); hn_detach(hv); return err; } @@ -816,6 +823,7 @@ eth_hn_dev_uninit(struct rte_eth_dev *eth_dev) eth_dev->rx_pkt_burst = NULL; hn_detach(hv); + hn_tx_pool_uninit(eth_dev); rte_vmbus_chan_close(hv->primary->chan); rte_free(hv->primary); rte_eth_dev_owner_delete(hv->owner.id); diff --git a/dpdk/drivers/net/netvsc/hn_nvs.c b/dpdk/drivers/net/netvsc/hn_nvs.c index 9690c5f8a..d58770e04 100644 --- a/dpdk/drivers/net/netvsc/hn_nvs.c +++ b/dpdk/drivers/net/netvsc/hn_nvs.c @@ -326,9 +326,9 @@ hn_nvs_conf_ndis(struct hn_data *hv, unsigned int mtu) conf.mtu = mtu + ETHER_HDR_LEN; conf.caps = NVS_NDIS_CONF_VLAN; - /* TODO enable SRIOV */ - //if (hv->nvs_ver >= NVS_VERSION_5) - // conf.caps |= NVS_NDIS_CONF_SRIOV; + /* enable SRIOV */ + if (hv->nvs_ver >= NVS_VERSION_5) + conf.caps |= NVS_NDIS_CONF_SRIOV; /* NOTE: No response. */ error = hn_nvs_req_send(hv, &conf, sizeof(conf)); diff --git a/dpdk/drivers/net/netvsc/hn_rxtx.c b/dpdk/drivers/net/netvsc/hn_rxtx.c index f4a36641b..5ffc0ee14 100644 --- a/dpdk/drivers/net/netvsc/hn_rxtx.c +++ b/dpdk/drivers/net/netvsc/hn_rxtx.c @@ -123,7 +123,7 @@ hn_update_packet_stats(struct hn_stats *stats, const struct rte_mbuf *m) stats->size_bins[0]++; else if (s < 1519) stats->size_bins[6]++; - else if (s >= 1519) + else stats->size_bins[7]++; } @@ -199,6 +199,17 @@ hn_tx_pool_init(struct rte_eth_dev *dev) return 0; } +void +hn_tx_pool_uninit(struct rte_eth_dev *dev) +{ + struct hn_data *hv = dev->data->dev_private; + + if (hv->tx_pool) { + rte_mempool_free(hv->tx_pool); + hv->tx_pool = NULL; + } +} + static void hn_reset_txagg(struct hn_tx_queue *txq) { txq->agg_szleft = txq->agg_szmax; @@ -1294,8 +1305,8 @@ hn_xmit_pkts(void *ptxq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) return 0; /* Transmit over VF if present and up */ - vf_dev = hv->vf_dev; - rte_compiler_barrier(); + vf_dev = hn_get_vf_dev(hv); + if (vf_dev && vf_dev->data->dev_started) { void *sub_q = vf_dev->data->tx_queues[queue_id]; @@ -1374,6 +1385,24 @@ fail: return nb_tx; } +static uint16_t +hn_recv_vf(uint16_t vf_port, const struct hn_rx_queue *rxq, + struct rte_mbuf **rx_pkts, uint16_t nb_pkts) +{ + uint16_t i, n; + + if (unlikely(nb_pkts == 0)) + return 0; + + n = rte_eth_rx_burst(vf_port, rxq->queue_id, rx_pkts, nb_pkts); + + /* relabel the received mbufs */ + for (i = 0; i < n; i++) + rx_pkts[i]->port = rxq->port_id; + + return n; +} + uint16_t hn_recv_pkts(void *prxq, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) { @@ -1385,30 +1414,21 @@ hn_recv_pkts(void *prxq, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) if (unlikely(hv->closed)) return 0; - vf_dev = hv->vf_dev; - rte_compiler_barrier(); + /* Receive from VF if present and up */ + vf_dev = hn_get_vf_dev(hv); - if (vf_dev && vf_dev->data->dev_started) { - /* Normally, with SR-IOV the ring buffer will be empty */ + /* Check for new completions */ + if (likely(rte_ring_count(rxq->rx_ring) < nb_pkts)) hn_process_events(hv, rxq->queue_id, 0); - /* Get mbufs some bufs off of staging ring */ - nb_rcv = rte_ring_sc_dequeue_burst(rxq->rx_ring, - (void **)rx_pkts, - nb_pkts / 2, NULL); - /* And rest off of VF */ - nb_rcv += rte_eth_rx_burst(vf_dev->data->port_id, - rxq->queue_id, - rx_pkts + nb_rcv, nb_pkts - nb_rcv); - } else { - /* If receive ring is not full then get more */ - if (rte_ring_count(rxq->rx_ring) < nb_pkts) - hn_process_events(hv, rxq->queue_id, 0); + /* Always check the vmbus path for multicast and new flows */ + nb_rcv = rte_ring_sc_dequeue_burst(rxq->rx_ring, + (void **)rx_pkts, nb_pkts, NULL); - nb_rcv = rte_ring_sc_dequeue_burst(rxq->rx_ring, - (void **)rx_pkts, - nb_pkts, NULL); - } + /* If VF is available, check that as well */ + if (vf_dev && vf_dev->data->dev_started) + nb_rcv += hn_recv_vf(vf_dev->data->port_id, rxq, + rx_pkts + nb_rcv, nb_pkts - nb_rcv); return nb_rcv; } diff --git a/dpdk/drivers/net/netvsc/hn_var.h b/dpdk/drivers/net/netvsc/hn_var.h index e1072c7cf..b31563435 100644 --- a/dpdk/drivers/net/netvsc/hn_var.h +++ b/dpdk/drivers/net/netvsc/hn_var.h @@ -91,14 +91,18 @@ struct hn_rx_bufinfo { struct rte_mbuf_ext_shared_info shinfo; } __rte_cache_aligned; +#define HN_INVALID_PORT UINT16_MAX + struct hn_data { struct rte_vmbus_device *vmbus; struct hn_rx_queue *primary; - struct rte_eth_dev *vf_dev; /* Subordinate device */ rte_spinlock_t vf_lock; uint16_t port_id; - bool closed; - bool vf_present; + uint16_t vf_port; + + uint8_t vf_present; + uint8_t closed; + uint32_t link_status; uint32_t link_speed; @@ -149,6 +153,7 @@ uint16_t hn_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts); int hn_tx_pool_init(struct rte_eth_dev *dev); +void hn_tx_pool_uninit(struct rte_eth_dev *dev); int hn_dev_link_update(struct rte_eth_dev *dev, int wait); int hn_dev_tx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx, uint16_t nb_desc, unsigned int socket_id, @@ -168,6 +173,28 @@ int hn_dev_rx_queue_setup(struct rte_eth_dev *dev, struct rte_mempool *mp); void hn_dev_rx_queue_release(void *arg); +/* Check if VF is attached */ +static inline bool +hn_vf_attached(const struct hn_data *hv) +{ + return hv->vf_port != HN_INVALID_PORT; +} + +/* Get VF device for existing netvsc device */ +static inline struct rte_eth_dev * +hn_get_vf_dev(const struct hn_data *hv) +{ + uint16_t vf_port = hv->vf_port; + + /* make sure vf_port is loaded */ + rte_smp_rmb(); + + if (vf_port == HN_INVALID_PORT) + return NULL; + else + return &rte_eth_devices[vf_port]; +} + void hn_vf_info_get(struct hn_data *hv, struct rte_eth_dev_info *info); int hn_vf_add(struct rte_eth_dev *dev, struct hn_data *hv); diff --git a/dpdk/drivers/net/netvsc/hn_vf.c b/dpdk/drivers/net/netvsc/hn_vf.c index 3f714ec99..4127e411f 100644 --- a/dpdk/drivers/net/netvsc/hn_vf.c +++ b/dpdk/drivers/net/netvsc/hn_vf.c @@ -10,8 +10,8 @@ #include #include #include +#include #include -#include #include #include @@ -51,15 +51,20 @@ static int hn_vf_match(const struct rte_eth_dev *dev) return -ENOENT; } + /* * Attach new PCI VF device and return the port_id */ -static int hn_vf_attach(struct hn_data *hv, uint16_t port_id, - struct rte_eth_dev **vf_dev) +static int hn_vf_attach(struct hn_data *hv, uint16_t port_id) { struct rte_eth_dev_owner owner = { .id = RTE_ETH_DEV_NO_OWNER }; int ret; + if (hn_vf_attached(hv)) { + PMD_DRV_LOG(ERR, "VF already attached"); + return -EEXIST; + } + ret = rte_eth_dev_owner_get(port_id, &owner); if (ret < 0) { PMD_DRV_LOG(ERR, "Can not find owner for port %d", port_id); @@ -79,8 +84,9 @@ static int hn_vf_attach(struct hn_data *hv, uint16_t port_id, } PMD_DRV_LOG(DEBUG, "Attach VF device %u", port_id); + hv->vf_port = port_id; rte_smp_wmb(); - *vf_dev = &rte_eth_devices[port_id]; + return 0; } @@ -96,12 +102,7 @@ int hn_vf_add(struct rte_eth_dev *dev, struct hn_data *hv) } rte_spinlock_lock(&hv->vf_lock); - if (hv->vf_dev) { - PMD_DRV_LOG(ERR, "VF already attached"); - err = -EBUSY; - } else { - err = hn_vf_attach(hv, port, &hv->vf_dev); - } + err = hn_vf_attach(hv, port); if (err == 0) { dev->data->dev_flags |= RTE_ETH_DEV_INTR_LSC; @@ -120,22 +121,22 @@ int hn_vf_add(struct rte_eth_dev *dev, struct hn_data *hv) /* Remove new VF device */ static void hn_vf_remove(struct hn_data *hv) { - struct rte_eth_dev *vf_dev; rte_spinlock_lock(&hv->vf_lock); - vf_dev = hv->vf_dev; - if (!vf_dev) { + + if (!hn_vf_attached(hv)) { PMD_DRV_LOG(ERR, "VF path not active"); - rte_spinlock_unlock(&hv->vf_lock); - return; + } else { + /* Stop incoming packets from arriving on VF */ + hn_nvs_set_datapath(hv, NVS_DATAPATH_SYNTHETIC); + + /* Stop transmission over VF */ + hv->vf_port = HN_INVALID_PORT; + rte_smp_wmb(); + + /* Give back ownership */ + rte_eth_dev_owner_unset(hv->vf_port, hv->owner.id); } - - /* Stop incoming packets from arriving on VF */ - hn_nvs_set_datapath(hv, NVS_DATAPATH_SYNTHETIC); - hv->vf_dev = NULL; - - /* Give back ownership */ - rte_eth_dev_owner_unset(vf_dev->data->port_id, hv->owner.id); rte_spinlock_unlock(&hv->vf_lock); } @@ -207,7 +208,7 @@ void hn_vf_info_get(struct hn_data *hv, struct rte_eth_dev_info *info) struct rte_eth_dev *vf_dev; rte_spinlock_lock(&hv->vf_lock); - vf_dev = hv->vf_dev; + vf_dev = hn_get_vf_dev(hv); if (vf_dev) hn_vf_info_merge(vf_dev, info); rte_spinlock_unlock(&hv->vf_lock); @@ -221,7 +222,7 @@ int hn_vf_link_update(struct rte_eth_dev *dev, int ret = 0; rte_spinlock_lock(&hv->vf_lock); - vf_dev = hv->vf_dev; + vf_dev = hn_get_vf_dev(hv); if (vf_dev && vf_dev->dev_ops->link_update) ret = (*vf_dev->dev_ops->link_update)(vf_dev, wait_to_complete); rte_spinlock_unlock(&hv->vf_lock); @@ -249,13 +250,14 @@ static int hn_vf_lsc_event(uint16_t port_id __rte_unused, } static int _hn_vf_configure(struct rte_eth_dev *dev, - struct rte_eth_dev *vf_dev, + uint16_t vf_port, const struct rte_eth_conf *dev_conf) { struct rte_eth_conf vf_conf = *dev_conf; - uint16_t vf_port = vf_dev->data->port_id; + struct rte_eth_dev *vf_dev; int ret; + vf_dev = &rte_eth_devices[vf_port]; if (dev_conf->intr_conf.lsc && (vf_dev->data->dev_flags & RTE_ETH_DEV_INTR_LSC)) { PMD_DRV_LOG(DEBUG, "enabling LSC for VF %u", @@ -294,13 +296,11 @@ int hn_vf_configure(struct rte_eth_dev *dev, const struct rte_eth_conf *dev_conf) { struct hn_data *hv = dev->data->dev_private; - struct rte_eth_dev *vf_dev; int ret = 0; rte_spinlock_lock(&hv->vf_lock); - vf_dev = hv->vf_dev; - if (vf_dev) - ret = _hn_vf_configure(dev, vf_dev, dev_conf); + if (hv->vf_port != HN_INVALID_PORT) + ret = _hn_vf_configure(dev, hv->vf_port, dev_conf); rte_spinlock_unlock(&hv->vf_lock); return ret; } @@ -312,7 +312,7 @@ const uint32_t *hn_vf_supported_ptypes(struct rte_eth_dev *dev) const uint32_t *ptypes = NULL; rte_spinlock_lock(&hv->vf_lock); - vf_dev = hv->vf_dev; + vf_dev = hn_get_vf_dev(hv); if (vf_dev && vf_dev->dev_ops->dev_supported_ptypes_get) ptypes = (*vf_dev->dev_ops->dev_supported_ptypes_get)(vf_dev); rte_spinlock_unlock(&hv->vf_lock); @@ -327,7 +327,7 @@ int hn_vf_start(struct rte_eth_dev *dev) int ret = 0; rte_spinlock_lock(&hv->vf_lock); - vf_dev = hv->vf_dev; + vf_dev = hn_get_vf_dev(hv); if (vf_dev) ret = rte_eth_dev_start(vf_dev->data->port_id); rte_spinlock_unlock(&hv->vf_lock); @@ -340,7 +340,7 @@ void hn_vf_stop(struct rte_eth_dev *dev) struct rte_eth_dev *vf_dev; rte_spinlock_lock(&hv->vf_lock); - vf_dev = hv->vf_dev; + vf_dev = hn_get_vf_dev(hv); if (vf_dev) rte_eth_dev_stop(vf_dev->data->port_id); rte_spinlock_unlock(&hv->vf_lock); @@ -352,7 +352,7 @@ void hn_vf_stop(struct rte_eth_dev *dev) struct hn_data *hv = (dev)->data->dev_private; \ struct rte_eth_dev *vf_dev; \ rte_spinlock_lock(&hv->vf_lock); \ - vf_dev = hv->vf_dev; \ + vf_dev = hn_get_vf_dev(hv); \ if (vf_dev) \ func(vf_dev->data->port_id); \ rte_spinlock_unlock(&hv->vf_lock); \ @@ -402,7 +402,7 @@ int hn_vf_mc_addr_list(struct rte_eth_dev *dev, int ret = 0; rte_spinlock_lock(&hv->vf_lock); - vf_dev = hv->vf_dev; + vf_dev = hn_get_vf_dev(hv); if (vf_dev) ret = rte_eth_dev_set_mc_addr_list(vf_dev->data->port_id, mc_addr_set, nb_mc_addr); @@ -420,7 +420,7 @@ int hn_vf_tx_queue_setup(struct rte_eth_dev *dev, int ret = 0; rte_spinlock_lock(&hv->vf_lock); - vf_dev = hv->vf_dev; + vf_dev = hn_get_vf_dev(hv); if (vf_dev) ret = rte_eth_tx_queue_setup(vf_dev->data->port_id, queue_idx, nb_desc, @@ -434,7 +434,7 @@ void hn_vf_tx_queue_release(struct hn_data *hv, uint16_t queue_id) struct rte_eth_dev *vf_dev; rte_spinlock_lock(&hv->vf_lock); - vf_dev = hv->vf_dev; + vf_dev = hn_get_vf_dev(hv); if (vf_dev && vf_dev->dev_ops->tx_queue_release) { void *subq = vf_dev->data->tx_queues[queue_id]; @@ -455,7 +455,7 @@ int hn_vf_rx_queue_setup(struct rte_eth_dev *dev, int ret = 0; rte_spinlock_lock(&hv->vf_lock); - vf_dev = hv->vf_dev; + vf_dev = hn_get_vf_dev(hv); if (vf_dev) ret = rte_eth_rx_queue_setup(vf_dev->data->port_id, queue_idx, nb_desc, @@ -469,7 +469,7 @@ void hn_vf_rx_queue_release(struct hn_data *hv, uint16_t queue_id) struct rte_eth_dev *vf_dev; rte_spinlock_lock(&hv->vf_lock); - vf_dev = hv->vf_dev; + vf_dev = hn_get_vf_dev(hv); if (vf_dev && vf_dev->dev_ops->rx_queue_release) { void *subq = vf_dev->data->rx_queues[queue_id]; @@ -486,7 +486,7 @@ int hn_vf_stats_get(struct rte_eth_dev *dev, int ret = 0; rte_spinlock_lock(&hv->vf_lock); - vf_dev = hv->vf_dev; + vf_dev = hn_get_vf_dev(hv); if (vf_dev) ret = rte_eth_stats_get(vf_dev->data->port_id, stats); rte_spinlock_unlock(&hv->vf_lock); @@ -503,7 +503,7 @@ int hn_vf_xstats_get_names(struct rte_eth_dev *dev, char tmp[RTE_ETH_XSTATS_NAME_SIZE]; rte_spinlock_lock(&hv->vf_lock); - vf_dev = hv->vf_dev; + vf_dev = hn_get_vf_dev(hv); if (vf_dev && vf_dev->dev_ops->xstats_get_names) count = vf_dev->dev_ops->xstats_get_names(vf_dev, names, n); rte_spinlock_unlock(&hv->vf_lock); @@ -528,7 +528,7 @@ int hn_vf_xstats_get(struct rte_eth_dev *dev, int count = 0; rte_spinlock_lock(&hv->vf_lock); - vf_dev = hv->vf_dev; + vf_dev = hn_get_vf_dev(hv); if (vf_dev && vf_dev->dev_ops->xstats_get) count = vf_dev->dev_ops->xstats_get(vf_dev, xstats, n); rte_spinlock_unlock(&hv->vf_lock); @@ -542,7 +542,7 @@ void hn_vf_xstats_reset(struct rte_eth_dev *dev) struct rte_eth_dev *vf_dev; rte_spinlock_lock(&hv->vf_lock); - vf_dev = hv->vf_dev; + vf_dev = hn_get_vf_dev(hv); if (vf_dev && vf_dev->dev_ops->xstats_reset) vf_dev->dev_ops->xstats_reset(vf_dev); rte_spinlock_unlock(&hv->vf_lock); diff --git a/dpdk/drivers/net/nfp/nfp_net.c b/dpdk/drivers/net/nfp/nfp_net.c index 54c6da924..68c853c94 100644 --- a/dpdk/drivers/net/nfp/nfp_net.c +++ b/dpdk/drivers/net/nfp/nfp_net.c @@ -566,7 +566,10 @@ nfp_set_mac_addr(struct rte_eth_dev *dev, struct ether_addr *mac_addr) /* Signal the NIC about the change */ update = NFP_NET_CFG_UPDATE_MACADDR; - ctrl = hw->ctrl | NFP_NET_CFG_CTRL_LIVE_ADDR; + ctrl = hw->ctrl; + if ((hw->ctrl & NFP_NET_CFG_CTRL_ENABLE) && + (hw->cap & NFP_NET_CFG_CTRL_LIVE_ADDR)) + ctrl |= NFP_NET_CFG_CTRL_LIVE_ADDR; if (nfp_net_reconfig(hw, ctrl, update) < 0) { PMD_INIT_LOG(INFO, "MAC address update failed"); return -EIO; @@ -758,7 +761,7 @@ nfp_net_start(struct rte_eth_dev *dev) return -EIO; /* - * Allocating rte mbuffs for configured rx queues. + * Allocating rte mbufs for configured rx queues. * This requires queues being enabled before */ if (nfp_net_rx_freelist_setup(dev) < 0) { @@ -1487,7 +1490,7 @@ nfp_net_rx_queue_setup(struct rte_eth_dev *dev, if (rxq == NULL) return -ENOMEM; - /* Hw queues mapping based on firmware confifguration */ + /* Hw queues mapping based on firmware configuration */ rxq->qidx = queue_idx; rxq->fl_qcidx = queue_idx * hw->stride_rx; rxq->rx_qcidx = rxq->fl_qcidx + (hw->stride_rx - 1); @@ -1519,7 +1522,7 @@ nfp_net_rx_queue_setup(struct rte_eth_dev *dev, socket_id); if (tz == NULL) { - PMD_DRV_LOG(ERR, "Error allocatig rx dma"); + PMD_DRV_LOG(ERR, "Error allocating rx dma"); nfp_net_rx_queue_release(rxq); return -ENOMEM; } @@ -1906,7 +1909,7 @@ nfp_net_mbuf_alloc_failed(struct nfp_net_rxq *rxq) /* * RX path design: * - * There are some decissions to take: + * There are some decisions to take: * 1) How to check DD RX descriptors bit * 2) How and when to allocate new mbufs * @@ -1976,7 +1979,7 @@ nfp_net_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) rte_rmb(); /* - * We got a packet. Let's alloc a new mbuff for refilling the + * We got a packet. Let's alloc a new mbuf for refilling the * free descriptor ring as soon as possible */ new_mb = rte_pktmbuf_alloc(rxq->mem_pool); @@ -1991,8 +1994,8 @@ nfp_net_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) nb_hold++; /* - * Grab the mbuff and refill the descriptor with the - * previously allocated mbuff + * Grab the mbuf and refill the descriptor with the + * previously allocated mbuf */ mb = rxb->mbuf; rxb->mbuf = new_mb; @@ -2024,7 +2027,7 @@ nfp_net_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) return -EINVAL; } - /* Filling the received mbuff with packet info */ + /* Filling the received mbuf with packet info */ if (hw->rx_offset) mb->data_off = RTE_PKTMBUF_HEADROOM + hw->rx_offset; else @@ -2049,7 +2052,7 @@ nfp_net_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) mb->ol_flags |= PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED; } - /* Adding the mbuff to the mbuff array passed by the app */ + /* Adding the mbuf to the mbuf array passed by the app */ rx_pkts[avail++] = mb; /* Now resetting and updating the descriptor */ @@ -2443,7 +2446,7 @@ nfp_net_reta_query(struct rte_eth_dev *dev, for (j = 0; j < 4; j++) { if (!(mask & (0x1 << j))) continue; - reta_conf->reta[shift + j] = + reta_conf[idx].reta[shift + j] = (uint8_t)((reta >> (8 * j)) & 0xF); } } @@ -2789,9 +2792,9 @@ nfp_net_init(struct rte_eth_dev *eth_dev) case PCI_DEVICE_ID_NFP6000_PF_NIC: case PCI_DEVICE_ID_NFP6000_VF_NIC: start_q = nn_cfg_readl(hw, NFP_NET_CFG_START_TXQ); - tx_bar_off = start_q * NFP_QCP_QUEUE_ADDR_SZ; + tx_bar_off = (uint64_t)start_q * NFP_QCP_QUEUE_ADDR_SZ; start_q = nn_cfg_readl(hw, NFP_NET_CFG_START_RXQ); - rx_bar_off = start_q * NFP_QCP_QUEUE_ADDR_SZ; + rx_bar_off = (uint64_t)start_q * NFP_QCP_QUEUE_ADDR_SZ; break; default: PMD_DRV_LOG(ERR, "nfp_net: no device ID matching"); @@ -2954,9 +2957,9 @@ nfp_pf_create_dev(struct rte_pci_device *dev, int port, int ports, return -ENOMEM; if (ports > 1) - sprintf(port_name, "%s_port%d", dev->device.name, port); + snprintf(port_name, 100, "%s_port%d", dev->device.name, port); else - sprintf(port_name, "%s", dev->device.name); + strlcat(port_name, dev->device.name, 100); eth_dev = rte_eth_dev_allocate(port_name); if (!eth_dev) @@ -3021,28 +3024,31 @@ nfp_fw_upload(struct rte_pci_device *dev, struct nfp_nsp *nsp, char *card) /* Looking for firmware file in order of priority */ /* First try to find a firmware image specific for this device */ - sprintf(serial, "serial-%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x", + snprintf(serial, sizeof(serial), + "serial-%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x", cpp->serial[0], cpp->serial[1], cpp->serial[2], cpp->serial[3], cpp->serial[4], cpp->serial[5], cpp->interface >> 8, cpp->interface & 0xff); - sprintf(fw_name, "%s/%s.nffw", DEFAULT_FW_PATH, serial); + snprintf(fw_name, sizeof(fw_name), "%s/%s.nffw", DEFAULT_FW_PATH, + serial); PMD_DRV_LOG(DEBUG, "Trying with fw file: %s", fw_name); fw_f = open(fw_name, O_RDONLY); - if (fw_f > 0) + if (fw_f >= 0) goto read_fw; /* Then try the PCI name */ - sprintf(fw_name, "%s/pci-%s.nffw", DEFAULT_FW_PATH, dev->device.name); + snprintf(fw_name, sizeof(fw_name), "%s/pci-%s.nffw", DEFAULT_FW_PATH, + dev->device.name); PMD_DRV_LOG(DEBUG, "Trying with fw file: %s", fw_name); fw_f = open(fw_name, O_RDONLY); - if (fw_f > 0) + if (fw_f >= 0) goto read_fw; /* Finally try the card type and media */ - sprintf(fw_name, "%s/%s", DEFAULT_FW_PATH, card); + snprintf(fw_name, sizeof(fw_name), "%s/%s", DEFAULT_FW_PATH, card); PMD_DRV_LOG(DEBUG, "Trying with fw file: %s", fw_name); fw_f = open(fw_name, O_RDONLY); if (fw_f < 0) { @@ -3118,8 +3124,9 @@ nfp_fw_setup(struct rte_pci_device *dev, struct nfp_cpp *cpp, PMD_DRV_LOG(INFO, "Port speed: %u", nfp_eth_table->ports[0].speed); - sprintf(card_desc, "nic_%s_%dx%d.nffw", nfp_fw_model, - nfp_eth_table->count, nfp_eth_table->ports[0].speed / 1000); + snprintf(card_desc, sizeof(card_desc), "nic_%s_%dx%d.nffw", + nfp_fw_model, nfp_eth_table->count, + nfp_eth_table->ports[0].speed / 1000); nsp = nfp_nsp_open(cpp); if (!nsp) { diff --git a/dpdk/drivers/net/nfp/nfp_net_ctrl.h b/dpdk/drivers/net/nfp/nfp_net_ctrl.h index 21e17da1c..fc3540a2e 100644 --- a/dpdk/drivers/net/nfp/nfp_net_ctrl.h +++ b/dpdk/drivers/net/nfp/nfp_net_ctrl.h @@ -122,7 +122,7 @@ #define NFP_NET_CFG_CTRL_MSIX_TX_OFF (0x1 << 26) /* Disable MSIX for TX */ #define NFP_NET_CFG_CTRL_LSO2 (0x1 << 28) /* LSO/TSO (version 2) */ #define NFP_NET_CFG_CTRL_RSS2 (0x1 << 29) /* RSS (version 2) */ -#define NFP_NET_CFG_CTRL_LIVE_ADDR (0x1 << 31) /* live MAC addr change */ +#define NFP_NET_CFG_CTRL_LIVE_ADDR (0x1U << 31)/* live MAC addr change */ #define NFP_NET_CFG_UPDATE 0x0004 #define NFP_NET_CFG_UPDATE_GEN (0x1 << 0) /* General update */ #define NFP_NET_CFG_UPDATE_RING (0x1 << 1) /* Ring config change */ @@ -135,7 +135,7 @@ #define NFP_NET_CFG_UPDATE_IRQMOD (0x1 << 8) /* IRQ mod change */ #define NFP_NET_CFG_UPDATE_VXLAN (0x1 << 9) /* VXLAN port change */ #define NFP_NET_CFG_UPDATE_MACADDR (0x1 << 11) /* MAC address change */ -#define NFP_NET_CFG_UPDATE_ERR (0x1 << 31) /* A error occurred */ +#define NFP_NET_CFG_UPDATE_ERR (0x1U << 31) /* A error occurred */ #define NFP_NET_CFG_TXRS_ENABLE 0x0008 #define NFP_NET_CFG_RXRS_ENABLE 0x0010 #define NFP_NET_CFG_MTU 0x0018 diff --git a/dpdk/drivers/net/nfp/nfp_net_pmd.h b/dpdk/drivers/net/nfp/nfp_net_pmd.h index b01036df2..d70cbc634 100644 --- a/dpdk/drivers/net/nfp/nfp_net_pmd.h +++ b/dpdk/drivers/net/nfp/nfp_net_pmd.h @@ -34,7 +34,7 @@ * * @file dpdk/pmd/nfp_net_pmd.h * - * Netronome NFP_NET PDM driver + * Netronome NFP_NET PMD driver */ #ifndef _NFP_NET_PMD_H_ @@ -240,7 +240,7 @@ struct nfp_net_txq { uint32_t tx_free_thresh; /* - * For each descriptor keep a reference to the mbuff and + * For each descriptor keep a reference to the mbuf and * DMA address used until completion is signalled. */ struct { diff --git a/dpdk/drivers/net/nfp/nfpcore/nfp-common/nfp_cppat.h b/dpdk/drivers/net/nfp/nfpcore/nfp-common/nfp_cppat.h index 6e380cca0..538f882bf 100644 --- a/dpdk/drivers/net/nfp/nfpcore/nfp-common/nfp_cppat.h +++ b/dpdk/drivers/net/nfp/nfpcore/nfp-common/nfp_cppat.h @@ -368,6 +368,9 @@ _nfp6000_encode_mu(uint64_t *addr, int dest_island, int mode, int addr40, isld[1] = isld1; locality_lsb = _nfp6000_cppat_mu_locality_lsb(mode, addr40); + if (locality_lsb < 0) + return NFP_ERRNO(EINVAL); + if (((*addr >> locality_lsb) & 3) == _NIC_NFP6000_MU_LOCALITY_DIRECT) da = 1; else diff --git a/dpdk/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c b/dpdk/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c index c68d9400f..37b7991f0 100644 --- a/dpdk/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c +++ b/dpdk/drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c @@ -16,7 +16,9 @@ #include #include +#if defined(RTE_BACKTRACE) #include +#endif #include #include #include @@ -788,17 +790,17 @@ nfp6000_init(struct nfp_cpp *cpp, struct rte_pci_device *dev) if (cpp->driver_lock_needed) { ret = nfp_acquire_process_lock(desc); if (ret) - return -1; + goto error; } if (nfp6000_set_model(dev, cpp) < 0) - return -1; + goto error; if (nfp6000_set_interface(dev, cpp) < 0) - return -1; + goto error; if (nfp6000_set_serial(dev, cpp) < 0) - return -1; + goto error; if (nfp6000_set_barsz(dev, desc) < 0) - return -1; + goto error; desc->cfg = (char *)dev->mem_resource[0].addr; @@ -809,7 +811,11 @@ nfp6000_init(struct nfp_cpp *cpp, struct rte_pci_device *dev) model = __nfp_cpp_model_autodetect(cpp); nfp_cpp_model_set(cpp, model); - return ret; + return 0; + +error: + free(desc); + return -1; } static void diff --git a/dpdk/drivers/net/nfp/nfpcore/nfp_cppcore.c b/dpdk/drivers/net/nfp/nfpcore/nfp_cppcore.c index 75d3c9748..dec4a8b6d 100644 --- a/dpdk/drivers/net/nfp/nfpcore/nfp_cppcore.c +++ b/dpdk/drivers/net/nfp/nfpcore/nfp_cppcore.c @@ -801,7 +801,8 @@ __nfp_cpp_model_autodetect(struct nfp_cpp *cpp) uint32_t arm_id = NFP_CPP_ID(NFP_CPP_TARGET_ARM, 0, 0); uint32_t model = 0; - nfp_cpp_readl(cpp, arm_id, NFP6000_ARM_GCSR_SOFTMODEL0, &model); + if (nfp_cpp_readl(cpp, arm_id, NFP6000_ARM_GCSR_SOFTMODEL0, &model)) + return 0; if (NFP_CPP_MODEL_IS_6000(model)) { uint32_t tmp; @@ -810,8 +811,10 @@ __nfp_cpp_model_autodetect(struct nfp_cpp *cpp) /* The PL's PluDeviceID revision code is authoratative */ model &= ~0xff; - nfp_xpb_readl(cpp, NFP_XPB_DEVICE(1, 1, 16) + - NFP_PL_DEVICE_ID, &tmp); + if (nfp_xpb_readl(cpp, NFP_XPB_DEVICE(1, 1, 16) + + NFP_PL_DEVICE_ID, &tmp)) + return 0; + model |= (NFP_PL_DEVICE_ID_MASK & tmp) - 0x10; } diff --git a/dpdk/drivers/net/octeontx/octeontx_ethdev.h b/dpdk/drivers/net/octeontx/octeontx_ethdev.h index 920f6f89b..2a4a08afc 100644 --- a/dpdk/drivers/net/octeontx/octeontx_ethdev.h +++ b/dpdk/drivers/net/octeontx/octeontx_ethdev.h @@ -21,6 +21,7 @@ #include "base/octeontx_pkovf.h" #include "base/octeontx_io.h" +#define OCTEONTX_PMD net_octeontx #define OCTEONTX_VDEV_DEFAULT_MAX_NR_PORT 12 #define OCTEONTX_VDEV_NR_PORT_ARG ("nr_port") #define OCTEONTX_MAX_NAME_LEN 32 diff --git a/dpdk/drivers/net/pcap/rte_eth_pcap.c b/dpdk/drivers/net/pcap/rte_eth_pcap.c index 9fd932772..65bbd7e2f 100644 --- a/dpdk/drivers/net/pcap/rte_eth_pcap.c +++ b/dpdk/drivers/net/pcap/rte_eth_pcap.c @@ -1258,7 +1258,8 @@ create_eth: if (pp == NULL) { PMD_LOG(ERR, "Failed to allocate memory for process private"); - return -1; + ret = -1; + goto free_kvlist; } eth_dev->dev_ops = &ops; @@ -1281,7 +1282,7 @@ create_eth: eth_dev->tx_pkt_burst = eth_pcap_tx; rte_eth_dev_probing_finish(eth_dev); - return 0; + goto free_kvlist; } ret = eth_from_pcaps(dev, &pcaps, pcaps.num_of_queue, &dumpers, diff --git a/dpdk/drivers/net/qede/base/common_hsi.h b/dpdk/drivers/net/qede/base/common_hsi.h index 2aaf298f1..7047eb9f8 100644 --- a/dpdk/drivers/net/qede/base/common_hsi.h +++ b/dpdk/drivers/net/qede/base/common_hsi.h @@ -400,9 +400,9 @@ #define QM_BYTE_CRD_REG_WIDTH 24 #define QM_BYTE_CRD_REG_SIGN_BIT (1 << (QM_BYTE_CRD_REG_WIDTH - 1)) #define QM_WFQ_CRD_REG_WIDTH 32 -#define QM_WFQ_CRD_REG_SIGN_BIT (1 << (QM_WFQ_CRD_REG_WIDTH - 1)) +#define QM_WFQ_CRD_REG_SIGN_BIT (1U << (QM_WFQ_CRD_REG_WIDTH - 1)) #define QM_RL_CRD_REG_WIDTH 32 -#define QM_RL_CRD_REG_SIGN_BIT (1 << (QM_RL_CRD_REG_WIDTH - 1)) +#define QM_RL_CRD_REG_SIGN_BIT (1U << (QM_RL_CRD_REG_WIDTH - 1)) /*****************/ /* CAU CONSTANTS */ diff --git a/dpdk/drivers/net/qede/base/ecore_hsi_common.h b/dpdk/drivers/net/qede/base/ecore_hsi_common.h index 6d4a4dd70..2ce0ea9e5 100644 --- a/dpdk/drivers/net/qede/base/ecore_hsi_common.h +++ b/dpdk/drivers/net/qede/base/ecore_hsi_common.h @@ -2250,7 +2250,7 @@ struct igu_cleanup { #define IGU_CLEANUP_CLEANUP_TYPE_MASK 0x7 #define IGU_CLEANUP_CLEANUP_TYPE_SHIFT 28 /* must always be set (use enum command_type_bit) */ -#define IGU_CLEANUP_COMMAND_TYPE_MASK 0x1 +#define IGU_CLEANUP_COMMAND_TYPE_MASK 0x1U #define IGU_CLEANUP_COMMAND_TYPE_SHIFT 31 __le32 reserved1; }; diff --git a/dpdk/drivers/net/qede/base/ecore_hsi_eth.h b/dpdk/drivers/net/qede/base/ecore_hsi_eth.h index 158ca673b..7bc094792 100644 --- a/dpdk/drivers/net/qede/base/ecore_hsi_eth.h +++ b/dpdk/drivers/net/qede/base/ecore_hsi_eth.h @@ -2420,7 +2420,7 @@ struct gft_ram_line { #define GFT_RAM_LINE_TCP_FLAG_NS_SHIFT 29 #define GFT_RAM_LINE_DST_PORT_MASK 0x1 #define GFT_RAM_LINE_DST_PORT_SHIFT 30 -#define GFT_RAM_LINE_SRC_PORT_MASK 0x1 +#define GFT_RAM_LINE_SRC_PORT_MASK 0x1U #define GFT_RAM_LINE_SRC_PORT_SHIFT 31 __le32 hi; #define GFT_RAM_LINE_DSCP_MASK 0x1 diff --git a/dpdk/drivers/net/qede/base/ecore_hw_defs.h b/dpdk/drivers/net/qede/base/ecore_hw_defs.h index b8c2686fc..92361e79c 100644 --- a/dpdk/drivers/net/qede/base/ecore_hw_defs.h +++ b/dpdk/drivers/net/qede/base/ecore_hw_defs.h @@ -51,7 +51,7 @@ struct igu_ctrl_reg { #define IGU_CTRL_REG_PXP_ADDR_SHIFT 16 #define IGU_CTRL_REG_RESERVED_MASK 0x1 #define IGU_CTRL_REG_RESERVED_SHIFT 28 -#define IGU_CTRL_REG_TYPE_MASK 0x1 /* use enum igu_ctrl_cmd */ +#define IGU_CTRL_REG_TYPE_MASK 0x1U /* use enum igu_ctrl_cmd */ #define IGU_CTRL_REG_TYPE_SHIFT 31 }; diff --git a/dpdk/drivers/net/qede/qede_ethdev.c b/dpdk/drivers/net/qede/qede_ethdev.c index 518673dce..0b2f305e1 100644 --- a/dpdk/drivers/net/qede/qede_ethdev.c +++ b/dpdk/drivers/net/qede/qede_ethdev.c @@ -2735,7 +2735,8 @@ static int qedevf_eth_dev_pci_remove(struct rte_pci_device *pci_dev) static struct rte_pci_driver rte_qedevf_pmd = { .id_table = pci_id_qedevf_map, - .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC, + .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC | + RTE_PCI_DRV_IOVA_AS_VA, .probe = qedevf_eth_dev_pci_probe, .remove = qedevf_eth_dev_pci_remove, }; @@ -2754,7 +2755,8 @@ static int qede_eth_dev_pci_remove(struct rte_pci_device *pci_dev) static struct rte_pci_driver rte_qede_pmd = { .id_table = pci_id_qede_map, - .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC, + .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_INTR_LSC | + RTE_PCI_DRV_IOVA_AS_VA, .probe = qede_eth_dev_pci_probe, .remove = qede_eth_dev_pci_remove, }; diff --git a/dpdk/drivers/net/qede/qede_rxtx.c b/dpdk/drivers/net/qede/qede_rxtx.c index 0e33be1a3..27bac0995 100644 --- a/dpdk/drivers/net/qede/qede_rxtx.c +++ b/dpdk/drivers/net/qede/qede_rxtx.c @@ -35,6 +35,52 @@ static inline int qede_alloc_rx_buffer(struct qede_rx_queue *rxq) return 0; } +#define QEDE_MAX_BULK_ALLOC_COUNT 512 + +static inline int qede_alloc_rx_bulk_mbufs(struct qede_rx_queue *rxq, int count) +{ + void *obj_p[QEDE_MAX_BULK_ALLOC_COUNT] __rte_cache_aligned; + struct rte_mbuf *mbuf = NULL; + struct eth_rx_bd *rx_bd; + dma_addr_t mapping; + int i, ret = 0; + uint16_t idx; + + idx = rxq->sw_rx_prod & NUM_RX_BDS(rxq); + + if (count > QEDE_MAX_BULK_ALLOC_COUNT) + count = QEDE_MAX_BULK_ALLOC_COUNT; + + ret = rte_mempool_get_bulk(rxq->mb_pool, obj_p, count); + if (unlikely(ret)) { + PMD_RX_LOG(ERR, rxq, + "Failed to allocate %d rx buffers " + "sw_rx_prod %u sw_rx_cons %u mp entries %u free %u", + count, idx, rxq->sw_rx_cons & NUM_RX_BDS(rxq), + rte_mempool_avail_count(rxq->mb_pool), + rte_mempool_in_use_count(rxq->mb_pool)); + return -ENOMEM; + } + + for (i = 0; i < count; i++) { + mbuf = obj_p[i]; + if (likely(i < count - 1)) + rte_prefetch0(obj_p[i + 1]); + + idx = rxq->sw_rx_prod & NUM_RX_BDS(rxq); + rxq->sw_rx_ring[idx].mbuf = mbuf; + rxq->sw_rx_ring[idx].page_offset = 0; + mapping = rte_mbuf_data_iova_default(mbuf); + rx_bd = (struct eth_rx_bd *) + ecore_chain_produce(&rxq->rx_bd_ring); + rx_bd->addr.hi = rte_cpu_to_le_32(U64_HI(mapping)); + rx_bd->addr.lo = rte_cpu_to_le_32(U64_LO(mapping)); + rxq->sw_rx_prod++; + } + + return 0; +} + /* Criterias for calculating Rx buffer size - * 1) rx_buf_size should not exceed the size of mbuf * 2) In scattered_rx mode - minimum rx_buf_size should be @@ -1131,7 +1177,7 @@ qede_reuse_page(__rte_unused struct qede_dev *qdev, struct qede_rx_queue *rxq, struct qede_rx_entry *curr_cons) { struct eth_rx_bd *rx_bd_prod = ecore_chain_produce(&rxq->rx_bd_ring); - uint16_t idx = rxq->sw_rx_cons & NUM_RX_BDS(rxq); + uint16_t idx = rxq->sw_rx_prod & NUM_RX_BDS(rxq); struct qede_rx_entry *curr_prod; dma_addr_t new_mapping; @@ -1364,7 +1410,6 @@ qede_recv_pkts(void *p_rxq, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) uint8_t bitfield_val; #endif uint8_t tunn_parse_flag; - uint8_t j; struct eth_fast_path_rx_tpa_start_cqe *cqe_start_tpa; uint64_t ol_flags; uint32_t packet_type; @@ -1373,6 +1418,27 @@ qede_recv_pkts(void *p_rxq, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) uint8_t offset, tpa_agg_idx, flags; struct qede_agg_info *tpa_info = NULL; uint32_t rss_hash; + int rx_alloc_count = 0; + + + /* Allocate buffers that we used in previous loop */ + if (rxq->rx_alloc_count) { + if (unlikely(qede_alloc_rx_bulk_mbufs(rxq, + rxq->rx_alloc_count))) { + struct rte_eth_dev *dev; + + PMD_RX_LOG(ERR, rxq, + "New buffer allocation failed," + "dropping incoming packetn"); + dev = &rte_eth_devices[rxq->port_id]; + dev->data->rx_mbuf_alloc_failed += + rxq->rx_alloc_count; + rxq->rx_alloc_errors += rxq->rx_alloc_count; + return 0; + } + qede_update_rx_prod(qdev, rxq); + rxq->rx_alloc_count = 0; + } hw_comp_cons = rte_le_to_cpu_16(*rxq->hw_cons_ptr); sw_comp_cons = ecore_chain_get_cons_idx(&rxq->rx_comp_ring); @@ -1553,16 +1619,7 @@ qede_recv_pkts(void *p_rxq, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) rx_mb->hash.rss = rss_hash; } - if (unlikely(qede_alloc_rx_buffer(rxq) != 0)) { - PMD_RX_LOG(ERR, rxq, - "New buffer allocation failed," - "dropping incoming packet\n"); - qede_recycle_rx_bd_ring(rxq, qdev, fp_cqe->bd_num); - rte_eth_devices[rxq->port_id]. - data->rx_mbuf_alloc_failed++; - rxq->rx_alloc_errors++; - break; - } + rx_alloc_count++; qede_rx_bd_ring_consume(rxq); if (!tpa_start_flg && fp_cqe->bd_num > 1) { @@ -1574,17 +1631,9 @@ qede_recv_pkts(void *p_rxq, struct rte_mbuf **rx_pkts, uint16_t nb_pkts) if (qede_process_sg_pkts(p_rxq, seg1, num_segs, pkt_len - len)) goto next_cqe; - for (j = 0; j < num_segs; j++) { - if (qede_alloc_rx_buffer(rxq)) { - PMD_RX_LOG(ERR, rxq, - "Buffer allocation failed"); - rte_eth_devices[rxq->port_id]. - data->rx_mbuf_alloc_failed++; - rxq->rx_alloc_errors++; - break; - } - rxq->rx_segs++; - } + + rx_alloc_count += num_segs; + rxq->rx_segs += num_segs; } rxq->rx_segs++; /* for the first segment */ @@ -1626,7 +1675,8 @@ next_cqe: } } - qede_update_rx_prod(qdev, rxq); + /* Request number of bufferes to be allocated in next loop */ + rxq->rx_alloc_count = rx_alloc_count; rxq->rcv_pkts += rx_pkt; @@ -1770,7 +1820,7 @@ qede_xmit_prep_pkts(__rte_unused void *p_txq, struct rte_mbuf **tx_pkts, temp == PKT_TX_TUNNEL_GENEVE || temp == PKT_TX_TUNNEL_MPLSINUDP || temp == PKT_TX_TUNNEL_GRE) - break; + continue; } rte_errno = -ENOTSUP; @@ -2132,7 +2182,6 @@ qede_xmit_pkts(void *p_txq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) txq->nb_tx_avail -= bd1->data.nbds; txq->sw_tx_prod++; - rte_prefetch0(txq->sw_tx_ring[TX_PROD(txq)].mbuf); bd_prod = rte_cpu_to_le_16(ecore_chain_get_prod_idx(&txq->tx_pbl)); #ifdef RTE_LIBRTE_QEDE_DEBUG_TX diff --git a/dpdk/drivers/net/qede/qede_rxtx.h b/dpdk/drivers/net/qede/qede_rxtx.h index 454daa07b..5b249cbb2 100644 --- a/dpdk/drivers/net/qede/qede_rxtx.h +++ b/dpdk/drivers/net/qede/qede_rxtx.h @@ -192,6 +192,8 @@ struct qede_rx_queue { uint16_t queue_id; uint16_t port_id; uint16_t rx_buf_size; + uint16_t rx_alloc_count; + uint16_t unused; uint64_t rcv_pkts; uint64_t rx_segs; uint64_t rx_hw_errors; diff --git a/dpdk/drivers/net/ring/rte_eth_ring.c b/dpdk/drivers/net/ring/rte_eth_ring.c index aeb48f5ec..c438da51c 100644 --- a/dpdk/drivers/net/ring/rte_eth_ring.c +++ b/dpdk/drivers/net/ring/rte_eth_ring.c @@ -45,8 +45,8 @@ struct ring_queue { }; struct pmd_internals { - unsigned max_rx_queues; - unsigned max_tx_queues; + unsigned int max_rx_queues; + unsigned int max_tx_queues; struct ring_queue rx_ring_queues[RTE_PMD_RING_MAX_RX_RINGS]; struct ring_queue tx_ring_queues[RTE_PMD_RING_MAX_TX_RINGS]; @@ -55,12 +55,11 @@ struct pmd_internals { enum dev_action action; }; - static struct rte_eth_link pmd_link = { - .link_speed = ETH_SPEED_NUM_10G, - .link_duplex = ETH_LINK_FULL_DUPLEX, - .link_status = ETH_LINK_DOWN, - .link_autoneg = ETH_LINK_FIXED, + .link_speed = ETH_SPEED_NUM_10G, + .link_duplex = ETH_LINK_FULL_DUPLEX, + .link_status = ETH_LINK_DOWN, + .link_autoneg = ETH_LINK_FIXED, }; static int eth_ring_logtype; @@ -138,6 +137,7 @@ eth_rx_queue_setup(struct rte_eth_dev *dev, uint16_t rx_queue_id, struct rte_mempool *mb_pool __rte_unused) { struct pmd_internals *internals = dev->data->dev_private; + dev->data->rx_queues[rx_queue_id] = &internals->rx_ring_queues[rx_queue_id]; return 0; } @@ -149,6 +149,7 @@ eth_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id, const struct rte_eth_txconf *tx_conf __rte_unused) { struct pmd_internals *internals = dev->data->dev_private; + dev->data->tx_queues[tx_queue_id] = &internals->tx_ring_queues[tx_queue_id]; return 0; } @@ -156,9 +157,10 @@ eth_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id, static void eth_dev_info(struct rte_eth_dev *dev, - struct rte_eth_dev_info *dev_info) + struct rte_eth_dev_info *dev_info) { struct pmd_internals *internals = dev->data->dev_private; + dev_info->max_mac_addrs = 1; dev_info->max_rx_pktlen = (uint32_t)-1; dev_info->max_rx_queues = (uint16_t)internals->max_rx_queues; @@ -169,7 +171,7 @@ eth_dev_info(struct rte_eth_dev *dev, static int eth_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) { - unsigned i; + unsigned int i; unsigned long rx_total = 0, tx_total = 0, tx_err_total = 0; const struct pmd_internals *internal = dev->data->dev_private; @@ -197,8 +199,9 @@ eth_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) static void eth_stats_reset(struct rte_eth_dev *dev) { - unsigned i; + unsigned int i; struct pmd_internals *internal = dev->data->dev_private; + for (i = 0; i < dev->data->nb_rx_queues; i++) internal->rx_ring_queues[i].rx_pkts.cnt = 0; for (i = 0; i < dev->data->nb_tx_queues; i++) { @@ -250,8 +253,10 @@ static struct rte_vdev_driver pmd_ring_drv; static int do_eth_dev_ring_create(const char *name, - struct rte_ring * const rx_queues[], const unsigned nb_rx_queues, - struct rte_ring *const tx_queues[], const unsigned nb_tx_queues, + struct rte_ring * const rx_queues[], + const unsigned int nb_rx_queues, + struct rte_ring *const tx_queues[], + const unsigned int nb_tx_queues, const unsigned int numa_node, enum dev_action action, struct rte_eth_dev **eth_dev_p) { @@ -260,20 +265,20 @@ do_eth_dev_ring_create(const char *name, struct rte_eth_dev *eth_dev = NULL; void **rx_queues_local = NULL; void **tx_queues_local = NULL; - unsigned i; + unsigned int i; PMD_LOG(INFO, "Creating rings-backed ethdev on numa socket %u", numa_node); - rx_queues_local = rte_zmalloc_socket(name, - sizeof(void *) * nb_rx_queues, 0, numa_node); + rx_queues_local = rte_calloc_socket(name, nb_rx_queues, + sizeof(void *), 0, numa_node); if (rx_queues_local == NULL) { rte_errno = ENOMEM; goto error; } - tx_queues_local = rte_zmalloc_socket(name, - sizeof(void *) * nb_tx_queues, 0, numa_node); + tx_queues_local = rte_calloc_socket(name, nb_tx_queues, + sizeof(void *), 0, numa_node); if (tx_queues_local == NULL) { rte_errno = ENOMEM; goto error; @@ -344,10 +349,10 @@ error: int rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[], - const unsigned nb_rx_queues, + const unsigned int nb_rx_queues, struct rte_ring *const tx_queues[], - const unsigned nb_tx_queues, - const unsigned numa_node) + const unsigned int nb_tx_queues, + const unsigned int numa_node) { struct ring_internal_args args = { .rx_queues = rx_queues, @@ -357,8 +362,8 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[], .numa_node = numa_node, .addr = &args, }; - char args_str[32] = { 0 }; - char ring_name[32] = { 0 }; + char args_str[32]; + char ring_name[RTE_RING_NAMESIZE]; uint16_t port_id = RTE_MAX_ETHPORTS; int ret; @@ -376,8 +381,14 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[], return -1; } - snprintf(args_str, 32, "%s=%p", ETH_RING_INTERNAL_ARG, &args); - snprintf(ring_name, 32, "net_ring_%s", name); + snprintf(args_str, sizeof(args_str), "%s=%p", + ETH_RING_INTERNAL_ARG, &args); + + ret = snprintf(ring_name, sizeof(ring_name), "net_ring_%s", name); + if (ret >= (int)sizeof(ring_name)) { + rte_errno = ENAMETOOLONG; + return -1; + } ret = rte_vdev_init(ring_name, args_str); if (ret) { @@ -385,7 +396,11 @@ rte_eth_from_rings(const char *name, struct rte_ring *const rx_queues[], return -1; } - rte_eth_dev_get_port_by_name(ring_name, &port_id); + ret = rte_eth_dev_get_port_by_name(ring_name, &port_id); + if (ret) { + rte_errno = ENODEV; + return -1; + } return port_id; } @@ -398,20 +413,28 @@ rte_eth_from_ring(struct rte_ring *r) } static int -eth_dev_ring_create(const char *name, const unsigned numa_node, +eth_dev_ring_create(const char *name, const unsigned int numa_node, enum dev_action action, struct rte_eth_dev **eth_dev) { /* rx and tx are so-called from point of view of first port. * They are inverted from the point of view of second port */ struct rte_ring *rxtx[RTE_PMD_RING_MAX_RX_RINGS]; - unsigned i; + unsigned int i; char rng_name[RTE_RING_NAMESIZE]; - unsigned num_rings = RTE_MIN(RTE_PMD_RING_MAX_RX_RINGS, + unsigned int num_rings = RTE_MIN(RTE_PMD_RING_MAX_RX_RINGS, RTE_PMD_RING_MAX_TX_RINGS); for (i = 0; i < num_rings; i++) { - snprintf(rng_name, sizeof(rng_name), "ETH_RXTX%u_%s", i, name); + int cc; + + cc = snprintf(rng_name, sizeof(rng_name), + "ETH_RXTX%u_%s", i, name); + if (cc >= (int)sizeof(rng_name)) { + rte_errno = ENAMETOOLONG; + return -1; + } + rxtx[i] = (action == DEV_CREATE) ? rte_ring_create(rng_name, 1024, numa_node, RING_F_SP_ENQ|RING_F_SC_DEQ) : @@ -429,17 +452,18 @@ eth_dev_ring_create(const char *name, const unsigned numa_node, struct node_action_pair { char name[PATH_MAX]; - unsigned node; + unsigned int node; enum dev_action action; }; struct node_action_list { - unsigned total; - unsigned count; + unsigned int total; + unsigned int count; struct node_action_pair *list; }; -static int parse_kvlist (const char *key __rte_unused, const char *value, void *data) +static int parse_kvlist(const char *key __rte_unused, + const char *value, void *data) { struct node_action_list *info = data; int ret; @@ -552,8 +576,8 @@ rte_pmd_ring_probe(struct rte_vdev_device *dev) kvlist = rte_kvargs_parse(params, valid_arguments); if (!kvlist) { - PMD_LOG(INFO, "Ignoring unsupported parameters when creating" - " rings-backed ethernet device"); + PMD_LOG(INFO, + "Ignoring unsupported parameters when creatingrings-backed ethernet device"); ret = eth_dev_ring_create(name, rte_socket_id(), DEV_CREATE, ð_dev); if (ret == -1) { @@ -597,7 +621,7 @@ rte_pmd_ring_probe(struct rte_vdev_device *dev) goto out_free; info->total = ret; - info->list = (struct node_action_pair*)(info + 1); + info->list = (struct node_action_pair *)(info + 1); ret = rte_kvargs_process(kvlist, ETH_RING_NUMA_NODE_ACTION_ARG, parse_kvlist, info); diff --git a/dpdk/drivers/net/sfc/base/efx_tx.c b/dpdk/drivers/net/sfc/base/efx_tx.c index bf1180a1e..9fa9e2ed1 100644 --- a/dpdk/drivers/net/sfc/base/efx_tx.c +++ b/dpdk/drivers/net/sfc/base/efx_tx.c @@ -926,7 +926,8 @@ siena_tx_qcreate( EFX_STATIC_ASSERT(ISP2(EFX_TXQ_MINNDESCS)); if (!ISP2(ndescs) || - (ndescs < EFX_TXQ_MINNDESCS) || (ndescs > EFX_EVQ_MAXNEVS)) { + (ndescs < EFX_TXQ_MINNDESCS) || + (ndescs > encp->enc_txq_max_ndescs)) { rc = EINVAL; goto fail1; } diff --git a/dpdk/drivers/net/sfc/efsys.h b/dpdk/drivers/net/sfc/efsys.h index 0b4795da1..f7bcc74d9 100644 --- a/dpdk/drivers/net/sfc/efsys.h +++ b/dpdk/drivers/net/sfc/efsys.h @@ -84,7 +84,7 @@ typedef bool boolean_t; #define P2ALIGN(_x, _a) ((_x) & -(_a)) #endif -#ifndef IS2P +#ifndef ISP2 #define ISP2(x) rte_is_power_of_2(x) #endif diff --git a/dpdk/drivers/net/sfc/sfc.c b/dpdk/drivers/net/sfc/sfc.c index 6690053f2..0d7311d68 100644 --- a/dpdk/drivers/net/sfc/sfc.c +++ b/dpdk/drivers/net/sfc/sfc.c @@ -1071,8 +1071,8 @@ sfc_unprobe(struct sfc_adapter *sa) } uint32_t -sfc_register_logtype(struct sfc_adapter *sa, const char *lt_prefix_str, - uint32_t ll_default) +sfc_register_logtype(const struct rte_pci_addr *pci_addr, + const char *lt_prefix_str, uint32_t ll_default) { size_t lt_prefix_str_size = strlen(lt_prefix_str); size_t lt_str_size_max; @@ -1092,7 +1092,7 @@ sfc_register_logtype(struct sfc_adapter *sa, const char *lt_prefix_str, strncpy(lt_str, lt_prefix_str, lt_prefix_str_size); lt_str[lt_prefix_str_size - 1] = '.'; - rte_pci_device_name(&sa->pci_addr, lt_str + lt_prefix_str_size, + rte_pci_device_name(pci_addr, lt_str + lt_prefix_str_size, lt_str_size_max - lt_prefix_str_size); lt_str[lt_str_size_max - 1] = '\0'; diff --git a/dpdk/drivers/net/sfc/sfc.h b/dpdk/drivers/net/sfc/sfc.h index 51be44037..f1cb83002 100644 --- a/dpdk/drivers/net/sfc/sfc.h +++ b/dpdk/drivers/net/sfc/sfc.h @@ -149,6 +149,8 @@ struct sfc_port { uint64_t mac_stats_last_request_timestamp; uint32_t mac_stats_mask[EFX_MAC_STATS_MASK_NPAGES]; + + uint64_t ipackets; }; struct sfc_rss_hf_rte_to_efx { @@ -251,7 +253,7 @@ struct sfc_adapter { /* * Shared memory copy of the Tx datapath name to be used by - * the secondary process to find Rx datapath to be used. + * the secondary process to find Tx datapath to be used. */ char *dp_tx_name; const struct sfc_dp_tx *dp_tx; @@ -309,7 +311,7 @@ int sfc_dma_alloc(const struct sfc_adapter *sa, const char *name, uint16_t id, size_t len, int socket_id, efsys_mem_t *esmp); void sfc_dma_free(const struct sfc_adapter *sa, efsys_mem_t *esmp); -uint32_t sfc_register_logtype(struct sfc_adapter *sa, +uint32_t sfc_register_logtype(const struct rte_pci_addr *pci_addr, const char *lt_prefix_str, uint32_t ll_default); diff --git a/dpdk/drivers/net/sfc/sfc_debug.h b/dpdk/drivers/net/sfc/sfc_debug.h index 6b600ff4d..62f3937e8 100644 --- a/dpdk/drivers/net/sfc/sfc_debug.h +++ b/dpdk/drivers/net/sfc/sfc_debug.h @@ -27,7 +27,8 @@ do { \ const struct sfc_adapter *_sa = (sa); \ \ - rte_panic("sfc " PCI_PRI_FMT " #%" PRIu8 ": " fmt "\n", \ + rte_panic("sfc " PCI_PRI_FMT \ + " #%" PRIu16 ": " fmt "\n", \ _sa->pci_addr.domain, _sa->pci_addr.bus, \ _sa->pci_addr.devid, _sa->pci_addr.function, \ _sa->port_id, ##args); \ diff --git a/dpdk/drivers/net/sfc/sfc_ef10_tx.c b/dpdk/drivers/net/sfc/sfc_ef10_tx.c index bcd3153ff..cf229f8bb 100644 --- a/dpdk/drivers/net/sfc/sfc_ef10_tx.c +++ b/dpdk/drivers/net/sfc/sfc_ef10_tx.c @@ -340,9 +340,7 @@ sfc_ef10_xmit_tso_pkt(struct sfc_ef10_txq * const txq, struct rte_mbuf *m_seg, struct rte_mbuf *m_seg_to_free_up_to = first_m_seg; bool eop; - /* Both checks may be done, so use bit OR to have only one branching */ - if (unlikely((header_len > SFC_TSOH_STD_LEN) | - (tcph_off > txq->tso_tcp_header_offset_limit))) + if (unlikely(tcph_off > txq->tso_tcp_header_offset_limit)) return EMSGSIZE; /* @@ -381,6 +379,9 @@ sfc_ef10_xmit_tso_pkt(struct sfc_ef10_txq * const txq, struct rte_mbuf *m_seg, hdr_addr = rte_pktmbuf_mtod(m_seg, uint8_t *); hdr_iova = rte_mbuf_data_iova(m_seg); if (rte_pktmbuf_data_len(m_seg) == header_len) { + /* Cannot send a packet that consists only of header */ + if (unlikely(m_seg->next == NULL)) + return EMSGSIZE; /* * Associate header mbuf with header descriptor * which is located after TSO descriptors. @@ -404,11 +405,22 @@ sfc_ef10_xmit_tso_pkt(struct sfc_ef10_txq * const txq, struct rte_mbuf *m_seg, unsigned int hdr_addr_off = (*added & txq->ptr_mask) * SFC_TSOH_STD_LEN; + /* + * Discard a packet if header linearization is needed but + * the header is too big. + */ + if (unlikely(header_len > SFC_TSOH_STD_LEN)) + return EMSGSIZE; + hdr_addr = txq->tsoh + hdr_addr_off; hdr_iova = txq->tsoh_iova + hdr_addr_off; copied_segs = sfc_tso_prepare_header(hdr_addr, header_len, &m_seg, &in_off); + /* Cannot send a packet that consists only of header */ + if (unlikely(m_seg == NULL)) + return EMSGSIZE; + m_seg_to_free_up_to = m_seg; /* * Reduce the number of needed descriptors by the number of diff --git a/dpdk/drivers/net/sfc/sfc_ethdev.c b/dpdk/drivers/net/sfc/sfc_ethdev.c index 3886daf7a..052d38cdf 100644 --- a/dpdk/drivers/net/sfc/sfc_ethdev.c +++ b/dpdk/drivers/net/sfc/sfc_ethdev.c @@ -94,17 +94,17 @@ sfc_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) /* Autonegotiation may be disabled */ dev_info->speed_capa = ETH_LINK_SPEED_FIXED; - if (sa->port.phy_adv_cap_mask & EFX_PHY_CAP_1000FDX) + if (sa->port.phy_adv_cap_mask & (1u << EFX_PHY_CAP_1000FDX)) dev_info->speed_capa |= ETH_LINK_SPEED_1G; - if (sa->port.phy_adv_cap_mask & EFX_PHY_CAP_10000FDX) + if (sa->port.phy_adv_cap_mask & (1u << EFX_PHY_CAP_10000FDX)) dev_info->speed_capa |= ETH_LINK_SPEED_10G; - if (sa->port.phy_adv_cap_mask & EFX_PHY_CAP_25000FDX) + if (sa->port.phy_adv_cap_mask & (1u << EFX_PHY_CAP_25000FDX)) dev_info->speed_capa |= ETH_LINK_SPEED_25G; - if (sa->port.phy_adv_cap_mask & EFX_PHY_CAP_40000FDX) + if (sa->port.phy_adv_cap_mask & (1u << EFX_PHY_CAP_40000FDX)) dev_info->speed_capa |= ETH_LINK_SPEED_40G; - if (sa->port.phy_adv_cap_mask & EFX_PHY_CAP_50000FDX) + if (sa->port.phy_adv_cap_mask & (1u << EFX_PHY_CAP_50000FDX)) dev_info->speed_capa |= ETH_LINK_SPEED_50G; - if (sa->port.phy_adv_cap_mask & EFX_PHY_CAP_100000FDX) + if (sa->port.phy_adv_cap_mask & (1u << EFX_PHY_CAP_100000FDX)) dev_info->speed_capa |= ETH_LINK_SPEED_100G; dev_info->max_rx_queues = sa->rxq_max; @@ -503,6 +503,29 @@ sfc_tx_queue_release(void *queue) sfc_adapter_unlock(sa); } +/* + * Some statistics are computed as A - B where A and B each increase + * monotonically with some hardware counter(s) and the counters are read + * asynchronously. + * + * If packet X is counted in A, but not counted in B yet, computed value is + * greater than real. + * + * If packet X is not counted in A at the moment of reading the counter, + * but counted in B at the moment of reading the counter, computed value + * is less than real. + * + * However, counter which grows backward is worse evil than slightly wrong + * value. So, let's try to guarantee that it never happens except may be + * the case when the MAC stats are zeroed as a result of a NIC reset. + */ +static void +sfc_update_diff_stat(uint64_t *stat, uint64_t newval) +{ + if ((int64_t)(newval - *stat) > 0 || newval == 0) + *stat = newval; +} + static int sfc_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) { @@ -537,11 +560,9 @@ sfc_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) mac_stats[EFX_MAC_VADAPTER_TX_UNICAST_BYTES] + mac_stats[EFX_MAC_VADAPTER_TX_MULTICAST_BYTES] + mac_stats[EFX_MAC_VADAPTER_TX_BROADCAST_BYTES]; - stats->imissed = mac_stats[EFX_MAC_VADAPTER_RX_OVERFLOW]; - stats->ierrors = mac_stats[EFX_MAC_VADAPTER_RX_BAD_PACKETS]; + stats->imissed = mac_stats[EFX_MAC_VADAPTER_RX_BAD_PACKETS]; stats->oerrors = mac_stats[EFX_MAC_VADAPTER_TX_BAD_PACKETS]; } else { - stats->ipackets = mac_stats[EFX_MAC_RX_PKTS]; stats->opackets = mac_stats[EFX_MAC_TX_PKTS]; stats->ibytes = mac_stats[EFX_MAC_RX_OCTETS]; stats->obytes = mac_stats[EFX_MAC_TX_OCTETS]; @@ -567,6 +588,13 @@ sfc_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) mac_stats[EFX_MAC_RX_ALIGN_ERRORS] + mac_stats[EFX_MAC_RX_JABBER_PKTS]; /* no oerrors counters supported on EF10 */ + + /* Exclude missed, errors and pauses from Rx packets */ + sfc_update_diff_stat(&port->ipackets, + mac_stats[EFX_MAC_RX_PKTS] - + mac_stats[EFX_MAC_RX_PAUSE_PKTS] - + stats->imissed - stats->ierrors); + stats->ipackets = port->ipackets; } unlock: @@ -831,6 +859,33 @@ fail_inval: return -rc; } +static int +sfc_check_scatter_on_all_rx_queues(struct sfc_adapter *sa, size_t pdu) +{ + const efx_nic_cfg_t *encp = efx_nic_cfg_get(sa->nic); + boolean_t scatter_enabled; + const char *error; + unsigned int i; + + for (i = 0; i < sa->rxq_count; i++) { + if ((sa->rxq_info[i].rxq->state & SFC_RXQ_INITIALIZED) == 0) + continue; + + scatter_enabled = (sa->rxq_info[i].type_flags & + EFX_RXQ_FLAG_SCATTER); + + if (!sfc_rx_check_scatter(pdu, sa->rxq_info[i].rxq->buf_size, + encp->enc_rx_prefix_size, + scatter_enabled, &error)) { + sfc_err(sa, "MTU check for RxQ %u failed: %s", i, + error); + return EINVAL; + } + } + + return 0; +} + static int sfc_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu) { @@ -857,6 +912,10 @@ sfc_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu) sfc_adapter_lock(sa); + rc = sfc_check_scatter_on_all_rx_queues(sa, pdu); + if (rc != 0) + goto fail_check_scatter; + if (pdu != sa->port.pdu) { if (sa->state == SFC_ADAPTER_STARTED) { sfc_stop(sa); @@ -893,6 +952,8 @@ fail_start: sfc_err(sa, "cannot start with neither new (%u) nor old (%u) " "PDU max size - port is stopped", (unsigned int)pdu, (unsigned int)old_pdu); + +fail_check_scatter: sfc_adapter_unlock(sa); fail_inval: @@ -1096,8 +1157,6 @@ sfc_rx_queue_count(struct rte_eth_dev *dev, uint16_t rx_queue_id) { struct sfc_adapter *sa = dev->data->dev_private; - sfc_log_init(sa, "RxQ=%u", rx_queue_id); - return sfc_rx_qdesc_npending(sa, rx_queue_id); } @@ -1849,7 +1908,7 @@ static const struct eth_dev_ops sfc_eth_dev_secondary_ops = { }; static int -sfc_eth_dev_secondary_set_ops(struct rte_eth_dev *dev) +sfc_eth_dev_secondary_set_ops(struct rte_eth_dev *dev, uint32_t logtype_main) { /* * Device private data has really many process-local pointers. @@ -1863,25 +1922,29 @@ sfc_eth_dev_secondary_set_ops(struct rte_eth_dev *dev) dp_rx = sfc_dp_find_rx_by_name(&sfc_dp_head, sa->dp_rx_name); if (dp_rx == NULL) { - sfc_err(sa, "cannot find %s Rx datapath", sa->dp_tx_name); + SFC_LOG(sa, RTE_LOG_ERR, logtype_main, + "cannot find %s Rx datapath", sa->dp_rx_name); rc = ENOENT; goto fail_dp_rx; } if (~dp_rx->features & SFC_DP_RX_FEAT_MULTI_PROCESS) { - sfc_err(sa, "%s Rx datapath does not support multi-process", - sa->dp_tx_name); + SFC_LOG(sa, RTE_LOG_ERR, logtype_main, + "%s Rx datapath does not support multi-process", + sa->dp_rx_name); rc = EINVAL; goto fail_dp_rx_multi_process; } dp_tx = sfc_dp_find_tx_by_name(&sfc_dp_head, sa->dp_tx_name); if (dp_tx == NULL) { - sfc_err(sa, "cannot find %s Tx datapath", sa->dp_tx_name); + SFC_LOG(sa, RTE_LOG_ERR, logtype_main, + "cannot find %s Tx datapath", sa->dp_tx_name); rc = ENOENT; goto fail_dp_tx; } if (~dp_tx->features & SFC_DP_TX_FEAT_MULTI_PROCESS) { - sfc_err(sa, "%s Tx datapath does not support multi-process", + SFC_LOG(sa, RTE_LOG_ERR, logtype_main, + "%s Tx datapath does not support multi-process", sa->dp_tx_name); rc = EINVAL; goto fail_dp_tx_multi_process; @@ -1929,27 +1992,30 @@ sfc_eth_dev_init(struct rte_eth_dev *dev) { struct sfc_adapter *sa = dev->data->dev_private; struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(dev); + uint32_t logtype_main; int rc; const efx_nic_cfg_t *encp; const struct ether_addr *from; sfc_register_dp(); + logtype_main = sfc_register_logtype(&pci_dev->addr, + SFC_LOGTYPE_MAIN_STR, + RTE_LOG_NOTICE); + if (rte_eal_process_type() != RTE_PROC_PRIMARY) - return -sfc_eth_dev_secondary_set_ops(dev); + return -sfc_eth_dev_secondary_set_ops(dev, logtype_main); /* Required for logging */ sa->pci_addr = pci_dev->addr; sa->port_id = dev->data->port_id; + sa->logtype_main = logtype_main; sa->eth_dev = dev; /* Copy PCI device info to the dev->data */ rte_eth_copy_pci_info(dev, pci_dev); - sa->logtype_main = sfc_register_logtype(sa, SFC_LOGTYPE_MAIN_STR, - RTE_LOG_NOTICE); - rc = sfc_kvargs_parse(sa); if (rc != 0) goto fail_kvargs_parse; diff --git a/dpdk/drivers/net/sfc/sfc_log.h b/dpdk/drivers/net/sfc/sfc_log.h index d6f343524..b11fbfb0a 100644 --- a/dpdk/drivers/net/sfc/sfc_log.h +++ b/dpdk/drivers/net/sfc/sfc_log.h @@ -37,7 +37,8 @@ extern uint32_t sfc_logtype_driver; const struct sfc_adapter *__sa = (sa); \ \ rte_log(level, type, \ - RTE_FMT("PMD: sfc_efx " PCI_PRI_FMT " #%" PRIu8 \ + RTE_FMT("PMD: sfc_efx " \ + PCI_PRI_FMT " #%" PRIu16 \ ": " RTE_FMT_HEAD(__VA_ARGS__ ,) "\n", \ __sa->pci_addr.domain, \ __sa->pci_addr.bus, \ diff --git a/dpdk/drivers/net/sfc/sfc_mcdi.c b/dpdk/drivers/net/sfc/sfc_mcdi.c index 007506b4e..e485e07d6 100644 --- a/dpdk/drivers/net/sfc/sfc_mcdi.c +++ b/dpdk/drivers/net/sfc/sfc_mcdi.c @@ -256,7 +256,8 @@ sfc_mcdi_init(struct sfc_adapter *sa) if (rc != 0) goto fail_dma_alloc; - mcdi->logtype = sfc_register_logtype(sa, SFC_LOGTYPE_MCDI_STR, + mcdi->logtype = sfc_register_logtype(&sa->pci_addr, + SFC_LOGTYPE_MCDI_STR, RTE_LOG_NOTICE); emtp = &mcdi->transport; diff --git a/dpdk/drivers/net/sfc/sfc_port.c b/dpdk/drivers/net/sfc/sfc_port.c index 5384dbbdb..5eb4b3aca 100644 --- a/dpdk/drivers/net/sfc/sfc_port.c +++ b/dpdk/drivers/net/sfc/sfc_port.c @@ -87,6 +87,18 @@ sfc_port_update_mac_stats(struct sfc_adapter *sa) return 0; } +static void +sfc_port_reset_sw_stats(struct sfc_adapter *sa) +{ + struct sfc_port *port = &sa->port; + + /* + * Reset diff stats explicitly since check which does not allow + * the statistics to grow backward could deny it. + */ + port->ipackets = 0; +} + int sfc_port_reset_mac_stats(struct sfc_adapter *sa) { @@ -95,6 +107,8 @@ sfc_port_reset_mac_stats(struct sfc_adapter *sa) rte_spinlock_lock(&port->mac_stats_lock); rc = efx_mac_stats_clear(sa->nic); + if (rc == 0) + sfc_port_reset_sw_stats(sa); rte_spinlock_unlock(&port->mac_stats_lock); return rc; diff --git a/dpdk/drivers/net/sfc/sfc_rx.c b/dpdk/drivers/net/sfc/sfc_rx.c index c792e0b2e..a78d35a22 100644 --- a/dpdk/drivers/net/sfc/sfc_rx.c +++ b/dpdk/drivers/net/sfc/sfc_rx.c @@ -360,6 +360,18 @@ sfc_efx_rx_qdesc_status(struct sfc_dp_rxq *dp_rxq, uint16_t offset) return RTE_ETH_RX_DESC_UNAVAIL; } +boolean_t +sfc_rx_check_scatter(size_t pdu, size_t rx_buf_size, uint32_t rx_prefix_size, + boolean_t rx_scatter_enabled, const char **error) +{ + if ((rx_buf_size < pdu + rx_prefix_size) && !rx_scatter_enabled) { + *error = "Rx scatter is disabled and RxQ mbuf pool object size is too small"; + return B_FALSE; + } + + return B_TRUE; +} + struct sfc_rxq * sfc_rxq_by_dp_rxq(const struct sfc_dp_rxq *dp_rxq) { @@ -964,6 +976,7 @@ sfc_rx_qinit(struct sfc_adapter *sa, unsigned int sw_index, struct sfc_evq *evq; struct sfc_rxq *rxq; struct sfc_dp_rx_qcreate_info info; + const char *error; rc = sa->dp_rx->qsize_up_rings(nb_rx_desc, mb_pool, &rxq_entries, &evq_entries, &rxq_max_fill_level); @@ -987,10 +1000,11 @@ sfc_rx_qinit(struct sfc_adapter *sa, unsigned int sw_index, goto fail_bad_conf; } - if ((buf_size < sa->port.pdu + encp->enc_rx_prefix_size) && - (~offloads & DEV_RX_OFFLOAD_SCATTER)) { - sfc_err(sa, "Rx scatter is disabled and RxQ %u mbuf pool " - "object size is too small", sw_index); + if (!sfc_rx_check_scatter(sa->port.pdu, buf_size, + encp->enc_rx_prefix_size, + (offloads & DEV_RX_OFFLOAD_SCATTER), + &error)) { + sfc_err(sa, "RxQ %u MTU check failed: %s", sw_index, error); sfc_err(sa, "RxQ %u calculated Rx buffer size is %u vs " "PDU size %u plus Rx prefix %u bytes", sw_index, buf_size, (unsigned int)sa->port.pdu, diff --git a/dpdk/drivers/net/sfc/sfc_rx.h b/dpdk/drivers/net/sfc/sfc_rx.h index 3fba7d8ac..65724b035 100644 --- a/dpdk/drivers/net/sfc/sfc_rx.h +++ b/dpdk/drivers/net/sfc/sfc_rx.h @@ -159,6 +159,10 @@ int sfc_rx_hf_rte_to_efx(struct sfc_adapter *sa, uint64_t rte, efx_rx_hash_type_t *efx); uint64_t sfc_rx_hf_efx_to_rte(struct sfc_adapter *sa, efx_rx_hash_type_t efx); +boolean_t sfc_rx_check_scatter(size_t pdu, size_t rx_buf_size, + uint32_t rx_prefix_size, + boolean_t rx_scatter_enabled, + const char **error); #ifdef __cplusplus } diff --git a/dpdk/drivers/net/sfc/sfc_tso.c b/dpdk/drivers/net/sfc/sfc_tso.c index 076a25d44..a28af0e78 100644 --- a/dpdk/drivers/net/sfc/sfc_tso.c +++ b/dpdk/drivers/net/sfc/sfc_tso.c @@ -107,10 +107,6 @@ sfc_efx_tso_do(struct sfc_efx_txq *txq, unsigned int idx, idx += SFC_TSO_OPT_DESCS_NUM; - /* Packets which have too big headers should be discarded */ - if (unlikely(header_len > SFC_TSOH_STD_LEN)) - return EMSGSIZE; - /* * The TCP header must start at most 208 bytes into the frame. * If it starts later than this then the NIC won't realise @@ -129,6 +125,13 @@ sfc_efx_tso_do(struct sfc_efx_txq *txq, unsigned int idx, * limitations on address boundaries crossing by DMA descriptor data. */ if (m->data_len < header_len) { + /* + * Discard a packet if header linearization is needed but + * the header is too big. + */ + if (unlikely(header_len > SFC_TSOH_STD_LEN)) + return EMSGSIZE; + tsoh = txq->sw_ring[idx & txq->ptr_mask].tsoh; sfc_tso_prepare_header(tsoh, header_len, in_seg, in_off); diff --git a/dpdk/drivers/net/sfc/sfc_tso.h b/dpdk/drivers/net/sfc/sfc_tso.h index 3d2faf549..f89aef07c 100644 --- a/dpdk/drivers/net/sfc/sfc_tso.h +++ b/dpdk/drivers/net/sfc/sfc_tso.h @@ -7,6 +7,13 @@ * for Solarflare) and Solarflare Communications, Inc. */ +#ifndef _SFC_TSO_H +#define _SFC_TSO_H + +#ifdef __cplusplus +extern "C" { +#endif + /** Standard TSO header length */ #define SFC_TSOH_STD_LEN 256 @@ -21,3 +28,9 @@ unsigned int sfc_tso_prepare_header(uint8_t *tsoh, size_t header_len, struct rte_mbuf **in_seg, size_t *in_off); + +#ifdef __cplusplus +} +#endif + +#endif /* _SFC_TSO_H */ diff --git a/dpdk/drivers/net/sfc/sfc_tx.c b/dpdk/drivers/net/sfc/sfc_tx.c index 147f93365..242137e64 100644 --- a/dpdk/drivers/net/sfc/sfc_tx.c +++ b/dpdk/drivers/net/sfc/sfc_tx.c @@ -451,7 +451,7 @@ sfc_tx_qstart(struct sfc_adapter *sa, unsigned int sw_index) if (txq->offloads & DEV_TX_OFFLOAD_TCP_TSO) flags |= EFX_TXQ_FATSOV2; - rc = efx_tx_qcreate(sa->nic, sw_index, 0, &txq->mem, + rc = efx_tx_qcreate(sa->nic, txq->hw_index, 0, &txq->mem, txq_info->entries, 0 /* not used on EF10 */, flags, evq->common, &txq->common, &desc_index); @@ -712,6 +712,7 @@ sfc_efx_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) for (pkts_sent = 0, pktp = &tx_pkts[0]; (pkts_sent < nb_pkts) && (fill_level <= soft_max_fill); pkts_sent++, pktp++) { + uint16_t hw_vlan_tci_prev = txq->hw_vlan_tci; struct rte_mbuf *m_seg = *pktp; size_t pkt_len = m_seg->pkt_len; unsigned int pkt_descs = 0; @@ -736,7 +737,8 @@ sfc_efx_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) /* We may have reached this place for * one of the following reasons: * - * 1) Packet header length is greater + * 1) Packet header linearization is needed + * and the header length is greater * than SFC_TSOH_STD_LEN * 2) TCP header starts at more then * 208 bytes into the frame @@ -750,6 +752,7 @@ sfc_efx_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) * mbuf shouldn't be orphaned */ pend -= pkt_descs; + txq->hw_vlan_tci = hw_vlan_tci_prev; rte_pktmbuf_free(*pktp); @@ -819,10 +822,12 @@ sfc_efx_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) fill_level = added - txq->completed; if (fill_level > hard_max_fill) { pend -= pkt_descs; + txq->hw_vlan_tci = hw_vlan_tci_prev; break; } } else { pend -= pkt_descs; + txq->hw_vlan_tci = hw_vlan_tci_prev; break; } } diff --git a/dpdk/drivers/net/softnic/rte_eth_softnic_flow.c b/dpdk/drivers/net/softnic/rte_eth_softnic_flow.c index 21e753001..aefc384dc 100644 --- a/dpdk/drivers/net/softnic/rte_eth_softnic_flow.c +++ b/dpdk/drivers/net/softnic/rte_eth_softnic_flow.c @@ -1283,7 +1283,8 @@ flow_rule_action_get(struct pmd_internals *softnic, action, "QUEUE: Invalid RX queue ID"); - sprintf(name, "RXQ%u", (uint32_t)conf->index); + snprintf(name, sizeof(name), "RXQ%u", + (uint32_t)conf->index); status = softnic_pipeline_port_out_find(softnic, pipeline->name, @@ -1373,7 +1374,7 @@ flow_rule_action_get(struct pmd_internals *softnic, action, "RSS: Invalid RX queue ID"); - sprintf(name, "RXQ%u", + snprintf(name, sizeof(name), "RXQ%u", (uint32_t)conf->queue[i]); status = softnic_pipeline_port_out_find(softnic, diff --git a/dpdk/drivers/net/tap/rte_eth_tap.c b/dpdk/drivers/net/tap/rte_eth_tap.c index 49afd38dd..867873683 100644 --- a/dpdk/drivers/net/tap/rte_eth_tap.c +++ b/dpdk/drivers/net/tap/rte_eth_tap.c @@ -67,6 +67,8 @@ /* IPC key for queue fds sync */ #define TAP_MP_KEY "tap_mp_sync_queues" +#define TAP_IOV_DEFAULT_MAX 1024 + static int tap_devices_count; static struct rte_vdev_driver pmd_tap_drv; static struct rte_vdev_driver pmd_tun_drv; @@ -78,9 +80,6 @@ static const char *valid_arguments[] = { NULL }; -static unsigned int tap_unit; -static unsigned int tun_unit; - static char tuntap_name[8]; static volatile uint32_t tap_trigger; /* Rx trigger */ @@ -150,8 +149,6 @@ tun_alloc(struct pmd_internals *pmd, int is_keepalive) IFF_TAP : IFF_TUN | IFF_POINTOPOINT; snprintf(ifr.ifr_name, IFNAMSIZ, "%s", pmd->name); - TAP_LOG(DEBUG, "ifr_name '%s'", ifr.ifr_name); - fd = open(TUN_TAP_DEV_PATH, O_RDWR); if (fd < 0) { TAP_LOG(ERR, "Unable to create %s interface", tuntap_name); @@ -185,6 +182,13 @@ tun_alloc(struct pmd_internals *pmd, int is_keepalive) goto error; } + /* + * Name passed to kernel might be wildcard like dtun%d + * and need to find the resulting device. + */ + TAP_LOG(DEBUG, "Device name is '%s'", ifr.ifr_name); + strlcpy(pmd->name, ifr.ifr_name, RTE_ETH_NAME_MAX_LEN); + if (is_keepalive) { /* * Detach the TUN/TAP keep-alive queue @@ -281,13 +285,27 @@ tap_verify_csum(struct rte_mbuf *mbuf) l3_len = 4 * (iph->version_ihl & 0xf); if (unlikely(l2_len + l3_len > rte_pktmbuf_data_len(mbuf))) return; + /* check that the total length reported by header is not + * greater than the total received size + */ + if (l2_len + rte_be_to_cpu_16(iph->total_length) > + rte_pktmbuf_data_len(mbuf)) + return; cksum = ~rte_raw_cksum(iph, l3_len); mbuf->ol_flags |= cksum ? PKT_RX_IP_CKSUM_BAD : PKT_RX_IP_CKSUM_GOOD; } else if (l3 == RTE_PTYPE_L3_IPV6) { + struct ipv6_hdr *iph = l3_hdr; + l3_len = sizeof(struct ipv6_hdr); + /* check that the total length reported by header is not + * greater than the total received size + */ + if (l2_len + l3_len + rte_be_to_cpu_16(iph->payload_len) > + rte_pktmbuf_data_len(mbuf)) + return; } else { /* IPv6 extensions are not supported */ return; @@ -1310,6 +1328,13 @@ tap_rx_queue_setup(struct rte_eth_dev *dev, struct rx_queue *rxq = &internals->rxq[rx_queue_id]; struct rte_mbuf **tmp = &rxq->pool; long iov_max = sysconf(_SC_IOV_MAX); + + if (iov_max <= 0) { + TAP_LOG(WARNING, + "_SC_IOV_MAX is not defined. Using %d as default", + TAP_IOV_DEFAULT_MAX); + iov_max = TAP_IOV_DEFAULT_MAX; + } uint16_t nb_desc = RTE_MIN(nb_rx_desc, iov_max - 1); struct iovec (*iovecs)[nb_desc + 1]; int data_off = RTE_PKTMBUF_HEADROOM; @@ -1741,6 +1766,7 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name, TAP_LOG(ERR, "Unable to create %s interface", tuntap_name); goto error_exit; } + TAP_LOG(DEBUG, "allocated %s", pmd->name); ifr.ifr_mtu = dev->data->mtu; if (tap_ioctl(pmd, SIOCSIFMTU, &ifr, 1, LOCAL_AND_REMOTE) < 0) @@ -1878,10 +1904,10 @@ set_interface_name(const char *key __rte_unused, char *name = (char *)extra_args; if (value) - strlcpy(name, value, RTE_ETH_NAME_MAX_LEN - 1); + strlcpy(name, value, RTE_ETH_NAME_MAX_LEN); else - snprintf(name, RTE_ETH_NAME_MAX_LEN - 1, "%s%d", - DEFAULT_TAP_NAME, (tap_unit - 1)); + /* use tap%d which causes kernel to choose next available */ + strlcpy(name, DEFAULT_TAP_NAME "%d", RTE_ETH_NAME_MAX_LEN); return 0; } @@ -1988,8 +2014,8 @@ rte_pmd_tun_probe(struct rte_vdev_device *dev) return 0; } - snprintf(tun_name, sizeof(tun_name), "%s%u", - DEFAULT_TUN_NAME, tun_unit++); + /* use tun%d which causes kernel to choose next available */ + strlcpy(tun_name, DEFAULT_TUN_NAME "%d", RTE_ETH_NAME_MAX_LEN); if (params && (params[0] != '\0')) { TAP_LOG(DEBUG, "parameters (%s)", params); @@ -2009,17 +2035,15 @@ rte_pmd_tun_probe(struct rte_vdev_device *dev) } pmd_link.link_speed = ETH_SPEED_NUM_10G; - TAP_LOG(NOTICE, "Initializing pmd_tun for %s as %s", - name, tun_name); + TAP_LOG(NOTICE, "Initializing pmd_tun for %s", name); ret = eth_dev_tap_create(dev, tun_name, remote_iface, 0, - ETH_TUNTAP_TYPE_TUN); + ETH_TUNTAP_TYPE_TUN); leave: if (ret == -1) { TAP_LOG(ERR, "Failed to create pmd for %s as %s", name, tun_name); - tun_unit--; /* Restore the unit number */ } rte_kvargs_free(kvlist); @@ -2040,13 +2064,14 @@ tap_mp_attach_queues(const char *port_name, struct rte_eth_dev *dev) int queue, fd_iterator; /* Prepare the request */ + memset(&request, 0, sizeof(request)); strlcpy(request.name, TAP_MP_KEY, sizeof(request.name)); strlcpy(request_param->port_name, port_name, sizeof(request_param->port_name)); request.len_param = sizeof(*request_param); /* Send request and receive reply */ ret = rte_mp_request_sync(&request, &replies, &timeout); - if (ret < 0) { + if (ret < 0 || replies.nb_received != 1) { TAP_LOG(ERR, "Failed to request queues from primary: %d", rte_errno); return -1; @@ -2056,6 +2081,11 @@ tap_mp_attach_queues(const char *port_name, struct rte_eth_dev *dev) TAP_LOG(DEBUG, "Received IPC reply for %s", reply_param->port_name); /* Attach the queues from received file descriptors */ + if (reply_param->rxq_count + reply_param->txq_count != reply->num_fds) { + TAP_LOG(ERR, "Unexpected number of fds received"); + return -1; + } + dev->data->nb_rx_queues = reply_param->rxq_count; dev->data->nb_tx_queues = reply_param->txq_count; fd_iterator = 0; @@ -2063,7 +2093,7 @@ tap_mp_attach_queues(const char *port_name, struct rte_eth_dev *dev) process_private->rxq_fds[queue] = reply->fds[fd_iterator++]; for (queue = 0; queue < reply_param->txq_count; queue++) process_private->txq_fds[queue] = reply->fds[fd_iterator++]; - + free(reply); return 0; } @@ -2096,19 +2126,24 @@ tap_mp_sync_queues(const struct rte_mp_msg *request, const void *peer) /* Fill file descriptors for all queues */ reply.num_fds = 0; reply_param->rxq_count = 0; + if (dev->data->nb_rx_queues + dev->data->nb_tx_queues > + RTE_MP_MAX_FD_NUM){ + TAP_LOG(ERR, "Number of rx/tx queues exceeds max number of fds"); + return -1; + } + for (queue = 0; queue < dev->data->nb_rx_queues; queue++) { reply.fds[reply.num_fds++] = process_private->rxq_fds[queue]; reply_param->rxq_count++; } RTE_ASSERT(reply_param->rxq_count == dev->data->nb_rx_queues); - RTE_ASSERT(reply_param->txq_count == dev->data->nb_tx_queues); - RTE_ASSERT(reply.num_fds <= RTE_MP_MAX_FD_NUM); reply_param->txq_count = 0; for (queue = 0; queue < dev->data->nb_tx_queues; queue++) { reply.fds[reply.num_fds++] = process_private->txq_fds[queue]; reply_param->txq_count++; } + RTE_ASSERT(reply_param->txq_count == dev->data->nb_tx_queues); /* Send reply */ strlcpy(reply.name, request->name, sizeof(reply.name)); @@ -2175,8 +2210,9 @@ rte_pmd_tap_probe(struct rte_vdev_device *dev) } speed = ETH_SPEED_NUM_10G; - snprintf(tap_name, sizeof(tap_name), "%s%u", - DEFAULT_TAP_NAME, tap_unit++); + + /* use tap%d which causes kernel to choose next available */ + strlcpy(tap_name, DEFAULT_TAP_NAME "%d", RTE_ETH_NAME_MAX_LEN); memset(remote_iface, 0, RTE_ETH_NAME_MAX_LEN); if (params && (params[0] != '\0')) { @@ -2240,7 +2276,6 @@ leave: rte_mp_action_unregister(TAP_MP_KEY); tap_devices_count--; } - tap_unit--; /* Restore the unit number */ } rte_kvargs_free(kvlist); diff --git a/dpdk/drivers/net/tap/tap_bpf_program.c b/dpdk/drivers/net/tap/tap_bpf_program.c index 1cb73822f..532e8838f 100644 --- a/dpdk/drivers/net/tap/tap_bpf_program.c +++ b/dpdk/drivers/net/tap/tap_bpf_program.c @@ -106,7 +106,7 @@ rte_softrss_be(const __u32 *input_tuple, const uint8_t *rss_key, for (j = 0; j < input_len; j++) { #pragma unroll for (i = 0; i < 32; i++) { - if (input_tuple[j] & (1 << (31 - i))) { + if (input_tuple[j] & (1U << (31 - i))) { hash ^= ((const __u32 *)def_rss_key)[j] << i | (__u32)((uint64_t) (((const __u32 *)def_rss_key)[j + 1]) diff --git a/dpdk/drivers/net/tap/tap_tcmsgs.c b/dpdk/drivers/net/tap/tap_tcmsgs.c index 3c9d03667..b478b5951 100644 --- a/dpdk/drivers/net/tap/tap_tcmsgs.c +++ b/dpdk/drivers/net/tap/tap_tcmsgs.c @@ -116,7 +116,7 @@ error: int qdisc_add_multiq(int nlsk_fd, uint16_t ifindex) { - struct tc_multiq_qopt opt; + struct tc_multiq_qopt opt = {0}; struct nlmsg msg; tc_init_msg(&msg, ifindex, RTM_NEWQDISC, diff --git a/dpdk/drivers/net/vdev_netvsc/vdev_netvsc.c b/dpdk/drivers/net/vdev_netvsc/vdev_netvsc.c index 16303ef5e..a5fd64e0c 100644 --- a/dpdk/drivers/net/vdev_netvsc/vdev_netvsc.c +++ b/dpdk/drivers/net/vdev_netvsc/vdev_netvsc.c @@ -811,7 +811,7 @@ vdev_netvsc_cmp_rte_device(const struct rte_device *dev1, static void vdev_netvsc_scan_callback(__rte_unused void *arg) { - struct rte_vdev_device *dev; + struct rte_device *dev; struct rte_devargs *devargs; struct rte_bus *vbus = rte_bus_find_by_name("vdev"); @@ -819,8 +819,9 @@ vdev_netvsc_scan_callback(__rte_unused void *arg) if (!strncmp(devargs->name, VDEV_NETVSC_DRIVER_NAME, VDEV_NETVSC_DRIVER_NAME_LEN)) return; - dev = (struct rte_vdev_device *)vbus->find_device(NULL, - vdev_netvsc_cmp_rte_device, VDEV_NETVSC_DRIVER_NAME); + + dev = vbus->find_device(NULL, vdev_netvsc_cmp_rte_device, + VDEV_NETVSC_DRIVER_NAME); if (dev) return; if (rte_devargs_add(RTE_DEVTYPE_VIRTUAL, VDEV_NETVSC_DRIVER_NAME)) diff --git a/dpdk/drivers/net/vhost/rte_eth_vhost.c b/dpdk/drivers/net/vhost/rte_eth_vhost.c index 42bdfcbd5..b2cda0483 100644 --- a/dpdk/drivers/net/vhost/rte_eth_vhost.c +++ b/dpdk/drivers/net/vhost/rte_eth_vhost.c @@ -1000,7 +1000,6 @@ eth_dev_close(struct rte_eth_dev *dev) for (i = 0; i < dev->data->nb_tx_queues; i++) rte_free(dev->data->tx_queues[i]); - rte_free(dev->data->mac_addrs); free(internal->dev_name); free(internal->iface_name); rte_free(internal); diff --git a/dpdk/drivers/net/virtio/virtio_ethdev.c b/dpdk/drivers/net/virtio/virtio_ethdev.c index 2ba66d291..f938b7cef 100644 --- a/dpdk/drivers/net/virtio/virtio_ethdev.c +++ b/dpdk/drivers/net/virtio/virtio_ethdev.c @@ -71,7 +71,6 @@ static void virtio_mac_addr_remove(struct rte_eth_dev *dev, uint32_t index); static int virtio_mac_addr_set(struct rte_eth_dev *dev, struct ether_addr *mac_addr); -static int virtio_intr_enable(struct rte_eth_dev *dev); static int virtio_intr_disable(struct rte_eth_dev *dev); static int virtio_dev_queue_stats_mapping_set( @@ -729,6 +728,7 @@ virtio_dev_rx_queue_intr_enable(struct rte_eth_dev *dev, uint16_t queue_id) struct virtqueue *vq = rxvq->vq; virtqueue_enable_intr(vq); + virtio_mb(); return 0; } @@ -778,6 +778,21 @@ static const struct eth_dev_ops virtio_eth_dev_ops = { .mac_addr_set = virtio_mac_addr_set, }; +/* + * dev_ops for virtio-user in secondary processes, as we just have + * some limited supports currently. + */ +const struct eth_dev_ops virtio_user_secondary_eth_dev_ops = { + .dev_infos_get = virtio_dev_info_get, + .stats_get = virtio_dev_stats_get, + .xstats_get = virtio_dev_xstats_get, + .xstats_get_names = virtio_dev_xstats_get_names, + .stats_reset = virtio_dev_stats_reset, + .xstats_reset = virtio_dev_stats_reset, + /* collect stats per queue */ + .queue_stats_mapping_set = virtio_dev_queue_stats_mapping_set, +}; + static void virtio_update_stats(struct rte_eth_dev *dev, struct rte_eth_stats *stats) { @@ -1693,6 +1708,7 @@ eth_virtio_dev_init(struct rte_eth_dev *eth_dev) out: rte_free(eth_dev->data->mac_addrs); + eth_dev->data->mac_addrs = NULL; return ret; } @@ -1820,6 +1836,8 @@ virtio_dev_configure(struct rte_eth_dev *dev) const struct rte_eth_rxmode *rxmode = &dev->data->dev_conf.rxmode; const struct rte_eth_txmode *txmode = &dev->data->dev_conf.txmode; struct virtio_hw *hw = dev->data->dev_private; + uint32_t ether_hdr_len = ETHER_HDR_LEN + VLAN_TAG_LEN + + hw->vtnet_hdr_size; uint64_t rx_offloads = rxmode->offloads; uint64_t tx_offloads = txmode->offloads; uint64_t req_features; @@ -1834,6 +1852,9 @@ virtio_dev_configure(struct rte_eth_dev *dev) return ret; } + if (rxmode->max_rx_pkt_len > hw->max_mtu + ether_hdr_len) + req_features &= ~(1ULL << VIRTIO_NET_F_MTU); + if (rx_offloads & (DEV_RX_OFFLOAD_UDP_CKSUM | DEV_RX_OFFLOAD_TCP_CKSUM)) req_features |= (1ULL << VIRTIO_NET_F_GUEST_CSUM); @@ -2185,6 +2206,7 @@ virtio_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info) host_features = VTPCI_OPS(hw)->get_features(hw); dev_info->rx_offload_capa = DEV_RX_OFFLOAD_VLAN_STRIP; + dev_info->rx_offload_capa |= DEV_RX_OFFLOAD_JUMBO_FRAME; if (host_features & (1ULL << VIRTIO_NET_F_GUEST_CSUM)) { dev_info->rx_offload_capa |= DEV_RX_OFFLOAD_TCP_CKSUM | diff --git a/dpdk/drivers/net/virtio/virtio_ethdev.h b/dpdk/drivers/net/virtio/virtio_ethdev.h index e0f80e5a4..39a9f7b7d 100644 --- a/dpdk/drivers/net/virtio/virtio_ethdev.h +++ b/dpdk/drivers/net/virtio/virtio_ethdev.h @@ -45,6 +45,8 @@ 1u << VIRTIO_NET_F_HOST_TSO4 | \ 1u << VIRTIO_NET_F_HOST_TSO6) +extern const struct eth_dev_ops virtio_user_secondary_eth_dev_ops; + /* * CQ function prototype */ diff --git a/dpdk/drivers/net/virtio/virtio_rxtx.c b/dpdk/drivers/net/virtio/virtio_rxtx.c index eb891433e..7f7562ddc 100644 --- a/dpdk/drivers/net/virtio/virtio_rxtx.c +++ b/dpdk/drivers/net/virtio/virtio_rxtx.c @@ -192,7 +192,7 @@ virtio_xmit_cleanup(struct virtqueue *vq, uint16_t num) static void virtio_xmit_cleanup_inorder(struct virtqueue *vq, uint16_t num) { - uint16_t i, used_idx, desc_idx = 0, last_idx; + uint16_t i, idx = vq->vq_used_cons_idx; int16_t free_cnt = 0; struct vq_desc_extra *dxp = NULL; @@ -200,27 +200,16 @@ virtio_xmit_cleanup_inorder(struct virtqueue *vq, uint16_t num) return; for (i = 0; i < num; i++) { - struct vring_used_elem *uep; - - used_idx = vq->vq_used_cons_idx & (vq->vq_nentries - 1); - uep = &vq->vq_ring.used->ring[used_idx]; - desc_idx = (uint16_t)uep->id; - - dxp = &vq->vq_descx[desc_idx]; - vq->vq_used_cons_idx++; - + dxp = &vq->vq_descx[idx++ & (vq->vq_nentries - 1)]; + free_cnt += dxp->ndescs; if (dxp->cookie != NULL) { rte_pktmbuf_free(dxp->cookie); dxp->cookie = NULL; } } - last_idx = desc_idx + dxp->ndescs - 1; - free_cnt = last_idx - vq->vq_desc_tail_idx; - if (free_cnt <= 0) - free_cnt += vq->vq_nentries; - - vq_ring_free_inorder(vq, last_idx, free_cnt); + vq->vq_free_cnt += free_cnt; + vq->vq_used_cons_idx = idx; } static inline int @@ -421,7 +410,7 @@ virtqueue_enqueue_xmit_inorder(struct virtnet_tx *txvq, while (i < num) { idx = idx & (vq->vq_nentries - 1); - dxp = &vq->vq_descx[idx]; + dxp = &vq->vq_descx[vq->vq_avail_idx & (vq->vq_nentries - 1)]; dxp->cookie = (void *)cookies[i]; dxp->ndescs = 1; @@ -472,7 +461,10 @@ virtqueue_enqueue_xmit(struct virtnet_tx *txvq, struct rte_mbuf *cookie, head_idx = vq->vq_desc_head_idx; idx = head_idx; - dxp = &vq->vq_descx[idx]; + if (in_order) + dxp = &vq->vq_descx[vq->vq_avail_idx & (vq->vq_nentries - 1)]; + else + dxp = &vq->vq_descx[idx]; dxp->cookie = (void *)cookie; dxp->ndescs = needed; @@ -788,7 +780,7 @@ virtio_update_packet_stats(struct virtnet_stats *stats, struct rte_mbuf *mbuf) stats->size_bins[0]++; else if (s < 1519) stats->size_bins[6]++; - else if (s >= 1519) + else stats->size_bins[7]++; } @@ -1107,6 +1099,7 @@ virtio_recv_mergeable_pkts_inorder(void *rx_queue, prev = rcv_pkts[nb_rx]; if (likely(VIRTQUEUE_NUSED(vq) >= rcv_cnt)) { + virtio_rmb(); num = virtqueue_dequeue_rx_inorder(vq, rcv_pkts, len, rcv_cnt); uint16_t extra_idx = 0; @@ -1271,6 +1264,7 @@ virtio_recv_mergeable_pkts(void *rx_queue, uint16_t rcv_cnt = RTE_MIN(seg_res, RTE_DIM(rcv_pkts)); if (likely(VIRTQUEUE_NUSED(vq) >= rcv_cnt)) { + virtio_rmb(); uint32_t rx_num = virtqueue_dequeue_burst_rx(vq, rcv_pkts, len, rcv_cnt); @@ -1380,6 +1374,8 @@ virtio_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) rte_pktmbuf_free(txm); continue; } + /* vlan_insert may add a header mbuf */ + tx_pkts[nb_tx] = txm; } /* optimize ring usage */ @@ -1484,6 +1480,8 @@ virtio_xmit_pkts_inorder(void *tx_queue, rte_pktmbuf_free(txm); continue; } + /* vlan_insert may add a header mbuf */ + tx_pkts[nb_tx] = txm; } /* optimize ring usage */ diff --git a/dpdk/drivers/net/virtio/virtio_user/vhost.h b/dpdk/drivers/net/virtio/virtio_user/vhost.h index 83a85cc6f..55f47036b 100644 --- a/dpdk/drivers/net/virtio/virtio_user/vhost.h +++ b/dpdk/drivers/net/virtio/virtio_user/vhost.h @@ -2,8 +2,8 @@ * Copyright(c) 2010-2016 Intel Corporation */ -#ifndef _VHOST_NET_USER_H -#define _VHOST_NET_USER_H +#ifndef _VIRTIO_USER_VHOST_H +#define _VIRTIO_USER_VHOST_H #include #include diff --git a/dpdk/drivers/net/virtio/virtio_user/vhost_kernel_tap.c b/dpdk/drivers/net/virtio/virtio_user/vhost_kernel_tap.c index a3faf1d0c..fbd9e979d 100644 --- a/dpdk/drivers/net/virtio/virtio_user/vhost_kernel_tap.c +++ b/dpdk/drivers/net/virtio/virtio_user/vhost_kernel_tap.c @@ -62,6 +62,7 @@ vhost_kernel_open_tap(char **p_ifname, int hdr_size, int req_mq, const char *mac, uint64_t features) { unsigned int tap_features; + char *tap_name = NULL; int sndbuf = INT_MAX; struct ifreq ifr; int tapfd; @@ -112,6 +113,12 @@ vhost_kernel_open_tap(char **p_ifname, int hdr_size, int req_mq, goto error; } + tap_name = strdup(ifr.ifr_name); + if (!tap_name) { + PMD_DRV_LOG(ERR, "strdup ifname failed: %s", strerror(errno)); + goto error; + } + fcntl(tapfd, F_SETFL, O_NONBLOCK); if (ioctl(tapfd, TUNSETVNETHDRSZ, &hdr_size) < 0) { @@ -134,11 +141,12 @@ vhost_kernel_open_tap(char **p_ifname, int hdr_size, int req_mq, goto error; } - if (!(*p_ifname)) - *p_ifname = strdup(ifr.ifr_name); + free(*p_ifname); + *p_ifname = tap_name; return tapfd; error: + free(tap_name); close(tapfd); return -1; } diff --git a/dpdk/drivers/net/virtio/virtio_user/vhost_user.c b/dpdk/drivers/net/virtio/virtio_user/vhost_user.c index 2c6eba0a6..0a88d5957 100644 --- a/dpdk/drivers/net/virtio/virtio_user/vhost_user.c +++ b/dpdk/drivers/net/virtio/virtio_user/vhost_user.c @@ -393,7 +393,10 @@ virtio_user_start_server(struct virtio_user_dev *dev, struct sockaddr_un *un) return -1; flag = fcntl(fd, F_GETFL); - fcntl(fd, F_SETFL, flag | O_NONBLOCK); + if (fcntl(fd, F_SETFL, flag | O_NONBLOCK) < 0) { + PMD_DRV_LOG(ERR, "fcntl failed, %s", strerror(errno)); + return -1; + } return 0; } diff --git a/dpdk/drivers/net/virtio/virtio_user/virtio_user_dev.c b/dpdk/drivers/net/virtio/virtio_user/virtio_user_dev.c index 20816c936..f0051f887 100644 --- a/dpdk/drivers/net/virtio/virtio_user/virtio_user_dev.c +++ b/dpdk/drivers/net/virtio/virtio_user/virtio_user_dev.c @@ -412,7 +412,7 @@ virtio_user_dev_setup(struct virtio_user_dev *dev) int virtio_user_dev_init(struct virtio_user_dev *dev, char *path, int queues, int cq, int queue_size, const char *mac, char **ifname, - int mrg_rxbuf, int in_order) + int server, int mrg_rxbuf, int in_order) { pthread_mutex_init(&dev->mutex, NULL); snprintf(dev->path, PATH_MAX, "%s", path); @@ -420,6 +420,7 @@ virtio_user_dev_init(struct virtio_user_dev *dev, char *path, int queues, dev->max_queue_pairs = queues; dev->queue_pairs = 1; /* mq disabled by default */ dev->queue_size = queue_size; + dev->is_server = server; dev->mac_specified = 0; dev->frontend_features = 0; dev->unsupported_features = ~VIRTIO_USER_SUPPORTED_FEATURES; @@ -624,7 +625,7 @@ virtio_user_handle_cq(struct virtio_user_dev *dev, uint16_t queue_idx) /* Update used ring */ uep = &vring->used->ring[avail_idx]; - uep->id = avail_idx; + uep->id = desc_idx; uep->len = n_descs; vring->used->idx++; diff --git a/dpdk/drivers/net/virtio/virtio_user/virtio_user_dev.h b/dpdk/drivers/net/virtio/virtio_user/virtio_user_dev.h index c42ce5d4b..3e3a7b787 100644 --- a/dpdk/drivers/net/virtio/virtio_user/virtio_user_dev.h +++ b/dpdk/drivers/net/virtio/virtio_user/virtio_user_dev.h @@ -50,7 +50,7 @@ int virtio_user_start_device(struct virtio_user_dev *dev); int virtio_user_stop_device(struct virtio_user_dev *dev); int virtio_user_dev_init(struct virtio_user_dev *dev, char *path, int queues, int cq, int queue_size, const char *mac, char **ifname, - int mrg_rxbuf, int in_order); + int server, int mrg_rxbuf, int in_order); void virtio_user_dev_uninit(struct virtio_user_dev *dev); void virtio_user_handle_cq(struct virtio_user_dev *dev, uint16_t queue_idx); uint8_t virtio_user_handle_mq(struct virtio_user_dev *dev, uint16_t q_pairs); diff --git a/dpdk/drivers/net/virtio/virtio_user_ethdev.c b/dpdk/drivers/net/virtio/virtio_user_ethdev.c index f8791391a..5781c0948 100644 --- a/dpdk/drivers/net/virtio/virtio_user_ethdev.c +++ b/dpdk/drivers/net/virtio/virtio_user_ethdev.c @@ -469,6 +469,26 @@ virtio_user_pmd_probe(struct rte_vdev_device *dev) char *mac_addr = NULL; int ret = -1; + if (rte_eal_process_type() == RTE_PROC_SECONDARY) { + const char *name = rte_vdev_device_name(dev); + eth_dev = rte_eth_dev_attach_secondary(name); + if (!eth_dev) { + RTE_LOG(ERR, PMD, "Failed to probe %s\n", name); + return -1; + } + + if (eth_virtio_dev_init(eth_dev) < 0) { + PMD_INIT_LOG(ERR, "eth_virtio_dev_init fails"); + rte_eth_dev_release_port(eth_dev); + return -1; + } + + eth_dev->dev_ops = &virtio_user_secondary_eth_dev_ops; + eth_dev->device = &dev->device; + rte_eth_dev_probing_finish(eth_dev); + return 0; + } + kvlist = rte_kvargs_parse(rte_vdev_device_args(dev), valid_args); if (!kvlist) { PMD_INIT_LOG(ERR, "error when parsing param"); @@ -581,33 +601,19 @@ virtio_user_pmd_probe(struct rte_vdev_device *dev) } } - if (rte_eal_process_type() == RTE_PROC_PRIMARY) { - struct virtio_user_dev *vu_dev; + eth_dev = virtio_user_eth_dev_alloc(dev); + if (!eth_dev) { + PMD_INIT_LOG(ERR, "virtio_user fails to alloc device"); + goto end; + } - eth_dev = virtio_user_eth_dev_alloc(dev); - if (!eth_dev) { - PMD_INIT_LOG(ERR, "virtio_user fails to alloc device"); - goto end; - } - - hw = eth_dev->data->dev_private; - vu_dev = virtio_user_get_dev(hw); - if (server_mode == 1) - vu_dev->is_server = true; - else - vu_dev->is_server = false; - if (virtio_user_dev_init(hw->virtio_user_dev, path, queues, cq, - queue_size, mac_addr, &ifname, mrg_rxbuf, - in_order) < 0) { - PMD_INIT_LOG(ERR, "virtio_user_dev_init fails"); - virtio_user_eth_dev_free(eth_dev); - goto end; - } - - } else { - eth_dev = rte_eth_dev_attach_secondary(rte_vdev_device_name(dev)); - if (!eth_dev) - goto end; + hw = eth_dev->data->dev_private; + if (virtio_user_dev_init(hw->virtio_user_dev, path, queues, cq, + queue_size, mac_addr, &ifname, server_mode, + mrg_rxbuf, in_order) < 0) { + PMD_INIT_LOG(ERR, "virtio_user_dev_init fails"); + virtio_user_eth_dev_free(eth_dev); + goto end; } /* previously called by rte_pci_probe() for physical dev */ @@ -649,6 +655,9 @@ virtio_user_pmd_remove(struct rte_vdev_device *vdev) if (!eth_dev) return -ENODEV; + if (rte_eal_process_type() != RTE_PROC_PRIMARY) + return rte_eth_dev_release_port(eth_dev); + /* make sure the device is stopped, queues freed */ rte_eth_dev_close(eth_dev->data->port_id); diff --git a/dpdk/drivers/net/virtio/virtqueue.h b/dpdk/drivers/net/virtio/virtqueue.h index 26518ed98..2e2abf15b 100644 --- a/dpdk/drivers/net/virtio/virtqueue.h +++ b/dpdk/drivers/net/virtio/virtqueue.h @@ -336,6 +336,11 @@ vq_update_avail_ring(struct virtqueue *vq, uint16_t desc_idx) static inline int virtqueue_kick_prepare(struct virtqueue *vq) { + /* + * Ensure updated avail->idx is visible to vhost before reading + * the used->flags. + */ + virtio_mb(); return !(vq->vq_ring.used->flags & VRING_USED_F_NO_NOTIFY); } diff --git a/dpdk/drivers/net/vmxnet3/vmxnet3_ethdev.c b/dpdk/drivers/net/vmxnet3/vmxnet3_ethdev.c index 93e5de9a7..812e18575 100644 --- a/dpdk/drivers/net/vmxnet3/vmxnet3_ethdev.c +++ b/dpdk/drivers/net/vmxnet3/vmxnet3_ethdev.c @@ -52,6 +52,7 @@ #define VMXNET3_RX_OFFLOAD_CAP \ (DEV_RX_OFFLOAD_VLAN_STRIP | \ + DEV_RX_OFFLOAD_VLAN_FILTER | \ DEV_RX_OFFLOAD_SCATTER | \ DEV_RX_OFFLOAD_IPV4_CKSUM | \ DEV_RX_OFFLOAD_UDP_CKSUM | \ diff --git a/dpdk/drivers/net/vmxnet3/vmxnet3_rxtx.c b/dpdk/drivers/net/vmxnet3/vmxnet3_rxtx.c index cf85f3d61..d30914a8a 100644 --- a/dpdk/drivers/net/vmxnet3/vmxnet3_rxtx.c +++ b/dpdk/drivers/net/vmxnet3/vmxnet3_rxtx.c @@ -50,6 +50,8 @@ #define VMXNET3_TX_OFFLOAD_MASK ( \ PKT_TX_VLAN_PKT | \ + PKT_TX_IPV6 | \ + PKT_TX_IPV4 | \ PKT_TX_L4_MASK | \ PKT_TX_TCP_SEG) diff --git a/dpdk/drivers/raw/dpaa2_cmdif/dpaa2_cmdif.c b/dpdk/drivers/raw/dpaa2_cmdif/dpaa2_cmdif.c index 469960a3e..11951980f 100644 --- a/dpdk/drivers/raw/dpaa2_cmdif/dpaa2_cmdif.c +++ b/dpdk/drivers/raw/dpaa2_cmdif/dpaa2_cmdif.c @@ -274,6 +274,8 @@ dpaa2_cmdif_remove(struct rte_vdev_device *vdev) int ret; name = rte_vdev_device_name(vdev); + if (name == NULL) + return -1; DPAA2_CMDIF_INFO("Closing %s on NUMA node %d", name, rte_socket_id()); diff --git a/dpdk/drivers/raw/dpaa2_qdma/dpaa2_qdma.c b/dpdk/drivers/raw/dpaa2_qdma/dpaa2_qdma.c index f474442d4..55f32a596 100644 --- a/dpdk/drivers/raw/dpaa2_qdma/dpaa2_qdma.c +++ b/dpdk/drivers/raw/dpaa2_qdma/dpaa2_qdma.c @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: BSD-3-Clause - * Copyright 2018 NXP + * Copyright 2018-2019 NXP */ #include @@ -219,6 +219,7 @@ int __rte_experimental rte_qdma_configure(struct rte_qdma_config *qdma_config) { int ret; + char fle_pool_name[32]; /* RTE_MEMZONE_NAMESIZE = 32 */ DPAA2_QDMA_FUNC_TRACE(); @@ -258,8 +259,12 @@ rte_qdma_configure(struct rte_qdma_config *qdma_config) } qdma_dev.max_vqs = qdma_config->max_vqs; - /* Allocate FLE pool */ - qdma_dev.fle_pool = rte_mempool_create("qdma_fle_pool", + /* Allocate FLE pool; just append PID so that in case of + * multiprocess, the pool's don't collide. + */ + snprintf(fle_pool_name, sizeof(fle_pool_name), "qdma_fle_pool%u", + getpid()); + qdma_dev.fle_pool = rte_mempool_create(fle_pool_name, qdma_config->fle_pool_count, QDMA_FLE_POOL_SIZE, QDMA_FLE_CACHE_SIZE(qdma_config->fle_pool_count), 0, NULL, NULL, NULL, NULL, SOCKET_ID_ANY, 0); @@ -303,6 +308,7 @@ rte_qdma_vq_create(uint32_t lcore_id, uint32_t flags) /* Return in case no VQ is free */ if (i == qdma_dev.max_vqs) { rte_spinlock_unlock(&qdma_dev.lock); + DPAA2_QDMA_ERR("Unable to get lock on QDMA device"); return -ENODEV; } @@ -313,7 +319,7 @@ rte_qdma_vq_create(uint32_t lcore_id, uint32_t flags) qdma_vqs[i].exclusive_hw_queue = 1; } else { /* Allocate a Ring for Virutal Queue in VQ mode */ - sprintf(ring_name, "status ring %d", i); + snprintf(ring_name, sizeof(ring_name), "status ring %d", i); qdma_vqs[i].status_ring = rte_ring_create(ring_name, qdma_dev.fle_pool_count, rte_socket_id(), 0); if (!qdma_vqs[i].status_ring) { @@ -719,7 +725,7 @@ rte_qdma_vq_destroy(uint16_t vq_id) memset(qdma_vq, 0, sizeof(struct qdma_virt_queue)); - rte_spinlock_lock(&qdma_dev.lock); + rte_spinlock_unlock(&qdma_dev.lock); return 0; } @@ -793,9 +799,6 @@ dpaa2_dpdmai_dev_uninit(struct rte_rawdev *rawdev) DPAA2_QDMA_FUNC_TRACE(); - if (rte_eal_process_type() != RTE_PROC_PRIMARY) - return 0; - /* Remove HW queues from global list */ remove_hw_queues_from_list(dpdmai_dev); @@ -834,10 +837,6 @@ dpaa2_dpdmai_dev_init(struct rte_rawdev *rawdev, int dpdmai_id) DPAA2_QDMA_FUNC_TRACE(); - /* For secondary processes, the primary has done all the work */ - if (rte_eal_process_type() != RTE_PROC_PRIMARY) - return 0; - /* Open DPDMAI device */ dpdmai_dev->dpdmai_id = dpdmai_id; dpdmai_dev->dpdmai.regs = rte_mcp_ptr_list[MC_PORTAL_INDEX]; diff --git a/dpdk/drivers/raw/dpaa2_qdma/rte_pmd_dpaa2_qdma.h b/dpdk/drivers/raw/dpaa2_qdma/rte_pmd_dpaa2_qdma.h index 17fffcb74..29b4fe917 100644 --- a/dpdk/drivers/raw/dpaa2_qdma/rte_pmd_dpaa2_qdma.h +++ b/dpdk/drivers/raw/dpaa2_qdma/rte_pmd_dpaa2_qdma.h @@ -31,7 +31,7 @@ enum { }; /** - * If user has configued a Virtual Queue mode, but for some particular VQ + * If user has configured a Virtual Queue mode, but for some particular VQ * user needs an exclusive H/W queue associated (for better performance * on that particular VQ), then user can pass this flag while creating the * Virtual Queue. A H/W queue will be allocated corresponding to @@ -262,7 +262,7 @@ rte_qdma_vq_stats(uint16_t vq_id, * VQ's at runtime. * * @param vq_id - * Virtual Queue ID which needs to be deinialized. + * Virtual Queue ID which needs to be uninitialized. * * @returns * - 0: Success. diff --git a/dpdk/drivers/raw/ifpga_rawdev/base/opae_hw_api.c b/dpdk/drivers/raw/ifpga_rawdev/base/opae_hw_api.c index a533dfea8..1541b6798 100644 --- a/dpdk/drivers/raw/ifpga_rawdev/base/opae_hw_api.c +++ b/dpdk/drivers/raw/ifpga_rawdev/base/opae_hw_api.c @@ -303,25 +303,25 @@ static struct opae_adapter_ops *match_ops(struct opae_adapter *adapter) } /** - * opae_adapter_data_alloc - alloc opae_adapter_data data structure + * opae_adapter_init - init opae_adapter data structure + * @adapter: pointer of opae_adapter data structure * @name: adapter name. * @data: private data of this adapter. * - * Return: opae_adapter on success, otherwise NULL. + * Return: 0 on success. */ -struct opae_adapter *opae_adapter_alloc(const char *name, void *data) +int opae_adapter_init(struct opae_adapter *adapter, + const char *name, void *data) { - struct opae_adapter *adapter = opae_zmalloc(sizeof(*adapter)); - if (!adapter) - return NULL; + return -ENOMEM; TAILQ_INIT(&adapter->acc_list); adapter->data = data; adapter->name = name; adapter->ops = match_ops(adapter); - return adapter; + return 0; } /** diff --git a/dpdk/drivers/raw/ifpga_rawdev/base/opae_hw_api.h b/dpdk/drivers/raw/ifpga_rawdev/base/opae_hw_api.h index 4bbc9df5c..332e0f3f6 100644 --- a/dpdk/drivers/raw/ifpga_rawdev/base/opae_hw_api.h +++ b/dpdk/drivers/raw/ifpga_rawdev/base/opae_hw_api.h @@ -225,7 +225,8 @@ struct opae_adapter { void *opae_adapter_data_alloc(enum opae_adapter_type type); #define opae_adapter_data_free(data) opae_free(data) -struct opae_adapter *opae_adapter_alloc(const char *name, void *data); +int opae_adapter_init(struct opae_adapter *adapter, + const char *name, void *data); #define opae_adapter_free(adapter) opae_free(adapter) int opae_adapter_enumerate(struct opae_adapter *adapter); diff --git a/dpdk/drivers/raw/ifpga_rawdev/ifpga_rawdev.c b/dpdk/drivers/raw/ifpga_rawdev/ifpga_rawdev.c index 32e318fc3..eff001b59 100644 --- a/dpdk/drivers/raw/ifpga_rawdev/ifpga_rawdev.c +++ b/dpdk/drivers/raw/ifpga_rawdev/ifpga_rawdev.c @@ -244,7 +244,8 @@ rte_fpga_do_pr(struct rte_rawdev *rawdev, int port_id, if (ret) { IFPGA_RAWDEV_PMD_ERR("stat on bitstream file failed: %s\n", file_name); - return -EINVAL; + ret = -EINVAL; + goto close_fd; } buffer_size = file_stat.st_size; IFPGA_RAWDEV_PMD_INFO("bitstream file size: %zu\n", buffer_size); @@ -409,9 +410,10 @@ ifpga_rawdev_create(struct rte_pci_device *pci_dev, data->device_id = pci_dev->id.device_id; data->vendor_id = pci_dev->id.vendor_id; + adapter = rawdev->dev_private; /* create a opae_adapter based on above device data */ - adapter = opae_adapter_alloc(pci_dev->device.name, data); - if (!adapter) { + ret = opae_adapter_init(adapter, pci_dev->device.name, data); + if (ret) { ret = -ENOMEM; goto free_adapter_data; } @@ -420,12 +422,10 @@ ifpga_rawdev_create(struct rte_pci_device *pci_dev, rawdev->device = &pci_dev->device; rawdev->driver_name = pci_dev->device.driver->name; - rawdev->dev_private = adapter; - /* must enumerate the adapter before use it */ ret = opae_adapter_enumerate(adapter); if (ret) - goto free_adapter; + goto free_adapter_data; /* get opae_manager to rawdev */ mgr = opae_adapter_get_mgr(adapter); @@ -436,9 +436,6 @@ ifpga_rawdev_create(struct rte_pci_device *pci_dev, return ret; -free_adapter: - if (adapter) - opae_adapter_free(adapter); free_adapter_data: if (data) opae_adapter_data_free(data); diff --git a/dpdk/drivers/raw/ifpga_rawdev/ifpga_rawdev.h b/dpdk/drivers/raw/ifpga_rawdev/ifpga_rawdev.h index c7759b8bd..234ce3642 100644 --- a/dpdk/drivers/raw/ifpga_rawdev/ifpga_rawdev.h +++ b/dpdk/drivers/raw/ifpga_rawdev/ifpga_rawdev.h @@ -8,8 +8,8 @@ extern int ifpga_rawdev_logtype; #define IFPGA_RAWDEV_PMD_LOG(level, fmt, args...) \ - rte_log(RTE_LOG_ ## level, ifpga_rawdev_logtype, "ifgpa: " fmt, \ - ##args) + rte_log(RTE_LOG_ ## level, ifpga_rawdev_logtype, "%s(): " fmt "\n", \ + __func__, ##args) #define IFPGA_RAWDEV_PMD_FUNC_TRACE() IFPGA_RAWDEV_PMD_LOG(DEBUG, ">>") diff --git a/dpdk/drivers/raw/skeleton_rawdev/skeleton_rawdev.c b/dpdk/drivers/raw/skeleton_rawdev/skeleton_rawdev.c index d7630fc69..63f2b9a09 100644 --- a/dpdk/drivers/raw/skeleton_rawdev/skeleton_rawdev.c +++ b/dpdk/drivers/raw/skeleton_rawdev/skeleton_rawdev.c @@ -705,6 +705,9 @@ skeleton_rawdev_probe(struct rte_vdev_device *vdev) name = rte_vdev_device_name(vdev); + if (name == NULL) + return -EINVAL; + /* More than one instance is not supported */ if (skeldev_init_once) { SKELETON_PMD_ERR("Multiple instance not supported for %s", @@ -740,6 +743,8 @@ skeleton_rawdev_remove(struct rte_vdev_device *vdev) int ret; name = rte_vdev_device_name(vdev); + if (name == NULL) + return -1; SKELETON_PMD_INFO("Closing %s on NUMA node %d", name, rte_socket_id()); diff --git a/dpdk/examples/bond/main.c b/dpdk/examples/bond/main.c index b282e68ba..ef86194ff 100644 --- a/dpdk/examples/bond/main.c +++ b/dpdk/examples/bond/main.c @@ -220,6 +220,7 @@ bond_port_init(struct rte_mempool *mbuf_pool) struct rte_eth_rxconf rxq_conf; struct rte_eth_txconf txq_conf; struct rte_eth_conf local_port_conf = port_conf; + uint16_t wait_counter = 20; retval = rte_eth_bond_create("net_bonding0", BONDING_MODE_ALB, 0 /*SOCKET_ID_ANY*/); @@ -243,6 +244,13 @@ bond_port_init(struct rte_mempool *mbuf_pool) rte_exit(EXIT_FAILURE, "port %u: rte_eth_dev_adjust_nb_rx_tx_desc " "failed (res=%d)\n", BOND_PORT, retval); + for (i = 0; i < slaves_count; i++) { + if (rte_eth_bond_slave_add(BOND_PORT, slaves[i]) == -1) + rte_exit(-1, "Oooops! adding slave (%u) to bond (%u) failed!\n", + slaves[i], BOND_PORT); + + } + /* RX setup */ rxq_conf = dev_info.default_rxconf; rxq_conf.offloads = local_port_conf.rxmode.offloads; @@ -263,17 +271,24 @@ bond_port_init(struct rte_mempool *mbuf_pool) rte_exit(retval, "port %u: TX queue 0 setup failed (res=%d)", BOND_PORT, retval); - for (i = 0; i < slaves_count; i++) { - if (rte_eth_bond_slave_add(BOND_PORT, slaves[i]) == -1) - rte_exit(-1, "Oooops! adding slave (%u) to bond (%u) failed!\n", - slaves[i], BOND_PORT); - - } - retval = rte_eth_dev_start(BOND_PORT); if (retval < 0) rte_exit(retval, "Start port %d failed (res=%d)", BOND_PORT, retval); + printf("Waiting for slaves to become active..."); + while (wait_counter) { + uint16_t act_slaves[16] = {0}; + if (rte_eth_bond_active_slaves_get(BOND_PORT, act_slaves, 16) == + slaves_count) { + printf("\n"); + break; + } + sleep(1); + printf("..."); + if (--wait_counter == 0) + rte_exit(-1, "\nFailed to activate slaves\n"); + } + rte_eth_promiscuous_enable(BOND_PORT); struct ether_addr addr; diff --git a/dpdk/examples/ethtool/lib/rte_ethtool.h b/dpdk/examples/ethtool/lib/rte_ethtool.h index 43adc97a3..31cd5ae4e 100644 --- a/dpdk/examples/ethtool/lib/rte_ethtool.h +++ b/dpdk/examples/ethtool/lib/rte_ethtool.h @@ -9,7 +9,7 @@ * This new interface is designed to provide a user-space shim layer for * Ethtool and Netdevice op API. * - * rte_ethtool_get_driver: ethtool_ops::get_driverinfo + * rte_ethtool_get_driver: ethtool_ops::get_drvinfo * rte_ethtool_get_link: ethtool_ops::get_link * rte_ethtool_get_regs_len: ethtool_ops::get_regs_len * rte_ethtool_get_regs: ethtool_ops::get_regs @@ -23,7 +23,7 @@ * rte_ethtool_net_stop: net_device_ops::ndo_stop * rte_ethtool_net_set_mac_addr: net_device_ops::ndo_set_mac_address * rte_ethtool_net_validate_addr: net_device_ops::ndo_validate_addr - * rte_ethtool_net_change_mtu: net_device_ops::rte_net_change_mtu + * rte_ethtool_net_change_mtu: net_device_ops::ndo_change_mtu * rte_ethtool_net_get_stats64: net_device_ops::ndo_get_stats64 * rte_ethtool_net_vlan_rx_add_vid net_device_ops::ndo_vlan_rx_add_vid * rte_ethtool_net_vlan_rx_kill_vid net_device_ops::ndo_vlan_rx_kill_vid diff --git a/dpdk/examples/fips_validation/main.c b/dpdk/examples/fips_validation/main.c index e7559c633..40785decb 100644 --- a/dpdk/examples/fips_validation/main.c +++ b/dpdk/examples/fips_validation/main.c @@ -806,19 +806,20 @@ fips_run_test(void) if (ret < 0) { RTE_LOG(ERR, USER1, "Error %i: Init session\n", ret); - return ret; + goto exit; } ret = test_ops.prepare_op(); if (ret < 0) { RTE_LOG(ERR, USER1, "Error %i: Prepare op\n", ret); - return ret; + goto exit; } if (rte_cryptodev_enqueue_burst(env.dev_id, 0, &env.op, 1) < 1) { RTE_LOG(ERR, USER1, "Error: Failed enqueue\n"); - return ret; + ret = -1; + goto exit; } do { @@ -830,6 +831,7 @@ fips_run_test(void) vec.status = env.op->status; +exit: rte_cryptodev_sym_session_clear(env.dev_id, env.sess); rte_cryptodev_sym_session_free(env.sess); env.sess = NULL; diff --git a/dpdk/examples/flow_filtering/flow_blocks.c b/dpdk/examples/flow_filtering/flow_blocks.c index bae711699..1edf6f9c6 100644 --- a/dpdk/examples/flow_filtering/flow_blocks.c +++ b/dpdk/examples/flow_filtering/flow_blocks.c @@ -2,7 +2,8 @@ * Copyright 2017 Mellanox Technologies, Ltd */ -#define MAX_PATTERN_NUM 4 +#define MAX_PATTERN_NUM 3 +#define MAX_ACTION_NUM 2 struct rte_flow * generate_ipv4_flow(uint16_t port_id, uint16_t rx_q, @@ -41,11 +42,9 @@ generate_ipv4_flow(uint16_t port_id, uint16_t rx_q, { struct rte_flow_attr attr; struct rte_flow_item pattern[MAX_PATTERN_NUM]; - struct rte_flow_action action[MAX_PATTERN_NUM]; + struct rte_flow_action action[MAX_ACTION_NUM]; struct rte_flow *flow = NULL; struct rte_flow_action_queue queue = { .index = rx_q }; - struct rte_flow_item_eth eth_spec; - struct rte_flow_item_eth eth_mask; struct rte_flow_item_ipv4 ip_spec; struct rte_flow_item_ipv4 ip_mask; int res; @@ -64,26 +63,19 @@ generate_ipv4_flow(uint16_t port_id, uint16_t rx_q, * create the action sequence. * one action only, move packet to queue */ - action[0].type = RTE_FLOW_ACTION_TYPE_QUEUE; action[0].conf = &queue; action[1].type = RTE_FLOW_ACTION_TYPE_END; /* - * set the first level of the pattern (eth). + * set the first level of the pattern (ETH). * since in this example we just want to get the * ipv4 we set this level to allow all. */ - memset(ð_spec, 0, sizeof(struct rte_flow_item_eth)); - memset(ð_mask, 0, sizeof(struct rte_flow_item_eth)); - eth_spec.type = 0; - eth_mask.type = 0; pattern[0].type = RTE_FLOW_ITEM_TYPE_ETH; - pattern[0].spec = ð_spec; - pattern[0].mask = ð_mask; /* - * setting the third level of the pattern (ip). + * setting the second level of the pattern (IP). * in this example this is the level we care about * so we set it according to the parameters. */ diff --git a/dpdk/examples/ip_pipeline/meson.build b/dpdk/examples/ip_pipeline/meson.build index 5e5fe6479..664223c97 100644 --- a/dpdk/examples/ip_pipeline/meson.build +++ b/dpdk/examples/ip_pipeline/meson.build @@ -6,6 +6,7 @@ # To build this example as a standalone application with an already-installed # DPDK instance, use 'make' +build = cc.has_header('sys/epoll.h') deps += ['pipeline', 'bus_pci'] allow_experimental_apis = true sources = files( diff --git a/dpdk/examples/ipsec-secgw/Makefile b/dpdk/examples/ipsec-secgw/Makefile index 02d41e39a..a6933801a 100644 --- a/dpdk/examples/ipsec-secgw/Makefile +++ b/dpdk/examples/ipsec-secgw/Makefile @@ -52,7 +52,7 @@ clean: else ifeq ($(RTE_SDK),) - $(error "Please define RTE_SDK environment variable") +$(error "Please define RTE_SDK environment variable") endif # Default target, can be overridden by command line or environment diff --git a/dpdk/examples/ipsec-secgw/esp.c b/dpdk/examples/ipsec-secgw/esp.c index e33232c98..faa84ddd1 100644 --- a/dpdk/examples/ipsec-secgw/esp.c +++ b/dpdk/examples/ipsec-secgw/esp.c @@ -162,7 +162,7 @@ esp_inbound_post(struct rte_mbuf *m, struct ipsec_sa *sa, } if (cop->status != RTE_CRYPTO_OP_STATUS_SUCCESS) { - RTE_LOG(ERR, IPSEC_ESP, "failed crypto op\n"); + RTE_LOG(ERR, IPSEC_ESP, "%s() failed crypto op\n", __func__); return -1; } @@ -455,7 +455,8 @@ esp_outbound_post(struct rte_mbuf *m, } else { RTE_ASSERT(cop != NULL); if (cop->status != RTE_CRYPTO_OP_STATUS_SUCCESS) { - RTE_LOG(ERR, IPSEC_ESP, "Failed crypto op\n"); + RTE_LOG(ERR, IPSEC_ESP, "%s() failed crypto op\n", + __func__); return -1; } } diff --git a/dpdk/examples/ipsec-secgw/ipsec-secgw.c b/dpdk/examples/ipsec-secgw/ipsec-secgw.c index 1bc0b5b50..dfb93375a 100644 --- a/dpdk/examples/ipsec-secgw/ipsec-secgw.c +++ b/dpdk/examples/ipsec-secgw/ipsec-secgw.c @@ -255,7 +255,8 @@ prepare_one_packet(struct rte_mbuf *pkt, struct ipsec_traffic *t) } } else { /* Unknown/Unsupported type, drop the packet */ - RTE_LOG(ERR, IPSEC, "Unsupported packet type\n"); + RTE_LOG(ERR, IPSEC, "Unsupported packet type 0x%x\n", + rte_be_to_cpu_16(eth->ether_type)); rte_pktmbuf_free(pkt); } @@ -425,11 +426,11 @@ inbound_sp_sa(struct sp_ctx *sp, struct sa_ctx *sa, struct traffic_type *ip, for (i = 0; i < ip->num; i++) { m = ip->pkts[i]; res = ip->res[i]; - if (res & BYPASS) { + if (res == BYPASS) { ip->pkts[j++] = m; continue; } - if (res & DISCARD) { + if (res == DISCARD) { rte_pktmbuf_free(m); continue; } @@ -440,9 +441,8 @@ inbound_sp_sa(struct sp_ctx *sp, struct sa_ctx *sa, struct traffic_type *ip, continue; } - sa_idx = ip->res[i] & PROTECT_MASK; - if (sa_idx >= IPSEC_SA_MAX_ENTRIES || - !inbound_sa_check(sa, m, sa_idx)) { + sa_idx = SPI2IDX(res); + if (!inbound_sa_check(sa, m, sa_idx)) { rte_pktmbuf_free(m); continue; } @@ -451,37 +451,54 @@ inbound_sp_sa(struct sp_ctx *sp, struct sa_ctx *sa, struct traffic_type *ip, ip->num = j; } +static void +split46_traffic(struct ipsec_traffic *trf, struct rte_mbuf *mb[], uint32_t num) +{ + uint32_t i, n4, n6; + struct ip *ip; + struct rte_mbuf *m; + + n4 = trf->ip4.num; + n6 = trf->ip6.num; + + for (i = 0; i < num; i++) { + + m = mb[i]; + ip = rte_pktmbuf_mtod(m, struct ip *); + + if (ip->ip_v == IPVERSION) { + trf->ip4.pkts[n4] = m; + trf->ip4.data[n4] = rte_pktmbuf_mtod_offset(m, + uint8_t *, offsetof(struct ip, ip_p)); + n4++; + } else if (ip->ip_v == IP6_VERSION) { + trf->ip6.pkts[n6] = m; + trf->ip6.data[n6] = rte_pktmbuf_mtod_offset(m, + uint8_t *, + offsetof(struct ip6_hdr, ip6_nxt)); + n6++; + } else + rte_pktmbuf_free(m); + } + + trf->ip4.num = n4; + trf->ip6.num = n6; +} + + static inline void process_pkts_inbound(struct ipsec_ctx *ipsec_ctx, struct ipsec_traffic *traffic) { - struct rte_mbuf *m; - uint16_t idx, nb_pkts_in, i, n_ip4, n_ip6; - - nb_pkts_in = ipsec_inbound(ipsec_ctx, traffic->ipsec.pkts, - traffic->ipsec.num, MAX_PKT_BURST); + uint16_t nb_pkts_in, n_ip4, n_ip6; n_ip4 = traffic->ip4.num; n_ip6 = traffic->ip6.num; - /* SP/ACL Inbound check ipsec and ip4 */ - for (i = 0; i < nb_pkts_in; i++) { - m = traffic->ipsec.pkts[i]; - struct ip *ip = rte_pktmbuf_mtod(m, struct ip *); - if (ip->ip_v == IPVERSION) { - idx = traffic->ip4.num++; - traffic->ip4.pkts[idx] = m; - traffic->ip4.data[idx] = rte_pktmbuf_mtod_offset(m, - uint8_t *, offsetof(struct ip, ip_p)); - } else if (ip->ip_v == IP6_VERSION) { - idx = traffic->ip6.num++; - traffic->ip6.pkts[idx] = m; - traffic->ip6.data[idx] = rte_pktmbuf_mtod_offset(m, - uint8_t *, - offsetof(struct ip6_hdr, ip6_nxt)); - } else - rte_pktmbuf_free(m); - } + nb_pkts_in = ipsec_inbound(ipsec_ctx, traffic->ipsec.pkts, + traffic->ipsec.num, MAX_PKT_BURST); + + split46_traffic(traffic, traffic->ipsec.pkts, nb_pkts_in); inbound_sp_sa(ipsec_ctx->sp4_ctx, ipsec_ctx->sa_ctx, &traffic->ip4, n_ip4); @@ -506,16 +523,15 @@ outbound_sp(struct sp_ctx *sp, struct traffic_type *ip, j = 0; for (i = 0; i < ip->num; i++) { m = ip->pkts[i]; - sa_idx = ip->res[i] & PROTECT_MASK; - if (ip->res[i] & DISCARD) + sa_idx = SPI2IDX(ip->res[i]); + if (ip->res[i] == DISCARD) rte_pktmbuf_free(m); - else if (ip->res[i] & BYPASS) + else if (ip->res[i] == BYPASS) ip->pkts[j++] = m; - else if (sa_idx < IPSEC_SA_MAX_ENTRIES) { + else { ipsec->res[ipsec->num] = sa_idx; ipsec->pkts[ipsec->num++] = m; - } else /* invalid SA idx */ - rte_pktmbuf_free(m); + } } ip->num = j; } @@ -594,32 +610,45 @@ process_pkts_outbound_nosp(struct ipsec_ctx *ipsec_ctx, struct ipsec_traffic *traffic) { struct rte_mbuf *m; - uint32_t nb_pkts_out, i; + uint32_t nb_pkts_out, i, n; struct ip *ip; /* Drop any IPsec traffic from protected ports */ for (i = 0; i < traffic->ipsec.num; i++) rte_pktmbuf_free(traffic->ipsec.pkts[i]); - traffic->ipsec.num = 0; + n = 0; - for (i = 0; i < traffic->ip4.num; i++) - traffic->ip4.res[i] = single_sa_idx; + for (i = 0; i < traffic->ip4.num; i++) { + traffic->ipsec.pkts[n] = traffic->ip4.pkts[i]; + traffic->ipsec.res[n++] = single_sa_idx; + } - for (i = 0; i < traffic->ip6.num; i++) - traffic->ip6.res[i] = single_sa_idx; + for (i = 0; i < traffic->ip6.num; i++) { + traffic->ipsec.pkts[n] = traffic->ip6.pkts[i]; + traffic->ipsec.res[n++] = single_sa_idx; + } - nb_pkts_out = ipsec_outbound(ipsec_ctx, traffic->ip4.pkts, - traffic->ip4.res, traffic->ip4.num, + traffic->ip4.num = 0; + traffic->ip6.num = 0; + traffic->ipsec.num = n; + + nb_pkts_out = ipsec_outbound(ipsec_ctx, traffic->ipsec.pkts, + traffic->ipsec.res, traffic->ipsec.num, MAX_PKT_BURST); /* They all sue the same SA (ip4 or ip6 tunnel) */ m = traffic->ipsec.pkts[i]; ip = rte_pktmbuf_mtod(m, struct ip *); - if (ip->ip_v == IPVERSION) + if (ip->ip_v == IPVERSION) { traffic->ip4.num = nb_pkts_out; - else + for (i = 0; i < nb_pkts_out; i++) + traffic->ip4.pkts[i] = traffic->ipsec.pkts[i]; + } else { traffic->ip6.num = nb_pkts_out; + for (i = 0; i < nb_pkts_out; i++) + traffic->ip6.pkts[i] = traffic->ipsec.pkts[i]; + } } static inline int32_t @@ -777,7 +806,7 @@ process_pkts(struct lcore_conf *qconf, struct rte_mbuf **pkts, } static inline void -drain_buffers(struct lcore_conf *qconf) +drain_tx_buffers(struct lcore_conf *qconf) { struct buffer *buf; uint32_t portid; @@ -791,6 +820,81 @@ drain_buffers(struct lcore_conf *qconf) } } +static inline void +drain_crypto_buffers(struct lcore_conf *qconf) +{ + uint32_t i; + struct ipsec_ctx *ctx; + + /* drain inbound buffers*/ + ctx = &qconf->inbound; + for (i = 0; i != ctx->nb_qps; i++) { + if (ctx->tbl[i].len != 0) + enqueue_cop_burst(ctx->tbl + i); + } + + /* drain outbound buffers*/ + ctx = &qconf->outbound; + for (i = 0; i != ctx->nb_qps; i++) { + if (ctx->tbl[i].len != 0) + enqueue_cop_burst(ctx->tbl + i); + } +} + +static void +drain_inbound_crypto_queues(const struct lcore_conf *qconf, + struct ipsec_ctx *ctx) +{ + uint32_t n; + struct ipsec_traffic trf; + + /* dequeue packets from crypto-queue */ + n = ipsec_inbound_cqp_dequeue(ctx, trf.ipsec.pkts, + RTE_DIM(trf.ipsec.pkts)); + if (n == 0) + return; + + trf.ip4.num = 0; + trf.ip6.num = 0; + + /* split traffic by ipv4-ipv6 */ + split46_traffic(&trf, trf.ipsec.pkts, n); + + /* process ipv4 packets */ + inbound_sp_sa(ctx->sp4_ctx, ctx->sa_ctx, &trf.ip4, 0); + route4_pkts(qconf->rt4_ctx, trf.ip4.pkts, trf.ip4.num); + + /* process ipv6 packets */ + inbound_sp_sa(ctx->sp6_ctx, ctx->sa_ctx, &trf.ip6, 0); + route6_pkts(qconf->rt6_ctx, trf.ip6.pkts, trf.ip6.num); +} + +static void +drain_outbound_crypto_queues(const struct lcore_conf *qconf, + struct ipsec_ctx *ctx) +{ + uint32_t n; + struct ipsec_traffic trf; + + /* dequeue packets from crypto-queue */ + n = ipsec_outbound_cqp_dequeue(ctx, trf.ipsec.pkts, + RTE_DIM(trf.ipsec.pkts)); + if (n == 0) + return; + + trf.ip4.num = 0; + trf.ip6.num = 0; + + /* split traffic by ipv4-ipv6 */ + split46_traffic(&trf, trf.ipsec.pkts, n); + + /* process ipv4 packets */ + route4_pkts(qconf->rt4_ctx, trf.ip4.pkts, trf.ip4.num); + + /* process ipv6 packets */ + route6_pkts(qconf->rt6_ctx, trf.ip6.pkts, trf.ip6.num); +} + /* main processing loop */ static int32_t main_loop(__attribute__((unused)) void *dummy) @@ -827,7 +931,8 @@ main_loop(__attribute__((unused)) void *dummy) qconf->outbound.session_pool = socket_ctx[socket_id].session_pool; if (qconf->nb_rx_queue == 0) { - RTE_LOG(INFO, IPSEC, "lcore %u has nothing to do\n", lcore_id); + RTE_LOG(DEBUG, IPSEC, "lcore %u has nothing to do\n", + lcore_id); return 0; } @@ -848,12 +953,14 @@ main_loop(__attribute__((unused)) void *dummy) diff_tsc = cur_tsc - prev_tsc; if (unlikely(diff_tsc > drain_tsc)) { - drain_buffers(qconf); + drain_tx_buffers(qconf); + drain_crypto_buffers(qconf); prev_tsc = cur_tsc; } - /* Read packet from RX queues */ for (i = 0; i < qconf->nb_rx_queue; ++i) { + + /* Read packets from RX queues */ portid = rxql[i].port_id; queueid = rxql[i].queue_id; nb_rx = rte_eth_rx_burst(portid, queueid, @@ -861,6 +968,14 @@ main_loop(__attribute__((unused)) void *dummy) if (nb_rx > 0) process_pkts(qconf, pkts, nb_rx, portid); + + /* dequeue and process completed crypto-ops */ + if (UNPROTECTED_PORT(portid)) + drain_inbound_crypto_queues(qconf, + &qconf->inbound); + else + drain_outbound_crypto_queues(qconf, + &qconf->outbound); } } } diff --git a/dpdk/examples/ipsec-secgw/ipsec.c b/dpdk/examples/ipsec-secgw/ipsec.c index 3d415f1af..72a29bcb1 100644 --- a/dpdk/examples/ipsec-secgw/ipsec.c +++ b/dpdk/examples/ipsec-secgw/ipsec.c @@ -333,33 +333,35 @@ flow_create_failure: return 0; } +/* + * queue crypto-ops into PMD queue. + */ +void +enqueue_cop_burst(struct cdev_qp *cqp) +{ + uint32_t i, len, ret; + + len = cqp->len; + ret = rte_cryptodev_enqueue_burst(cqp->id, cqp->qp, cqp->buf, len); + if (ret < len) { + RTE_LOG_DP(DEBUG, IPSEC, "Cryptodev %u queue %u:" + " enqueued %u crypto ops out of %u\n", + cqp->id, cqp->qp, ret, len); + /* drop packets that we fail to enqueue */ + for (i = ret; i < len; i++) + rte_pktmbuf_free(cqp->buf[i]->sym->m_src); + } + cqp->in_flight += ret; + cqp->len = 0; +} + static inline void enqueue_cop(struct cdev_qp *cqp, struct rte_crypto_op *cop) { - int32_t ret = 0, i; - cqp->buf[cqp->len++] = cop; - if (cqp->len == MAX_PKT_BURST) { - int enq_size = cqp->len; - if ((cqp->in_flight + enq_size) > MAX_INFLIGHT) - enq_size -= - (int)((cqp->in_flight + enq_size) - MAX_INFLIGHT); - - if (enq_size > 0) - ret = rte_cryptodev_enqueue_burst(cqp->id, cqp->qp, - cqp->buf, enq_size); - if (ret < cqp->len) { - RTE_LOG_DP(DEBUG, IPSEC, "Cryptodev %u queue %u:" - " enqueued %u crypto ops out of %u\n", - cqp->id, cqp->qp, - ret, cqp->len); - for (i = ret; i < cqp->len; i++) - rte_pktmbuf_free(cqp->buf[i]->sym->m_src); - } - cqp->in_flight += ret; - cqp->len = 0; - } + if (cqp->len == MAX_PKT_BURST) + enqueue_cop_burst(cqp); } static inline void @@ -473,6 +475,32 @@ ipsec_enqueue(ipsec_xform_fn xform_func, struct ipsec_ctx *ipsec_ctx, } } +static inline int32_t +ipsec_inline_dequeue(ipsec_xform_fn xform_func, struct ipsec_ctx *ipsec_ctx, + struct rte_mbuf *pkts[], uint16_t max_pkts) +{ + int32_t nb_pkts, ret; + struct ipsec_mbuf_metadata *priv; + struct ipsec_sa *sa; + struct rte_mbuf *pkt; + + nb_pkts = 0; + while (ipsec_ctx->ol_pkts_cnt > 0 && nb_pkts < max_pkts) { + pkt = ipsec_ctx->ol_pkts[--ipsec_ctx->ol_pkts_cnt]; + rte_prefetch0(pkt); + priv = get_priv(pkt); + sa = priv->sa; + ret = xform_func(pkt, sa, &priv->cop); + if (unlikely(ret)) { + rte_pktmbuf_free(pkt); + continue; + } + pkts[nb_pkts++] = pkt; + } + + return nb_pkts; +} + static inline int ipsec_dequeue(ipsec_xform_fn xform_func, struct ipsec_ctx *ipsec_ctx, struct rte_mbuf *pkts[], uint16_t max_pkts) @@ -490,19 +518,6 @@ ipsec_dequeue(ipsec_xform_fn xform_func, struct ipsec_ctx *ipsec_ctx, if (ipsec_ctx->last_qp == ipsec_ctx->nb_qps) ipsec_ctx->last_qp %= ipsec_ctx->nb_qps; - while (ipsec_ctx->ol_pkts_cnt > 0 && nb_pkts < max_pkts) { - pkt = ipsec_ctx->ol_pkts[--ipsec_ctx->ol_pkts_cnt]; - rte_prefetch0(pkt); - priv = get_priv(pkt); - sa = priv->sa; - ret = xform_func(pkt, sa, &priv->cop); - if (unlikely(ret)) { - rte_pktmbuf_free(pkt); - continue; - } - pkts[nb_pkts++] = pkt; - } - if (cqp->in_flight == 0) continue; @@ -545,6 +560,13 @@ ipsec_inbound(struct ipsec_ctx *ctx, struct rte_mbuf *pkts[], ipsec_enqueue(esp_inbound, ctx, pkts, sas, nb_pkts); + return ipsec_inline_dequeue(esp_inbound_post, ctx, pkts, len); +} + +uint16_t +ipsec_inbound_cqp_dequeue(struct ipsec_ctx *ctx, struct rte_mbuf *pkts[], + uint16_t len) +{ return ipsec_dequeue(esp_inbound_post, ctx, pkts, len); } @@ -558,5 +580,12 @@ ipsec_outbound(struct ipsec_ctx *ctx, struct rte_mbuf *pkts[], ipsec_enqueue(esp_outbound, ctx, pkts, sas, nb_pkts); + return ipsec_inline_dequeue(esp_outbound_post, ctx, pkts, len); +} + +uint16_t +ipsec_outbound_cqp_dequeue(struct ipsec_ctx *ctx, struct rte_mbuf *pkts[], + uint16_t len) +{ return ipsec_dequeue(esp_outbound_post, ctx, pkts, len); } diff --git a/dpdk/examples/ipsec-secgw/ipsec.h b/dpdk/examples/ipsec-secgw/ipsec.h index c998c8076..86d8f7df4 100644 --- a/dpdk/examples/ipsec-secgw/ipsec.h +++ b/dpdk/examples/ipsec-secgw/ipsec.h @@ -40,10 +40,8 @@ #define SPI2IDX(spi) (spi & (IPSEC_SA_MAX_ENTRIES - 1)) #define INVALID_SPI (0) -#define DISCARD (0x80000000) -#define BYPASS (0x40000000) -#define PROTECT_MASK (0x3fffffff) -#define PROTECT(sa_idx) (SPI2IDX(sa_idx) & PROTECT_MASK) /* SA idx 30 bits */ +#define DISCARD INVALID_SPI +#define BYPASS UINT32_MAX #define IPSEC_XFORM_MAX 2 @@ -182,6 +180,14 @@ uint16_t ipsec_outbound(struct ipsec_ctx *ctx, struct rte_mbuf *pkts[], uint32_t sa_idx[], uint16_t nb_pkts, uint16_t len); +uint16_t +ipsec_inbound_cqp_dequeue(struct ipsec_ctx *ctx, struct rte_mbuf *pkts[], + uint16_t len); + +uint16_t +ipsec_outbound_cqp_dequeue(struct ipsec_ctx *ctx, struct rte_mbuf *pkts[], + uint16_t len); + static inline uint16_t ipsec_metadata_size(void) { @@ -233,10 +239,21 @@ sp4_init(struct socket_ctx *ctx, int32_t socket_id); void sp6_init(struct socket_ctx *ctx, int32_t socket_id); +/* + * Search through SA entries for given SPI. + * Returns first entry index if found(greater or equal then zero), + * or -ENOENT otherwise. + */ +int +sa_spi_present(uint32_t spi, int inbound); + void sa_init(struct socket_ctx *ctx, int32_t socket_id); void rt_init(struct socket_ctx *ctx, int32_t socket_id); +void +enqueue_cop_burst(struct cdev_qp *cqp); + #endif /* __IPSEC_H__ */ diff --git a/dpdk/examples/ipsec-secgw/sa.c b/dpdk/examples/ipsec-secgw/sa.c index d2d3550a4..f7b6eb0bb 100644 --- a/dpdk/examples/ipsec-secgw/sa.c +++ b/dpdk/examples/ipsec-secgw/sa.c @@ -79,7 +79,7 @@ const struct supported_cipher_algo cipher_algos[] = { .keyword = "aes-128-ctr", .algo = RTE_CRYPTO_CIPHER_AES_CTR, .iv_len = 8, - .block_size = 16, /* XXX AESNI MB limition, should be 4 */ + .block_size = 4, .key_len = 20 }, { @@ -125,11 +125,11 @@ const struct supported_aead_algo aead_algos[] = { } }; -struct ipsec_sa sa_out[IPSEC_SA_MAX_ENTRIES]; -uint32_t nb_sa_out; +static struct ipsec_sa sa_out[IPSEC_SA_MAX_ENTRIES]; +static uint32_t nb_sa_out; -struct ipsec_sa sa_in[IPSEC_SA_MAX_ENTRIES]; -uint32_t nb_sa_in; +static struct ipsec_sa sa_in[IPSEC_SA_MAX_ENTRIES]; +static uint32_t nb_sa_in; static const struct supported_cipher_algo * find_match_cipher_algo(const char *cipher_keyword) @@ -630,7 +630,7 @@ parse_sa_tokens(char **tokens, uint32_t n_tokens, *ri = *ri + 1; } -static inline void +static void print_one_sa_rule(const struct ipsec_sa *sa, int inbound) { uint32_t i; @@ -687,7 +687,22 @@ print_one_sa_rule(const struct ipsec_sa *sa, int inbound) } break; case TRANSPORT: - printf("Transport"); + printf("Transport "); + break; + } + printf(" type:"); + switch (sa->type) { + case RTE_SECURITY_ACTION_TYPE_NONE: + printf("no-offload "); + break; + case RTE_SECURITY_ACTION_TYPE_INLINE_CRYPTO: + printf("inline-crypto-offload "); + break; + case RTE_SECURITY_ACTION_TYPE_INLINE_PROTOCOL: + printf("inline-protocol-offload "); + break; + case RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL: + printf("lookaside-protocol-offload "); break; } printf("\n"); @@ -714,8 +729,8 @@ sa_create(const char *name, int32_t socket_id) snprintf(s, sizeof(s), "%s_%u", name, socket_id); /* Create SA array table */ - printf("Creating SA context with %u maximum entries\n", - IPSEC_SA_MAX_ENTRIES); + printf("Creating SA context with %u maximum entries on socket %d\n", + IPSEC_SA_MAX_ENTRIES, socket_id); mz_size = sizeof(struct sa_ctx); mz = rte_memzone_reserve(s, mz_size, socket_id, @@ -901,6 +916,31 @@ sa_in_add_rules(struct sa_ctx *sa_ctx, const struct ipsec_sa entries[], return sa_add_rules(sa_ctx, entries, nb_entries, 1); } +/* + * Walk through all SA rules to find an SA with given SPI + */ +int +sa_spi_present(uint32_t spi, int inbound) +{ + uint32_t i, num; + const struct ipsec_sa *sar; + + if (inbound != 0) { + sar = sa_in; + num = nb_sa_in; + } else { + sar = sa_out; + num = nb_sa_out; + } + + for (i = 0; i != num; i++) { + if (sar[i].spi == spi) + return i; + } + + return -ENOENT; +} + void sa_init(struct socket_ctx *ctx, int32_t socket_id) { @@ -947,10 +987,15 @@ int inbound_sa_check(struct sa_ctx *sa_ctx, struct rte_mbuf *m, uint32_t sa_idx) { struct ipsec_mbuf_metadata *priv; + struct ipsec_sa *sa; priv = get_priv(m); + sa = priv->sa; + if (sa != NULL) + return (sa_ctx->sa[sa_idx].spi == sa->spi); - return (sa_ctx->sa[sa_idx].spi == priv->sa->spi); + RTE_LOG(ERR, IPSEC, "SA not saved in private data\n"); + return 0; } static inline void diff --git a/dpdk/examples/ipsec-secgw/sp4.c b/dpdk/examples/ipsec-secgw/sp4.c index 8d3d3d8e0..99362a684 100644 --- a/dpdk/examples/ipsec-secgw/sp4.c +++ b/dpdk/examples/ipsec-secgw/sp4.c @@ -44,7 +44,7 @@ enum { RTE_ACL_IPV4_NUM }; -struct rte_acl_field_def ip4_defs[NUM_FIELDS_IPV4] = { +static struct rte_acl_field_def ip4_defs[NUM_FIELDS_IPV4] = { { .type = RTE_ACL_FIELD_TYPE_BITMASK, .size = sizeof(uint8_t), @@ -85,11 +85,11 @@ struct rte_acl_field_def ip4_defs[NUM_FIELDS_IPV4] = { RTE_ACL_RULE_DEF(acl4_rules, RTE_DIM(ip4_defs)); -struct acl4_rules acl4_rules_out[MAX_ACL_RULE_NUM]; -uint32_t nb_acl4_rules_out; +static struct acl4_rules acl4_rules_out[MAX_ACL_RULE_NUM]; +static uint32_t nb_acl4_rules_out; -struct acl4_rules acl4_rules_in[MAX_ACL_RULE_NUM]; -uint32_t nb_acl4_rules_in; +static struct acl4_rules acl4_rules_in[MAX_ACL_RULE_NUM]; +static uint32_t nb_acl4_rules_in; void parse_sp4_tokens(char **tokens, uint32_t n_tokens, @@ -99,6 +99,7 @@ parse_sp4_tokens(char **tokens, uint32_t n_tokens, uint32_t *ri = NULL; /* rule index */ uint32_t ti = 0; /* token index */ + uint32_t tv; uint32_t esp_p = 0; uint32_t protect_p = 0; @@ -169,8 +170,12 @@ parse_sp4_tokens(char **tokens, uint32_t n_tokens, if (status->status < 0) return; - rule_ipv4->data.userdata = - PROTECT(atoi(tokens[ti])); + tv = atoi(tokens[ti]); + APP_CHECK(tv != DISCARD && tv != BYPASS, status, + "invalid SPI: %s", tokens[ti]); + if (status->status < 0) + return; + rule_ipv4->data.userdata = tv; protect_p = 1; continue; @@ -472,6 +477,36 @@ acl4_init(const char *name, int32_t socketid, const struct acl4_rules *rules, return ctx; } +/* + * check that for each rule it's SPI has a correspondent entry in SAD + */ +static int +check_spi_value(int inbound) +{ + uint32_t i, num, spi; + const struct acl4_rules *acr; + + if (inbound != 0) { + acr = acl4_rules_in; + num = nb_acl4_rules_in; + } else { + acr = acl4_rules_out; + num = nb_acl4_rules_out; + } + + for (i = 0; i != num; i++) { + spi = acr[i].data.userdata; + if (spi != DISCARD && spi != BYPASS && + sa_spi_present(spi, inbound) < 0) { + RTE_LOG(ERR, IPSEC, "SPI %u is not present in SAD\n", + spi); + return -ENOENT; + } + } + + return 0; +} + void sp4_init(struct socket_ctx *ctx, int32_t socket_id) { @@ -488,6 +523,14 @@ sp4_init(struct socket_ctx *ctx, int32_t socket_id) rte_exit(EXIT_FAILURE, "Outbound SP DB for socket %u already " "initialized\n", socket_id); + if (check_spi_value(1) < 0) + rte_exit(EXIT_FAILURE, + "Inbound IPv4 SP DB has unmatched in SAD SPIs\n"); + + if (check_spi_value(0) < 0) + rte_exit(EXIT_FAILURE, + "Outbound IPv4 SP DB has unmatched in SAD SPIs\n"); + if (nb_acl4_rules_in > 0) { name = "sp_ip4_in"; ctx->sp_ip4_in = (struct sp_ctx *)acl4_init(name, diff --git a/dpdk/examples/ipsec-secgw/sp6.c b/dpdk/examples/ipsec-secgw/sp6.c index 6002afef3..bfcabf39c 100644 --- a/dpdk/examples/ipsec-secgw/sp6.c +++ b/dpdk/examples/ipsec-secgw/sp6.c @@ -34,7 +34,7 @@ enum { #define IP6_ADDR_SIZE 16 -struct rte_acl_field_def ip6_defs[IP6_NUM] = { +static struct rte_acl_field_def ip6_defs[IP6_NUM] = { { .type = RTE_ACL_FIELD_TYPE_BITMASK, .size = sizeof(uint8_t), @@ -116,11 +116,11 @@ struct rte_acl_field_def ip6_defs[IP6_NUM] = { RTE_ACL_RULE_DEF(acl6_rules, RTE_DIM(ip6_defs)); -struct acl6_rules acl6_rules_out[MAX_ACL_RULE_NUM]; -uint32_t nb_acl6_rules_out; +static struct acl6_rules acl6_rules_out[MAX_ACL_RULE_NUM]; +static uint32_t nb_acl6_rules_out; -struct acl6_rules acl6_rules_in[MAX_ACL_RULE_NUM]; -uint32_t nb_acl6_rules_in; +static struct acl6_rules acl6_rules_in[MAX_ACL_RULE_NUM]; +static uint32_t nb_acl6_rules_in; void parse_sp6_tokens(char **tokens, uint32_t n_tokens, @@ -130,6 +130,7 @@ parse_sp6_tokens(char **tokens, uint32_t n_tokens, uint32_t *ri = NULL; /* rule index */ uint32_t ti = 0; /* token index */ + uint32_t tv; uint32_t esp_p = 0; uint32_t protect_p = 0; @@ -202,8 +203,12 @@ parse_sp6_tokens(char **tokens, uint32_t n_tokens, if (status->status < 0) return; - rule_ipv6->data.userdata = - PROTECT(atoi(tokens[ti])); + tv = atoi(tokens[ti]); + APP_CHECK(tv != DISCARD && tv != BYPASS, status, + "invalid SPI: %s", tokens[ti]); + if (status->status < 0) + return; + rule_ipv6->data.userdata = tv; protect_p = 1; continue; @@ -586,6 +591,36 @@ acl6_init(const char *name, int32_t socketid, const struct acl6_rules *rules, return ctx; } +/* + * check that for each rule it's SPI has a correspondent entry in SAD + */ +static int +check_spi_value(int inbound) +{ + uint32_t i, num, spi; + const struct acl6_rules *acr; + + if (inbound != 0) { + acr = acl6_rules_in; + num = nb_acl6_rules_in; + } else { + acr = acl6_rules_out; + num = nb_acl6_rules_out; + } + + for (i = 0; i != num; i++) { + spi = acr[i].data.userdata; + if (spi != DISCARD && spi != BYPASS && + sa_spi_present(spi, inbound) < 0) { + RTE_LOG(ERR, IPSEC, "SPI %u is not present in SAD\n", + spi); + return -ENOENT; + } + } + + return 0; +} + void sp6_init(struct socket_ctx *ctx, int32_t socket_id) { @@ -602,6 +637,14 @@ sp6_init(struct socket_ctx *ctx, int32_t socket_id) rte_exit(EXIT_FAILURE, "Outbound IPv6 SP DB for socket %u " "already initialized\n", socket_id); + if (check_spi_value(1) < 0) + rte_exit(EXIT_FAILURE, + "Inbound IPv6 SP DB has unmatched in SAD SPIs\n"); + + if (check_spi_value(0) < 0) + rte_exit(EXIT_FAILURE, + "Outbound IPv6 SP DB has unmatched in SAD SPIs\n"); + if (nb_acl6_rules_in > 0) { name = "sp_ip6_in"; ctx->sp_ip6_in = (struct sp_ctx *)acl6_init(name, diff --git a/dpdk/examples/kni/build/.kni.cmd b/dpdk/examples/kni/build/.kni.cmd deleted file mode 100644 index b2265e3cd..000000000 --- a/dpdk/examples/kni/build/.kni.cmd +++ /dev/null @@ -1 +0,0 @@ -cmd_kni = gcc -o kni -m64 -pthread -march=native -DRTE_MACHINE_CPUFLAG_SSE -DRTE_MACHINE_CPUFLAG_SSE2 -DRTE_MACHINE_CPUFLAG_SSE3 -DRTE_MACHINE_CPUFLAG_SSSE3 -DRTE_MACHINE_CPUFLAG_SSE4_1 -DRTE_MACHINE_CPUFLAG_SSE4_2 -DRTE_MACHINE_CPUFLAG_AES -DRTE_MACHINE_CPUFLAG_PCLMULQDQ -DRTE_MACHINE_CPUFLAG_AVX -DRTE_MACHINE_CPUFLAG_RDRAND -DRTE_MACHINE_CPUFLAG_FSGSBASE -DRTE_MACHINE_CPUFLAG_F16C -DRTE_MACHINE_CPUFLAG_AVX2 -I/data/f-stack/dpdk/examples/kni/build/include -I/data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include -include /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_config.h -D_GNU_SOURCE -O3 -DALLOW_EXPERIMENTAL_API -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -Wpointer-arith -Wcast-align -Wnested-externs -Wcast-qual -Wformat-nonliteral -Wformat-security -Wundef -Wwrite-strings -Wdeprecated main.o -L/data/f-stack/dpdk/x86_64-native-linuxapp-gcc/lib -Wl,-lrte_flow_classify -Wl,--whole-archive -Wl,-lrte_pipeline -Wl,--no-whole-archive -Wl,--whole-archive -Wl,-lrte_table -Wl,--no-whole-archive -Wl,--whole-archive -Wl,-lrte_port -Wl,--no-whole-archive -Wl,-lrte_pdump -Wl,-lrte_distributor -Wl,-lrte_ip_frag -Wl,-lrte_meter -Wl,-lrte_lpm -Wl,--whole-archive -Wl,-lrte_acl -Wl,--no-whole-archive -Wl,-lrte_jobstats -Wl,-lrte_metrics -Wl,-lrte_bitratestats -Wl,-lrte_latencystats -Wl,-lrte_power -Wl,-lrte_efd -Wl,-lrte_bpf -Wl,--whole-archive -Wl,-lrte_cfgfile -Wl,-lrte_gro -Wl,-lrte_gso -Wl,-lrte_hash -Wl,-lrte_member -Wl,-lrte_vhost -Wl,-lrte_kvargs -Wl,-lrte_mbuf -Wl,-lrte_net -Wl,-lrte_ethdev -Wl,-lrte_bbdev -Wl,-lrte_cryptodev -Wl,-lrte_security -Wl,-lrte_compressdev -Wl,-lrte_eventdev -Wl,-lrte_rawdev -Wl,-lrte_timer -Wl,-lrte_mempool -Wl,-lrte_mempool_ring -Wl,-lrte_ring -Wl,-lrte_pci -Wl,-lrte_eal -Wl,-lrte_cmdline -Wl,-lrte_reorder -Wl,-lrte_sched -Wl,-lrte_kni -Wl,-lrte_common_cpt -Wl,-lrte_common_octeontx -Wl,-lrte_common_dpaax -Wl,-lrte_bus_pci -Wl,-lrte_bus_vdev -Wl,-lrte_bus_dpaa -Wl,-lrte_bus_fslmc -Wl,-lrte_mempool_bucket -Wl,-lrte_mempool_stack -Wl,-lrte_mempool_dpaa -Wl,-lrte_mempool_dpaa2 -Wl,-lrte_pmd_af_packet -Wl,-lrte_pmd_ark -Wl,-lrte_pmd_atlantic -Wl,-lrte_pmd_avf -Wl,-lrte_pmd_avp -Wl,-lrte_pmd_axgbe -Wl,-lrte_pmd_bnxt -Wl,-lrte_pmd_bond -Wl,-lrte_pmd_cxgbe -Wl,-lrte_pmd_dpaa -Wl,-lrte_pmd_dpaa2 -Wl,-lrte_pmd_e1000 -Wl,-lrte_pmd_ena -Wl,-lrte_pmd_enetc -Wl,-lrte_pmd_enic -Wl,-lrte_pmd_fm10k -Wl,-lrte_pmd_failsafe -Wl,-lrte_pmd_i40e -Wl,-lrte_pmd_ixgbe -Wl,-lrte_pmd_kni -Wl,-lrte_pmd_lio -Wl,-lrte_pmd_nfp -Wl,-lrte_pmd_null -Wl,-lrte_pmd_qede -Wl,-lrte_pmd_ring -Wl,-lrte_pmd_softnic -Wl,-lrte_pmd_sfc_efx -Wl,-lrte_pmd_tap -Wl,-lrte_pmd_thunderx_nicvf -Wl,-lrte_pmd_vdev_netvsc -Wl,-lrte_pmd_virtio -Wl,-lrte_pmd_vhost -Wl,-lrte_pmd_ifc -Wl,-lrte_pmd_vmxnet3_uio -Wl,-lrte_bus_vmbus -Wl,-lrte_pmd_netvsc -Wl,-lrte_pmd_bbdev_null -Wl,-lrte_pmd_null_crypto -Wl,-lrte_pmd_octeontx_crypto -Wl,-lrte_pmd_crypto_scheduler -Wl,-lrte_pmd_dpaa2_sec -Wl,-lrte_pmd_dpaa_sec -Wl,-lrte_pmd_caam_jr -Wl,-lrte_pmd_virtio_crypto -Wl,-lrte_pmd_octeontx_zip -Wl,-lrte_pmd_qat -Wl,-lrte_pmd_skeleton_event -Wl,-lrte_pmd_sw_event -Wl,-lrte_pmd_dsw_event -Wl,-lrte_pmd_octeontx_ssovf -Wl,-lrte_pmd_dpaa_event -Wl,-lrte_pmd_dpaa2_event -Wl,-lrte_mempool_octeontx -Wl,-lrte_pmd_octeontx -Wl,-lrte_pmd_opdl_event -Wl,-lrte_pmd_skeleton_rawdev -Wl,-lrte_pmd_dpaa2_cmdif -Wl,-lrte_pmd_dpaa2_qdma -Wl,-lrte_bus_ifpga -Wl,-lrte_pmd_ifpga_rawdev -Wl,--no-whole-archive -Wl,-lrt -Wl,-lm -Wl,-lnuma -Wl,-ldl -Wl,-export-dynamic -Wl,-export-dynamic -L/data/f-stack/dpdk/examples/kni/build/lib -L/data/f-stack/dpdk/x86_64-native-linuxapp-gcc/lib -Wl,--as-needed -Wl,-Map=kni.map -Wl,--cref diff --git a/dpdk/examples/kni/build/.main.o.cmd b/dpdk/examples/kni/build/.main.o.cmd deleted file mode 100644 index 0139eb198..000000000 --- a/dpdk/examples/kni/build/.main.o.cmd +++ /dev/null @@ -1 +0,0 @@ -cmd_main.o = gcc -Wp,-MD,./.main.o.d.tmp -m64 -pthread -march=native -DRTE_MACHINE_CPUFLAG_SSE -DRTE_MACHINE_CPUFLAG_SSE2 -DRTE_MACHINE_CPUFLAG_SSE3 -DRTE_MACHINE_CPUFLAG_SSSE3 -DRTE_MACHINE_CPUFLAG_SSE4_1 -DRTE_MACHINE_CPUFLAG_SSE4_2 -DRTE_MACHINE_CPUFLAG_AES -DRTE_MACHINE_CPUFLAG_PCLMULQDQ -DRTE_MACHINE_CPUFLAG_AVX -DRTE_MACHINE_CPUFLAG_RDRAND -DRTE_MACHINE_CPUFLAG_FSGSBASE -DRTE_MACHINE_CPUFLAG_F16C -DRTE_MACHINE_CPUFLAG_AVX2 -I/data/f-stack/dpdk/examples/kni/build/include -I/data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include -include /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_config.h -D_GNU_SOURCE -O3 -DALLOW_EXPERIMENTAL_API -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wold-style-definition -Wpointer-arith -Wcast-align -Wnested-externs -Wcast-qual -Wformat-nonliteral -Wformat-security -Wundef -Wwrite-strings -Wdeprecated -o main.o -c /data/f-stack/dpdk/examples/kni/main.c diff --git a/dpdk/examples/kni/build/.main.o.d b/dpdk/examples/kni/build/.main.o.d deleted file mode 100644 index e45e8805b..000000000 --- a/dpdk/examples/kni/build/.main.o.d +++ /dev/null @@ -1,150 +0,0 @@ -dep_main.o = /data/f-stack/dpdk/examples/kni/main.c /usr/include/stdc-predef.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_config.h \ - /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ - /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ - /usr/include/gnu/stubs-64.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h \ - /usr/include/bits/types.h /usr/include/bits/typesizes.h \ - /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdarg.h \ - /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ - /usr/include/bits/stdio.h /usr/include/stdlib.h \ - /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ - /usr/include/endian.h /usr/include/bits/endian.h \ - /usr/include/bits/byteswap.h /usr/include/bits/byteswap-16.h \ - /usr/include/xlocale.h /usr/include/sys/types.h /usr/include/time.h \ - /usr/include/sys/select.h /usr/include/bits/select.h \ - /usr/include/bits/sigset.h /usr/include/bits/time.h \ - /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ - /usr/include/alloca.h /usr/include/bits/stdlib-float.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdint.h \ - /usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/inttypes.h \ - /usr/include/string.h /usr/include/bits/string.h \ - /usr/include/bits/string2.h /usr/include/sys/queue.h \ - /usr/include/errno.h /usr/include/bits/errno.h \ - /usr/include/linux/errno.h /usr/include/asm/errno.h \ - /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ - /usr/include/getopt.h /usr/include/netinet/in.h \ - /usr/include/sys/socket.h /usr/include/sys/uio.h /usr/include/bits/uio.h \ - /usr/include/bits/socket.h /usr/include/bits/socket_type.h \ - /usr/include/bits/sockaddr.h /usr/include/asm/socket.h \ - /usr/include/asm-generic/socket.h /usr/include/asm/sockios.h \ - /usr/include/asm-generic/sockios.h /usr/include/bits/in.h \ - /usr/include/linux/if.h /usr/include/linux/types.h \ - /usr/include/asm/types.h /usr/include/asm-generic/types.h \ - /usr/include/asm-generic/int-ll64.h /usr/include/asm/bitsperlong.h \ - /usr/include/asm-generic/bitsperlong.h /usr/include/linux/posix_types.h \ - /usr/include/linux/stddef.h /usr/include/asm/posix_types.h \ - /usr/include/asm/posix_types_64.h /usr/include/asm-generic/posix_types.h \ - /usr/include/linux/socket.h /usr/include/linux/hdlc/ioctl.h \ - /usr/include/linux/if_tun.h /usr/include/linux/if_ether.h \ - /usr/include/linux/filter.h /usr/include/fcntl.h \ - /usr/include/bits/fcntl.h /usr/include/bits/fcntl-linux.h \ - /usr/include/bits/stat.h /usr/include/sys/ioctl.h \ - /usr/include/bits/ioctls.h /usr/include/asm/ioctls.h \ - /usr/include/asm-generic/ioctls.h /usr/include/linux/ioctl.h \ - /usr/include/asm/ioctl.h /usr/include/asm-generic/ioctl.h \ - /usr/include/bits/ioctl-types.h /usr/include/sys/ttydefaults.h \ - /usr/include/unistd.h /usr/include/bits/posix_opt.h \ - /usr/include/bits/environments.h /usr/include/bits/confname.h \ - /usr/include/signal.h /usr/include/bits/signum.h \ - /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ - /usr/include/bits/sigcontext.h /usr/include/bits/sigstack.h \ - /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_common.h \ - /usr/include/ctype.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/limits.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/syslimits.h \ - /usr/include/limits.h /usr/include/bits/posix1_lim.h \ - /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ - /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_config.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_log.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_memory.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_compat.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_memcpy.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_vect.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/generic/rte_vect.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/x86intrin.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/ia32intrin.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/mmintrin.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/xmmintrin.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/mm_malloc.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/emmintrin.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/pmmintrin.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/tmmintrin.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/smmintrin.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/popcntintrin.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/wmmintrin.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/immintrin.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/avxintrin.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/avx2intrin.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/lzcntintrin.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/bmiintrin.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/bmi2intrin.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/fmaintrin.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/f16cintrin.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/rtmintrin.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/xtestintrin.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/rdseedintrin.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/prfchwintrin.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/fxsrintrin.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/xsaveintrin.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/xsaveoptintrin.h \ - /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/adxintrin.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_eal.h \ - /usr/include/sched.h /usr/include/bits/sched.h /usr/include/bits/timex.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_per_lcore.h \ - /usr/include/pthread.h /usr/include/bits/setjmp.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_bus.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_dev.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_pci_dev_feature_defs.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_launch.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_atomic.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/generic/rte_atomic.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_atomic_64.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_lcore.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_branch_prediction.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_interrupts.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_eal_interrupts.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_bus_pci.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_debug.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_log.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_branch_prediction.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_pci.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_ether.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_random.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_mbuf.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_mempool.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_spinlock.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/generic/rte_spinlock.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_pause.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/generic/rte_pause.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_rtm.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_cpuflags.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/generic/rte_cpuflags.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_common.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_pause.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_cycles.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/generic/rte_cycles.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_ring.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_memzone.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_ring_generic.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_prefetch.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/generic/rte_prefetch.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_mbuf_ptype.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_byteorder.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/generic/rte_byteorder.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_byteorder_64.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_ethdev.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_devargs.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_errno.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_ether.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_eth_ctrl.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_dev_info.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_ethdev_core.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_string_fns.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_cycles.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_malloc.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/rte_kni.h \ - /data/f-stack/dpdk/x86_64-native-linuxapp-gcc/include/exec-env/rte_kni_common.h diff --git a/dpdk/examples/kni/build/_install b/dpdk/examples/kni/build/_install deleted file mode 100644 index e69de29bb..000000000 diff --git a/dpdk/examples/kni/build/_postbuild b/dpdk/examples/kni/build/_postbuild deleted file mode 100644 index e69de29bb..000000000 diff --git a/dpdk/examples/kni/build/_postinstall b/dpdk/examples/kni/build/_postinstall deleted file mode 100644 index e69de29bb..000000000 diff --git a/dpdk/examples/kni/build/_preinstall b/dpdk/examples/kni/build/_preinstall deleted file mode 100644 index e69de29bb..000000000 diff --git a/dpdk/examples/kni/build/app/kni b/dpdk/examples/kni/build/app/kni deleted file mode 100644 index 1c3fc4c91ce8232f7c5d4ad8770969b05bcc4e92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7980792 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%0AIYV0$d*l;{~&u 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

    kNGB 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¥*#@S)O`!dbRQVMrm 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�QCu&{gmCtoQ3v(A^jN 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

    )F^C&#n59VoSqeoi=@R=-G1 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
    ~r9Q&!Yld{?d-j!zS@{(v`@HiwdH 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%0DjtGigEilyEgsMo&aiNm7au}>#maSVvMWS!<2 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 z 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 z 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 z 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

    ?}g)ENt83fYv74RL_9@B9}j*7e0NJt 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�OVHxX2i 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


    Jo+N8_K{8P#la))J%1*`m$OnWL$5yvw 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

    G2Th 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

    Kchr@;RDTNJdH)8D&R_6E+Cl=b`j zpSk^Iee4J}7#mju?2yaag+T?r8%_lkz#JAU=)8N+BBr+S5XZw+Cc3D(v;>O2b8WxI z!d>e{cAJh){-eOWfS66C=gz<`J$hbx$GITw?#!rslJMNejOxj@$fuBQEOto4HB{nOoyYd1T~FIoq5UPF z2)ul%>@xSc3{a)l{%!(~xFe_1&WaMc0Rd6t&R@+EFwOW*WJNT^;(R}ECsEB5(w*pc zun-CVe>|>R?Y?$IcxfxdEVO7!u^X>zW>1@VOyg(Zt;H9nhAid(A2;OJJX@y^*&f>w z;K_9pWjn_nif83m!Wjjdb5Y_^&4RA|OLp%O(`3kn?|)Y+|Gm}~KCt|5n|1%qe=@IH zw3AD<-VMEIC%eg$gHTg~!v02boXQ#E?bC~ywmkU1WIx4+^eMjeBU{|!B;+OuasYX? zpJ`Q1c^|DZ1ZME^&qy~#i%gL_a@}$!q%~;B(xaQG(}uUao4z2PZYIF&%S4-|`gNoj zesG`q|I4pmRhu?U{TETcsddHdpb_sB>d)4Ar5Ue92laEZt*76)^zOt=>5@$89Us29 zw<|f+ARd?~kRSU^bt(qjGx77X_4UiC@0n#mZ$g>+7H8^XYq0e_IsH@W`_rQaj;4PL zGWB&I?@zT?Yw9b`?cWWbR^QB=`cBW(*Pf{_l&LS%zf%uT--^YQa!2l1x*z;pvD?Sb zD^C=DT6|8J{O$Y8?*#d`UgYERe!L7t)4V$#F#s9l`~C^5E~my7^}!GIYh!qVmIn?yiUgEqE{N@<-Qrs>M%pjA1AY_Zi_2 z`0+~9$%A~%gaL3zZg^P4D5%5s^2es4x4psBg!u%EZmN(`GibJIAn36(A&Pxy__mfZ zCfFOm8Nb;ezj!V@25dz-HWk{uC_{q_$PM`%L#^CI(X*g!L*Gxw@yU5EeJLzUZu}nh zlf}LHEi)MTK+|i}SD#*X?|ji`w3=r9Yy1>9d&a|eK6%wJh0E%KscPtWt6%bseC|nw zl|n7|0nr#9`HI-J&2Kk2*G?!5n5o}cPx@TuDO4WpH~v^_>5mm0pUTnKMe7V9ToD>( znMZ}(K|3wZG5U}{Ab*DpQ-NR}Ue+pS+iK_MrD7nXjt$NX&XhyV%etuv*Ww5=yomdf zADZ8y#S8h>ZMEBr!p)blWVnL4o8rFf8Mo%Sx3w~rS!Xkx&~QH6$K@>CQb=j*aOSku z7E9I|<+RrEfDtviuccLIRi_>)_1LI!{+~37KUFnte}+4DC&gDCLYt295U%L7<8en$ zdk};R^+Gs*52n{f{ytCzWr64?)OG$Alp|+;4>PEEizBfGM zNOoNuo@~>gS)o-g(lit5MZV;LmGjQaeAsS2yzG6^ei*9{HT<+&Ivu$=scjQC03F+kHNM)OLwp!=9B#hD0P?zdI0A3eRk3e+!&-D#Gu-Wk@IQZaP+58_y49z_ z2u5aw(eWE;8oAh1x4(AXkvCFwMM#oCoTU(yn?SkrS#&nTzkf^lO#Sy{^O>uWyw54K zL@jsZ2z4a9Y@LP9yuLZ#dzYL#;EPUUpnIa{OmcL4wez%O=8vcPZn#=k=nvs)pnUz7 z8Ok>#*!OeQgzW!I=+*3CCM*rSiAJhXE3*RMgRE6w+I72tm)~NzLia~{t3DW4XQ$Oj zcJ4RgFlwoP>3Uq&O(RYSEjM5G2ukhZDgY06E_X08ZK2Bp1i z7LU?geV^-9k4aAwRrKZPHM31>xcNSshagpMXnNC4)!L$jxW7%kGewI-O-H228WnJZ`d^XYxaL?pnx?PmZNyOW z@Ov4%n8Ur|((L_~`DiPv$fbkcgm(;C{~@1HV74ens8qMJp79U%ES9i;jiw&Ci zu$i`jLOR1q9rJ(y7_coCe6Q{ZM4yk3Q7;=efAicKZPWWSlzxpNX_06)Ui@ z@61Q9_kO%j#$=!^(Wi^vF?7+;k#AbhRuO~n(nI6U?&OE%P2YgFj?1fRZf}~+dG%@$ zx)l;cY|jvBI#+~wT`fZQ-rbS#Pdmdu?%;CHQGaO~7+Z9s=&InD6MrQ6VMSAE;(G3^ z{k#o{Y#n%d?)2AdY|#%ydwcGxc6O-4Uf&L1`gX9*{YLz-C0@ArK6tgE%#Fu#Y*0?0 z*qkDx%rBJr?zg-k(uTce?frlrqF>D_7jhM>$N!->Eqv!KpB5h3ixvX4gjxyc;02I} zeCS|{p@SyMCC8)lDt5L#OlW%VQ_(+?=N zFWs9=fwV%>W$4~a<=a2qJ3*PhYUth=W5`K# z>Llk0O9ZXpgFq_g;?;Yd5Tvlctd|w7NciT6+!wy?qH6DzKWe45Ni4FLOPlBz2vp|m zo-I*sX{mzKA){%;kv5*zhYCXD&fErtdY=ApKILo@lVA@31AML6((`ItEmOWqgvG>4q10fN zdb8&-Lo<6`rC*;Cf8e+!nm^bTKmI`8ynr|QUyMI6lpssM-~jOl?tjzcng~nEjh?yH z`|O;cmwn<7)B*^}Ne5klP2v9I4_rWX{`#^(8h+ENdGMevYQr+=TuPG_hk^e`H_REA zO<2F@iqFTBYZ7ss19(1XaXk699?oj#&$#aOdv3UZ*BhoS=Fi!r-7vmeRm|;Lzk4oW zA6usw=f8yumkXKN8xP@9=GA%*HGR;Nj=R5FB5cN&yQpWX-M`&)3wduGAIE9DvbL=0 zt$1a;#Mt?f-rmT@HwA`*19kJuMq%sb9L(Ev2T@%m=kNON_F&w>_jB748RQWLvDrSE zeo^;Z*}%WmmNj~Og|6n6*7~2o))4D1_;zG9=*nL2EVaN{x-JfqfQKYf2G?Cuv1L^; zud8nvCs*03koVeU7<4KlApz&}CGM0NJNAXH0mMcFh?O~jNLoNp;>KF(F( zHr=_!e0I((s@Ssd78S!{ItNWAIo&G~<6$kI%M8+&vflL2(X{vc)qXDda-RkCXFiKf zxoz<_WxKDnul=8l2ljT?dg}&R`@g>5%l+?n`QOneVQCSVS!jcLm5y$UBvy$X17Hos zO^3mKan7G}$RBgZ)wzdquG2P)9#*v5MK0B$H;f+ExaLx3?pQMdUUFUxooJ-kt-Y4; zCvg+_1bTa4NFh(6$@TJLSzo#4s)G|NrT0VXioMApKc@_@?frW4nmTw*9l)gHklp0& z8^Q}k4r?ymt$lb>{=E8d^DjtIR8S9RyGfik2Zf+r! z$Qgxg2_9k&ff#Cw5-TNEKqr5s#A;_qY53MPI@Bj-p^QN~wjLTA^d@Emb)~ywl~>h) z(zD}E!MouFrbBknQ8yloyZxWKdM3p9B1|J&s=-9r#FUt0wHnxk@oH0x~Ag|*XTsc#X|?W6GAi>tYXgNn4}VTJL$?zI@qd5H0*ithcf zwIDGz9rIdZ7<3HAY#dt%EOugf&!yj@(#~WjjWaD{Ilndh3@hv?KFC3;B>fyuUSc4o zO?75*ff7YK#~)h~cdv-!UQJQ9;atxuu&MZ#K?) zj+BBK|2m?|_6e79@P5N(klT1J5s8}FFoG%m3e)O!=HJ)d_HnxCn?M=^K(m^S({13A zf_n-sDzo`|Va}jrGx z^G@PR>!eFx6*#d>!B zfC%UY5w#<{;1#~vj6`5=#4=F)bl~>R4CV@~2p7$&E0k#&lcewB43qIE&yCkoNjLrI z4q0rYlNZb}os7CoF-*c*A|NHCCD*`Q6GhU$je2tbQ>2!OW$6zAadyAW2~C4L4H%&C zG@9|zQwe5z-V;S!$`-zHfIdtL4SNi1dVqTp&oh)+CV@~G9S&$I|AB?PO!pd046m!pxVW4(O6`W#!rfJUCauEDU zEcNu!+O!(XG4Shy=qu@AFkeyU?MavJwJ3i>edC{^L<#jVewq;eNf4g!ls8Hkj=BR4 zx_1TW9$t8draa@cMFuq=b;cK_<=dIuV31ze>4BZ?vY1+K&?FQBGshOQ^THoZ2e&L@ z5_QwZ$*!?O2rB6IuW6haYUmn!c%HB~J(U`It(ZpGf&OLW(bsi3U(Gse+L~TWH@vz1 zObCowto!s2$<#~#nW2voOr)7XWid}&l6z*6F;i;ic99~~hWR92H_thp;^t~DlOfh=LI8?#t)rq))?iwrzdEQIj zUbjV(L&XcMzLT}ixGFp~gl&6BEk|HRl1Po&yzlH(~i=xyYC*C*Nybo$hxrKi$?U}bY6LxceqxcPjt`i5Elc%2QX zA_@-nEwixs%-f%J7N%K~F5Fm?_n6GFsusnL3^jGe-4Ug2K_gEfk?DAWfOm3@#NxWt zhDuu4Tq-t@=?TBr8cjZ8-a<|9^}JT?{=C#OlP@$K-gAlHpSaIgPm8-p)QtX)`0CLU zK9#SI`b~(lp7RsKS$n^%hpkOr+^v{_RzgE~FzcGYFn<1h7;UfNC7o*QP{B;8V7;&F zxc-W&5PxrIF5SU^%zKG_FM@|fj7W>xS^4FWR_!;{&K@J?>D-d_cC0a*`#n>T4Mdi4 zSS<0!-`fxIE`MJlfKs^SKMi2}UpZT=mYZ?AnbpR_{JlNclCJW%B&=r5p2U40K{%*8 zR9UVYq94ejr=0bj{P2dkPdiWKkoCsS{YD&mpvYN|sg#7IOccA?#sujl3eXVuB zFzi>!M+ZWmD}T1cPX z{GRQTqBddN{#_iZTmHc&QPXmbzdva$94Oou75t70%qSJ{OQSoJ(q2C1627f`OFvM{ zaDiybte<H_tJWkKk*G_{fwV&M4u~pai`T)Y|kz~*z{&4H?*Q& z{9uARbcb1^D-Hey%;6?ei68v$5kArP?U!lrP+$|x%y(c4*5EZcYtV#BIw`XTJ5|^I z*5GJ={Uhhi-OMpHk<2A>n8XCW4QEKg5{=g@+TrT zd`*82NE-SVM{!{O!Dn6wpSdC2+`+p*nvGi&qn8SJHoMn~{qVbH%vFd}HtvDW6XBC? zEnPzmtJ?X)=1-uWtG6-}{XXn5Q+ za(i*6C|1$fvh>{s9s9}%;e`(EWfyE#PSE+0)G(>p(2KDcO=D0u&gbkKC?n!?7OU<0 zxLt`s5QA}+jgL9!Xg!`!j{Zk7Mt2$l5i5}SCCpVr&T9Ovi8|DO$9D`M((lr4us>Kh zup(DUxVLafzek3)NM?tZo&aUw-e=M0^dT&*n)lnHPDk!~ZP9w=&H^*<-zb>qG;U_v zzX4Y{&p@c}g1zk17i^{9?a>qt7Ho&VV4FtzsJx%;q<@HlhL9l#uuwzk&uO84%NkU8 zTXs-gYtL$`yj(OuSAI3Lrc<_+Sw(pU@4_u>NiZw-9<5wyt_UGI&&$s@eAMw+{Vrl( z)ju9vvyZp?kLRv!o0kEluQht;8JMN@zWvT?+H8IP$XDl-s0m$!b8>&R5=GN{tvJbQ z_tsK15qFoA3#r^i&#B#E?_zCl*r{Qg_u97S`gU_7A335H6J_O9pRqAf)GX}=y(UAR^^Okqpd|grgcEwI}#=bk=@y0-I zw9^GJ2I1_+Ijk$5zjBtU#vQ3d7{YHcRq3}#?@&A*MUO&$cscK%=%(BU)uGC_!V6C3 zQ!I7S$GZYTtcGl=~VvY z3}_t%{|5t#ITxAxU(IN8hN2O9<(Z+xDqo*-am;xwmby4EZ+pc?$BR1K|C^zlMvqce zpE{6<8pv1plf@_ZmRdl^Ua1XFG3Sqk78a$K^K3BHg4Xf!-eSIxxCo_dokpuWUdxxi zPyR|tUtZl3DTVIUv-37QYyL`uBVSI&(QY&8+~K-2XRet@^wO+1g9<`~_^>YYsR`N* zkN`cl=ARTZ|7OyeeDiK&3rgZI@jgUUtGrjk2rtyZyPHgyA;C4D(&~6z&{E=FH3B7E zgoCene4=sos|^P8yce#`qqIuQ{VT+Jl;r|hI~M-~=@-fO0kcrGN(0>c)%0A!_L_YJ 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≤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

    GuQl`-0y+qKKK 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%0D>dqYHfnw{Gq16wK)blCzRSsPL&oplG%u<@ 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

    #}u8pDB5%Z=o5!j4-pYW0 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≤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 N?e{MA6UU>5k{j{Dn+L7qHG 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⋘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