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