Merge ~arif-ali/ubuntu/+source/dpdk:ubuntu/jammy-devel-lp2067480 into ubuntu/+source/dpdk:ubuntu/jammy-devel
- Git
- lp:~arif-ali/ubuntu/+source/dpdk
- ubuntu/jammy-devel-lp2067480
- Merge into ubuntu/jammy-devel
Status: | Merged |
---|---|
Merged at revision: | 7405bf90b95f630c59735a1c4ecdb9644c616545 |
Proposed branch: | ~arif-ali/ubuntu/+source/dpdk:ubuntu/jammy-devel-lp2067480 |
Merge into: | ubuntu/+source/dpdk:ubuntu/jammy-devel |
Diff against target: |
11874 lines (+3625/-1514) 269 files modified
.mailmap (+19/-3) VERSION (+1/-1) app/dumpcap/main.c (+12/-4) app/pdump/main.c (+15/-8) app/proc-info/main.c (+2/-1) app/test-bbdev/test_bbdev_perf.c (+34/-34) app/test-pmd/bpf_cmd.c (+1/-1) app/test-pmd/cmdline.c (+286/-292) app/test-pmd/cmdline_flow.c (+3/-12) app/test-pmd/config.c (+9/-6) app/test-pmd/csumonly.c (+6/-11) app/test-pmd/ieee1588fwd.c (+12/-3) app/test-pmd/parameters.c (+2/-2) app/test-pmd/testpmd.c (+38/-41) app/test-pmd/testpmd.h (+2/-1) app/test/test_common.c (+17/-14) app/test/test_cryptodev.c (+16/-3) app/test/test_cryptodev_asym.c (+18/-15) app/test/test_eal_flags.c (+3/-3) app/test/test_event_crypto_adapter.c (+10/-14) app/test/test_fbarray.c (+186/-21) app/test/test_link_bonding.c (+1/-1) app/test/test_link_bonding_rssconf.c (+0/-1) app/test/test_power_cpufreq.c (+18/-3) buildtools/pmdinfogen.py (+7/-6) config/arm/arm32_armv8_linux_gcc (+1/-0) config/arm/arm64_armada_linux_gcc (+1/-0) config/arm/arm64_armv8_linux_clang_ubuntu (+1/-0) config/arm/arm64_armv8_linux_gcc (+1/-0) config/arm/arm64_bluefield_linux_gcc (+1/-0) config/arm/arm64_centriq2400_linux_gcc (+1/-0) config/arm/arm64_cn10k_linux_gcc (+1/-0) config/arm/arm64_dpaa_linux_gcc (+1/-0) config/arm/arm64_emag_linux_gcc (+1/-0) config/arm/arm64_graviton2_linux_gcc (+1/-0) config/arm/arm64_kunpeng920_linux_gcc (+1/-0) config/arm/arm64_kunpeng930_linux_gcc (+1/-0) config/arm/arm64_n1sdp_linux_gcc (+1/-0) config/arm/arm64_n2_linux_gcc (+1/-0) config/arm/arm64_octeontx2_linux_gcc (+1/-0) config/arm/arm64_stingray_linux_gcc (+1/-0) config/arm/arm64_thunderx2_linux_gcc (+1/-0) config/arm/arm64_thunderxt88_linux_gcc (+1/-0) config/x86/cross-mingw (+1/-0) debian/changelog (+8/-0) devtools/git-log-fixes.sh (+1/-1) doc/guides/nics/features.rst (+20/-14) doc/guides/prog_guide/img/mbuf1.svg (+1/-1) doc/guides/prog_guide/img/mbuf2.svg (+3/-3) doc/guides/prog_guide/mbuf_lib.rst (+4/-4) doc/guides/rel_notes/release_21_11.rst (+639/-0) doc/guides/sample_app_ug/l2_forward_crypto.rst (+1/-1) doc/guides/sample_app_ug/l3_forward_power_man.rst (+3/-0) doc/guides/testpmd_app_ug/testpmd_funcs.rst (+1/-1) drivers/baseband/la12xx/bbdev_la12xx.c (+4/-0) drivers/bus/dpaa/base/fman/fman.c (+27/-2) drivers/bus/dpaa/base/fman/fman_hw.c (+5/-4) drivers/bus/dpaa/base/qbman/process.c (+4/-3) drivers/bus/dpaa/base/qbman/qman.c (+31/-23) drivers/bus/dpaa/dpaa_bus.c (+4/-1) drivers/bus/fslmc/qbman/qbman_debug.c (+32/-17) drivers/bus/pci/linux/pci_uio.c (+4/-1) drivers/bus/pci/linux/pci_vfio.c (+14/-14) drivers/bus/pci/pci_common_uio.c (+29/-19) drivers/bus/vdev/vdev.c (+1/-1) drivers/common/cnxk/roc_irq.c (+1/-1) drivers/common/cnxk/roc_npc.c (+26/-7) drivers/common/cnxk/roc_platform.c (+1/-1) drivers/common/cnxk/roc_platform.h (+2/-1) drivers/common/dpaax/caamflib/desc/pdcp.h (+20/-0) drivers/common/dpaax/caamflib/desc/sdap.h (+9/-1) drivers/common/dpaax/dpaax_iova_table.c (+6/-7) drivers/common/iavf/iavf_prototype.h (+1/-0) drivers/common/iavf/version.map (+1/-0) drivers/common/mlx5/mlx5_common_utils.h (+1/-1) drivers/common/mlx5/mlx5_devx_cmds.c (+3/-3) drivers/common/mlx5/mlx5_devx_cmds.h (+1/-0) drivers/common/mlx5/mlx5_prm.h (+30/-3) drivers/common/mlx5/windows/mlx5_win_defs.h (+0/-12) drivers/compress/mlx5/mlx5_compress.c (+2/-2) drivers/crypto/bcmfs/bcmfs_device.c (+2/-2) drivers/crypto/cnxk/cnxk_ae.h (+21/-9) drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c (+2/-1) drivers/crypto/ipsec_mb/meson.build (+1/-1) drivers/crypto/mlx5/mlx5_crypto.c (+1/-1) drivers/crypto/openssl/rte_openssl_pmd.c (+20/-29) drivers/dma/idxd/dpdk_idxd_cfg.py (+35/-11) drivers/dma/idxd/idxd_pci.c (+1/-1) drivers/event/cnxk/cnxk_eventdev.c (+1/-1) drivers/event/octeontx/ssovf_evdev.c (+13/-3) drivers/event/sw/iq_chunk.h (+0/-2) drivers/event/sw/sw_evdev.c (+1/-4) drivers/net/af_packet/rte_eth_af_packet.c (+3/-2) drivers/net/af_xdp/rte_eth_af_xdp.c (+10/-0) drivers/net/ark/ark_ethdev_tx.c (+15/-9) drivers/net/axgbe/axgbe_common.h (+0/-2) drivers/net/axgbe/axgbe_dev.c (+40/-27) drivers/net/axgbe/axgbe_ethdev.c (+5/-0) drivers/net/axgbe/axgbe_ethdev.h (+2/-0) drivers/net/axgbe/axgbe_mdio.c (+38/-6) drivers/net/axgbe/axgbe_phy_impl.c (+21/-13) drivers/net/bnx2x/bnx2x.c (+7/-12) drivers/net/bnx2x/bnx2x_stats.c (+0/-4) drivers/net/bnxt/bnxt_ethdev.c (+0/-1) drivers/net/bnxt/bnxt_txr.c (+12/-5) drivers/net/bnxt/tf_core/tf_msg.c (+1/-1) drivers/net/cnxk/cn10k_ethdev.c (+16/-2) drivers/net/cnxk/cn10k_tx.h (+2/-1) drivers/net/cnxk/cn9k_ethdev.c (+15/-2) drivers/net/cnxk/cnxk_ethdev.c (+8/-1) drivers/net/cnxk/cnxk_ethdev.h (+7/-0) drivers/net/cnxk/cnxk_ethdev_ops.c (+7/-0) drivers/net/dpaa/dpaa_ethdev.c (+4/-2) drivers/net/dpaa/dpaa_rxtx.c (+1/-1) drivers/net/e1000/base/e1000_base.c (+1/-1) drivers/net/e1000/em_ethdev.c (+3/-0) drivers/net/e1000/igb_ethdev.c (+2/-2) drivers/net/ena/base/ena_plat_dpdk.h (+0/-6) drivers/net/ena/ena_ethdev.c (+5/-10) drivers/net/fm10k/fm10k_ethdev.c (+33/-6) drivers/net/hns3/hns3_common.c (+1/-1) drivers/net/hns3/hns3_ethdev.c (+3/-1) drivers/net/hns3/hns3_ethdev.h (+8/-0) drivers/net/hns3/hns3_ethdev_vf.c (+2/-0) drivers/net/hns3/hns3_fdir.c (+1/-0) drivers/net/hns3/hns3_flow.c (+6/-1) drivers/net/hns3/hns3_intr.c (+6/-0) drivers/net/hns3/hns3_regs.c (+3/-11) drivers/net/hns3/hns3_rss.c (+2/-4) drivers/net/hns3/hns3_rss.h (+2/-4) drivers/net/hns3/hns3_rxtx.c (+64/-76) drivers/net/i40e/base/i40e_adminq.c (+17/-2) drivers/net/i40e/base/i40e_common.c (+4/-38) drivers/net/i40e/base/i40e_diag.c (+6/-6) drivers/net/i40e/base/i40e_nvm.c (+8/-8) drivers/net/i40e/i40e_ethdev.c (+5/-1) drivers/net/i40e/i40e_flow.c (+65/-12) drivers/net/i40e/i40e_rxtx.c (+9/-0) drivers/net/i40e/i40e_rxtx_vec_avx512.c (+7/-0) drivers/net/iavf/iavf_ethdev.c (+6/-14) drivers/net/iavf/iavf_rxtx.c (+5/-1) drivers/net/iavf/iavf_rxtx_vec_avx512.c (+7/-0) drivers/net/iavf/iavf_vchnl.c (+3/-2) drivers/net/ice/base/ice_adminq_cmd.h (+3/-3) drivers/net/ice/base/ice_bitops.h (+2/-2) drivers/net/ice/base/ice_common.c (+4/-4) drivers/net/ice/base/ice_controlq.c (+21/-2) drivers/net/ice/base/ice_flex_pipe.c (+3/-5) drivers/net/ice/base/ice_lan_tx_rx.h (+3/-4) drivers/net/ice/base/ice_nvm.c (+54/-16) drivers/net/ice/base/ice_sched.c (+4/-5) drivers/net/ice/base/ice_switch.c (+4/-5) drivers/net/ice/ice_hash.c (+15/-9) drivers/net/ice/ice_rxtx.c (+8/-3) drivers/net/ice/ice_rxtx_vec_avx512.c (+7/-0) drivers/net/ionic/ionic_osdep.h (+22/-8) drivers/net/ixgbe/base/ixgbe_82599.c (+5/-3) drivers/net/ixgbe/base/ixgbe_phy.c (+5/-2) drivers/net/ixgbe/base/ixgbe_type.h (+1/-0) drivers/net/ixgbe/base/ixgbe_vf.c (+3/-3) drivers/net/ixgbe/ixgbe_ethdev.c (+17/-13) drivers/net/memif/rte_eth_memif.c (+9/-1) drivers/net/mlx5/linux/mlx5_ethdev_os.c (+13/-10) drivers/net/mlx5/linux/mlx5_os.c (+6/-5) drivers/net/mlx5/mlx5.c (+1/-1) drivers/net/mlx5/mlx5.h (+6/-1) drivers/net/mlx5/mlx5_ethdev.c (+10/-0) drivers/net/mlx5/mlx5_flow_aso.c (+3/-3) drivers/net/mlx5/mlx5_flow_dv.c (+7/-2) drivers/net/mlx5/mlx5_flow_flex.c (+19/-13) drivers/net/mlx5/mlx5_flow_meter.c (+2/-2) drivers/net/mlx5/mlx5_rx.c (+1/-1) drivers/net/mlx5/mlx5_rx.h (+1/-0) drivers/net/mlx5/mlx5_rxq.c (+12/-1) drivers/net/mlx5/mlx5_rxtx_vec_altivec.h (+7/-8) drivers/net/mlx5/mlx5_rxtx_vec_neon.h (+13/-14) drivers/net/mlx5/mlx5_rxtx_vec_sse.h (+4/-5) drivers/net/mlx5/mlx5_tx.c (+4/-4) drivers/net/mlx5/mlx5_txq.c (+8/-0) drivers/net/mlx5/mlx5_utils.c (+2/-1) drivers/net/mlx5/windows/mlx5_os.c (+5/-3) drivers/net/mvneta/mvneta_ethdev.c (+6/-0) drivers/net/netvsc/hn_ethdev.c (+9/-0) drivers/net/netvsc/hn_rxtx.c (+79/-10) drivers/net/nfb/nfb_rx.c (+1/-1) drivers/net/nfb/nfb_tx.c (+1/-1) drivers/net/nfp/meson.build (+1/-0) drivers/net/nfp/nfp_ethdev.c (+19/-6) drivers/net/ngbe/base/ngbe_devids.h (+1/-0) drivers/net/ngbe/base/ngbe_hw.c (+3/-0) drivers/net/ngbe/base/ngbe_regs.h (+2/-0) drivers/net/ngbe/ngbe_ethdev.c (+48/-31) drivers/net/ngbe/ngbe_ethdev.h (+1/-0) drivers/net/ngbe/ngbe_rxtx.c (+5/-0) drivers/net/ngbe/ngbe_rxtx.h (+2/-0) drivers/net/pcap/pcap_ethdev.c (+23/-16) drivers/net/sfc/sfc_mae.c (+5/-8) drivers/net/softnic/rte_eth_softnic_meter.c (+1/-0) drivers/net/tap/rte_eth_tap.c (+1/-1) drivers/net/tap/tap_flow.c (+1/-1) drivers/net/tap/tap_netlink.c (+2/-1) drivers/net/txgbe/base/meson.build (+1/-1) drivers/net/txgbe/base/txgbe_hw.c (+51/-9) drivers/net/txgbe/base/txgbe_hw.h (+1/-0) drivers/net/txgbe/base/txgbe_mng.c (+1/-0) drivers/net/txgbe/base/txgbe_osdep.h (+1/-0) drivers/net/txgbe/base/txgbe_regs.h (+6/-1) drivers/net/txgbe/base/txgbe_type.h (+1/-0) drivers/net/txgbe/txgbe_ethdev.c (+79/-50) drivers/net/txgbe/txgbe_ethdev.h (+1/-1) drivers/net/txgbe/txgbe_ethdev_vf.c (+18/-3) drivers/net/txgbe/txgbe_fdir.c (+3/-0) drivers/net/txgbe/txgbe_rxtx.c (+50/-35) drivers/net/txgbe/txgbe_rxtx.h (+2/-0) drivers/net/virtio/virtio_ethdev.c (+2/-0) drivers/net/virtio/virtio_user/vhost_user.c (+2/-1) drivers/net/virtio/virtio_user_ethdev.c (+1/-0) drivers/net/vmxnet3/vmxnet3_ethdev.c (+1/-0) drivers/net/vmxnet3/vmxnet3_logs.h (+1/-1) drivers/raw/ifpga/base/opae_intel_max10.c (+9/-2) drivers/raw/ifpga/ifpga_rawdev.c (+4/-4) drivers/vdpa/sfc/sfc_vdpa_hw.c (+0/-2) examples/eventdev_pipeline/pipeline_worker_generic.c (+8/-4) examples/l2fwd-event/l2fwd_event.c (+1/-0) examples/ntb/ntb_fwd.c (+4/-1) examples/vhost_blk/vhost_blk.c (+1/-1) kernel/linux/kni/compat.h (+4/-0) lib/bpf/bpf_convert.c (+1/-1) lib/bpf/bpf_validate.c (+261/-54) lib/cmdline/cmdline.c (+1/-0) lib/cmdline/cmdline_os_unix.c (+6/-0) lib/cmdline/cmdline_os_windows.c (+14/-0) lib/cmdline/cmdline_private.h (+4/-1) lib/cryptodev/rte_cryptodev.c (+14/-0) lib/cryptodev/rte_cryptodev.h (+2/-2) lib/dmadev/rte_dmadev.c (+14/-5) lib/eal/common/eal_common_dev.c (+7/-6) lib/eal/common/eal_common_fbarray.c (+22/-8) lib/eal/common/eal_common_options.c (+4/-4) lib/eal/common/malloc_mp.c (+2/-1) lib/eal/linux/eal_memalloc.c (+1/-1) lib/eal/unix/eal_firmware.c (+19/-6) lib/eal/windows/include/meson.build (+1/-0) lib/eal/x86/include/rte_io.h (+1/-1) lib/ethdev/ethdev_pci.h (+15/-3) lib/ethdev/rte_ethdev.c (+29/-8) lib/ethdev/rte_flow.c (+25/-4) lib/eventdev/rte_event_eth_rx_adapter.c (+1/-1) lib/fib/dir24_8.c (+2/-2) lib/fib/trie.c (+6/-4) lib/hash/rte_cuckoo_hash.c (+2/-0) lib/hash/rte_hash.h (+8/-8) lib/hash/rte_thash.c (+25/-1) lib/latencystats/rte_latencystats.c (+1/-1) lib/member/rte_member_ht.c (+1/-1) lib/net/rte_net.h (+17/-1) lib/pcapng/rte_pcapng.c (+2/-1) lib/power/power_acpi_cpufreq.c (+5/-1) lib/power/power_common.c (+23/-0) lib/power/power_common.h (+1/-0) lib/power/power_cppc_cpufreq.c (+6/-2) lib/power/power_pstate_cpufreq.c (+5/-1) lib/power/rte_power_pmd_mgmt.c (+7/-5) lib/rcu/rte_rcu_qsbr.c (+9/-8) lib/telemetry/telemetry.c (+1/-1) lib/telemetry/telemetry_legacy.c (+1/-1) lib/vhost/vdpa.c (+1/-0) lib/vhost/vhost_user.c (+2/-1) lib/vhost/virtio_net.c (+5/-2) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Christian Ehrhardt (community) | Approve | ||
git-ubuntu import | Pending | ||
Review via email:
|
Commit message
Description of the change

Christian Ehrhardt (paelzer) wrote : | # |
The former stuck in proposed upload was a stable backport itself and pointing to the same release, hence we should use just the latest changelog stanza (no -v to include both) as the new supersedes the old (leaving the old in there still is correct as it IMHO represents the history of how this went)

Christian Ehrhardt (paelzer) wrote : | # |
Without a PPA and without a repo that has the pristine tar for it I need to ensure I get the right/your tarball. For this one I've fetched from upstream via debian/watch again and ensured all matches (it does).
But only after a detour realizing that the old d/watch was broken and pointing at latest. Fixed used, and reset to the former (not something we'd SRU change and it is good in the new releases). Changing it to https:/

Christian Ehrhardt (paelzer) wrote : | # |
The riddle is typing right 22.11 != 21.11, all sorted :-) and ready for an upload

Christian Ehrhardt (paelzer) wrote : | # |
Uploading dpdk_21.
Uploading dpdk_21.
Uploading dpdk_21.
Uploading dpdk_21.
Uploading dpdk_21.
Preview Diff
1 | diff --git a/.mailmap b/.mailmap | |||
2 | index 434b0b5..0317d15 100644 | |||
3 | --- a/.mailmap | |||
4 | +++ b/.mailmap | |||
5 | @@ -2,7 +2,7 @@ Aakash Sasidharan <asasidharan@marvell.com> | |||
6 | 2 | Aaro Koskinen <aaro.koskinen@nsn.com> | 2 | Aaro Koskinen <aaro.koskinen@nsn.com> |
7 | 3 | Aaron Campbell <aaron@arbor.net> | 3 | Aaron Campbell <aaron@arbor.net> |
8 | 4 | Aaron Conole <aconole@redhat.com> | 4 | Aaron Conole <aconole@redhat.com> |
10 | 5 | Abdullah Ömer Yamaç <omer.yamac@ceng.metu.edu.tr> | 5 | Abdullah Ömer Yamaç <omer.yamac@ceng.metu.edu.tr> <aomeryamac@gmail.com> |
11 | 6 | Abdullah Sevincer <abdullah.sevincer@intel.com> | 6 | Abdullah Sevincer <abdullah.sevincer@intel.com> |
12 | 7 | Abed Kamaluddin <akamaluddin@marvell.com> | 7 | Abed Kamaluddin <akamaluddin@marvell.com> |
13 | 8 | Abhijit Sinha <abhijit.sinha@intel.com> | 8 | Abhijit Sinha <abhijit.sinha@intel.com> |
14 | @@ -164,6 +164,7 @@ Bert van Leeuwen <bert.vanleeuwen@netronome.com> | |||
15 | 164 | Bhagyada Modali <bhagyada.modali@amd.com> | 164 | Bhagyada Modali <bhagyada.modali@amd.com> |
16 | 165 | Bharat Mota <bmota@vmware.com> | 165 | Bharat Mota <bmota@vmware.com> |
17 | 166 | Bill Hong <bhong@brocade.com> | 166 | Bill Hong <bhong@brocade.com> |
18 | 167 | Bill Xiang <xiangwencheng@dayudpu.com> | ||
19 | 167 | Billy McFall <bmcfall@redhat.com> | 168 | Billy McFall <bmcfall@redhat.com> |
20 | 168 | Billy O'Mahony <billy.o.mahony@intel.com> | 169 | Billy O'Mahony <billy.o.mahony@intel.com> |
21 | 169 | Bing Zhao <bingz@nvidia.com> <bingz@mellanox.com> <bing.zhao@hxt-semitech.com> | 170 | Bing Zhao <bingz@nvidia.com> <bingz@mellanox.com> <bing.zhao@hxt-semitech.com> |
22 | @@ -212,6 +213,8 @@ Cheng Liu <liucheng11@huawei.com> | |||
23 | 212 | Cheng Peng <cheng.peng5@zte.com.cn> | 213 | Cheng Peng <cheng.peng5@zte.com.cn> |
24 | 213 | Chengwen Feng <fengchengwen@huawei.com> | 214 | Chengwen Feng <fengchengwen@huawei.com> |
25 | 214 | Chenmin Sun <chenmin.sun@intel.com> | 215 | Chenmin Sun <chenmin.sun@intel.com> |
26 | 216 | Chenming Chang <ccm@ccm.ink> | ||
27 | 217 | Chenxingyu Wang <wangchenxingyu@huawei.com> | ||
28 | 215 | Chenxu Di <chenxux.di@intel.com> | 218 | Chenxu Di <chenxux.di@intel.com> |
29 | 216 | Cheryl Houser <chouser@vmware.com> | 219 | Cheryl Houser <chouser@vmware.com> |
30 | 217 | Chinh T Cao <chinh.t.cao@intel.com> | 220 | Chinh T Cao <chinh.t.cao@intel.com> |
31 | @@ -470,6 +473,7 @@ Hanoch Haim <hhaim@cisco.com> | |||
32 | 470 | Hanumanth Pothula <hpothula@marvell.com> | 473 | Hanumanth Pothula <hpothula@marvell.com> |
33 | 471 | Hao Chen <chenh@yusur.tech> <chenhao164@huawei.com> | 474 | Hao Chen <chenh@yusur.tech> <chenhao164@huawei.com> |
34 | 472 | Hao Wu <hao.wu@intel.com> | 475 | Hao Wu <hao.wu@intel.com> |
35 | 476 | Haoqian He <haoqian.he@smartx.com> | ||
36 | 473 | Hari Kumar Vemula <hari.kumarx.vemula@intel.com> | 477 | Hari Kumar Vemula <hari.kumarx.vemula@intel.com> |
37 | 474 | Harini Ramakrishnan <harini.ramakrishnan@microsoft.com> | 478 | Harini Ramakrishnan <harini.ramakrishnan@microsoft.com> |
38 | 475 | Hariprasad Govindharajan <hariprasad.govindharajan@intel.com> | 479 | Hariprasad Govindharajan <hariprasad.govindharajan@intel.com> |
39 | @@ -685,6 +689,7 @@ Junjie Wan <wanjunjie@bytedance.com> | |||
40 | 685 | Jun Qiu <jun.qiu@jaguarmicro.com> | 689 | Jun Qiu <jun.qiu@jaguarmicro.com> |
41 | 686 | Jun W Zhou <junx.w.zhou@intel.com> | 690 | Jun W Zhou <junx.w.zhou@intel.com> |
42 | 687 | Junxiao Shi <git@mail1.yoursunny.com> | 691 | Junxiao Shi <git@mail1.yoursunny.com> |
43 | 692 | Jun Wang <junwang01@cestc.cn> | ||
44 | 688 | Jun Yang <jun.yang@nxp.com> | 693 | Jun Yang <jun.yang@nxp.com> |
45 | 689 | Junyu Jiang <junyux.jiang@intel.com> | 694 | Junyu Jiang <junyux.jiang@intel.com> |
46 | 690 | Juraj Linkeš <juraj.linkes@pantheon.tech> | 695 | Juraj Linkeš <juraj.linkes@pantheon.tech> |
47 | @@ -818,6 +823,7 @@ Mahesh Adulla <mahesh.adulla@amd.com> | |||
48 | 818 | Mahipal Challa <mchalla@marvell.com> | 823 | Mahipal Challa <mchalla@marvell.com> |
49 | 819 | Mah Yock Gen <yock.gen.mah@intel.com> | 824 | Mah Yock Gen <yock.gen.mah@intel.com> |
50 | 820 | Mairtin o Loingsigh <mairtin.oloingsigh@intel.com> | 825 | Mairtin o Loingsigh <mairtin.oloingsigh@intel.com> |
51 | 826 | Malcolm Bumgardner <mbumgard@cisco.com> | ||
52 | 821 | Mallesham Jatharakonda <mjatharakonda@oneconvergence.com> | 827 | Mallesham Jatharakonda <mjatharakonda@oneconvergence.com> |
53 | 822 | Mallesh Koujalagi <malleshx.koujalagi@intel.com> | 828 | Mallesh Koujalagi <malleshx.koujalagi@intel.com> |
54 | 823 | Malvika Gupta <malvika.gupta@arm.com> | 829 | Malvika Gupta <malvika.gupta@arm.com> |
55 | @@ -826,7 +832,6 @@ Mandeep Rohilla <mrohilla@brocade.com> | |||
56 | 826 | Manish Chopra <manishc@marvell.com> | 832 | Manish Chopra <manishc@marvell.com> |
57 | 827 | Manish Tomar <manish.tomar@nxp.com> | 833 | Manish Tomar <manish.tomar@nxp.com> |
58 | 828 | Mao Jiang <maox.jiang@intel.com> | 834 | Mao Jiang <maox.jiang@intel.com> |
59 | 829 | Mao YingMing <maoyingming@baidu.com> | ||
60 | 830 | Marcel Apfelbaum <marcel@redhat.com> | 835 | Marcel Apfelbaum <marcel@redhat.com> |
61 | 831 | Marcel Cornu <marcel.d.cornu@intel.com> | 836 | Marcel Cornu <marcel.d.cornu@intel.com> |
62 | 832 | Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> | 837 | Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> |
63 | @@ -843,6 +848,7 @@ Marcin Wojtas <mw@semihalf.com> | |||
64 | 843 | Marcin Zapolski <marcinx.a.zapolski@intel.com> | 848 | Marcin Zapolski <marcinx.a.zapolski@intel.com> |
65 | 844 | Marco Varlese <mvarlese@suse.de> | 849 | Marco Varlese <mvarlese@suse.de> |
66 | 845 | Marc Sune <marcdevel@gmail.com> <marc.sune@bisdn.de> | 850 | Marc Sune <marcdevel@gmail.com> <marc.sune@bisdn.de> |
67 | 851 | Marek Mical <marekx.mical@intel.com> | ||
68 | 846 | Maria Lingemark <maria.lingemark@ericsson.com> | 852 | Maria Lingemark <maria.lingemark@ericsson.com> |
69 | 847 | Mario Carrillo <mario.alfredo.c.arevalo@intel.com> | 853 | Mario Carrillo <mario.alfredo.c.arevalo@intel.com> |
70 | 848 | Mário Kuka <kuka@cesnet.cz> | 854 | Mário Kuka <kuka@cesnet.cz> |
71 | @@ -910,6 +916,7 @@ Michael Santana <maicolgabriel@hotmail.com> <msantana@redhat.com> | |||
72 | 910 | Michael Savisko <michaelsav@nvidia.com> | 916 | Michael Savisko <michaelsav@nvidia.com> |
73 | 911 | Michael Shamis <michaelsh@marvell.com> | 917 | Michael Shamis <michaelsh@marvell.com> |
74 | 912 | Michael S. Tsirkin <mst@redhat.com> | 918 | Michael S. Tsirkin <mst@redhat.com> |
75 | 919 | Michael Theodore Stolarchuk <mike.stolarchuk@arista.com> | ||
76 | 913 | Michael Wildt <michael.wildt@broadcom.com> | 920 | Michael Wildt <michael.wildt@broadcom.com> |
77 | 914 | Michal Berger <michallinuxstuff@gmail.com> | 921 | Michal Berger <michallinuxstuff@gmail.com> |
78 | 915 | Michal Jastrzebski <michalx.k.jastrzebski@intel.com> | 922 | Michal Jastrzebski <michalx.k.jastrzebski@intel.com> |
79 | @@ -924,6 +931,7 @@ Michal Swiatkowski <michal.swiatkowski@intel.com> | |||
80 | 924 | Michal Wilczynski <michal.wilczynski@intel.com> | 931 | Michal Wilczynski <michal.wilczynski@intel.com> |
81 | 925 | Michel Machado <michel@digirati.com.br> | 932 | Michel Machado <michel@digirati.com.br> |
82 | 926 | Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com> | 933 | Miguel Bernal Marin <miguel.bernal.marin@linux.intel.com> |
83 | 934 | Mihai Brodschi <mihai.brodschi@broadcom.com> | ||
84 | 927 | Mihai Pogonaru <pogonarumihai@gmail.com> | 935 | Mihai Pogonaru <pogonarumihai@gmail.com> |
85 | 928 | Mike Baucom <michael.baucom@broadcom.com> | 936 | Mike Baucom <michael.baucom@broadcom.com> |
86 | 929 | Mike Pattrick <mkp@redhat.com> | 937 | Mike Pattrick <mkp@redhat.com> |
87 | @@ -981,8 +989,9 @@ Nelson Escobar <neescoba@cisco.com> | |||
88 | 981 | Nemanja Marjanovic <nemanja.marjanovic@intel.com> | 989 | Nemanja Marjanovic <nemanja.marjanovic@intel.com> |
89 | 982 | Netanel Belgazal <netanel@amazon.com> | 990 | Netanel Belgazal <netanel@amazon.com> |
90 | 983 | Netanel Gonen <netanelg@mellanox.com> | 991 | Netanel Gonen <netanelg@mellanox.com> |
91 | 992 | Niall Meade <niall.meade@intel.com> | ||
92 | 984 | Niall Power <niall.power@intel.com> | 993 | Niall Power <niall.power@intel.com> |
94 | 985 | Nick Connolly <nick.connolly@mayadata.io> | 994 | Nick Connolly <nick.connolly@arm.com> <nick.connolly@mayadata.io> |
95 | 986 | Nick Nunley <nicholas.d.nunley@intel.com> | 995 | Nick Nunley <nicholas.d.nunley@intel.com> |
96 | 987 | Niclas Storm <niclas.storm@ericsson.com> | 996 | Niclas Storm <niclas.storm@ericsson.com> |
97 | 988 | Nicolas Chautru <nicolas.chautru@intel.com> | 997 | Nicolas Chautru <nicolas.chautru@intel.com> |
98 | @@ -1007,6 +1016,7 @@ Noa Ezra <noae@mellanox.com> | |||
99 | 1007 | Nobuhiro Miki <nmiki@yahoo-corp.jp> | 1016 | Nobuhiro Miki <nmiki@yahoo-corp.jp> |
100 | 1008 | Norbert Ciosek <norbertx.ciosek@intel.com> | 1017 | Norbert Ciosek <norbertx.ciosek@intel.com> |
101 | 1009 | Odi Assli <odia@nvidia.com> | 1018 | Odi Assli <odia@nvidia.com> |
102 | 1019 | Ofer Dagan <ofer.d@claroty.com> | ||
103 | 1010 | Ognjen Joldzic <ognjen.joldzic@gmail.com> | 1020 | Ognjen Joldzic <ognjen.joldzic@gmail.com> |
104 | 1011 | Ola Liljedahl <ola.liljedahl@arm.com> | 1021 | Ola Liljedahl <ola.liljedahl@arm.com> |
105 | 1012 | Oleg Polyakov <olegp123@walla.co.il> | 1022 | Oleg Polyakov <olegp123@walla.co.il> |
106 | @@ -1066,6 +1076,7 @@ Peng Yu <penyu@amazon.com> | |||
107 | 1066 | Peng Zhang <peng.zhang@corigine.com> <peng1x.zhang@intel.com> | 1076 | Peng Zhang <peng.zhang@corigine.com> <peng1x.zhang@intel.com> |
108 | 1067 | Pengzhen Liu <liupengzhen3@huawei.com> | 1077 | Pengzhen Liu <liupengzhen3@huawei.com> |
109 | 1068 | Peter Mccarthy <peter.mccarthy@intel.com> | 1078 | Peter Mccarthy <peter.mccarthy@intel.com> |
110 | 1079 | Peter Morrow <peter@graphiant.com> | ||
111 | 1069 | Peter Spreadborough <peter.spreadborough@broadcom.com> | 1080 | Peter Spreadborough <peter.spreadborough@broadcom.com> |
112 | 1070 | Petr Houska <t-pehous@microsoft.com> | 1081 | Petr Houska <t-pehous@microsoft.com> |
113 | 1071 | Phanendra Vukkisala <pvukkisala@marvell.com> | 1082 | Phanendra Vukkisala <pvukkisala@marvell.com> |
114 | @@ -1108,6 +1119,7 @@ Quentin Armitage <quentin@armitage.org.uk> | |||
115 | 1108 | Qun Wan <qun.wan@intel.com> | 1119 | Qun Wan <qun.wan@intel.com> |
116 | 1109 | Radha Mohan Chintakuntla <radhac@marvell.com> | 1120 | Radha Mohan Chintakuntla <radhac@marvell.com> |
117 | 1110 | Radoslaw Biernacki <rad@semihalf.com> <radoslaw.biernacki@linaro.org> | 1121 | Radoslaw Biernacki <rad@semihalf.com> <radoslaw.biernacki@linaro.org> |
118 | 1122 | Radoslaw Tyl <radoslawx.tyl@intel.com> | ||
119 | 1111 | Radu Bulie <radu-andrei.bulie@nxp.com> | 1123 | Radu Bulie <radu-andrei.bulie@nxp.com> |
120 | 1112 | Radu Nicolau <radu.nicolau@intel.com> | 1124 | Radu Nicolau <radu.nicolau@intel.com> |
121 | 1113 | Rafael Ávila de Espíndola <espindola@scylladb.com> | 1125 | Rafael Ávila de Espíndola <espindola@scylladb.com> |
122 | @@ -1265,6 +1277,7 @@ Shuanglin Wang <shuanglin.wang@broadcom.com> | |||
123 | 1265 | Shuki Katzenelson <shuki@lightbitslabs.com> | 1277 | Shuki Katzenelson <shuki@lightbitslabs.com> |
124 | 1266 | Shun Hao <shunh@nvidia.com> | 1278 | Shun Hao <shunh@nvidia.com> |
125 | 1267 | Shu Shen <shu.shen@radisys.com> | 1279 | Shu Shen <shu.shen@radisys.com> |
126 | 1280 | Shuo Li <lishuo02@baidu.com> | ||
127 | 1268 | Shweta Choudaha <shweta.choudaha@att.com> | 1281 | Shweta Choudaha <shweta.choudaha@att.com> |
128 | 1269 | Shyam Kumar Shrivastav <shrivastav.shyam@gmail.com> | 1282 | Shyam Kumar Shrivastav <shrivastav.shyam@gmail.com> |
129 | 1270 | Shy Shyman <shys@nvidia.com> <shys@mellanox.com> | 1283 | Shy Shyman <shys@nvidia.com> <shys@mellanox.com> |
130 | @@ -1413,6 +1426,7 @@ Vadim Suraev <vadim.suraev@gmail.com> | |||
131 | 1413 | Vakul Garg <vakul.garg@nxp.com> | 1426 | Vakul Garg <vakul.garg@nxp.com> |
132 | 1414 | Vamsi Attunuru <vattunuru@marvell.com> | 1427 | Vamsi Attunuru <vattunuru@marvell.com> |
133 | 1415 | Vanshika Shukla <vanshika.shukla@nxp.com> | 1428 | Vanshika Shukla <vanshika.shukla@nxp.com> |
134 | 1429 | Varun Sethi <v.sethi@nxp.com> | ||
135 | 1416 | Vasily Philipov <vasilyf@mellanox.com> | 1430 | Vasily Philipov <vasilyf@mellanox.com> |
136 | 1417 | Veerasenareddy Burru <vburru@marvell.com> | 1431 | Veerasenareddy Burru <vburru@marvell.com> |
137 | 1418 | Venkata Suresh Kumar P <venkata.suresh.kumar.p@intel.com> | 1432 | Venkata Suresh Kumar P <venkata.suresh.kumar.p@intel.com> |
138 | @@ -1442,6 +1456,7 @@ Vincent Jardin <vincent.jardin@6wind.com> | |||
139 | 1442 | Vincent Li <vincent.mc.li@gmail.com> | 1456 | Vincent Li <vincent.mc.li@gmail.com> |
140 | 1443 | Vincent S. Cojot <vcojot@redhat.com> | 1457 | Vincent S. Cojot <vcojot@redhat.com> |
141 | 1444 | Vinh Tran <vinh.t.tran10@gmail.com> | 1458 | Vinh Tran <vinh.t.tran10@gmail.com> |
142 | 1459 | Vipin Padmam Ramesh <vipinp@vmware.com> | ||
143 | 1445 | Vipin Varghese <vipin.varghese@amd.com> <vipin.varghese@intel.com> | 1460 | Vipin Varghese <vipin.varghese@amd.com> <vipin.varghese@intel.com> |
144 | 1446 | Vipul Ashri <vipul.ashri@oracle.com> | 1461 | Vipul Ashri <vipul.ashri@oracle.com> |
145 | 1447 | Visa Hankala <visa@hankala.org> | 1462 | Visa Hankala <visa@hankala.org> |
146 | @@ -1558,6 +1573,7 @@ Yi Lu <luyi68@live.com> | |||
147 | 1558 | Yilun Xu <yilun.xu@intel.com> | 1573 | Yilun Xu <yilun.xu@intel.com> |
148 | 1559 | Yinan Wang <yinan.wang@intel.com> | 1574 | Yinan Wang <yinan.wang@intel.com> |
149 | 1560 | Ying A Wang <ying.a.wang@intel.com> | 1575 | Ying A Wang <ying.a.wang@intel.com> |
150 | 1576 | Yingming Mao <maoyingming@baidu.com> | ||
151 | 1561 | Yingya Han <yingyax.han@intel.com> | 1577 | Yingya Han <yingyax.han@intel.com> |
152 | 1562 | Yinjun Zhang <yinjun.zhang@corigine.com> | 1578 | Yinjun Zhang <yinjun.zhang@corigine.com> |
153 | 1563 | Yipeng Wang <yipeng1.wang@intel.com> | 1579 | Yipeng Wang <yipeng1.wang@intel.com> |
154 | diff --git a/VERSION b/VERSION | |||
155 | index cb47ea8..7d69c8e 100644 | |||
156 | --- a/VERSION | |||
157 | +++ b/VERSION | |||
158 | @@ -1 +1 @@ | |||
160 | 1 | 21.11.7 | 1 | 21.11.9 |
161 | diff --git a/app/dumpcap/main.c b/app/dumpcap/main.c | |||
162 | index 44576be..76db233 100644 | |||
163 | --- a/app/dumpcap/main.c | |||
164 | +++ b/app/dumpcap/main.c | |||
165 | @@ -78,8 +78,6 @@ struct interface { | |||
166 | 78 | TAILQ_ENTRY(interface) next; | 78 | TAILQ_ENTRY(interface) next; |
167 | 79 | uint16_t port; | 79 | uint16_t port; |
168 | 80 | char name[RTE_ETH_NAME_MAX_LEN]; | 80 | char name[RTE_ETH_NAME_MAX_LEN]; |
169 | 81 | |||
170 | 82 | struct rte_rxtx_callback *rx_cb[RTE_MAX_QUEUES_PER_PORT]; | ||
171 | 83 | }; | 81 | }; |
172 | 84 | 82 | ||
173 | 85 | TAILQ_HEAD(interface_list, interface); | 83 | TAILQ_HEAD(interface_list, interface); |
174 | @@ -789,6 +787,11 @@ int main(int argc, char **argv) | |||
175 | 789 | { | 787 | { |
176 | 790 | struct rte_ring *r; | 788 | struct rte_ring *r; |
177 | 791 | struct rte_mempool *mp; | 789 | struct rte_mempool *mp; |
178 | 790 | struct sigaction action = { | ||
179 | 791 | .sa_flags = SA_RESTART, | ||
180 | 792 | .sa_handler = signal_handler, | ||
181 | 793 | }; | ||
182 | 794 | struct sigaction origaction; | ||
183 | 792 | dumpcap_out_t out; | 795 | dumpcap_out_t out; |
184 | 793 | char *p; | 796 | char *p; |
185 | 794 | 797 | ||
186 | @@ -814,8 +817,13 @@ int main(int argc, char **argv) | |||
187 | 814 | start_time = create_timestamp(); | 817 | start_time = create_timestamp(); |
188 | 815 | enable_pdump(r, mp); | 818 | enable_pdump(r, mp); |
189 | 816 | 819 | ||
192 | 817 | signal(SIGINT, signal_handler); | 820 | sigemptyset(&action.sa_mask); |
193 | 818 | signal(SIGPIPE, SIG_IGN); | 821 | sigaction(SIGTERM, &action, NULL); |
194 | 822 | sigaction(SIGINT, &action, NULL); | ||
195 | 823 | sigaction(SIGPIPE, &action, NULL); | ||
196 | 824 | sigaction(SIGHUP, NULL, &origaction); | ||
197 | 825 | if (origaction.sa_handler == SIG_DFL) | ||
198 | 826 | sigaction(SIGHUP, &action, NULL); | ||
199 | 819 | 827 | ||
200 | 820 | enable_primary_monitor(); | 828 | enable_primary_monitor(); |
201 | 821 | 829 | ||
202 | diff --git a/app/pdump/main.c b/app/pdump/main.c | |||
203 | index 71fd83d..0986034 100644 | |||
204 | --- a/app/pdump/main.c | |||
205 | +++ b/app/pdump/main.c | |||
206 | @@ -573,13 +573,9 @@ disable_primary_monitor(void) | |||
207 | 573 | } | 573 | } |
208 | 574 | 574 | ||
209 | 575 | static void | 575 | static void |
211 | 576 | signal_handler(int sig_num) | 576 | signal_handler(int sig_num __rte_unused) |
212 | 577 | { | 577 | { |
218 | 578 | if (sig_num == SIGINT) { | 578 | quit_signal = 1; |
214 | 579 | printf("\n\nSignal %d received, preparing to exit...\n", | ||
215 | 580 | sig_num); | ||
216 | 581 | quit_signal = 1; | ||
217 | 582 | } | ||
219 | 583 | } | 579 | } |
220 | 584 | 580 | ||
221 | 585 | static inline int | 581 | static inline int |
222 | @@ -976,6 +972,11 @@ enable_primary_monitor(void) | |||
223 | 976 | int | 972 | int |
224 | 977 | main(int argc, char **argv) | 973 | main(int argc, char **argv) |
225 | 978 | { | 974 | { |
226 | 975 | struct sigaction action = { | ||
227 | 976 | .sa_flags = SA_RESTART, | ||
228 | 977 | .sa_handler = signal_handler, | ||
229 | 978 | }; | ||
230 | 979 | struct sigaction origaction; | ||
231 | 979 | int diag; | 980 | int diag; |
232 | 980 | int ret; | 981 | int ret; |
233 | 981 | int i; | 982 | int i; |
234 | @@ -984,8 +985,14 @@ main(int argc, char **argv) | |||
235 | 984 | char mp_flag[] = "--proc-type=secondary"; | 985 | char mp_flag[] = "--proc-type=secondary"; |
236 | 985 | char *argp[argc + 2]; | 986 | char *argp[argc + 2]; |
237 | 986 | 987 | ||
240 | 987 | /* catch ctrl-c so we can print on exit */ | 988 | /* catch ctrl-c so we can cleanup on exit */ |
241 | 988 | signal(SIGINT, signal_handler); | 989 | sigemptyset(&action.sa_mask); |
242 | 990 | sigaction(SIGTERM, &action, NULL); | ||
243 | 991 | sigaction(SIGINT, &action, NULL); | ||
244 | 992 | sigaction(SIGPIPE, &action, NULL); | ||
245 | 993 | sigaction(SIGHUP, NULL, &origaction); | ||
246 | 994 | if (origaction.sa_handler == SIG_DFL) | ||
247 | 995 | sigaction(SIGHUP, &action, NULL); | ||
248 | 989 | 996 | ||
249 | 990 | argp[0] = argv[0]; | 997 | argp[0] = argv[0]; |
250 | 991 | argp[1] = n_flag; | 998 | argp[1] = n_flag; |
251 | diff --git a/app/proc-info/main.c b/app/proc-info/main.c | |||
252 | index b52c3ff..8030c10 100644 | |||
253 | --- a/app/proc-info/main.c | |||
254 | +++ b/app/proc-info/main.c | |||
255 | @@ -1499,7 +1499,7 @@ main(int argc, char **argv) | |||
256 | 1499 | 1499 | ||
257 | 1500 | if (mem_info) { | 1500 | if (mem_info) { |
258 | 1501 | meminfo_display(); | 1501 | meminfo_display(); |
260 | 1502 | return 0; | 1502 | goto cleanup; |
261 | 1503 | } | 1503 | } |
262 | 1504 | 1504 | ||
263 | 1505 | nb_ports = rte_eth_dev_count_avail(); | 1505 | nb_ports = rte_eth_dev_count_avail(); |
264 | @@ -1567,6 +1567,7 @@ main(int argc, char **argv) | |||
265 | 1567 | RTE_ETH_FOREACH_DEV(i) | 1567 | RTE_ETH_FOREACH_DEV(i) |
266 | 1568 | rte_eth_dev_close(i); | 1568 | rte_eth_dev_close(i); |
267 | 1569 | 1569 | ||
268 | 1570 | cleanup: | ||
269 | 1570 | ret = rte_eal_cleanup(); | 1571 | ret = rte_eal_cleanup(); |
270 | 1571 | if (ret) | 1572 | if (ret) |
271 | 1572 | printf("Error from rte_eal_cleanup(), %d\n", ret); | 1573 | printf("Error from rte_eal_cleanup(), %d\n", ret); |
272 | diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c | |||
273 | index 3f2bac6..c15ed34 100644 | |||
274 | --- a/app/test-bbdev/test_bbdev_perf.c | |||
275 | +++ b/app/test-bbdev/test_bbdev_perf.c | |||
276 | @@ -2819,15 +2819,6 @@ throughput_intr_lcore_ldpc_dec(void *arg) | |||
277 | 2819 | if (unlikely(num_to_process - enqueued < num_to_enq)) | 2819 | if (unlikely(num_to_process - enqueued < num_to_enq)) |
278 | 2820 | num_to_enq = num_to_process - enqueued; | 2820 | num_to_enq = num_to_process - enqueued; |
279 | 2821 | 2821 | ||
280 | 2822 | enq = 0; | ||
281 | 2823 | do { | ||
282 | 2824 | enq += rte_bbdev_enqueue_ldpc_dec_ops( | ||
283 | 2825 | tp->dev_id, | ||
284 | 2826 | queue_id, &ops[enqueued], | ||
285 | 2827 | num_to_enq); | ||
286 | 2828 | } while (unlikely(num_to_enq != enq)); | ||
287 | 2829 | enqueued += enq; | ||
288 | 2830 | |||
289 | 2831 | /* Write to thread burst_sz current number of enqueued | 2822 | /* Write to thread burst_sz current number of enqueued |
290 | 2832 | * descriptors. It ensures that proper number of | 2823 | * descriptors. It ensures that proper number of |
291 | 2833 | * descriptors will be dequeued in callback | 2824 | * descriptors will be dequeued in callback |
292 | @@ -2837,6 +2828,15 @@ throughput_intr_lcore_ldpc_dec(void *arg) | |||
293 | 2837 | */ | 2828 | */ |
294 | 2838 | __atomic_store_n(&tp->burst_sz, num_to_enq, __ATOMIC_RELAXED); | 2829 | __atomic_store_n(&tp->burst_sz, num_to_enq, __ATOMIC_RELAXED); |
295 | 2839 | 2830 | ||
296 | 2831 | enq = 0; | ||
297 | 2832 | do { | ||
298 | 2833 | enq += rte_bbdev_enqueue_ldpc_dec_ops( | ||
299 | 2834 | tp->dev_id, | ||
300 | 2835 | queue_id, &ops[enqueued], | ||
301 | 2836 | num_to_enq); | ||
302 | 2837 | } while (unlikely(num_to_enq != enq)); | ||
303 | 2838 | enqueued += enq; | ||
304 | 2839 | |||
305 | 2840 | /* Wait until processing of previous batch is | 2840 | /* Wait until processing of previous batch is |
306 | 2841 | * completed | 2841 | * completed |
307 | 2842 | */ | 2842 | */ |
308 | @@ -2907,14 +2907,6 @@ throughput_intr_lcore_dec(void *arg) | |||
309 | 2907 | if (unlikely(num_to_process - enqueued < num_to_enq)) | 2907 | if (unlikely(num_to_process - enqueued < num_to_enq)) |
310 | 2908 | num_to_enq = num_to_process - enqueued; | 2908 | num_to_enq = num_to_process - enqueued; |
311 | 2909 | 2909 | ||
312 | 2910 | enq = 0; | ||
313 | 2911 | do { | ||
314 | 2912 | enq += rte_bbdev_enqueue_dec_ops(tp->dev_id, | ||
315 | 2913 | queue_id, &ops[enqueued], | ||
316 | 2914 | num_to_enq); | ||
317 | 2915 | } while (unlikely(num_to_enq != enq)); | ||
318 | 2916 | enqueued += enq; | ||
319 | 2917 | |||
320 | 2918 | /* Write to thread burst_sz current number of enqueued | 2910 | /* Write to thread burst_sz current number of enqueued |
321 | 2919 | * descriptors. It ensures that proper number of | 2911 | * descriptors. It ensures that proper number of |
322 | 2920 | * descriptors will be dequeued in callback | 2912 | * descriptors will be dequeued in callback |
323 | @@ -2924,6 +2916,14 @@ throughput_intr_lcore_dec(void *arg) | |||
324 | 2924 | */ | 2916 | */ |
325 | 2925 | __atomic_store_n(&tp->burst_sz, num_to_enq, __ATOMIC_RELAXED); | 2917 | __atomic_store_n(&tp->burst_sz, num_to_enq, __ATOMIC_RELAXED); |
326 | 2926 | 2918 | ||
327 | 2919 | enq = 0; | ||
328 | 2920 | do { | ||
329 | 2921 | enq += rte_bbdev_enqueue_dec_ops(tp->dev_id, | ||
330 | 2922 | queue_id, &ops[enqueued], | ||
331 | 2923 | num_to_enq); | ||
332 | 2924 | } while (unlikely(num_to_enq != enq)); | ||
333 | 2925 | enqueued += enq; | ||
334 | 2926 | |||
335 | 2927 | /* Wait until processing of previous batch is | 2927 | /* Wait until processing of previous batch is |
336 | 2928 | * completed | 2928 | * completed |
337 | 2929 | */ | 2929 | */ |
338 | @@ -2993,14 +2993,6 @@ throughput_intr_lcore_enc(void *arg) | |||
339 | 2993 | if (unlikely(num_to_process - enqueued < num_to_enq)) | 2993 | if (unlikely(num_to_process - enqueued < num_to_enq)) |
340 | 2994 | num_to_enq = num_to_process - enqueued; | 2994 | num_to_enq = num_to_process - enqueued; |
341 | 2995 | 2995 | ||
342 | 2996 | enq = 0; | ||
343 | 2997 | do { | ||
344 | 2998 | enq += rte_bbdev_enqueue_enc_ops(tp->dev_id, | ||
345 | 2999 | queue_id, &ops[enqueued], | ||
346 | 3000 | num_to_enq); | ||
347 | 3001 | } while (unlikely(enq != num_to_enq)); | ||
348 | 3002 | enqueued += enq; | ||
349 | 3003 | |||
350 | 3004 | /* Write to thread burst_sz current number of enqueued | 2996 | /* Write to thread burst_sz current number of enqueued |
351 | 3005 | * descriptors. It ensures that proper number of | 2997 | * descriptors. It ensures that proper number of |
352 | 3006 | * descriptors will be dequeued in callback | 2998 | * descriptors will be dequeued in callback |
353 | @@ -3010,6 +3002,14 @@ throughput_intr_lcore_enc(void *arg) | |||
354 | 3010 | */ | 3002 | */ |
355 | 3011 | __atomic_store_n(&tp->burst_sz, num_to_enq, __ATOMIC_RELAXED); | 3003 | __atomic_store_n(&tp->burst_sz, num_to_enq, __ATOMIC_RELAXED); |
356 | 3012 | 3004 | ||
357 | 3005 | enq = 0; | ||
358 | 3006 | do { | ||
359 | 3007 | enq += rte_bbdev_enqueue_enc_ops(tp->dev_id, | ||
360 | 3008 | queue_id, &ops[enqueued], | ||
361 | 3009 | num_to_enq); | ||
362 | 3010 | } while (unlikely(enq != num_to_enq)); | ||
363 | 3011 | enqueued += enq; | ||
364 | 3012 | |||
365 | 3013 | /* Wait until processing of previous batch is | 3013 | /* Wait until processing of previous batch is |
366 | 3014 | * completed | 3014 | * completed |
367 | 3015 | */ | 3015 | */ |
368 | @@ -3081,15 +3081,6 @@ throughput_intr_lcore_ldpc_enc(void *arg) | |||
369 | 3081 | if (unlikely(num_to_process - enqueued < num_to_enq)) | 3081 | if (unlikely(num_to_process - enqueued < num_to_enq)) |
370 | 3082 | num_to_enq = num_to_process - enqueued; | 3082 | num_to_enq = num_to_process - enqueued; |
371 | 3083 | 3083 | ||
372 | 3084 | enq = 0; | ||
373 | 3085 | do { | ||
374 | 3086 | enq += rte_bbdev_enqueue_ldpc_enc_ops( | ||
375 | 3087 | tp->dev_id, | ||
376 | 3088 | queue_id, &ops[enqueued], | ||
377 | 3089 | num_to_enq); | ||
378 | 3090 | } while (unlikely(enq != num_to_enq)); | ||
379 | 3091 | enqueued += enq; | ||
380 | 3092 | |||
381 | 3093 | /* Write to thread burst_sz current number of enqueued | 3084 | /* Write to thread burst_sz current number of enqueued |
382 | 3094 | * descriptors. It ensures that proper number of | 3085 | * descriptors. It ensures that proper number of |
383 | 3095 | * descriptors will be dequeued in callback | 3086 | * descriptors will be dequeued in callback |
384 | @@ -3099,6 +3090,15 @@ throughput_intr_lcore_ldpc_enc(void *arg) | |||
385 | 3099 | */ | 3090 | */ |
386 | 3100 | __atomic_store_n(&tp->burst_sz, num_to_enq, __ATOMIC_RELAXED); | 3091 | __atomic_store_n(&tp->burst_sz, num_to_enq, __ATOMIC_RELAXED); |
387 | 3101 | 3092 | ||
388 | 3093 | enq = 0; | ||
389 | 3094 | do { | ||
390 | 3095 | enq += rte_bbdev_enqueue_ldpc_enc_ops( | ||
391 | 3096 | tp->dev_id, | ||
392 | 3097 | queue_id, &ops[enqueued], | ||
393 | 3098 | num_to_enq); | ||
394 | 3099 | } while (unlikely(enq != num_to_enq)); | ||
395 | 3100 | enqueued += enq; | ||
396 | 3101 | |||
397 | 3102 | /* Wait until processing of previous batch is | 3102 | /* Wait until processing of previous batch is |
398 | 3103 | * completed | 3103 | * completed |
399 | 3104 | */ | 3104 | */ |
400 | diff --git a/app/test-pmd/bpf_cmd.c b/app/test-pmd/bpf_cmd.c | |||
401 | index 09c8aec..e3bfd97 100644 | |||
402 | --- a/app/test-pmd/bpf_cmd.c | |||
403 | +++ b/app/test-pmd/bpf_cmd.c | |||
404 | @@ -137,7 +137,7 @@ cmdline_parse_token_string_t cmd_load_bpf_prm = | |||
405 | 137 | cmdline_parse_inst_t cmd_operate_bpf_ld_parse = { | 137 | cmdline_parse_inst_t cmd_operate_bpf_ld_parse = { |
406 | 138 | .f = cmd_operate_bpf_ld_parsed, | 138 | .f = cmd_operate_bpf_ld_parsed, |
407 | 139 | .data = NULL, | 139 | .data = NULL, |
409 | 140 | .help_str = "bpf-load rx|tx <port> <queue> <J|M|B> <file_name>", | 140 | .help_str = "bpf-load rx|tx <port> <queue> <J|M|-> <file_name>", |
410 | 141 | .tokens = { | 141 | .tokens = { |
411 | 142 | (void *)&cmd_load_bpf_start, | 142 | (void *)&cmd_load_bpf_start, |
412 | 143 | (void *)&cmd_load_bpf_dir, | 143 | (void *)&cmd_load_bpf_dir, |
413 | diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c | |||
414 | index 43857c8..aa4acdc 100644 | |||
415 | --- a/app/test-pmd/cmdline.c | |||
416 | +++ b/app/test-pmd/cmdline.c | |||
417 | @@ -68,10 +68,10 @@ | |||
418 | 68 | #include "cmdline_tm.h" | 68 | #include "cmdline_tm.h" |
419 | 69 | #include "bpf_cmd.h" | 69 | #include "bpf_cmd.h" |
420 | 70 | 70 | ||
421 | 71 | static struct cmdline *testpmd_cl; | ||
422 | 72 | |||
423 | 73 | static void cmd_reconfig_device_queue(portid_t id, uint8_t dev, uint8_t queue); | 71 | static void cmd_reconfig_device_queue(portid_t id, uint8_t dev, uint8_t queue); |
424 | 74 | 72 | ||
425 | 73 | static struct cmdline *testpmd_cl; | ||
426 | 74 | |||
427 | 75 | /* *** Help command with introduction. *** */ | 75 | /* *** Help command with introduction. *** */ |
428 | 76 | struct cmd_help_brief_result { | 76 | struct cmd_help_brief_result { |
429 | 77 | cmdline_fixed_string_t help; | 77 | cmdline_fixed_string_t help; |
430 | @@ -17733,289 +17733,289 @@ cmdline_parse_inst_t cmd_show_port_flow_transfer_proxy = { | |||
431 | 17733 | 17733 | ||
432 | 17734 | /* list of instructions */ | 17734 | /* list of instructions */ |
433 | 17735 | cmdline_parse_ctx_t main_ctx[] = { | 17735 | cmdline_parse_ctx_t main_ctx[] = { |
474 | 17736 | (cmdline_parse_inst_t *)&cmd_help_brief, | 17736 | &cmd_help_brief, |
475 | 17737 | (cmdline_parse_inst_t *)&cmd_help_long, | 17737 | &cmd_help_long, |
476 | 17738 | (cmdline_parse_inst_t *)&cmd_quit, | 17738 | &cmd_quit, |
477 | 17739 | (cmdline_parse_inst_t *)&cmd_load_from_file, | 17739 | &cmd_load_from_file, |
478 | 17740 | (cmdline_parse_inst_t *)&cmd_showport, | 17740 | &cmd_showport, |
479 | 17741 | (cmdline_parse_inst_t *)&cmd_showqueue, | 17741 | &cmd_showqueue, |
480 | 17742 | (cmdline_parse_inst_t *)&cmd_showeeprom, | 17742 | &cmd_showeeprom, |
481 | 17743 | (cmdline_parse_inst_t *)&cmd_showportall, | 17743 | &cmd_showportall, |
482 | 17744 | (cmdline_parse_inst_t *)&cmd_representor_info, | 17744 | &cmd_representor_info, |
483 | 17745 | (cmdline_parse_inst_t *)&cmd_showdevice, | 17745 | &cmd_showdevice, |
484 | 17746 | (cmdline_parse_inst_t *)&cmd_showcfg, | 17746 | &cmd_showcfg, |
485 | 17747 | (cmdline_parse_inst_t *)&cmd_showfwdall, | 17747 | &cmd_showfwdall, |
486 | 17748 | (cmdline_parse_inst_t *)&cmd_start, | 17748 | &cmd_start, |
487 | 17749 | (cmdline_parse_inst_t *)&cmd_start_tx_first, | 17749 | &cmd_start_tx_first, |
488 | 17750 | (cmdline_parse_inst_t *)&cmd_start_tx_first_n, | 17750 | &cmd_start_tx_first_n, |
489 | 17751 | (cmdline_parse_inst_t *)&cmd_set_link_up, | 17751 | &cmd_set_link_up, |
490 | 17752 | (cmdline_parse_inst_t *)&cmd_set_link_down, | 17752 | &cmd_set_link_down, |
491 | 17753 | (cmdline_parse_inst_t *)&cmd_reset, | 17753 | &cmd_reset, |
492 | 17754 | (cmdline_parse_inst_t *)&cmd_set_numbers, | 17754 | &cmd_set_numbers, |
493 | 17755 | (cmdline_parse_inst_t *)&cmd_set_log, | 17755 | &cmd_set_log, |
494 | 17756 | (cmdline_parse_inst_t *)&cmd_set_rxoffs, | 17756 | &cmd_set_rxoffs, |
495 | 17757 | (cmdline_parse_inst_t *)&cmd_set_rxpkts, | 17757 | &cmd_set_rxpkts, |
496 | 17758 | (cmdline_parse_inst_t *)&cmd_set_txpkts, | 17758 | &cmd_set_txpkts, |
497 | 17759 | (cmdline_parse_inst_t *)&cmd_set_txsplit, | 17759 | &cmd_set_txsplit, |
498 | 17760 | (cmdline_parse_inst_t *)&cmd_set_txtimes, | 17760 | &cmd_set_txtimes, |
499 | 17761 | (cmdline_parse_inst_t *)&cmd_set_fwd_list, | 17761 | &cmd_set_fwd_list, |
500 | 17762 | (cmdline_parse_inst_t *)&cmd_set_fwd_mask, | 17762 | &cmd_set_fwd_mask, |
501 | 17763 | (cmdline_parse_inst_t *)&cmd_set_fwd_mode, | 17763 | &cmd_set_fwd_mode, |
502 | 17764 | (cmdline_parse_inst_t *)&cmd_set_fwd_retry_mode, | 17764 | &cmd_set_fwd_retry_mode, |
503 | 17765 | (cmdline_parse_inst_t *)&cmd_set_burst_tx_retry, | 17765 | &cmd_set_burst_tx_retry, |
504 | 17766 | (cmdline_parse_inst_t *)&cmd_set_promisc_mode_one, | 17766 | &cmd_set_promisc_mode_one, |
505 | 17767 | (cmdline_parse_inst_t *)&cmd_set_promisc_mode_all, | 17767 | &cmd_set_promisc_mode_all, |
506 | 17768 | (cmdline_parse_inst_t *)&cmd_set_allmulti_mode_one, | 17768 | &cmd_set_allmulti_mode_one, |
507 | 17769 | (cmdline_parse_inst_t *)&cmd_set_allmulti_mode_all, | 17769 | &cmd_set_allmulti_mode_all, |
508 | 17770 | (cmdline_parse_inst_t *)&cmd_set_flush_rx, | 17770 | &cmd_set_flush_rx, |
509 | 17771 | (cmdline_parse_inst_t *)&cmd_set_link_check, | 17771 | &cmd_set_link_check, |
510 | 17772 | (cmdline_parse_inst_t *)&cmd_set_bypass_mode, | 17772 | &cmd_set_bypass_mode, |
511 | 17773 | (cmdline_parse_inst_t *)&cmd_set_bypass_event, | 17773 | &cmd_set_bypass_event, |
512 | 17774 | (cmdline_parse_inst_t *)&cmd_set_bypass_timeout, | 17774 | &cmd_set_bypass_timeout, |
513 | 17775 | (cmdline_parse_inst_t *)&cmd_show_bypass_config, | 17775 | &cmd_show_bypass_config, |
514 | 17776 | #ifdef RTE_NET_BOND | 17776 | #ifdef RTE_NET_BOND |
527 | 17777 | (cmdline_parse_inst_t *) &cmd_set_bonding_mode, | 17777 | &cmd_set_bonding_mode, |
528 | 17778 | (cmdline_parse_inst_t *) &cmd_show_bonding_config, | 17778 | &cmd_show_bonding_config, |
529 | 17779 | (cmdline_parse_inst_t *) &cmd_show_bonding_lacp_info, | 17779 | &cmd_show_bonding_lacp_info, |
530 | 17780 | (cmdline_parse_inst_t *) &cmd_set_bonding_primary, | 17780 | &cmd_set_bonding_primary, |
531 | 17781 | (cmdline_parse_inst_t *) &cmd_add_bonding_slave, | 17781 | &cmd_add_bonding_slave, |
532 | 17782 | (cmdline_parse_inst_t *) &cmd_remove_bonding_slave, | 17782 | &cmd_remove_bonding_slave, |
533 | 17783 | (cmdline_parse_inst_t *) &cmd_create_bonded_device, | 17783 | &cmd_create_bonded_device, |
534 | 17784 | (cmdline_parse_inst_t *) &cmd_set_bond_mac_addr, | 17784 | &cmd_set_bond_mac_addr, |
535 | 17785 | (cmdline_parse_inst_t *) &cmd_set_balance_xmit_policy, | 17785 | &cmd_set_balance_xmit_policy, |
536 | 17786 | (cmdline_parse_inst_t *) &cmd_set_bond_mon_period, | 17786 | &cmd_set_bond_mon_period, |
537 | 17787 | (cmdline_parse_inst_t *) &cmd_set_lacp_dedicated_queues, | 17787 | &cmd_set_lacp_dedicated_queues, |
538 | 17788 | (cmdline_parse_inst_t *) &cmd_set_bonding_agg_mode_policy, | 17788 | &cmd_set_bonding_agg_mode_policy, |
539 | 17789 | #endif | 17789 | #endif |
556 | 17790 | (cmdline_parse_inst_t *)&cmd_vlan_offload, | 17790 | &cmd_vlan_offload, |
557 | 17791 | (cmdline_parse_inst_t *)&cmd_vlan_tpid, | 17791 | &cmd_vlan_tpid, |
558 | 17792 | (cmdline_parse_inst_t *)&cmd_rx_vlan_filter_all, | 17792 | &cmd_rx_vlan_filter_all, |
559 | 17793 | (cmdline_parse_inst_t *)&cmd_rx_vlan_filter, | 17793 | &cmd_rx_vlan_filter, |
560 | 17794 | (cmdline_parse_inst_t *)&cmd_tx_vlan_set, | 17794 | &cmd_tx_vlan_set, |
561 | 17795 | (cmdline_parse_inst_t *)&cmd_tx_vlan_set_qinq, | 17795 | &cmd_tx_vlan_set_qinq, |
562 | 17796 | (cmdline_parse_inst_t *)&cmd_tx_vlan_reset, | 17796 | &cmd_tx_vlan_reset, |
563 | 17797 | (cmdline_parse_inst_t *)&cmd_tx_vlan_set_pvid, | 17797 | &cmd_tx_vlan_set_pvid, |
564 | 17798 | (cmdline_parse_inst_t *)&cmd_csum_set, | 17798 | &cmd_csum_set, |
565 | 17799 | (cmdline_parse_inst_t *)&cmd_csum_show, | 17799 | &cmd_csum_show, |
566 | 17800 | (cmdline_parse_inst_t *)&cmd_csum_tunnel, | 17800 | &cmd_csum_tunnel, |
567 | 17801 | (cmdline_parse_inst_t *)&cmd_csum_mac_swap, | 17801 | &cmd_csum_mac_swap, |
568 | 17802 | (cmdline_parse_inst_t *)&cmd_tso_set, | 17802 | &cmd_tso_set, |
569 | 17803 | (cmdline_parse_inst_t *)&cmd_tso_show, | 17803 | &cmd_tso_show, |
570 | 17804 | (cmdline_parse_inst_t *)&cmd_tunnel_tso_set, | 17804 | &cmd_tunnel_tso_set, |
571 | 17805 | (cmdline_parse_inst_t *)&cmd_tunnel_tso_show, | 17805 | &cmd_tunnel_tso_show, |
572 | 17806 | #ifdef RTE_LIB_GRO | 17806 | #ifdef RTE_LIB_GRO |
576 | 17807 | (cmdline_parse_inst_t *)&cmd_gro_enable, | 17807 | &cmd_gro_enable, |
577 | 17808 | (cmdline_parse_inst_t *)&cmd_gro_flush, | 17808 | &cmd_gro_flush, |
578 | 17809 | (cmdline_parse_inst_t *)&cmd_gro_show, | 17809 | &cmd_gro_show, |
579 | 17810 | #endif | 17810 | #endif |
580 | 17811 | #ifdef RTE_LIB_GSO | 17811 | #ifdef RTE_LIB_GSO |
584 | 17812 | (cmdline_parse_inst_t *)&cmd_gso_enable, | 17812 | &cmd_gso_enable, |
585 | 17813 | (cmdline_parse_inst_t *)&cmd_gso_size, | 17813 | &cmd_gso_size, |
586 | 17814 | (cmdline_parse_inst_t *)&cmd_gso_show, | 17814 | &cmd_gso_show, |
587 | 17815 | #endif | 17815 | #endif |
652 | 17816 | (cmdline_parse_inst_t *)&cmd_link_flow_control_set, | 17816 | &cmd_link_flow_control_set, |
653 | 17817 | (cmdline_parse_inst_t *)&cmd_link_flow_control_set_rx, | 17817 | &cmd_link_flow_control_set_rx, |
654 | 17818 | (cmdline_parse_inst_t *)&cmd_link_flow_control_set_tx, | 17818 | &cmd_link_flow_control_set_tx, |
655 | 17819 | (cmdline_parse_inst_t *)&cmd_link_flow_control_set_hw, | 17819 | &cmd_link_flow_control_set_hw, |
656 | 17820 | (cmdline_parse_inst_t *)&cmd_link_flow_control_set_lw, | 17820 | &cmd_link_flow_control_set_lw, |
657 | 17821 | (cmdline_parse_inst_t *)&cmd_link_flow_control_set_pt, | 17821 | &cmd_link_flow_control_set_pt, |
658 | 17822 | (cmdline_parse_inst_t *)&cmd_link_flow_control_set_xon, | 17822 | &cmd_link_flow_control_set_xon, |
659 | 17823 | (cmdline_parse_inst_t *)&cmd_link_flow_control_set_macfwd, | 17823 | &cmd_link_flow_control_set_macfwd, |
660 | 17824 | (cmdline_parse_inst_t *)&cmd_link_flow_control_set_autoneg, | 17824 | &cmd_link_flow_control_set_autoneg, |
661 | 17825 | (cmdline_parse_inst_t *)&cmd_link_flow_control_show, | 17825 | &cmd_link_flow_control_show, |
662 | 17826 | (cmdline_parse_inst_t *)&cmd_priority_flow_control_set, | 17826 | &cmd_priority_flow_control_set, |
663 | 17827 | (cmdline_parse_inst_t *)&cmd_config_dcb, | 17827 | &cmd_config_dcb, |
664 | 17828 | (cmdline_parse_inst_t *)&cmd_read_reg, | 17828 | &cmd_read_reg, |
665 | 17829 | (cmdline_parse_inst_t *)&cmd_read_reg_bit_field, | 17829 | &cmd_read_reg_bit_field, |
666 | 17830 | (cmdline_parse_inst_t *)&cmd_read_reg_bit, | 17830 | &cmd_read_reg_bit, |
667 | 17831 | (cmdline_parse_inst_t *)&cmd_write_reg, | 17831 | &cmd_write_reg, |
668 | 17832 | (cmdline_parse_inst_t *)&cmd_write_reg_bit_field, | 17832 | &cmd_write_reg_bit_field, |
669 | 17833 | (cmdline_parse_inst_t *)&cmd_write_reg_bit, | 17833 | &cmd_write_reg_bit, |
670 | 17834 | (cmdline_parse_inst_t *)&cmd_read_rxd_txd, | 17834 | &cmd_read_rxd_txd, |
671 | 17835 | (cmdline_parse_inst_t *)&cmd_stop, | 17835 | &cmd_stop, |
672 | 17836 | (cmdline_parse_inst_t *)&cmd_mac_addr, | 17836 | &cmd_mac_addr, |
673 | 17837 | (cmdline_parse_inst_t *)&cmd_set_fwd_eth_peer, | 17837 | &cmd_set_fwd_eth_peer, |
674 | 17838 | (cmdline_parse_inst_t *)&cmd_set_qmap, | 17838 | &cmd_set_qmap, |
675 | 17839 | (cmdline_parse_inst_t *)&cmd_set_xstats_hide_zero, | 17839 | &cmd_set_xstats_hide_zero, |
676 | 17840 | (cmdline_parse_inst_t *)&cmd_set_record_core_cycles, | 17840 | &cmd_set_record_core_cycles, |
677 | 17841 | (cmdline_parse_inst_t *)&cmd_set_record_burst_stats, | 17841 | &cmd_set_record_burst_stats, |
678 | 17842 | (cmdline_parse_inst_t *)&cmd_operate_port, | 17842 | &cmd_operate_port, |
679 | 17843 | (cmdline_parse_inst_t *)&cmd_operate_specific_port, | 17843 | &cmd_operate_specific_port, |
680 | 17844 | (cmdline_parse_inst_t *)&cmd_operate_attach_port, | 17844 | &cmd_operate_attach_port, |
681 | 17845 | (cmdline_parse_inst_t *)&cmd_operate_detach_port, | 17845 | &cmd_operate_detach_port, |
682 | 17846 | (cmdline_parse_inst_t *)&cmd_operate_detach_device, | 17846 | &cmd_operate_detach_device, |
683 | 17847 | (cmdline_parse_inst_t *)&cmd_set_port_setup_on, | 17847 | &cmd_set_port_setup_on, |
684 | 17848 | (cmdline_parse_inst_t *)&cmd_config_speed_all, | 17848 | &cmd_config_speed_all, |
685 | 17849 | (cmdline_parse_inst_t *)&cmd_config_speed_specific, | 17849 | &cmd_config_speed_specific, |
686 | 17850 | (cmdline_parse_inst_t *)&cmd_config_loopback_all, | 17850 | &cmd_config_loopback_all, |
687 | 17851 | (cmdline_parse_inst_t *)&cmd_config_loopback_specific, | 17851 | &cmd_config_loopback_specific, |
688 | 17852 | (cmdline_parse_inst_t *)&cmd_config_rx_tx, | 17852 | &cmd_config_rx_tx, |
689 | 17853 | (cmdline_parse_inst_t *)&cmd_config_mtu, | 17853 | &cmd_config_mtu, |
690 | 17854 | (cmdline_parse_inst_t *)&cmd_config_max_pkt_len, | 17854 | &cmd_config_max_pkt_len, |
691 | 17855 | (cmdline_parse_inst_t *)&cmd_config_max_lro_pkt_size, | 17855 | &cmd_config_max_lro_pkt_size, |
692 | 17856 | (cmdline_parse_inst_t *)&cmd_config_rx_mode_flag, | 17856 | &cmd_config_rx_mode_flag, |
693 | 17857 | (cmdline_parse_inst_t *)&cmd_config_rss, | 17857 | &cmd_config_rss, |
694 | 17858 | (cmdline_parse_inst_t *)&cmd_config_rxtx_ring_size, | 17858 | &cmd_config_rxtx_ring_size, |
695 | 17859 | (cmdline_parse_inst_t *)&cmd_config_rxtx_queue, | 17859 | &cmd_config_rxtx_queue, |
696 | 17860 | (cmdline_parse_inst_t *)&cmd_config_deferred_start_rxtx_queue, | 17860 | &cmd_config_deferred_start_rxtx_queue, |
697 | 17861 | (cmdline_parse_inst_t *)&cmd_setup_rxtx_queue, | 17861 | &cmd_setup_rxtx_queue, |
698 | 17862 | (cmdline_parse_inst_t *)&cmd_config_rss_reta, | 17862 | &cmd_config_rss_reta, |
699 | 17863 | (cmdline_parse_inst_t *)&cmd_showport_reta, | 17863 | &cmd_showport_reta, |
700 | 17864 | (cmdline_parse_inst_t *)&cmd_showport_macs, | 17864 | &cmd_showport_macs, |
701 | 17865 | (cmdline_parse_inst_t *)&cmd_show_port_flow_transfer_proxy, | 17865 | &cmd_show_port_flow_transfer_proxy, |
702 | 17866 | (cmdline_parse_inst_t *)&cmd_config_burst, | 17866 | &cmd_config_burst, |
703 | 17867 | (cmdline_parse_inst_t *)&cmd_config_thresh, | 17867 | &cmd_config_thresh, |
704 | 17868 | (cmdline_parse_inst_t *)&cmd_config_threshold, | 17868 | &cmd_config_threshold, |
705 | 17869 | (cmdline_parse_inst_t *)&cmd_set_uc_hash_filter, | 17869 | &cmd_set_uc_hash_filter, |
706 | 17870 | (cmdline_parse_inst_t *)&cmd_set_uc_all_hash_filter, | 17870 | &cmd_set_uc_all_hash_filter, |
707 | 17871 | (cmdline_parse_inst_t *)&cmd_vf_mac_addr_filter, | 17871 | &cmd_vf_mac_addr_filter, |
708 | 17872 | (cmdline_parse_inst_t *)&cmd_queue_rate_limit, | 17872 | &cmd_queue_rate_limit, |
709 | 17873 | (cmdline_parse_inst_t *)&cmd_tunnel_udp_config, | 17873 | &cmd_tunnel_udp_config, |
710 | 17874 | (cmdline_parse_inst_t *)&cmd_showport_rss_hash, | 17874 | &cmd_showport_rss_hash, |
711 | 17875 | (cmdline_parse_inst_t *)&cmd_showport_rss_hash_key, | 17875 | &cmd_showport_rss_hash_key, |
712 | 17876 | (cmdline_parse_inst_t *)&cmd_config_rss_hash_key, | 17876 | &cmd_config_rss_hash_key, |
713 | 17877 | (cmdline_parse_inst_t *)&cmd_cleanup_txq_mbufs, | 17877 | &cmd_cleanup_txq_mbufs, |
714 | 17878 | (cmdline_parse_inst_t *)&cmd_dump, | 17878 | &cmd_dump, |
715 | 17879 | (cmdline_parse_inst_t *)&cmd_dump_one, | 17879 | &cmd_dump_one, |
716 | 17880 | #ifdef RTE_NET_I40E | 17880 | #ifdef RTE_NET_I40E |
718 | 17881 | (cmdline_parse_inst_t *)&cmd_add_del_raw_flow_director, | 17881 | &cmd_add_del_raw_flow_director, |
719 | 17882 | #endif | 17882 | #endif |
839 | 17883 | (cmdline_parse_inst_t *)&cmd_set_flow_director_ip_mask, | 17883 | &cmd_set_flow_director_ip_mask, |
840 | 17884 | (cmdline_parse_inst_t *)&cmd_set_flow_director_mac_vlan_mask, | 17884 | &cmd_set_flow_director_mac_vlan_mask, |
841 | 17885 | (cmdline_parse_inst_t *)&cmd_set_flow_director_tunnel_mask, | 17885 | &cmd_set_flow_director_tunnel_mask, |
842 | 17886 | (cmdline_parse_inst_t *)&cmd_set_flow_director_flex_payload, | 17886 | &cmd_set_flow_director_flex_payload, |
843 | 17887 | (cmdline_parse_inst_t *)&cmd_flow, | 17887 | &cmd_flow, |
844 | 17888 | (cmdline_parse_inst_t *)&cmd_show_port_meter_cap, | 17888 | &cmd_show_port_meter_cap, |
845 | 17889 | (cmdline_parse_inst_t *)&cmd_add_port_meter_profile_srtcm, | 17889 | &cmd_add_port_meter_profile_srtcm, |
846 | 17890 | (cmdline_parse_inst_t *)&cmd_add_port_meter_profile_trtcm, | 17890 | &cmd_add_port_meter_profile_trtcm, |
847 | 17891 | (cmdline_parse_inst_t *)&cmd_add_port_meter_profile_trtcm_rfc4115, | 17891 | &cmd_add_port_meter_profile_trtcm_rfc4115, |
848 | 17892 | (cmdline_parse_inst_t *)&cmd_del_port_meter_profile, | 17892 | &cmd_del_port_meter_profile, |
849 | 17893 | (cmdline_parse_inst_t *)&cmd_create_port_meter, | 17893 | &cmd_create_port_meter, |
850 | 17894 | (cmdline_parse_inst_t *)&cmd_enable_port_meter, | 17894 | &cmd_enable_port_meter, |
851 | 17895 | (cmdline_parse_inst_t *)&cmd_disable_port_meter, | 17895 | &cmd_disable_port_meter, |
852 | 17896 | (cmdline_parse_inst_t *)&cmd_del_port_meter, | 17896 | &cmd_del_port_meter, |
853 | 17897 | (cmdline_parse_inst_t *)&cmd_del_port_meter_policy, | 17897 | &cmd_del_port_meter_policy, |
854 | 17898 | (cmdline_parse_inst_t *)&cmd_set_port_meter_profile, | 17898 | &cmd_set_port_meter_profile, |
855 | 17899 | (cmdline_parse_inst_t *)&cmd_set_port_meter_dscp_table, | 17899 | &cmd_set_port_meter_dscp_table, |
856 | 17900 | (cmdline_parse_inst_t *)&cmd_set_port_meter_stats_mask, | 17900 | &cmd_set_port_meter_stats_mask, |
857 | 17901 | (cmdline_parse_inst_t *)&cmd_show_port_meter_stats, | 17901 | &cmd_show_port_meter_stats, |
858 | 17902 | (cmdline_parse_inst_t *)&cmd_mcast_addr, | 17902 | &cmd_mcast_addr, |
859 | 17903 | (cmdline_parse_inst_t *)&cmd_set_vf_vlan_anti_spoof, | 17903 | &cmd_set_vf_vlan_anti_spoof, |
860 | 17904 | (cmdline_parse_inst_t *)&cmd_set_vf_mac_anti_spoof, | 17904 | &cmd_set_vf_mac_anti_spoof, |
861 | 17905 | (cmdline_parse_inst_t *)&cmd_set_vf_vlan_stripq, | 17905 | &cmd_set_vf_vlan_stripq, |
862 | 17906 | (cmdline_parse_inst_t *)&cmd_set_vf_vlan_insert, | 17906 | &cmd_set_vf_vlan_insert, |
863 | 17907 | (cmdline_parse_inst_t *)&cmd_set_tx_loopback, | 17907 | &cmd_set_tx_loopback, |
864 | 17908 | (cmdline_parse_inst_t *)&cmd_set_all_queues_drop_en, | 17908 | &cmd_set_all_queues_drop_en, |
865 | 17909 | (cmdline_parse_inst_t *)&cmd_set_vf_split_drop_en, | 17909 | &cmd_set_vf_split_drop_en, |
866 | 17910 | (cmdline_parse_inst_t *)&cmd_set_macsec_offload_on, | 17910 | &cmd_set_macsec_offload_on, |
867 | 17911 | (cmdline_parse_inst_t *)&cmd_set_macsec_offload_off, | 17911 | &cmd_set_macsec_offload_off, |
868 | 17912 | (cmdline_parse_inst_t *)&cmd_set_macsec_sc, | 17912 | &cmd_set_macsec_sc, |
869 | 17913 | (cmdline_parse_inst_t *)&cmd_set_macsec_sa, | 17913 | &cmd_set_macsec_sa, |
870 | 17914 | (cmdline_parse_inst_t *)&cmd_set_vf_traffic, | 17914 | &cmd_set_vf_traffic, |
871 | 17915 | (cmdline_parse_inst_t *)&cmd_set_vf_rxmode, | 17915 | &cmd_set_vf_rxmode, |
872 | 17916 | (cmdline_parse_inst_t *)&cmd_vf_rate_limit, | 17916 | &cmd_vf_rate_limit, |
873 | 17917 | (cmdline_parse_inst_t *)&cmd_vf_rxvlan_filter, | 17917 | &cmd_vf_rxvlan_filter, |
874 | 17918 | (cmdline_parse_inst_t *)&cmd_set_vf_mac_addr, | 17918 | &cmd_set_vf_mac_addr, |
875 | 17919 | (cmdline_parse_inst_t *)&cmd_set_vf_promisc, | 17919 | &cmd_set_vf_promisc, |
876 | 17920 | (cmdline_parse_inst_t *)&cmd_set_vf_allmulti, | 17920 | &cmd_set_vf_allmulti, |
877 | 17921 | (cmdline_parse_inst_t *)&cmd_set_vf_broadcast, | 17921 | &cmd_set_vf_broadcast, |
878 | 17922 | (cmdline_parse_inst_t *)&cmd_set_vf_vlan_tag, | 17922 | &cmd_set_vf_vlan_tag, |
879 | 17923 | (cmdline_parse_inst_t *)&cmd_vf_max_bw, | 17923 | &cmd_vf_max_bw, |
880 | 17924 | (cmdline_parse_inst_t *)&cmd_vf_tc_min_bw, | 17924 | &cmd_vf_tc_min_bw, |
881 | 17925 | (cmdline_parse_inst_t *)&cmd_vf_tc_max_bw, | 17925 | &cmd_vf_tc_max_bw, |
882 | 17926 | (cmdline_parse_inst_t *)&cmd_strict_link_prio, | 17926 | &cmd_strict_link_prio, |
883 | 17927 | (cmdline_parse_inst_t *)&cmd_tc_min_bw, | 17927 | &cmd_tc_min_bw, |
884 | 17928 | (cmdline_parse_inst_t *)&cmd_set_vxlan, | 17928 | &cmd_set_vxlan, |
885 | 17929 | (cmdline_parse_inst_t *)&cmd_set_vxlan_tos_ttl, | 17929 | &cmd_set_vxlan_tos_ttl, |
886 | 17930 | (cmdline_parse_inst_t *)&cmd_set_vxlan_with_vlan, | 17930 | &cmd_set_vxlan_with_vlan, |
887 | 17931 | (cmdline_parse_inst_t *)&cmd_set_nvgre, | 17931 | &cmd_set_nvgre, |
888 | 17932 | (cmdline_parse_inst_t *)&cmd_set_nvgre_with_vlan, | 17932 | &cmd_set_nvgre_with_vlan, |
889 | 17933 | (cmdline_parse_inst_t *)&cmd_set_l2_encap, | 17933 | &cmd_set_l2_encap, |
890 | 17934 | (cmdline_parse_inst_t *)&cmd_set_l2_encap_with_vlan, | 17934 | &cmd_set_l2_encap_with_vlan, |
891 | 17935 | (cmdline_parse_inst_t *)&cmd_set_l2_decap, | 17935 | &cmd_set_l2_decap, |
892 | 17936 | (cmdline_parse_inst_t *)&cmd_set_l2_decap_with_vlan, | 17936 | &cmd_set_l2_decap_with_vlan, |
893 | 17937 | (cmdline_parse_inst_t *)&cmd_set_mplsogre_encap, | 17937 | &cmd_set_mplsogre_encap, |
894 | 17938 | (cmdline_parse_inst_t *)&cmd_set_mplsogre_encap_with_vlan, | 17938 | &cmd_set_mplsogre_encap_with_vlan, |
895 | 17939 | (cmdline_parse_inst_t *)&cmd_set_mplsogre_decap, | 17939 | &cmd_set_mplsogre_decap, |
896 | 17940 | (cmdline_parse_inst_t *)&cmd_set_mplsogre_decap_with_vlan, | 17940 | &cmd_set_mplsogre_decap_with_vlan, |
897 | 17941 | (cmdline_parse_inst_t *)&cmd_set_mplsoudp_encap, | 17941 | &cmd_set_mplsoudp_encap, |
898 | 17942 | (cmdline_parse_inst_t *)&cmd_set_mplsoudp_encap_with_vlan, | 17942 | &cmd_set_mplsoudp_encap_with_vlan, |
899 | 17943 | (cmdline_parse_inst_t *)&cmd_set_mplsoudp_decap, | 17943 | &cmd_set_mplsoudp_decap, |
900 | 17944 | (cmdline_parse_inst_t *)&cmd_set_mplsoudp_decap_with_vlan, | 17944 | &cmd_set_mplsoudp_decap_with_vlan, |
901 | 17945 | (cmdline_parse_inst_t *)&cmd_set_conntrack_common, | 17945 | &cmd_set_conntrack_common, |
902 | 17946 | (cmdline_parse_inst_t *)&cmd_set_conntrack_dir, | 17946 | &cmd_set_conntrack_dir, |
903 | 17947 | (cmdline_parse_inst_t *)&cmd_ddp_add, | 17947 | &cmd_ddp_add, |
904 | 17948 | (cmdline_parse_inst_t *)&cmd_ddp_del, | 17948 | &cmd_ddp_del, |
905 | 17949 | (cmdline_parse_inst_t *)&cmd_ddp_get_list, | 17949 | &cmd_ddp_get_list, |
906 | 17950 | (cmdline_parse_inst_t *)&cmd_ddp_get_info, | 17950 | &cmd_ddp_get_info, |
907 | 17951 | (cmdline_parse_inst_t *)&cmd_cfg_input_set, | 17951 | &cmd_cfg_input_set, |
908 | 17952 | (cmdline_parse_inst_t *)&cmd_clear_input_set, | 17952 | &cmd_clear_input_set, |
909 | 17953 | (cmdline_parse_inst_t *)&cmd_show_vf_stats, | 17953 | &cmd_show_vf_stats, |
910 | 17954 | (cmdline_parse_inst_t *)&cmd_clear_vf_stats, | 17954 | &cmd_clear_vf_stats, |
911 | 17955 | (cmdline_parse_inst_t *)&cmd_show_port_supported_ptypes, | 17955 | &cmd_show_port_supported_ptypes, |
912 | 17956 | (cmdline_parse_inst_t *)&cmd_set_port_ptypes, | 17956 | &cmd_set_port_ptypes, |
913 | 17957 | (cmdline_parse_inst_t *)&cmd_ptype_mapping_get, | 17957 | &cmd_ptype_mapping_get, |
914 | 17958 | (cmdline_parse_inst_t *)&cmd_ptype_mapping_replace, | 17958 | &cmd_ptype_mapping_replace, |
915 | 17959 | (cmdline_parse_inst_t *)&cmd_ptype_mapping_reset, | 17959 | &cmd_ptype_mapping_reset, |
916 | 17960 | (cmdline_parse_inst_t *)&cmd_ptype_mapping_update, | 17960 | &cmd_ptype_mapping_update, |
917 | 17961 | 17961 | ||
918 | 17962 | (cmdline_parse_inst_t *)&cmd_pctype_mapping_get, | 17962 | &cmd_pctype_mapping_get, |
919 | 17963 | (cmdline_parse_inst_t *)&cmd_pctype_mapping_reset, | 17963 | &cmd_pctype_mapping_reset, |
920 | 17964 | (cmdline_parse_inst_t *)&cmd_pctype_mapping_update, | 17964 | &cmd_pctype_mapping_update, |
921 | 17965 | (cmdline_parse_inst_t *)&cmd_queue_region, | 17965 | &cmd_queue_region, |
922 | 17966 | (cmdline_parse_inst_t *)&cmd_region_flowtype, | 17966 | &cmd_region_flowtype, |
923 | 17967 | (cmdline_parse_inst_t *)&cmd_user_priority_region, | 17967 | &cmd_user_priority_region, |
924 | 17968 | (cmdline_parse_inst_t *)&cmd_flush_queue_region, | 17968 | &cmd_flush_queue_region, |
925 | 17969 | (cmdline_parse_inst_t *)&cmd_show_queue_region_info_all, | 17969 | &cmd_show_queue_region_info_all, |
926 | 17970 | (cmdline_parse_inst_t *)&cmd_show_port_tm_cap, | 17970 | &cmd_show_port_tm_cap, |
927 | 17971 | (cmdline_parse_inst_t *)&cmd_show_port_tm_level_cap, | 17971 | &cmd_show_port_tm_level_cap, |
928 | 17972 | (cmdline_parse_inst_t *)&cmd_show_port_tm_node_cap, | 17972 | &cmd_show_port_tm_node_cap, |
929 | 17973 | (cmdline_parse_inst_t *)&cmd_show_port_tm_node_type, | 17973 | &cmd_show_port_tm_node_type, |
930 | 17974 | (cmdline_parse_inst_t *)&cmd_show_port_tm_node_stats, | 17974 | &cmd_show_port_tm_node_stats, |
931 | 17975 | (cmdline_parse_inst_t *)&cmd_add_port_tm_node_shaper_profile, | 17975 | &cmd_add_port_tm_node_shaper_profile, |
932 | 17976 | (cmdline_parse_inst_t *)&cmd_del_port_tm_node_shaper_profile, | 17976 | &cmd_del_port_tm_node_shaper_profile, |
933 | 17977 | (cmdline_parse_inst_t *)&cmd_add_port_tm_node_shared_shaper, | 17977 | &cmd_add_port_tm_node_shared_shaper, |
934 | 17978 | (cmdline_parse_inst_t *)&cmd_del_port_tm_node_shared_shaper, | 17978 | &cmd_del_port_tm_node_shared_shaper, |
935 | 17979 | (cmdline_parse_inst_t *)&cmd_add_port_tm_node_wred_profile, | 17979 | &cmd_add_port_tm_node_wred_profile, |
936 | 17980 | (cmdline_parse_inst_t *)&cmd_del_port_tm_node_wred_profile, | 17980 | &cmd_del_port_tm_node_wred_profile, |
937 | 17981 | (cmdline_parse_inst_t *)&cmd_set_port_tm_node_shaper_profile, | 17981 | &cmd_set_port_tm_node_shaper_profile, |
938 | 17982 | (cmdline_parse_inst_t *)&cmd_add_port_tm_nonleaf_node, | 17982 | &cmd_add_port_tm_nonleaf_node, |
939 | 17983 | (cmdline_parse_inst_t *)&cmd_add_port_tm_nonleaf_node_pmode, | 17983 | &cmd_add_port_tm_nonleaf_node_pmode, |
940 | 17984 | (cmdline_parse_inst_t *)&cmd_add_port_tm_leaf_node, | 17984 | &cmd_add_port_tm_leaf_node, |
941 | 17985 | (cmdline_parse_inst_t *)&cmd_del_port_tm_node, | 17985 | &cmd_del_port_tm_node, |
942 | 17986 | (cmdline_parse_inst_t *)&cmd_set_port_tm_node_parent, | 17986 | &cmd_set_port_tm_node_parent, |
943 | 17987 | (cmdline_parse_inst_t *)&cmd_suspend_port_tm_node, | 17987 | &cmd_suspend_port_tm_node, |
944 | 17988 | (cmdline_parse_inst_t *)&cmd_resume_port_tm_node, | 17988 | &cmd_resume_port_tm_node, |
945 | 17989 | (cmdline_parse_inst_t *)&cmd_port_tm_hierarchy_commit, | 17989 | &cmd_port_tm_hierarchy_commit, |
946 | 17990 | (cmdline_parse_inst_t *)&cmd_port_tm_mark_ip_ecn, | 17990 | &cmd_port_tm_mark_ip_ecn, |
947 | 17991 | (cmdline_parse_inst_t *)&cmd_port_tm_mark_ip_dscp, | 17991 | &cmd_port_tm_mark_ip_dscp, |
948 | 17992 | (cmdline_parse_inst_t *)&cmd_port_tm_mark_vlan_dei, | 17992 | &cmd_port_tm_mark_vlan_dei, |
949 | 17993 | (cmdline_parse_inst_t *)&cmd_cfg_tunnel_udp_port, | 17993 | &cmd_cfg_tunnel_udp_port, |
950 | 17994 | (cmdline_parse_inst_t *)&cmd_rx_offload_get_capa, | 17994 | &cmd_rx_offload_get_capa, |
951 | 17995 | (cmdline_parse_inst_t *)&cmd_rx_offload_get_configuration, | 17995 | &cmd_rx_offload_get_configuration, |
952 | 17996 | (cmdline_parse_inst_t *)&cmd_config_per_port_rx_offload, | 17996 | &cmd_config_per_port_rx_offload, |
953 | 17997 | (cmdline_parse_inst_t *)&cmd_config_per_queue_rx_offload, | 17997 | &cmd_config_per_queue_rx_offload, |
954 | 17998 | (cmdline_parse_inst_t *)&cmd_tx_offload_get_capa, | 17998 | &cmd_tx_offload_get_capa, |
955 | 17999 | (cmdline_parse_inst_t *)&cmd_tx_offload_get_configuration, | 17999 | &cmd_tx_offload_get_configuration, |
956 | 18000 | (cmdline_parse_inst_t *)&cmd_config_per_port_tx_offload, | 18000 | &cmd_config_per_port_tx_offload, |
957 | 18001 | (cmdline_parse_inst_t *)&cmd_config_per_queue_tx_offload, | 18001 | &cmd_config_per_queue_tx_offload, |
958 | 18002 | #ifdef RTE_LIB_BPF | 18002 | #ifdef RTE_LIB_BPF |
961 | 18003 | (cmdline_parse_inst_t *)&cmd_operate_bpf_ld_parse, | 18003 | &cmd_operate_bpf_ld_parse, |
962 | 18004 | (cmdline_parse_inst_t *)&cmd_operate_bpf_unld_parse, | 18004 | &cmd_operate_bpf_unld_parse, |
963 | 18005 | #endif | 18005 | #endif |
977 | 18006 | (cmdline_parse_inst_t *)&cmd_config_tx_metadata_specific, | 18006 | &cmd_config_tx_metadata_specific, |
978 | 18007 | (cmdline_parse_inst_t *)&cmd_show_tx_metadata, | 18007 | &cmd_show_tx_metadata, |
979 | 18008 | (cmdline_parse_inst_t *)&cmd_show_rx_tx_desc_status, | 18008 | &cmd_show_rx_tx_desc_status, |
980 | 18009 | (cmdline_parse_inst_t *)&cmd_show_rx_queue_desc_used_count, | 18009 | &cmd_show_rx_queue_desc_used_count, |
981 | 18010 | (cmdline_parse_inst_t *)&cmd_set_raw, | 18010 | &cmd_set_raw, |
982 | 18011 | (cmdline_parse_inst_t *)&cmd_show_set_raw, | 18011 | &cmd_show_set_raw, |
983 | 18012 | (cmdline_parse_inst_t *)&cmd_show_set_raw_all, | 18012 | &cmd_show_set_raw_all, |
984 | 18013 | (cmdline_parse_inst_t *)&cmd_config_tx_dynf_specific, | 18013 | &cmd_config_tx_dynf_specific, |
985 | 18014 | (cmdline_parse_inst_t *)&cmd_show_fec_mode, | 18014 | &cmd_show_fec_mode, |
986 | 18015 | (cmdline_parse_inst_t *)&cmd_set_fec_mode, | 18015 | &cmd_set_fec_mode, |
987 | 18016 | (cmdline_parse_inst_t *)&cmd_show_capability, | 18016 | &cmd_show_capability, |
988 | 18017 | (cmdline_parse_inst_t *)&cmd_set_flex_is_pattern, | 18017 | &cmd_set_flex_is_pattern, |
989 | 18018 | (cmdline_parse_inst_t *)&cmd_set_flex_spec_pattern, | 18018 | &cmd_set_flex_spec_pattern, |
990 | 18019 | NULL, | 18019 | NULL, |
991 | 18020 | }; | 18020 | }; |
992 | 18021 | 18021 | ||
993 | @@ -18041,35 +18041,29 @@ cmdline_read_from_file(const char *filename) | |||
994 | 18041 | printf("Read CLI commands from %s\n", filename); | 18041 | printf("Read CLI commands from %s\n", filename); |
995 | 18042 | } | 18042 | } |
996 | 18043 | 18043 | ||
997 | 18044 | void | ||
998 | 18045 | prompt_exit(void) | ||
999 | 18046 | { | ||
1000 | 18047 | cmdline_quit(testpmd_cl); | ||
1001 | 18048 | } | ||
1002 | 18049 | |||
1003 | 18044 | /* prompt function, called from main on MAIN lcore */ | 18050 | /* prompt function, called from main on MAIN lcore */ |
1004 | 18045 | void | 18051 | void |
1005 | 18046 | prompt(void) | 18052 | prompt(void) |
1006 | 18047 | { | 18053 | { |
1007 | 18048 | int ret; | ||
1008 | 18049 | /* initialize non-constant commands */ | 18054 | /* initialize non-constant commands */ |
1009 | 18050 | cmd_set_fwd_mode_init(); | 18055 | cmd_set_fwd_mode_init(); |
1010 | 18051 | cmd_set_fwd_retry_mode_init(); | 18056 | cmd_set_fwd_retry_mode_init(); |
1011 | 18052 | 18057 | ||
1012 | 18053 | testpmd_cl = cmdline_stdin_new(main_ctx, "testpmd> "); | 18058 | testpmd_cl = cmdline_stdin_new(main_ctx, "testpmd> "); |
1014 | 18054 | if (testpmd_cl == NULL) | 18059 | if (testpmd_cl == NULL) { |
1015 | 18060 | fprintf(stderr, | ||
1016 | 18061 | "Failed to create stdin based cmdline context\n"); | ||
1017 | 18055 | return; | 18062 | return; |
1022 | 18056 | 18063 | } | |
1019 | 18057 | ret = atexit(prompt_exit); | ||
1020 | 18058 | if (ret != 0) | ||
1021 | 18059 | fprintf(stderr, "Cannot set exit function for cmdline\n"); | ||
1023 | 18060 | 18064 | ||
1024 | 18061 | cmdline_interact(testpmd_cl); | 18065 | cmdline_interact(testpmd_cl); |
1036 | 18062 | if (ret != 0) | 18066 | cmdline_stdin_exit(testpmd_cl); |
1026 | 18063 | cmdline_stdin_exit(testpmd_cl); | ||
1027 | 18064 | } | ||
1028 | 18065 | |||
1029 | 18066 | void | ||
1030 | 18067 | prompt_exit(void) | ||
1031 | 18068 | { | ||
1032 | 18069 | if (testpmd_cl != NULL) { | ||
1033 | 18070 | cmdline_quit(testpmd_cl); | ||
1034 | 18071 | cmdline_stdin_exit(testpmd_cl); | ||
1035 | 18072 | } | ||
1037 | 18073 | } | 18067 | } |
1038 | 18074 | 18068 | ||
1039 | 18075 | static void | 18069 | static void |
1040 | diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c | |||
1041 | index 5c4544a..cf12463 100644 | |||
1042 | --- a/app/test-pmd/cmdline_flow.c | |||
1043 | +++ b/app/test-pmd/cmdline_flow.c | |||
1044 | @@ -86,7 +86,6 @@ enum index { | |||
1045 | 86 | FLEX, | 86 | FLEX, |
1046 | 87 | 87 | ||
1047 | 88 | /* Flex arguments */ | 88 | /* Flex arguments */ |
1048 | 89 | FLEX_ITEM_INIT, | ||
1049 | 90 | FLEX_ITEM_CREATE, | 89 | FLEX_ITEM_CREATE, |
1050 | 91 | FLEX_ITEM_DESTROY, | 90 | FLEX_ITEM_DESTROY, |
1051 | 92 | 91 | ||
1052 | @@ -921,7 +920,6 @@ struct parse_action_priv { | |||
1053 | 921 | }) | 920 | }) |
1054 | 922 | 921 | ||
1055 | 923 | static const enum index next_flex_item[] = { | 922 | static const enum index next_flex_item[] = { |
1056 | 924 | FLEX_ITEM_INIT, | ||
1057 | 925 | FLEX_ITEM_CREATE, | 923 | FLEX_ITEM_CREATE, |
1058 | 926 | FLEX_ITEM_DESTROY, | 924 | FLEX_ITEM_DESTROY, |
1059 | 927 | ZERO, | 925 | ZERO, |
1060 | @@ -2316,15 +2314,6 @@ static const struct token token_list[] = { | |||
1061 | 2316 | .next = NEXT(next_flex_item), | 2314 | .next = NEXT(next_flex_item), |
1062 | 2317 | .call = parse_flex, | 2315 | .call = parse_flex, |
1063 | 2318 | }, | 2316 | }, |
1064 | 2319 | [FLEX_ITEM_INIT] = { | ||
1065 | 2320 | .name = "init", | ||
1066 | 2321 | .help = "flex item init", | ||
1067 | 2322 | .args = ARGS(ARGS_ENTRY(struct buffer, args.flex.token), | ||
1068 | 2323 | ARGS_ENTRY(struct buffer, port)), | ||
1069 | 2324 | .next = NEXT(NEXT_ENTRY(COMMON_FLEX_TOKEN), | ||
1070 | 2325 | NEXT_ENTRY(COMMON_PORT_ID)), | ||
1071 | 2326 | .call = parse_flex | ||
1072 | 2327 | }, | ||
1073 | 2328 | [FLEX_ITEM_CREATE] = { | 2317 | [FLEX_ITEM_CREATE] = { |
1074 | 2329 | .name = "create", | 2318 | .name = "create", |
1075 | 2330 | .help = "flex item create", | 2319 | .help = "flex item create", |
1076 | @@ -3781,9 +3770,12 @@ static const struct token token_list[] = { | |||
1077 | 3781 | [ITEM_CONNTRACK] = { | 3770 | [ITEM_CONNTRACK] = { |
1078 | 3782 | .name = "conntrack", | 3771 | .name = "conntrack", |
1079 | 3783 | .help = "conntrack state", | 3772 | .help = "conntrack state", |
1080 | 3773 | .priv = PRIV_ITEM(CONNTRACK, | ||
1081 | 3774 | sizeof(struct rte_flow_item_conntrack)), | ||
1082 | 3784 | .next = NEXT(NEXT_ENTRY(ITEM_NEXT), NEXT_ENTRY(COMMON_UNSIGNED), | 3775 | .next = NEXT(NEXT_ENTRY(ITEM_NEXT), NEXT_ENTRY(COMMON_UNSIGNED), |
1083 | 3785 | item_param), | 3776 | item_param), |
1084 | 3786 | .args = ARGS(ARGS_ENTRY(struct rte_flow_item_conntrack, flags)), | 3777 | .args = ARGS(ARGS_ENTRY(struct rte_flow_item_conntrack, flags)), |
1085 | 3778 | .call = parse_vc, | ||
1086 | 3787 | }, | 3779 | }, |
1087 | 3788 | [ITEM_PORT_REPRESENTOR] = { | 3780 | [ITEM_PORT_REPRESENTOR] = { |
1088 | 3789 | .name = "port_representor", | 3781 | .name = "port_representor", |
1089 | @@ -7491,7 +7483,6 @@ parse_flex(struct context *ctx, const struct token *token, | |||
1090 | 7491 | switch (ctx->curr) { | 7483 | switch (ctx->curr) { |
1091 | 7492 | default: | 7484 | default: |
1092 | 7493 | break; | 7485 | break; |
1093 | 7494 | case FLEX_ITEM_INIT: | ||
1094 | 7495 | case FLEX_ITEM_CREATE: | 7486 | case FLEX_ITEM_CREATE: |
1095 | 7496 | case FLEX_ITEM_DESTROY: | 7487 | case FLEX_ITEM_DESTROY: |
1096 | 7497 | out->command = ctx->curr; | 7488 | out->command = ctx->curr; |
1097 | diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c | |||
1098 | index cb57673..ad215c7 100644 | |||
1099 | --- a/app/test-pmd/config.c | |||
1100 | +++ b/app/test-pmd/config.c | |||
1101 | @@ -2063,7 +2063,7 @@ port_meter_policy_add(portid_t port_id, uint32_t policy_id, | |||
1102 | 2063 | for (act_n = 0, start = act; | 2063 | for (act_n = 0, start = act; |
1103 | 2064 | act->type != RTE_FLOW_ACTION_TYPE_END; act++) | 2064 | act->type != RTE_FLOW_ACTION_TYPE_END; act++) |
1104 | 2065 | act_n++; | 2065 | act_n++; |
1106 | 2066 | if (act_n && act->type == RTE_FLOW_ACTION_TYPE_END) | 2066 | if (act_n > 0) |
1107 | 2067 | policy.actions[i] = start; | 2067 | policy.actions[i] = start; |
1108 | 2068 | else | 2068 | else |
1109 | 2069 | policy.actions[i] = NULL; | 2069 | policy.actions[i] = NULL; |
1110 | @@ -2450,8 +2450,10 @@ port_flow_aged(portid_t port_id, uint8_t destroy) | |||
1111 | 2450 | } | 2450 | } |
1112 | 2451 | type = (enum age_action_context_type *)contexts[idx]; | 2451 | type = (enum age_action_context_type *)contexts[idx]; |
1113 | 2452 | switch (*type) { | 2452 | switch (*type) { |
1115 | 2453 | case ACTION_AGE_CONTEXT_TYPE_FLOW: | 2453 | case ACTION_AGE_CONTEXT_TYPE_FLOW: { |
1116 | 2454 | uint32_t flow_id; | ||
1117 | 2454 | ctx.pf = container_of(type, struct port_flow, age_type); | 2455 | ctx.pf = container_of(type, struct port_flow, age_type); |
1118 | 2456 | flow_id = ctx.pf->id; | ||
1119 | 2455 | printf("%-20s\t%" PRIu32 "\t%" PRIu32 "\t%" PRIu32 | 2457 | printf("%-20s\t%" PRIu32 "\t%" PRIu32 "\t%" PRIu32 |
1120 | 2456 | "\t%c%c%c\t\n", | 2458 | "\t%c%c%c\t\n", |
1121 | 2457 | "Flow", | 2459 | "Flow", |
1122 | @@ -2462,9 +2464,10 @@ port_flow_aged(portid_t port_id, uint8_t destroy) | |||
1123 | 2462 | ctx.pf->rule.attr->egress ? 'e' : '-', | 2464 | ctx.pf->rule.attr->egress ? 'e' : '-', |
1124 | 2463 | ctx.pf->rule.attr->transfer ? 't' : '-'); | 2465 | ctx.pf->rule.attr->transfer ? 't' : '-'); |
1125 | 2464 | if (destroy && !port_flow_destroy(port_id, 1, | 2466 | if (destroy && !port_flow_destroy(port_id, 1, |
1127 | 2465 | &ctx.pf->id)) | 2467 | &flow_id)) |
1128 | 2466 | total++; | 2468 | total++; |
1129 | 2467 | break; | 2469 | break; |
1130 | 2470 | } | ||
1131 | 2468 | case ACTION_AGE_CONTEXT_TYPE_INDIRECT_ACTION: | 2471 | case ACTION_AGE_CONTEXT_TYPE_INDIRECT_ACTION: |
1132 | 2469 | ctx.pia = container_of(type, | 2472 | ctx.pia = container_of(type, |
1133 | 2470 | struct port_indirect_action, age_type); | 2473 | struct port_indirect_action, age_type); |
1134 | @@ -3144,9 +3147,9 @@ fwd_stream_on_other_lcores(uint16_t domain_id, lcoreid_t src_lc, | |||
1135 | 3144 | continue; | 3147 | continue; |
1136 | 3145 | printf("Shared Rx queue group %u queue %hu can't be scheduled on different cores:\n", | 3148 | printf("Shared Rx queue group %u queue %hu can't be scheduled on different cores:\n", |
1137 | 3146 | share_group, share_rxq); | 3149 | share_group, share_rxq); |
1139 | 3147 | printf(" lcore %hhu Port %hu queue %hu\n", | 3150 | printf(" lcore %u Port %hu queue %hu\n", |
1140 | 3148 | src_lc, src_port, src_rxq); | 3151 | src_lc, src_port, src_rxq); |
1142 | 3149 | printf(" lcore %hhu Port %hu queue %hu\n", | 3152 | printf(" lcore %u Port %hu queue %hu\n", |
1143 | 3150 | lc_id, fs->rx_port, fs->rx_queue); | 3153 | lc_id, fs->rx_port, fs->rx_queue); |
1144 | 3151 | printf("Please use --nb-cores=%hu to limit number of forwarding cores\n", | 3154 | printf("Please use --nb-cores=%hu to limit number of forwarding cores\n", |
1145 | 3152 | nb_rxq); | 3155 | nb_rxq); |
1146 | @@ -3518,7 +3521,7 @@ icmp_echo_config_setup(void) | |||
1147 | 3518 | lcoreid_t lc_id; | 3521 | lcoreid_t lc_id; |
1148 | 3519 | uint16_t sm_id; | 3522 | uint16_t sm_id; |
1149 | 3520 | 3523 | ||
1151 | 3521 | if ((nb_txq * nb_fwd_ports) < nb_fwd_lcores) | 3524 | if ((lcoreid_t)(nb_txq * nb_fwd_ports) < nb_fwd_lcores) |
1152 | 3522 | cur_fwd_config.nb_fwd_lcores = (lcoreid_t) | 3525 | cur_fwd_config.nb_fwd_lcores = (lcoreid_t) |
1153 | 3523 | (nb_txq * nb_fwd_ports); | 3526 | (nb_txq * nb_fwd_ports); |
1154 | 3524 | else | 3527 | else |
1155 | diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c | |||
1156 | index 5e494c4..37cddf4 100644 | |||
1157 | --- a/app/test-pmd/csumonly.c | |||
1158 | +++ b/app/test-pmd/csumonly.c | |||
1159 | @@ -562,15 +562,17 @@ process_outer_cksums(void *outer_l3_hdr, struct testpmd_offload_info *info, | |||
1160 | 562 | uint64_t ol_flags = 0; | 562 | uint64_t ol_flags = 0; |
1161 | 563 | 563 | ||
1162 | 564 | if (info->outer_ethertype == _htons(RTE_ETHER_TYPE_IPV4)) { | 564 | if (info->outer_ethertype == _htons(RTE_ETHER_TYPE_IPV4)) { |
1163 | 565 | ipv4_hdr->hdr_checksum = 0; | ||
1164 | 566 | ol_flags |= RTE_MBUF_F_TX_OUTER_IPV4; | 565 | ol_flags |= RTE_MBUF_F_TX_OUTER_IPV4; |
1165 | 567 | 566 | ||
1167 | 568 | if (tx_offloads & RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM) | 567 | if (tx_offloads & RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM) { |
1168 | 569 | ol_flags |= RTE_MBUF_F_TX_OUTER_IP_CKSUM; | 568 | ol_flags |= RTE_MBUF_F_TX_OUTER_IP_CKSUM; |
1170 | 570 | else | 569 | } else { |
1171 | 570 | ipv4_hdr->hdr_checksum = 0; | ||
1172 | 571 | ipv4_hdr->hdr_checksum = rte_ipv4_cksum(ipv4_hdr); | 571 | ipv4_hdr->hdr_checksum = rte_ipv4_cksum(ipv4_hdr); |
1174 | 572 | } else | 572 | } |
1175 | 573 | } else { | ||
1176 | 573 | ol_flags |= RTE_MBUF_F_TX_OUTER_IPV6; | 574 | ol_flags |= RTE_MBUF_F_TX_OUTER_IPV6; |
1177 | 575 | } | ||
1178 | 574 | 576 | ||
1179 | 575 | if (info->outer_l4_proto != IPPROTO_UDP) | 577 | if (info->outer_l4_proto != IPPROTO_UDP) |
1180 | 576 | return ol_flags; | 578 | return ol_flags; |
1181 | @@ -583,13 +585,6 @@ process_outer_cksums(void *outer_l3_hdr, struct testpmd_offload_info *info, | |||
1182 | 583 | 585 | ||
1183 | 584 | /* Skip SW outer UDP checksum generation if HW supports it */ | 586 | /* Skip SW outer UDP checksum generation if HW supports it */ |
1184 | 585 | if (tx_offloads & RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM) { | 587 | if (tx_offloads & RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM) { |
1185 | 586 | if (info->outer_ethertype == _htons(RTE_ETHER_TYPE_IPV4)) | ||
1186 | 587 | udp_hdr->dgram_cksum | ||
1187 | 588 | = rte_ipv4_phdr_cksum(ipv4_hdr, ol_flags); | ||
1188 | 589 | else | ||
1189 | 590 | udp_hdr->dgram_cksum | ||
1190 | 591 | = rte_ipv6_phdr_cksum(ipv6_hdr, ol_flags); | ||
1191 | 592 | |||
1192 | 593 | ol_flags |= RTE_MBUF_F_TX_OUTER_UDP_CKSUM; | 588 | ol_flags |= RTE_MBUF_F_TX_OUTER_UDP_CKSUM; |
1193 | 594 | return ol_flags; | 589 | return ol_flags; |
1194 | 595 | } | 590 | } |
1195 | diff --git a/app/test-pmd/ieee1588fwd.c b/app/test-pmd/ieee1588fwd.c | |||
1196 | index 896d5ef..8d9ce4d 100644 | |||
1197 | --- a/app/test-pmd/ieee1588fwd.c | |||
1198 | +++ b/app/test-pmd/ieee1588fwd.c | |||
1199 | @@ -201,14 +201,23 @@ ieee1588_packet_fwd(struct fwd_stream *fs) | |||
1200 | 201 | static int | 201 | static int |
1201 | 202 | port_ieee1588_fwd_begin(portid_t pi) | 202 | port_ieee1588_fwd_begin(portid_t pi) |
1202 | 203 | { | 203 | { |
1205 | 204 | rte_eth_timesync_enable(pi); | 204 | int ret; |
1206 | 205 | return 0; | 205 | |
1207 | 206 | ret = rte_eth_timesync_enable(pi); | ||
1208 | 207 | if (ret) | ||
1209 | 208 | printf("Port %u enable PTP failed, ret = %d\n", pi, ret); | ||
1210 | 209 | |||
1211 | 210 | return ret; | ||
1212 | 206 | } | 211 | } |
1213 | 207 | 212 | ||
1214 | 208 | static void | 213 | static void |
1215 | 209 | port_ieee1588_fwd_end(portid_t pi) | 214 | port_ieee1588_fwd_end(portid_t pi) |
1216 | 210 | { | 215 | { |
1218 | 211 | rte_eth_timesync_disable(pi); | 216 | int ret; |
1219 | 217 | |||
1220 | 218 | ret = rte_eth_timesync_disable(pi); | ||
1221 | 219 | if (ret) | ||
1222 | 220 | printf("Port %u disable PTP failed, ret = %d\n", pi, ret); | ||
1223 | 212 | } | 221 | } |
1224 | 213 | 222 | ||
1225 | 214 | static void | 223 | static void |
1226 | diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c | |||
1227 | index a6a4bf8..411c07c 100644 | |||
1228 | --- a/app/test-pmd/parameters.c | |||
1229 | +++ b/app/test-pmd/parameters.c | |||
1230 | @@ -869,8 +869,8 @@ launch_args_parse(int argc, char** argv) | |||
1231 | 869 | } | 869 | } |
1232 | 870 | if (!strcmp(lgopts[opt_idx].name, "nb-cores")) { | 870 | if (!strcmp(lgopts[opt_idx].name, "nb-cores")) { |
1233 | 871 | n = atoi(optarg); | 871 | n = atoi(optarg); |
1236 | 872 | if (n > 0 && n <= nb_lcores) | 872 | if (n > 0 && (lcoreid_t)n <= nb_lcores) |
1237 | 873 | nb_fwd_lcores = (uint8_t) n; | 873 | nb_fwd_lcores = (lcoreid_t) n; |
1238 | 874 | else | 874 | else |
1239 | 875 | rte_exit(EXIT_FAILURE, | 875 | rte_exit(EXIT_FAILURE, |
1240 | 876 | "nb-cores should be > 0 and <= %d\n", | 876 | "nb-cores should be > 0 and <= %d\n", |
1241 | diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c | |||
1242 | index 5f34641..fbfc090 100644 | |||
1243 | --- a/app/test-pmd/testpmd.c | |||
1244 | +++ b/app/test-pmd/testpmd.c | |||
1245 | @@ -228,7 +228,7 @@ unsigned int xstats_display_num; /**< Size of extended statistics to show */ | |||
1246 | 228 | * In container, it cannot terminate the process which running with 'stats-period' | 228 | * In container, it cannot terminate the process which running with 'stats-period' |
1247 | 229 | * option. Set flag to exit stats period loop after received SIGINT/SIGTERM. | 229 | * option. Set flag to exit stats period loop after received SIGINT/SIGTERM. |
1248 | 230 | */ | 230 | */ |
1250 | 231 | static volatile uint8_t f_quit; | 231 | volatile uint8_t f_quit; |
1251 | 232 | uint8_t cl_quit; /* Quit testpmd from cmdline. */ | 232 | uint8_t cl_quit; /* Quit testpmd from cmdline. */ |
1252 | 233 | 233 | ||
1253 | 234 | /* | 234 | /* |
1254 | @@ -4301,13 +4301,6 @@ init_port(void) | |||
1255 | 4301 | } | 4301 | } |
1256 | 4302 | 4302 | ||
1257 | 4303 | static void | 4303 | static void |
1258 | 4304 | force_quit(void) | ||
1259 | 4305 | { | ||
1260 | 4306 | pmd_test_exit(); | ||
1261 | 4307 | prompt_exit(); | ||
1262 | 4308 | } | ||
1263 | 4309 | |||
1264 | 4310 | static void | ||
1265 | 4311 | print_stats(void) | 4304 | print_stats(void) |
1266 | 4312 | { | 4305 | { |
1267 | 4313 | uint8_t i; | 4306 | uint8_t i; |
1268 | @@ -4325,28 +4318,10 @@ print_stats(void) | |||
1269 | 4325 | } | 4318 | } |
1270 | 4326 | 4319 | ||
1271 | 4327 | static void | 4320 | static void |
1273 | 4328 | signal_handler(int signum) | 4321 | signal_handler(int signum __rte_unused) |
1274 | 4329 | { | 4322 | { |
1295 | 4330 | if (signum == SIGINT || signum == SIGTERM) { | 4323 | f_quit = 1; |
1296 | 4331 | fprintf(stderr, "\nSignal %d received, preparing to exit...\n", | 4324 | prompt_exit(); |
1277 | 4332 | signum); | ||
1278 | 4333 | #ifdef RTE_LIB_PDUMP | ||
1279 | 4334 | /* uninitialize packet capture framework */ | ||
1280 | 4335 | rte_pdump_uninit(); | ||
1281 | 4336 | #endif | ||
1282 | 4337 | #ifdef RTE_LIB_LATENCYSTATS | ||
1283 | 4338 | if (latencystats_enabled != 0) | ||
1284 | 4339 | rte_latencystats_uninit(); | ||
1285 | 4340 | #endif | ||
1286 | 4341 | force_quit(); | ||
1287 | 4342 | /* Set flag to indicate the force termination. */ | ||
1288 | 4343 | f_quit = 1; | ||
1289 | 4344 | /* exit with the expected status */ | ||
1290 | 4345 | #ifndef RTE_EXEC_ENV_WINDOWS | ||
1291 | 4346 | signal(signum, SIG_DFL); | ||
1292 | 4347 | kill(getpid(), signum); | ||
1293 | 4348 | #endif | ||
1294 | 4349 | } | ||
1297 | 4350 | } | 4325 | } |
1298 | 4351 | 4326 | ||
1299 | 4352 | int | 4327 | int |
1300 | @@ -4357,8 +4332,18 @@ main(int argc, char** argv) | |||
1301 | 4357 | uint16_t count; | 4332 | uint16_t count; |
1302 | 4358 | int ret; | 4333 | int ret; |
1303 | 4359 | 4334 | ||
1304 | 4335 | #ifdef RTE_EXEC_ENV_WINDOWS | ||
1305 | 4360 | signal(SIGINT, signal_handler); | 4336 | signal(SIGINT, signal_handler); |
1306 | 4361 | signal(SIGTERM, signal_handler); | 4337 | signal(SIGTERM, signal_handler); |
1307 | 4338 | #else | ||
1308 | 4339 | /* Want read() not to be restarted on signal */ | ||
1309 | 4340 | struct sigaction action = { | ||
1310 | 4341 | .sa_handler = signal_handler, | ||
1311 | 4342 | }; | ||
1312 | 4343 | |||
1313 | 4344 | sigaction(SIGINT, &action, NULL); | ||
1314 | 4345 | sigaction(SIGTERM, &action, NULL); | ||
1315 | 4346 | #endif | ||
1316 | 4362 | 4347 | ||
1317 | 4363 | testpmd_logtype = rte_log_register("testpmd"); | 4348 | testpmd_logtype = rte_log_register("testpmd"); |
1318 | 4364 | if (testpmd_logtype < 0) | 4349 | if (testpmd_logtype < 0) |
1319 | @@ -4522,15 +4507,9 @@ main(int argc, char** argv) | |||
1320 | 4522 | start_packet_forwarding(0); | 4507 | start_packet_forwarding(0); |
1321 | 4523 | } | 4508 | } |
1322 | 4524 | prompt(); | 4509 | prompt(); |
1323 | 4525 | pmd_test_exit(); | ||
1324 | 4526 | } else | 4510 | } else |
1325 | 4527 | #endif | 4511 | #endif |
1326 | 4528 | { | 4512 | { |
1327 | 4529 | char c; | ||
1328 | 4530 | int rc; | ||
1329 | 4531 | |||
1330 | 4532 | f_quit = 0; | ||
1331 | 4533 | |||
1332 | 4534 | printf("No commandline core given, start packet forwarding\n"); | 4513 | printf("No commandline core given, start packet forwarding\n"); |
1333 | 4535 | start_packet_forwarding(tx_first); | 4514 | start_packet_forwarding(tx_first); |
1334 | 4536 | if (stats_period != 0) { | 4515 | if (stats_period != 0) { |
1335 | @@ -4553,15 +4532,33 @@ main(int argc, char** argv) | |||
1336 | 4553 | prev_time = cur_time; | 4532 | prev_time = cur_time; |
1337 | 4554 | rte_delay_us_sleep(US_PER_S); | 4533 | rte_delay_us_sleep(US_PER_S); |
1338 | 4555 | } | 4534 | } |
1340 | 4556 | } | 4535 | } else { |
1341 | 4536 | char c; | ||
1342 | 4557 | 4537 | ||
1348 | 4558 | printf("Press enter to exit\n"); | 4538 | printf("Press enter to exit\n"); |
1349 | 4559 | rc = read(0, &c, 1); | 4539 | while (f_quit == 0) { |
1350 | 4560 | pmd_test_exit(); | 4540 | /* end-of-file or any character exits loop */ |
1351 | 4561 | if (rc < 0) | 4541 | if (read(0, &c, 1) >= 0) |
1352 | 4562 | return 1; | 4542 | break; |
1353 | 4543 | if (errno == EINTR) | ||
1354 | 4544 | continue; | ||
1355 | 4545 | rte_exit(EXIT_FAILURE, "Read failed: %s\n", | ||
1356 | 4546 | strerror(errno)); | ||
1357 | 4547 | } | ||
1358 | 4548 | } | ||
1359 | 4563 | } | 4549 | } |
1360 | 4564 | 4550 | ||
1361 | 4551 | pmd_test_exit(); | ||
1362 | 4552 | |||
1363 | 4553 | #ifdef RTE_LIB_PDUMP | ||
1364 | 4554 | /* uninitialize packet capture framework */ | ||
1365 | 4555 | rte_pdump_uninit(); | ||
1366 | 4556 | #endif | ||
1367 | 4557 | #ifdef RTE_LIB_LATENCYSTATS | ||
1368 | 4558 | if (latencystats_enabled != 0) | ||
1369 | 4559 | rte_latencystats_uninit(); | ||
1370 | 4560 | #endif | ||
1371 | 4561 | |||
1372 | 4565 | ret = rte_eal_cleanup(); | 4562 | ret = rte_eal_cleanup(); |
1373 | 4566 | if (ret != 0) | 4563 | if (ret != 0) |
1374 | 4567 | rte_exit(EXIT_FAILURE, | 4564 | rte_exit(EXIT_FAILURE, |
1375 | diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h | |||
1376 | index e53320e..e161810 100644 | |||
1377 | --- a/app/test-pmd/testpmd.h | |||
1378 | +++ b/app/test-pmd/testpmd.h | |||
1379 | @@ -33,6 +33,7 @@ | |||
1380 | 33 | #define RTE_PORT_HANDLING (uint16_t)3 | 33 | #define RTE_PORT_HANDLING (uint16_t)3 |
1381 | 34 | 34 | ||
1382 | 35 | extern uint8_t cl_quit; | 35 | extern uint8_t cl_quit; |
1383 | 36 | extern volatile uint8_t f_quit; | ||
1384 | 36 | 37 | ||
1385 | 37 | /* | 38 | /* |
1386 | 38 | * It is used to allocate the memory for hash key. | 39 | * It is used to allocate the memory for hash key. |
1387 | @@ -76,7 +77,7 @@ extern uint8_t cl_quit; | |||
1388 | 76 | 77 | ||
1389 | 77 | #define MIN_TOTAL_NUM_MBUFS 1024 | 78 | #define MIN_TOTAL_NUM_MBUFS 1024 |
1390 | 78 | 79 | ||
1392 | 79 | typedef uint8_t lcoreid_t; | 80 | typedef uint32_t lcoreid_t; |
1393 | 80 | typedef uint16_t portid_t; | 81 | typedef uint16_t portid_t; |
1394 | 81 | typedef uint16_t queueid_t; | 82 | typedef uint16_t queueid_t; |
1395 | 82 | typedef uint16_t streamid_t; | 83 | typedef uint16_t streamid_t; |
1396 | diff --git a/app/test/test_common.c b/app/test/test_common.c | |||
1397 | index f89e1eb..372bb8f 100644 | |||
1398 | --- a/app/test/test_common.c | |||
1399 | +++ b/app/test/test_common.c | |||
1400 | @@ -8,11 +8,12 @@ | |||
1401 | 8 | #include <math.h> | 8 | #include <math.h> |
1402 | 9 | #include <rte_common.h> | 9 | #include <rte_common.h> |
1403 | 10 | #include <rte_hexdump.h> | 10 | #include <rte_hexdump.h> |
1404 | 11 | #include <rte_random.h> | ||
1405 | 11 | #include <rte_pause.h> | 12 | #include <rte_pause.h> |
1406 | 12 | 13 | ||
1407 | 13 | #include "test.h" | 14 | #include "test.h" |
1408 | 14 | 15 | ||
1410 | 15 | #define MAX_NUM 1 << 20 | 16 | #define MAX_NUM (1 << 20) |
1411 | 16 | 17 | ||
1412 | 17 | #define FAIL(x)\ | 18 | #define FAIL(x)\ |
1413 | 18 | {printf(x "() test failed!\n");\ | 19 | {printf(x "() test failed!\n");\ |
1414 | @@ -217,19 +218,21 @@ test_align(void) | |||
1415 | 217 | } | 218 | } |
1416 | 218 | } | 219 | } |
1417 | 219 | 220 | ||
1431 | 220 | for (p = 1; p <= MAX_NUM / 2; p++) { | 221 | /* testing the whole space of 2^20^2 takes too long. */ |
1432 | 221 | for (i = 1; i <= MAX_NUM / 2; i++) { | 222 | for (j = 1; j <= MAX_NUM ; j++) { |
1433 | 222 | val = RTE_ALIGN_MUL_CEIL(i, p); | 223 | i = rte_rand_max(MAX_NUM - 1) + 1; |
1434 | 223 | if (val % p != 0 || val < i) | 224 | p = rte_rand_max(MAX_NUM - 1) + 1; |
1435 | 224 | FAIL_ALIGN("RTE_ALIGN_MUL_CEIL", i, p); | 225 | |
1436 | 225 | val = RTE_ALIGN_MUL_FLOOR(i, p); | 226 | val = RTE_ALIGN_MUL_CEIL(i, p); |
1437 | 226 | if (val % p != 0 || val > i) | 227 | if (val % p != 0 || val < i) |
1438 | 227 | FAIL_ALIGN("RTE_ALIGN_MUL_FLOOR", i, p); | 228 | FAIL_ALIGN("RTE_ALIGN_MUL_CEIL", i, p); |
1439 | 228 | val = RTE_ALIGN_MUL_NEAR(i, p); | 229 | val = RTE_ALIGN_MUL_FLOOR(i, p); |
1440 | 229 | if (val % p != 0 || ((val != RTE_ALIGN_MUL_CEIL(i, p)) | 230 | if (val % p != 0 || val > i) |
1441 | 230 | & (val != RTE_ALIGN_MUL_FLOOR(i, p)))) | 231 | FAIL_ALIGN("RTE_ALIGN_MUL_FLOOR", i, p); |
1442 | 231 | FAIL_ALIGN("RTE_ALIGN_MUL_NEAR", i, p); | 232 | val = RTE_ALIGN_MUL_NEAR(i, p); |
1443 | 232 | } | 233 | if (val % p != 0 || ((val != RTE_ALIGN_MUL_CEIL(i, p)) |
1444 | 234 | & (val != RTE_ALIGN_MUL_FLOOR(i, p)))) | ||
1445 | 235 | FAIL_ALIGN("RTE_ALIGN_MUL_NEAR", i, p); | ||
1446 | 233 | } | 236 | } |
1447 | 234 | 237 | ||
1448 | 235 | return 0; | 238 | return 0; |
1449 | diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c | |||
1450 | index 0bd4517..245d514 100644 | |||
1451 | --- a/app/test/test_cryptodev.c | |||
1452 | +++ b/app/test/test_cryptodev.c | |||
1453 | @@ -6,6 +6,7 @@ | |||
1454 | 6 | #include <time.h> | 6 | #include <time.h> |
1455 | 7 | 7 | ||
1456 | 8 | #include <rte_common.h> | 8 | #include <rte_common.h> |
1457 | 9 | #include <rte_errno.h> | ||
1458 | 9 | #include <rte_hexdump.h> | 10 | #include <rte_hexdump.h> |
1459 | 10 | #include <rte_mbuf.h> | 11 | #include <rte_mbuf.h> |
1460 | 11 | #include <rte_malloc.h> | 12 | #include <rte_malloc.h> |
1461 | @@ -8414,7 +8415,7 @@ static int test_pdcp_proto(int i, int oop, enum rte_crypto_cipher_operation opc, | |||
1462 | 8414 | /* Out of place support */ | 8415 | /* Out of place support */ |
1463 | 8415 | if (oop) { | 8416 | if (oop) { |
1464 | 8416 | /* | 8417 | /* |
1466 | 8417 | * For out-op-place we need to alloc another mbuf | 8418 | * For out-of-place we need to alloc another mbuf |
1467 | 8418 | */ | 8419 | */ |
1468 | 8419 | ut_params->obuf = rte_pktmbuf_alloc(ts_params->mbuf_pool); | 8420 | ut_params->obuf = rte_pktmbuf_alloc(ts_params->mbuf_pool); |
1469 | 8420 | rte_pktmbuf_append(ut_params->obuf, output_vec_len); | 8421 | rte_pktmbuf_append(ut_params->obuf, output_vec_len); |
1470 | @@ -8616,7 +8617,7 @@ test_pdcp_proto_SGL(int i, int oop, | |||
1471 | 8616 | /* Out of place support */ | 8617 | /* Out of place support */ |
1472 | 8617 | if (oop) { | 8618 | if (oop) { |
1473 | 8618 | /* | 8619 | /* |
1475 | 8619 | * For out-op-place we need to alloc another mbuf | 8620 | * For out-of-place we need to alloc another mbuf |
1476 | 8620 | */ | 8621 | */ |
1477 | 8621 | ut_params->obuf = rte_pktmbuf_alloc(ts_params->mbuf_pool); | 8622 | ut_params->obuf = rte_pktmbuf_alloc(ts_params->mbuf_pool); |
1478 | 8622 | rte_pktmbuf_append(ut_params->obuf, frag_size_oop); | 8623 | rte_pktmbuf_append(ut_params->obuf, frag_size_oop); |
1479 | @@ -11830,6 +11831,12 @@ test_enq_callback_setup(void) | |||
1480 | 11830 | /* Test with invalid crypto device */ | 11831 | /* Test with invalid crypto device */ |
1481 | 11831 | cb = rte_cryptodev_add_enq_callback(RTE_CRYPTO_MAX_DEVS, | 11832 | cb = rte_cryptodev_add_enq_callback(RTE_CRYPTO_MAX_DEVS, |
1482 | 11832 | qp_id, test_enq_callback, NULL); | 11833 | qp_id, test_enq_callback, NULL); |
1483 | 11834 | if (rte_errno == ENOTSUP) { | ||
1484 | 11835 | RTE_LOG(ERR, USER1, "%s line %d: " | ||
1485 | 11836 | "rte_cryptodev_add_enq_callback() " | ||
1486 | 11837 | "Not supported, skipped\n", __func__, __LINE__); | ||
1487 | 11838 | return TEST_SKIPPED; | ||
1488 | 11839 | } | ||
1489 | 11833 | TEST_ASSERT_NULL(cb, "Add callback on qp %u on " | 11840 | TEST_ASSERT_NULL(cb, "Add callback on qp %u on " |
1490 | 11834 | "cryptodev %u did not fail", | 11841 | "cryptodev %u did not fail", |
1491 | 11835 | qp_id, RTE_CRYPTO_MAX_DEVS); | 11842 | qp_id, RTE_CRYPTO_MAX_DEVS); |
1492 | @@ -11930,6 +11937,12 @@ test_deq_callback_setup(void) | |||
1493 | 11930 | /* Test with invalid crypto device */ | 11937 | /* Test with invalid crypto device */ |
1494 | 11931 | cb = rte_cryptodev_add_deq_callback(RTE_CRYPTO_MAX_DEVS, | 11938 | cb = rte_cryptodev_add_deq_callback(RTE_CRYPTO_MAX_DEVS, |
1495 | 11932 | qp_id, test_deq_callback, NULL); | 11939 | qp_id, test_deq_callback, NULL); |
1496 | 11940 | if (rte_errno == ENOTSUP) { | ||
1497 | 11941 | RTE_LOG(ERR, USER1, "%s line %d: " | ||
1498 | 11942 | "rte_cryptodev_add_deq_callback() " | ||
1499 | 11943 | "Not supported, skipped\n", __func__, __LINE__); | ||
1500 | 11944 | return TEST_SKIPPED; | ||
1501 | 11945 | } | ||
1502 | 11933 | TEST_ASSERT_NULL(cb, "Add callback on qp %u on " | 11946 | TEST_ASSERT_NULL(cb, "Add callback on qp %u on " |
1503 | 11934 | "cryptodev %u did not fail", | 11947 | "cryptodev %u did not fail", |
1504 | 11935 | qp_id, RTE_CRYPTO_MAX_DEVS); | 11948 | qp_id, RTE_CRYPTO_MAX_DEVS); |
1505 | @@ -13713,7 +13726,7 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata, | |||
1506 | 13713 | } | 13726 | } |
1507 | 13714 | 13727 | ||
1508 | 13715 | /* | 13728 | /* |
1510 | 13716 | * For out-op-place we need to alloc another mbuf | 13729 | * For out-of-place we need to alloc another mbuf |
1511 | 13717 | */ | 13730 | */ |
1512 | 13718 | if (oop) { | 13731 | if (oop) { |
1513 | 13719 | ut_params->obuf = rte_pktmbuf_alloc(ts_params->mbuf_pool); | 13732 | ut_params->obuf = rte_pktmbuf_alloc(ts_params->mbuf_pool); |
1514 | diff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asym.c | |||
1515 | index 952b927..68cfc64 100644 | |||
1516 | --- a/app/test/test_cryptodev_asym.c | |||
1517 | +++ b/app/test/test_cryptodev_asym.c | |||
1518 | @@ -54,11 +54,15 @@ union test_case_structure { | |||
1519 | 54 | struct rsa_test_data_2 rsa_data; | 54 | struct rsa_test_data_2 rsa_data; |
1520 | 55 | }; | 55 | }; |
1521 | 56 | 56 | ||
1522 | 57 | struct vector_details { | ||
1523 | 58 | uint32_t vector_size; | ||
1524 | 59 | const void *address; | ||
1525 | 60 | }; | ||
1526 | 57 | struct test_cases_array { | 61 | struct test_cases_array { |
1527 | 58 | uint32_t size; | 62 | uint32_t size; |
1529 | 59 | const void *address[TEST_VECTOR_SIZE]; | 63 | struct vector_details details[TEST_VECTOR_SIZE]; |
1530 | 60 | }; | 64 | }; |
1532 | 61 | static struct test_cases_array test_vector = {0, { NULL } }; | 65 | static struct test_cases_array test_vector = {0, {} }; |
1533 | 62 | 66 | ||
1534 | 63 | static uint32_t test_index; | 67 | static uint32_t test_index; |
1535 | 64 | 68 | ||
1536 | @@ -525,14 +529,14 @@ error_exit: | |||
1537 | 525 | } | 529 | } |
1538 | 526 | 530 | ||
1539 | 527 | static int | 531 | static int |
1541 | 528 | test_one_case(const void *test_case, int sessionless) | 532 | test_one_case(struct vector_details test_case, int sessionless) |
1542 | 529 | { | 533 | { |
1543 | 530 | int status = TEST_SUCCESS, i = 0; | 534 | int status = TEST_SUCCESS, i = 0; |
1544 | 531 | char test_msg[ASYM_TEST_MSG_LEN + 1]; | 535 | char test_msg[ASYM_TEST_MSG_LEN + 1]; |
1545 | 532 | 536 | ||
1546 | 533 | /* Map the case to union */ | 537 | /* Map the case to union */ |
1547 | 534 | union test_case_structure tc; | 538 | union test_case_structure tc; |
1549 | 535 | memcpy(&tc, test_case, sizeof(tc)); | 539 | rte_memcpy(&tc, test_case.address, RTE_MIN(sizeof(tc), test_case.vector_size)); |
1550 | 536 | 540 | ||
1551 | 537 | if (tc.modex.xform_type == RTE_CRYPTO_ASYM_XFORM_MODEX | 541 | if (tc.modex.xform_type == RTE_CRYPTO_ASYM_XFORM_MODEX |
1552 | 538 | || tc.modex.xform_type == RTE_CRYPTO_ASYM_XFORM_MODINV) { | 542 | || tc.modex.xform_type == RTE_CRYPTO_ASYM_XFORM_MODINV) { |
1553 | @@ -584,7 +588,8 @@ load_test_vectors(void) | |||
1554 | 584 | "TEST_VECTOR_SIZE too small\n"); | 588 | "TEST_VECTOR_SIZE too small\n"); |
1555 | 585 | return -1; | 589 | return -1; |
1556 | 586 | } | 590 | } |
1558 | 587 | test_vector.address[test_vector.size] = &modex_test_case[i]; | 591 | test_vector.details[test_vector.size].address = &modex_test_case[i]; |
1559 | 592 | test_vector.details[test_vector.size].vector_size = sizeof(modex_test_case[i]); | ||
1560 | 588 | test_vector.size++; | 593 | test_vector.size++; |
1561 | 589 | } | 594 | } |
1562 | 590 | /* Load MODINV vector*/ | 595 | /* Load MODINV vector*/ |
1563 | @@ -595,7 +600,8 @@ load_test_vectors(void) | |||
1564 | 595 | "TEST_VECTOR_SIZE too small\n"); | 600 | "TEST_VECTOR_SIZE too small\n"); |
1565 | 596 | return -1; | 601 | return -1; |
1566 | 597 | } | 602 | } |
1568 | 598 | test_vector.address[test_vector.size] = &modinv_test_case[i]; | 603 | test_vector.details[test_vector.size].address = &modinv_test_case[i]; |
1569 | 604 | test_vector.details[test_vector.size].vector_size = sizeof(modinv_test_case[i]); | ||
1570 | 599 | test_vector.size++; | 605 | test_vector.size++; |
1571 | 600 | } | 606 | } |
1572 | 601 | /* Load RSA vector*/ | 607 | /* Load RSA vector*/ |
1573 | @@ -606,7 +612,8 @@ load_test_vectors(void) | |||
1574 | 606 | "TEST_VECTOR_SIZE too small\n"); | 612 | "TEST_VECTOR_SIZE too small\n"); |
1575 | 607 | return -1; | 613 | return -1; |
1576 | 608 | } | 614 | } |
1578 | 609 | test_vector.address[test_vector.size] = &rsa_test_case_list[i]; | 615 | test_vector.details[test_vector.size].address = &rsa_test_case_list[i]; |
1579 | 616 | test_vector.details[test_vector.size].vector_size = sizeof(rsa_test_case_list[i]); | ||
1580 | 610 | test_vector.size++; | 617 | test_vector.size++; |
1581 | 611 | } | 618 | } |
1582 | 612 | return 0; | 619 | return 0; |
1583 | @@ -631,12 +638,12 @@ test_one_by_one(void) | |||
1584 | 631 | /* Go through all test cases */ | 638 | /* Go through all test cases */ |
1585 | 632 | test_index = 0; | 639 | test_index = 0; |
1586 | 633 | for (i = 0; i < test_vector.size; i++) { | 640 | for (i = 0; i < test_vector.size; i++) { |
1588 | 634 | if (test_one_case(test_vector.address[i], 0) != TEST_SUCCESS) | 641 | if (test_one_case(test_vector.details[i], 0) != TEST_SUCCESS) |
1589 | 635 | status = TEST_FAILED; | 642 | status = TEST_FAILED; |
1590 | 636 | } | 643 | } |
1591 | 637 | if (sessionless) { | 644 | if (sessionless) { |
1592 | 638 | for (i = 0; i < test_vector.size; i++) { | 645 | for (i = 0; i < test_vector.size; i++) { |
1594 | 639 | if (test_one_case(test_vector.address[i], 1) | 646 | if (test_one_case(test_vector.details[i], 1) |
1595 | 640 | != TEST_SUCCESS) | 647 | != TEST_SUCCESS) |
1596 | 641 | status = TEST_FAILED; | 648 | status = TEST_FAILED; |
1597 | 642 | } | 649 | } |
1598 | @@ -996,8 +1003,6 @@ ut_setup_asym(void) | |||
1599 | 996 | qp_id, ts_params->valid_devs[0]); | 1003 | qp_id, ts_params->valid_devs[0]); |
1600 | 997 | } | 1004 | } |
1601 | 998 | 1005 | ||
1602 | 999 | rte_cryptodev_stats_reset(ts_params->valid_devs[0]); | ||
1603 | 1000 | |||
1604 | 1001 | /* Start the device */ | 1006 | /* Start the device */ |
1605 | 1002 | TEST_ASSERT_SUCCESS(rte_cryptodev_start(ts_params->valid_devs[0]), | 1007 | TEST_ASSERT_SUCCESS(rte_cryptodev_start(ts_params->valid_devs[0]), |
1606 | 1003 | "Failed to start cryptodev %u", | 1008 | "Failed to start cryptodev %u", |
1607 | @@ -1010,9 +1015,6 @@ static void | |||
1608 | 1010 | ut_teardown_asym(void) | 1015 | ut_teardown_asym(void) |
1609 | 1011 | { | 1016 | { |
1610 | 1012 | struct crypto_testsuite_params_asym *ts_params = &testsuite_params; | 1017 | struct crypto_testsuite_params_asym *ts_params = &testsuite_params; |
1611 | 1013 | struct rte_cryptodev_stats stats; | ||
1612 | 1014 | |||
1613 | 1015 | rte_cryptodev_stats_get(ts_params->valid_devs[0], &stats); | ||
1614 | 1016 | 1018 | ||
1615 | 1017 | /* Stop the device */ | 1019 | /* Stop the device */ |
1616 | 1018 | rte_cryptodev_stop(ts_params->valid_devs[0]); | 1020 | rte_cryptodev_stop(ts_params->valid_devs[0]); |
1617 | @@ -1068,7 +1070,7 @@ test_capability(void) | |||
1618 | 1068 | RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO)) { | 1070 | RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO)) { |
1619 | 1069 | RTE_LOG(INFO, USER1, | 1071 | RTE_LOG(INFO, USER1, |
1620 | 1070 | "Device doesn't support asymmetric. Test Skipped\n"); | 1072 | "Device doesn't support asymmetric. Test Skipped\n"); |
1622 | 1071 | return TEST_SUCCESS; | 1073 | return TEST_SKIPPED; |
1623 | 1072 | } | 1074 | } |
1624 | 1073 | 1075 | ||
1625 | 1074 | /* print xform capability */ | 1076 | /* print xform capability */ |
1626 | @@ -1083,6 +1085,7 @@ test_capability(void) | |||
1627 | 1083 | capa = rte_cryptodev_asym_capability_get(dev_id, | 1085 | capa = rte_cryptodev_asym_capability_get(dev_id, |
1628 | 1084 | (const struct | 1086 | (const struct |
1629 | 1085 | rte_cryptodev_asym_capability_idx *) &idx); | 1087 | rte_cryptodev_asym_capability_idx *) &idx); |
1630 | 1088 | TEST_ASSERT_NOT_NULL(capa, "Failed to get asymmetric capability"); | ||
1631 | 1086 | print_asym_capa(capa); | 1089 | print_asym_capa(capa); |
1632 | 1087 | } | 1090 | } |
1633 | 1088 | } | 1091 | } |
1634 | diff --git a/app/test/test_eal_flags.c b/app/test/test_eal_flags.c | |||
1635 | index d7f4c2c..860e11e 100644 | |||
1636 | --- a/app/test/test_eal_flags.c | |||
1637 | +++ b/app/test/test_eal_flags.c | |||
1638 | @@ -583,14 +583,14 @@ test_missing_c_flag(void) | |||
1639 | 583 | launch_proc(argv26) == 0 || launch_proc(argv27) == 0 || | 583 | launch_proc(argv26) == 0 || launch_proc(argv27) == 0 || |
1640 | 584 | launch_proc(argv28) == 0 || launch_proc(argv30) == 0) { | 584 | launch_proc(argv28) == 0 || launch_proc(argv30) == 0) { |
1641 | 585 | printf("Error - " | 585 | printf("Error - " |
1643 | 586 | "process ran without error with invalid --lcore flag\n"); | 586 | "process ran without error with invalid --lcores flag\n"); |
1644 | 587 | return -1; | 587 | return -1; |
1645 | 588 | } | 588 | } |
1646 | 589 | 589 | ||
1647 | 590 | if (rte_lcore_is_enabled(0) && rte_lcore_is_enabled(1) && | 590 | if (rte_lcore_is_enabled(0) && rte_lcore_is_enabled(1) && |
1648 | 591 | rte_lcore_is_enabled(2) && rte_lcore_is_enabled(3) && | 591 | rte_lcore_is_enabled(2) && rte_lcore_is_enabled(3) && |
1651 | 592 | rte_lcore_is_enabled(3) && rte_lcore_is_enabled(5) && | 592 | rte_lcore_is_enabled(4) && rte_lcore_is_enabled(5) && |
1652 | 593 | rte_lcore_is_enabled(4) && rte_lcore_is_enabled(7) && | 593 | rte_lcore_is_enabled(6) && rte_lcore_is_enabled(7) && |
1653 | 594 | launch_proc(argv29) != 0) { | 594 | launch_proc(argv29) != 0) { |
1654 | 595 | printf("Error - " | 595 | printf("Error - " |
1655 | 596 | "process did not run ok with valid corelist value\n"); | 596 | "process did not run ok with valid corelist value\n"); |
1656 | diff --git a/app/test/test_event_crypto_adapter.c b/app/test/test_event_crypto_adapter.c | |||
1657 | index ea14094..3dab1ac 100644 | |||
1658 | --- a/app/test/test_event_crypto_adapter.c | |||
1659 | +++ b/app/test/test_event_crypto_adapter.c | |||
1660 | @@ -589,21 +589,17 @@ configure_cryptodev(void) | |||
1661 | 589 | 589 | ||
1662 | 590 | static inline void | 590 | static inline void |
1663 | 591 | evdev_set_conf_values(struct rte_event_dev_config *dev_conf, | 591 | evdev_set_conf_values(struct rte_event_dev_config *dev_conf, |
1665 | 592 | struct rte_event_dev_info *info) | 592 | const struct rte_event_dev_info *info) |
1666 | 593 | { | 593 | { |
1680 | 594 | memset(dev_conf, 0, sizeof(struct rte_event_dev_config)); | 594 | *dev_conf = (struct rte_event_dev_config) { |
1681 | 595 | dev_conf->dequeue_timeout_ns = info->min_dequeue_timeout_ns; | 595 | .dequeue_timeout_ns = info->min_dequeue_timeout_ns, |
1682 | 596 | dev_conf->nb_event_ports = NB_TEST_PORTS; | 596 | .nb_event_ports = NB_TEST_PORTS, |
1683 | 597 | dev_conf->nb_event_queues = NB_TEST_QUEUES; | 597 | .nb_event_queues = NB_TEST_QUEUES, |
1684 | 598 | dev_conf->nb_event_queue_flows = info->max_event_queue_flows; | 598 | .nb_event_queue_flows = info->max_event_queue_flows, |
1685 | 599 | dev_conf->nb_event_port_dequeue_depth = | 599 | .nb_event_port_dequeue_depth = info->max_event_port_dequeue_depth, |
1686 | 600 | info->max_event_port_dequeue_depth; | 600 | .nb_event_port_enqueue_depth = info->max_event_port_enqueue_depth, |
1687 | 601 | dev_conf->nb_event_port_enqueue_depth = | 601 | .nb_events_limit = info->max_num_events, |
1688 | 602 | info->max_event_port_enqueue_depth; | 602 | }; |
1676 | 603 | dev_conf->nb_event_port_enqueue_depth = | ||
1677 | 604 | info->max_event_port_enqueue_depth; | ||
1678 | 605 | dev_conf->nb_events_limit = | ||
1679 | 606 | info->max_num_events; | ||
1689 | 607 | } | 603 | } |
1690 | 608 | 604 | ||
1691 | 609 | static int | 605 | static int |
1692 | diff --git a/app/test/test_fbarray.c b/app/test/test_fbarray.c | |||
1693 | index a691bf4..8a3a3d7 100644 | |||
1694 | --- a/app/test/test_fbarray.c | |||
1695 | +++ b/app/test/test_fbarray.c | |||
1696 | @@ -21,23 +21,41 @@ struct fbarray_testsuite_params { | |||
1697 | 21 | }; | 21 | }; |
1698 | 22 | 22 | ||
1699 | 23 | static struct fbarray_testsuite_params param; | 23 | static struct fbarray_testsuite_params param; |
1700 | 24 | static struct fbarray_testsuite_params unaligned; | ||
1701 | 24 | 25 | ||
1702 | 25 | #define FBARRAY_TEST_ARR_NAME "fbarray_autotest" | 26 | #define FBARRAY_TEST_ARR_NAME "fbarray_autotest" |
1703 | 26 | #define FBARRAY_TEST_LEN 256 | 27 | #define FBARRAY_TEST_LEN 256 |
1704 | 28 | #define FBARRAY_UNALIGNED_TEST_ARR_NAME "fbarray_unaligned_autotest" | ||
1705 | 29 | #define FBARRAY_UNALIGNED_TEST_LEN 60 | ||
1706 | 27 | #define FBARRAY_TEST_ELT_SZ (sizeof(int)) | 30 | #define FBARRAY_TEST_ELT_SZ (sizeof(int)) |
1707 | 28 | 31 | ||
1708 | 29 | static int autotest_setup(void) | 32 | static int autotest_setup(void) |
1709 | 30 | { | 33 | { |
1711 | 31 | return rte_fbarray_init(¶m.arr, FBARRAY_TEST_ARR_NAME, | 34 | int ret; |
1712 | 35 | |||
1713 | 36 | ret = rte_fbarray_init(¶m.arr, FBARRAY_TEST_ARR_NAME, | ||
1714 | 32 | FBARRAY_TEST_LEN, FBARRAY_TEST_ELT_SZ); | 37 | FBARRAY_TEST_LEN, FBARRAY_TEST_ELT_SZ); |
1715 | 38 | if (ret) { | ||
1716 | 39 | printf("Failed to initialize test array\n"); | ||
1717 | 40 | return -1; | ||
1718 | 41 | } | ||
1719 | 42 | ret = rte_fbarray_init(&unaligned.arr, FBARRAY_UNALIGNED_TEST_ARR_NAME, | ||
1720 | 43 | FBARRAY_UNALIGNED_TEST_LEN, FBARRAY_TEST_ELT_SZ); | ||
1721 | 44 | if (ret) { | ||
1722 | 45 | printf("Failed to initialize unaligned test array\n"); | ||
1723 | 46 | rte_fbarray_destroy(¶m.arr); | ||
1724 | 47 | return -1; | ||
1725 | 48 | } | ||
1726 | 49 | return 0; | ||
1727 | 33 | } | 50 | } |
1728 | 34 | 51 | ||
1729 | 35 | static void autotest_teardown(void) | 52 | static void autotest_teardown(void) |
1730 | 36 | { | 53 | { |
1731 | 37 | rte_fbarray_destroy(¶m.arr); | 54 | rte_fbarray_destroy(¶m.arr); |
1732 | 55 | rte_fbarray_destroy(&unaligned.arr); | ||
1733 | 38 | } | 56 | } |
1734 | 39 | 57 | ||
1736 | 40 | static int init_array(void) | 58 | static int init_aligned(void) |
1737 | 41 | { | 59 | { |
1738 | 42 | int i; | 60 | int i; |
1739 | 43 | for (i = param.start; i <= param.end; i++) { | 61 | for (i = param.start; i <= param.end; i++) { |
1740 | @@ -47,11 +65,35 @@ static int init_array(void) | |||
1741 | 47 | return 0; | 65 | return 0; |
1742 | 48 | } | 66 | } |
1743 | 49 | 67 | ||
1745 | 50 | static void reset_array(void) | 68 | static int init_unaligned(void) |
1746 | 69 | { | ||
1747 | 70 | int i; | ||
1748 | 71 | for (i = unaligned.start; i <= unaligned.end; i++) { | ||
1749 | 72 | if (rte_fbarray_set_used(&unaligned.arr, i)) | ||
1750 | 73 | return -1; | ||
1751 | 74 | } | ||
1752 | 75 | return 0; | ||
1753 | 76 | } | ||
1754 | 77 | |||
1755 | 78 | static void reset_aligned(void) | ||
1756 | 51 | { | 79 | { |
1757 | 52 | int i; | 80 | int i; |
1758 | 53 | for (i = 0; i < FBARRAY_TEST_LEN; i++) | 81 | for (i = 0; i < FBARRAY_TEST_LEN; i++) |
1759 | 54 | rte_fbarray_set_free(¶m.arr, i); | 82 | rte_fbarray_set_free(¶m.arr, i); |
1760 | 83 | /* reset param as well */ | ||
1761 | 84 | param.start = -1; | ||
1762 | 85 | param.end = -1; | ||
1763 | 86 | } | ||
1764 | 87 | |||
1765 | 88 | static void reset_unaligned(void) | ||
1766 | 89 | { | ||
1767 | 90 | int i; | ||
1768 | 91 | for (i = 0; i < FBARRAY_UNALIGNED_TEST_LEN; i++) | ||
1769 | 92 | rte_fbarray_set_free(&unaligned.arr, i); | ||
1770 | 93 | /* reset param as well */ | ||
1771 | 94 | unaligned.start = -1; | ||
1772 | 95 | unaligned.end = -1; | ||
1773 | 96 | |||
1774 | 55 | } | 97 | } |
1775 | 56 | 98 | ||
1776 | 57 | static int first_msk_test_setup(void) | 99 | static int first_msk_test_setup(void) |
1777 | @@ -59,7 +101,7 @@ static int first_msk_test_setup(void) | |||
1778 | 59 | /* put all within first mask */ | 101 | /* put all within first mask */ |
1779 | 60 | param.start = 3; | 102 | param.start = 3; |
1780 | 61 | param.end = 10; | 103 | param.end = 10; |
1782 | 62 | return init_array(); | 104 | return init_aligned(); |
1783 | 63 | } | 105 | } |
1784 | 64 | 106 | ||
1785 | 65 | static int cross_msk_test_setup(void) | 107 | static int cross_msk_test_setup(void) |
1786 | @@ -67,7 +109,7 @@ static int cross_msk_test_setup(void) | |||
1787 | 67 | /* put all within second and third mask */ | 109 | /* put all within second and third mask */ |
1788 | 68 | param.start = 70; | 110 | param.start = 70; |
1789 | 69 | param.end = 160; | 111 | param.end = 160; |
1791 | 70 | return init_array(); | 112 | return init_aligned(); |
1792 | 71 | } | 113 | } |
1793 | 72 | 114 | ||
1794 | 73 | static int multi_msk_test_setup(void) | 115 | static int multi_msk_test_setup(void) |
1795 | @@ -75,7 +117,7 @@ static int multi_msk_test_setup(void) | |||
1796 | 75 | /* put all within first and last mask */ | 117 | /* put all within first and last mask */ |
1797 | 76 | param.start = 3; | 118 | param.start = 3; |
1798 | 77 | param.end = FBARRAY_TEST_LEN - 20; | 119 | param.end = FBARRAY_TEST_LEN - 20; |
1800 | 78 | return init_array(); | 120 | return init_aligned(); |
1801 | 79 | } | 121 | } |
1802 | 80 | 122 | ||
1803 | 81 | static int last_msk_test_setup(void) | 123 | static int last_msk_test_setup(void) |
1804 | @@ -83,7 +125,7 @@ static int last_msk_test_setup(void) | |||
1805 | 83 | /* put all within last mask */ | 125 | /* put all within last mask */ |
1806 | 84 | param.start = FBARRAY_TEST_LEN - 20; | 126 | param.start = FBARRAY_TEST_LEN - 20; |
1807 | 85 | param.end = FBARRAY_TEST_LEN - 1; | 127 | param.end = FBARRAY_TEST_LEN - 1; |
1809 | 86 | return init_array(); | 128 | return init_aligned(); |
1810 | 87 | } | 129 | } |
1811 | 88 | 130 | ||
1812 | 89 | static int full_msk_test_setup(void) | 131 | static int full_msk_test_setup(void) |
1813 | @@ -91,16 +133,31 @@ static int full_msk_test_setup(void) | |||
1814 | 91 | /* fill entire mask */ | 133 | /* fill entire mask */ |
1815 | 92 | param.start = 0; | 134 | param.start = 0; |
1816 | 93 | param.end = FBARRAY_TEST_LEN - 1; | 135 | param.end = FBARRAY_TEST_LEN - 1; |
1818 | 94 | return init_array(); | 136 | return init_aligned(); |
1819 | 95 | } | 137 | } |
1820 | 96 | 138 | ||
1822 | 97 | static int empty_msk_test_setup(void) | 139 | static int lookahead_test_setup(void) |
1823 | 98 | { | 140 | { |
1829 | 99 | /* do not fill anything in */ | 141 | /* set index 64 as used */ |
1830 | 100 | reset_array(); | 142 | param.start = 64; |
1831 | 101 | param.start = -1; | 143 | param.end = 64; |
1832 | 102 | param.end = -1; | 144 | return init_aligned(); |
1833 | 103 | return 0; | 145 | } |
1834 | 146 | |||
1835 | 147 | static int lookbehind_test_setup(void) | ||
1836 | 148 | { | ||
1837 | 149 | /* set index 63 as used */ | ||
1838 | 150 | param.start = 63; | ||
1839 | 151 | param.end = 63; | ||
1840 | 152 | return init_aligned(); | ||
1841 | 153 | } | ||
1842 | 154 | |||
1843 | 155 | static int unaligned_test_setup(void) | ||
1844 | 156 | { | ||
1845 | 157 | unaligned.start = 0; | ||
1846 | 158 | /* leave one free bit at the end */ | ||
1847 | 159 | unaligned.end = FBARRAY_UNALIGNED_TEST_LEN - 2; | ||
1848 | 160 | return init_unaligned(); | ||
1849 | 104 | } | 161 | } |
1850 | 105 | 162 | ||
1851 | 106 | static int test_invalid(void) | 163 | static int test_invalid(void) |
1852 | @@ -454,7 +511,7 @@ static int test_basic(void) | |||
1853 | 454 | if (check_free()) | 511 | if (check_free()) |
1854 | 455 | return TEST_FAILED; | 512 | return TEST_FAILED; |
1855 | 456 | 513 | ||
1857 | 457 | reset_array(); | 514 | reset_aligned(); |
1858 | 458 | 515 | ||
1859 | 459 | return TEST_SUCCESS; | 516 | return TEST_SUCCESS; |
1860 | 460 | } | 517 | } |
1861 | @@ -697,6 +754,26 @@ static int test_find(void) | |||
1862 | 697 | return TEST_SUCCESS; | 754 | return TEST_SUCCESS; |
1863 | 698 | } | 755 | } |
1864 | 699 | 756 | ||
1865 | 757 | static int test_find_unaligned(void) | ||
1866 | 758 | { | ||
1867 | 759 | TEST_ASSERT_EQUAL((int)unaligned.arr.count, unaligned.end - unaligned.start + 1, | ||
1868 | 760 | "Wrong element count\n"); | ||
1869 | 761 | /* ensure space is free before start */ | ||
1870 | 762 | if (ensure_correct(&unaligned.arr, 0, unaligned.start - 1, false)) | ||
1871 | 763 | return TEST_FAILED; | ||
1872 | 764 | /* ensure space is occupied where it's supposed to be */ | ||
1873 | 765 | if (ensure_correct(&unaligned.arr, unaligned.start, unaligned.end, true)) | ||
1874 | 766 | return TEST_FAILED; | ||
1875 | 767 | /* ensure space after end is free as well */ | ||
1876 | 768 | if (ensure_correct(&unaligned.arr, unaligned.end + 1, FBARRAY_UNALIGNED_TEST_LEN - 1, | ||
1877 | 769 | false)) | ||
1878 | 770 | return TEST_FAILED; | ||
1879 | 771 | /* test if find_biggest API's work correctly */ | ||
1880 | 772 | if (test_biggest(&unaligned.arr, unaligned.start, unaligned.end)) | ||
1881 | 773 | return TEST_FAILED; | ||
1882 | 774 | return TEST_SUCCESS; | ||
1883 | 775 | } | ||
1884 | 776 | |||
1885 | 700 | static int test_empty(void) | 777 | static int test_empty(void) |
1886 | 701 | { | 778 | { |
1887 | 702 | TEST_ASSERT_EQUAL((int)param.arr.count, 0, "Wrong element count\n"); | 779 | TEST_ASSERT_EQUAL((int)param.arr.count, 0, "Wrong element count\n"); |
1888 | @@ -709,6 +786,87 @@ static int test_empty(void) | |||
1889 | 709 | return TEST_SUCCESS; | 786 | return TEST_SUCCESS; |
1890 | 710 | } | 787 | } |
1891 | 711 | 788 | ||
1892 | 789 | static int test_lookahead(void) | ||
1893 | 790 | { | ||
1894 | 791 | int ret; | ||
1895 | 792 | |||
1896 | 793 | /* run regular test first */ | ||
1897 | 794 | ret = test_find(); | ||
1898 | 795 | if (ret != TEST_SUCCESS) | ||
1899 | 796 | return ret; | ||
1900 | 797 | |||
1901 | 798 | /* test if we can find free chunk while not starting with 0 */ | ||
1902 | 799 | TEST_ASSERT_EQUAL(rte_fbarray_find_next_n_free(¶m.arr, 1, param.start), | ||
1903 | 800 | param.start + 1, "Free chunk index is wrong\n"); | ||
1904 | 801 | return TEST_SUCCESS; | ||
1905 | 802 | } | ||
1906 | 803 | |||
1907 | 804 | static int test_lookbehind(void) | ||
1908 | 805 | { | ||
1909 | 806 | int ret, free_len = 2; | ||
1910 | 807 | |||
1911 | 808 | /* run regular test first */ | ||
1912 | 809 | ret = test_find(); | ||
1913 | 810 | if (ret != TEST_SUCCESS) | ||
1914 | 811 | return ret; | ||
1915 | 812 | |||
1916 | 813 | /* test if we can find free chunk while crossing mask boundary */ | ||
1917 | 814 | TEST_ASSERT_EQUAL(rte_fbarray_find_prev_n_free(¶m.arr, param.start + 1, free_len), | ||
1918 | 815 | param.start - free_len, "Free chunk index is wrong\n"); | ||
1919 | 816 | return TEST_SUCCESS; | ||
1920 | 817 | } | ||
1921 | 818 | |||
1922 | 819 | static int test_lookahead_mask(void) | ||
1923 | 820 | { | ||
1924 | 821 | /* | ||
1925 | 822 | * There is a certain type of lookahead behavior we want to test here, | ||
1926 | 823 | * namely masking of bits that were scanned with lookahead but that we | ||
1927 | 824 | * know do not match our criteria. This is achieved in following steps: | ||
1928 | 825 | * | ||
1929 | 826 | * 0. Look for a big enough chunk of free space (say, 62 elements) | ||
1930 | 827 | * 1. Trigger lookahead by breaking a run somewhere inside mask 0 | ||
1931 | 828 | * (indices 0-63) | ||
1932 | 829 | * 2. Fail lookahead by breaking the run somewhere inside mask 1 | ||
1933 | 830 | * (indices 64-127) | ||
1934 | 831 | * 3. Ensure that we can still find free space in mask 1 afterwards | ||
1935 | 832 | */ | ||
1936 | 833 | |||
1937 | 834 | /* break run on first mask */ | ||
1938 | 835 | rte_fbarray_set_used(¶m.arr, 61); | ||
1939 | 836 | /* break run on second mask */ | ||
1940 | 837 | rte_fbarray_set_used(¶m.arr, 70); | ||
1941 | 838 | |||
1942 | 839 | /* we expect to find free space at 71 */ | ||
1943 | 840 | TEST_ASSERT_EQUAL(rte_fbarray_find_next_n_free(¶m.arr, 0, 62), | ||
1944 | 841 | 71, "Free chunk index is wrong\n"); | ||
1945 | 842 | return TEST_SUCCESS; | ||
1946 | 843 | } | ||
1947 | 844 | |||
1948 | 845 | static int test_lookbehind_mask(void) | ||
1949 | 846 | { | ||
1950 | 847 | /* | ||
1951 | 848 | * There is a certain type of lookbehind behavior we want to test here, | ||
1952 | 849 | * namely masking of bits that were scanned with lookbehind but that we | ||
1953 | 850 | * know do not match our criteria. This is achieved in two steps: | ||
1954 | 851 | * | ||
1955 | 852 | * 0. Look for a big enough chunk of free space (say, 62 elements) | ||
1956 | 853 | * 1. Trigger lookbehind by breaking a run somewhere inside mask 2 | ||
1957 | 854 | * (indices 128-191) | ||
1958 | 855 | * 2. Fail lookbehind by breaking the run somewhere inside mask 1 | ||
1959 | 856 | * (indices 64-127) | ||
1960 | 857 | * 3. Ensure that we can still find free space in mask 1 afterwards | ||
1961 | 858 | */ | ||
1962 | 859 | |||
1963 | 860 | /* break run on mask 2 */ | ||
1964 | 861 | rte_fbarray_set_used(¶m.arr, 130); | ||
1965 | 862 | /* break run on mask 1 */ | ||
1966 | 863 | rte_fbarray_set_used(¶m.arr, 70); | ||
1967 | 864 | |||
1968 | 865 | /* start from 190, we expect to find free space at 8 */ | ||
1969 | 866 | TEST_ASSERT_EQUAL(rte_fbarray_find_prev_n_free(¶m.arr, 190, 62), | ||
1970 | 867 | 8, "Free chunk index is wrong\n"); | ||
1971 | 868 | return TEST_SUCCESS; | ||
1972 | 869 | } | ||
1973 | 712 | 870 | ||
1974 | 713 | static struct unit_test_suite fbarray_test_suite = { | 871 | static struct unit_test_suite fbarray_test_suite = { |
1975 | 714 | .suite_name = "fbarray autotest", | 872 | .suite_name = "fbarray autotest", |
1976 | @@ -717,12 +875,19 @@ static struct unit_test_suite fbarray_test_suite = { | |||
1977 | 717 | .unit_test_cases = { | 875 | .unit_test_cases = { |
1978 | 718 | TEST_CASE(test_invalid), | 876 | TEST_CASE(test_invalid), |
1979 | 719 | TEST_CASE(test_basic), | 877 | TEST_CASE(test_basic), |
1986 | 720 | TEST_CASE_ST(first_msk_test_setup, reset_array, test_find), | 878 | TEST_CASE_ST(first_msk_test_setup, reset_aligned, test_find), |
1987 | 721 | TEST_CASE_ST(cross_msk_test_setup, reset_array, test_find), | 879 | TEST_CASE_ST(cross_msk_test_setup, reset_aligned, test_find), |
1988 | 722 | TEST_CASE_ST(multi_msk_test_setup, reset_array, test_find), | 880 | TEST_CASE_ST(multi_msk_test_setup, reset_aligned, test_find), |
1989 | 723 | TEST_CASE_ST(last_msk_test_setup, reset_array, test_find), | 881 | TEST_CASE_ST(last_msk_test_setup, reset_aligned, test_find), |
1990 | 724 | TEST_CASE_ST(full_msk_test_setup, reset_array, test_find), | 882 | TEST_CASE_ST(full_msk_test_setup, reset_aligned, test_find), |
1991 | 725 | TEST_CASE_ST(empty_msk_test_setup, reset_array, test_empty), | 883 | /* empty test does not need setup */ |
1992 | 884 | TEST_CASE_ST(NULL, reset_aligned, test_empty), | ||
1993 | 885 | TEST_CASE_ST(lookahead_test_setup, reset_aligned, test_lookahead), | ||
1994 | 886 | TEST_CASE_ST(lookbehind_test_setup, reset_aligned, test_lookbehind), | ||
1995 | 887 | /* setup for these tests is more complex so do it in test func */ | ||
1996 | 888 | TEST_CASE_ST(NULL, reset_aligned, test_lookahead_mask), | ||
1997 | 889 | TEST_CASE_ST(NULL, reset_aligned, test_lookbehind_mask), | ||
1998 | 890 | TEST_CASE_ST(unaligned_test_setup, reset_unaligned, test_find_unaligned), | ||
1999 | 726 | TEST_CASES_END() | 891 | TEST_CASES_END() |
2000 | 727 | } | 892 | } |
2001 | 728 | }; | 893 | }; |
2002 | diff --git a/app/test/test_link_bonding.c b/app/test/test_link_bonding.c | |||
2003 | index 0d5cfd4..39d4ad0 100644 | |||
2004 | --- a/app/test/test_link_bonding.c | |||
2005 | +++ b/app/test/test_link_bonding.c | |||
2006 | @@ -787,7 +787,7 @@ test_set_primary_slave(void) | |||
2007 | 787 | TEST_ASSERT_SUCCESS(rte_eth_macaddr_get(test_params->bonded_port_id, &read_mac_addr), | 787 | TEST_ASSERT_SUCCESS(rte_eth_macaddr_get(test_params->bonded_port_id, &read_mac_addr), |
2008 | 788 | "Failed to get mac address (port %d)", | 788 | "Failed to get mac address (port %d)", |
2009 | 789 | test_params->bonded_port_id); | 789 | test_params->bonded_port_id); |
2011 | 790 | TEST_ASSERT_SUCCESS(memcmp(&read_mac_addr, &read_mac_addr, | 790 | TEST_ASSERT_SUCCESS(memcmp(expected_mac_addr, &read_mac_addr, |
2012 | 791 | sizeof(read_mac_addr)), | 791 | sizeof(read_mac_addr)), |
2013 | 792 | "bonded port mac address not set to that of primary port\n"); | 792 | "bonded port mac address not set to that of primary port\n"); |
2014 | 793 | 793 | ||
2015 | diff --git a/app/test/test_link_bonding_rssconf.c b/app/test/test_link_bonding_rssconf.c | |||
2016 | index 6eb473b..9f11804 100644 | |||
2017 | --- a/app/test/test_link_bonding_rssconf.c | |||
2018 | +++ b/app/test/test_link_bonding_rssconf.c | |||
2019 | @@ -618,7 +618,6 @@ test_setup(void) | |||
2020 | 618 | mac_addr.addr_bytes[5] = 0x10 + port->port_id; | 618 | mac_addr.addr_bytes[5] = 0x10 + port->port_id; |
2021 | 619 | rte_eth_dev_default_mac_addr_set(port->port_id, &mac_addr); | 619 | rte_eth_dev_default_mac_addr_set(port->port_id, &mac_addr); |
2022 | 620 | 620 | ||
2023 | 621 | rte_eth_dev_info_get(port->port_id, &port->dev_info); | ||
2024 | 622 | retval = rte_eth_dev_info_get(port->port_id, &port->dev_info); | 621 | retval = rte_eth_dev_info_get(port->port_id, &port->dev_info); |
2025 | 623 | TEST_ASSERT((retval == 0), | 622 | TEST_ASSERT((retval == 0), |
2026 | 624 | "Error during getting device (port %u) info: %s\n", | 623 | "Error during getting device (port %u) info: %s\n", |
2027 | diff --git a/app/test/test_power_cpufreq.c b/app/test/test_power_cpufreq.c | |||
2028 | index 4d013cd..051b903 100644 | |||
2029 | --- a/app/test/test_power_cpufreq.c | |||
2030 | +++ b/app/test/test_power_cpufreq.c | |||
2031 | @@ -9,6 +9,7 @@ | |||
2032 | 9 | #include <string.h> | 9 | #include <string.h> |
2033 | 10 | #include <inttypes.h> | 10 | #include <inttypes.h> |
2034 | 11 | #include <rte_cycles.h> | 11 | #include <rte_cycles.h> |
2035 | 12 | #include <rte_lcore.h> | ||
2036 | 12 | 13 | ||
2037 | 13 | #include "test.h" | 14 | #include "test.h" |
2038 | 14 | 15 | ||
2039 | @@ -46,9 +47,10 @@ test_power_caps(void) | |||
2040 | 46 | 47 | ||
2041 | 47 | static uint32_t total_freq_num; | 48 | static uint32_t total_freq_num; |
2042 | 48 | static uint32_t freqs[TEST_POWER_FREQS_NUM_MAX]; | 49 | static uint32_t freqs[TEST_POWER_FREQS_NUM_MAX]; |
2043 | 50 | static uint32_t cpu_id; | ||
2044 | 49 | 51 | ||
2045 | 50 | static int | 52 | static int |
2047 | 51 | check_cur_freq(unsigned int lcore_id, uint32_t idx, bool turbo) | 53 | check_cur_freq(__rte_unused unsigned int lcore_id, uint32_t idx, bool turbo) |
2048 | 52 | { | 54 | { |
2049 | 53 | #define TEST_POWER_CONVERT_TO_DECIMAL 10 | 55 | #define TEST_POWER_CONVERT_TO_DECIMAL 10 |
2050 | 54 | #define MAX_LOOP 100 | 56 | #define MAX_LOOP 100 |
2051 | @@ -62,13 +64,13 @@ check_cur_freq(unsigned int lcore_id, uint32_t idx, bool turbo) | |||
2052 | 62 | int i; | 64 | int i; |
2053 | 63 | 65 | ||
2054 | 64 | if (snprintf(fullpath, sizeof(fullpath), | 66 | if (snprintf(fullpath, sizeof(fullpath), |
2056 | 65 | TEST_POWER_SYSFILE_CPUINFO_FREQ, lcore_id) < 0) { | 67 | TEST_POWER_SYSFILE_CPUINFO_FREQ, cpu_id) < 0) { |
2057 | 66 | return 0; | 68 | return 0; |
2058 | 67 | } | 69 | } |
2059 | 68 | f = fopen(fullpath, "r"); | 70 | f = fopen(fullpath, "r"); |
2060 | 69 | if (f == NULL) { | 71 | if (f == NULL) { |
2061 | 70 | if (snprintf(fullpath, sizeof(fullpath), | 72 | if (snprintf(fullpath, sizeof(fullpath), |
2063 | 71 | TEST_POWER_SYSFILE_SCALING_FREQ, lcore_id) < 0) { | 73 | TEST_POWER_SYSFILE_SCALING_FREQ, cpu_id) < 0) { |
2064 | 72 | return 0; | 74 | return 0; |
2065 | 73 | } | 75 | } |
2066 | 74 | f = fopen(fullpath, "r"); | 76 | f = fopen(fullpath, "r"); |
2067 | @@ -486,6 +488,19 @@ test_power_cpufreq(void) | |||
2068 | 486 | { | 488 | { |
2069 | 487 | int ret = -1; | 489 | int ret = -1; |
2070 | 488 | enum power_management_env env; | 490 | enum power_management_env env; |
2071 | 491 | rte_cpuset_t lcore_cpus; | ||
2072 | 492 | |||
2073 | 493 | lcore_cpus = rte_lcore_cpuset(TEST_POWER_LCORE_ID); | ||
2074 | 494 | if (CPU_COUNT(&lcore_cpus) != 1) { | ||
2075 | 495 | printf("Power management doesn't support lcore %u mapping to %u CPUs\n", | ||
2076 | 496 | TEST_POWER_LCORE_ID, | ||
2077 | 497 | CPU_COUNT(&lcore_cpus)); | ||
2078 | 498 | return TEST_SKIPPED; | ||
2079 | 499 | } | ||
2080 | 500 | for (cpu_id = 0; cpu_id < CPU_SETSIZE; cpu_id++) { | ||
2081 | 501 | if (CPU_ISSET(cpu_id, &lcore_cpus)) | ||
2082 | 502 | break; | ||
2083 | 503 | } | ||
2084 | 489 | 504 | ||
2085 | 490 | /* Test initialisation of a valid lcore */ | 505 | /* Test initialisation of a valid lcore */ |
2086 | 491 | ret = rte_power_init(TEST_POWER_LCORE_ID); | 506 | ret = rte_power_init(TEST_POWER_LCORE_ID); |
2087 | diff --git a/buildtools/pmdinfogen.py b/buildtools/pmdinfogen.py | |||
2088 | index 2a44f17..dfb8950 100755 | |||
2089 | --- a/buildtools/pmdinfogen.py | |||
2090 | +++ b/buildtools/pmdinfogen.py | |||
2091 | @@ -6,6 +6,7 @@ | |||
2092 | 6 | import argparse | 6 | import argparse |
2093 | 7 | import ctypes | 7 | import ctypes |
2094 | 8 | import json | 8 | import json |
2095 | 9 | import re | ||
2096 | 9 | import sys | 10 | import sys |
2097 | 10 | import tempfile | 11 | import tempfile |
2098 | 11 | 12 | ||
2099 | @@ -66,11 +67,11 @@ class ELFImage: | |||
2100 | 66 | return [symbol] | 67 | return [symbol] |
2101 | 67 | return None | 68 | return None |
2102 | 68 | 69 | ||
2105 | 69 | def find_by_prefix(self, prefix): | 70 | def find_by_pattern(self, pattern): |
2106 | 70 | prefix = prefix.encode("utf-8") if self._legacy_elftools else prefix | 71 | pattern = pattern.encode("utf-8") if self._legacy_elftools else pattern |
2107 | 71 | for i in range(self._symtab.num_symbols()): | 72 | for i in range(self._symtab.num_symbols()): |
2108 | 72 | symbol = self._symtab.get_symbol(i) | 73 | symbol = self._symtab.get_symbol(i) |
2110 | 73 | if symbol.name.startswith(prefix): | 74 | if re.match(pattern, symbol.name): |
2111 | 74 | yield ELFSymbol(self._image, symbol) | 75 | yield ELFSymbol(self._image, symbol) |
2112 | 75 | 76 | ||
2113 | 76 | 77 | ||
2114 | @@ -97,9 +98,9 @@ class COFFImage: | |||
2115 | 97 | def is_big_endian(self): | 98 | def is_big_endian(self): |
2116 | 98 | return False | 99 | return False |
2117 | 99 | 100 | ||
2119 | 100 | def find_by_prefix(self, prefix): | 101 | def find_by_pattern(self, pattern): |
2120 | 101 | for symbol in self._image.symbols: | 102 | for symbol in self._image.symbols: |
2122 | 102 | if symbol.name.startswith(prefix): | 103 | if re.match(pattern, symbol.name): |
2123 | 103 | yield COFFSymbol(self._image, symbol) | 104 | yield COFFSymbol(self._image, symbol) |
2124 | 104 | 105 | ||
2125 | 105 | def find_by_name(self, name): | 106 | def find_by_name(self, name): |
2126 | @@ -199,7 +200,7 @@ class Driver: | |||
2127 | 199 | 200 | ||
2128 | 200 | def load_drivers(image): | 201 | def load_drivers(image): |
2129 | 201 | drivers = [] | 202 | drivers = [] |
2131 | 202 | for symbol in image.find_by_prefix("this_pmd_name"): | 203 | for symbol in image.find_by_pattern("^this_pmd_name[0-9]+$"): |
2132 | 203 | drivers.append(Driver.load(image, symbol)) | 204 | drivers.append(Driver.load(image, symbol)) |
2133 | 204 | return drivers | 205 | return drivers |
2134 | 205 | 206 | ||
2135 | diff --git a/config/arm/arm32_armv8_linux_gcc b/config/arm/arm32_armv8_linux_gcc | |||
2136 | index 0d4618e..6879047 100644 | |||
2137 | --- a/config/arm/arm32_armv8_linux_gcc | |||
2138 | +++ b/config/arm/arm32_armv8_linux_gcc | |||
2139 | @@ -4,6 +4,7 @@ cpp = 'arm-linux-gnueabihf-g++' | |||
2140 | 4 | ar = 'arm-linux-gnueabihf-gcc-ar' | 4 | ar = 'arm-linux-gnueabihf-gcc-ar' |
2141 | 5 | strip = 'arm-linux-gnueabihf-strip' | 5 | strip = 'arm-linux-gnueabihf-strip' |
2142 | 6 | pkgconfig = 'arm-linux-gnueabihf-pkg-config' | 6 | pkgconfig = 'arm-linux-gnueabihf-pkg-config' |
2143 | 7 | pkg-config = 'arm-linux-gnueabihf-pkg-config' | ||
2144 | 7 | pcap-config = '' | 8 | pcap-config = '' |
2145 | 8 | 9 | ||
2146 | 9 | [host_machine] | 10 | [host_machine] |
2147 | diff --git a/config/arm/arm64_armada_linux_gcc b/config/arm/arm64_armada_linux_gcc | |||
2148 | index 5043b82..64d702c 100644 | |||
2149 | --- a/config/arm/arm64_armada_linux_gcc | |||
2150 | +++ b/config/arm/arm64_armada_linux_gcc | |||
2151 | @@ -5,6 +5,7 @@ ar = 'aarch64-linux-gnu-ar' | |||
2152 | 5 | as = 'aarch64-linux-gnu-as' | 5 | as = 'aarch64-linux-gnu-as' |
2153 | 6 | strip = 'aarch64-linux-gnu-strip' | 6 | strip = 'aarch64-linux-gnu-strip' |
2154 | 7 | pkgconfig = 'aarch64-linux-gnu-pkg-config' | 7 | pkgconfig = 'aarch64-linux-gnu-pkg-config' |
2155 | 8 | pkg-config = 'aarch64-linux-gnu-pkg-config' | ||
2156 | 8 | pcap-config = '' | 9 | pcap-config = '' |
2157 | 9 | 10 | ||
2158 | 10 | [host_machine] | 11 | [host_machine] |
2159 | diff --git a/config/arm/arm64_armv8_linux_clang_ubuntu b/config/arm/arm64_armv8_linux_clang_ubuntu | |||
2160 | index db488d7..e857774 100644 | |||
2161 | --- a/config/arm/arm64_armv8_linux_clang_ubuntu | |||
2162 | +++ b/config/arm/arm64_armv8_linux_clang_ubuntu | |||
2163 | @@ -6,6 +6,7 @@ strip = 'llvm-strip' | |||
2164 | 6 | llvm-config = 'llvm-config' | 6 | llvm-config = 'llvm-config' |
2165 | 7 | pcap-config = 'llvm-config' | 7 | pcap-config = 'llvm-config' |
2166 | 8 | pkgconfig = 'aarch64-linux-gnu-pkg-config' | 8 | pkgconfig = 'aarch64-linux-gnu-pkg-config' |
2167 | 9 | pkg-config = 'aarch64-linux-gnu-pkg-config' | ||
2168 | 9 | 10 | ||
2169 | 10 | [host_machine] | 11 | [host_machine] |
2170 | 11 | system = 'linux' | 12 | system = 'linux' |
2171 | diff --git a/config/arm/arm64_armv8_linux_gcc b/config/arm/arm64_armv8_linux_gcc | |||
2172 | index 5c32f6b..b0654f3 100644 | |||
2173 | --- a/config/arm/arm64_armv8_linux_gcc | |||
2174 | +++ b/config/arm/arm64_armv8_linux_gcc | |||
2175 | @@ -4,6 +4,7 @@ cpp = 'aarch64-linux-gnu-g++' | |||
2176 | 4 | ar = 'aarch64-linux-gnu-gcc-ar' | 4 | ar = 'aarch64-linux-gnu-gcc-ar' |
2177 | 5 | strip = 'aarch64-linux-gnu-strip' | 5 | strip = 'aarch64-linux-gnu-strip' |
2178 | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' |
2179 | 7 | pkg-config = 'aarch64-linux-gnu-pkg-config' | ||
2180 | 7 | pcap-config = '' | 8 | pcap-config = '' |
2181 | 8 | 9 | ||
2182 | 9 | [host_machine] | 10 | [host_machine] |
2183 | diff --git a/config/arm/arm64_bluefield_linux_gcc b/config/arm/arm64_bluefield_linux_gcc | |||
2184 | index df6eccc..347864d 100644 | |||
2185 | --- a/config/arm/arm64_bluefield_linux_gcc | |||
2186 | +++ b/config/arm/arm64_bluefield_linux_gcc | |||
2187 | @@ -4,6 +4,7 @@ cpp = 'aarch64-linux-gnu-g++' | |||
2188 | 4 | ar = 'aarch64-linux-gnu-gcc-ar' | 4 | ar = 'aarch64-linux-gnu-gcc-ar' |
2189 | 5 | strip = 'aarch64-linux-gnu-strip' | 5 | strip = 'aarch64-linux-gnu-strip' |
2190 | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' |
2191 | 7 | pkg-config = 'aarch64-linux-gnu-pkg-config' | ||
2192 | 7 | pcap-config = '' | 8 | pcap-config = '' |
2193 | 8 | 9 | ||
2194 | 9 | [host_machine] | 10 | [host_machine] |
2195 | diff --git a/config/arm/arm64_centriq2400_linux_gcc b/config/arm/arm64_centriq2400_linux_gcc | |||
2196 | index ddffc05..bdc1e59 100644 | |||
2197 | --- a/config/arm/arm64_centriq2400_linux_gcc | |||
2198 | +++ b/config/arm/arm64_centriq2400_linux_gcc | |||
2199 | @@ -4,6 +4,7 @@ cpp = 'aarch64-linux-gnu-g++' | |||
2200 | 4 | ar = 'aarch64-linux-gnu-gcc-ar' | 4 | ar = 'aarch64-linux-gnu-gcc-ar' |
2201 | 5 | strip = 'aarch64-linux-gnu-strip' | 5 | strip = 'aarch64-linux-gnu-strip' |
2202 | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' |
2203 | 7 | pkg-config = 'aarch64-linux-gnu-pkg-config' | ||
2204 | 7 | pcap-config = '' | 8 | pcap-config = '' |
2205 | 8 | 9 | ||
2206 | 9 | [host_machine] | 10 | [host_machine] |
2207 | diff --git a/config/arm/arm64_cn10k_linux_gcc b/config/arm/arm64_cn10k_linux_gcc | |||
2208 | index 19068f0..7834d8d 100644 | |||
2209 | --- a/config/arm/arm64_cn10k_linux_gcc | |||
2210 | +++ b/config/arm/arm64_cn10k_linux_gcc | |||
2211 | @@ -4,6 +4,7 @@ cpp = 'aarch64-linux-gnu-g++' | |||
2212 | 4 | ar = 'aarch64-linux-gnu-gcc-ar' | 4 | ar = 'aarch64-linux-gnu-gcc-ar' |
2213 | 5 | strip = 'aarch64-linux-gnu-strip' | 5 | strip = 'aarch64-linux-gnu-strip' |
2214 | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' |
2215 | 7 | pkg-config = 'aarch64-linux-gnu-pkg-config' | ||
2216 | 7 | pcap-config = '' | 8 | pcap-config = '' |
2217 | 8 | 9 | ||
2218 | 9 | [host_machine] | 10 | [host_machine] |
2219 | diff --git a/config/arm/arm64_dpaa_linux_gcc b/config/arm/arm64_dpaa_linux_gcc | |||
2220 | index 70df99f..eeaff59 100644 | |||
2221 | --- a/config/arm/arm64_dpaa_linux_gcc | |||
2222 | +++ b/config/arm/arm64_dpaa_linux_gcc | |||
2223 | @@ -5,6 +5,7 @@ ar = 'aarch64-linux-gnu-ar' | |||
2224 | 5 | as = 'aarch64-linux-gnu-as' | 5 | as = 'aarch64-linux-gnu-as' |
2225 | 6 | strip = 'aarch64-linux-gnu-strip' | 6 | strip = 'aarch64-linux-gnu-strip' |
2226 | 7 | pkgconfig = 'aarch64-linux-gnu-pkg-config' | 7 | pkgconfig = 'aarch64-linux-gnu-pkg-config' |
2227 | 8 | pkg-config = 'aarch64-linux-gnu-pkg-config' | ||
2228 | 8 | pcap-config = '' | 9 | pcap-config = '' |
2229 | 9 | 10 | ||
2230 | 10 | [host_machine] | 11 | [host_machine] |
2231 | diff --git a/config/arm/arm64_emag_linux_gcc b/config/arm/arm64_emag_linux_gcc | |||
2232 | index 06f5eae..d7e58c3 100644 | |||
2233 | --- a/config/arm/arm64_emag_linux_gcc | |||
2234 | +++ b/config/arm/arm64_emag_linux_gcc | |||
2235 | @@ -4,6 +4,7 @@ cpp = 'aarch64-linux-gnu-g++' | |||
2236 | 4 | ar = 'aarch64-linux-gnu-gcc-ar' | 4 | ar = 'aarch64-linux-gnu-gcc-ar' |
2237 | 5 | strip = 'aarch64-linux-gnu-strip' | 5 | strip = 'aarch64-linux-gnu-strip' |
2238 | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' |
2239 | 7 | pkg-config = 'aarch64-linux-gnu-pkg-config' | ||
2240 | 7 | pcap-config = '' | 8 | pcap-config = '' |
2241 | 8 | 9 | ||
2242 | 9 | [host_machine] | 10 | [host_machine] |
2243 | diff --git a/config/arm/arm64_graviton2_linux_gcc b/config/arm/arm64_graviton2_linux_gcc | |||
2244 | index 24b2dbc..75f7919 100644 | |||
2245 | --- a/config/arm/arm64_graviton2_linux_gcc | |||
2246 | +++ b/config/arm/arm64_graviton2_linux_gcc | |||
2247 | @@ -4,6 +4,7 @@ cpp = 'aarch64-linux-gnu-g++' | |||
2248 | 4 | ar = 'aarch64-linux-gnu-gcc-ar' | 4 | ar = 'aarch64-linux-gnu-gcc-ar' |
2249 | 5 | strip = 'aarch64-linux-gnu-strip' | 5 | strip = 'aarch64-linux-gnu-strip' |
2250 | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' |
2251 | 7 | pkg-config = 'aarch64-linux-gnu-pkg-config' | ||
2252 | 7 | pcap-config = '' | 8 | pcap-config = '' |
2253 | 8 | 9 | ||
2254 | 9 | [host_machine] | 10 | [host_machine] |
2255 | diff --git a/config/arm/arm64_kunpeng920_linux_gcc b/config/arm/arm64_kunpeng920_linux_gcc | |||
2256 | index 4a71531..5671b66 100644 | |||
2257 | --- a/config/arm/arm64_kunpeng920_linux_gcc | |||
2258 | +++ b/config/arm/arm64_kunpeng920_linux_gcc | |||
2259 | @@ -4,6 +4,7 @@ cpp = 'aarch64-linux-gnu-g++' | |||
2260 | 4 | ar = 'aarch64-linux-gnu-gcc-ar' | 4 | ar = 'aarch64-linux-gnu-gcc-ar' |
2261 | 5 | strip = 'aarch64-linux-gnu-strip' | 5 | strip = 'aarch64-linux-gnu-strip' |
2262 | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' |
2263 | 7 | pkg-config = 'aarch64-linux-gnu-pkg-config' | ||
2264 | 7 | pcap-config = '' | 8 | pcap-config = '' |
2265 | 8 | 9 | ||
2266 | 9 | [host_machine] | 10 | [host_machine] |
2267 | diff --git a/config/arm/arm64_kunpeng930_linux_gcc b/config/arm/arm64_kunpeng930_linux_gcc | |||
2268 | index 383f0b0..9ead4b1 100644 | |||
2269 | --- a/config/arm/arm64_kunpeng930_linux_gcc | |||
2270 | +++ b/config/arm/arm64_kunpeng930_linux_gcc | |||
2271 | @@ -4,6 +4,7 @@ cpp = 'aarch64-linux-gnu-g++' | |||
2272 | 4 | ar = 'aarch64-linux-gnu-gcc-ar' | 4 | ar = 'aarch64-linux-gnu-gcc-ar' |
2273 | 5 | strip = 'aarch64-linux-gnu-strip' | 5 | strip = 'aarch64-linux-gnu-strip' |
2274 | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' |
2275 | 7 | pkg-config = 'aarch64-linux-gnu-pkg-config' | ||
2276 | 7 | pcap-config = '' | 8 | pcap-config = '' |
2277 | 8 | 9 | ||
2278 | 9 | [host_machine] | 10 | [host_machine] |
2279 | diff --git a/config/arm/arm64_n1sdp_linux_gcc b/config/arm/arm64_n1sdp_linux_gcc | |||
2280 | index 5f6356c..3432ead 100644 | |||
2281 | --- a/config/arm/arm64_n1sdp_linux_gcc | |||
2282 | +++ b/config/arm/arm64_n1sdp_linux_gcc | |||
2283 | @@ -4,6 +4,7 @@ cpp = 'aarch64-linux-gnu-g++' | |||
2284 | 4 | ar = 'aarch64-linux-gnu-gcc-ar' | 4 | ar = 'aarch64-linux-gnu-gcc-ar' |
2285 | 5 | strip = 'aarch64-linux-gnu-strip' | 5 | strip = 'aarch64-linux-gnu-strip' |
2286 | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' |
2287 | 7 | pkg-config = 'aarch64-linux-gnu-pkg-config' | ||
2288 | 7 | pcap-config = '' | 8 | pcap-config = '' |
2289 | 8 | 9 | ||
2290 | 9 | [host_machine] | 10 | [host_machine] |
2291 | diff --git a/config/arm/arm64_n2_linux_gcc b/config/arm/arm64_n2_linux_gcc | |||
2292 | index 82806ba..f02780d 100644 | |||
2293 | --- a/config/arm/arm64_n2_linux_gcc | |||
2294 | +++ b/config/arm/arm64_n2_linux_gcc | |||
2295 | @@ -4,6 +4,7 @@ cpp = 'aarch64-linux-gnu-g++' | |||
2296 | 4 | ar = 'aarch64-linux-gnu-gcc-ar' | 4 | ar = 'aarch64-linux-gnu-gcc-ar' |
2297 | 5 | strip = 'aarch64-linux-gnu-strip' | 5 | strip = 'aarch64-linux-gnu-strip' |
2298 | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' |
2299 | 7 | pkg-config = 'aarch64-linux-gnu-pkg-config' | ||
2300 | 7 | pcap-config = '' | 8 | pcap-config = '' |
2301 | 8 | 9 | ||
2302 | 9 | [host_machine] | 10 | [host_machine] |
2303 | diff --git a/config/arm/arm64_octeontx2_linux_gcc b/config/arm/arm64_octeontx2_linux_gcc | |||
2304 | index d23b652..a854086 100644 | |||
2305 | --- a/config/arm/arm64_octeontx2_linux_gcc | |||
2306 | +++ b/config/arm/arm64_octeontx2_linux_gcc | |||
2307 | @@ -4,6 +4,7 @@ cpp = 'aarch64-linux-gnu-g++' | |||
2308 | 4 | ar = 'aarch64-linux-gnu-gcc-ar' | 4 | ar = 'aarch64-linux-gnu-gcc-ar' |
2309 | 5 | strip = 'aarch64-linux-gnu-strip' | 5 | strip = 'aarch64-linux-gnu-strip' |
2310 | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' |
2311 | 7 | pkg-config = 'aarch64-linux-gnu-pkg-config' | ||
2312 | 7 | pcap-config = '' | 8 | pcap-config = '' |
2313 | 8 | 9 | ||
2314 | 9 | [host_machine] | 10 | [host_machine] |
2315 | diff --git a/config/arm/arm64_stingray_linux_gcc b/config/arm/arm64_stingray_linux_gcc | |||
2316 | index cf98337..4e9ebc5 100644 | |||
2317 | --- a/config/arm/arm64_stingray_linux_gcc | |||
2318 | +++ b/config/arm/arm64_stingray_linux_gcc | |||
2319 | @@ -4,6 +4,7 @@ cpp = 'aarch64-linux-gnu-g++' | |||
2320 | 4 | ar = 'aarch64-linux-gnu-gcc-ar' | 4 | ar = 'aarch64-linux-gnu-gcc-ar' |
2321 | 5 | strip = 'aarch64-linux-gnu-strip' | 5 | strip = 'aarch64-linux-gnu-strip' |
2322 | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' |
2323 | 7 | pkg-config = 'aarch64-linux-gnu-pkg-config' | ||
2324 | 7 | pcap-config = '' | 8 | pcap-config = '' |
2325 | 8 | 9 | ||
2326 | 9 | [host_machine] | 10 | [host_machine] |
2327 | diff --git a/config/arm/arm64_thunderx2_linux_gcc b/config/arm/arm64_thunderx2_linux_gcc | |||
2328 | index 616f6c2..8c4ee77 100644 | |||
2329 | --- a/config/arm/arm64_thunderx2_linux_gcc | |||
2330 | +++ b/config/arm/arm64_thunderx2_linux_gcc | |||
2331 | @@ -4,6 +4,7 @@ cpp = 'aarch64-linux-gnu-g++' | |||
2332 | 4 | ar = 'aarch64-linux-gnu-gcc-ar' | 4 | ar = 'aarch64-linux-gnu-gcc-ar' |
2333 | 5 | strip = 'aarch64-linux-gnu-strip' | 5 | strip = 'aarch64-linux-gnu-strip' |
2334 | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' |
2335 | 7 | pkg-config = 'aarch64-linux-gnu-pkg-config' | ||
2336 | 7 | pcap-config = '' | 8 | pcap-config = '' |
2337 | 8 | 9 | ||
2338 | 9 | [host_machine] | 10 | [host_machine] |
2339 | diff --git a/config/arm/arm64_thunderxt88_linux_gcc b/config/arm/arm64_thunderxt88_linux_gcc | |||
2340 | index 131f564..9f2af4c 100644 | |||
2341 | --- a/config/arm/arm64_thunderxt88_linux_gcc | |||
2342 | +++ b/config/arm/arm64_thunderxt88_linux_gcc | |||
2343 | @@ -4,6 +4,7 @@ cpp = 'aarch64-linux-gnu-g++' | |||
2344 | 4 | ar = 'aarch64-linux-gnu-gcc-ar' | 4 | ar = 'aarch64-linux-gnu-gcc-ar' |
2345 | 5 | strip = 'aarch64-linux-gnu-strip' | 5 | strip = 'aarch64-linux-gnu-strip' |
2346 | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' | 6 | pkgconfig = 'aarch64-linux-gnu-pkg-config' |
2347 | 7 | pkg-config = 'aarch64-linux-gnu-pkg-config' | ||
2348 | 7 | pcap-config = '' | 8 | pcap-config = '' |
2349 | 8 | 9 | ||
2350 | 9 | [host_machine] | 10 | [host_machine] |
2351 | diff --git a/config/x86/cross-mingw b/config/x86/cross-mingw | |||
2352 | index 09f7af0..fab1a70 100644 | |||
2353 | --- a/config/x86/cross-mingw | |||
2354 | +++ b/config/x86/cross-mingw | |||
2355 | @@ -5,6 +5,7 @@ ld = 'x86_64-w64-mingw32-ld' | |||
2356 | 5 | ar = 'x86_64-w64-mingw32-ar' | 5 | ar = 'x86_64-w64-mingw32-ar' |
2357 | 6 | strip = 'x86_64-w64-mingw32-strip' | 6 | strip = 'x86_64-w64-mingw32-strip' |
2358 | 7 | pkgconfig = 'x86_64-w64-mingw32-pkg-config' | 7 | pkgconfig = 'x86_64-w64-mingw32-pkg-config' |
2359 | 8 | pkg-config = 'x86_64-w64-mingw32-pkg-config' | ||
2360 | 8 | objdump = 'x86_64-w64-mingw32-objdump' | 9 | objdump = 'x86_64-w64-mingw32-objdump' |
2361 | 9 | 10 | ||
2362 | 10 | [host_machine] | 11 | [host_machine] |
2363 | diff --git a/debian/changelog b/debian/changelog | |||
2364 | index 93692d0..67adbed 100644 | |||
2365 | --- a/debian/changelog | |||
2366 | +++ b/debian/changelog | |||
2367 | @@ -1,3 +1,11 @@ | |||
2368 | 1 | dpdk (21.11.9-0ubuntu0.22.04.1) jammy; urgency=medium | ||
2369 | 2 | |||
2370 | 3 | * Merge LTS stable release 21.11.9 (LP: #2067480) | ||
2371 | 4 | - Full release notes are available at: | ||
2372 | 5 | https://doc.dpdk.org/guides-21.11/rel_notes/release_21_11.html#id32 | ||
2373 | 6 | |||
2374 | 7 | -- Arif Ali <arif.ali@canonical.com> Tue, 06 May 2025 06:56:35 +0000 | ||
2375 | 8 | |||
2376 | 1 | dpdk (21.11.7-0ubuntu0.22.04.1) jammy; urgency=medium | 9 | dpdk (21.11.7-0ubuntu0.22.04.1) jammy; urgency=medium |
2377 | 2 | 10 | ||
2378 | 3 | * Merge LTS stable release 21.11.7 (LP: #2067480) | 11 | * Merge LTS stable release 21.11.7 (LP: #2067480) |
2379 | diff --git a/devtools/git-log-fixes.sh b/devtools/git-log-fixes.sh | |||
2380 | index 210c8dc..0cac34c 100755 | |||
2381 | --- a/devtools/git-log-fixes.sh | |||
2382 | +++ b/devtools/git-log-fixes.sh | |||
2383 | @@ -68,7 +68,7 @@ origin_version () # <origin_hash> ... | |||
2384 | 68 | { | 68 | { |
2385 | 69 | for origin in $* ; do | 69 | for origin in $* ; do |
2386 | 70 | # check hash is valid | 70 | # check hash is valid |
2388 | 71 | git rev-parse -q --verify $1 >&- || continue | 71 | git rev-parse -q --verify $origin >&- || continue |
2389 | 72 | # get version of this bug origin | 72 | # get version of this bug origin |
2390 | 73 | local origver=$(commit_version $origin) | 73 | local origver=$(commit_version $origin) |
2391 | 74 | local roothashes="$(origin_filter $origin)" | 74 | local roothashes="$(origin_filter $origin)" |
2392 | diff --git a/doc/guides/nics/features.rst b/doc/guides/nics/features.rst | |||
2393 | index 841f370..adbf118 100644 | |||
2394 | --- a/doc/guides/nics/features.rst | |||
2395 | +++ b/doc/guides/nics/features.rst | |||
2396 | @@ -688,14 +688,32 @@ Basic stats | |||
2397 | 688 | Support basic statistics such as: ipackets, opackets, ibytes, obytes, | 688 | Support basic statistics such as: ipackets, opackets, ibytes, obytes, |
2398 | 689 | imissed, ierrors, oerrors, rx_nombuf. | 689 | imissed, ierrors, oerrors, rx_nombuf. |
2399 | 690 | 690 | ||
2400 | 691 | And per queue stats: q_ipackets, q_opackets, q_ibytes, q_obytes, q_errors. | ||
2401 | 692 | |||
2402 | 693 | These apply to all drivers. | 691 | These apply to all drivers. |
2403 | 694 | 692 | ||
2404 | 695 | * **[implements] eth_dev_ops**: ``stats_get``, ``stats_reset``. | 693 | * **[implements] eth_dev_ops**: ``stats_get``, ``stats_reset``. |
2405 | 696 | * **[related] API**: ``rte_eth_stats_get``, ``rte_eth_stats_reset()``. | 694 | * **[related] API**: ``rte_eth_stats_get``, ``rte_eth_stats_reset()``. |
2406 | 697 | 695 | ||
2407 | 698 | 696 | ||
2408 | 697 | .. _nic_features_stats_per_queue: | ||
2409 | 698 | |||
2410 | 699 | Stats per queue | ||
2411 | 700 | --------------- | ||
2412 | 701 | |||
2413 | 702 | Supports per queue stats: q_ipackets, q_opackets, q_ibytes, q_obytes, q_errors. | ||
2414 | 703 | Statistics only supplied for first ``RTE_ETHDEV_QUEUE_STAT_CNTRS`` (16) queues. | ||
2415 | 704 | If driver does not support this feature the per queue stats will be zero. | ||
2416 | 705 | |||
2417 | 706 | * **[implements] eth_dev_ops**: ``stats_get``, ``stats_reset``. | ||
2418 | 707 | * **[related] API**: ``rte_eth_stats_get``, ``rte_eth_stats_reset()``. | ||
2419 | 708 | |||
2420 | 709 | May also support configuring per-queue stat counter mapping. | ||
2421 | 710 | Used by some drivers to workaround HW limitations. | ||
2422 | 711 | |||
2423 | 712 | * **[implements] eth_dev_ops**: ``queue_stats_mapping_set``. | ||
2424 | 713 | * **[related] API**: ``rte_eth_dev_set_rx_queue_stats_mapping()``, | ||
2425 | 714 | ``rte_eth_dev_set_tx_queue_stats_mapping()``. | ||
2426 | 715 | |||
2427 | 716 | |||
2428 | 699 | .. _nic_features_extended_stats: | 717 | .. _nic_features_extended_stats: |
2429 | 700 | 718 | ||
2430 | 701 | Extended stats | 719 | Extended stats |
2431 | @@ -710,18 +728,6 @@ Supports Extended Statistics, changes from driver to driver. | |||
2432 | 710 | ``rte_eth_xstats_get_names_by_id()``, ``rte_eth_xstats_get_id_by_name()``. | 728 | ``rte_eth_xstats_get_names_by_id()``, ``rte_eth_xstats_get_id_by_name()``. |
2433 | 711 | 729 | ||
2434 | 712 | 730 | ||
2435 | 713 | .. _nic_features_stats_per_queue: | ||
2436 | 714 | |||
2437 | 715 | Stats per queue | ||
2438 | 716 | --------------- | ||
2439 | 717 | |||
2440 | 718 | Supports configuring per-queue stat counter mapping. | ||
2441 | 719 | |||
2442 | 720 | * **[implements] eth_dev_ops**: ``queue_stats_mapping_set``. | ||
2443 | 721 | * **[related] API**: ``rte_eth_dev_set_rx_queue_stats_mapping()``, | ||
2444 | 722 | ``rte_eth_dev_set_tx_queue_stats_mapping()``. | ||
2445 | 723 | |||
2446 | 724 | |||
2447 | 725 | .. _nic_features_traffic_manager: | 731 | .. _nic_features_traffic_manager: |
2448 | 726 | 732 | ||
2449 | 727 | Traffic manager | 733 | Traffic manager |
2450 | diff --git a/doc/guides/prog_guide/img/mbuf1.svg b/doc/guides/prog_guide/img/mbuf1.svg | |||
2451 | index a08bf3b..111a874 100644 | |||
2452 | --- a/doc/guides/prog_guide/img/mbuf1.svg | |||
2453 | +++ b/doc/guides/prog_guide/img/mbuf1.svg | |||
2454 | @@ -487,7 +487,7 @@ | |||
2455 | 487 | sodipodi:role="line" | 487 | sodipodi:role="line" |
2456 | 488 | id="tspan5256" | 488 | id="tspan5256" |
2457 | 489 | x="59.842155" | 489 | x="59.842155" |
2459 | 490 | y="282.37683">m->pkt.next = NULL</tspan></text> | 490 | y="282.37683">m->next = NULL</tspan></text> |
2460 | 491 | <text | 491 | <text |
2461 | 492 | xml:space="preserve" | 492 | xml:space="preserve" |
2462 | 493 | style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" | 493 | style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" |
2463 | diff --git a/doc/guides/prog_guide/img/mbuf2.svg b/doc/guides/prog_guide/img/mbuf2.svg | |||
2464 | index f6fdb54..6a80cbc 100644 | |||
2465 | --- a/doc/guides/prog_guide/img/mbuf2.svg | |||
2466 | +++ b/doc/guides/prog_guide/img/mbuf2.svg | |||
2467 | @@ -1074,7 +1074,7 @@ | |||
2468 | 1074 | sodipodi:role="line" | 1074 | sodipodi:role="line" |
2469 | 1075 | id="tspan5256-8" | 1075 | id="tspan5256-8" |
2470 | 1076 | x="527.19458" | 1076 | x="527.19458" |
2472 | 1077 | y="628.45935">m->pkt.next = NULL</tspan></text> | 1077 | y="628.45935">m->next = NULL</tspan></text> |
2473 | 1078 | <text | 1078 | <text |
2474 | 1079 | xml:space="preserve" | 1079 | xml:space="preserve" |
2475 | 1080 | style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" | 1080 | style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" |
2476 | @@ -1084,7 +1084,7 @@ | |||
2477 | 1084 | sodipodi:role="line" | 1084 | sodipodi:role="line" |
2478 | 1085 | id="tspan5256-8-3" | 1085 | id="tspan5256-8-3" |
2479 | 1086 | x="330.50363" | 1086 | x="330.50363" |
2481 | 1087 | y="628.45935">m->pkt.next = mseg3</tspan></text> | 1087 | y="628.45935">m->next = mseg3</tspan></text> |
2482 | 1088 | <text | 1088 | <text |
2483 | 1089 | xml:space="preserve" | 1089 | xml:space="preserve" |
2484 | 1090 | style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" | 1090 | style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" |
2485 | @@ -1094,7 +1094,7 @@ | |||
2486 | 1094 | sodipodi:role="line" | 1094 | sodipodi:role="line" |
2487 | 1095 | id="tspan5256-8-3-4" | 1095 | id="tspan5256-8-3-4" |
2488 | 1096 | x="144.79388" | 1096 | x="144.79388" |
2490 | 1097 | y="628.45935">m->pkt.next = mseg2</tspan></text> | 1097 | y="628.45935">m->next = mseg2</tspan></text> |
2491 | 1098 | <text | 1098 | <text |
2492 | 1099 | xml:space="preserve" | 1099 | xml:space="preserve" |
2493 | 1100 | style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" | 1100 | style="font-size:10px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans" |
2494 | diff --git a/doc/guides/prog_guide/mbuf_lib.rst b/doc/guides/prog_guide/mbuf_lib.rst | |||
2495 | index 049357c..749f9c9 100644 | |||
2496 | --- a/doc/guides/prog_guide/mbuf_lib.rst | |||
2497 | +++ b/doc/guides/prog_guide/mbuf_lib.rst | |||
2498 | @@ -134,7 +134,7 @@ a vxlan-encapsulated tcp packet: | |||
2499 | 134 | 134 | ||
2500 | 135 | mb->l2_len = len(out_eth) | 135 | mb->l2_len = len(out_eth) |
2501 | 136 | mb->l3_len = len(out_ip) | 136 | mb->l3_len = len(out_ip) |
2503 | 137 | mb->ol_flags |= RTE_MBUF_F_TX_IPV4 | RTE_MBUF_F_TX_IP_CSUM | 137 | mb->ol_flags |= RTE_MBUF_F_TX_IPV4 | RTE_MBUF_F_TX_IP_CKSUM |
2504 | 138 | set out_ip checksum to 0 in the packet | 138 | set out_ip checksum to 0 in the packet |
2505 | 139 | 139 | ||
2506 | 140 | This is supported on hardware advertising RTE_ETH_TX_OFFLOAD_IPV4_CKSUM. | 140 | This is supported on hardware advertising RTE_ETH_TX_OFFLOAD_IPV4_CKSUM. |
2507 | @@ -143,7 +143,7 @@ a vxlan-encapsulated tcp packet: | |||
2508 | 143 | 143 | ||
2509 | 144 | mb->l2_len = len(out_eth) | 144 | mb->l2_len = len(out_eth) |
2510 | 145 | mb->l3_len = len(out_ip) | 145 | mb->l3_len = len(out_ip) |
2512 | 146 | mb->ol_flags |= RTE_MBUF_F_TX_IPV4 | RTE_MBUF_F_TX_IP_CSUM | RTE_MBUF_F_TX_UDP_CKSUM | 146 | mb->ol_flags |= RTE_MBUF_F_TX_IPV4 | RTE_MBUF_F_TX_IP_CKSUM | RTE_MBUF_F_TX_UDP_CKSUM |
2513 | 147 | set out_ip checksum to 0 in the packet | 147 | set out_ip checksum to 0 in the packet |
2514 | 148 | set out_udp checksum to pseudo header using rte_ipv4_phdr_cksum() | 148 | set out_udp checksum to pseudo header using rte_ipv4_phdr_cksum() |
2515 | 149 | 149 | ||
2516 | @@ -154,7 +154,7 @@ a vxlan-encapsulated tcp packet: | |||
2517 | 154 | 154 | ||
2518 | 155 | mb->l2_len = len(out_eth + out_ip + out_udp + vxlan + in_eth) | 155 | mb->l2_len = len(out_eth + out_ip + out_udp + vxlan + in_eth) |
2519 | 156 | mb->l3_len = len(in_ip) | 156 | mb->l3_len = len(in_ip) |
2521 | 157 | mb->ol_flags |= RTE_MBUF_F_TX_IPV4 | RTE_MBUF_F_TX_IP_CSUM | 157 | mb->ol_flags |= RTE_MBUF_F_TX_IPV4 | RTE_MBUF_F_TX_IP_CKSUM |
2522 | 158 | set in_ip checksum to 0 in the packet | 158 | set in_ip checksum to 0 in the packet |
2523 | 159 | 159 | ||
2524 | 160 | This is similar to case 1), but l2_len is different. It is supported | 160 | This is similar to case 1), but l2_len is different. It is supported |
2525 | @@ -165,7 +165,7 @@ a vxlan-encapsulated tcp packet: | |||
2526 | 165 | 165 | ||
2527 | 166 | mb->l2_len = len(out_eth + out_ip + out_udp + vxlan + in_eth) | 166 | mb->l2_len = len(out_eth + out_ip + out_udp + vxlan + in_eth) |
2528 | 167 | mb->l3_len = len(in_ip) | 167 | mb->l3_len = len(in_ip) |
2530 | 168 | mb->ol_flags |= RTE_MBUF_F_TX_IPV4 | RTE_MBUF_F_TX_IP_CSUM | RTE_MBUF_F_TX_TCP_CKSUM | 168 | mb->ol_flags |= RTE_MBUF_F_TX_IPV4 | RTE_MBUF_F_TX_IP_CKSUM | RTE_MBUF_F_TX_TCP_CKSUM |
2531 | 169 | set in_ip checksum to 0 in the packet | 169 | set in_ip checksum to 0 in the packet |
2532 | 170 | set in_tcp checksum to pseudo header using rte_ipv4_phdr_cksum() | 170 | set in_tcp checksum to pseudo header using rte_ipv4_phdr_cksum() |
2533 | 171 | 171 | ||
2534 | diff --git a/doc/guides/rel_notes/release_21_11.rst b/doc/guides/rel_notes/release_21_11.rst | |||
2535 | index 66bf6fb..9a9fdf2 100644 | |||
2536 | --- a/doc/guides/rel_notes/release_21_11.rst | |||
2537 | +++ b/doc/guides/rel_notes/release_21_11.rst | |||
2538 | @@ -3483,3 +3483,642 @@ Tested Platforms | |||
2539 | 3483 | * df33fb53e4 rcu: fix acked token in debug log | 3483 | * df33fb53e4 rcu: fix acked token in debug log |
2540 | 3484 | * 063cddfc74 rcu: use atomic operation on acked token | 3484 | * 063cddfc74 rcu: use atomic operation on acked token |
2541 | 3485 | * 63bf81a617 test: fix named test macro | 3485 | * 63bf81a617 test: fix named test macro |
2542 | 3486 | |||
2543 | 3487 | 21.11.8 Release Notes | ||
2544 | 3488 | --------------------- | ||
2545 | 3489 | |||
2546 | 3490 | |||
2547 | 3491 | 21.11.8 Fixes | ||
2548 | 3492 | ~~~~~~~~~~~~~ | ||
2549 | 3493 | |||
2550 | 3494 | * app/bbdev: fix interrupt tests | ||
2551 | 3495 | * app/dumpcap: handle SIGTERM and SIGHUP | ||
2552 | 3496 | * app/pdump: handle SIGTERM and SIGHUP | ||
2553 | 3497 | * app/testpmd: cleanup cleanly from signal | ||
2554 | 3498 | * app/testpmd: fix build on signed comparison | ||
2555 | 3499 | * app/testpmd: fix early exit from signal | ||
2556 | 3500 | * app/testpmd: fix help string of BPF load command | ||
2557 | 3501 | * app/testpmd: fix interactive mode on Windows | ||
2558 | 3502 | * app/testpmd: fix lcore ID restriction | ||
2559 | 3503 | * app/testpmd: fix outer IP checksum offload | ||
2560 | 3504 | * app/testpmd: fix parsing for connection tracking item | ||
2561 | 3505 | * app/testpmd: handle IEEE1588 init failure | ||
2562 | 3506 | * baseband/la12xx: forbid secondary process | ||
2563 | 3507 | * bpf: fix load hangs with six IPv6 addresses | ||
2564 | 3508 | * bpf: fix MOV instruction evaluation | ||
2565 | 3509 | * buildtools: fix build with clang 17 and ASan | ||
2566 | 3510 | * bus/dpaa: fix bus scan for DMA devices | ||
2567 | 3511 | * bus/dpaa: fix memory leak in bus scan | ||
2568 | 3512 | * bus/dpaa: remove redundant file descriptor check | ||
2569 | 3513 | * bus/pci: fix build with musl 1.2.4 / Alpine 3.19 | ||
2570 | 3514 | * bus/pci: fix FD in secondary process | ||
2571 | 3515 | * bus/pci: fix UIO resource mapping in secondary process | ||
2572 | 3516 | * bus/vdev: fix device reinitialization | ||
2573 | 3517 | * common/dpaax/caamflib: fix PDCP AES-AES watchdog error | ||
2574 | 3518 | * common/dpaax/caamflib: fix PDCP-SDAP watchdog error | ||
2575 | 3519 | * common/dpaax: fix IOVA table cleanup | ||
2576 | 3520 | * common/dpaax: fix node array overrun | ||
2577 | 3521 | * common/mlx5: fix unsigned/signed mismatch | ||
2578 | 3522 | * common/mlx5: remove unneeded field when modify RQ table | ||
2579 | 3523 | * config: fix warning for cross build with meson >= 1.3.0 | ||
2580 | 3524 | * crypto/cnxk: fix minimal input normalization | ||
2581 | 3525 | * cryptodev: fix build without crypto callbacks | ||
2582 | 3526 | * cryptodev: validate crypto callbacks from next node | ||
2583 | 3527 | * crypto/dpaa2_sec: fix event queue user context | ||
2584 | 3528 | * crypto/openssl: optimize 3DES-CTR context init | ||
2585 | 3529 | * dmadev: fix structure alignment | ||
2586 | 3530 | * dma/idxd: add generic option for queue config | ||
2587 | 3531 | * dma/idxd: add verbose option to config script | ||
2588 | 3532 | * dma/idxd: fix default for workqueue options | ||
2589 | 3533 | * dma/idxd: fix setup with Ubuntu 24.04 | ||
2590 | 3534 | * doc: add baseline mode in l3fwd-power guide | ||
2591 | 3535 | * doc: fix mbuf flags | ||
2592 | 3536 | * doc: fix testpmd ring size command | ||
2593 | 3537 | * doc: fix typo in l2fwd-crypto guide | ||
2594 | 3538 | * doc: remove reference to mbuf pkt field | ||
2595 | 3539 | * eal: fix logs for '--lcores' | ||
2596 | 3540 | * eal/linux: lower log level on allocation attempt failure | ||
2597 | 3541 | * eal/unix: support ZSTD compression for firmware | ||
2598 | 3542 | * eal/windows: install sched.h file | ||
2599 | 3543 | * ethdev: fix device init without socket-local memory | ||
2600 | 3544 | * ethdev: fix GENEVE option item conversion | ||
2601 | 3545 | * event/sw: fix warning from useless snprintf | ||
2602 | 3546 | * fbarray: fix finding for unaligned length | ||
2603 | 3547 | * fbarray: fix incorrect lookahead behavior | ||
2604 | 3548 | * fbarray: fix incorrect lookbehind behavior | ||
2605 | 3549 | * fbarray: fix lookahead ignore mask handling | ||
2606 | 3550 | * fbarray: fix lookbehind ignore mask handling | ||
2607 | 3551 | * hash: check name when creating a hash | ||
2608 | 3552 | * hash: fix RCU reclamation size | ||
2609 | 3553 | * hash: fix return code description in Doxygen | ||
2610 | 3554 | * kni: use strscpy | ||
2611 | 3555 | * latencystats: fix literal float suffix | ||
2612 | 3556 | * malloc: fix multi-process wait condition handling | ||
2613 | 3557 | * net/af_packet: align Rx/Tx structs to cache line | ||
2614 | 3558 | * net/af_xdp: count mbuf allocation failures | ||
2615 | 3559 | * net/af_xdp: fix port ID in Rx mbuf | ||
2616 | 3560 | * net/ark: fix index arithmetic | ||
2617 | 3561 | * net/axgbe: check only minimum speed for cables | ||
2618 | 3562 | * net/axgbe: delay AN timeout during KR training | ||
2619 | 3563 | * net/axgbe: disable interrupts during device removal | ||
2620 | 3564 | * net/axgbe: fix connection for SFP+ active cables | ||
2621 | 3565 | * net/axgbe: fix fluctuations for 1G Bel Fuse SFP | ||
2622 | 3566 | * net/axgbe: fix linkup in PHY status | ||
2623 | 3567 | * net/axgbe: fix MDIO access for non-zero ports and CL45 PHYs | ||
2624 | 3568 | * net/axgbe: fix SFP codes check for DAC cables | ||
2625 | 3569 | * net/axgbe: fix Tx flow on 30H HW | ||
2626 | 3570 | * net/axgbe: reset link when link never comes back | ||
2627 | 3571 | * net/axgbe: update DMA coherency values | ||
2628 | 3572 | * net/cnxk: fix outbound security with higher packet burst | ||
2629 | 3573 | * net/cnxk: fix promiscuous state after MAC change | ||
2630 | 3574 | * net/cnxk: fix RSS config | ||
2631 | 3575 | * net/e1000/base: fix link power down | ||
2632 | 3576 | * net/ena: fix bad checksum handling | ||
2633 | 3577 | * net/ena: fix checksum handling | ||
2634 | 3578 | * net/ena: fix return value check | ||
2635 | 3579 | * net: fix outer UDP checksum in Intel prepare helper | ||
2636 | 3580 | * net/fm10k: fix cleanup during init failure | ||
2637 | 3581 | * net/hns3: check Rx DMA address alignmnent | ||
2638 | 3582 | * net/hns3: disable SCTP verification tag for RSS hash input | ||
2639 | 3583 | * net/hns3: fix double free for Rx/Tx queue | ||
2640 | 3584 | * net/hns3: fix offload flag of IEEE 1588 | ||
2641 | 3585 | * net/hns3: fix Rx timestamp flag | ||
2642 | 3586 | * net/hns3: fix uninitialized variable in FEC query | ||
2643 | 3587 | * net/hns3: fix variable overflow | ||
2644 | 3588 | * net/i40e: fix outer UDP checksum offload for X710 | ||
2645 | 3589 | * net/ice/base: fix board type definition | ||
2646 | 3590 | * net/ice/base: fix check for existing switch rule | ||
2647 | 3591 | * net/ice/base: fix GCS descriptor field offsets | ||
2648 | 3592 | * net/ice/base: fix masking when reading context | ||
2649 | 3593 | * net/ice/base: fix pointer to variable outside scope | ||
2650 | 3594 | * net/ice/base: fix potential TLV length overflow | ||
2651 | 3595 | * net/ice/base: fix return type of bitmap hamming weight | ||
2652 | 3596 | * net/ice/base: fix sign extension | ||
2653 | 3597 | * net/ice/base: fix size when allocating children arrays | ||
2654 | 3598 | * net/ice/base: fix temporary failures reading NVM | ||
2655 | 3599 | * net/ice: fix check for outer UDP checksum offload | ||
2656 | 3600 | * net/ice: fix memory leaks in raw pattern parsing | ||
2657 | 3601 | * net/ice: fix return value for raw pattern parsing | ||
2658 | 3602 | * net/ixgbe/base: fix 5G link speed reported on VF | ||
2659 | 3603 | * net/ixgbe/base: fix PHY ID for X550 | ||
2660 | 3604 | * net/ixgbe/base: revert advertising for X550 2.5G/5G | ||
2661 | 3605 | * net/ixgbe: do not create delayed interrupt handler twice | ||
2662 | 3606 | * net/ixgbe: do not update link status in secondary process | ||
2663 | 3607 | * net/mlx5: fix Arm build with GCC 9.1 | ||
2664 | 3608 | * net/mlx5: fix end condition of reading xstats | ||
2665 | 3609 | * net/mlx5: fix hash Rx queue release in flow sample | ||
2666 | 3610 | * net/mlx5: fix indexed pool with invalid index | ||
2667 | 3611 | * net/mlx5: fix MTU configuration | ||
2668 | 3612 | * net/mlx5: fix uplink port probing in bonding mode | ||
2669 | 3613 | * net/nfp: fix disabling 32-bit build | ||
2670 | 3614 | * net/ngbe: fix hotplug remove | ||
2671 | 3615 | * net/ngbe: fix memory leaks | ||
2672 | 3616 | * net/ngbe: fix MTU range | ||
2673 | 3617 | * net/ngbe: keep PHY power down while device probing | ||
2674 | 3618 | * net/softnic: fix maybe-uninitialized warning | ||
2675 | 3619 | * net/tap: fix file descriptor check in isolated flow | ||
2676 | 3620 | * net/txgbe: fix flow filters in VT mode | ||
2677 | 3621 | * net/txgbe: fix hotplug remove | ||
2678 | 3622 | * net/txgbe: fix memory leaks | ||
2679 | 3623 | * net/txgbe: fix MTU range | ||
2680 | 3624 | * net/txgbe: fix Rx interrupt | ||
2681 | 3625 | * net/txgbe: fix tunnel packet parsing | ||
2682 | 3626 | * net/txgbe: fix Tx hang on queue disable | ||
2683 | 3627 | * net/txgbe: fix VF promiscuous and allmulticast | ||
2684 | 3628 | * net/txgbe: reconfigure more MAC Rx registers | ||
2685 | 3629 | * net/txgbe: restrict configuration of VLAN strip offload | ||
2686 | 3630 | * net/virtio: fix MAC table update | ||
2687 | 3631 | * net/virtio-user: add memcpy check | ||
2688 | 3632 | * net/vmxnet3: fix init logs | ||
2689 | 3633 | * pcapng: add memcpy check | ||
2690 | 3634 | * telemetry: fix connection parameter parsing | ||
2691 | 3635 | * telemetry: lower log level on socket error | ||
2692 | 3636 | * test/crypto: fix allocation comment | ||
2693 | 3637 | * test/crypto: fix asymmetric capability test | ||
2694 | 3638 | * test/crypto: fix vector global buffer overflow | ||
2695 | 3639 | * test/crypto: remove unused stats in setup | ||
2696 | 3640 | * vdpa/sfc: remove dead code | ||
2697 | 3641 | * version: 21.11.8-rc1 | ||
2698 | 3642 | * vhost: cleanup resubmit info before inflight setup | ||
2699 | 3643 | * vhost: fix build with GCC 13 | ||
2700 | 3644 | |||
2701 | 3645 | 21.11.8 Validation | ||
2702 | 3646 | ~~~~~~~~~~~~~~~~~~ | ||
2703 | 3647 | |||
2704 | 3648 | * `Red Hat(R) Testing <https://mails.dpdk.org/archives/stable/2024-September/049938.html>`__ | ||
2705 | 3649 | |||
2706 | 3650 | * Platform | ||
2707 | 3651 | |||
2708 | 3652 | * RHEL 9 | ||
2709 | 3653 | * Kernel 5.14 | ||
2710 | 3654 | * Qemu 8.2 | ||
2711 | 3655 | * X540-AT2 NIC(ixgbe, 10G) | ||
2712 | 3656 | |||
2713 | 3657 | * Functionality | ||
2714 | 3658 | |||
2715 | 3659 | * Guest with device assignment(PF) throughput testing(1G hugepage size) | ||
2716 | 3660 | * Guest with device assignment(PF) throughput testing(2M hugepage size) | ||
2717 | 3661 | * Guest with device assignment(VF) throughput testing | ||
2718 | 3662 | * PVP (host dpdk testpmd as vswitch) 1Q: throughput testing | ||
2719 | 3663 | * PVP vhost-user 2Q throughput testing | ||
2720 | 3664 | * PVP vhost-user 1Q cross numa node throughput testing | ||
2721 | 3665 | * Guest with vhost-user 2 queues throughput testing | ||
2722 | 3666 | * vhost-user reconnect with dpdk-client, qemu-server: qemu reconnect | ||
2723 | 3667 | * vhost-user reconnect with dpdk-client, qemu-server: ovs reconnect | ||
2724 | 3668 | * PVP 1Q live migration testing | ||
2725 | 3669 | * PVP 1Q cross numa node live migration testing | ||
2726 | 3670 | * Guest with ovs+dpdk+vhost-user 1Q live migration testing | ||
2727 | 3671 | * Guest with ovs+dpdk+vhost-user 1Q live migration testing (2M) | ||
2728 | 3672 | * Guest with ovs+dpdk+vhost-user 2Q live migration testing | ||
2729 | 3673 | * Guest with ovs+dpdk+vhost-user 4Q live migration testing | ||
2730 | 3674 | * Host PF + DPDK testing | ||
2731 | 3675 | * Host VF + DPDK testing | ||
2732 | 3676 | |||
2733 | 3677 | |||
2734 | 3678 | * `Intel(R) Testing <https://mails.dpdk.org/archives/stable/2024-September/049940.html>`__ | ||
2735 | 3679 | |||
2736 | 3680 | * Basic Intel(R) NIC(ixgbe, i40e and ice) testing | ||
2737 | 3681 | |||
2738 | 3682 | * PF (i40e, ixgbe) | ||
2739 | 3683 | * VF (i40e, ixgbe) | ||
2740 | 3684 | * PF/VF (ice) | ||
2741 | 3685 | * Compile Testing | ||
2742 | 3686 | * Intel NIC single core/NIC performance | ||
2743 | 3687 | * IPsec | ||
2744 | 3688 | |||
2745 | 3689 | * Basic cryptodev and virtio testing | ||
2746 | 3690 | |||
2747 | 3691 | * vhost/virtio basic loopback, PVP and performance test | ||
2748 | 3692 | * cryptodev Function/Performance | ||
2749 | 3693 | |||
2750 | 3694 | |||
2751 | 3695 | * `Nvidia(R) Testing <https://mails.dpdk.org/archives/stable/2024-September/049948.html>`__ | ||
2752 | 3696 | |||
2753 | 3697 | * Basic functionality with testpmd | ||
2754 | 3698 | |||
2755 | 3699 | * Tx/Rx | ||
2756 | 3700 | * xstats | ||
2757 | 3701 | * Timestamps | ||
2758 | 3702 | * Link status | ||
2759 | 3703 | * RTE flow | ||
2760 | 3704 | * RSS | ||
2761 | 3705 | * VLAN filtering, stripping and insertion | ||
2762 | 3706 | * Checksum/TSO | ||
2763 | 3707 | * ptype | ||
2764 | 3708 | * link_status_interrupt example application | ||
2765 | 3709 | * l3fwd-power example application | ||
2766 | 3710 | * Multi-process example applications | ||
2767 | 3711 | * Hardware LRO tests | ||
2768 | 3712 | * Regex application | ||
2769 | 3713 | * Buffer Split | ||
2770 | 3714 | * Tx scheduling | ||
2771 | 3715 | |||
2772 | 3716 | * Build tests | ||
2773 | 3717 | * ConnectX-6 Dx | ||
2774 | 3718 | * ConnectX-7 | ||
2775 | 3719 | * BlueField-2 | ||
2776 | 3720 | |||
2777 | 3721 | 21.11.8 Known Issues | ||
2778 | 3722 | ~~~~~~~~~~~~~~~~~~~~ | ||
2779 | 3723 | |||
2780 | 3724 | * DPDK 21.11.8 contains fixes up to DPDK 24.07 | ||
2781 | 3725 | * Issues identified/fixed in DPDK main branch after DPDK 24.07 may be present in DPDK 21.11.8 | ||
2782 | 3726 | |||
2783 | 3727 | 21.11.8 Fixes skipped and status unresolved | ||
2784 | 3728 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
2785 | 3729 | |||
2786 | 3730 | * c5b531d6ee app/crypto-perf: fix session freeing | ||
2787 | 3731 | * 61b52e7edb app/test: fix reference to master in bonding test | ||
2788 | 3732 | * 7bdf7a13ae app/testpmd: fix encap/decap size calculation | ||
2789 | 3733 | * 461c287ab5 app/testpmd: fix GRO packets flush on timeout | ||
2790 | 3734 | * ecf408d2aa app/testpmd: fix indirect action flush | ||
2791 | 3735 | * 4edbcc7b53 bpf: disable on 32-bit x86 | ||
2792 | 3736 | * 4edbcc7b53 bpf: disable on 32-bit x86 | ||
2793 | 3737 | * 5d8c1f6253 common/cnxk: check error in MAC address set | ||
2794 | 3738 | * a6f639e079 common/cnxk: fix BP threshold calculation | ||
2795 | 3739 | * 772e30281a common/cnxk: fix CPT backpressure disable on LBK | ||
2796 | 3740 | * 48054ca384 common/cnxk: fix link config for SDP | ||
2797 | 3741 | * 1c7a4d37e7 common/cnxk: fix mailbox timeout due to deadlock | ||
2798 | 3742 | * 59ceaa72d5 common/cnxk: fix part number for CN10K | ||
2799 | 3743 | * 5781638519 common/cnxk: fix RQ mask config for CN10KB chip | ||
2800 | 3744 | * 56fa6f92e9 common/cnxk: fix RSS key configuration | ||
2801 | 3745 | * 37ca457d3f common/mlx5: fix obtaining IB device in LAG mode | ||
2802 | 3746 | * cedb44dc87 common/mlx5: improve AES-XTS tweak capability check | ||
2803 | 3747 | * 7be74edb90 common/mlx5: use just sufficient barrier for Arm | ||
2804 | 3748 | * 046341575b crypto/dpaa_sec: fix IPsec descriptor | ||
2805 | 3749 | * 9d91c3047d crypto/openssl: fix memory leaks in asym operations | ||
2806 | 3750 | * 17d5bc6135 crypto/openssl: make per-QP auth context clones | ||
2807 | 3751 | * b1d7112602 crypto/openssl: make per-QP cipher context clones | ||
2808 | 3752 | * 3dd3115078 dma/cnxk: fix chunk buffer failure return code | ||
2809 | 3753 | * ba39a261a7 dma/cnxk: fix completion ring tail wrap | ||
2810 | 3754 | * 95a955e3e0 dma/cnxk: fix device reconfigure | ||
2811 | 3755 | * 2a3f42942a dma/hisilicon: remove support for HIP09 platform | ||
2812 | 3756 | * b9a87346b0 ethdev: fix strict aliasing in link up | ||
2813 | 3757 | * 694e8e643d event/cnxk: fix CASP usage for clang | ||
2814 | 3758 | * b37fe88a2c event/cnxk: fix LMTST write for single event mode | ||
2815 | 3759 | * 3fe71706ab event/cnxk: fix stale data in workslot | ||
2816 | 3760 | * 04dac73643 eventdev/crypto: fix enqueue count | ||
2817 | 3761 | * 4b04134cbb eventdev/crypto: fix failed events | ||
2818 | 3762 | * da73a2a0d1 eventdev/crypto: fix offset used while flushing events | ||
2819 | 3763 | * ad12d08f05 eventdev/crypto: fix opaque field handling | ||
2820 | 3764 | * f442c04001 eventdev/crypto: fix overflow in circular buffer | ||
2821 | 3765 | * 4b97893816 examples: fix lcore ID restriction | ||
2822 | 3766 | * 548de9091c examples: fix port ID restriction | ||
2823 | 3767 | * b23c5bd71a examples: fix queue ID restriction | ||
2824 | 3768 | * 9a518054b5 examples/l3fwd: fix duplicate expression for default nexthop | ||
2825 | 3769 | * 927cb43fe9 examples/l3fwd: fix port group mask with AltiVec | ||
2826 | 3770 | * 547f294357 gro: fix reordering of packets | ||
2827 | 3771 | * 6df1bc6b3b mempool/cnxk: avoid hang when counting batch allocs | ||
2828 | 3772 | * b3ddd649ad mempool/cnxk: fix alloc from non-EAL threads | ||
2829 | 3773 | * 97039941b2 net/af_xdp: parse UMEM map info from mempool | ||
2830 | 3774 | * abdabad636 net/af_xdp: remove unused local statistic | ||
2831 | 3775 | * e82b0fe097 net/axgbe: disable RRC for yellow carp devices | ||
2832 | 3776 | * a78a1ed8ba net/bonding: fix failover time of LACP with mode 4 | ||
2833 | 3777 | * 02a2accb5f net/bonding: fix flow count query | ||
2834 | 3778 | * 26a6bda9df net/cnxk: add cookies check for multi-segment offload | ||
2835 | 3779 | * 5a0f64d84b net/cnxk: fix configuring large Rx/Tx queues | ||
2836 | 3780 | * 3232c95d2c net/cnxk: fix indirect mbuf handling in Tx | ||
2837 | 3781 | * 8ed5ca4dda net/cnxk: fix mbuf fields in multi-segment Tx | ||
2838 | 3782 | * 7752f14026 net/cnxk: fix Rx flush on CN10k | ||
2839 | 3783 | * 4c2f14bc6d net/cnxk: fix xstats reset | ||
2840 | 3784 | * ee0fa7552a net/dpaa: forbid MTU configuration for shared interface | ||
2841 | 3785 | * 0f044b6681 net/iavf: fix refine protocol header | ||
2842 | 3786 | * 0b241667cc net/iavf: fix tainted scalar | ||
2843 | 3787 | * b125c0e721 net/iavf: fix tainted scalar | ||
2844 | 3788 | * 92a16af450 net/iavf: fix virtchnl command called in interrupt | ||
2845 | 3789 | * df44ba7a3c net/ice/base: fix preparing PHY for timesync command | ||
2846 | 3790 | * e2072ba1b0 net/ice/base: fix resource leak | ||
2847 | 3791 | * 9749dffe23 net/ice: fix MAC type of E822 and E823 | ||
2848 | 3792 | * 87e4384d26 net/mlx5: fix condition of LACP miss flow | ||
2849 | 3793 | * 2ece3b7186 net/mlx5: fix flow workspace double free in Windows | ||
2850 | 3794 | * 1cfb78d2c4 net/mlx5: fix meter policy priority | ||
2851 | 3795 | * 48adbc80ba net/mlx5: remove GENEVE options length limitation | ||
2852 | 3796 | * a74c5001e9 net/ngbe: add proper memory barriers in Rx | ||
2853 | 3797 | * 79be49dd2d net/ngbe: add special config for YT8531SH-CA PHY | ||
2854 | 3798 | * 31a28a99fd net/ngbe: add spinlock protection on YT PHY | ||
2855 | 3799 | * 21f702d556 net/ngbe: fix link status in no LSC mode | ||
2856 | 3800 | * 659cfce01e net/ngbe: remove redundant codes | ||
2857 | 3801 | * 44a8635459 net/thunderx: fix DMAC control register update | ||
2858 | 3802 | * 12011b11a3 net/txgbe: adapt to MNG veto bit setting | ||
2859 | 3803 | * 5e170dd8b6 net/txgbe: fix blocking system events | ||
2860 | 3804 | * 166591931b pcapng: modify timestamp calculation | ||
2861 | 3805 | * df33fb53e4 rcu: fix acked token in debug log | ||
2862 | 3806 | * 063cddfc74 rcu: use atomic operation on acked token | ||
2863 | 3807 | * 4ad17a1c8f test/crypto: fix enqueue/dequeue callback case | ||
2864 | 3808 | * 63bf81a617 test: fix named test macro | ||
2865 | 3809 | |||
2866 | 3810 | 21.11.9 Release Notes | ||
2867 | 3811 | --------------------- | ||
2868 | 3812 | |||
2869 | 3813 | |||
2870 | 3814 | 21.11.9 Fixes | ||
2871 | 3815 | ~~~~~~~~~~~~~ | ||
2872 | 3816 | |||
2873 | 3817 | * app/dumpcap: remove unused struct array | ||
2874 | 3818 | * app/procinfo: fix leak on exit | ||
2875 | 3819 | * app/testpmd: fix aged flow destroy | ||
2876 | 3820 | * app/testpmd: remove flex item init command leftover | ||
2877 | 3821 | * app/testpmd: remove redundant policy action condition | ||
2878 | 3822 | * app/testpmd: remove unnecessary cast | ||
2879 | 3823 | * baseband/la12xx: fix use after free in modem config | ||
2880 | 3824 | * bpf: fix free function mismatch if convert fails | ||
2881 | 3825 | * build: remove version check on compiler links function | ||
2882 | 3826 | * bus/dpaa: fix lock condition during error handling | ||
2883 | 3827 | * bus/dpaa: fix PFDRs leaks due to FQRNIs | ||
2884 | 3828 | * bus/dpaa: fix the fman details status | ||
2885 | 3829 | * bus/dpaa: fix VSP for 1G fm1-mac9 and 10 | ||
2886 | 3830 | * bus/fslmc: fix Coverity warnings in QBMAN | ||
2887 | 3831 | * common/cnxk: fix base log level | ||
2888 | 3832 | * common/cnxk: fix build on Ubuntu 24.04 | ||
2889 | 3833 | * common/cnxk: fix RSS key configuration | ||
2890 | 3834 | * common/dpaax/caamflib: fix PDCP SNOW-ZUC watchdog | ||
2891 | 3835 | * common/mlx5: fix error CQE handling for 128 bytes CQE | ||
2892 | 3836 | * common/mlx5: fix misalignment | ||
2893 | 3837 | * crypto/bcmfs: fix free function mismatch | ||
2894 | 3838 | * crypto/dpaa2_sec: fix memory leak | ||
2895 | 3839 | * crypto/openssl: fix 3DES-CTR with big endian CPUs | ||
2896 | 3840 | * dev: fix callback lookup when unregistering device | ||
2897 | 3841 | * devtools: fix check of multiple commits fixed at once | ||
2898 | 3842 | * dmadev: fix potential null pointer access | ||
2899 | 3843 | * dma/idxd: fix free function mismatch in device probe | ||
2900 | 3844 | * doc: correct definition of stats per queue feature | ||
2901 | 3845 | * eal/x86: fix 32-bit write combining store | ||
2902 | 3846 | * ethdev: fix overflow in descriptor count | ||
2903 | 3847 | * ethdev: verify queue ID in Tx done cleanup | ||
2904 | 3848 | * event/cnxk: fix free function mismatch in port config | ||
2905 | 3849 | * eventdev: fix possible array underflow/overflow | ||
2906 | 3850 | * event/octeontx: fix possible integer overflow | ||
2907 | 3851 | * examples/eventdev: fix queue crash with generic pipeline | ||
2908 | 3852 | * examples/l2fwd-event: fix spinlock handling | ||
2909 | 3853 | * examples/ntb: check info query return | ||
2910 | 3854 | * examples/vhost: fix free function mismatch | ||
2911 | 3855 | * fib6: add runtime checks in AVX512 lookup | ||
2912 | 3856 | * fib: fix AVX512 lookup | ||
2913 | 3857 | * hash: fix thash LFSR initialization | ||
2914 | 3858 | * member: fix choice of bucket for displacement | ||
2915 | 3859 | * net/bnx2x: fix always true expression | ||
2916 | 3860 | * net/bnx2x: fix duplicate branch | ||
2917 | 3861 | * net/bnx2x: fix possible infinite loop at startup | ||
2918 | 3862 | * net/bnx2x: remove dead conditional | ||
2919 | 3863 | * net/bnxt: fix bad action offset in Tx BD | ||
2920 | 3864 | * net/bnxt: fix reading SFF-8436 SFP EEPROMs | ||
2921 | 3865 | * net/bnxt: fix TCP and UDP checksum flags | ||
2922 | 3866 | * net/bnxt/tf_core: fix Thor TF EM key size check | ||
2923 | 3867 | * net/cnxk: fix Rx offloads to handle timestamp | ||
2924 | 3868 | * net/cnxk: fix Rx timestamp handling for VF | ||
2925 | 3869 | * net/dpaa: fix reallocate mbuf handling | ||
2926 | 3870 | * net/dpaa: fix typecasting channel ID | ||
2927 | 3871 | * net/e1000: fix link status crash in secondary process | ||
2928 | 3872 | * net/e1000: fix use after free in filter flush | ||
2929 | 3873 | * net/ena: revert redefining memcpy | ||
2930 | 3874 | * net/hns3: fix dump counter of registers | ||
2931 | 3875 | * net/hns3: fix error code for repeatedly create counter | ||
2932 | 3876 | * net/hns3: fix fully use hardware flow director table | ||
2933 | 3877 | * net/hns3: remove some basic address dump | ||
2934 | 3878 | * net/hns3: restrict tunnel flow rule to one header | ||
2935 | 3879 | * net/hns3: verify reset type from firmware | ||
2936 | 3880 | * net/i40e/base: fix blinking X722 with X557 PHY | ||
2937 | 3881 | * net/i40e/base: fix DDP loading with reserved track ID | ||
2938 | 3882 | * net/i40e/base: fix loop bounds | ||
2939 | 3883 | * net/i40e/base: fix misleading debug logs and comments | ||
2940 | 3884 | * net/i40e/base: fix repeated register dumps | ||
2941 | 3885 | * net/i40e/base: fix setting flags in init function | ||
2942 | 3886 | * net/i40e/base: fix unchecked return value | ||
2943 | 3887 | * net/i40e: check register read for outer VLAN | ||
2944 | 3888 | * net/i40e: fix AVX-512 pointer copy on 32-bit | ||
2945 | 3889 | * net/iavf: add segment-length check to Tx prep | ||
2946 | 3890 | * net/iavf: fix AVX-512 pointer copy on 32-bit | ||
2947 | 3891 | * net/iavf: fix crash when link is unstable | ||
2948 | 3892 | * net/iavf: fix VF reset when using DCF | ||
2949 | 3893 | * net/iavf: preserve MAC address with i40e PF Linux driver | ||
2950 | 3894 | * net/ice/base: add bounds check | ||
2951 | 3895 | * net/ice/base: fix iteration of TLVs in Preserved Fields Area | ||
2952 | 3896 | * net/ice/base: fix link speed for 200G | ||
2953 | 3897 | * net/ice/base: fix VLAN replay after reset | ||
2954 | 3898 | * net/ice: detect stopping a flow director queue twice | ||
2955 | 3899 | * net/ice: fix AVX-512 pointer copy on 32-bit | ||
2956 | 3900 | * net/ionic: fix build with Fedora Rawhide | ||
2957 | 3901 | * net/ixgbe/base: fix unchecked return value | ||
2958 | 3902 | * net/ixgbe: fix link status delay on FreeBSD | ||
2959 | 3903 | * net/memif: fix buffer overflow in zero copy Rx | ||
2960 | 3904 | * net/mlx5: fix memory leak in metering | ||
2961 | 3905 | * net/mlx5: fix miniCQEs number calculation | ||
2962 | 3906 | * net/mlx5: fix next protocol validation after flex item | ||
2963 | 3907 | * net/mlx5: fix non full word sample fields in flex item | ||
2964 | 3908 | * net/mlx5: fix number of supported flex parsers | ||
2965 | 3909 | * net/mlx5: fix reported Rx/Tx descriptor limits | ||
2966 | 3910 | * net/mlx5: fix shared queue port number in vector Rx | ||
2967 | 3911 | * net/mlx5: workaround list management of Rx queue control | ||
2968 | 3912 | * net/mvneta: fix possible out-of-bounds write | ||
2969 | 3913 | * net/netvsc: fix using Tx queue higher than Rx queues | ||
2970 | 3914 | * net/netvsc: force Tx VLAN offload on 801.2Q packet | ||
2971 | 3915 | * net/nfb: fix use after free | ||
2972 | 3916 | * net/nfp: fix link change return value | ||
2973 | 3917 | * net/ngbe: fix driver load bit to inform firmware | ||
2974 | 3918 | * net/ngbe: fix interrupt lost in legacy or MSI mode | ||
2975 | 3919 | * net/ngbe: reconfigure more MAC Rx registers | ||
2976 | 3920 | * net/ngbe: restrict configuration of VLAN strip offload | ||
2977 | 3921 | * net/pcap: fix blocking Rx | ||
2978 | 3922 | * net/pcap: set live interface as non-blocking | ||
2979 | 3923 | * net/sfc: fix use after free in debug logs | ||
2980 | 3924 | * net/tap: avoid memcpy with null argument | ||
2981 | 3925 | * net/tap: restrict maximum number of MP FDs | ||
2982 | 3926 | * net/txgbe: fix driver load bit to inform firmware | ||
2983 | 3927 | * net/txgbe: fix SWFW mbox | ||
2984 | 3928 | * net/txgbe: fix VF-PF mbox interrupt | ||
2985 | 3929 | * net/txgbe: remove outer UDP checksum capability | ||
2986 | 3930 | * net/virtio: fix Rx checksum calculation | ||
2987 | 3931 | * net/virtio-user: reset used index counter | ||
2988 | 3932 | * net/vmxnet3: fix crash after configuration failure | ||
2989 | 3933 | * power: enable CPPC | ||
2990 | 3934 | * power: fix log message when checking lcore ID | ||
2991 | 3935 | * power: fix log message when checking power modes | ||
2992 | 3936 | * power: fix mapped lcore ID | ||
2993 | 3937 | * raw/ifpga/base: fix use after free | ||
2994 | 3938 | * raw/ifpga: fix free function mismatch in interrupt config | ||
2995 | 3939 | * rcu: fix implicit conversion in bit shift | ||
2996 | 3940 | * Revert "test/bonding: fix loop on members" | ||
2997 | 3941 | * test/bonding: fix loop on members | ||
2998 | 3942 | * test/bonding: fix MAC address comparison | ||
2999 | 3943 | * test/bonding: remove redundant info query | ||
3000 | 3944 | * test/eal: fix lcore check | ||
3001 | 3945 | * test/eal: fix loop coverage for alignment macros | ||
3002 | 3946 | * test/event: avoid duplicate initialization | ||
3003 | 3947 | * vdpa: update used flags in used ring relay | ||
3004 | 3948 | * version: 21.11.9-rc1 | ||
3005 | 3949 | * vhost: fix offset while mapping log base address | ||
3006 | 3950 | |||
3007 | 3951 | 21.11.9 Validation | ||
3008 | 3952 | ~~~~~~~~~~~~~~~~~~ | ||
3009 | 3953 | |||
3010 | 3954 | * `Red Hat(R) Testing <https://mails.dpdk.org/archives/dev/2024-December/310322.html>`__ | ||
3011 | 3955 | |||
3012 | 3956 | * Platform | ||
3013 | 3957 | |||
3014 | 3958 | * RHEL 9 | ||
3015 | 3959 | * Kernel 5.14 | ||
3016 | 3960 | * Qemu 7.2 | ||
3017 | 3961 | * X540-AT2 NIC(ixgbe, 10G) | ||
3018 | 3962 | |||
3019 | 3963 | * Functionality | ||
3020 | 3964 | |||
3021 | 3965 | * Guest with device assignment(PF) throughput testing(1G hugepage size) | ||
3022 | 3966 | * Guest with device assignment(PF) throughput testing(2M hugepage size) | ||
3023 | 3967 | * Guest with device assignment(VF) throughput testing | ||
3024 | 3968 | * PVP (host dpdk testpmd as vswitch) 1Q: throughput testing | ||
3025 | 3969 | * PVP vhost-user 2Q throughput testing | ||
3026 | 3970 | * PVP vhost-user 1Q cross numa node throughput testing | ||
3027 | 3971 | * Guest with vhost-user 2 queues throughput testing | ||
3028 | 3972 | * vhost-user reconnect with dpdk-client, qemu-server: qemu reconnect | ||
3029 | 3973 | * vhost-user reconnect with dpdk-client, qemu-server: ovs reconnect | ||
3030 | 3974 | * PVP 1Q live migration testing | ||
3031 | 3975 | * PVP 1Q cross numa node live migration testing | ||
3032 | 3976 | * Guest with ovs+dpdk+vhost-user 1Q live migration testing | ||
3033 | 3977 | * Guest with ovs+dpdk+vhost-user 1Q live migration testing (2M) | ||
3034 | 3978 | * Guest with ovs+dpdk+vhost-user 2Q live migration testing | ||
3035 | 3979 | * Guest with ovs+dpdk+vhost-user 4Q live migration testing | ||
3036 | 3980 | * Host PF + DPDK testing | ||
3037 | 3981 | * Host VF + DPDK testing | ||
3038 | 3982 | |||
3039 | 3983 | |||
3040 | 3984 | * `Nvidia(R) Testing <https://mails.dpdk.org/archives/stable/2024-December/051225.html>`__ | ||
3041 | 3985 | |||
3042 | 3986 | * Basic functionality with testpmd | ||
3043 | 3987 | |||
3044 | 3988 | * Tx/Rx | ||
3045 | 3989 | * xstats | ||
3046 | 3990 | * Timestamps | ||
3047 | 3991 | * Link status | ||
3048 | 3992 | * RTE flow | ||
3049 | 3993 | * RSS | ||
3050 | 3994 | * VLAN filtering, stripping and insertion | ||
3051 | 3995 | * Checksum/TSO | ||
3052 | 3996 | * ptype | ||
3053 | 3997 | * link_status_interrupt example application | ||
3054 | 3998 | * l3fwd-power example application | ||
3055 | 3999 | * Multi-process example applications | ||
3056 | 4000 | * Hardware LRO tests | ||
3057 | 4001 | * Regex application | ||
3058 | 4002 | * Buffer Split | ||
3059 | 4003 | * Tx scheduling | ||
3060 | 4004 | |||
3061 | 4005 | * Build tests | ||
3062 | 4006 | * ConnectX-6 Dx | ||
3063 | 4007 | * ConnectX-7 | ||
3064 | 4008 | * BlueField-2 | ||
3065 | 4009 | |||
3066 | 4010 | |||
3067 | 4011 | * `Intel(R) Testing <https://mails.dpdk.org/archives/stable/2024-December/051231.html>`__ | ||
3068 | 4012 | |||
3069 | 4013 | * Basic Intel(R) NIC(ixgbe, i40e and ice) testing | ||
3070 | 4014 | |||
3071 | 4015 | * PF (i40e, ixgbe) | ||
3072 | 4016 | * VF (i40e, ixgbe) | ||
3073 | 4017 | * PF/VF (ice) | ||
3074 | 4018 | * Compile Testing | ||
3075 | 4019 | * Intel NIC single core/NIC performance - partial testing | ||
3076 | 4020 | * IPseca - partial testing | ||
3077 | 4021 | |||
3078 | 4022 | * Basic cryptodev and virtio testing | ||
3079 | 4023 | |||
3080 | 4024 | * vhost/virtio basic loopback, PVP and performance test | ||
3081 | 4025 | * cryptodev Function/Performance - partial testing | ||
3082 | 4026 | |||
3083 | 4027 | 21.11.9 Known Issues | ||
3084 | 4028 | ~~~~~~~~~~~~~~~~~~~~ | ||
3085 | 4029 | |||
3086 | 4030 | * DPDK 21.11.9 contains fixes up to DPDK 24.11 and CVE-2024-11614 | ||
3087 | 4031 | * Issues identified/fixed in DPDK main branch after DPDK 24.11 may be present in DPDK 21.11.9 | ||
3088 | 4032 | * Ubuntu 24.04 with gcc 13.2.0 running at optimisation -O1 shows a maybe-uninitialized warning for iavf driver | ||
3089 | 4033 | * Some validation was ongoing at time of release | ||
3090 | 4034 | |||
3091 | 4035 | 21.11.9 Fixes skipped and status unresolved | ||
3092 | 4036 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
3093 | 4037 | |||
3094 | 4038 | * c5b531d6ee app/crypto-perf: fix session freeing | ||
3095 | 4039 | * 7bdf7a13ae app/testpmd: fix encap/decap size calculation | ||
3096 | 4040 | * 461c287ab5 app/testpmd: fix GRO packets flush on timeout | ||
3097 | 4041 | * ecf408d2aa app/testpmd: fix indirect action flush | ||
3098 | 4042 | * 0c5709824b baseband/acc: fix ring memory allocation | ||
3099 | 4043 | * 4edbcc7b53 bpf: disable on 32-bit x86 | ||
3100 | 4044 | * 4edbcc7b53 bpf: disable on 32-bit x86 | ||
3101 | 4045 | * 5d8c1f6253 common/cnxk: check error in MAC address set | ||
3102 | 4046 | * a6f639e079 common/cnxk: fix BP threshold calculation | ||
3103 | 4047 | * 772e30281a common/cnxk: fix CPT backpressure disable on LBK | ||
3104 | 4048 | * 6c3de40af8 common/cnxk: fix inline CTX write | ||
3105 | 4049 | * 48054ca384 common/cnxk: fix link config for SDP | ||
3106 | 4050 | * 2d4505dc6d common/cnxk: fix MAC address change with active VF | ||
3107 | 4051 | * 1c7a4d37e7 common/cnxk: fix mailbox timeout due to deadlock | ||
3108 | 4052 | * 59ceaa72d5 common/cnxk: fix part number for CN10K | ||
3109 | 4053 | * 5781638519 common/cnxk: fix RQ mask config for CN10KB chip | ||
3110 | 4054 | * 37ca457d3f common/mlx5: fix obtaining IB device in LAG mode | ||
3111 | 4055 | * cedb44dc87 common/mlx5: improve AES-XTS tweak capability check | ||
3112 | 4056 | * 7be74edb90 common/mlx5: use just sufficient barrier for Arm | ||
3113 | 4057 | * 046341575b crypto/dpaa_sec: fix IPsec descriptor | ||
3114 | 4058 | * 17d5bc6135 crypto/openssl: make per-QP auth context clones | ||
3115 | 4059 | * b1d7112602 crypto/openssl: make per-QP cipher context clones | ||
3116 | 4060 | * 3dd3115078 dma/cnxk: fix chunk buffer failure return code | ||
3117 | 4061 | * ba39a261a7 dma/cnxk: fix completion ring tail wrap | ||
3118 | 4062 | * 95a955e3e0 dma/cnxk: fix device reconfigure | ||
3119 | 4063 | * 2a3f42942a dma/hisilicon: remove support for HIP09 platform | ||
3120 | 4064 | * b9a87346b0 ethdev: fix strict aliasing in link up | ||
3121 | 4065 | * 694e8e643d event/cnxk: fix CASP usage for clang | ||
3122 | 4066 | * b37fe88a2c event/cnxk: fix LMTST write for single event mode | ||
3123 | 4067 | * 3fe71706ab event/cnxk: fix stale data in workslot | ||
3124 | 4068 | * 04dac73643 eventdev/crypto: fix enqueue count | ||
3125 | 4069 | * 4b04134cbb eventdev/crypto: fix failed events | ||
3126 | 4070 | * da73a2a0d1 eventdev/crypto: fix offset used while flushing events | ||
3127 | 4071 | * ad12d08f05 eventdev/crypto: fix opaque field handling | ||
3128 | 4072 | * f442c04001 eventdev/crypto: fix overflow in circular buffer | ||
3129 | 4073 | * 9a518054b5 examples/l3fwd: fix duplicate expression for default nexthop | ||
3130 | 4074 | * 927cb43fe9 examples/l3fwd: fix port group mask with AltiVec | ||
3131 | 4075 | * ebab0e8b22 examples/l3fwd: fix read beyond boundaries | ||
3132 | 4076 | * ebab0e8b22 examples/l3fwd: fix read beyond boundaries | ||
3133 | 4077 | * 547f294357 gro: fix reordering of packets | ||
3134 | 4078 | * 6df1bc6b3b mempool/cnxk: avoid hang when counting batch allocs | ||
3135 | 4079 | * b3ddd649ad mempool/cnxk: fix alloc from non-EAL threads | ||
3136 | 4080 | * 97039941b2 net/af_xdp: parse UMEM map info from mempool | ||
3137 | 4081 | * abdabad636 net/af_xdp: remove unused local statistic | ||
3138 | 4082 | * e82b0fe097 net/axgbe: disable RRC for yellow carp devices | ||
3139 | 4083 | * 78dcdb821c net/bnxt/tf_core: fix WC TCAM multi-slice delete | ||
3140 | 4084 | * 8782e4de3e net/bnxt/tf_ulp: fix parent child DB counters | ||
3141 | 4085 | * a78a1ed8ba net/bonding: fix failover time of LACP with mode 4 | ||
3142 | 4086 | * 02a2accb5f net/bonding: fix flow count query | ||
3143 | 4087 | * 26a6bda9df net/cnxk: add cookies check for multi-segment offload | ||
3144 | 4088 | * 5a0f64d84b net/cnxk: fix configuring large Rx/Tx queues | ||
3145 | 4089 | * 3232c95d2c net/cnxk: fix indirect mbuf handling in Tx | ||
3146 | 4090 | * 8ed5ca4dda net/cnxk: fix mbuf fields in multi-segment Tx | ||
3147 | 4091 | * 7752f14026 net/cnxk: fix Rx flush on CN10k | ||
3148 | 4092 | * 4c2f14bc6d net/cnxk: fix xstats reset | ||
3149 | 4093 | * ee0fa7552a net/dpaa: forbid MTU configuration for shared interface | ||
3150 | 4094 | * 0f044b6681 net/iavf: fix refine protocol header | ||
3151 | 4095 | * 0b241667cc net/iavf: fix tainted scalar | ||
3152 | 4096 | * b125c0e721 net/iavf: fix tainted scalar | ||
3153 | 4097 | * 92a16af450 net/iavf: fix virtchnl command called in interrupt | ||
3154 | 4098 | * df44ba7a3c net/ice/base: fix preparing PHY for timesync command | ||
3155 | 4099 | * e2072ba1b0 net/ice/base: fix resource leak | ||
3156 | 4100 | * 9749dffe23 net/ice: fix MAC type of E822 and E823 | ||
3157 | 4101 | * 87e4384d26 net/mlx5: fix condition of LACP miss flow | ||
3158 | 4102 | * b04b06f4cb net/mlx5: fix flex item header length field translation | ||
3159 | 4103 | * 2ece3b7186 net/mlx5: fix flow workspace double free in Windows | ||
3160 | 4104 | * 1cfb78d2c4 net/mlx5: fix meter policy priority | ||
3161 | 4105 | * 27918f0d53 net/mlx5: fix real time counter reading from PCI BAR | ||
3162 | 4106 | * 3c9a82fa6e net/mlx5: fix Rx queue control management | ||
3163 | 4107 | * f8f294c66b net/mlx5: fix shared Rx queue control release | ||
3164 | 4108 | * 48adbc80ba net/mlx5: remove GENEVE options length limitation | ||
3165 | 4109 | * a74c5001e9 net/ngbe: add proper memory barriers in Rx | ||
3166 | 4110 | * 79be49dd2d net/ngbe: add special config for YT8531SH-CA PHY | ||
3167 | 4111 | * 31a28a99fd net/ngbe: add spinlock protection on YT PHY | ||
3168 | 4112 | * 21f702d556 net/ngbe: fix link status in no LSC mode | ||
3169 | 4113 | * 659cfce01e net/ngbe: remove redundant codes | ||
3170 | 4114 | * 44a8635459 net/thunderx: fix DMAC control register update | ||
3171 | 4115 | * 12011b11a3 net/txgbe: adapt to MNG veto bit setting | ||
3172 | 4116 | * 916aa13f4a net/txgbe: fix a mass of interrupts | ||
3173 | 4117 | * 5e170dd8b6 net/txgbe: fix blocking system events | ||
3174 | 4118 | * 6db358536f pcapng: fix handling of chained mbufs | ||
3175 | 4119 | * 166591931b pcapng: modify timestamp calculation | ||
3176 | 4120 | * df33fb53e4 rcu: fix acked token in debug log | ||
3177 | 4121 | * 063cddfc74 rcu: use atomic operation on acked token | ||
3178 | 4122 | * 4ad17a1c8f test/crypto: fix enqueue/dequeue callback case | ||
3179 | 4123 | * 251fdc592d test/crypto: fix synchronous API calls | ||
3180 | 4124 | * 63bf81a617 test: fix named test macro | ||
3181 | diff --git a/doc/guides/sample_app_ug/l2_forward_crypto.rst b/doc/guides/sample_app_ug/l2_forward_crypto.rst | |||
3182 | index ce49eab..7ff304d 100644 | |||
3183 | --- a/doc/guides/sample_app_ug/l2_forward_crypto.rst | |||
3184 | +++ b/doc/guides/sample_app_ug/l2_forward_crypto.rst | |||
3185 | @@ -30,7 +30,7 @@ Compiling the Application | |||
3186 | 30 | 30 | ||
3187 | 31 | To compile the sample application see :doc:`compiling`. | 31 | To compile the sample application see :doc:`compiling`. |
3188 | 32 | 32 | ||
3190 | 33 | The application is located in the ``l2fwd-crypt`` sub-directory. | 33 | The application is located in the ``l2fwd-crypto`` sub-directory. |
3191 | 34 | 34 | ||
3192 | 35 | Running the Application | 35 | Running the Application |
3193 | 36 | ----------------------- | 36 | ----------------------- |
3194 | diff --git a/doc/guides/sample_app_ug/l3_forward_power_man.rst b/doc/guides/sample_app_ug/l3_forward_power_man.rst | |||
3195 | index 2e350c4..bb39cac 100644 | |||
3196 | --- a/doc/guides/sample_app_ug/l3_forward_power_man.rst | |||
3197 | +++ b/doc/guides/sample_app_ug/l3_forward_power_man.rst | |||
3198 | @@ -336,6 +336,9 @@ will use automatic PMD power management. | |||
3199 | 336 | This mode is limited to one queue per core, | 336 | This mode is limited to one queue per core, |
3200 | 337 | and has three available power management schemes: | 337 | and has three available power management schemes: |
3201 | 338 | 338 | ||
3202 | 339 | ``baseline`` | ||
3203 | 340 | This mode will not enable any power saving features. | ||
3204 | 341 | |||
3205 | 339 | ``monitor`` | 342 | ``monitor`` |
3206 | 340 | This will use ``rte_power_monitor()`` function to enter | 343 | This will use ``rte_power_monitor()`` function to enter |
3207 | 341 | a power-optimized state (subject to platform support). | 344 | a power-optimized state (subject to platform support). |
3208 | diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst | |||
3209 | index 3a522a8..6902b7b 100644 | |||
3210 | --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst | |||
3211 | +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst | |||
3212 | @@ -2207,7 +2207,7 @@ port config - queue ring size | |||
3213 | 2207 | 2207 | ||
3214 | 2208 | Configure a rx/tx queue ring size:: | 2208 | Configure a rx/tx queue ring size:: |
3215 | 2209 | 2209 | ||
3217 | 2210 | testpmd> port (port_id) (rxq|txq) (queue_id) ring_size (value) | 2210 | testpmd> port config (port_id) (rxq|txq) (queue_id) ring_size (value) |
3218 | 2211 | 2211 | ||
3219 | 2212 | Only take effect after command that (re-)start the port or command that setup specific queue. | 2212 | Only take effect after command that (re-)start the port or command that setup specific queue. |
3220 | 2213 | 2213 | ||
3221 | diff --git a/drivers/baseband/la12xx/bbdev_la12xx.c b/drivers/baseband/la12xx/bbdev_la12xx.c | |||
3222 | index 4b05b5d..0ac0888 100644 | |||
3223 | --- a/drivers/baseband/la12xx/bbdev_la12xx.c | |||
3224 | +++ b/drivers/baseband/la12xx/bbdev_la12xx.c | |||
3225 | @@ -780,6 +780,7 @@ setup_la12xx_dev(struct rte_bbdev *dev) | |||
3226 | 780 | ipc_priv->hugepg_start.size = hp->len; | 780 | ipc_priv->hugepg_start.size = hp->len; |
3227 | 781 | 781 | ||
3228 | 782 | rte_free(hp); | 782 | rte_free(hp); |
3229 | 783 | hp = NULL; | ||
3230 | 783 | } | 784 | } |
3231 | 784 | 785 | ||
3232 | 785 | dev_ipc = open_ipc_dev(priv->modem_id); | 786 | dev_ipc = open_ipc_dev(priv->modem_id); |
3233 | @@ -1076,6 +1077,9 @@ la12xx_bbdev_remove(struct rte_vdev_device *vdev) | |||
3234 | 1076 | 1077 | ||
3235 | 1077 | PMD_INIT_FUNC_TRACE(); | 1078 | PMD_INIT_FUNC_TRACE(); |
3236 | 1078 | 1079 | ||
3237 | 1080 | if (rte_eal_process_type() != RTE_PROC_PRIMARY) | ||
3238 | 1081 | return 0; | ||
3239 | 1082 | |||
3240 | 1079 | if (vdev == NULL) | 1083 | if (vdev == NULL) |
3241 | 1080 | return -EINVAL; | 1084 | return -EINVAL; |
3242 | 1081 | 1085 | ||
3243 | diff --git a/drivers/bus/dpaa/base/fman/fman.c b/drivers/bus/dpaa/base/fman/fman.c | |||
3244 | index 1814372..8263d42 100644 | |||
3245 | --- a/drivers/bus/dpaa/base/fman/fman.c | |||
3246 | +++ b/drivers/bus/dpaa/base/fman/fman.c | |||
3247 | @@ -153,7 +153,7 @@ static void fman_if_vsp_init(struct __fman_if *__if) | |||
3248 | 153 | size_t lenp; | 153 | size_t lenp; |
3249 | 154 | const uint8_t mac_idx[] = {-1, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1}; | 154 | const uint8_t mac_idx[] = {-1, 0, 1, 2, 3, 4, 5, 6, 7, 0, 1}; |
3250 | 155 | 155 | ||
3252 | 156 | if (__if->__if.mac_type == fman_mac_1g) { | 156 | if (__if->__if.mac_idx <= 8) { |
3253 | 157 | for_each_compatible_node(dev, NULL, | 157 | for_each_compatible_node(dev, NULL, |
3254 | 158 | "fsl,fman-port-1g-rx-extended-args") { | 158 | "fsl,fman-port-1g-rx-extended-args") { |
3255 | 159 | prop = of_get_property(dev, "cell-index", &lenp); | 159 | prop = of_get_property(dev, "cell-index", &lenp); |
3256 | @@ -176,7 +176,32 @@ static void fman_if_vsp_init(struct __fman_if *__if) | |||
3257 | 176 | } | 176 | } |
3258 | 177 | } | 177 | } |
3259 | 178 | } | 178 | } |
3261 | 179 | } else if (__if->__if.mac_type == fman_mac_10g) { | 179 | |
3262 | 180 | for_each_compatible_node(dev, NULL, | ||
3263 | 181 | "fsl,fman-port-op-extended-args") { | ||
3264 | 182 | prop = of_get_property(dev, "cell-index", &lenp); | ||
3265 | 183 | |||
3266 | 184 | if (prop) { | ||
3267 | 185 | cell_index = of_read_number(&prop[0], | ||
3268 | 186 | lenp / sizeof(phandle)); | ||
3269 | 187 | |||
3270 | 188 | if (cell_index == __if->__if.mac_idx) { | ||
3271 | 189 | prop = of_get_property(dev, | ||
3272 | 190 | "vsp-window", | ||
3273 | 191 | &lenp); | ||
3274 | 192 | |||
3275 | 193 | if (prop) { | ||
3276 | 194 | __if->__if.num_profiles = | ||
3277 | 195 | of_read_number(&prop[0], | ||
3278 | 196 | 1); | ||
3279 | 197 | __if->__if.base_profile_id = | ||
3280 | 198 | of_read_number(&prop[1], | ||
3281 | 199 | 1); | ||
3282 | 200 | } | ||
3283 | 201 | } | ||
3284 | 202 | } | ||
3285 | 203 | } | ||
3286 | 204 | } else { | ||
3287 | 180 | for_each_compatible_node(dev, NULL, | 205 | for_each_compatible_node(dev, NULL, |
3288 | 181 | "fsl,fman-port-10g-rx-extended-args") { | 206 | "fsl,fman-port-10g-rx-extended-args") { |
3289 | 182 | prop = of_get_property(dev, "cell-index", &lenp); | 207 | prop = of_get_property(dev, "cell-index", &lenp); |
3290 | diff --git a/drivers/bus/dpaa/base/fman/fman_hw.c b/drivers/bus/dpaa/base/fman/fman_hw.c | |||
3291 | index af9bac7..1559d3c 100644 | |||
3292 | --- a/drivers/bus/dpaa/base/fman/fman_hw.c | |||
3293 | +++ b/drivers/bus/dpaa/base/fman/fman_hw.c | |||
3294 | @@ -243,10 +243,11 @@ fman_if_stats_get_all(struct fman_if *p, uint64_t *value, int n) | |||
3295 | 243 | int i; | 243 | int i; |
3296 | 244 | uint64_t base_offset = offsetof(struct memac_regs, reoct_l); | 244 | uint64_t base_offset = offsetof(struct memac_regs, reoct_l); |
3297 | 245 | 245 | ||
3302 | 246 | for (i = 0; i < n; i++) | 246 | for (i = 0; i < n; i++) { |
3303 | 247 | value[i] = (((u64)in_be32((char *)regs + base_offset + 8 * i) | | 247 | uint64_t a = in_be32((char *)regs + base_offset + 8 * i); |
3304 | 248 | (u64)in_be32((char *)regs + base_offset + | 248 | uint64_t b = in_be32((char *)regs + base_offset + 8 * i + 4); |
3305 | 249 | 8 * i + 4)) << 32); | 249 | value[i] = a | b << 32; |
3306 | 250 | } | ||
3307 | 250 | } | 251 | } |
3308 | 251 | 252 | ||
3309 | 252 | void | 253 | void |
3310 | diff --git a/drivers/bus/dpaa/base/qbman/process.c b/drivers/bus/dpaa/base/qbman/process.c | |||
3311 | index 9bc9268..72fa639 100644 | |||
3312 | --- a/drivers/bus/dpaa/base/qbman/process.c | |||
3313 | +++ b/drivers/bus/dpaa/base/qbman/process.c | |||
3314 | @@ -1,7 +1,7 @@ | |||
3315 | 1 | /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) | 1 | /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0) |
3316 | 2 | * | 2 | * |
3317 | 3 | * Copyright 2011-2016 Freescale Semiconductor Inc. | 3 | * Copyright 2011-2016 Freescale Semiconductor Inc. |
3319 | 4 | * Copyright 2017,2020 NXP | 4 | * Copyright 2017,2020,2022,2024 NXP |
3320 | 5 | * | 5 | * |
3321 | 6 | */ | 6 | */ |
3322 | 7 | #include <assert.h> | 7 | #include <assert.h> |
3323 | @@ -27,15 +27,16 @@ static int check_fd(void) | |||
3324 | 27 | { | 27 | { |
3325 | 28 | int ret; | 28 | int ret; |
3326 | 29 | 29 | ||
3327 | 30 | if (fd >= 0) | ||
3328 | 31 | return 0; | ||
3329 | 32 | ret = pthread_mutex_lock(&fd_init_lock); | 30 | ret = pthread_mutex_lock(&fd_init_lock); |
3330 | 33 | assert(!ret); | 31 | assert(!ret); |
3331 | 32 | |||
3332 | 34 | /* check again with the lock held */ | 33 | /* check again with the lock held */ |
3333 | 35 | if (fd < 0) | 34 | if (fd < 0) |
3334 | 36 | fd = open(PROCESS_PATH, O_RDWR); | 35 | fd = open(PROCESS_PATH, O_RDWR); |
3335 | 36 | |||
3336 | 37 | ret = pthread_mutex_unlock(&fd_init_lock); | 37 | ret = pthread_mutex_unlock(&fd_init_lock); |
3337 | 38 | assert(!ret); | 38 | assert(!ret); |
3338 | 39 | |||
3339 | 39 | return (fd >= 0) ? 0 : -ENODEV; | 40 | return (fd >= 0) ? 0 : -ENODEV; |
3340 | 40 | } | 41 | } |
3341 | 41 | 42 | ||
3342 | diff --git a/drivers/bus/dpaa/base/qbman/qman.c b/drivers/bus/dpaa/base/qbman/qman.c | |||
3343 | index aa8da96..098bfd6 100644 | |||
3344 | --- a/drivers/bus/dpaa/base/qbman/qman.c | |||
3345 | +++ b/drivers/bus/dpaa/base/qbman/qman.c | |||
3346 | @@ -294,10 +294,32 @@ static inline void qman_stop_dequeues_ex(struct qman_portal *p) | |||
3347 | 294 | qm_dqrr_set_maxfill(&p->p, 0); | 294 | qm_dqrr_set_maxfill(&p->p, 0); |
3348 | 295 | } | 295 | } |
3349 | 296 | 296 | ||
3350 | 297 | static inline void qm_mr_pvb_update(struct qm_portal *portal) | ||
3351 | 298 | { | ||
3352 | 299 | register struct qm_mr *mr = &portal->mr; | ||
3353 | 300 | const struct qm_mr_entry *res = qm_cl(mr->ring, mr->pi); | ||
3354 | 301 | |||
3355 | 302 | #ifdef RTE_LIBRTE_DPAA_HWDEBUG | ||
3356 | 303 | DPAA_ASSERT(mr->pmode == qm_mr_pvb); | ||
3357 | 304 | #endif | ||
3358 | 305 | /* when accessing 'verb', use __raw_readb() to ensure that compiler | ||
3359 | 306 | * inlining doesn't try to optimise out "excess reads". | ||
3360 | 307 | */ | ||
3361 | 308 | if ((__raw_readb(&res->ern.verb) & QM_MR_VERB_VBIT) == mr->vbit) { | ||
3362 | 309 | mr->pi = (mr->pi + 1) & (QM_MR_SIZE - 1); | ||
3363 | 310 | if (!mr->pi) | ||
3364 | 311 | mr->vbit ^= QM_MR_VERB_VBIT; | ||
3365 | 312 | mr->fill++; | ||
3366 | 313 | res = MR_INC(res); | ||
3367 | 314 | } | ||
3368 | 315 | dcbit_ro(res); | ||
3369 | 316 | } | ||
3370 | 317 | |||
3371 | 297 | static int drain_mr_fqrni(struct qm_portal *p) | 318 | static int drain_mr_fqrni(struct qm_portal *p) |
3372 | 298 | { | 319 | { |
3373 | 299 | const struct qm_mr_entry *msg; | 320 | const struct qm_mr_entry *msg; |
3374 | 300 | loop: | 321 | loop: |
3375 | 322 | qm_mr_pvb_update(p); | ||
3376 | 301 | msg = qm_mr_current(p); | 323 | msg = qm_mr_current(p); |
3377 | 302 | if (!msg) { | 324 | if (!msg) { |
3378 | 303 | /* | 325 | /* |
3379 | @@ -319,6 +341,7 @@ loop: | |||
3380 | 319 | do { | 341 | do { |
3381 | 320 | now = mfatb(); | 342 | now = mfatb(); |
3382 | 321 | } while ((then + 10000) > now); | 343 | } while ((then + 10000) > now); |
3383 | 344 | qm_mr_pvb_update(p); | ||
3384 | 322 | msg = qm_mr_current(p); | 345 | msg = qm_mr_current(p); |
3385 | 323 | if (!msg) | 346 | if (!msg) |
3386 | 324 | return 0; | 347 | return 0; |
3387 | @@ -481,27 +504,6 @@ static inline int qm_mr_init(struct qm_portal *portal, | |||
3388 | 481 | return 0; | 504 | return 0; |
3389 | 482 | } | 505 | } |
3390 | 483 | 506 | ||
3391 | 484 | static inline void qm_mr_pvb_update(struct qm_portal *portal) | ||
3392 | 485 | { | ||
3393 | 486 | register struct qm_mr *mr = &portal->mr; | ||
3394 | 487 | const struct qm_mr_entry *res = qm_cl(mr->ring, mr->pi); | ||
3395 | 488 | |||
3396 | 489 | #ifdef RTE_LIBRTE_DPAA_HWDEBUG | ||
3397 | 490 | DPAA_ASSERT(mr->pmode == qm_mr_pvb); | ||
3398 | 491 | #endif | ||
3399 | 492 | /* when accessing 'verb', use __raw_readb() to ensure that compiler | ||
3400 | 493 | * inlining doesn't try to optimise out "excess reads". | ||
3401 | 494 | */ | ||
3402 | 495 | if ((__raw_readb(&res->ern.verb) & QM_MR_VERB_VBIT) == mr->vbit) { | ||
3403 | 496 | mr->pi = (mr->pi + 1) & (QM_MR_SIZE - 1); | ||
3404 | 497 | if (!mr->pi) | ||
3405 | 498 | mr->vbit ^= QM_MR_VERB_VBIT; | ||
3406 | 499 | mr->fill++; | ||
3407 | 500 | res = MR_INC(res); | ||
3408 | 501 | } | ||
3409 | 502 | dcbit_ro(res); | ||
3410 | 503 | } | ||
3411 | 504 | |||
3412 | 505 | struct qman_portal * | 507 | struct qman_portal * |
3413 | 506 | qman_init_portal(struct qman_portal *portal, | 508 | qman_init_portal(struct qman_portal *portal, |
3414 | 507 | const struct qm_portal_config *c, | 509 | const struct qm_portal_config *c, |
3415 | @@ -1825,6 +1827,8 @@ int qman_retire_fq(struct qman_fq *fq, u32 *flags) | |||
3416 | 1825 | } | 1827 | } |
3417 | 1826 | out: | 1828 | out: |
3418 | 1827 | FQUNLOCK(fq); | 1829 | FQUNLOCK(fq); |
3419 | 1830 | /* Draining FQRNIs, if any */ | ||
3420 | 1831 | drain_mr_fqrni(&p->p); | ||
3421 | 1828 | return rval; | 1832 | return rval; |
3422 | 1829 | } | 1833 | } |
3423 | 1830 | 1834 | ||
3424 | @@ -2165,8 +2169,10 @@ int qman_set_vdq(struct qman_fq *fq, u16 num, uint32_t vdqcr_flags) | |||
3425 | 2165 | 2169 | ||
3426 | 2166 | if (!p->vdqcr_owned) { | 2170 | if (!p->vdqcr_owned) { |
3427 | 2167 | FQLOCK(fq); | 2171 | FQLOCK(fq); |
3429 | 2168 | if (fq_isset(fq, QMAN_FQ_STATE_VDQCR)) | 2172 | if (fq_isset(fq, QMAN_FQ_STATE_VDQCR)) { |
3430 | 2173 | FQUNLOCK(fq); | ||
3431 | 2169 | goto escape; | 2174 | goto escape; |
3432 | 2175 | } | ||
3433 | 2170 | fq_set(fq, QMAN_FQ_STATE_VDQCR); | 2176 | fq_set(fq, QMAN_FQ_STATE_VDQCR); |
3434 | 2171 | FQUNLOCK(fq); | 2177 | FQUNLOCK(fq); |
3435 | 2172 | p->vdqcr_owned = fq; | 2178 | p->vdqcr_owned = fq; |
3436 | @@ -2199,8 +2205,10 @@ int qman_volatile_dequeue(struct qman_fq *fq, u32 flags __maybe_unused, | |||
3437 | 2199 | 2205 | ||
3438 | 2200 | if (!p->vdqcr_owned) { | 2206 | if (!p->vdqcr_owned) { |
3439 | 2201 | FQLOCK(fq); | 2207 | FQLOCK(fq); |
3441 | 2202 | if (fq_isset(fq, QMAN_FQ_STATE_VDQCR)) | 2208 | if (fq_isset(fq, QMAN_FQ_STATE_VDQCR)) { |
3442 | 2209 | FQUNLOCK(fq); | ||
3443 | 2203 | goto escape; | 2210 | goto escape; |
3444 | 2211 | } | ||
3445 | 2204 | fq_set(fq, QMAN_FQ_STATE_VDQCR); | 2212 | fq_set(fq, QMAN_FQ_STATE_VDQCR); |
3446 | 2205 | FQUNLOCK(fq); | 2213 | FQUNLOCK(fq); |
3447 | 2206 | p->vdqcr_owned = fq; | 2214 | p->vdqcr_owned = fq; |
3448 | diff --git a/drivers/bus/dpaa/dpaa_bus.c b/drivers/bus/dpaa/dpaa_bus.c | |||
3449 | index 7fba928..81ac971 100644 | |||
3450 | --- a/drivers/bus/dpaa/dpaa_bus.c | |||
3451 | +++ b/drivers/bus/dpaa/dpaa_bus.c | |||
3452 | @@ -178,6 +178,7 @@ dpaa_create_device_list(void) | |||
3453 | 178 | if (dev->intr_handle == NULL) { | 178 | if (dev->intr_handle == NULL) { |
3454 | 179 | DPAA_BUS_LOG(ERR, "Failed to allocate intr handle"); | 179 | DPAA_BUS_LOG(ERR, "Failed to allocate intr handle"); |
3455 | 180 | ret = -ENOMEM; | 180 | ret = -ENOMEM; |
3456 | 181 | free(dev); | ||
3457 | 181 | goto cleanup; | 182 | goto cleanup; |
3458 | 182 | } | 183 | } |
3459 | 183 | 184 | ||
3460 | @@ -211,7 +212,7 @@ dpaa_create_device_list(void) | |||
3461 | 211 | 212 | ||
3462 | 212 | if (dpaa_sec_available()) { | 213 | if (dpaa_sec_available()) { |
3463 | 213 | DPAA_BUS_LOG(INFO, "DPAA SEC devices are not available"); | 214 | DPAA_BUS_LOG(INFO, "DPAA SEC devices are not available"); |
3465 | 214 | return 0; | 215 | goto qdma_dpaa; |
3466 | 215 | } | 216 | } |
3467 | 216 | 217 | ||
3468 | 217 | /* Creating SEC Devices */ | 218 | /* Creating SEC Devices */ |
3469 | @@ -229,6 +230,7 @@ dpaa_create_device_list(void) | |||
3470 | 229 | if (dev->intr_handle == NULL) { | 230 | if (dev->intr_handle == NULL) { |
3471 | 230 | DPAA_BUS_LOG(ERR, "Failed to allocate intr handle"); | 231 | DPAA_BUS_LOG(ERR, "Failed to allocate intr handle"); |
3472 | 231 | ret = -ENOMEM; | 232 | ret = -ENOMEM; |
3473 | 233 | free(dev); | ||
3474 | 232 | goto cleanup; | 234 | goto cleanup; |
3475 | 233 | } | 235 | } |
3476 | 234 | 236 | ||
3477 | @@ -250,6 +252,7 @@ dpaa_create_device_list(void) | |||
3478 | 250 | 252 | ||
3479 | 251 | rte_dpaa_bus.device_count += i; | 253 | rte_dpaa_bus.device_count += i; |
3480 | 252 | 254 | ||
3481 | 255 | qdma_dpaa: | ||
3482 | 253 | /* Creating QDMA Device */ | 256 | /* Creating QDMA Device */ |
3483 | 254 | for (i = 0; i < RTE_DPAA_QDMA_DEVICES; i++) { | 257 | for (i = 0; i < RTE_DPAA_QDMA_DEVICES; i++) { |
3484 | 255 | dev = calloc(1, sizeof(struct rte_dpaa_device)); | 258 | dev = calloc(1, sizeof(struct rte_dpaa_device)); |
3485 | diff --git a/drivers/bus/fslmc/qbman/qbman_debug.c b/drivers/bus/fslmc/qbman/qbman_debug.c | |||
3486 | index eea0698..0e471ec 100644 | |||
3487 | --- a/drivers/bus/fslmc/qbman/qbman_debug.c | |||
3488 | +++ b/drivers/bus/fslmc/qbman/qbman_debug.c | |||
3489 | @@ -1,6 +1,6 @@ | |||
3490 | 1 | /* SPDX-License-Identifier: BSD-3-Clause | 1 | /* SPDX-License-Identifier: BSD-3-Clause |
3491 | 2 | * Copyright (C) 2015 Freescale Semiconductor, Inc. | 2 | * Copyright (C) 2015 Freescale Semiconductor, Inc. |
3493 | 3 | * Copyright 2018-2020 NXP | 3 | * Copyright 2018-2020,2022 NXP |
3494 | 4 | */ | 4 | */ |
3495 | 5 | 5 | ||
3496 | 6 | #include "compat.h" | 6 | #include "compat.h" |
3497 | @@ -37,6 +37,7 @@ int qbman_bp_query(struct qbman_swp *s, uint32_t bpid, | |||
3498 | 37 | struct qbman_bp_query_rslt *r) | 37 | struct qbman_bp_query_rslt *r) |
3499 | 38 | { | 38 | { |
3500 | 39 | struct qbman_bp_query_desc *p; | 39 | struct qbman_bp_query_desc *p; |
3501 | 40 | struct qbman_bp_query_rslt *bp_query_rslt; | ||
3502 | 40 | 41 | ||
3503 | 41 | /* Start the management command */ | 42 | /* Start the management command */ |
3504 | 42 | p = (struct qbman_bp_query_desc *)qbman_swp_mc_start(s); | 43 | p = (struct qbman_bp_query_desc *)qbman_swp_mc_start(s); |
3505 | @@ -47,14 +48,16 @@ int qbman_bp_query(struct qbman_swp *s, uint32_t bpid, | |||
3506 | 47 | p->bpid = bpid; | 48 | p->bpid = bpid; |
3507 | 48 | 49 | ||
3508 | 49 | /* Complete the management command */ | 50 | /* Complete the management command */ |
3512 | 50 | *r = *(struct qbman_bp_query_rslt *)qbman_swp_mc_complete(s, p, | 51 | bp_query_rslt = (struct qbman_bp_query_rslt *)qbman_swp_mc_complete(s, |
3513 | 51 | QBMAN_BP_QUERY); | 52 | p, QBMAN_BP_QUERY); |
3514 | 52 | if (!r) { | 53 | if (!bp_query_rslt) { |
3515 | 53 | pr_err("qbman: Query BPID %d failed, no response\n", | 54 | pr_err("qbman: Query BPID %d failed, no response\n", |
3516 | 54 | bpid); | 55 | bpid); |
3517 | 55 | return -EIO; | 56 | return -EIO; |
3518 | 56 | } | 57 | } |
3519 | 57 | 58 | ||
3520 | 59 | *r = *bp_query_rslt; | ||
3521 | 60 | |||
3522 | 58 | /* Decode the outcome */ | 61 | /* Decode the outcome */ |
3523 | 59 | QBMAN_BUG_ON((r->verb & QBMAN_RESPONSE_VERB_MASK) != QBMAN_BP_QUERY); | 62 | QBMAN_BUG_ON((r->verb & QBMAN_RESPONSE_VERB_MASK) != QBMAN_BP_QUERY); |
3524 | 60 | 63 | ||
3525 | @@ -202,20 +205,23 @@ int qbman_fq_query(struct qbman_swp *s, uint32_t fqid, | |||
3526 | 202 | struct qbman_fq_query_rslt *r) | 205 | struct qbman_fq_query_rslt *r) |
3527 | 203 | { | 206 | { |
3528 | 204 | struct qbman_fq_query_desc *p; | 207 | struct qbman_fq_query_desc *p; |
3529 | 208 | struct qbman_fq_query_rslt *fq_query_rslt; | ||
3530 | 205 | 209 | ||
3531 | 206 | p = (struct qbman_fq_query_desc *)qbman_swp_mc_start(s); | 210 | p = (struct qbman_fq_query_desc *)qbman_swp_mc_start(s); |
3532 | 207 | if (!p) | 211 | if (!p) |
3533 | 208 | return -EBUSY; | 212 | return -EBUSY; |
3534 | 209 | 213 | ||
3535 | 210 | p->fqid = fqid; | 214 | p->fqid = fqid; |
3539 | 211 | *r = *(struct qbman_fq_query_rslt *)qbman_swp_mc_complete(s, p, | 215 | fq_query_rslt = (struct qbman_fq_query_rslt *)qbman_swp_mc_complete(s, |
3540 | 212 | QBMAN_FQ_QUERY); | 216 | p, QBMAN_FQ_QUERY); |
3541 | 213 | if (!r) { | 217 | if (!fq_query_rslt) { |
3542 | 214 | pr_err("qbman: Query FQID %d failed, no response\n", | 218 | pr_err("qbman: Query FQID %d failed, no response\n", |
3543 | 215 | fqid); | 219 | fqid); |
3544 | 216 | return -EIO; | 220 | return -EIO; |
3545 | 217 | } | 221 | } |
3546 | 218 | 222 | ||
3547 | 223 | *r = *fq_query_rslt; | ||
3548 | 224 | |||
3549 | 219 | /* Decode the outcome */ | 225 | /* Decode the outcome */ |
3550 | 220 | QBMAN_BUG_ON((r->verb & QBMAN_RESPONSE_VERB_MASK) != QBMAN_FQ_QUERY); | 226 | QBMAN_BUG_ON((r->verb & QBMAN_RESPONSE_VERB_MASK) != QBMAN_FQ_QUERY); |
3551 | 221 | 227 | ||
3552 | @@ -398,20 +404,23 @@ int qbman_cgr_query(struct qbman_swp *s, uint32_t cgid, | |||
3553 | 398 | struct qbman_cgr_query_rslt *r) | 404 | struct qbman_cgr_query_rslt *r) |
3554 | 399 | { | 405 | { |
3555 | 400 | struct qbman_cgr_query_desc *p; | 406 | struct qbman_cgr_query_desc *p; |
3556 | 407 | struct qbman_cgr_query_rslt *cgr_query_rslt; | ||
3557 | 401 | 408 | ||
3558 | 402 | p = (struct qbman_cgr_query_desc *)qbman_swp_mc_start(s); | 409 | p = (struct qbman_cgr_query_desc *)qbman_swp_mc_start(s); |
3559 | 403 | if (!p) | 410 | if (!p) |
3560 | 404 | return -EBUSY; | 411 | return -EBUSY; |
3561 | 405 | 412 | ||
3562 | 406 | p->cgid = cgid; | 413 | p->cgid = cgid; |
3566 | 407 | *r = *(struct qbman_cgr_query_rslt *)qbman_swp_mc_complete(s, p, | 414 | cgr_query_rslt = (struct qbman_cgr_query_rslt *)qbman_swp_mc_complete(s, |
3567 | 408 | QBMAN_CGR_QUERY); | 415 | p, QBMAN_CGR_QUERY); |
3568 | 409 | if (!r) { | 416 | if (!cgr_query_rslt) { |
3569 | 410 | pr_err("qbman: Query CGID %d failed, no response\n", | 417 | pr_err("qbman: Query CGID %d failed, no response\n", |
3570 | 411 | cgid); | 418 | cgid); |
3571 | 412 | return -EIO; | 419 | return -EIO; |
3572 | 413 | } | 420 | } |
3573 | 414 | 421 | ||
3574 | 422 | *r = *cgr_query_rslt; | ||
3575 | 423 | |||
3576 | 415 | /* Decode the outcome */ | 424 | /* Decode the outcome */ |
3577 | 416 | QBMAN_BUG_ON((r->verb & QBMAN_RESPONSE_VERB_MASK) != QBMAN_CGR_QUERY); | 425 | QBMAN_BUG_ON((r->verb & QBMAN_RESPONSE_VERB_MASK) != QBMAN_CGR_QUERY); |
3578 | 417 | 426 | ||
3579 | @@ -473,20 +482,23 @@ int qbman_cgr_wred_query(struct qbman_swp *s, uint32_t cgid, | |||
3580 | 473 | struct qbman_wred_query_rslt *r) | 482 | struct qbman_wred_query_rslt *r) |
3581 | 474 | { | 483 | { |
3582 | 475 | struct qbman_cgr_query_desc *p; | 484 | struct qbman_cgr_query_desc *p; |
3583 | 485 | struct qbman_wred_query_rslt *wred_query_rslt; | ||
3584 | 476 | 486 | ||
3585 | 477 | p = (struct qbman_cgr_query_desc *)qbman_swp_mc_start(s); | 487 | p = (struct qbman_cgr_query_desc *)qbman_swp_mc_start(s); |
3586 | 478 | if (!p) | 488 | if (!p) |
3587 | 479 | return -EBUSY; | 489 | return -EBUSY; |
3588 | 480 | 490 | ||
3589 | 481 | p->cgid = cgid; | 491 | p->cgid = cgid; |
3593 | 482 | *r = *(struct qbman_wred_query_rslt *)qbman_swp_mc_complete(s, p, | 492 | wred_query_rslt = (struct qbman_wred_query_rslt *)qbman_swp_mc_complete( |
3594 | 483 | QBMAN_WRED_QUERY); | 493 | s, p, QBMAN_WRED_QUERY); |
3595 | 484 | if (!r) { | 494 | if (!wred_query_rslt) { |
3596 | 485 | pr_err("qbman: Query CGID WRED %d failed, no response\n", | 495 | pr_err("qbman: Query CGID WRED %d failed, no response\n", |
3597 | 486 | cgid); | 496 | cgid); |
3598 | 487 | return -EIO; | 497 | return -EIO; |
3599 | 488 | } | 498 | } |
3600 | 489 | 499 | ||
3601 | 500 | *r = *wred_query_rslt; | ||
3602 | 501 | |||
3603 | 490 | /* Decode the outcome */ | 502 | /* Decode the outcome */ |
3604 | 491 | QBMAN_BUG_ON((r->verb & QBMAN_RESPONSE_VERB_MASK) != QBMAN_WRED_QUERY); | 503 | QBMAN_BUG_ON((r->verb & QBMAN_RESPONSE_VERB_MASK) != QBMAN_WRED_QUERY); |
3605 | 492 | 504 | ||
3606 | @@ -527,7 +539,7 @@ void qbman_cgr_attr_wred_dp_decompose(uint32_t dp, uint64_t *minth, | |||
3607 | 527 | if (mn == 0) | 539 | if (mn == 0) |
3608 | 528 | *maxth = ma; | 540 | *maxth = ma; |
3609 | 529 | else | 541 | else |
3611 | 530 | *maxth = ((ma+256) * (1<<(mn-1))); | 542 | *maxth = ((uint64_t)(ma+256) * (1<<(mn-1))); |
3612 | 531 | 543 | ||
3613 | 532 | if (step_s == 0) | 544 | if (step_s == 0) |
3614 | 533 | *minth = *maxth - step_i; | 545 | *minth = *maxth - step_i; |
3615 | @@ -630,6 +642,7 @@ int qbman_wqchan_query(struct qbman_swp *s, uint16_t chanid, | |||
3616 | 630 | struct qbman_wqchan_query_rslt *r) | 642 | struct qbman_wqchan_query_rslt *r) |
3617 | 631 | { | 643 | { |
3618 | 632 | struct qbman_wqchan_query_desc *p; | 644 | struct qbman_wqchan_query_desc *p; |
3619 | 645 | struct qbman_wqchan_query_rslt *wqchan_query_rslt; | ||
3620 | 633 | 646 | ||
3621 | 634 | /* Start the management command */ | 647 | /* Start the management command */ |
3622 | 635 | p = (struct qbman_wqchan_query_desc *)qbman_swp_mc_start(s); | 648 | p = (struct qbman_wqchan_query_desc *)qbman_swp_mc_start(s); |
3623 | @@ -640,14 +653,16 @@ int qbman_wqchan_query(struct qbman_swp *s, uint16_t chanid, | |||
3624 | 640 | p->chid = chanid; | 653 | p->chid = chanid; |
3625 | 641 | 654 | ||
3626 | 642 | /* Complete the management command */ | 655 | /* Complete the management command */ |
3630 | 643 | *r = *(struct qbman_wqchan_query_rslt *)qbman_swp_mc_complete(s, p, | 656 | wqchan_query_rslt = (struct qbman_wqchan_query_rslt *)qbman_swp_mc_complete( |
3631 | 644 | QBMAN_WQ_QUERY); | 657 | s, p, QBMAN_WQ_QUERY); |
3632 | 645 | if (!r) { | 658 | if (!wqchan_query_rslt) { |
3633 | 646 | pr_err("qbman: Query WQ Channel %d failed, no response\n", | 659 | pr_err("qbman: Query WQ Channel %d failed, no response\n", |
3634 | 647 | chanid); | 660 | chanid); |
3635 | 648 | return -EIO; | 661 | return -EIO; |
3636 | 649 | } | 662 | } |
3637 | 650 | 663 | ||
3638 | 664 | *r = *wqchan_query_rslt; | ||
3639 | 665 | |||
3640 | 651 | /* Decode the outcome */ | 666 | /* Decode the outcome */ |
3641 | 652 | QBMAN_BUG_ON((r->verb & QBMAN_RESPONSE_VERB_MASK) != QBMAN_WQ_QUERY); | 667 | QBMAN_BUG_ON((r->verb & QBMAN_RESPONSE_VERB_MASK) != QBMAN_WQ_QUERY); |
3642 | 653 | 668 | ||
3643 | diff --git a/drivers/bus/pci/linux/pci_uio.c b/drivers/bus/pci/linux/pci_uio.c | |||
3644 | index d52125e..81a1ed6 100644 | |||
3645 | --- a/drivers/bus/pci/linux/pci_uio.c | |||
3646 | +++ b/drivers/bus/pci/linux/pci_uio.c | |||
3647 | @@ -245,7 +245,7 @@ pci_uio_alloc_resource(struct rte_pci_device *dev, | |||
3648 | 245 | } | 245 | } |
3649 | 246 | snprintf(devname, sizeof(devname), "/dev/uio%u", uio_num); | 246 | snprintf(devname, sizeof(devname), "/dev/uio%u", uio_num); |
3650 | 247 | 247 | ||
3652 | 248 | /* save fd if in primary process */ | 248 | /* save fd */ |
3653 | 249 | fd = open(devname, O_RDWR); | 249 | fd = open(devname, O_RDWR); |
3654 | 250 | if (fd < 0) { | 250 | if (fd < 0) { |
3655 | 251 | RTE_LOG(ERR, EAL, "Cannot open %s: %s\n", | 251 | RTE_LOG(ERR, EAL, "Cannot open %s: %s\n", |
3656 | @@ -283,6 +283,9 @@ pci_uio_alloc_resource(struct rte_pci_device *dev, | |||
3657 | 283 | } | 283 | } |
3658 | 284 | } | 284 | } |
3659 | 285 | 285 | ||
3660 | 286 | if (rte_eal_process_type() != RTE_PROC_PRIMARY) | ||
3661 | 287 | return 0; | ||
3662 | 288 | |||
3663 | 286 | /* allocate the mapping details for secondary processes*/ | 289 | /* allocate the mapping details for secondary processes*/ |
3664 | 287 | *uio_res = rte_zmalloc("UIO_RES", sizeof(**uio_res), 0); | 290 | *uio_res = rte_zmalloc("UIO_RES", sizeof(**uio_res), 0); |
3665 | 288 | if (*uio_res == NULL) { | 291 | if (*uio_res == NULL) { |
3666 | diff --git a/drivers/bus/pci/linux/pci_vfio.c b/drivers/bus/pci/linux/pci_vfio.c | |||
3667 | index 822aa41..847b95f 100644 | |||
3668 | --- a/drivers/bus/pci/linux/pci_vfio.c | |||
3669 | +++ b/drivers/bus/pci/linux/pci_vfio.c | |||
3670 | @@ -53,7 +53,7 @@ pci_vfio_read_config(const struct rte_intr_handle *intr_handle, | |||
3671 | 53 | if (vfio_dev_fd < 0) | 53 | if (vfio_dev_fd < 0) |
3672 | 54 | return -1; | 54 | return -1; |
3673 | 55 | 55 | ||
3675 | 56 | return pread64(vfio_dev_fd, buf, len, | 56 | return pread(vfio_dev_fd, buf, len, |
3676 | 57 | VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) + offs); | 57 | VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) + offs); |
3677 | 58 | } | 58 | } |
3678 | 59 | 59 | ||
3679 | @@ -66,7 +66,7 @@ pci_vfio_write_config(const struct rte_intr_handle *intr_handle, | |||
3680 | 66 | if (vfio_dev_fd < 0) | 66 | if (vfio_dev_fd < 0) |
3681 | 67 | return -1; | 67 | return -1; |
3682 | 68 | 68 | ||
3684 | 69 | return pwrite64(vfio_dev_fd, buf, len, | 69 | return pwrite(vfio_dev_fd, buf, len, |
3685 | 70 | VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) + offs); | 70 | VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) + offs); |
3686 | 71 | } | 71 | } |
3687 | 72 | 72 | ||
3688 | @@ -80,7 +80,7 @@ pci_vfio_get_msix_bar(int fd, struct pci_msix_table *msix_table) | |||
3689 | 80 | uint8_t cap_id, cap_offset; | 80 | uint8_t cap_id, cap_offset; |
3690 | 81 | 81 | ||
3691 | 82 | /* read PCI capability pointer from config space */ | 82 | /* read PCI capability pointer from config space */ |
3693 | 83 | ret = pread64(fd, ®, sizeof(reg), | 83 | ret = pread(fd, ®, sizeof(reg), |
3694 | 84 | VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) + | 84 | VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) + |
3695 | 85 | PCI_CAPABILITY_LIST); | 85 | PCI_CAPABILITY_LIST); |
3696 | 86 | if (ret != sizeof(reg)) { | 86 | if (ret != sizeof(reg)) { |
3697 | @@ -95,7 +95,7 @@ pci_vfio_get_msix_bar(int fd, struct pci_msix_table *msix_table) | |||
3698 | 95 | while (cap_offset) { | 95 | while (cap_offset) { |
3699 | 96 | 96 | ||
3700 | 97 | /* read PCI capability ID */ | 97 | /* read PCI capability ID */ |
3702 | 98 | ret = pread64(fd, ®, sizeof(reg), | 98 | ret = pread(fd, ®, sizeof(reg), |
3703 | 99 | VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) + | 99 | VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) + |
3704 | 100 | cap_offset); | 100 | cap_offset); |
3705 | 101 | if (ret != sizeof(reg)) { | 101 | if (ret != sizeof(reg)) { |
3706 | @@ -109,7 +109,7 @@ pci_vfio_get_msix_bar(int fd, struct pci_msix_table *msix_table) | |||
3707 | 109 | 109 | ||
3708 | 110 | /* if we haven't reached MSI-X, check next capability */ | 110 | /* if we haven't reached MSI-X, check next capability */ |
3709 | 111 | if (cap_id != PCI_CAP_ID_MSIX) { | 111 | if (cap_id != PCI_CAP_ID_MSIX) { |
3711 | 112 | ret = pread64(fd, ®, sizeof(reg), | 112 | ret = pread(fd, ®, sizeof(reg), |
3712 | 113 | VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) + | 113 | VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) + |
3713 | 114 | cap_offset); | 114 | cap_offset); |
3714 | 115 | if (ret != sizeof(reg)) { | 115 | if (ret != sizeof(reg)) { |
3715 | @@ -126,7 +126,7 @@ pci_vfio_get_msix_bar(int fd, struct pci_msix_table *msix_table) | |||
3716 | 126 | /* else, read table offset */ | 126 | /* else, read table offset */ |
3717 | 127 | else { | 127 | else { |
3718 | 128 | /* table offset resides in the next 4 bytes */ | 128 | /* table offset resides in the next 4 bytes */ |
3720 | 129 | ret = pread64(fd, ®, sizeof(reg), | 129 | ret = pread(fd, ®, sizeof(reg), |
3721 | 130 | VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) + | 130 | VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) + |
3722 | 131 | cap_offset + 4); | 131 | cap_offset + 4); |
3723 | 132 | if (ret != sizeof(reg)) { | 132 | if (ret != sizeof(reg)) { |
3724 | @@ -135,7 +135,7 @@ pci_vfio_get_msix_bar(int fd, struct pci_msix_table *msix_table) | |||
3725 | 135 | return -1; | 135 | return -1; |
3726 | 136 | } | 136 | } |
3727 | 137 | 137 | ||
3729 | 138 | ret = pread64(fd, &flags, sizeof(flags), | 138 | ret = pread(fd, &flags, sizeof(flags), |
3730 | 139 | VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) + | 139 | VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) + |
3731 | 140 | cap_offset + 2); | 140 | cap_offset + 2); |
3732 | 141 | if (ret != sizeof(flags)) { | 141 | if (ret != sizeof(flags)) { |
3733 | @@ -162,7 +162,7 @@ pci_vfio_enable_bus_memory(int dev_fd) | |||
3734 | 162 | uint16_t cmd; | 162 | uint16_t cmd; |
3735 | 163 | int ret; | 163 | int ret; |
3736 | 164 | 164 | ||
3738 | 165 | ret = pread64(dev_fd, &cmd, sizeof(cmd), | 165 | ret = pread(dev_fd, &cmd, sizeof(cmd), |
3739 | 166 | VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) + | 166 | VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) + |
3740 | 167 | PCI_COMMAND); | 167 | PCI_COMMAND); |
3741 | 168 | 168 | ||
3742 | @@ -175,7 +175,7 @@ pci_vfio_enable_bus_memory(int dev_fd) | |||
3743 | 175 | return 0; | 175 | return 0; |
3744 | 176 | 176 | ||
3745 | 177 | cmd |= PCI_COMMAND_MEMORY; | 177 | cmd |= PCI_COMMAND_MEMORY; |
3747 | 178 | ret = pwrite64(dev_fd, &cmd, sizeof(cmd), | 178 | ret = pwrite(dev_fd, &cmd, sizeof(cmd), |
3748 | 179 | VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) + | 179 | VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) + |
3749 | 180 | PCI_COMMAND); | 180 | PCI_COMMAND); |
3750 | 181 | 181 | ||
3751 | @@ -194,7 +194,7 @@ pci_vfio_set_bus_master(int dev_fd, bool op) | |||
3752 | 194 | uint16_t reg; | 194 | uint16_t reg; |
3753 | 195 | int ret; | 195 | int ret; |
3754 | 196 | 196 | ||
3756 | 197 | ret = pread64(dev_fd, ®, sizeof(reg), | 197 | ret = pread(dev_fd, ®, sizeof(reg), |
3757 | 198 | VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) + | 198 | VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) + |
3758 | 199 | PCI_COMMAND); | 199 | PCI_COMMAND); |
3759 | 200 | if (ret != sizeof(reg)) { | 200 | if (ret != sizeof(reg)) { |
3760 | @@ -208,7 +208,7 @@ pci_vfio_set_bus_master(int dev_fd, bool op) | |||
3761 | 208 | else | 208 | else |
3762 | 209 | reg &= ~(PCI_COMMAND_MASTER); | 209 | reg &= ~(PCI_COMMAND_MASTER); |
3763 | 210 | 210 | ||
3765 | 211 | ret = pwrite64(dev_fd, ®, sizeof(reg), | 211 | ret = pwrite(dev_fd, ®, sizeof(reg), |
3766 | 212 | VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) + | 212 | VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) + |
3767 | 213 | PCI_COMMAND); | 213 | PCI_COMMAND); |
3768 | 214 | 214 | ||
3769 | @@ -464,7 +464,7 @@ pci_vfio_is_ioport_bar(int vfio_dev_fd, int bar_index) | |||
3770 | 464 | uint32_t ioport_bar; | 464 | uint32_t ioport_bar; |
3771 | 465 | int ret; | 465 | int ret; |
3772 | 466 | 466 | ||
3774 | 467 | ret = pread64(vfio_dev_fd, &ioport_bar, sizeof(ioport_bar), | 467 | ret = pread(vfio_dev_fd, &ioport_bar, sizeof(ioport_bar), |
3775 | 468 | VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) | 468 | VFIO_GET_REGION_ADDR(VFIO_PCI_CONFIG_REGION_INDEX) |
3776 | 469 | + PCI_BASE_ADDRESS_0 + bar_index*4); | 469 | + PCI_BASE_ADDRESS_0 + bar_index*4); |
3777 | 470 | if (ret != sizeof(ioport_bar)) { | 470 | if (ret != sizeof(ioport_bar)) { |
3778 | @@ -1133,7 +1133,7 @@ pci_vfio_ioport_read(struct rte_pci_ioport *p, | |||
3779 | 1133 | if (vfio_dev_fd < 0) | 1133 | if (vfio_dev_fd < 0) |
3780 | 1134 | return; | 1134 | return; |
3781 | 1135 | 1135 | ||
3783 | 1136 | if (pread64(vfio_dev_fd, data, | 1136 | if (pread(vfio_dev_fd, data, |
3784 | 1137 | len, p->base + offset) <= 0) | 1137 | len, p->base + offset) <= 0) |
3785 | 1138 | RTE_LOG(ERR, EAL, | 1138 | RTE_LOG(ERR, EAL, |
3786 | 1139 | "Can't read from PCI bar (%" PRIu64 ") : offset (%x)\n", | 1139 | "Can't read from PCI bar (%" PRIu64 ") : offset (%x)\n", |
3787 | @@ -1150,7 +1150,7 @@ pci_vfio_ioport_write(struct rte_pci_ioport *p, | |||
3788 | 1150 | if (vfio_dev_fd < 0) | 1150 | if (vfio_dev_fd < 0) |
3789 | 1151 | return; | 1151 | return; |
3790 | 1152 | 1152 | ||
3792 | 1153 | if (pwrite64(vfio_dev_fd, data, | 1153 | if (pwrite(vfio_dev_fd, data, |
3793 | 1154 | len, p->base + offset) <= 0) | 1154 | len, p->base + offset) <= 0) |
3794 | 1155 | RTE_LOG(ERR, EAL, | 1155 | RTE_LOG(ERR, EAL, |
3795 | 1156 | "Can't write to PCI bar (%" PRIu64 ") : offset (%x)\n", | 1156 | "Can't write to PCI bar (%" PRIu64 ") : offset (%x)\n", |
3796 | diff --git a/drivers/bus/pci/pci_common_uio.c b/drivers/bus/pci/pci_common_uio.c | |||
3797 | index 76c661f..a06378b 100644 | |||
3798 | --- a/drivers/bus/pci/pci_common_uio.c | |||
3799 | +++ b/drivers/bus/pci/pci_common_uio.c | |||
3800 | @@ -26,7 +26,7 @@ EAL_REGISTER_TAILQ(rte_uio_tailq) | |||
3801 | 26 | static int | 26 | static int |
3802 | 27 | pci_uio_map_secondary(struct rte_pci_device *dev) | 27 | pci_uio_map_secondary(struct rte_pci_device *dev) |
3803 | 28 | { | 28 | { |
3805 | 29 | int fd, i, j; | 29 | int fd, i = 0, j, res_idx; |
3806 | 30 | struct mapped_pci_resource *uio_res; | 30 | struct mapped_pci_resource *uio_res; |
3807 | 31 | struct mapped_pci_res_list *uio_res_list = | 31 | struct mapped_pci_res_list *uio_res_list = |
3808 | 32 | RTE_TAILQ_CAST(rte_uio_tailq.head, mapped_pci_res_list); | 32 | RTE_TAILQ_CAST(rte_uio_tailq.head, mapped_pci_res_list); |
3809 | @@ -37,7 +37,15 @@ pci_uio_map_secondary(struct rte_pci_device *dev) | |||
3810 | 37 | if (rte_pci_addr_cmp(&uio_res->pci_addr, &dev->addr)) | 37 | if (rte_pci_addr_cmp(&uio_res->pci_addr, &dev->addr)) |
3811 | 38 | continue; | 38 | continue; |
3812 | 39 | 39 | ||
3814 | 40 | for (i = 0; i != uio_res->nb_maps; i++) { | 40 | /* Map all BARs */ |
3815 | 41 | for (res_idx = 0; res_idx != PCI_MAX_RESOURCE; res_idx++) { | ||
3816 | 42 | /* skip empty BAR */ | ||
3817 | 43 | if (dev->mem_resource[res_idx].phys_addr == 0) | ||
3818 | 44 | continue; | ||
3819 | 45 | |||
3820 | 46 | if (i >= uio_res->nb_maps) | ||
3821 | 47 | return -1; | ||
3822 | 48 | |||
3823 | 41 | /* | 49 | /* |
3824 | 42 | * open devname, to mmap it | 50 | * open devname, to mmap it |
3825 | 43 | */ | 51 | */ |
3826 | @@ -71,7 +79,9 @@ pci_uio_map_secondary(struct rte_pci_device *dev) | |||
3827 | 71 | } | 79 | } |
3828 | 72 | return -1; | 80 | return -1; |
3829 | 73 | } | 81 | } |
3831 | 74 | dev->mem_resource[i].addr = mapaddr; | 82 | dev->mem_resource[res_idx].addr = mapaddr; |
3832 | 83 | |||
3833 | 84 | i++; | ||
3834 | 75 | } | 85 | } |
3835 | 76 | return 0; | 86 | return 0; |
3836 | 77 | } | 87 | } |
3837 | @@ -96,15 +106,15 @@ pci_uio_map_resource(struct rte_pci_device *dev) | |||
3838 | 96 | if (rte_intr_dev_fd_set(dev->intr_handle, -1)) | 106 | if (rte_intr_dev_fd_set(dev->intr_handle, -1)) |
3839 | 97 | return -1; | 107 | return -1; |
3840 | 98 | 108 | ||
3841 | 99 | /* secondary processes - use already recorded details */ | ||
3842 | 100 | if (rte_eal_process_type() != RTE_PROC_PRIMARY) | ||
3843 | 101 | return pci_uio_map_secondary(dev); | ||
3844 | 102 | |||
3845 | 103 | /* allocate uio resource */ | 109 | /* allocate uio resource */ |
3846 | 104 | ret = pci_uio_alloc_resource(dev, &uio_res); | 110 | ret = pci_uio_alloc_resource(dev, &uio_res); |
3847 | 105 | if (ret) | 111 | if (ret) |
3848 | 106 | return ret; | 112 | return ret; |
3849 | 107 | 113 | ||
3850 | 114 | /* secondary processes - use already recorded details */ | ||
3851 | 115 | if (rte_eal_process_type() != RTE_PROC_PRIMARY) | ||
3852 | 116 | return pci_uio_map_secondary(dev); | ||
3853 | 117 | |||
3854 | 108 | /* Map all BARs */ | 118 | /* Map all BARs */ |
3855 | 109 | for (i = 0; i != PCI_MAX_RESOURCE; i++) { | 119 | for (i = 0; i != PCI_MAX_RESOURCE; i++) { |
3856 | 110 | /* skip empty BAR */ | 120 | /* skip empty BAR */ |
3857 | @@ -220,6 +230,18 @@ pci_uio_unmap_resource(struct rte_pci_device *dev) | |||
3858 | 220 | if (uio_res == NULL) | 230 | if (uio_res == NULL) |
3859 | 221 | return; | 231 | return; |
3860 | 222 | 232 | ||
3861 | 233 | /* close fd */ | ||
3862 | 234 | if (rte_intr_fd_get(dev->intr_handle) >= 0) | ||
3863 | 235 | close(rte_intr_fd_get(dev->intr_handle)); | ||
3864 | 236 | uio_cfg_fd = rte_intr_dev_fd_get(dev->intr_handle); | ||
3865 | 237 | if (uio_cfg_fd >= 0) { | ||
3866 | 238 | close(uio_cfg_fd); | ||
3867 | 239 | rte_intr_dev_fd_set(dev->intr_handle, -1); | ||
3868 | 240 | } | ||
3869 | 241 | |||
3870 | 242 | rte_intr_fd_set(dev->intr_handle, -1); | ||
3871 | 243 | rte_intr_type_set(dev->intr_handle, RTE_INTR_HANDLE_UNKNOWN); | ||
3872 | 244 | |||
3873 | 223 | /* secondary processes - just free maps */ | 245 | /* secondary processes - just free maps */ |
3874 | 224 | if (rte_eal_process_type() != RTE_PROC_PRIMARY) | 246 | if (rte_eal_process_type() != RTE_PROC_PRIMARY) |
3875 | 225 | return pci_uio_unmap(uio_res); | 247 | return pci_uio_unmap(uio_res); |
3876 | @@ -231,16 +253,4 @@ pci_uio_unmap_resource(struct rte_pci_device *dev) | |||
3877 | 231 | 253 | ||
3878 | 232 | /* free uio resource */ | 254 | /* free uio resource */ |
3879 | 233 | rte_free(uio_res); | 255 | rte_free(uio_res); |
3880 | 234 | |||
3881 | 235 | /* close fd if in primary process */ | ||
3882 | 236 | if (rte_intr_fd_get(dev->intr_handle) >= 0) | ||
3883 | 237 | close(rte_intr_fd_get(dev->intr_handle)); | ||
3884 | 238 | uio_cfg_fd = rte_intr_dev_fd_get(dev->intr_handle); | ||
3885 | 239 | if (uio_cfg_fd >= 0) { | ||
3886 | 240 | close(uio_cfg_fd); | ||
3887 | 241 | rte_intr_dev_fd_set(dev->intr_handle, -1); | ||
3888 | 242 | } | ||
3889 | 243 | |||
3890 | 244 | rte_intr_fd_set(dev->intr_handle, -1); | ||
3891 | 245 | rte_intr_type_set(dev->intr_handle, RTE_INTR_HANDLE_UNKNOWN); | ||
3892 | 246 | } | 256 | } |
3893 | diff --git a/drivers/bus/vdev/vdev.c b/drivers/bus/vdev/vdev.c | |||
3894 | index 272ea70..c040a6d 100644 | |||
3895 | --- a/drivers/bus/vdev/vdev.c | |||
3896 | +++ b/drivers/bus/vdev/vdev.c | |||
3897 | @@ -289,7 +289,6 @@ insert_vdev(const char *name, const char *args, | |||
3898 | 289 | 289 | ||
3899 | 290 | dev->device.bus = &rte_vdev_bus; | 290 | dev->device.bus = &rte_vdev_bus; |
3900 | 291 | dev->device.numa_node = SOCKET_ID_ANY; | 291 | dev->device.numa_node = SOCKET_ID_ANY; |
3901 | 292 | dev->device.name = devargs->name; | ||
3902 | 293 | 292 | ||
3903 | 294 | if (find_vdev(name)) { | 293 | if (find_vdev(name)) { |
3904 | 295 | /* | 294 | /* |
3905 | @@ -304,6 +303,7 @@ insert_vdev(const char *name, const char *args, | |||
3906 | 304 | if (init) | 303 | if (init) |
3907 | 305 | rte_devargs_insert(&devargs); | 304 | rte_devargs_insert(&devargs); |
3908 | 306 | dev->device.devargs = devargs; | 305 | dev->device.devargs = devargs; |
3909 | 306 | dev->device.name = devargs->name; | ||
3910 | 307 | TAILQ_INSERT_TAIL(&vdev_device_list, dev, next); | 307 | TAILQ_INSERT_TAIL(&vdev_device_list, dev, next); |
3911 | 308 | 308 | ||
3912 | 309 | if (p_dev) | 309 | if (p_dev) |
3913 | diff --git a/drivers/common/cnxk/roc_irq.c b/drivers/common/cnxk/roc_irq.c | |||
3914 | index 010b121..fb11bcb 100644 | |||
3915 | --- a/drivers/common/cnxk/roc_irq.c | |||
3916 | +++ b/drivers/common/cnxk/roc_irq.c | |||
3917 | @@ -15,7 +15,7 @@ | |||
3918 | 15 | 15 | ||
3919 | 16 | #define MSIX_IRQ_SET_BUF_LEN \ | 16 | #define MSIX_IRQ_SET_BUF_LEN \ |
3920 | 17 | (sizeof(struct vfio_irq_set) + sizeof(int) * \ | 17 | (sizeof(struct vfio_irq_set) + sizeof(int) * \ |
3922 | 18 | (plt_intr_max_intr_get(intr_handle))) | 18 | ((uint32_t)plt_intr_max_intr_get(intr_handle))) |
3923 | 19 | 19 | ||
3924 | 20 | static int | 20 | static int |
3925 | 21 | irq_get_info(struct plt_intr_handle *intr_handle) | 21 | irq_get_info(struct plt_intr_handle *intr_handle) |
3926 | diff --git a/drivers/common/cnxk/roc_npc.c b/drivers/common/cnxk/roc_npc.c | |||
3927 | index 9422a42..5183d30 100644 | |||
3928 | --- a/drivers/common/cnxk/roc_npc.c | |||
3929 | +++ b/drivers/common/cnxk/roc_npc.c | |||
3930 | @@ -716,9 +716,35 @@ npc_rss_action_configure(struct roc_npc *roc_npc, | |||
3931 | 716 | uint8_t key[ROC_NIX_RSS_KEY_LEN]; | 716 | uint8_t key[ROC_NIX_RSS_KEY_LEN]; |
3932 | 717 | const uint8_t *key_ptr; | 717 | const uint8_t *key_ptr; |
3933 | 718 | uint8_t flowkey_algx; | 718 | uint8_t flowkey_algx; |
3934 | 719 | uint32_t key_len; | ||
3935 | 719 | uint16_t *reta; | 720 | uint16_t *reta; |
3936 | 720 | int rc; | 721 | int rc; |
3937 | 721 | 722 | ||
3938 | 723 | roc_nix_rss_key_get(roc_nix, key); | ||
3939 | 724 | if (rss->key == NULL) { | ||
3940 | 725 | key_ptr = key; | ||
3941 | 726 | } else { | ||
3942 | 727 | key_len = rss->key_len; | ||
3943 | 728 | if (key_len > ROC_NIX_RSS_KEY_LEN) | ||
3944 | 729 | key_len = ROC_NIX_RSS_KEY_LEN; | ||
3945 | 730 | |||
3946 | 731 | for (i = 0; i < key_len; i++) { | ||
3947 | 732 | if (key[i] != rss->key[i]) { | ||
3948 | 733 | plt_err("RSS key config not supported"); | ||
3949 | 734 | plt_err("New Key:"); | ||
3950 | 735 | for (i = 0; i < key_len; i++) | ||
3951 | 736 | plt_dump_no_nl("0x%.2x ", rss->key[i]); | ||
3952 | 737 | plt_dump_no_nl("\n"); | ||
3953 | 738 | plt_err("Configured Key:"); | ||
3954 | 739 | for (i = 0; i < ROC_NIX_RSS_KEY_LEN; i++) | ||
3955 | 740 | plt_dump_no_nl("0x%.2x ", key[i]); | ||
3956 | 741 | plt_dump_no_nl("\n"); | ||
3957 | 742 | return -ENOTSUP; | ||
3958 | 743 | } | ||
3959 | 744 | } | ||
3960 | 745 | key_ptr = rss->key; | ||
3961 | 746 | } | ||
3962 | 747 | |||
3963 | 722 | rc = npc_rss_free_grp_get(npc, &rss_grp_idx); | 748 | rc = npc_rss_free_grp_get(npc, &rss_grp_idx); |
3964 | 723 | /* RSS group :0 is not usable for flow rss action */ | 749 | /* RSS group :0 is not usable for flow rss action */ |
3965 | 724 | if (rc < 0 || rss_grp_idx == 0) | 750 | if (rc < 0 || rss_grp_idx == 0) |
3966 | @@ -733,13 +759,6 @@ npc_rss_action_configure(struct roc_npc *roc_npc, | |||
3967 | 733 | 759 | ||
3968 | 734 | *rss_grp = rss_grp_idx; | 760 | *rss_grp = rss_grp_idx; |
3969 | 735 | 761 | ||
3970 | 736 | if (rss->key == NULL) { | ||
3971 | 737 | roc_nix_rss_key_default_fill(roc_nix, key); | ||
3972 | 738 | key_ptr = key; | ||
3973 | 739 | } else { | ||
3974 | 740 | key_ptr = rss->key; | ||
3975 | 741 | } | ||
3976 | 742 | |||
3977 | 743 | roc_nix_rss_key_set(roc_nix, key_ptr); | 762 | roc_nix_rss_key_set(roc_nix, key_ptr); |
3978 | 744 | 763 | ||
3979 | 745 | /* If queue count passed in the rss action is less than | 764 | /* If queue count passed in the rss action is less than |
3980 | diff --git a/drivers/common/cnxk/roc_platform.c b/drivers/common/cnxk/roc_platform.c | |||
3981 | index 6cf0c41..e5fab69 100644 | |||
3982 | --- a/drivers/common/cnxk/roc_platform.c | |||
3983 | +++ b/drivers/common/cnxk/roc_platform.c | |||
3984 | @@ -60,7 +60,7 @@ roc_plt_init(void) | |||
3985 | 60 | return 0; | 60 | return 0; |
3986 | 61 | } | 61 | } |
3987 | 62 | 62 | ||
3989 | 63 | RTE_LOG_REGISTER(cnxk_logtype_base, pmd.cnxk.base, NOTICE); | 63 | RTE_LOG_REGISTER(cnxk_logtype_base, pmd.cnxk.base, INFO); |
3990 | 64 | RTE_LOG_REGISTER(cnxk_logtype_mbox, pmd.cnxk.mbox, NOTICE); | 64 | RTE_LOG_REGISTER(cnxk_logtype_mbox, pmd.cnxk.mbox, NOTICE); |
3991 | 65 | RTE_LOG_REGISTER(cnxk_logtype_cpt, pmd.crypto.cnxk, NOTICE); | 65 | RTE_LOG_REGISTER(cnxk_logtype_cpt, pmd.crypto.cnxk, NOTICE); |
3992 | 66 | RTE_LOG_REGISTER(cnxk_logtype_npa, pmd.mempool.cnxk, NOTICE); | 66 | RTE_LOG_REGISTER(cnxk_logtype_npa, pmd.mempool.cnxk, NOTICE); |
3993 | diff --git a/drivers/common/cnxk/roc_platform.h b/drivers/common/cnxk/roc_platform.h | |||
3994 | index 61d4781..c79c5fd 100644 | |||
3995 | --- a/drivers/common/cnxk/roc_platform.h | |||
3996 | +++ b/drivers/common/cnxk/roc_platform.h | |||
3997 | @@ -203,7 +203,8 @@ extern int cnxk_logtype_tm; | |||
3998 | 203 | #define plt_info(fmt, args...) RTE_LOG(INFO, PMD, fmt "\n", ##args) | 203 | #define plt_info(fmt, args...) RTE_LOG(INFO, PMD, fmt "\n", ##args) |
3999 | 204 | #define plt_warn(fmt, args...) RTE_LOG(WARNING, PMD, fmt "\n", ##args) | 204 | #define plt_warn(fmt, args...) RTE_LOG(WARNING, PMD, fmt "\n", ##args) |
4000 | 205 | #define plt_print(fmt, args...) RTE_LOG(INFO, PMD, fmt "\n", ##args) | 205 | #define plt_print(fmt, args...) RTE_LOG(INFO, PMD, fmt "\n", ##args) |
4002 | 206 | #define plt_dump(fmt, ...) fprintf(stderr, fmt "\n", ##__VA_ARGS__) | 206 | #define plt_dump(fmt, ...) fprintf(stderr, fmt "\n", ##__VA_ARGS__) |
4003 | 207 | #define plt_dump_no_nl(fmt, ...) fprintf(stderr, fmt, ##__VA_ARGS__) | ||
4004 | 207 | 208 | ||
4005 | 208 | /** | 209 | /** |
4006 | 209 | * Log debug message if given subsystem logging is enabled. | 210 | * Log debug message if given subsystem logging is enabled. |
4007 | diff --git a/drivers/common/dpaax/caamflib/desc/pdcp.h b/drivers/common/dpaax/caamflib/desc/pdcp.h | |||
4008 | index 2c9c631..fc2db20 100644 | |||
4009 | --- a/drivers/common/dpaax/caamflib/desc/pdcp.h | |||
4010 | +++ b/drivers/common/dpaax/caamflib/desc/pdcp.h | |||
4011 | @@ -1303,6 +1303,11 @@ pdcp_insert_uplane_aes_aes_op(struct program *p, | |||
4012 | 1303 | SEQFIFOLOAD(p, MSG1, 0, VLF | LAST1 | FLUSH1); | 1303 | SEQFIFOLOAD(p, MSG1, 0, VLF | LAST1 | FLUSH1); |
4013 | 1304 | MOVEB(p, CONTEXT1, 0, MATH3, 0, 4, WAITCOMP | IMMED); | 1304 | MOVEB(p, CONTEXT1, 0, MATH3, 0, 4, WAITCOMP | IMMED); |
4014 | 1305 | 1305 | ||
4015 | 1306 | /* conditional jump with calm added to ensure that the | ||
4016 | 1307 | * previous processing has been completed | ||
4017 | 1308 | */ | ||
4018 | 1309 | JUMP(p, 1, LOCAL_JUMP, ALL_TRUE, CALM); | ||
4019 | 1310 | |||
4020 | 1306 | LOAD(p, CLRW_RESET_CLS1_CHA | | 1311 | LOAD(p, CLRW_RESET_CLS1_CHA | |
4021 | 1307 | CLRW_CLR_C1KEY | | 1312 | CLRW_CLR_C1KEY | |
4022 | 1308 | CLRW_CLR_C1CTX | | 1313 | CLRW_CLR_C1CTX | |
4023 | @@ -1350,6 +1355,11 @@ pdcp_insert_uplane_aes_aes_op(struct program *p, | |||
4024 | 1350 | 1355 | ||
4025 | 1351 | MOVEB(p, OFIFO, 0, MATH3, 0, 4, IMMED); | 1356 | MOVEB(p, OFIFO, 0, MATH3, 0, 4, IMMED); |
4026 | 1352 | 1357 | ||
4027 | 1358 | /* conditional jump with calm added to ensure that the | ||
4028 | 1359 | * previous processing has been completed | ||
4029 | 1360 | */ | ||
4030 | 1361 | JUMP(p, 1, LOCAL_JUMP, ALL_TRUE, CALM); | ||
4031 | 1362 | |||
4032 | 1353 | LOAD(p, CLRW_RESET_CLS1_CHA | | 1363 | LOAD(p, CLRW_RESET_CLS1_CHA | |
4033 | 1354 | CLRW_CLR_C1KEY | | 1364 | CLRW_CLR_C1KEY | |
4034 | 1355 | CLRW_CLR_C1CTX | | 1365 | CLRW_CLR_C1CTX | |
4035 | @@ -1564,6 +1574,11 @@ pdcp_insert_cplane_snow_aes_op(struct program *p, | |||
4036 | 1564 | CLRW_CLR_C1MODE, | 1574 | CLRW_CLR_C1MODE, |
4037 | 1565 | CLRW, 0, 4, IMMED); | 1575 | CLRW, 0, 4, IMMED); |
4038 | 1566 | 1576 | ||
4039 | 1577 | /* conditional jump with calm added to ensure that the | ||
4040 | 1578 | * previous processing has been completed | ||
4041 | 1579 | */ | ||
4042 | 1580 | JUMP(p, 1, LOCAL_JUMP, ALL_TRUE, CALM); | ||
4043 | 1581 | |||
4044 | 1567 | if (rta_sec_era <= RTA_SEC_ERA_3) | 1582 | if (rta_sec_era <= RTA_SEC_ERA_3) |
4045 | 1568 | LOAD(p, CCTRL_RESET_CHA_ALL, CCTRL, 0, 4, IMMED); | 1583 | LOAD(p, CCTRL_RESET_CHA_ALL, CCTRL, 0, 4, IMMED); |
4046 | 1569 | 1584 | ||
4047 | @@ -2409,6 +2424,11 @@ pdcp_insert_cplane_zuc_aes_op(struct program *p, | |||
4048 | 2409 | 2424 | ||
4049 | 2410 | MOVEB(p, OFIFO, 0, MATH3, 0, 4, IMMED); | 2425 | MOVEB(p, OFIFO, 0, MATH3, 0, 4, IMMED); |
4050 | 2411 | 2426 | ||
4051 | 2427 | /* conditional jump with calm added to ensure that the | ||
4052 | 2428 | * previous processing has been completed | ||
4053 | 2429 | */ | ||
4054 | 2430 | JUMP(p, 1, LOCAL_JUMP, ALL_TRUE, CALM); | ||
4055 | 2431 | |||
4056 | 2412 | LOAD(p, CLRW_RESET_CLS1_CHA | | 2432 | LOAD(p, CLRW_RESET_CLS1_CHA | |
4057 | 2413 | CLRW_CLR_C1KEY | | 2433 | CLRW_CLR_C1KEY | |
4058 | 2414 | CLRW_CLR_C1CTX | | 2434 | CLRW_CLR_C1CTX | |
4059 | diff --git a/drivers/common/dpaax/caamflib/desc/sdap.h b/drivers/common/dpaax/caamflib/desc/sdap.h | |||
4060 | index 07f55b5..084392d 100644 | |||
4061 | --- a/drivers/common/dpaax/caamflib/desc/sdap.h | |||
4062 | +++ b/drivers/common/dpaax/caamflib/desc/sdap.h | |||
4063 | @@ -1,5 +1,5 @@ | |||
4064 | 1 | /* SPDX-License-Identifier: BSD-3-Clause | 1 | /* SPDX-License-Identifier: BSD-3-Clause |
4066 | 2 | * Copyright 2020-2021 NXP | 2 | * Copyright 2020-2023 NXP |
4067 | 3 | */ | 3 | */ |
4068 | 4 | 4 | ||
4069 | 5 | #ifndef __DESC_SDAP_H__ | 5 | #ifndef __DESC_SDAP_H__ |
4070 | @@ -704,6 +704,10 @@ static inline int pdcp_sdap_insert_no_snoop_op( | |||
4071 | 704 | /* Save the ICV generated */ | 704 | /* Save the ICV generated */ |
4072 | 705 | MOVEB(p, CONTEXT1, 0, MATH3, 0, 4, WAITCOMP | IMMED); | 705 | MOVEB(p, CONTEXT1, 0, MATH3, 0, 4, WAITCOMP | IMMED); |
4073 | 706 | 706 | ||
4074 | 707 | /* conditional jump with calm added to ensure that the | ||
4075 | 708 | * previous processing has been completed | ||
4076 | 709 | */ | ||
4077 | 710 | JUMP(p, 1, LOCAL_JUMP, ALL_TRUE, CALM); | ||
4078 | 707 | /* The CHA will be reused so we need to clear it */ | 711 | /* The CHA will be reused so we need to clear it */ |
4079 | 708 | LOAD(p, CLRW_RESET_CLS1_CHA | | 712 | LOAD(p, CLRW_RESET_CLS1_CHA | |
4080 | 709 | CLRW_CLR_C1KEY | | 713 | CLRW_CLR_C1KEY | |
4081 | @@ -794,6 +798,10 @@ static inline int pdcp_sdap_insert_no_snoop_op( | |||
4082 | 794 | /* Save the ICV which is stalling in output FIFO to MATH3 */ | 798 | /* Save the ICV which is stalling in output FIFO to MATH3 */ |
4083 | 795 | MOVEB(p, OFIFO, 0, MATH3, 0, 4, IMMED); | 799 | MOVEB(p, OFIFO, 0, MATH3, 0, 4, IMMED); |
4084 | 796 | 800 | ||
4085 | 801 | /* conditional jump with calm added to ensure that the | ||
4086 | 802 | * previous processing has been completed | ||
4087 | 803 | */ | ||
4088 | 804 | JUMP(p, 1, LOCAL_JUMP, ALL_TRUE, CALM); | ||
4089 | 797 | /* Reset class 1 CHA */ | 805 | /* Reset class 1 CHA */ |
4090 | 798 | LOAD(p, CLRW_RESET_CLS1_CHA | | 806 | LOAD(p, CLRW_RESET_CLS1_CHA | |
4091 | 799 | CLRW_CLR_C1KEY | | 807 | CLRW_CLR_C1KEY | |
4092 | diff --git a/drivers/common/dpaax/dpaax_iova_table.c b/drivers/common/dpaax/dpaax_iova_table.c | |||
4093 | index 9daac4b..860e702 100644 | |||
4094 | --- a/drivers/common/dpaax/dpaax_iova_table.c | |||
4095 | +++ b/drivers/common/dpaax/dpaax_iova_table.c | |||
4096 | @@ -1,5 +1,5 @@ | |||
4097 | 1 | /* SPDX-License-Identifier: BSD-3-Clause | 1 | /* SPDX-License-Identifier: BSD-3-Clause |
4099 | 2 | * Copyright 2018 NXP | 2 | * Copyright 2018-2023 NXP |
4100 | 3 | */ | 3 | */ |
4101 | 4 | 4 | ||
4102 | 5 | #include <rte_memory.h> | 5 | #include <rte_memory.h> |
4103 | @@ -139,10 +139,12 @@ read_memory_node(unsigned int *count) | |||
4104 | 139 | } | 139 | } |
4105 | 140 | 140 | ||
4106 | 141 | DPAAX_DEBUG("Device-tree memory node data:"); | 141 | DPAAX_DEBUG("Device-tree memory node data:"); |
4108 | 142 | do { | 142 | |
4109 | 143 | while (j > 0) { | ||
4110 | 144 | --j; | ||
4111 | 143 | DPAAX_DEBUG(" %08" PRIx64 " %08zu", | 145 | DPAAX_DEBUG(" %08" PRIx64 " %08zu", |
4112 | 144 | nodes[j].addr, nodes[j].len); | 146 | nodes[j].addr, nodes[j].len); |
4114 | 145 | } while (--j); | 147 | } |
4115 | 146 | 148 | ||
4116 | 147 | cleanup: | 149 | cleanup: |
4117 | 148 | close(fd); | 150 | close(fd); |
4118 | @@ -255,10 +257,7 @@ dpaax_iova_table_populate(void) | |||
4119 | 255 | void | 257 | void |
4120 | 256 | dpaax_iova_table_depopulate(void) | 258 | dpaax_iova_table_depopulate(void) |
4121 | 257 | { | 259 | { |
4126 | 258 | if (dpaax_iova_table_p == NULL) | 260 | rte_free(dpaax_iova_table_p); |
4123 | 259 | return; | ||
4124 | 260 | |||
4125 | 261 | rte_free(dpaax_iova_table_p->entries); | ||
4127 | 262 | dpaax_iova_table_p = NULL; | 261 | dpaax_iova_table_p = NULL; |
4128 | 263 | 262 | ||
4129 | 264 | DPAAX_DEBUG("IOVA Table cleaned"); | 263 | DPAAX_DEBUG("IOVA Table cleaned"); |
4130 | diff --git a/drivers/common/iavf/iavf_prototype.h b/drivers/common/iavf/iavf_prototype.h | |||
4131 | index 1c125d1..b327549 100644 | |||
4132 | --- a/drivers/common/iavf/iavf_prototype.h | |||
4133 | +++ b/drivers/common/iavf/iavf_prototype.h | |||
4134 | @@ -83,6 +83,7 @@ void iavf_destroy_spinlock(struct iavf_spinlock *sp); | |||
4135 | 83 | __rte_internal | 83 | __rte_internal |
4136 | 84 | void iavf_vf_parse_hw_config(struct iavf_hw *hw, | 84 | void iavf_vf_parse_hw_config(struct iavf_hw *hw, |
4137 | 85 | struct virtchnl_vf_resource *msg); | 85 | struct virtchnl_vf_resource *msg); |
4138 | 86 | __rte_internal | ||
4139 | 86 | enum iavf_status iavf_vf_reset(struct iavf_hw *hw); | 87 | enum iavf_status iavf_vf_reset(struct iavf_hw *hw); |
4140 | 87 | __rte_internal | 88 | __rte_internal |
4141 | 88 | enum iavf_status iavf_aq_send_msg_to_pf(struct iavf_hw *hw, | 89 | enum iavf_status iavf_aq_send_msg_to_pf(struct iavf_hw *hw, |
4142 | diff --git a/drivers/common/iavf/version.map b/drivers/common/iavf/version.map | |||
4143 | index e0f1171..6c1427c 100644 | |||
4144 | --- a/drivers/common/iavf/version.map | |||
4145 | +++ b/drivers/common/iavf/version.map | |||
4146 | @@ -7,6 +7,7 @@ INTERNAL { | |||
4147 | 7 | iavf_set_mac_type; | 7 | iavf_set_mac_type; |
4148 | 8 | iavf_shutdown_adminq; | 8 | iavf_shutdown_adminq; |
4149 | 9 | iavf_vf_parse_hw_config; | 9 | iavf_vf_parse_hw_config; |
4150 | 10 | iavf_vf_reset; | ||
4151 | 10 | 11 | ||
4152 | 11 | local: *; | 12 | local: *; |
4153 | 12 | }; | 13 | }; |
4154 | diff --git a/drivers/common/mlx5/mlx5_common_utils.h b/drivers/common/mlx5/mlx5_common_utils.h | |||
4155 | index 98e487e..2b01325 100644 | |||
4156 | --- a/drivers/common/mlx5/mlx5_common_utils.h | |||
4157 | +++ b/drivers/common/mlx5/mlx5_common_utils.h | |||
4158 | @@ -130,7 +130,7 @@ struct mlx5_list_inconst { | |||
4159 | 130 | * For huge amount of entries, please consider hash list. | 130 | * For huge amount of entries, please consider hash list. |
4160 | 131 | * | 131 | * |
4161 | 132 | */ | 132 | */ |
4163 | 133 | struct mlx5_list { | 133 | struct __rte_aligned(16) mlx5_list { |
4164 | 134 | struct mlx5_list_const l_const; | 134 | struct mlx5_list_const l_const; |
4165 | 135 | struct mlx5_list_inconst l_inconst; | 135 | struct mlx5_list_inconst l_inconst; |
4166 | 136 | }; | 136 | }; |
4167 | diff --git a/drivers/common/mlx5/mlx5_devx_cmds.c b/drivers/common/mlx5/mlx5_devx_cmds.c | |||
4168 | index d9585bf..9684e37 100644 | |||
4169 | --- a/drivers/common/mlx5/mlx5_devx_cmds.c | |||
4170 | +++ b/drivers/common/mlx5/mlx5_devx_cmds.c | |||
4171 | @@ -919,6 +919,7 @@ mlx5_devx_cmd_query_hca_attr(void *ctx, | |||
4172 | 919 | attr->log_max_qp = MLX5_GET(cmd_hca_cap, hcattr, log_max_qp); | 919 | attr->log_max_qp = MLX5_GET(cmd_hca_cap, hcattr, log_max_qp); |
4173 | 920 | attr->log_max_cq_sz = MLX5_GET(cmd_hca_cap, hcattr, log_max_cq_sz); | 920 | attr->log_max_cq_sz = MLX5_GET(cmd_hca_cap, hcattr, log_max_cq_sz); |
4174 | 921 | attr->log_max_qp_sz = MLX5_GET(cmd_hca_cap, hcattr, log_max_qp_sz); | 921 | attr->log_max_qp_sz = MLX5_GET(cmd_hca_cap, hcattr, log_max_qp_sz); |
4175 | 922 | attr->log_max_wq_sz = MLX5_GET(cmd_hca_cap, hcattr, log_max_wq_sz); | ||
4176 | 922 | attr->log_max_mrw_sz = MLX5_GET(cmd_hca_cap, hcattr, log_max_mrw_sz); | 923 | attr->log_max_mrw_sz = MLX5_GET(cmd_hca_cap, hcattr, log_max_mrw_sz); |
4177 | 923 | attr->log_max_pd = MLX5_GET(cmd_hca_cap, hcattr, log_max_pd); | 924 | attr->log_max_pd = MLX5_GET(cmd_hca_cap, hcattr, log_max_pd); |
4178 | 924 | attr->log_max_srq = MLX5_GET(cmd_hca_cap, hcattr, log_max_srq); | 925 | attr->log_max_srq = MLX5_GET(cmd_hca_cap, hcattr, log_max_srq); |
4179 | @@ -1558,7 +1559,7 @@ mlx5_devx_cmd_create_rqt(void *ctx, | |||
4180 | 1558 | uint32_t out[MLX5_ST_SZ_DW(create_rqt_out)] = {0}; | 1559 | uint32_t out[MLX5_ST_SZ_DW(create_rqt_out)] = {0}; |
4181 | 1559 | void *rqt_ctx; | 1560 | void *rqt_ctx; |
4182 | 1560 | struct mlx5_devx_obj *rqt = NULL; | 1561 | struct mlx5_devx_obj *rqt = NULL; |
4184 | 1561 | int i; | 1562 | unsigned int i; |
4185 | 1562 | 1563 | ||
4186 | 1563 | in = mlx5_malloc(MLX5_MEM_ZERO, inlen, 0, SOCKET_ID_ANY); | 1564 | in = mlx5_malloc(MLX5_MEM_ZERO, inlen, 0, SOCKET_ID_ANY); |
4187 | 1564 | if (!in) { | 1565 | if (!in) { |
4188 | @@ -1612,7 +1613,7 @@ mlx5_devx_cmd_modify_rqt(struct mlx5_devx_obj *rqt, | |||
4189 | 1612 | uint32_t out[MLX5_ST_SZ_DW(modify_rqt_out)] = {0}; | 1613 | uint32_t out[MLX5_ST_SZ_DW(modify_rqt_out)] = {0}; |
4190 | 1613 | uint32_t *in = mlx5_malloc(MLX5_MEM_ZERO, inlen, 0, SOCKET_ID_ANY); | 1614 | uint32_t *in = mlx5_malloc(MLX5_MEM_ZERO, inlen, 0, SOCKET_ID_ANY); |
4191 | 1614 | void *rqt_ctx; | 1615 | void *rqt_ctx; |
4193 | 1615 | int i; | 1616 | unsigned int i; |
4194 | 1616 | int ret; | 1617 | int ret; |
4195 | 1617 | 1618 | ||
4196 | 1618 | if (!in) { | 1619 | if (!in) { |
4197 | @@ -1625,7 +1626,6 @@ mlx5_devx_cmd_modify_rqt(struct mlx5_devx_obj *rqt, | |||
4198 | 1625 | MLX5_SET64(modify_rqt_in, in, modify_bitmask, 0x1); | 1626 | MLX5_SET64(modify_rqt_in, in, modify_bitmask, 0x1); |
4199 | 1626 | rqt_ctx = MLX5_ADDR_OF(modify_rqt_in, in, rqt_context); | 1627 | rqt_ctx = MLX5_ADDR_OF(modify_rqt_in, in, rqt_context); |
4200 | 1627 | MLX5_SET(rqtc, rqt_ctx, list_q_type, rqt_attr->rq_type); | 1628 | MLX5_SET(rqtc, rqt_ctx, list_q_type, rqt_attr->rq_type); |
4201 | 1628 | MLX5_SET(rqtc, rqt_ctx, rqt_max_size, rqt_attr->rqt_max_size); | ||
4202 | 1629 | MLX5_SET(rqtc, rqt_ctx, rqt_actual_size, rqt_attr->rqt_actual_size); | 1629 | MLX5_SET(rqtc, rqt_ctx, rqt_actual_size, rqt_attr->rqt_actual_size); |
4203 | 1630 | for (i = 0; i < rqt_attr->rqt_actual_size; i++) | 1630 | for (i = 0; i < rqt_attr->rqt_actual_size; i++) |
4204 | 1631 | MLX5_SET(rqtc, rqt_ctx, rq_num[i], rqt_attr->rq_list[i]); | 1631 | MLX5_SET(rqtc, rqt_ctx, rq_num[i], rqt_attr->rq_list[i]); |
4205 | diff --git a/drivers/common/mlx5/mlx5_devx_cmds.h b/drivers/common/mlx5/mlx5_devx_cmds.h | |||
4206 | index 4373761..6e76528 100644 | |||
4207 | --- a/drivers/common/mlx5/mlx5_devx_cmds.h | |||
4208 | +++ b/drivers/common/mlx5/mlx5_devx_cmds.h | |||
4209 | @@ -228,6 +228,7 @@ struct mlx5_hca_attr { | |||
4210 | 228 | struct mlx5_hca_vdpa_attr vdpa; | 228 | struct mlx5_hca_vdpa_attr vdpa; |
4211 | 229 | struct mlx5_hca_flow_attr flow; | 229 | struct mlx5_hca_flow_attr flow; |
4212 | 230 | struct mlx5_hca_flex_attr flex; | 230 | struct mlx5_hca_flex_attr flex; |
4213 | 231 | uint8_t log_max_wq_sz; | ||
4214 | 231 | int log_max_qp_sz; | 232 | int log_max_qp_sz; |
4215 | 232 | int log_max_cq_sz; | 233 | int log_max_cq_sz; |
4216 | 233 | int log_max_qp; | 234 | int log_max_qp; |
4217 | diff --git a/drivers/common/mlx5/mlx5_prm.h b/drivers/common/mlx5/mlx5_prm.h | |||
4218 | index 58aa72d..f561e53 100644 | |||
4219 | --- a/drivers/common/mlx5/mlx5_prm.h | |||
4220 | +++ b/drivers/common/mlx5/mlx5_prm.h | |||
4221 | @@ -249,8 +249,12 @@ | |||
4222 | 249 | /* Maximum number of DS in WQE. Limited by 6-bit field. */ | 249 | /* Maximum number of DS in WQE. Limited by 6-bit field. */ |
4223 | 250 | #define MLX5_DSEG_MAX 63 | 250 | #define MLX5_DSEG_MAX 63 |
4224 | 251 | 251 | ||
4226 | 252 | /* The 32 bit syndrome offset in struct mlx5_err_cqe. */ | 252 | /* The 32 bit syndrome offset in struct mlx5_error_cqe. */ |
4227 | 253 | #if (RTE_CACHE_LINE_SIZE == 128) | ||
4228 | 254 | #define MLX5_ERROR_CQE_SYNDROME_OFFSET 116 | ||
4229 | 255 | #else | ||
4230 | 253 | #define MLX5_ERROR_CQE_SYNDROME_OFFSET 52 | 256 | #define MLX5_ERROR_CQE_SYNDROME_OFFSET 52 |
4231 | 257 | #endif | ||
4232 | 254 | 258 | ||
4233 | 255 | /* The completion mode offset in the WQE control segment line 2. */ | 259 | /* The completion mode offset in the WQE control segment line 2. */ |
4234 | 256 | #define MLX5_COMP_MODE_OFFSET 2 | 260 | #define MLX5_COMP_MODE_OFFSET 2 |
4235 | @@ -379,6 +383,29 @@ struct mlx5_wqe_mprq { | |||
4236 | 379 | 383 | ||
4237 | 380 | #define MLX5_MPRQ_STRIDE_SHIFT_BYTE 2 | 384 | #define MLX5_MPRQ_STRIDE_SHIFT_BYTE 2 |
4238 | 381 | 385 | ||
4239 | 386 | struct mlx5_error_cqe { | ||
4240 | 387 | #if (RTE_CACHE_LINE_SIZE == 128) | ||
4241 | 388 | uint8_t padding[64]; | ||
4242 | 389 | #endif | ||
4243 | 390 | uint8_t rsvd0[2]; | ||
4244 | 391 | uint16_t eth_wqe_id; | ||
4245 | 392 | uint8_t rsvd1[16]; | ||
4246 | 393 | uint16_t ib_stride_index; | ||
4247 | 394 | uint8_t rsvd2[10]; | ||
4248 | 395 | uint32_t srqn; | ||
4249 | 396 | uint8_t rsvd3[8]; | ||
4250 | 397 | uint32_t byte_cnt; | ||
4251 | 398 | uint8_t rsvd4[4]; | ||
4252 | 399 | uint8_t hw_err_synd; | ||
4253 | 400 | uint8_t hw_synd_type; | ||
4254 | 401 | uint8_t vendor_err_synd; | ||
4255 | 402 | uint8_t syndrome; | ||
4256 | 403 | uint32_t s_wqe_opcode_qpn; | ||
4257 | 404 | uint16_t wqe_counter; | ||
4258 | 405 | uint8_t signature; | ||
4259 | 406 | uint8_t op_own; | ||
4260 | 407 | }; | ||
4261 | 408 | |||
4262 | 382 | /* CQ element structure - should be equal to the cache line size */ | 409 | /* CQ element structure - should be equal to the cache line size */ |
4263 | 383 | struct mlx5_cqe { | 410 | struct mlx5_cqe { |
4264 | 384 | #if (RTE_CACHE_LINE_SIZE == 128) | 411 | #if (RTE_CACHE_LINE_SIZE == 128) |
4265 | @@ -753,7 +780,7 @@ struct mlx5_modification_cmd { | |||
4266 | 753 | unsigned int field:12; | 780 | unsigned int field:12; |
4267 | 754 | unsigned int action_type:4; | 781 | unsigned int action_type:4; |
4268 | 755 | }; | 782 | }; |
4270 | 756 | }; | 783 | } __rte_packed; |
4271 | 757 | union { | 784 | union { |
4272 | 758 | uint32_t data1; | 785 | uint32_t data1; |
4273 | 759 | uint8_t data[4]; | 786 | uint8_t data[4]; |
4274 | @@ -764,7 +791,7 @@ struct mlx5_modification_cmd { | |||
4275 | 764 | unsigned int dst_field:12; | 791 | unsigned int dst_field:12; |
4276 | 765 | unsigned int rsvd4:4; | 792 | unsigned int rsvd4:4; |
4277 | 766 | }; | 793 | }; |
4279 | 767 | }; | 794 | } __rte_packed; |
4280 | 768 | }; | 795 | }; |
4281 | 769 | 796 | ||
4282 | 770 | typedef uint64_t u64; | 797 | typedef uint64_t u64; |
4283 | diff --git a/drivers/common/mlx5/windows/mlx5_win_defs.h b/drivers/common/mlx5/windows/mlx5_win_defs.h | |||
4284 | index 0c09325..d79728b 100644 | |||
4285 | --- a/drivers/common/mlx5/windows/mlx5_win_defs.h | |||
4286 | +++ b/drivers/common/mlx5/windows/mlx5_win_defs.h | |||
4287 | @@ -223,18 +223,6 @@ struct mlx5_action { | |||
4288 | 223 | } dest_tir; | 223 | } dest_tir; |
4289 | 224 | }; | 224 | }; |
4290 | 225 | 225 | ||
4291 | 226 | struct mlx5_err_cqe { | ||
4292 | 227 | uint8_t rsvd0[32]; | ||
4293 | 228 | uint32_t srqn; | ||
4294 | 229 | uint8_t rsvd1[18]; | ||
4295 | 230 | uint8_t vendor_err_synd; | ||
4296 | 231 | uint8_t syndrome; | ||
4297 | 232 | uint32_t s_wqe_opcode_qpn; | ||
4298 | 233 | uint16_t wqe_counter; | ||
4299 | 234 | uint8_t signature; | ||
4300 | 235 | uint8_t op_own; | ||
4301 | 236 | }; | ||
4302 | 237 | |||
4303 | 238 | struct mlx5_wqe_srq_next_seg { | 226 | struct mlx5_wqe_srq_next_seg { |
4304 | 239 | uint8_t rsvd0[2]; | 227 | uint8_t rsvd0[2]; |
4305 | 240 | rte_be16_t next_wqe_index; | 228 | rte_be16_t next_wqe_index; |
4306 | diff --git a/drivers/compress/mlx5/mlx5_compress.c b/drivers/compress/mlx5/mlx5_compress.c | |||
4307 | index 515b5df..e1ca777 100644 | |||
4308 | --- a/drivers/compress/mlx5/mlx5_compress.c | |||
4309 | +++ b/drivers/compress/mlx5/mlx5_compress.c | |||
4310 | @@ -537,7 +537,7 @@ mlx5_compress_dump_err_objs(volatile uint32_t *cqe, volatile uint32_t *wqe, | |||
4311 | 537 | size_t i; | 537 | size_t i; |
4312 | 538 | 538 | ||
4313 | 539 | DRV_LOG(ERR, "Error cqe:"); | 539 | DRV_LOG(ERR, "Error cqe:"); |
4315 | 540 | for (i = 0; i < sizeof(struct mlx5_err_cqe) >> 2; i += 4) | 540 | for (i = 0; i < sizeof(struct mlx5_error_cqe) >> 2; i += 4) |
4316 | 541 | DRV_LOG(ERR, "%08X %08X %08X %08X", cqe[i], cqe[i + 1], | 541 | DRV_LOG(ERR, "%08X %08X %08X %08X", cqe[i], cqe[i + 1], |
4317 | 542 | cqe[i + 2], cqe[i + 3]); | 542 | cqe[i + 2], cqe[i + 3]); |
4318 | 543 | DRV_LOG(ERR, "\nError wqe:"); | 543 | DRV_LOG(ERR, "\nError wqe:"); |
4319 | @@ -555,7 +555,7 @@ mlx5_compress_cqe_err_handle(struct mlx5_compress_qp *qp, | |||
4320 | 555 | struct rte_comp_op *op) | 555 | struct rte_comp_op *op) |
4321 | 556 | { | 556 | { |
4322 | 557 | const uint32_t idx = qp->ci & (qp->entries_n - 1); | 557 | const uint32_t idx = qp->ci & (qp->entries_n - 1); |
4324 | 558 | volatile struct mlx5_err_cqe *cqe = (volatile struct mlx5_err_cqe *) | 558 | volatile struct mlx5_error_cqe *cqe = (volatile struct mlx5_error_cqe *) |
4325 | 559 | &qp->cq.cqes[idx]; | 559 | &qp->cq.cqes[idx]; |
4326 | 560 | volatile struct mlx5_gga_wqe *wqes = (volatile struct mlx5_gga_wqe *) | 560 | volatile struct mlx5_gga_wqe *wqes = (volatile struct mlx5_gga_wqe *) |
4327 | 561 | qp->qp.wqes; | 561 | qp->qp.wqes; |
4328 | diff --git a/drivers/crypto/bcmfs/bcmfs_device.c b/drivers/crypto/bcmfs/bcmfs_device.c | |||
4329 | index 27720e4..0d43a9b 100644 | |||
4330 | --- a/drivers/crypto/bcmfs/bcmfs_device.c | |||
4331 | +++ b/drivers/crypto/bcmfs/bcmfs_device.c | |||
4332 | @@ -138,7 +138,7 @@ fsdev_allocate_one_dev(struct rte_vdev_device *vdev, | |||
4333 | 138 | return fsdev; | 138 | return fsdev; |
4334 | 139 | 139 | ||
4335 | 140 | cleanup: | 140 | cleanup: |
4337 | 141 | free(fsdev); | 141 | rte_free(fsdev); |
4338 | 142 | 142 | ||
4339 | 143 | return NULL; | 143 | return NULL; |
4340 | 144 | } | 144 | } |
4341 | @@ -162,7 +162,7 @@ fsdev_release(struct bcmfs_device *fsdev) | |||
4342 | 162 | return; | 162 | return; |
4343 | 163 | 163 | ||
4344 | 164 | TAILQ_REMOVE(&fsdev_list, fsdev, next); | 164 | TAILQ_REMOVE(&fsdev_list, fsdev, next); |
4346 | 165 | free(fsdev); | 165 | rte_free(fsdev); |
4347 | 166 | } | 166 | } |
4348 | 167 | 167 | ||
4349 | 168 | static int | 168 | static int |
4350 | diff --git a/drivers/crypto/cnxk/cnxk_ae.h b/drivers/crypto/cnxk/cnxk_ae.h | |||
4351 | index 6222171..16d67a8 100644 | |||
4352 | --- a/drivers/crypto/cnxk/cnxk_ae.h | |||
4353 | +++ b/drivers/crypto/cnxk/cnxk_ae.h | |||
4354 | @@ -25,13 +25,22 @@ struct cnxk_ae_sess { | |||
4355 | 25 | }; | 25 | }; |
4356 | 26 | 26 | ||
4357 | 27 | static __rte_always_inline void | 27 | static __rte_always_inline void |
4359 | 28 | cnxk_ae_modex_param_normalize(uint8_t **data, size_t *len) | 28 | cnxk_ae_modex_param_normalize(uint8_t **data, size_t *len, size_t max) |
4360 | 29 | { | 29 | { |
4361 | 30 | uint8_t msw_len = *len % 8; | ||
4362 | 31 | uint64_t msw_val = 0; | ||
4363 | 30 | size_t i; | 32 | size_t i; |
4364 | 31 | 33 | ||
4368 | 32 | /* Strip leading NUL bytes */ | 34 | if (*len <= 8) |
4369 | 33 | for (i = 0; i < *len; i++) { | 35 | return; |
4370 | 34 | if ((*data)[i] != 0) | 36 | |
4371 | 37 | memcpy(&msw_val, *data, msw_len); | ||
4372 | 38 | if (msw_val != 0) | ||
4373 | 39 | return; | ||
4374 | 40 | |||
4375 | 41 | for (i = msw_len; i < *len && (*len - i) < max; i += 8) { | ||
4376 | 42 | memcpy(&msw_val, &(*data)[i], 8); | ||
4377 | 43 | if (msw_val != 0) | ||
4378 | 35 | break; | 44 | break; |
4379 | 36 | } | 45 | } |
4380 | 37 | *data += i; | 46 | *data += i; |
4381 | @@ -48,8 +57,8 @@ cnxk_ae_fill_modex_params(struct cnxk_ae_sess *sess, | |||
4382 | 48 | uint8_t *exp = xform->modex.exponent.data; | 57 | uint8_t *exp = xform->modex.exponent.data; |
4383 | 49 | uint8_t *mod = xform->modex.modulus.data; | 58 | uint8_t *mod = xform->modex.modulus.data; |
4384 | 50 | 59 | ||
4387 | 51 | cnxk_ae_modex_param_normalize(&mod, &mod_len); | 60 | cnxk_ae_modex_param_normalize(&mod, &mod_len, SIZE_MAX); |
4388 | 52 | cnxk_ae_modex_param_normalize(&exp, &exp_len); | 61 | cnxk_ae_modex_param_normalize(&exp, &exp_len, mod_len); |
4389 | 53 | 62 | ||
4390 | 54 | if (unlikely(exp_len == 0 || mod_len == 0)) | 63 | if (unlikely(exp_len == 0 || mod_len == 0)) |
4391 | 55 | return -EINVAL; | 64 | return -EINVAL; |
4392 | @@ -222,7 +231,7 @@ cnxk_ae_modex_prep(struct rte_crypto_op *op, struct roc_ae_buf_ptr *meta_buf, | |||
4393 | 222 | struct rte_crypto_mod_op_param mod_op; | 231 | struct rte_crypto_mod_op_param mod_op; |
4394 | 223 | uint64_t total_key_len; | 232 | uint64_t total_key_len; |
4395 | 224 | union cpt_inst_w4 w4; | 233 | union cpt_inst_w4 w4; |
4397 | 225 | uint32_t base_len; | 234 | size_t base_len; |
4398 | 226 | uint32_t dlen; | 235 | uint32_t dlen; |
4399 | 227 | uint8_t *dptr; | 236 | uint8_t *dptr; |
4400 | 228 | 237 | ||
4401 | @@ -230,8 +239,11 @@ cnxk_ae_modex_prep(struct rte_crypto_op *op, struct roc_ae_buf_ptr *meta_buf, | |||
4402 | 230 | 239 | ||
4403 | 231 | base_len = mod_op.base.length; | 240 | base_len = mod_op.base.length; |
4404 | 232 | if (unlikely(base_len > mod_len)) { | 241 | if (unlikely(base_len > mod_len)) { |
4407 | 233 | op->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS; | 242 | cnxk_ae_modex_param_normalize(&mod_op.base.data, &base_len, mod_len); |
4408 | 234 | return -ENOTSUP; | 243 | if (base_len > mod_len) { |
4409 | 244 | op->status = RTE_CRYPTO_OP_STATUS_INVALID_ARGS; | ||
4410 | 245 | return -ENOTSUP; | ||
4411 | 246 | } | ||
4412 | 235 | } | 247 | } |
4413 | 236 | 248 | ||
4414 | 237 | total_key_len = mod_len + exp_len; | 249 | total_key_len = mod_len + exp_len; |
4415 | diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | |||
4416 | index c9745f1..90bc9ad 100644 | |||
4417 | --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | |||
4418 | +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | |||
4419 | @@ -3186,6 +3186,7 @@ dpaa2_sec_set_pdcp_session(struct rte_cryptodev *dev, | |||
4420 | 3186 | } | 3186 | } |
4421 | 3187 | } else { | 3187 | } else { |
4422 | 3188 | DPAA2_SEC_ERR("Invalid crypto type"); | 3188 | DPAA2_SEC_ERR("Invalid crypto type"); |
4423 | 3189 | rte_free(priv); | ||
4424 | 3189 | return -EINVAL; | 3190 | return -EINVAL; |
4425 | 3190 | } | 3191 | } |
4426 | 3191 | 3192 | ||
4427 | @@ -3814,7 +3815,7 @@ dpaa2_sec_eventq_attach(const struct rte_cryptodev *dev, | |||
4428 | 3814 | cfg.dest_cfg.priority = priority; | 3815 | cfg.dest_cfg.priority = priority; |
4429 | 3815 | 3816 | ||
4430 | 3816 | cfg.options |= DPSECI_QUEUE_OPT_USER_CTX; | 3817 | cfg.options |= DPSECI_QUEUE_OPT_USER_CTX; |
4432 | 3817 | cfg.user_ctx = (size_t)(qp); | 3818 | cfg.user_ctx = (size_t)(&qp->rx_vq); |
4433 | 3818 | if (event->sched_type == RTE_SCHED_TYPE_ATOMIC) { | 3819 | if (event->sched_type == RTE_SCHED_TYPE_ATOMIC) { |
4434 | 3819 | cfg.options |= DPSECI_QUEUE_OPT_ORDER_PRESERVATION; | 3820 | cfg.options |= DPSECI_QUEUE_OPT_ORDER_PRESERVATION; |
4435 | 3820 | cfg.order_preservation_en = 1; | 3821 | cfg.order_preservation_en = 1; |
4436 | diff --git a/drivers/crypto/ipsec_mb/meson.build b/drivers/crypto/ipsec_mb/meson.build | |||
4437 | index e644853..a017ebd 100644 | |||
4438 | --- a/drivers/crypto/ipsec_mb/meson.build | |||
4439 | +++ b/drivers/crypto/ipsec_mb/meson.build | |||
4440 | @@ -13,7 +13,7 @@ if not lib.found() | |||
4441 | 13 | build = false | 13 | build = false |
4442 | 14 | reason = 'missing dependency, "libIPSec_MB"' | 14 | reason = 'missing dependency, "libIPSec_MB"' |
4443 | 15 | # if the lib is found, check it's the right format | 15 | # if the lib is found, check it's the right format |
4445 | 16 | elif meson.version().version_compare('>=0.60') and not cc.links( | 16 | elif not cc.links( |
4446 | 17 | 'int main(void) {return 0;}', dependencies: lib) | 17 | 'int main(void) {return 0;}', dependencies: lib) |
4447 | 18 | build = false | 18 | build = false |
4448 | 19 | reason = 'incompatible dependency, "libIPSec_MB"' | 19 | reason = 'incompatible dependency, "libIPSec_MB"' |
4449 | diff --git a/drivers/crypto/mlx5/mlx5_crypto.c b/drivers/crypto/mlx5/mlx5_crypto.c | |||
4450 | index 36db31a..8a53af8 100644 | |||
4451 | --- a/drivers/crypto/mlx5/mlx5_crypto.c | |||
4452 | +++ b/drivers/crypto/mlx5/mlx5_crypto.c | |||
4453 | @@ -472,7 +472,7 @@ static __rte_noinline void | |||
4454 | 472 | mlx5_crypto_cqe_err_handle(struct mlx5_crypto_qp *qp, struct rte_crypto_op *op) | 472 | mlx5_crypto_cqe_err_handle(struct mlx5_crypto_qp *qp, struct rte_crypto_op *op) |
4455 | 473 | { | 473 | { |
4456 | 474 | const uint32_t idx = qp->ci & (qp->entries_n - 1); | 474 | const uint32_t idx = qp->ci & (qp->entries_n - 1); |
4458 | 475 | volatile struct mlx5_err_cqe *cqe = (volatile struct mlx5_err_cqe *) | 475 | volatile struct mlx5_error_cqe *cqe = (volatile struct mlx5_error_cqe *) |
4459 | 476 | &qp->cq_obj.cqes[idx]; | 476 | &qp->cq_obj.cqes[idx]; |
4460 | 477 | 477 | ||
4461 | 478 | op->status = RTE_CRYPTO_OP_STATUS_ERROR; | 478 | op->status = RTE_CRYPTO_OP_STATUS_ERROR; |
4462 | diff --git a/drivers/crypto/openssl/rte_openssl_pmd.c b/drivers/crypto/openssl/rte_openssl_pmd.c | |||
4463 | index 514e932..a75fb09 100644 | |||
4464 | --- a/drivers/crypto/openssl/rte_openssl_pmd.c | |||
4465 | +++ b/drivers/crypto/openssl/rte_openssl_pmd.c | |||
4466 | @@ -4,6 +4,7 @@ | |||
4467 | 4 | 4 | ||
4468 | 5 | #define OPENSSL_API_COMPAT 0x10100000L | 5 | #define OPENSSL_API_COMPAT 0x10100000L |
4469 | 6 | 6 | ||
4470 | 7 | #include <rte_byteorder.h> | ||
4471 | 7 | #include <rte_common.h> | 8 | #include <rte_common.h> |
4472 | 8 | #include <rte_hexdump.h> | 9 | #include <rte_hexdump.h> |
4473 | 9 | #include <rte_cryptodev.h> | 10 | #include <rte_cryptodev.h> |
4474 | @@ -43,22 +44,6 @@ static void HMAC_CTX_free(HMAC_CTX *ctx) | |||
4475 | 43 | 44 | ||
4476 | 44 | static int cryptodev_openssl_remove(struct rte_vdev_device *vdev); | 45 | static int cryptodev_openssl_remove(struct rte_vdev_device *vdev); |
4477 | 45 | 46 | ||
4478 | 46 | /*----------------------------------------------------------------------------*/ | ||
4479 | 47 | |||
4480 | 48 | /** | ||
4481 | 49 | * Increment counter by 1 | ||
4482 | 50 | * Counter is 64 bit array, big-endian | ||
4483 | 51 | */ | ||
4484 | 52 | static void | ||
4485 | 53 | ctr_inc(uint8_t *ctr) | ||
4486 | 54 | { | ||
4487 | 55 | uint64_t *ctr64 = (uint64_t *)ctr; | ||
4488 | 56 | |||
4489 | 57 | *ctr64 = __builtin_bswap64(*ctr64); | ||
4490 | 58 | (*ctr64)++; | ||
4491 | 59 | *ctr64 = __builtin_bswap64(*ctr64); | ||
4492 | 60 | } | ||
4493 | 61 | |||
4494 | 62 | /* | 47 | /* |
4495 | 63 | *------------------------------------------------------------------------------ | 48 | *------------------------------------------------------------------------------ |
4496 | 64 | * Session Prepare | 49 | * Session Prepare |
4497 | @@ -465,6 +450,15 @@ openssl_set_session_cipher_parameters(struct openssl_session *sess, | |||
4498 | 465 | sess->cipher.key.length, | 450 | sess->cipher.key.length, |
4499 | 466 | sess->cipher.key.data) != 0) | 451 | sess->cipher.key.data) != 0) |
4500 | 467 | return -EINVAL; | 452 | return -EINVAL; |
4501 | 453 | |||
4502 | 454 | |||
4503 | 455 | /* We use 3DES encryption also for decryption. | ||
4504 | 456 | * IV is not important for 3DES ECB. | ||
4505 | 457 | */ | ||
4506 | 458 | if (EVP_EncryptInit_ex(sess->cipher.ctx, EVP_des_ede3_ecb(), | ||
4507 | 459 | NULL, sess->cipher.key.data, NULL) != 1) | ||
4508 | 460 | return -EINVAL; | ||
4509 | 461 | |||
4510 | 468 | break; | 462 | break; |
4511 | 469 | 463 | ||
4512 | 470 | case RTE_CRYPTO_CIPHER_DES_CBC: | 464 | case RTE_CRYPTO_CIPHER_DES_CBC: |
4513 | @@ -1001,10 +995,10 @@ process_cipher_decrypt_err: | |||
4514 | 1001 | /** Process cipher des 3 ctr encryption, decryption algorithm */ | 995 | /** Process cipher des 3 ctr encryption, decryption algorithm */ |
4515 | 1002 | static int | 996 | static int |
4516 | 1003 | process_openssl_cipher_des3ctr(struct rte_mbuf *mbuf_src, uint8_t *dst, | 997 | process_openssl_cipher_des3ctr(struct rte_mbuf *mbuf_src, uint8_t *dst, |
4519 | 1004 | int offset, uint8_t *iv, uint8_t *key, int srclen, | 998 | int offset, uint8_t *iv, int srclen, EVP_CIPHER_CTX *ctx) |
4518 | 1005 | EVP_CIPHER_CTX *ctx) | ||
4520 | 1006 | { | 999 | { |
4522 | 1007 | uint8_t ebuf[8], ctr[8]; | 1000 | uint8_t ebuf[8]; |
4523 | 1001 | uint64_t ctr; | ||
4524 | 1008 | int unused, n; | 1002 | int unused, n; |
4525 | 1009 | struct rte_mbuf *m; | 1003 | struct rte_mbuf *m; |
4526 | 1010 | uint8_t *src; | 1004 | uint8_t *src; |
4527 | @@ -1020,21 +1014,19 @@ process_openssl_cipher_des3ctr(struct rte_mbuf *mbuf_src, uint8_t *dst, | |||
4528 | 1020 | src = rte_pktmbuf_mtod_offset(m, uint8_t *, offset); | 1014 | src = rte_pktmbuf_mtod_offset(m, uint8_t *, offset); |
4529 | 1021 | l = rte_pktmbuf_data_len(m) - offset; | 1015 | l = rte_pktmbuf_data_len(m) - offset; |
4530 | 1022 | 1016 | ||
4538 | 1023 | /* We use 3DES encryption also for decryption. | 1017 | memcpy(&ctr, iv, 8); |
4532 | 1024 | * IV is not important for 3DES ecb | ||
4533 | 1025 | */ | ||
4534 | 1026 | if (EVP_EncryptInit_ex(ctx, EVP_des_ede3_ecb(), NULL, key, NULL) <= 0) | ||
4535 | 1027 | goto process_cipher_des3ctr_err; | ||
4536 | 1028 | |||
4537 | 1029 | memcpy(ctr, iv, 8); | ||
4539 | 1030 | 1018 | ||
4540 | 1031 | for (n = 0; n < srclen; n++) { | 1019 | for (n = 0; n < srclen; n++) { |
4541 | 1032 | if (n % 8 == 0) { | 1020 | if (n % 8 == 0) { |
4542 | 1021 | uint64_t cpu_ctr; | ||
4543 | 1022 | |||
4544 | 1033 | if (EVP_EncryptUpdate(ctx, | 1023 | if (EVP_EncryptUpdate(ctx, |
4545 | 1034 | (unsigned char *)&ebuf, &unused, | 1024 | (unsigned char *)&ebuf, &unused, |
4546 | 1035 | (const unsigned char *)&ctr, 8) <= 0) | 1025 | (const unsigned char *)&ctr, 8) <= 0) |
4547 | 1036 | goto process_cipher_des3ctr_err; | 1026 | goto process_cipher_des3ctr_err; |
4549 | 1037 | ctr_inc(ctr); | 1027 | cpu_ctr = rte_be_to_cpu_64(ctr); |
4550 | 1028 | cpu_ctr++; | ||
4551 | 1029 | ctr = rte_cpu_to_be_64(cpu_ctr); | ||
4552 | 1038 | } | 1030 | } |
4553 | 1039 | dst[n] = *(src++) ^ ebuf[n % 8]; | 1031 | dst[n] = *(src++) ^ ebuf[n % 8]; |
4554 | 1040 | 1032 | ||
4555 | @@ -1460,8 +1452,7 @@ process_openssl_cipher_op | |||
4556 | 1460 | srclen, ctx_copy, inplace); | 1452 | srclen, ctx_copy, inplace); |
4557 | 1461 | else | 1453 | else |
4558 | 1462 | status = process_openssl_cipher_des3ctr(mbuf_src, dst, | 1454 | status = process_openssl_cipher_des3ctr(mbuf_src, dst, |
4561 | 1463 | op->sym->cipher.data.offset, iv, | 1455 | op->sym->cipher.data.offset, iv, srclen, |
4560 | 1464 | sess->cipher.key.data, srclen, | ||
4562 | 1465 | ctx_copy); | 1456 | ctx_copy); |
4563 | 1466 | 1457 | ||
4564 | 1467 | EVP_CIPHER_CTX_free(ctx_copy); | 1458 | EVP_CIPHER_CTX_free(ctx_copy); |
4565 | diff --git a/drivers/dma/idxd/dpdk_idxd_cfg.py b/drivers/dma/idxd/dpdk_idxd_cfg.py | |||
4566 | index 3f5d5ee..5c9572b 100755 | |||
4567 | --- a/drivers/dma/idxd/dpdk_idxd_cfg.py | |||
4568 | +++ b/drivers/dma/idxd/dpdk_idxd_cfg.py | |||
4569 | @@ -13,18 +13,24 @@ import os.path | |||
4570 | 13 | 13 | ||
4571 | 14 | 14 | ||
4572 | 15 | class SysfsDir: | 15 | class SysfsDir: |
4573 | 16 | verbose = False | ||
4574 | 17 | |||
4575 | 16 | "Used to read/write paths in a sysfs directory" | 18 | "Used to read/write paths in a sysfs directory" |
4576 | 17 | def __init__(self, path): | 19 | def __init__(self, path): |
4577 | 18 | self.path = path | 20 | self.path = path |
4578 | 19 | 21 | ||
4579 | 20 | def read_int(self, filename): | 22 | def read_int(self, filename): |
4580 | 21 | "Return a value from sysfs file" | 23 | "Return a value from sysfs file" |
4581 | 24 | if SysfsDir.verbose: | ||
4582 | 25 | print(f"Reading '{filename}' in {self.path}") | ||
4583 | 22 | with open(os.path.join(self.path, filename)) as f: | 26 | with open(os.path.join(self.path, filename)) as f: |
4584 | 23 | return int(f.readline()) | 27 | return int(f.readline()) |
4585 | 24 | 28 | ||
4586 | 25 | def write_values(self, values): | 29 | def write_values(self, values): |
4587 | 26 | "write dictionary, where key is filename and value is value to write" | 30 | "write dictionary, where key is filename and value is value to write" |
4588 | 27 | for filename, contents in values.items(): | 31 | for filename, contents in values.items(): |
4589 | 32 | if SysfsDir.verbose: | ||
4590 | 33 | print(f"Writing '{contents}' to '{filename}' in {self.path}") | ||
4591 | 28 | with open(os.path.join(self.path, filename), "w") as f: | 34 | with open(os.path.join(self.path, filename), "w") as f: |
4592 | 29 | f.write(str(contents)) | 35 | f.write(str(contents)) |
4593 | 30 | 36 | ||
4594 | @@ -63,7 +69,15 @@ def get_dsa_id(pci): | |||
4595 | 63 | sys.exit(f"Could not get device ID for device {pci}") | 69 | sys.exit(f"Could not get device ID for device {pci}") |
4596 | 64 | 70 | ||
4597 | 65 | 71 | ||
4599 | 66 | def configure_dsa(dsa_id, queues, prefix): | 72 | def parse_wq_opts(wq_opts): |
4600 | 73 | "Parse user-specified queue configuration, creating a dict of options" | ||
4601 | 74 | try: | ||
4602 | 75 | return {o.split('=')[0]: o.split('=')[1] for o in wq_opts} | ||
4603 | 76 | except ValueError: | ||
4604 | 77 | sys.exit("Invalid --wq-option format, use format 'option=value'") | ||
4605 | 78 | |||
4606 | 79 | |||
4607 | 80 | def configure_dsa(dsa_id, args): | ||
4608 | 67 | "Configure the DSA instance with appropriate number of queues" | 81 | "Configure the DSA instance with appropriate number of queues" |
4609 | 68 | dsa_dir = SysfsDir(f"/sys/bus/dsa/devices/dsa{dsa_id}") | 82 | dsa_dir = SysfsDir(f"/sys/bus/dsa/devices/dsa{dsa_id}") |
4610 | 69 | 83 | ||
4611 | @@ -72,8 +86,8 @@ def configure_dsa(dsa_id, queues, prefix): | |||
4612 | 72 | max_queues = dsa_dir.read_int("max_work_queues") | 86 | max_queues = dsa_dir.read_int("max_work_queues") |
4613 | 73 | max_work_queues_size = dsa_dir.read_int("max_work_queues_size") | 87 | max_work_queues_size = dsa_dir.read_int("max_work_queues_size") |
4614 | 74 | 88 | ||
4617 | 75 | nb_queues = min(queues, max_queues) | 89 | nb_queues = min(args.q, max_queues) |
4618 | 76 | if queues > nb_queues: | 90 | if args.q > nb_queues: |
4619 | 77 | print(f"Setting number of queues to max supported value: {max_queues}") | 91 | print(f"Setting number of queues to max supported value: {max_queues}") |
4620 | 78 | 92 | ||
4621 | 79 | # we want one engine per group, and no more engines than queues | 93 | # we want one engine per group, and no more engines than queues |
4622 | @@ -83,14 +97,18 @@ def configure_dsa(dsa_id, queues, prefix): | |||
4623 | 83 | 97 | ||
4624 | 84 | # configure each queue | 98 | # configure each queue |
4625 | 85 | for q in range(nb_queues): | 99 | for q in range(nb_queues): |
4626 | 100 | wqcfg = {"group_id": q % nb_groups, | ||
4627 | 101 | "type": "user", | ||
4628 | 102 | "mode": "dedicated", | ||
4629 | 103 | "name": f"{args.prefix}_wq{dsa_id}.{q}", | ||
4630 | 104 | "priority": 1, | ||
4631 | 105 | "max_batch_size": 1024, | ||
4632 | 106 | "size": int(max_work_queues_size / nb_queues)} | ||
4633 | 86 | wq_dir = SysfsDir(os.path.join(dsa_dir.path, f"wq{dsa_id}.{q}")) | 107 | wq_dir = SysfsDir(os.path.join(dsa_dir.path, f"wq{dsa_id}.{q}")) |
4641 | 87 | wq_dir.write_values({"group_id": q % nb_groups, | 108 | if os.path.exists(os.path.join(wq_dir.path, f"driver_name")): |
4642 | 88 | "type": "user", | 109 | wqcfg.update({"driver_name": "user"}) |
4643 | 89 | "mode": "dedicated", | 110 | wqcfg.update(parse_wq_opts(args.wq_option)) |
4644 | 90 | "name": f"{prefix}_wq{dsa_id}.{q}", | 111 | wq_dir.write_values(wqcfg) |
4638 | 91 | "priority": 1, | ||
4639 | 92 | "max_batch_size": 1024, | ||
4640 | 93 | "size": int(max_work_queues_size / nb_queues)}) | ||
4645 | 94 | 112 | ||
4646 | 95 | # enable device and then queues | 113 | # enable device and then queues |
4647 | 96 | idxd_dir = SysfsDir(get_drv_dir("idxd")) | 114 | idxd_dir = SysfsDir(get_drv_dir("idxd")) |
4648 | @@ -112,16 +130,22 @@ def main(args): | |||
4649 | 112 | arg_p.add_argument('--name-prefix', metavar='prefix', dest='prefix', | 130 | arg_p.add_argument('--name-prefix', metavar='prefix', dest='prefix', |
4650 | 113 | default="dpdk", | 131 | default="dpdk", |
4651 | 114 | help="Prefix for workqueue name to mark for DPDK use [default: 'dpdk']") | 132 | help="Prefix for workqueue name to mark for DPDK use [default: 'dpdk']") |
4652 | 133 | arg_p.add_argument('--wq-option', action='append', default=[], | ||
4653 | 134 | help="Provide additional config option for queues (format 'x=y')") | ||
4654 | 135 | arg_p.add_argument('--verbose', '-v', action='store_true', | ||
4655 | 136 | help="Provide addition info on tasks being performed") | ||
4656 | 115 | arg_p.add_argument('--reset', action='store_true', | 137 | arg_p.add_argument('--reset', action='store_true', |
4657 | 116 | help="Reset DSA device and its queues") | 138 | help="Reset DSA device and its queues") |
4658 | 117 | parsed_args = arg_p.parse_args(args[1:]) | 139 | parsed_args = arg_p.parse_args(args[1:]) |
4659 | 118 | 140 | ||
4660 | 119 | dsa_id = parsed_args.dsa_id | 141 | dsa_id = parsed_args.dsa_id |
4661 | 120 | dsa_id = get_dsa_id(dsa_id) if ':' in dsa_id else dsa_id | 142 | dsa_id = get_dsa_id(dsa_id) if ':' in dsa_id else dsa_id |
4662 | 143 | |||
4663 | 144 | SysfsDir.verbose = parsed_args.verbose | ||
4664 | 121 | if parsed_args.reset: | 145 | if parsed_args.reset: |
4665 | 122 | reset_device(dsa_id) | 146 | reset_device(dsa_id) |
4666 | 123 | else: | 147 | else: |
4668 | 124 | configure_dsa(dsa_id, parsed_args.q, parsed_args.prefix) | 148 | configure_dsa(dsa_id, parsed_args) |
4669 | 125 | 149 | ||
4670 | 126 | 150 | ||
4671 | 127 | if __name__ == "__main__": | 151 | if __name__ == "__main__": |
4672 | diff --git a/drivers/dma/idxd/idxd_pci.c b/drivers/dma/idxd/idxd_pci.c | |||
4673 | index 2f8ec06..3dd25bf 100644 | |||
4674 | --- a/drivers/dma/idxd/idxd_pci.c | |||
4675 | +++ b/drivers/dma/idxd/idxd_pci.c | |||
4676 | @@ -292,7 +292,7 @@ init_pci_device(struct rte_pci_device *dev, struct idxd_dmadev *idxd, | |||
4677 | 292 | return nb_wqs; | 292 | return nb_wqs; |
4678 | 293 | 293 | ||
4679 | 294 | err: | 294 | err: |
4681 | 295 | free(pci); | 295 | rte_free(pci); |
4682 | 296 | return err_code; | 296 | return err_code; |
4683 | 297 | } | 297 | } |
4684 | 298 | 298 | ||
4685 | diff --git a/drivers/event/cnxk/cnxk_eventdev.c b/drivers/event/cnxk/cnxk_eventdev.c | |||
4686 | index 2d422ae..4ad16d2 100644 | |||
4687 | --- a/drivers/event/cnxk/cnxk_eventdev.c | |||
4688 | +++ b/drivers/event/cnxk/cnxk_eventdev.c | |||
4689 | @@ -202,8 +202,8 @@ cnxk_setup_event_ports(const struct rte_eventdev *event_dev, | |||
4690 | 202 | return 0; | 202 | return 0; |
4691 | 203 | hws_fini: | 203 | hws_fini: |
4692 | 204 | for (i = i - 1; i >= 0; i--) { | 204 | for (i = i - 1; i >= 0; i--) { |
4693 | 205 | event_dev->data->ports[i] = NULL; | ||
4694 | 206 | rte_free(cnxk_sso_hws_get_cookie(event_dev->data->ports[i])); | 205 | rte_free(cnxk_sso_hws_get_cookie(event_dev->data->ports[i])); |
4695 | 206 | event_dev->data->ports[i] = NULL; | ||
4696 | 207 | } | 207 | } |
4697 | 208 | return -ENOMEM; | 208 | return -ENOMEM; |
4698 | 209 | } | 209 | } |
4699 | diff --git a/drivers/event/octeontx/ssovf_evdev.c b/drivers/event/octeontx/ssovf_evdev.c | |||
4700 | index 634fa8a..42240d9 100644 | |||
4701 | --- a/drivers/event/octeontx/ssovf_evdev.c | |||
4702 | +++ b/drivers/event/octeontx/ssovf_evdev.c | |||
4703 | @@ -713,10 +713,20 @@ ssovf_close(struct rte_eventdev *dev) | |||
4704 | 713 | } | 713 | } |
4705 | 714 | 714 | ||
4706 | 715 | static int | 715 | static int |
4708 | 716 | ssovf_parsekv(const char *key __rte_unused, const char *value, void *opaque) | 716 | ssovf_parsekv(const char *key, const char *value, void *opaque) |
4709 | 717 | { | 717 | { |
4712 | 718 | int *flag = opaque; | 718 | uint8_t *flag = opaque; |
4713 | 719 | *flag = !!atoi(value); | 719 | uint64_t v; |
4714 | 720 | char *end; | ||
4715 | 721 | |||
4716 | 722 | errno = 0; | ||
4717 | 723 | v = strtoul(value, &end, 0); | ||
4718 | 724 | if ((errno != 0) || (value == end) || *end != '\0' || v > 1) { | ||
4719 | 725 | ssovf_log_err("invalid %s value %s", key, value); | ||
4720 | 726 | return -EINVAL; | ||
4721 | 727 | } | ||
4722 | 728 | |||
4723 | 729 | *flag = !!v; | ||
4724 | 720 | return 0; | 730 | return 0; |
4725 | 721 | } | 731 | } |
4726 | 722 | 732 | ||
4727 | diff --git a/drivers/event/sw/iq_chunk.h b/drivers/event/sw/iq_chunk.h | |||
4728 | index 31d013e..7820815 100644 | |||
4729 | --- a/drivers/event/sw/iq_chunk.h | |||
4730 | +++ b/drivers/event/sw/iq_chunk.h | |||
4731 | @@ -9,8 +9,6 @@ | |||
4732 | 9 | #include <stdbool.h> | 9 | #include <stdbool.h> |
4733 | 10 | #include <rte_eventdev.h> | 10 | #include <rte_eventdev.h> |
4734 | 11 | 11 | ||
4735 | 12 | #define IQ_ROB_NAMESIZE 12 | ||
4736 | 13 | |||
4737 | 14 | struct sw_queue_chunk { | 12 | struct sw_queue_chunk { |
4738 | 15 | struct rte_event events[SW_EVS_PER_Q_CHUNK]; | 13 | struct rte_event events[SW_EVS_PER_Q_CHUNK]; |
4739 | 16 | struct sw_queue_chunk *next; | 14 | struct sw_queue_chunk *next; |
4740 | diff --git a/drivers/event/sw/sw_evdev.c b/drivers/event/sw/sw_evdev.c | |||
4741 | index e43bf25..d1fd0ee 100644 | |||
4742 | --- a/drivers/event/sw/sw_evdev.c | |||
4743 | +++ b/drivers/event/sw/sw_evdev.c | |||
4744 | @@ -229,9 +229,7 @@ qid_init(struct sw_evdev *sw, unsigned int idx, int type, | |||
4745 | 229 | const struct rte_event_queue_conf *queue_conf) | 229 | const struct rte_event_queue_conf *queue_conf) |
4746 | 230 | { | 230 | { |
4747 | 231 | unsigned int i; | 231 | unsigned int i; |
4748 | 232 | int dev_id = sw->data->dev_id; | ||
4749 | 233 | int socket_id = sw->data->socket_id; | 232 | int socket_id = sw->data->socket_id; |
4750 | 234 | char buf[IQ_ROB_NAMESIZE]; | ||
4751 | 235 | struct sw_qid *qid = &sw->qids[idx]; | 233 | struct sw_qid *qid = &sw->qids[idx]; |
4752 | 236 | 234 | ||
4753 | 237 | /* Initialize the FID structures to no pinning (-1), and zero packets */ | 235 | /* Initialize the FID structures to no pinning (-1), and zero packets */ |
4754 | @@ -261,8 +259,7 @@ qid_init(struct sw_evdev *sw, unsigned int idx, int type, | |||
4755 | 261 | goto cleanup; | 259 | goto cleanup; |
4756 | 262 | } | 260 | } |
4757 | 263 | 261 | ||
4760 | 264 | snprintf(buf, sizeof(buf), "sw%d_iq_%d_rob", dev_id, i); | 262 | qid->reorder_buffer = rte_zmalloc_socket(NULL, |
4759 | 265 | qid->reorder_buffer = rte_zmalloc_socket(buf, | ||
4761 | 266 | window_size * sizeof(qid->reorder_buffer[0]), | 263 | window_size * sizeof(qid->reorder_buffer[0]), |
4762 | 267 | 0, socket_id); | 264 | 0, socket_id); |
4763 | 268 | if (!qid->reorder_buffer) { | 265 | if (!qid->reorder_buffer) { |
4764 | diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c | |||
4765 | index 88cdc7e..164597d 100644 | |||
4766 | --- a/drivers/net/af_packet/rte_eth_af_packet.c | |||
4767 | +++ b/drivers/net/af_packet/rte_eth_af_packet.c | |||
4768 | @@ -6,6 +6,7 @@ | |||
4769 | 6 | * All rights reserved. | 6 | * All rights reserved. |
4770 | 7 | */ | 7 | */ |
4771 | 8 | 8 | ||
4772 | 9 | #include <rte_common.h> | ||
4773 | 9 | #include <rte_string_fns.h> | 10 | #include <rte_string_fns.h> |
4774 | 10 | #include <rte_mbuf.h> | 11 | #include <rte_mbuf.h> |
4775 | 11 | #include <ethdev_driver.h> | 12 | #include <ethdev_driver.h> |
4776 | @@ -38,7 +39,7 @@ | |||
4777 | 38 | #define DFLT_FRAME_SIZE (1 << 11) | 39 | #define DFLT_FRAME_SIZE (1 << 11) |
4778 | 39 | #define DFLT_FRAME_COUNT (1 << 9) | 40 | #define DFLT_FRAME_COUNT (1 << 9) |
4779 | 40 | 41 | ||
4781 | 41 | struct pkt_rx_queue { | 42 | struct __rte_cache_aligned pkt_rx_queue { |
4782 | 42 | int sockfd; | 43 | int sockfd; |
4783 | 43 | 44 | ||
4784 | 44 | struct iovec *rd; | 45 | struct iovec *rd; |
4785 | @@ -54,7 +55,7 @@ struct pkt_rx_queue { | |||
4786 | 54 | volatile unsigned long rx_bytes; | 55 | volatile unsigned long rx_bytes; |
4787 | 55 | }; | 56 | }; |
4788 | 56 | 57 | ||
4790 | 57 | struct pkt_tx_queue { | 58 | struct __rte_cache_aligned pkt_tx_queue { |
4791 | 58 | int sockfd; | 59 | int sockfd; |
4792 | 59 | unsigned int frame_data_size; | 60 | unsigned int frame_data_size; |
4793 | 60 | 61 | ||
4794 | diff --git a/drivers/net/af_xdp/rte_eth_af_xdp.c b/drivers/net/af_xdp/rte_eth_af_xdp.c | |||
4795 | index d7214c2..5e2c239 100644 | |||
4796 | --- a/drivers/net/af_xdp/rte_eth_af_xdp.c | |||
4797 | +++ b/drivers/net/af_xdp/rte_eth_af_xdp.c | |||
4798 | @@ -100,6 +100,7 @@ struct pkt_rx_queue { | |||
4799 | 100 | struct xsk_umem_info *umem; | 100 | struct xsk_umem_info *umem; |
4800 | 101 | struct xsk_socket *xsk; | 101 | struct xsk_socket *xsk; |
4801 | 102 | struct rte_mempool *mb_pool; | 102 | struct rte_mempool *mb_pool; |
4802 | 103 | uint16_t port; | ||
4803 | 103 | 104 | ||
4804 | 104 | struct rx_stats stats; | 105 | struct rx_stats stats; |
4805 | 105 | 106 | ||
4806 | @@ -270,6 +271,7 @@ af_xdp_rx_zc(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) | |||
4807 | 270 | unsigned long rx_bytes = 0; | 271 | unsigned long rx_bytes = 0; |
4808 | 271 | int i; | 272 | int i; |
4809 | 272 | struct rte_mbuf *fq_bufs[ETH_AF_XDP_RX_BATCH_SIZE]; | 273 | struct rte_mbuf *fq_bufs[ETH_AF_XDP_RX_BATCH_SIZE]; |
4810 | 274 | struct rte_eth_dev *dev = &rte_eth_devices[rxq->port]; | ||
4811 | 273 | 275 | ||
4812 | 274 | nb_pkts = xsk_ring_cons__peek(rx, nb_pkts, &idx_rx); | 276 | nb_pkts = xsk_ring_cons__peek(rx, nb_pkts, &idx_rx); |
4813 | 275 | 277 | ||
4814 | @@ -297,6 +299,7 @@ af_xdp_rx_zc(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) | |||
4815 | 297 | * xsk_ring_cons__peek | 299 | * xsk_ring_cons__peek |
4816 | 298 | */ | 300 | */ |
4817 | 299 | rx->cached_cons -= nb_pkts; | 301 | rx->cached_cons -= nb_pkts; |
4818 | 302 | dev->data->rx_mbuf_alloc_failed += nb_pkts; | ||
4819 | 300 | return 0; | 303 | return 0; |
4820 | 301 | } | 304 | } |
4821 | 302 | 305 | ||
4822 | @@ -319,6 +322,7 @@ af_xdp_rx_zc(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) | |||
4823 | 319 | bufs[i]->data_off = offset - sizeof(struct rte_mbuf) - | 322 | bufs[i]->data_off = offset - sizeof(struct rte_mbuf) - |
4824 | 320 | rte_pktmbuf_priv_size(umem->mb_pool) - | 323 | rte_pktmbuf_priv_size(umem->mb_pool) - |
4825 | 321 | umem->mb_pool->header_size; | 324 | umem->mb_pool->header_size; |
4826 | 325 | bufs[i]->port = rxq->port; | ||
4827 | 322 | 326 | ||
4828 | 323 | rte_pktmbuf_pkt_len(bufs[i]) = len; | 327 | rte_pktmbuf_pkt_len(bufs[i]) = len; |
4829 | 324 | rte_pktmbuf_data_len(bufs[i]) = len; | 328 | rte_pktmbuf_data_len(bufs[i]) = len; |
4830 | @@ -347,6 +351,7 @@ af_xdp_rx_cp(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) | |||
4831 | 347 | int i; | 351 | int i; |
4832 | 348 | uint32_t free_thresh = fq->size >> 1; | 352 | uint32_t free_thresh = fq->size >> 1; |
4833 | 349 | struct rte_mbuf *mbufs[ETH_AF_XDP_RX_BATCH_SIZE]; | 353 | struct rte_mbuf *mbufs[ETH_AF_XDP_RX_BATCH_SIZE]; |
4834 | 354 | struct rte_eth_dev *dev = &rte_eth_devices[rxq->port]; | ||
4835 | 350 | 355 | ||
4836 | 351 | if (xsk_prod_nb_free(fq, free_thresh) >= free_thresh) | 356 | if (xsk_prod_nb_free(fq, free_thresh) >= free_thresh) |
4837 | 352 | (void)reserve_fill_queue(umem, nb_pkts, NULL, fq); | 357 | (void)reserve_fill_queue(umem, nb_pkts, NULL, fq); |
4838 | @@ -365,6 +370,8 @@ af_xdp_rx_cp(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) | |||
4839 | 365 | * xsk_ring_cons__peek | 370 | * xsk_ring_cons__peek |
4840 | 366 | */ | 371 | */ |
4841 | 367 | rx->cached_cons -= nb_pkts; | 372 | rx->cached_cons -= nb_pkts; |
4842 | 373 | dev->data->rx_mbuf_alloc_failed += nb_pkts; | ||
4843 | 374 | |||
4844 | 368 | return 0; | 375 | return 0; |
4845 | 369 | } | 376 | } |
4846 | 370 | 377 | ||
4847 | @@ -385,6 +392,7 @@ af_xdp_rx_cp(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts) | |||
4848 | 385 | rte_pktmbuf_data_len(mbufs[i]) = len; | 392 | rte_pktmbuf_data_len(mbufs[i]) = len; |
4849 | 386 | rx_bytes += len; | 393 | rx_bytes += len; |
4850 | 387 | bufs[i] = mbufs[i]; | 394 | bufs[i] = mbufs[i]; |
4851 | 395 | bufs[i]->port = rxq->port; | ||
4852 | 388 | } | 396 | } |
4853 | 389 | 397 | ||
4854 | 390 | xsk_ring_cons__release(rx, nb_pkts); | 398 | xsk_ring_cons__release(rx, nb_pkts); |
4855 | @@ -1447,6 +1455,8 @@ eth_rx_queue_setup(struct rte_eth_dev *dev, | |||
4856 | 1447 | rxq->fds[0].fd = xsk_socket__fd(rxq->xsk); | 1455 | rxq->fds[0].fd = xsk_socket__fd(rxq->xsk); |
4857 | 1448 | rxq->fds[0].events = POLLIN; | 1456 | rxq->fds[0].events = POLLIN; |
4858 | 1449 | 1457 | ||
4859 | 1458 | rxq->port = dev->data->port_id; | ||
4860 | 1459 | |||
4861 | 1450 | dev->data->rx_queues[rx_queue_id] = rxq; | 1460 | dev->data->rx_queues[rx_queue_id] = rxq; |
4862 | 1451 | return 0; | 1461 | return 0; |
4863 | 1452 | 1462 | ||
4864 | diff --git a/drivers/net/ark/ark_ethdev_tx.c b/drivers/net/ark/ark_ethdev_tx.c | |||
4865 | index 676e411..0914717 100644 | |||
4866 | --- a/drivers/net/ark/ark_ethdev_tx.c | |||
4867 | +++ b/drivers/net/ark/ark_ethdev_tx.c | |||
4868 | @@ -39,8 +39,8 @@ struct ark_tx_queue { | |||
4869 | 39 | uint32_t queue_mask; | 39 | uint32_t queue_mask; |
4870 | 40 | 40 | ||
4871 | 41 | /* 3 indexes to the paired data rings. */ | 41 | /* 3 indexes to the paired data rings. */ |
4874 | 42 | int32_t prod_index; /* where to put the next one */ | 42 | uint32_t prod_index; /* where to put the next one */ |
4875 | 43 | int32_t free_index; /* mbuf has been freed */ | 43 | uint32_t free_index; /* mbuf has been freed */ |
4876 | 44 | 44 | ||
4877 | 45 | /* The queue Id is used to identify the HW Q */ | 45 | /* The queue Id is used to identify the HW Q */ |
4878 | 46 | uint16_t phys_qid; | 46 | uint16_t phys_qid; |
4879 | @@ -49,7 +49,7 @@ struct ark_tx_queue { | |||
4880 | 49 | 49 | ||
4881 | 50 | /* next cache line - fields written by device */ | 50 | /* next cache line - fields written by device */ |
4882 | 51 | RTE_MARKER cacheline1 __rte_cache_min_aligned; | 51 | RTE_MARKER cacheline1 __rte_cache_min_aligned; |
4884 | 52 | volatile int32_t cons_index; /* hw is done, can be freed */ | 52 | volatile uint32_t cons_index; /* hw is done, can be freed */ |
4885 | 53 | } __rte_cache_aligned; | 53 | } __rte_cache_aligned; |
4886 | 54 | 54 | ||
4887 | 55 | /* Forward declarations */ | 55 | /* Forward declarations */ |
4888 | @@ -123,7 +123,7 @@ eth_ark_xmit_pkts(void *vtxq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) | |||
4889 | 123 | uint32_t user_meta[5]; | 123 | uint32_t user_meta[5]; |
4890 | 124 | 124 | ||
4891 | 125 | int stat; | 125 | int stat; |
4893 | 126 | int32_t prod_index_limit; | 126 | uint32_t prod_index_limit; |
4894 | 127 | uint16_t nb; | 127 | uint16_t nb; |
4895 | 128 | uint8_t user_len = 0; | 128 | uint8_t user_len = 0; |
4896 | 129 | const uint32_t min_pkt_len = ARK_MIN_TX_PKTLEN; | 129 | const uint32_t min_pkt_len = ARK_MIN_TX_PKTLEN; |
4897 | @@ -138,8 +138,13 @@ eth_ark_xmit_pkts(void *vtxq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts) | |||
4898 | 138 | /* leave 4 elements mpu data */ | 138 | /* leave 4 elements mpu data */ |
4899 | 139 | prod_index_limit = queue->queue_size + queue->free_index - 4; | 139 | prod_index_limit = queue->queue_size + queue->free_index - 4; |
4900 | 140 | 140 | ||
4901 | 141 | /* Populate the buffer bringing prod_index up to or slightly beyond | ||
4902 | 142 | * prod_index_limit. Prod_index will increment by 2 or more each | ||
4903 | 143 | * iteration. Note: indexes are uint32_t, cast to (signed) int32_t | ||
4904 | 144 | * to catch the slight overage case; e.g. (200 - 201) | ||
4905 | 145 | */ | ||
4906 | 141 | for (nb = 0; | 146 | for (nb = 0; |
4908 | 142 | (nb < nb_pkts) && (prod_index_limit - queue->prod_index) > 0; | 147 | (nb < nb_pkts) && (int32_t)(prod_index_limit - queue->prod_index) > 0; |
4909 | 143 | ++nb) { | 148 | ++nb) { |
4910 | 144 | mbuf = tx_pkts[nb]; | 149 | mbuf = tx_pkts[nb]; |
4911 | 145 | 150 | ||
4912 | @@ -209,13 +214,13 @@ eth_ark_tx_jumbo(struct ark_tx_queue *queue, struct rte_mbuf *mbuf, | |||
4913 | 209 | uint32_t *user_meta, uint8_t meta_cnt) | 214 | uint32_t *user_meta, uint8_t meta_cnt) |
4914 | 210 | { | 215 | { |
4915 | 211 | struct rte_mbuf *next; | 216 | struct rte_mbuf *next; |
4917 | 212 | int32_t free_queue_space; | 217 | uint32_t free_queue_space; |
4918 | 213 | uint8_t flags = ARK_DDM_SOP; | 218 | uint8_t flags = ARK_DDM_SOP; |
4919 | 214 | 219 | ||
4920 | 215 | free_queue_space = queue->queue_mask - | 220 | free_queue_space = queue->queue_mask - |
4921 | 216 | (queue->prod_index - queue->free_index); | 221 | (queue->prod_index - queue->free_index); |
4922 | 217 | /* We need up to 4 mbufs for first header and 2 for subsequent ones */ | 222 | /* We need up to 4 mbufs for first header and 2 for subsequent ones */ |
4924 | 218 | if (unlikely(free_queue_space < (2 + (2 * mbuf->nb_segs)))) | 223 | if (unlikely(free_queue_space < (2U + (2U * mbuf->nb_segs)))) |
4925 | 219 | return -1; | 224 | return -1; |
4926 | 220 | 225 | ||
4927 | 221 | while (mbuf != NULL) { | 226 | while (mbuf != NULL) { |
4928 | @@ -424,10 +429,11 @@ free_completed_tx(struct ark_tx_queue *queue) | |||
4929 | 424 | { | 429 | { |
4930 | 425 | struct rte_mbuf *mbuf; | 430 | struct rte_mbuf *mbuf; |
4931 | 426 | union ark_tx_meta *meta; | 431 | union ark_tx_meta *meta; |
4933 | 427 | int32_t top_index; | 432 | uint32_t top_index; |
4934 | 428 | 433 | ||
4935 | 429 | top_index = queue->cons_index; /* read once */ | 434 | top_index = queue->cons_index; /* read once */ |
4937 | 430 | while ((top_index - queue->free_index) > 0) { | 435 | |
4938 | 436 | while ((int32_t)(top_index - queue->free_index) > 0) { | ||
4939 | 431 | meta = &queue->meta_q[queue->free_index & queue->queue_mask]; | 437 | meta = &queue->meta_q[queue->free_index & queue->queue_mask]; |
4940 | 432 | if (likely((meta->flags & ARK_DDM_SOP) != 0)) { | 438 | if (likely((meta->flags & ARK_DDM_SOP) != 0)) { |
4941 | 433 | mbuf = queue->bufs[queue->free_index & | 439 | mbuf = queue->bufs[queue->free_index & |
4942 | diff --git a/drivers/net/axgbe/axgbe_common.h b/drivers/net/axgbe/axgbe_common.h | |||
4943 | index df0aa21..9618d7e 100644 | |||
4944 | --- a/drivers/net/axgbe/axgbe_common.h | |||
4945 | +++ b/drivers/net/axgbe/axgbe_common.h | |||
4946 | @@ -407,8 +407,6 @@ | |||
4947 | 407 | #define MAC_MDIOSCAR_PA_WIDTH 5 | 407 | #define MAC_MDIOSCAR_PA_WIDTH 5 |
4948 | 408 | #define MAC_MDIOSCAR_RA_INDEX 0 | 408 | #define MAC_MDIOSCAR_RA_INDEX 0 |
4949 | 409 | #define MAC_MDIOSCAR_RA_WIDTH 16 | 409 | #define MAC_MDIOSCAR_RA_WIDTH 16 |
4950 | 410 | #define MAC_MDIOSCAR_REG_INDEX 0 | ||
4951 | 411 | #define MAC_MDIOSCAR_REG_WIDTH 21 | ||
4952 | 412 | #define MAC_MDIOSCCDR_BUSY_INDEX 22 | 410 | #define MAC_MDIOSCCDR_BUSY_INDEX 22 |
4953 | 413 | #define MAC_MDIOSCCDR_BUSY_WIDTH 1 | 411 | #define MAC_MDIOSCCDR_BUSY_WIDTH 1 |
4954 | 414 | #define MAC_MDIOSCCDR_CMD_INDEX 16 | 412 | #define MAC_MDIOSCCDR_CMD_INDEX 16 |
4955 | diff --git a/drivers/net/axgbe/axgbe_dev.c b/drivers/net/axgbe/axgbe_dev.c | |||
4956 | index 6a7fddf..5233633 100644 | |||
4957 | --- a/drivers/net/axgbe/axgbe_dev.c | |||
4958 | +++ b/drivers/net/axgbe/axgbe_dev.c | |||
4959 | @@ -63,15 +63,27 @@ static int mdio_complete(struct axgbe_port *pdata) | |||
4960 | 63 | return 0; | 63 | return 0; |
4961 | 64 | } | 64 | } |
4962 | 65 | 65 | ||
4963 | 66 | static unsigned int axgbe_create_mdio_sca(int port, int reg) | ||
4964 | 67 | { | ||
4965 | 68 | unsigned int mdio_sca, da; | ||
4966 | 69 | |||
4967 | 70 | da = (reg & MII_ADDR_C45) ? reg >> 16 : 0; | ||
4968 | 71 | |||
4969 | 72 | mdio_sca = 0; | ||
4970 | 73 | AXGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, RA, reg); | ||
4971 | 74 | AXGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, PA, port); | ||
4972 | 75 | AXGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, DA, da); | ||
4973 | 76 | |||
4974 | 77 | return mdio_sca; | ||
4975 | 78 | } | ||
4976 | 79 | |||
4977 | 66 | static int axgbe_write_ext_mii_regs(struct axgbe_port *pdata, int addr, | 80 | static int axgbe_write_ext_mii_regs(struct axgbe_port *pdata, int addr, |
4978 | 67 | int reg, u16 val) | 81 | int reg, u16 val) |
4979 | 68 | { | 82 | { |
4980 | 69 | unsigned int mdio_sca, mdio_sccd; | 83 | unsigned int mdio_sca, mdio_sccd; |
4981 | 70 | uint64_t timeout; | 84 | uint64_t timeout; |
4982 | 71 | 85 | ||
4986 | 72 | mdio_sca = 0; | 86 | mdio_sca = axgbe_create_mdio_sca(addr, reg); |
4984 | 73 | AXGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, REG, reg); | ||
4985 | 74 | AXGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, DA, addr); | ||
4987 | 75 | AXGMAC_IOWRITE(pdata, MAC_MDIOSCAR, mdio_sca); | 87 | AXGMAC_IOWRITE(pdata, MAC_MDIOSCAR, mdio_sca); |
4988 | 76 | 88 | ||
4989 | 77 | mdio_sccd = 0; | 89 | mdio_sccd = 0; |
4990 | @@ -97,9 +109,7 @@ static int axgbe_read_ext_mii_regs(struct axgbe_port *pdata, int addr, | |||
4991 | 97 | unsigned int mdio_sca, mdio_sccd; | 109 | unsigned int mdio_sca, mdio_sccd; |
4992 | 98 | uint64_t timeout; | 110 | uint64_t timeout; |
4993 | 99 | 111 | ||
4997 | 100 | mdio_sca = 0; | 112 | mdio_sca = axgbe_create_mdio_sca(addr, reg); |
4995 | 101 | AXGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, REG, reg); | ||
4996 | 102 | AXGMAC_SET_BITS(mdio_sca, MAC_MDIOSCAR, DA, addr); | ||
4998 | 103 | AXGMAC_IOWRITE(pdata, MAC_MDIOSCAR, mdio_sca); | 113 | AXGMAC_IOWRITE(pdata, MAC_MDIOSCAR, mdio_sca); |
4999 | 104 | 114 | ||
5000 | 105 | mdio_sccd = 0; | 115 | mdio_sccd = 0; |
Review Symbols:
+ = OK
! = Not OK
? = Question
N = Not applicable
S = Skipped
* Changelog:
- [+] Changelog entry has correct version and targeted codename
- [+] Correct formatting of changelog items
- [+] Bug references correct
- [N] Old content and logical tag match as expected (Package Merge)
* Git/maintenance:
- [+] Commits are properly split (more important on -dev than on SRUs)
* New patches:
- [+] No new patches added or dropped (it is odd that the security fix of Oracular isn't here, but it would now be in the new stable release, so it is fine to go forward)
* Many other sections are skipped as they do not apply
* I've compared the content with 23.11.4 upstream content to ensure the source was updates nice, and git can be so nice ... :-)
lappi 12:30:20 ~/work/ dpdk/deb_ dpdk (detached*) git diff v21.11.9 --dirstat
100.0% debian/
* Build/Test:
- we do not have a PPA, but Arif has tested those elsewhere IIRC and we will run testing on both sides so this is fine
This LGTM, thanks for also pulling the upstream release notes into the changelog as I usually did.