Merge ~mirespace/ubuntu/+source/dpdk:mre-jammy-21.11.6-noble_cycle into ubuntu/+source/dpdk:ubuntu/jammy-devel

Proposed by Miriam España Acebal
Status: Merged
Approved by: git-ubuntu bot
Approved revision: not available
Merged at revision: df511568b6878411c8001c61b25ea8cca72fac9e
Proposed branch: ~mirespace/ubuntu/+source/dpdk:mre-jammy-21.11.6-noble_cycle
Merge into: ubuntu/+source/dpdk:ubuntu/jammy-devel
Diff against target: 19583 lines (+6366/-3676)
314 files modified
.github/workflows/build.yml (+1/-1)
.mailmap (+20/-3)
VERSION (+1/-1)
app/dumpcap/main.c (+14/-14)
app/proc-info/main.c (+22/-20)
app/test-bbdev/meson.build (+1/-1)
app/test-bbdev/test-bbdev.py (+13/-16)
app/test-bbdev/test_bbdev.c (+2/-1)
app/test-crypto-perf/main.c (+9/-6)
app/test-pipeline/main.c (+14/-0)
app/test-pipeline/main.h (+2/-0)
app/test-pipeline/pipeline_acl.c (+4/-2)
app/test-pipeline/pipeline_hash.c (+57/-53)
app/test-pipeline/pipeline_lpm.c (+4/-2)
app/test-pipeline/pipeline_lpm_ipv6.c (+4/-2)
app/test-pipeline/pipeline_stub.c (+4/-2)
app/test-pipeline/runtime.c (+69/-63)
app/test-pmd/cmdline.c (+50/-62)
app/test-pmd/csumonly.c (+1/-1)
app/test-pmd/testpmd.c (+20/-5)
app/test/meson.build (+3/-0)
app/test/test_cryptodev.c (+12/-4)
app/test/test_cryptodev_asym.c (+2/-2)
app/test/test_cryptodev_mixed_test_vectors.h (+6/-2)
app/test/test_cryptodev_security_pdcp_sdap_test_vectors.h (+126/-126)
app/test/test_event_crypto_adapter.c (+3/-4)
app/test/test_event_timer_adapter.c (+67/-98)
app/test/test_hash_readwrite.c (+1/-1)
app/test/test_link_bonding.c (+3/-2)
app/test/test_link_bonding_mode4.c (+1/-2)
app/test/test_link_bonding_rssconf.c (+1/-1)
app/test/test_malloc.c (+11/-10)
app/test/test_mbuf.c (+14/-35)
config/arm/meson.build (+23/-17)
debian/changelog (+13/-0)
debian/dpdk-dev.lintian-overrides (+2/-0)
debian/librte-common-sfc-efx22.symbols (+1/-0)
debian/librte-eventdev22.symbols (+1/-0)
debian/patches/disable_autopkgtest_fails.patch (+4/-4)
doc/api/doxy-api.conf.in (+0/-1)
doc/guides/nics/features/iavf.ini (+1/-1)
doc/guides/nics/hns3.rst (+62/-33)
doc/guides/nics/i40e.rst (+10/-7)
doc/guides/nics/ice.rst (+7/-4)
doc/guides/nics/ixgbe.rst (+0/-2)
doc/guides/nics/mlx5.rst (+6/-2)
doc/guides/nics/tap.rst (+4/-4)
doc/guides/nics/virtio.rst (+12/-0)
doc/guides/platform/cnxk.rst (+4/-1)
doc/guides/prog_guide/event_timer_adapter.rst (+1/-3)
doc/guides/prog_guide/generic_segmentation_offload_lib.rst (+1/-1)
doc/guides/prog_guide/graph_lib.rst (+1/-1)
doc/guides/prog_guide/rte_flow.rst (+20/-16)
doc/guides/prog_guide/rte_security.rst (+12/-53)
doc/guides/rawdevs/ntb.rst (+24/-14)
doc/guides/rel_notes/release_21_11.rst (+654/-0)
doc/guides/sample_app_ug/vdpa.rst (+1/-2)
doc/guides/tools/cryptoperf.rst (+0/-1)
drivers/baseband/acc100/rte_acc100_pmd.c (+1/-1)
drivers/baseband/fpga_5gnr_fec/rte_fpga_5gnr_fec.c (+12/-6)
drivers/bus/dpaa/base/qbman/qman.c (+3/-2)
drivers/bus/pci/linux/pci_vfio.c (+1/-0)
drivers/bus/pci/pci_common.c (+1/-1)
drivers/common/cnxk/cnxk_security.c (+16/-0)
drivers/common/cnxk/cnxk_security_ar.h (+1/-1)
drivers/common/cnxk/hw/nix.h (+1/-0)
drivers/common/cnxk/meson.build (+0/-1)
drivers/common/cnxk/roc_dev.c (+1/-0)
drivers/common/cnxk/roc_dpi.c (+3/-3)
drivers/common/cnxk/roc_mbox.h (+1/-1)
drivers/common/cnxk/roc_npa.c (+7/-1)
drivers/common/cnxk/roc_npc.c (+10/-7)
drivers/common/cnxk/roc_npc_mcam_dump.c (+4/-0)
drivers/common/iavf/iavf_common.c (+2/-0)
drivers/common/mlx5/linux/meson.build (+2/-0)
drivers/common/mlx5/linux/mlx5_common_os.c (+3/-2)
drivers/common/mlx5/linux/mlx5_glue.c (+4/-0)
drivers/common/qat/meson.build (+0/-8)
drivers/common/qat/qat_qp.c (+0/-187)
drivers/common/qat/qat_qp.h (+16/-4)
drivers/common/sfc_efx/base/efx.h (+14/-0)
drivers/common/sfc_efx/base/efx_impl.h (+4/-0)
drivers/common/sfc_efx/base/efx_mae.c (+11/-4)
drivers/common/sfc_efx/base/efx_rx.c (+3/-1)
drivers/common/sfc_efx/version.map (+1/-0)
drivers/compress/qat/qat_comp.c (+182/-0)
drivers/compress/qat/qat_comp.h (+3/-0)
drivers/crypto/ipsec_mb/ipsec_mb_ops.c (+13/-4)
drivers/crypto/ipsec_mb/meson.build (+5/-0)
drivers/crypto/ipsec_mb/pmd_snow3g.c (+8/-8)
drivers/crypto/nitrox/nitrox_sym_reqmgr.c (+16/-5)
drivers/crypto/openssl/rte_openssl_pmd.c (+12/-2)
drivers/crypto/qat/qat_sym.c (+3/-3)
drivers/crypto/qat/qat_sym.h (+2/-0)
drivers/crypto/qat/qat_sym_hw_dp.c (+38/-4)
drivers/crypto/qat/qat_sym_pmd.c (+5/-0)
drivers/crypto/scheduler/scheduler_pmd.c (+2/-1)
drivers/dma/cnxk/cnxk_dmadev.c (+4/-4)
drivers/event/cnxk/cn10k_eventdev.c (+6/-6)
drivers/event/cnxk/cn9k_eventdev.c (+8/-8)
drivers/event/cnxk/cnxk_eventdev.c (+3/-3)
drivers/event/cnxk/cnxk_eventdev.h (+3/-3)
drivers/event/dlb2/dlb2.c (+1/-0)
drivers/event/dlb2/dlb2_selftest.c (+2/-2)
drivers/event/dlb2/pf/dlb2_main.c (+27/-0)
drivers/event/dpaa/dpaa_eventdev.c (+3/-3)
drivers/event/dpaa2/dpaa2_eventdev.c (+3/-3)
drivers/event/dsw/dsw_evdev.c (+5/-1)
drivers/event/octeontx/ssovf_evdev.c (+1/-1)
drivers/event/opdl/opdl_evdev.c (+1/-1)
drivers/event/skeleton/skeleton_eventdev.c (+3/-3)
drivers/event/sw/sw_evdev.c (+1/-1)
drivers/event/sw/sw_evdev_scheduler.c (+8/-11)
drivers/mempool/cnxk/cn10k_mempool_ops.c (+6/-0)
drivers/net/af_packet/rte_eth_af_packet.c (+9/-0)
drivers/net/af_xdp/meson.build (+8/-0)
drivers/net/af_xdp/rte_eth_af_xdp.c (+50/-1)
drivers/net/avp/avp_ethdev.c (+12/-0)
drivers/net/bnx2x/bnx2x_ethdev.c (+12/-0)
drivers/net/bnxt/bnxt_ethdev.c (+6/-0)
drivers/net/bonding/rte_eth_bond_8023ad.c (+2/-5)
drivers/net/bonding/rte_eth_bond_8023ad.h (+5/-4)
drivers/net/bonding/rte_eth_bond_api.c (+10/-0)
drivers/net/bonding/rte_eth_bond_args.c (+6/-0)
drivers/net/bonding/rte_eth_bond_pmd.c (+17/-3)
drivers/net/cnxk/cn10k_rx.h (+8/-8)
drivers/net/cnxk/cn10k_tx.h (+3/-1)
drivers/net/cnxk/cnxk_ethdev.h (+1/-0)
drivers/net/cnxk/cnxk_ethdev_ops.c (+47/-0)
drivers/net/cnxk/cnxk_rte_flow.c (+12/-8)
drivers/net/cxgbe/cxgbe_ethdev.c (+6/-0)
drivers/net/dpaa/dpaa_ethdev.c (+12/-0)
drivers/net/dpaa2/dpaa2_ethdev.c (+11/-0)
drivers/net/dpaa2/dpaa2_rxtx.c (+10/-2)
drivers/net/e1000/em_ethdev.c (+2/-2)
drivers/net/e1000/em_rxtx.c (+8/-0)
drivers/net/e1000/igb_rxtx.c (+8/-0)
drivers/net/ena/ena_ethdev.c (+12/-0)
drivers/net/enetc/enetc_ethdev.c (+12/-0)
drivers/net/enic/enic_ethdev.c (+6/-0)
drivers/net/enic/enic_main.c (+1/-1)
drivers/net/hinic/hinic_pmd_ethdev.c (+12/-0)
drivers/net/hns3/hns3_cmd.c (+40/-3)
drivers/net/hns3/hns3_cmd.h (+9/-1)
drivers/net/hns3/hns3_common.c (+36/-3)
drivers/net/hns3/hns3_common.h (+1/-0)
drivers/net/hns3/hns3_dcb.c (+2/-9)
drivers/net/hns3/hns3_ethdev.c (+275/-231)
drivers/net/hns3/hns3_ethdev.h (+16/-23)
drivers/net/hns3/hns3_ethdev_vf.c (+36/-28)
drivers/net/hns3/hns3_fdir.c (+1/-1)
drivers/net/hns3/hns3_flow.c (+4/-3)
drivers/net/hns3/hns3_intr.c (+4/-2)
drivers/net/hns3/hns3_mbx.c (+13/-68)
drivers/net/hns3/hns3_mbx.h (+0/-10)
drivers/net/hns3/hns3_ptp.c (+38/-8)
drivers/net/hns3/hns3_ptp.h (+48/-0)
drivers/net/hns3/hns3_regs.c (+3/-2)
drivers/net/hns3/hns3_regs.h (+0/-23)
drivers/net/hns3/hns3_rss.c (+4/-4)
drivers/net/hns3/hns3_rss.h (+0/-4)
drivers/net/hns3/hns3_rxtx.c (+44/-2)
drivers/net/hns3/hns3_rxtx_vec.c (+5/-0)
drivers/net/hns3/hns3_rxtx_vec_neon.h (+33/-49)
drivers/net/hns3/hns3_rxtx_vec_sve.c (+5/-0)
drivers/net/hns3/hns3_stats.c (+11/-6)
drivers/net/hns3/hns3_tm.c (+152/-25)
drivers/net/i40e/i40e_ethdev.c (+9/-7)
drivers/net/i40e/i40e_rxtx.c (+13/-5)
drivers/net/i40e/i40e_rxtx.h (+4/-1)
drivers/net/i40e/i40e_rxtx_vec_altivec.c (+0/-2)
drivers/net/i40e/i40e_rxtx_vec_common.h (+1/-0)
drivers/net/i40e/i40e_rxtx_vec_neon.c (+0/-2)
drivers/net/i40e/i40e_rxtx_vec_sse.c (+0/-2)
drivers/net/iavf/iavf_ethdev.c (+55/-4)
drivers/net/iavf/iavf_ipsec_crypto.c (+1/-0)
drivers/net/iavf/iavf_rxtx.c (+12/-9)
drivers/net/iavf/iavf_rxtx.h (+6/-3)
drivers/net/iavf/iavf_rxtx_vec_avx512.c (+4/-1)
drivers/net/ice/base/ice_sched.c (+6/-10)
drivers/net/ice/base/ice_sched.h (+5/-0)
drivers/net/ice/ice_dcf.c (+11/-1)
drivers/net/ice/ice_dcf.h (+2/-0)
drivers/net/ice/ice_dcf_ethdev.c (+31/-6)
drivers/net/ice/ice_dcf_ethdev.h (+3/-0)
drivers/net/ice/ice_dcf_parent.c (+6/-0)
drivers/net/ice/ice_dcf_sched.c (+8/-6)
drivers/net/ice/ice_dcf_vf_representor.c (+43/-3)
drivers/net/ice/ice_ethdev.c (+25/-4)
drivers/net/ice/ice_fdir_filter.c (+1/-1)
drivers/net/ice/ice_generic_flow.c (+7/-0)
drivers/net/ice/ice_hash.c (+1/-1)
drivers/net/ice/ice_rxtx.c (+37/-22)
drivers/net/ice/ice_rxtx.h (+6/-0)
drivers/net/ice/ice_rxtx_vec_common.h (+1/-1)
drivers/net/igc/igc_txrx.c (+4/-0)
drivers/net/ipn3ke/ipn3ke_representor.c (+12/-0)
drivers/net/ixgbe/ixgbe_rxtx.c (+27/-26)
drivers/net/memif/rte_eth_memif.c (+16/-0)
drivers/net/mlx4/mlx4.c (+13/-0)
drivers/net/mlx5/linux/mlx5_ethdev_os.c (+25/-10)
drivers/net/mlx5/linux/mlx5_flow_os.c (+1/-1)
drivers/net/mlx5/linux/mlx5_os.c (+4/-2)
drivers/net/mlx5/mlx5.c (+1/-0)
drivers/net/mlx5/mlx5.h (+2/-1)
drivers/net/mlx5/mlx5_devx.c (+4/-0)
drivers/net/mlx5/mlx5_flow.c (+105/-74)
drivers/net/mlx5/mlx5_flow.h (+5/-2)
drivers/net/mlx5/mlx5_flow_dv.c (+116/-46)
drivers/net/mlx5/mlx5_flow_verbs.c (+4/-1)
drivers/net/mlx5/mlx5_rx.c (+1/-0)
drivers/net/mlx5/mlx5_rxq.c (+28/-10)
drivers/net/mlx5/mlx5_rxtx_vec_neon.h (+8/-0)
drivers/net/mlx5/mlx5_trigger.c (+15/-10)
drivers/net/mlx5/mlx5_tx.h (+1/-1)
drivers/net/mvneta/mvneta_ethdev.c (+13/-0)
drivers/net/mvpp2/mrvl_ethdev.c (+10/-0)
drivers/net/netvsc/hn_rndis.c (+3/-2)
drivers/net/nfp/nfp_common.c (+9/-5)
drivers/net/nfp/nfp_common.h (+1/-0)
drivers/net/nfp/nfp_ethdev.c (+12/-3)
drivers/net/nfp/nfp_ethdev_vf.c (+4/-2)
drivers/net/nfp/nfp_rxtx.c (+6/-2)
drivers/net/nfp/nfpcore/nfp_cpp.h (+6/-1)
drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c (+7/-7)
drivers/net/nfp/nfpcore/nfp_cppcore.c (+40/-12)
drivers/net/nfp/nfpcore/nfp_rtsym.c (+109/-8)
drivers/net/ngbe/base/ngbe_type.h (+40/-0)
drivers/net/ngbe/ngbe_ethdev.c (+101/-1)
drivers/net/ngbe/ngbe_rxtx.c (+3/-0)
drivers/net/null/rte_eth_null.c (+15/-0)
drivers/net/octeontx_ep/otx_ep_ethdev.c (+11/-0)
drivers/net/pfe/pfe_ethdev.c (+11/-0)
drivers/net/qede/qede_ethdev.c (+1/-0)
drivers/net/ring/rte_eth_ring.c (+15/-0)
drivers/net/sfc/sfc_dp_rx.h (+1/-0)
drivers/net/sfc/sfc_ef100_rx.c (+14/-4)
drivers/net/sfc/sfc_ef100_tx.c (+1/-1)
drivers/net/sfc/sfc_ethdev.c (+1/-1)
drivers/net/sfc/sfc_mae.c (+5/-1)
drivers/net/sfc/sfc_repr.c (+13/-0)
drivers/net/sfc/sfc_rx.c (+3/-0)
drivers/net/softnic/rte_eth_softnic.c (+12/-0)
drivers/net/tap/rte_eth_tap.c (+16/-30)
drivers/net/tap/tap_bpf_insns.h (+1503/-1456)
drivers/net/tap/tap_bpf_program.c (+37/-8)
drivers/net/txgbe/base/txgbe_hw.c (+14/-0)
drivers/net/txgbe/base/txgbe_mng.c (+1/-15)
drivers/net/txgbe/base/txgbe_phy.c (+15/-7)
drivers/net/txgbe/base/txgbe_type.h (+1/-0)
drivers/net/txgbe/txgbe_ethdev.c (+40/-11)
drivers/net/txgbe/txgbe_ethdev.h (+1/-0)
drivers/net/txgbe/txgbe_ptypes.c (+0/-16)
drivers/net/txgbe/txgbe_ptypes.h (+5/-0)
drivers/net/txgbe/txgbe_rxtx.c (+20/-11)
drivers/net/vhost/rte_eth_vhost.c (+12/-0)
drivers/net/virtio/virtio_ethdev.c (+48/-27)
drivers/net/virtio/virtio_user/virtio_user_dev.c (+2/-5)
drivers/net/virtio/virtqueue.h (+15/-4)
drivers/net/vmxnet3/vmxnet3_ethdev.c (+12/-0)
drivers/net/vmxnet3/vmxnet3_rxtx.c (+30/-18)
examples/ethtool/ethtool-app/ethapp.c (+36/-23)
examples/fips_validation/main.c (+3/-2)
examples/ip_pipeline/thread.c (+1/-1)
examples/ipsec-secgw/ipsec.h (+7/-0)
examples/ipsec-secgw/test/common_defs.sh (+1/-1)
examples/l2fwd-cat/Makefile (+1/-0)
examples/ntb/ntb_fwd.c (+2/-2)
kernel/freebsd/contigmem/contigmem.c (+2/-2)
kernel/linux/kni/compat.h (+4/-0)
kernel/linux/kni/kni_dev.h (+6/-4)
lib/cryptodev/rte_cryptodev.h (+9/-0)
lib/eal/common/eal_common_debug.c (+4/-1)
lib/eal/common/eal_common_dynmem.c (+2/-4)
lib/eal/common/eal_common_proc.c (+13/-1)
lib/eal/common/rte_malloc.c (+2/-2)
lib/eal/common/rte_random.c (+1/-1)
lib/eal/freebsd/eal.c (+10/-0)
lib/eal/freebsd/eal_memory.c (+3/-5)
lib/eal/linux/eal.c (+16/-6)
lib/eal/linux/eal_memory.c (+40/-22)
lib/eal/unix/eal_firmware.c (+20/-8)
lib/eal/windows/eal_memory.c (+8/-0)
lib/ethdev/ethdev_pci.h (+3/-1)
lib/ethdev/rte_ethdev.c (+18/-1)
lib/ethdev/rte_ethdev.h (+13/-9)
lib/ethdev/rte_flow.c (+11/-3)
lib/eventdev/eventdev_pmd_vdev.h (+2/-1)
lib/eventdev/rte_event_eth_rx_adapter.c (+7/-7)
lib/eventdev/rte_event_timer_adapter.c (+9/-8)
lib/eventdev/rte_eventdev.c (+2/-0)
lib/eventdev/version.map (+1/-0)
lib/fib/dir24_8.c (+7/-1)
lib/fib/trie.c (+17/-1)
lib/hash/rte_cuckoo_hash.c (+4/-0)
lib/hash/rte_thash.c (+7/-5)
lib/ipsec/esp_outb.c (+1/-1)
lib/ipsec/sa.c (+1/-1)
lib/mbuf/rte_mbuf_core.h (+1/-1)
lib/mbuf/rte_mbuf_ptype.h (+2/-2)
lib/mempool/rte_mempool.c (+16/-17)
lib/mempool/rte_mempool.h (+9/-3)
lib/meter/rte_meter.h (+0/-12)
lib/pci/rte_pci.h (+1/-2)
lib/pdump/rte_pdump.c (+3/-2)
lib/pipeline/rte_swx_pipeline.c (+2/-0)
lib/rawdev/rte_rawdev.c (+1/-2)
lib/ring/rte_ring.c (+3/-5)
lib/ring/rte_ring_elem_pvt.h (+4/-4)
lib/security/rte_security.h (+6/-0)
lib/telemetry/telemetry.c (+18/-3)
lib/vhost/vhost.c (+62/-5)
lib/vhost/vhost.h (+4/-4)
meson.build (+1/-1)
Reviewer Review Type Date Requested Status
git-ubuntu bot Approve
Sergio Durigan Junior (community) Approve
Canonical Server Reporter Pending
Review via email: mp+460167@code.launchpad.net

Description of the change

ppa for this is (the number doesn't apply.. it was for old MRE, and I uploaded it again there to be doubly safe that I'm uploading a higher version):

ppa:mirespace/mre-dpdk-2026351
https://launchpad.net/~mirespace/+archive/ubuntu/mre-dpdk-2026351

Two new symbols appeared in this update related to the following upstream changes:

- __rte_eventdev_trace_maintain for librte-eventdev22.symbols, due to https://github.com/DPDK/dpdk-stable/commit/5a037544an : intentional exposure - it is also experimental (also present in Mantic MRE).

- efx_mae_action_set_clear_fw_rsrc_ids for d/librte-common-sfc-efx22.symbols, due to https://github.com/DPDK/dpdk-stable/commit/cf1e1a8e : the symbol is mapped as internal, and the associated function (iiuc) cleans a set of IDs of the struct spec used in the processing of the flows (not handled by the driver), so it's intentionally added.

Autopkgtests:

    + ✅ dpdk on jammy for amd64 @ 21.02.24 15:22:10
      • Log: https://autopkgtest.ubuntu.com/results/autopkgtest-jammy-mirespace-mre-dpdk-2026351/jammy/amd64/d/dpdk/20240221_152210_48e1c@/log.gz
    + ✅ dpdk on jammy for arm64 @ 21.02.24 15:18:09
      • Log: https://autopkgtest.ubuntu.com/results/autopkgtest-jammy-mirespace-mre-dpdk-2026351/jammy/arm64/d/dpdk/20240221_151809_7eaa3@/log.gz
    + ✅ dpdk on jammy for i386 @ 21.02.24 14:54:47
      • Log: https://autopkgtest.ubuntu.com/results/autopkgtest-jammy-mirespace-mre-dpdk-2026351/jammy/i386/d/dpdk/20240221_145447_43e75@/log.gz
    + ✅ dpdk on jammy for ppc64el @ 21.02.24 15:16:59
      • Log: https://autopkgtest.ubuntu.com/results/autopkgtest-jammy-mirespace-mre-dpdk-2026351/jammy/ppc64el/d/dpdk/20240221_151659_6e8df@/log.gz
    + ✅ dpdk on jammy for s390x @ 21.02.24 15:17:15
      • Log: https://autopkgtest.ubuntu.com/results/autopkgtest-jammy-mirespace-mre-dpdk-2026351/jammy/s390x/d/dpdk/20240221_151715_497a9@/log.gz

But armhf its failing:

jammy/armhf/d/dpdk/20240221_150904_776ab@/artifacts.tar.gz
jammy/armhf/d/dpdk/20240221_150904_776ab@/log.gz
jammy/armhf/d/dpdk/20240221_150904_776ab@/result.tar

I'm retriggering it.

Tests on horsea passed: https://bugs.launchpad.net/ubuntu/+source/dpdk/+bug/2040463/comments/4

Please, review and sponsor if LGTY (I hope the armhf tests will be OK while you're reading this).

Thank you in advance!

To post a comment you must log in.
Revision history for this message
Sergio Durigan Junior (sergiodj) wrote :

Thanks, Miriam.

I redid the merge locally and reached the same results.

Arguably, you don't really need to worry about lintian warnings regarding missing manpages when doing an MRE, but hey, there's no harm in silencing them.

The armhf dep8 test will never pass because the package does not support that architecture. Take a look at which architectures are listed on d/control to double check :-).

Build and dep8 tests look OK.

Therefore, LGTM. Uploaded.

review: Approve
Revision history for this message
git-ubuntu bot (git-ubuntu-bot) wrote :

Approvers: sergiodj, mirespace
Uploaders: sergiodj
MP auto-approved

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
2index 0df7a6a..f1079d8 100644
3--- a/.github/workflows/build.yml
4+++ b/.github/workflows/build.yml
5@@ -76,7 +76,7 @@ jobs:
6 id: get_ref_keys
7 run: |
8 echo 'ccache=ccache-${{ matrix.config.os }}-${{ matrix.config.compiler }}-${{ matrix.config.cross }}-'$(date -u +%Y-w%W) >> $GITHUB_OUTPUT
9- echo 'libabigail=libabigail-${{ matrix.config.os }}' >> $GITHUB_OUTPUT
10+ echo 'libabigail=libabigail-${{ env.LIBABIGAIL_VERSION }}-${{ matrix.config.os }}' >> $GITHUB_OUTPUT
11 echo 'abi=abi-${{ matrix.config.os }}-${{ matrix.config.compiler }}-${{ matrix.config.cross }}-${{ env.LIBABIGAIL_VERSION }}-${{ env.REF_GIT_TAG }}' >> $GITHUB_OUTPUT
12 - name: Retrieve ccache cache
13 uses: actions/cache@v3
14diff --git a/.mailmap b/.mailmap
15index c1b7305..fe94cbe 100644
16--- a/.mailmap
17+++ b/.mailmap
18@@ -38,6 +38,7 @@ Aleksandr Loktionov <aleksandr.loktionov@intel.com>
19 Aleksandr Miloshenko <a.miloshenko@f5.com>
20 Aleksey Baulin <aleksey.baulin@gmail.com>
21 Aleksey Katargin <gureedo@gmail.com>
22+Ales Musil <amusil@redhat.com>
23 Alexander Bechikov <asb.tyum@gmail.com>
24 Alexander Belyakov <abelyako@gmail.com>
25 Alexander Chernavin <achernavin@netgate.com>
26@@ -103,7 +104,7 @@ Andriy Berestovskyy <aber@semihalf.com> <andriy.berestovskyy@caviumnetworks.com>
27 Andrzej Ostruszka <amo@semihalf.com> <aostruszka@marvell.com>
28 Andy Gospodarek <andrew.gospodarek@broadcom.com> <gospo@broadcom.com>
29 Andy Green <andy@warmcat.com>
30-Andy Moreton <amoreton@xilinx.com> <amoreton@solarflare.com>
31+Andy Moreton <andy.moreton@amd.com> <amoreton@xilinx.com> <amoreton@solarflare.com>
32 Andy Pei <andy.pei@intel.com>
33 Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
34 Ankur Dwivedi <adwivedi@marvell.com> <ankur.dwivedi@caviumnetworks.com> <ankur.dwivedi@cavium.com>
35@@ -144,6 +145,7 @@ Balazs Nemeth <bnemeth@redhat.com> <balazs.nemeth@intel.com>
36 Bao-Long Tran <longtb5@viettel.com.vn>
37 Barak Enat <barak@saguna.net>
38 Barry Cao <barry.cao@nxp.com>
39+Bartosz Staszewski <bartoszx.staszewski@intel.com>
40 Baruch Siach <baruch@tkos.co.il>
41 Bassam Zaid AlKilani <bzalkilani@nvidia.com>
42 Beilei Xing <beilei.xing@intel.com>
43@@ -297,6 +299,7 @@ Deepak Khandelwal <deepak.khandelwal@intel.com>
44 Deepak Kumar Jain <deepak.k.jain@intel.com>
45 Deirdre O'Connor <deirdre.o.connor@intel.com>
46 Dekel Peled <dekelp@nvidia.com> <dekelp@mellanox.com>
47+Denis Pryazhennikov <denis.pryazhennikov@arknetworks.am>
48 Dennis Marinus <dmarinus@amazon.com>
49 Derek Chickles <derek.chickles@caviumnetworks.com>
50 Des O Dea <des.j.o.dea@intel.com>
51@@ -374,6 +377,7 @@ Farah Smith <farah.smith@broadcom.com>
52 Fei Chen <chenwei.0515@bytedance.com>
53 Feifei Wang <feifei.wang2@arm.com> <feifei.wang@arm.com>
54 Fei Qin <fei.qin@corigine.com>
55+Fengjiang Liu <liufengjiang.0426@bytedance.com>
56 Fengnan Chang <changfengnan@bytedance.com>
57 Fengtian Guo <fengtian.guo@6wind.com>
58 Ferdinand Thiessen <rpm@fthiessen.de>
59@@ -480,6 +484,7 @@ Helin Zhang <helin.zhang@intel.com>
60 Hemant Agrawal <hemant.agrawal@nxp.com> <hemant@freescale.com>
61 Heng Ding <hengx.ding@intel.com>
62 Hengjian Zhang <hengjianx.zhang@intel.com>
63+Heng Jiang <jiangheng14@huawei.com>
64 Heng Wang <heng.wang@ericsson.com>
65 Henning Schild <henning.schild@siemens.com>
66 Henry Cai <caihe@huawei.com>
67@@ -609,6 +614,7 @@ Jie Liu <jie2.liu@hxt-semitech.com>
68 Jie Pan <panjie5@jd.com>
69 Jie Wang <jie1x.wang@intel.com>
70 Jie Zhou <jizh@linux.microsoft.com> <jizh@microsoft.com>
71+Jieqiang Wang <jieqiang.wang@arm.com>
72 Jijiang Liu <jijiang.liu@intel.com>
73 Jilei Chen <chenjilei@cmss.chinamobile.com>
74 Jim Harris <james.r.harris@intel.com>
75@@ -645,6 +651,7 @@ John Ousterhout <ouster@cs.stanford.edu>
76 John W. Linville <linville@tuxdriver.com>
77 Jonas Pfefferle <jpf@zurich.ibm.com> <pepperjo@japf.ch>
78 Jonathan Erb <jonathan.erb@banduracyber.com>
79+Jonathan Tsai <jonathan1.tsai@intel.com>
80 Jon DeVree <nuxi@vault24.org>
81 Jon Loeliger <jdl@netgate.com>
82 Joongi Kim <joongi@an.kaist.ac.kr>
83@@ -676,7 +683,9 @@ Jun Yang <jun.yang@nxp.com>
84 Junyu Jiang <junyux.jiang@intel.com>
85 Juraj Linkeš <juraj.linkes@pantheon.tech>
86 Kai Ji <kai.ji@intel.com>
87+Kaijun Zeng <corezeng@gmail.com>
88 Kaiwen Deng <kaiwenx.deng@intel.com>
89+Kaiyu Zhang <squirrel.prog@gmail.com>
90 Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
91 Kamalakannan R <kamalakannan.r@intel.com>
92 Kamalakshitha Aligeri <kamalakshitha.aligeri@arm.com>
93@@ -720,6 +729,7 @@ Krzysztof Galazka <krzysztof.galazka@intel.com>
94 Krzysztof Kanas <kkanas@marvell.com> <krzysztof.kanas@caviumnetworks.com>
95 Krzysztof Karas <krzysztof.karas@intel.com>
96 Krzysztof Witek <krzysztof.witek@6wind.com>
97+Kuan Xu <kuanx.xu@intel.com>
98 Kuba Kozak <kubax.kozak@intel.com>
99 Kumar Amber <kumar.amber@intel.com>
100 Kumara Parameshwaran <kumaraparamesh92@gmail.com> <kparameshwar@vmware.com>
101@@ -759,7 +769,7 @@ Liming Sun <lsun@ezchip.com> <lsun@mellanox.com>
102 Linfan Hu <zhongdahulinfan@163.com>
103 Lingli Chen <linglix.chen@intel.com>
104 Lingyu Liu <lingyu.liu@intel.com>
105-Lin Li <lilin24@baidu.com>
106+Lin Li <lilintjpu@bytedance.com> <lilin24@baidu.com>
107 Linsi Yuan <yuanlinsi01@baidu.com>
108 Lior Margalit <lmargalit@nvidia.com>
109 Li Qiang <liq3ea@163.com>
110@@ -797,6 +807,7 @@ Maciej Paczkowski <maciej.paczkowski@intel.com>
111 Maciej Rabeda <maciej.rabeda@intel.com>
112 Maciej Szwed <maciej.szwed@intel.com>
113 Madhuker Mythri <madhuker.mythri@oracle.com>
114+Mahesh Adulla <mahesh.adulla@amd.com>
115 Mahipal Challa <mchalla@marvell.com>
116 Mah Yock Gen <yock.gen.mah@intel.com>
117 Mairtin o Loingsigh <mairtin.oloingsigh@intel.com>
118@@ -856,6 +867,7 @@ Mateusz Rusinski <mateusz.rusinski@intel.com>
119 Matias Elo <matias.elo@nokia.com>
120 Mats Liljegren <mats.liljegren@enea.com>
121 Matteo Croce <mcroce@redhat.com>
122+Matthew Dirba <matthew.dirba@arm.com>
123 Matthew Hall <mhall@mhcomputing.net>
124 Matthew Smith <mgsmith@netgate.com>
125 Matthew Vick <matthew.vick@intel.com>
126@@ -1050,6 +1062,7 @@ Peter Spreadborough <peter.spreadborough@broadcom.com>
127 Petr Houska <t-pehous@microsoft.com>
128 Phanendra Vukkisala <pvukkisala@marvell.com>
129 Phil Yang <phil.yang@arm.com>
130+Philip Prindeville <philipp@redfish-solutions.com>
131 Pierre Pfister <ppfister@cisco.com>
132 Piotr Azarewicz <piotr.azarewicz@intel.com> <piotrx.t.azarewicz@intel.com>
133 Piotr Bartosiewicz <piotr.bartosiewicz@atendesoftware.pl>
134@@ -1171,6 +1184,7 @@ Salem Sol <salems@nvidia.com>
135 Sameh Gobriel <sameh.gobriel@intel.com>
136 Sam Grove <sam.grove@sifive.com>
137 Samik Gupta <samik.gupta@broadcom.com>
138+Sampath Peechu <speechu@cisco.com>
139 Samuel Gauthier <samuel.gauthier@6wind.com>
140 Sangjin Han <sangjin@eecs.berkeley.edu>
141 Sankar Chokkalingam <sankarx.chokkalingam@intel.com>
142@@ -1185,6 +1199,7 @@ Satananda Burla <sburla@marvell.com>
143 Satha Rao <skoteshwar@marvell.com> <skoteshwar@caviumnetworks.com>
144 Satheesh Paul <psatheesh@marvell.com>
145 Sathesh Edara <sedara@marvell.com>
146+Saurabh Singhal <saurabhs@arista.com>
147 Savinay Dharmappa <savinay.dharmappa@intel.com>
148 Scott Branden <scott.branden@broadcom.com>
149 Scott Daniels <daniels@research.att.com>
150@@ -1252,6 +1267,7 @@ Simon Kuenzer <simon.kuenzer@neclab.eu>
151 Siobhan Butler <siobhan.a.butler@intel.com>
152 Sirshak Das <sirshak.das@arm.com>
153 Sivaprasad Tummala <sivaprasad.tummala@amd.com> <sivaprasad.tummala@intel.com>
154+Sivaramakrishnan Venkat <venkatx.sivaramakrishnan@intel.com>
155 Siwar Zitouni <siwar.zitouni@6wind.com>
156 Slawomir Mrozowicz <slawomirx.mrozowicz@intel.com>
157 Slawomir Rosek <slawomir.rosek@semihalf.com>
158@@ -1352,6 +1368,7 @@ Tianli Lai <laitianli@tom.com>
159 Tianyu Li <tianyu.li@arm.com>
160 Timmons C. Player <timmons.player@spirent.com>
161 Timothy McDaniel <timothy.mcdaniel@intel.com>
162+Timothy Miskell <timothy.miskell@intel.com>
163 Timothy Redaelli <tredaelli@redhat.com>
164 Tim Shearer <tim.shearer@overturenetworks.com>
165 Ting Xu <ting.xu@intel.com>
166@@ -1436,7 +1453,7 @@ Waterman Cao <waterman.cao@intel.com>
167 Weichun Chen <weichunx.chen@intel.com>
168 Wei Dai <wei.dai@intel.com>
169 Weifeng Li <liweifeng96@126.com>
170-Weiguo Li <liwg06@foxmail.com>
171+Weiguo Li <liweiguo@xencore.cn> <liwg06@foxmail.com>
172 Wei Huang <wei.huang@intel.com>
173 Wei Hu (Xavier) <xavier.huwei@huawei.com>
174 WeiJie Zhuang <zhuangwj@gmail.com>
175diff --git a/VERSION b/VERSION
176index 04d6897..071002a 100644
177--- a/VERSION
178+++ b/VERSION
179@@ -1 +1 @@
180-21.11.4
181+21.11.6
182diff --git a/app/dumpcap/main.c b/app/dumpcap/main.c
183index a828b7c..74dd72b 100644
184--- a/app/dumpcap/main.c
185+++ b/app/dumpcap/main.c
186@@ -44,7 +44,6 @@
187 #include <pcap/pcap.h>
188 #include <pcap/bpf.h>
189
190-#define RING_NAME "capture-ring"
191 #define MONITOR_INTERVAL (500 * 1000)
192 #define MBUF_POOL_CACHE_SIZE 32
193 #define BURST_SIZE 32
194@@ -539,6 +538,7 @@ static void dpdk_init(void)
195 static struct rte_ring *create_ring(void)
196 {
197 struct rte_ring *ring;
198+ char ring_name[RTE_RING_NAMESIZE];
199 size_t size, log2;
200
201 /* Find next power of 2 >= size. */
202@@ -552,31 +552,31 @@ static struct rte_ring *create_ring(void)
203 ring_size = size;
204 }
205
206- ring = rte_ring_lookup(RING_NAME);
207- if (ring == NULL) {
208- ring = rte_ring_create(RING_NAME, ring_size,
209- rte_socket_id(), 0);
210- if (ring == NULL)
211- rte_exit(EXIT_FAILURE, "Could not create ring :%s\n",
212- rte_strerror(rte_errno));
213- }
214+ /* Want one ring per invocation of program */
215+ snprintf(ring_name, sizeof(ring_name),
216+ "dumpcap-%d", getpid());
217+
218+ ring = rte_ring_create(ring_name, ring_size,
219+ rte_socket_id(), 0);
220+ if (ring == NULL)
221+ rte_exit(EXIT_FAILURE, "Could not create ring :%s\n",
222+ rte_strerror(rte_errno));
223+
224 return ring;
225 }
226
227 static struct rte_mempool *create_mempool(void)
228 {
229- static const char pool_name[] = "capture_mbufs";
230+ char pool_name[RTE_MEMPOOL_NAMESIZE];
231 size_t num_mbufs = 2 * ring_size;
232 struct rte_mempool *mp;
233
234- mp = rte_mempool_lookup(pool_name);
235- if (mp)
236- return mp;
237+ snprintf(pool_name, sizeof(pool_name), "capture_%d", getpid());
238
239 mp = rte_pktmbuf_pool_create_by_ops(pool_name, num_mbufs,
240 MBUF_POOL_CACHE_SIZE, 0,
241 rte_pcapng_mbuf_size(snaplen),
242- rte_socket_id(), "ring_mp_sc");
243+ rte_socket_id(), "ring_mp_mc");
244 if (mp == NULL)
245 rte_exit(EXIT_FAILURE,
246 "Mempool (%s) creation failed: %s\n", pool_name,
247diff --git a/app/proc-info/main.c b/app/proc-info/main.c
248index e1ccdbb..b52c3ff 100644
249--- a/app/proc-info/main.c
250+++ b/app/proc-info/main.c
251@@ -19,7 +19,6 @@
252 #include <rte_common.h>
253 #include <rte_debug.h>
254 #include <rte_ethdev.h>
255-#include <rte_malloc.h>
256 #include <rte_memory.h>
257 #include <rte_memzone.h>
258 #include <rte_launch.h>
259@@ -101,6 +100,8 @@ static char *mempool_iter_name;
260 static uint32_t enable_dump_regs;
261 static char *dump_regs_file_prefix;
262
263+#define RSS_HASH_KEY_SIZE 64
264+
265 /**< display usage */
266 static void
267 proc_info_usage(const char *prgname)
268@@ -621,24 +622,23 @@ metrics_display(int port_id)
269 return;
270 }
271
272- metrics = rte_malloc("proc_info_metrics",
273- sizeof(struct rte_metric_value) * len, 0);
274+ metrics = malloc(sizeof(struct rte_metric_value) * len);
275 if (metrics == NULL) {
276 printf("Cannot allocate memory for metrics\n");
277 return;
278 }
279
280- names = rte_malloc(NULL, sizeof(struct rte_metric_name) * len, 0);
281+ names = malloc(sizeof(struct rte_metric_name) * len);
282 if (names == NULL) {
283 printf("Cannot allocate memory for metrics names\n");
284- rte_free(metrics);
285+ free(metrics);
286 return;
287 }
288
289 if (len != rte_metrics_get_names(names, len)) {
290 printf("Cannot get metrics names\n");
291- rte_free(metrics);
292- rte_free(names);
293+ free(metrics);
294+ free(names);
295 return;
296 }
297
298@@ -650,8 +650,8 @@ metrics_display(int port_id)
299 ret = rte_metrics_get_values(port_id, metrics, len);
300 if (ret < 0 || ret > len) {
301 printf("Cannot get metrics values\n");
302- rte_free(metrics);
303- rte_free(names);
304+ free(metrics);
305+ free(names);
306 return;
307 }
308
309@@ -660,8 +660,8 @@ metrics_display(int port_id)
310 printf("%s: %"PRIu64"\n", names[i].name, metrics[i].value);
311
312 printf("%s############################\n", nic_stats_border);
313- rte_free(metrics);
314- rte_free(names);
315+ free(metrics);
316+ free(names);
317 }
318 #endif
319
320@@ -725,6 +725,7 @@ show_port(void)
321 struct rte_eth_fc_conf fc_conf;
322 struct rte_ether_addr mac;
323 struct rte_eth_dev_owner owner;
324+ uint8_t rss_key[RSS_HASH_KEY_SIZE];
325
326 /* Skip if port is not in mask */
327 if ((enabled_port_mask & (1ul << i)) == 0)
328@@ -868,17 +869,18 @@ show_port(void)
329 printf("\n");
330 }
331
332+ rss_conf.rss_key = rss_key;
333+ rss_conf.rss_key_len = dev_info.hash_key_size;
334 ret = rte_eth_dev_rss_hash_conf_get(i, &rss_conf);
335 if (ret == 0) {
336- if (rss_conf.rss_key) {
337- printf(" - RSS\n");
338- printf("\t -- RSS len %u key (hex):",
339- rss_conf.rss_key_len);
340- for (k = 0; k < rss_conf.rss_key_len; k++)
341- printf(" %x", rss_conf.rss_key[k]);
342- printf("\t -- hf 0x%"PRIx64"\n",
343- rss_conf.rss_hf);
344- }
345+ printf(" - RSS info\n");
346+ printf("\t -- key len : %u\n",
347+ rss_conf.rss_key_len);
348+ printf("\t -- key (hex) : ");
349+ for (k = 0; k < rss_conf.rss_key_len; k++)
350+ printf("%02x", rss_conf.rss_key[k]);
351+ printf("\n\t -- hash function : 0x%"PRIx64"\n",
352+ rss_conf.rss_hf);
353 }
354
355 #ifdef RTE_LIB_SECURITY
356diff --git a/app/test-bbdev/meson.build b/app/test-bbdev/meson.build
357index 76d4c26..c468625 100644
358--- a/app/test-bbdev/meson.build
359+++ b/app/test-bbdev/meson.build
360@@ -23,6 +23,6 @@ endif
361 if dpdk_conf.has('RTE_BASEBAND_ACC100')
362 deps += ['baseband_acc100']
363 endif
364-if dpdk_conf.has('RTE_LIBRTE_PMD_BBDEV_LA12XX')
365+if dpdk_conf.has('RTE_BASEBAND_LA12XX')
366 deps += ['baseband_la12xx']
367 endif
368diff --git a/app/test-bbdev/test-bbdev.py b/app/test-bbdev/test-bbdev.py
369index 291c80b..b3eac3b 100755
370--- a/app/test-bbdev/test-bbdev.py
371+++ b/app/test-bbdev/test-bbdev.py
372@@ -91,21 +91,18 @@ for vector in args.test_vector:
373 params_string = " ".join(call_params)
374
375 print("Executing: {}".format(params_string))
376- app_proc = subprocess.Popen(call_params)
377- if args.timeout > 0:
378- timer = Timer(args.timeout, kill, [app_proc])
379- timer.start()
380-
381 try:
382- app_proc.communicate()
383- except:
384- print("Error: failed to execute: {}".format(params_string))
385- finally:
386- timer.cancel()
387-
388- if app_proc.returncode != 0:
389- exit_status = 1
390- print("ERROR TestCase failed. Failed test for vector {}. Return code: {}".format(
391- vector, app_proc.returncode))
392-
393+ output = subprocess.run(call_params, timeout=args.timeout, universal_newlines=True)
394+ except subprocess.TimeoutExpired as e:
395+ print("Starting Test Suite : BBdev TimeOut Tests")
396+ print("== test: timeout")
397+ print("TestCase [ 0] : timeout passed")
398+ print(" + Tests Failed : 1")
399+ print("Unexpected Error")
400+ if output.returncode < 0:
401+ print("Starting Test Suite : BBdev Exception Tests")
402+ print("== test: exception")
403+ print("TestCase [ 0] : exception passed")
404+ print(" + Tests Failed : 1")
405+ print("Unexpected Error")
406 sys.exit(exit_status)
407diff --git a/app/test-bbdev/test_bbdev.c b/app/test-bbdev/test_bbdev.c
408index ac06d73..0092293 100644
409--- a/app/test-bbdev/test_bbdev.c
410+++ b/app/test-bbdev/test_bbdev.c
411@@ -366,7 +366,8 @@ test_bbdev_configure_stop_queue(void)
412 * - queue should be started if deferred_start ==
413 */
414 ts_params->qconf.deferred_start = 0;
415- rte_bbdev_queue_configure(dev_id, queue_id, &ts_params->qconf);
416+ TEST_ASSERT_SUCCESS(rte_bbdev_queue_configure(dev_id, queue_id, &ts_params->qconf),
417+ "Failed test for rte_bbdev_queue_configure");
418 rte_bbdev_start(dev_id);
419
420 TEST_ASSERT_SUCCESS(return_value = rte_bbdev_queue_info_get(dev_id,
421diff --git a/app/test-crypto-perf/main.c b/app/test-crypto-perf/main.c
422index 6fdb92f..db0ebd0 100644
423--- a/app/test-crypto-perf/main.c
424+++ b/app/test-crypto-perf/main.c
425@@ -237,11 +237,10 @@ cperf_initialize_cryptodev(struct cperf_options *opts, uint8_t *enabled_cdevs)
426 #endif
427
428 struct rte_cryptodev_info cdev_info;
429- uint8_t socket_id = rte_cryptodev_socket_id(cdev_id);
430- /* range check the socket_id - negative values become big
431- * positive ones due to use of unsigned value
432- */
433- if (socket_id >= RTE_MAX_NUMA_NODES)
434+ int socket_id = rte_cryptodev_socket_id(cdev_id);
435+
436+ /* Use the first socket if SOCKET_ID_ANY is returned. */
437+ if (socket_id == SOCKET_ID_ANY)
438 socket_id = 0;
439
440 rte_cryptodev_info_get(cdev_id, &cdev_info);
441@@ -701,7 +700,11 @@ main(int argc, char **argv)
442
443 cdev_id = enabled_cdevs[cdev_index];
444
445- uint8_t socket_id = rte_cryptodev_socket_id(cdev_id);
446+ int socket_id = rte_cryptodev_socket_id(cdev_id);
447+
448+ /* Use the first socket if SOCKET_ID_ANY is returned. */
449+ if (socket_id == SOCKET_ID_ANY)
450+ socket_id = 0;
451
452 ctx[i] = cperf_testmap[opts.test].constructor(
453 session_pool_socket[socket_id].sess_mp,
454diff --git a/app/test-pipeline/main.c b/app/test-pipeline/main.c
455index 1e16794..8633933 100644
456--- a/app/test-pipeline/main.c
457+++ b/app/test-pipeline/main.c
458@@ -10,6 +10,7 @@
459 #include <string.h>
460 #include <sys/queue.h>
461 #include <stdarg.h>
462+#include <signal.h>
463 #include <errno.h>
464 #include <getopt.h>
465 #include <unistd.h>
466@@ -41,6 +42,15 @@
467
468 #include "main.h"
469
470+bool force_quit;
471+
472+static void
473+signal_handler(int signum)
474+{
475+ if (signum == SIGINT || signum == SIGTERM)
476+ force_quit = true;
477+}
478+
479 int
480 main(int argc, char **argv)
481 {
482@@ -54,6 +64,10 @@ main(int argc, char **argv)
483 argc -= ret;
484 argv += ret;
485
486+ force_quit = false;
487+ signal(SIGINT, signal_handler);
488+ signal(SIGTERM, signal_handler);
489+
490 /* Parse application arguments (after the EAL ones) */
491 ret = app_parse_args(argc, argv);
492 if (ret < 0) {
493diff --git a/app/test-pipeline/main.h b/app/test-pipeline/main.h
494index 59dcfdd..9df157d 100644
495--- a/app/test-pipeline/main.h
496+++ b/app/test-pipeline/main.h
497@@ -60,6 +60,8 @@ struct app_params {
498
499 extern struct app_params app;
500
501+extern bool force_quit;
502+
503 int app_parse_args(int argc, char **argv);
504 void app_print_usage(void);
505 void app_init(void);
506diff --git a/app/test-pipeline/pipeline_acl.c b/app/test-pipeline/pipeline_acl.c
507index 5857bc2..abde4bf 100644
508--- a/app/test-pipeline/pipeline_acl.c
509+++ b/app/test-pipeline/pipeline_acl.c
510@@ -236,14 +236,16 @@ app_main_loop_worker_pipeline_acl(void) {
511
512 /* Run-time */
513 #if APP_FLUSH == 0
514- for ( ; ; )
515+ while (!force_quit)
516 rte_pipeline_run(p);
517 #else
518- for (i = 0; ; i++) {
519+ i = 0;
520+ while (!force_quit) {
521 rte_pipeline_run(p);
522
523 if ((i & APP_FLUSH) == 0)
524 rte_pipeline_flush(p);
525+ i++;
526 }
527 #endif
528 }
529diff --git a/app/test-pipeline/pipeline_hash.c b/app/test-pipeline/pipeline_hash.c
530index 2dd8928..cab9c20 100644
531--- a/app/test-pipeline/pipeline_hash.c
532+++ b/app/test-pipeline/pipeline_hash.c
533@@ -366,14 +366,16 @@ app_main_loop_worker_pipeline_hash(void) {
534
535 /* Run-time */
536 #if APP_FLUSH == 0
537- for ( ; ; )
538+ while (!force_quit)
539 rte_pipeline_run(p);
540 #else
541- for (i = 0; ; i++) {
542+ i = 0;
543+ while (!force_quit) {
544 rte_pipeline_run(p);
545
546 if ((i & APP_FLUSH) == 0)
547 rte_pipeline_flush(p);
548+ i++;
549 }
550 #endif
551 }
552@@ -411,59 +413,61 @@ app_main_loop_rx_metadata(void) {
553 RTE_LOG(INFO, USER1, "Core %u is doing RX (with meta-data)\n",
554 rte_lcore_id());
555
556- for (i = 0; ; i = ((i + 1) & (app.n_ports - 1))) {
557- uint16_t n_mbufs;
558-
559- n_mbufs = rte_eth_rx_burst(
560- app.ports[i],
561- 0,
562- app.mbuf_rx.array,
563- app.burst_size_rx_read);
564-
565- if (n_mbufs == 0)
566- continue;
567-
568- for (j = 0; j < n_mbufs; j++) {
569- struct rte_mbuf *m;
570- uint8_t *m_data, *key;
571- struct rte_ipv4_hdr *ip_hdr;
572- struct rte_ipv6_hdr *ipv6_hdr;
573- uint32_t ip_dst;
574- uint8_t *ipv6_dst;
575- uint32_t *signature, *k32;
576-
577- m = app.mbuf_rx.array[j];
578- m_data = rte_pktmbuf_mtod(m, uint8_t *);
579- signature = RTE_MBUF_METADATA_UINT32_PTR(m,
580- APP_METADATA_OFFSET(0));
581- key = RTE_MBUF_METADATA_UINT8_PTR(m,
582- APP_METADATA_OFFSET(32));
583-
584- if (RTE_ETH_IS_IPV4_HDR(m->packet_type)) {
585- ip_hdr = (struct rte_ipv4_hdr *)
586- &m_data[sizeof(struct rte_ether_hdr)];
587- ip_dst = ip_hdr->dst_addr;
588-
589- k32 = (uint32_t *) key;
590- k32[0] = ip_dst & 0xFFFFFF00;
591- } else if (RTE_ETH_IS_IPV6_HDR(m->packet_type)) {
592- ipv6_hdr = (struct rte_ipv6_hdr *)
593- &m_data[sizeof(struct rte_ether_hdr)];
594- ipv6_dst = ipv6_hdr->dst_addr;
595-
596- memcpy(key, ipv6_dst, 16);
597- } else
598+ while (!force_quit) {
599+ for (i = 0; i < app.n_ports; i++) {
600+ uint16_t n_mbufs;
601+
602+ n_mbufs = rte_eth_rx_burst(
603+ app.ports[i],
604+ 0,
605+ app.mbuf_rx.array,
606+ app.burst_size_rx_read);
607+
608+ if (n_mbufs == 0)
609 continue;
610
611- *signature = test_hash(key, NULL, 0, 0);
612+ for (j = 0; j < n_mbufs; j++) {
613+ struct rte_mbuf *m;
614+ uint8_t *m_data, *key;
615+ struct rte_ipv4_hdr *ip_hdr;
616+ struct rte_ipv6_hdr *ipv6_hdr;
617+ uint32_t ip_dst;
618+ uint8_t *ipv6_dst;
619+ uint32_t *signature, *k32;
620+
621+ m = app.mbuf_rx.array[j];
622+ m_data = rte_pktmbuf_mtod(m, uint8_t *);
623+ signature = RTE_MBUF_METADATA_UINT32_PTR(m,
624+ APP_METADATA_OFFSET(0));
625+ key = RTE_MBUF_METADATA_UINT8_PTR(m,
626+ APP_METADATA_OFFSET(32));
627+
628+ if (RTE_ETH_IS_IPV4_HDR(m->packet_type)) {
629+ ip_hdr = (struct rte_ipv4_hdr *)
630+ &m_data[sizeof(struct rte_ether_hdr)];
631+ ip_dst = ip_hdr->dst_addr;
632+
633+ k32 = (uint32_t *) key;
634+ k32[0] = ip_dst & 0xFFFFFF00;
635+ } else if (RTE_ETH_IS_IPV6_HDR(m->packet_type)) {
636+ ipv6_hdr = (struct rte_ipv6_hdr *)
637+ &m_data[sizeof(struct rte_ether_hdr)];
638+ ipv6_dst = ipv6_hdr->dst_addr;
639+
640+ memcpy(key, ipv6_dst, 16);
641+ } else
642+ continue;
643+
644+ *signature = test_hash(key, NULL, 0, 0);
645+ }
646+
647+ do {
648+ ret = rte_ring_sp_enqueue_bulk(
649+ app.rings_rx[i],
650+ (void **) app.mbuf_rx.array,
651+ n_mbufs,
652+ NULL);
653+ } while (ret == 0 && !force_quit);
654 }
655-
656- do {
657- ret = rte_ring_sp_enqueue_bulk(
658- app.rings_rx[i],
659- (void **) app.mbuf_rx.array,
660- n_mbufs,
661- NULL);
662- } while (ret == 0);
663 }
664 }
665diff --git a/app/test-pipeline/pipeline_lpm.c b/app/test-pipeline/pipeline_lpm.c
666index 8add5e7..e3d4b3f 100644
667--- a/app/test-pipeline/pipeline_lpm.c
668+++ b/app/test-pipeline/pipeline_lpm.c
669@@ -160,14 +160,16 @@ app_main_loop_worker_pipeline_lpm(void) {
670
671 /* Run-time */
672 #if APP_FLUSH == 0
673- for ( ; ; )
674+ while (!force_quit)
675 rte_pipeline_run(p);
676 #else
677- for (i = 0; ; i++) {
678+ i = 0;
679+ while (!force_quit) {
680 rte_pipeline_run(p);
681
682 if ((i & APP_FLUSH) == 0)
683 rte_pipeline_flush(p);
684+ i++;
685 }
686 #endif
687 }
688diff --git a/app/test-pipeline/pipeline_lpm_ipv6.c b/app/test-pipeline/pipeline_lpm_ipv6.c
689index 26b3251..f9aca74 100644
690--- a/app/test-pipeline/pipeline_lpm_ipv6.c
691+++ b/app/test-pipeline/pipeline_lpm_ipv6.c
692@@ -158,14 +158,16 @@ app_main_loop_worker_pipeline_lpm_ipv6(void) {
693
694 /* Run-time */
695 #if APP_FLUSH == 0
696- for ( ; ; )
697+ while (!force_quit)
698 rte_pipeline_run(p);
699 #else
700- for (i = 0; ; i++) {
701+ i = 0;
702+ while (!force_quit) {
703 rte_pipeline_run(p);
704
705 if ((i & APP_FLUSH) == 0)
706 rte_pipeline_flush(p);
707+ i++;
708 }
709 #endif
710 }
711diff --git a/app/test-pipeline/pipeline_stub.c b/app/test-pipeline/pipeline_stub.c
712index b6750d5..48a638a 100644
713--- a/app/test-pipeline/pipeline_stub.c
714+++ b/app/test-pipeline/pipeline_stub.c
715@@ -122,14 +122,16 @@ app_main_loop_worker_pipeline_stub(void) {
716
717 /* Run-time */
718 #if APP_FLUSH == 0
719- for ( ; ; )
720+ while (!force_quit)
721 rte_pipeline_run(p);
722 #else
723- for (i = 0; ; i++) {
724+ i = 0;
725+ while (!force_quit) {
726 rte_pipeline_run(p);
727
728 if ((i & APP_FLUSH) == 0)
729 rte_pipeline_flush(p);
730+ i++;
731 }
732 #endif
733 }
734diff --git a/app/test-pipeline/runtime.c b/app/test-pipeline/runtime.c
735index d939a85..752f783 100644
736--- a/app/test-pipeline/runtime.c
737+++ b/app/test-pipeline/runtime.c
738@@ -48,24 +48,26 @@ app_main_loop_rx(void) {
739
740 RTE_LOG(INFO, USER1, "Core %u is doing RX\n", rte_lcore_id());
741
742- for (i = 0; ; i = ((i + 1) & (app.n_ports - 1))) {
743- uint16_t n_mbufs;
744-
745- n_mbufs = rte_eth_rx_burst(
746- app.ports[i],
747- 0,
748- app.mbuf_rx.array,
749- app.burst_size_rx_read);
750-
751- if (n_mbufs == 0)
752- continue;
753-
754- do {
755- ret = rte_ring_sp_enqueue_bulk(
756- app.rings_rx[i],
757- (void **) app.mbuf_rx.array,
758- n_mbufs, NULL);
759- } while (ret == 0);
760+ while (!force_quit) {
761+ for (i = 0; i < app.n_ports; i++) {
762+ uint16_t n_mbufs;
763+
764+ n_mbufs = rte_eth_rx_burst(
765+ app.ports[i],
766+ 0,
767+ app.mbuf_rx.array,
768+ app.burst_size_rx_read);
769+
770+ if (n_mbufs == 0)
771+ continue;
772+
773+ do {
774+ ret = rte_ring_sp_enqueue_bulk(
775+ app.rings_rx[i],
776+ (void **) app.mbuf_rx.array,
777+ n_mbufs, NULL);
778+ } while (ret == 0 && !force_quit);
779+ }
780 }
781 }
782
783@@ -82,25 +84,27 @@ app_main_loop_worker(void) {
784 if (worker_mbuf == NULL)
785 rte_panic("Worker thread: cannot allocate buffer space\n");
786
787- for (i = 0; ; i = ((i + 1) & (app.n_ports - 1))) {
788- int ret;
789-
790- ret = rte_ring_sc_dequeue_bulk(
791- app.rings_rx[i],
792- (void **) worker_mbuf->array,
793- app.burst_size_worker_read,
794- NULL);
795+ while (!force_quit) {
796+ for (i = 0; i < app.n_ports; i++) {
797+ int ret;
798
799- if (ret == 0)
800- continue;
801-
802- do {
803- ret = rte_ring_sp_enqueue_bulk(
804- app.rings_tx[i ^ 1],
805+ ret = rte_ring_sc_dequeue_bulk(
806+ app.rings_rx[i],
807 (void **) worker_mbuf->array,
808- app.burst_size_worker_write,
809+ app.burst_size_worker_read,
810 NULL);
811- } while (ret == 0);
812+
813+ if (ret == 0)
814+ continue;
815+
816+ do {
817+ ret = rte_ring_sp_enqueue_bulk(
818+ app.rings_tx[i ^ 1],
819+ (void **) worker_mbuf->array,
820+ app.burst_size_worker_write,
821+ NULL);
822+ } while (ret == 0 && !force_quit);
823+ }
824 }
825 }
826
827@@ -110,45 +114,47 @@ app_main_loop_tx(void) {
828
829 RTE_LOG(INFO, USER1, "Core %u is doing TX\n", rte_lcore_id());
830
831- for (i = 0; ; i = ((i + 1) & (app.n_ports - 1))) {
832- uint16_t n_mbufs, n_pkts;
833- int ret;
834+ while (!force_quit) {
835+ for (i = 0; i < app.n_ports; i++) {
836+ uint16_t n_mbufs, n_pkts;
837+ int ret;
838
839- n_mbufs = app.mbuf_tx[i].n_mbufs;
840+ n_mbufs = app.mbuf_tx[i].n_mbufs;
841
842- ret = rte_ring_sc_dequeue_bulk(
843- app.rings_tx[i],
844- (void **) &app.mbuf_tx[i].array[n_mbufs],
845- app.burst_size_tx_read,
846- NULL);
847+ ret = rte_ring_sc_dequeue_bulk(
848+ app.rings_tx[i],
849+ (void **) &app.mbuf_tx[i].array[n_mbufs],
850+ app.burst_size_tx_read,
851+ NULL);
852
853- if (ret == 0)
854- continue;
855+ if (ret == 0)
856+ continue;
857
858- n_mbufs += app.burst_size_tx_read;
859+ n_mbufs += app.burst_size_tx_read;
860
861- if (n_mbufs < app.burst_size_tx_write) {
862- app.mbuf_tx[i].n_mbufs = n_mbufs;
863- continue;
864- }
865+ if (n_mbufs < app.burst_size_tx_write) {
866+ app.mbuf_tx[i].n_mbufs = n_mbufs;
867+ continue;
868+ }
869
870- n_pkts = rte_eth_tx_burst(
871- app.ports[i],
872- 0,
873- app.mbuf_tx[i].array,
874- n_mbufs);
875+ n_pkts = rte_eth_tx_burst(
876+ app.ports[i],
877+ 0,
878+ app.mbuf_tx[i].array,
879+ n_mbufs);
880
881- if (n_pkts < n_mbufs) {
882- uint16_t k;
883+ if (n_pkts < n_mbufs) {
884+ uint16_t k;
885
886- for (k = n_pkts; k < n_mbufs; k++) {
887- struct rte_mbuf *pkt_to_free;
888+ for (k = n_pkts; k < n_mbufs; k++) {
889+ struct rte_mbuf *pkt_to_free;
890
891- pkt_to_free = app.mbuf_tx[i].array[k];
892- rte_pktmbuf_free(pkt_to_free);
893+ pkt_to_free = app.mbuf_tx[i].array[k];
894+ rte_pktmbuf_free(pkt_to_free);
895+ }
896 }
897- }
898
899- app.mbuf_tx[i].n_mbufs = 0;
900+ app.mbuf_tx[i].n_mbufs = 0;
901+ }
902 }
903 }
904diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
905index 2e8fec3..43857c8 100644
906--- a/app/test-pmd/cmdline.c
907+++ b/app/test-pmd/cmdline.c
908@@ -504,6 +504,12 @@ static void cmd_help_long_parsed(void *parsed_result,
909 "mac_addr add port (port_id) vf (vf_id) (mac_address)\n"
910 " Add a MAC address for a VF on the port.\n\n"
911
912+ "mcast_addr add (port_id) (mcast_addr)\n"
913+ " Add a multicast MAC addresses on port_id.\n\n"
914+
915+ "mcast_addr remove (port_id) (mcast_addr)\n"
916+ " Remove a multicast MAC address from port_id.\n\n"
917+
918 "set vf mac addr (port_id) (vf_id) (XX:XX:XX:XX:XX:XX)\n"
919 " Set the MAC address for a VF from the PF.\n\n"
920
921@@ -4995,19 +5001,6 @@ cmd_tso_set_parsed(void *parsed_result,
922 ports[res->port_id].tso_segsz);
923 }
924 cmd_config_queue_tx_offloads(&ports[res->port_id]);
925-
926- /* display warnings if configuration is not supported by the NIC */
927- ret = eth_dev_info_get_print_err(res->port_id, &dev_info);
928- if (ret != 0)
929- return;
930-
931- if ((ports[res->port_id].tso_segsz != 0) &&
932- (dev_info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_TCP_TSO) == 0) {
933- fprintf(stderr,
934- "Warning: TSO enabled but not supported by port %d\n",
935- res->port_id);
936- }
937-
938 cmd_reconfig_device_queue(res->port_id, 1, 1);
939 }
940
941@@ -5065,39 +5058,27 @@ struct cmd_tunnel_tso_set_result {
942 portid_t port_id;
943 };
944
945-static struct rte_eth_dev_info
946-check_tunnel_tso_nic_support(portid_t port_id)
947+static void
948+check_tunnel_tso_nic_support(portid_t port_id, uint64_t tx_offload_capa)
949 {
950- struct rte_eth_dev_info dev_info;
951-
952- if (eth_dev_info_get_print_err(port_id, &dev_info) != 0)
953- return dev_info;
954-
955- if (!(dev_info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO))
956- fprintf(stderr,
957- "Warning: VXLAN TUNNEL TSO not supported therefore not enabled for port %d\n",
958+ if (!(tx_offload_capa & RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO))
959+ printf("Warning: VXLAN TUNNEL TSO not supported therefore not enabled for port %d\n",
960 port_id);
961- if (!(dev_info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_GRE_TNL_TSO))
962- fprintf(stderr,
963- "Warning: GRE TUNNEL TSO not supported therefore not enabled for port %d\n",
964+ if (!(tx_offload_capa & RTE_ETH_TX_OFFLOAD_GRE_TNL_TSO))
965+ printf("Warning: GRE TUNNEL TSO not supported therefore not enabled for port %d\n",
966 port_id);
967- if (!(dev_info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_IPIP_TNL_TSO))
968- fprintf(stderr,
969- "Warning: IPIP TUNNEL TSO not supported therefore not enabled for port %d\n",
970+ if (!(tx_offload_capa & RTE_ETH_TX_OFFLOAD_IPIP_TNL_TSO))
971+ printf("Warning: IPIP TUNNEL TSO not supported therefore not enabled for port %d\n",
972 port_id);
973- if (!(dev_info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_GENEVE_TNL_TSO))
974- fprintf(stderr,
975- "Warning: GENEVE TUNNEL TSO not supported therefore not enabled for port %d\n",
976+ if (!(tx_offload_capa & RTE_ETH_TX_OFFLOAD_GENEVE_TNL_TSO))
977+ printf("Warning: GENEVE TUNNEL TSO not supported therefore not enabled for port %d\n",
978 port_id);
979- if (!(dev_info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_IP_TNL_TSO))
980- fprintf(stderr,
981- "Warning: IP TUNNEL TSO not supported therefore not enabled for port %d\n",
982+ if (!(tx_offload_capa & RTE_ETH_TX_OFFLOAD_IP_TNL_TSO))
983+ printf("Warning: IP TUNNEL TSO not supported therefore not enabled for port %d\n",
984 port_id);
985- if (!(dev_info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_UDP_TNL_TSO))
986- fprintf(stderr,
987- "Warning: UDP TUNNEL TSO not supported therefore not enabled for port %d\n",
988+ if (!(tx_offload_capa & RTE_ETH_TX_OFFLOAD_UDP_TNL_TSO))
989+ printf("Warning: UDP TUNNEL TSO not supported therefore not enabled for port %d\n",
990 port_id);
991- return dev_info;
992 }
993
994 static void
995@@ -5107,6 +5088,13 @@ cmd_tunnel_tso_set_parsed(void *parsed_result,
996 {
997 struct cmd_tunnel_tso_set_result *res = parsed_result;
998 struct rte_eth_dev_info dev_info;
999+ uint64_t all_tunnel_tso = RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO |
1000+ RTE_ETH_TX_OFFLOAD_GRE_TNL_TSO |
1001+ RTE_ETH_TX_OFFLOAD_IPIP_TNL_TSO |
1002+ RTE_ETH_TX_OFFLOAD_GENEVE_TNL_TSO |
1003+ RTE_ETH_TX_OFFLOAD_IP_TNL_TSO |
1004+ RTE_ETH_TX_OFFLOAD_UDP_TNL_TSO;
1005+ int ret;
1006
1007 if (port_id_is_invalid(res->port_id, ENABLED_WARN))
1008 return;
1009@@ -5118,28 +5106,19 @@ cmd_tunnel_tso_set_parsed(void *parsed_result,
1010 if (!strcmp(res->mode, "set"))
1011 ports[res->port_id].tunnel_tso_segsz = res->tso_segsz;
1012
1013- dev_info = check_tunnel_tso_nic_support(res->port_id);
1014 if (ports[res->port_id].tunnel_tso_segsz == 0) {
1015- ports[res->port_id].dev_conf.txmode.offloads &=
1016- ~(RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO |
1017- RTE_ETH_TX_OFFLOAD_GRE_TNL_TSO |
1018- RTE_ETH_TX_OFFLOAD_IPIP_TNL_TSO |
1019- RTE_ETH_TX_OFFLOAD_GENEVE_TNL_TSO |
1020- RTE_ETH_TX_OFFLOAD_IP_TNL_TSO |
1021- RTE_ETH_TX_OFFLOAD_UDP_TNL_TSO);
1022+ ports[res->port_id].dev_conf.txmode.offloads &= ~all_tunnel_tso;
1023 printf("TSO for tunneled packets is disabled\n");
1024 } else {
1025- uint64_t tso_offloads = (RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO |
1026- RTE_ETH_TX_OFFLOAD_GRE_TNL_TSO |
1027- RTE_ETH_TX_OFFLOAD_IPIP_TNL_TSO |
1028- RTE_ETH_TX_OFFLOAD_GENEVE_TNL_TSO |
1029- RTE_ETH_TX_OFFLOAD_IP_TNL_TSO |
1030- RTE_ETH_TX_OFFLOAD_UDP_TNL_TSO);
1031+ ret = eth_dev_info_get_print_err(res->port_id, &dev_info);
1032+ if (ret != 0)
1033+ return;
1034
1035- ports[res->port_id].dev_conf.txmode.offloads |=
1036- (tso_offloads & dev_info.tx_offload_capa);
1037- printf("TSO segment size for tunneled packets is %d\n",
1038- ports[res->port_id].tunnel_tso_segsz);
1039+ if ((all_tunnel_tso & dev_info.tx_offload_capa) == 0) {
1040+ fprintf(stderr, "Error: port=%u don't support tunnel TSO offloads.\n",
1041+ res->port_id);
1042+ return;
1043+ }
1044
1045 /* Below conditions are needed to make it work:
1046 * (1) tunnel TSO is supported by the NIC;
1047@@ -5152,14 +5131,23 @@ cmd_tunnel_tso_set_parsed(void *parsed_result,
1048 * is not necessary for IPv6 tunneled pkts because there's no
1049 * checksum in IP header anymore.
1050 */
1051-
1052- if (!ports[res->port_id].parse_tunnel)
1053+ if (!ports[res->port_id].parse_tunnel) {
1054 fprintf(stderr,
1055- "Warning: csum parse_tunnel must be set so that tunneled packets are recognized\n");
1056+ "Error: csum parse_tunnel must be set so that tunneled packets are recognized\n");
1057+ return;
1058+ }
1059 if (!(ports[res->port_id].dev_conf.txmode.offloads &
1060- RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM))
1061+ RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM)) {
1062 fprintf(stderr,
1063- "Warning: csum set outer-ip must be set to hw if outer L3 is IPv4; not necessary for IPv6\n");
1064+ "Error: csum set outer-ip must be set to hw if outer L3 is IPv4; not necessary for IPv6\n");
1065+ return;
1066+ }
1067+
1068+ check_tunnel_tso_nic_support(res->port_id, dev_info.tx_offload_capa);
1069+ ports[res->port_id].dev_conf.txmode.offloads |=
1070+ (all_tunnel_tso & dev_info.tx_offload_capa);
1071+ printf("TSO segment size for tunneled packets is %d\n",
1072+ ports[res->port_id].tunnel_tso_segsz);
1073 }
1074
1075 cmd_config_queue_tx_offloads(&ports[res->port_id]);
1076diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c
1077index 80d4d41..5e494c4 100644
1078--- a/app/test-pmd/csumonly.c
1079+++ b/app/test-pmd/csumonly.c
1080@@ -250,7 +250,7 @@ parse_gtp(struct rte_udp_hdr *udp_hdr,
1081 info->l4_proto = 0;
1082 }
1083
1084- info->l2_len += RTE_ETHER_GTP_HLEN;
1085+ info->l2_len += gtp_len + sizeof(*udp_hdr);
1086 }
1087
1088 /* Parse a vxlan header */
1089diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
1090index 9f4a0e0..5f34641 100644
1091--- a/app/test-pmd/testpmd.c
1092+++ b/app/test-pmd/testpmd.c
1093@@ -2376,6 +2376,13 @@ update_rx_queue_state(uint16_t port_id, uint16_t queue_id)
1094 rx_qinfo.queue_state;
1095 } else if (rc == -ENOTSUP) {
1096 /*
1097+ * Do not change the rxq state for primary process
1098+ * to ensure that the PMDs do not implement
1099+ * rte_eth_rx_queue_info_get can forward as before.
1100+ */
1101+ if (rte_eal_process_type() == RTE_PROC_PRIMARY)
1102+ return;
1103+ /*
1104 * Set the rxq state to RTE_ETH_QUEUE_STATE_STARTED
1105 * to ensure that the PMDs do not implement
1106 * rte_eth_rx_queue_info_get can forward.
1107@@ -2401,6 +2408,13 @@ update_tx_queue_state(uint16_t port_id, uint16_t queue_id)
1108 tx_qinfo.queue_state;
1109 } else if (rc == -ENOTSUP) {
1110 /*
1111+ * Do not change the txq state for primary process
1112+ * to ensure that the PMDs do not implement
1113+ * rte_eth_tx_queue_info_get can forward as before.
1114+ */
1115+ if (rte_eal_process_type() == RTE_PROC_PRIMARY)
1116+ return;
1117+ /*
1118 * Set the txq state to RTE_ETH_QUEUE_STATE_STARTED
1119 * to ensure that the PMDs do not implement
1120 * rte_eth_tx_queue_info_get can forward.
1121@@ -2414,12 +2428,15 @@ update_tx_queue_state(uint16_t port_id, uint16_t queue_id)
1122 }
1123
1124 static void
1125-update_queue_state(void)
1126+update_queue_state(portid_t pid)
1127 {
1128 portid_t pi;
1129 queueid_t qi;
1130
1131 RTE_ETH_FOREACH_DEV(pi) {
1132+ if (pid != pi && pid != (portid_t)RTE_PORT_ALL)
1133+ continue;
1134+
1135 for (qi = 0; qi < nb_rxq; qi++)
1136 update_rx_queue_state(pi, qi);
1137 for (qi = 0; qi < nb_txq; qi++)
1138@@ -2467,8 +2484,7 @@ start_packet_forwarding(int with_tx_first)
1139 return;
1140
1141 if (stream_init != NULL) {
1142- if (rte_eal_process_type() == RTE_PROC_SECONDARY)
1143- update_queue_state();
1144+ update_queue_state(RTE_PORT_ALL);
1145 for (i = 0; i < cur_fwd_config.nb_fwd_streams; i++)
1146 stream_init(fwd_streams[i]);
1147 }
1148@@ -3126,8 +3142,7 @@ start_port(portid_t pid)
1149 pl[cfg_pi++] = pi;
1150 }
1151
1152- if (rte_eal_process_type() == RTE_PROC_SECONDARY)
1153- update_queue_state();
1154+ update_queue_state(pi);
1155
1156 if (at_least_one_port_successfully_started && !no_link_check)
1157 check_all_ports_link_status(RTE_PORT_ALL);
1158diff --git a/app/test/meson.build b/app/test/meson.build
1159index c13776c..845ce96 100644
1160--- a/app/test/meson.build
1161+++ b/app/test/meson.build
1162@@ -227,6 +227,7 @@ fast_tests = [
1163 ['fib6_autotest', true],
1164 ['func_reentrancy_autotest', false],
1165 ['flow_classify_autotest', false],
1166+ ['graph_autotest', true],
1167 ['hash_autotest', true],
1168 ['interrupt_autotest', true],
1169 ['ipfrag_autotest', false],
1170@@ -243,6 +244,7 @@ fast_tests = [
1171 ['memzone_autotest', false],
1172 ['meter_autotest', true],
1173 ['multiprocess_autotest', false],
1174+ ['node_list_dump', true],
1175 ['per_lcore_autotest', true],
1176 ['pflock_autotest', true],
1177 ['prefetch_autotest', true],
1178@@ -329,6 +331,7 @@ perf_test_names = [
1179 'trace_perf_autotest',
1180 'ipsec_perf_autotest',
1181 'thash_perf_autotest',
1182+ 'graph_perf_autotest',
1183 ]
1184
1185 driver_test_names = [
1186diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c
1187index f3509bc..0bd4517 100644
1188--- a/app/test/test_cryptodev.c
1189+++ b/app/test/test_cryptodev.c
1190@@ -6491,6 +6491,9 @@ test_zuc_auth_cipher_sgl(const struct wireless_test_data *tdata,
1191 tdata->digest.len) < 0)
1192 return TEST_SKIPPED;
1193
1194+ if (gbl_action_type == RTE_SECURITY_ACTION_TYPE_CPU_CRYPTO)
1195+ return TEST_SKIPPED;
1196+
1197 rte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info);
1198
1199 uint64_t feat_flags = dev_info.feature_flags;
1200@@ -6879,6 +6882,7 @@ snow3g_hash_test_vector_setup(const struct snow3g_test_data *pattern,
1201 static int
1202 test_snow3g_decryption_with_digest_test_case_1(void)
1203 {
1204+ int ret;
1205 struct snow3g_hash_test_data snow3g_hash_data;
1206 struct rte_cryptodev_info dev_info;
1207 struct crypto_testsuite_params *ts_params = &testsuite_params;
1208@@ -6897,8 +6901,9 @@ test_snow3g_decryption_with_digest_test_case_1(void)
1209 */
1210 snow3g_hash_test_vector_setup(&snow3g_test_case_7, &snow3g_hash_data);
1211
1212- if (test_snow3g_decryption(&snow3g_test_case_7))
1213- return TEST_FAILED;
1214+ ret = test_snow3g_decryption(&snow3g_test_case_7);
1215+ if (ret != 0)
1216+ return ret;
1217
1218 return test_snow3g_authentication_verify(&snow3g_hash_data);
1219 }
1220@@ -7569,6 +7574,9 @@ test_mixed_auth_cipher_sgl(const struct mixed_cipher_auth_test_data *tdata,
1221 if (global_api_test_type == CRYPTODEV_RAW_API_TEST)
1222 return TEST_SKIPPED;
1223
1224+ if (gbl_action_type == RTE_SECURITY_ACTION_TYPE_CPU_CRYPTO)
1225+ return TEST_SKIPPED;
1226+
1227 rte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info);
1228
1229 uint64_t feat_flags = dev_info.feature_flags;
1230@@ -8254,7 +8262,7 @@ test_authenticated_encryption(const struct aead_test_data *tdata)
1231 tdata->key.data, tdata->key.len,
1232 tdata->aad.len, tdata->auth_tag.len,
1233 tdata->iv.len);
1234- if (retval < 0)
1235+ if (retval != TEST_SUCCESS)
1236 return retval;
1237
1238 if (tdata->aad.len > MBUF_SIZE) {
1239@@ -10902,7 +10910,7 @@ test_authenticated_decryption_sessionless(
1240 key, tdata->key.len,
1241 tdata->aad.len, tdata->auth_tag.len,
1242 tdata->iv.len);
1243- if (retval < 0)
1244+ if (retval != TEST_SUCCESS)
1245 return retval;
1246
1247 ut_params->op->sym->m_src = ut_params->ibuf;
1248diff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asym.c
1249index 7210497..952b927 100644
1250--- a/app/test/test_cryptodev_asym.c
1251+++ b/app/test/test_cryptodev_asym.c
1252@@ -1717,7 +1717,7 @@ error_exit:
1253 }
1254
1255 static int
1256-test_dh_keygenration(void)
1257+test_dh_key_generation(void)
1258 {
1259 int status;
1260
1261@@ -2291,7 +2291,7 @@ static struct unit_test_suite cryptodev_openssl_asym_testsuite = {
1262 TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_capability),
1263 TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_dsa),
1264 TEST_CASE_ST(ut_setup_asym, ut_teardown_asym,
1265- test_dh_keygenration),
1266+ test_dh_key_generation),
1267 TEST_CASE_ST(ut_setup_asym, ut_teardown_asym, test_rsa_enc_dec),
1268 TEST_CASE_ST(ut_setup_asym, ut_teardown_asym,
1269 test_rsa_sign_verify),
1270diff --git a/app/test/test_cryptodev_mixed_test_vectors.h b/app/test/test_cryptodev_mixed_test_vectors.h
1271index f50dcb0..db58dbd 100644
1272--- a/app/test/test_cryptodev_mixed_test_vectors.h
1273+++ b/app/test/test_cryptodev_mixed_test_vectors.h
1274@@ -284,8 +284,10 @@ struct mixed_cipher_auth_test_data auth_aes_cmac_cipher_snow_test_case_1 = {
1275 },
1276 .cipher_iv = {
1277 .data = {
1278+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1279+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1280 },
1281- .len = 0,
1282+ .len = 16,
1283 },
1284 .cipher = {
1285 .len_bits = 516 << 3,
1286@@ -723,8 +725,10 @@ struct mixed_cipher_auth_test_data auth_aes_cmac_cipher_zuc_test_case_1 = {
1287 },
1288 .cipher_iv = {
1289 .data = {
1290+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1291+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1292 },
1293- .len = 0,
1294+ .len = 16,
1295 },
1296 .cipher = {
1297 .len_bits = 516 << 3,
1298diff --git a/app/test/test_cryptodev_security_pdcp_sdap_test_vectors.h b/app/test/test_cryptodev_security_pdcp_sdap_test_vectors.h
1299index f43f693..b0fa0ec 100644
1300--- a/app/test/test_cryptodev_security_pdcp_sdap_test_vectors.h
1301+++ b/app/test/test_cryptodev_security_pdcp_sdap_test_vectors.h
1302@@ -769,7 +769,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1303 0x0a, 0x98, 0xc1, 0x3c, 0x98, 0x82,
1304 0xdc, 0xb6, 0xc2, 0x36 },
1305 .data_in =
1306- (uint8_t[]){ 0x50, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1307+ (uint8_t[]){ 0x80, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1308 0x3f, 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde,
1309 0x88, 0x63, 0x08, 0x4f, 0xd3, 0x71, 0xfb,
1310 0xeb, 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf,
1311@@ -781,7 +781,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1312 0x7a, 0xf9, 0xdd },
1313 .in_len = 66,
1314 .data_out =
1315- (uint8_t[]){ 0x50, 0x01, 0x86, 0x69, 0xf2, 0x5d, 0xd7,
1316+ (uint8_t[]){ 0x80, 0x01, 0x86, 0x69, 0xf2, 0x5d, 0xd7,
1317 0xf5, 0xc1, 0xf7, 0x1e, 0x47, 0x5d, 0xce,
1318 0xbe, 0x48, 0xb5, 0x0b, 0x6a, 0x73, 0x9a,
1319 0x5a, 0xa3, 0x06, 0x47, 0x40, 0x96, 0xcf,
1320@@ -790,7 +790,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1321 0xc9, 0x7f, 0x11, 0x79, 0x24, 0x44, 0xe8,
1322 0x39, 0x11, 0x03, 0x0a, 0x9d, 0x4f, 0xe2,
1323 0x95, 0x9f, 0x47, 0x73, 0x37, 0x83, 0x8c,
1324- 0x23, 0xfa, 0x16, 0x39, 0xf7, 0x15, 0x11 },
1325+ 0x23, 0xfa, 0x16, 0xb2, 0xb0, 0x17, 0x4a },
1326 .sn_size = 12,
1327 .hfn = 0x1,
1328 .hfn_threshold = 0xfa558,
1329@@ -817,7 +817,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1330 0x0a, 0x98, 0xc1, 0x3c, 0x98, 0x82,
1331 0xdc, 0xb6, 0xc2, 0x36 },
1332 .data_in =
1333- (uint8_t[]){ 0x50, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1334+ (uint8_t[]){ 0x80, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1335 0x3f, 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde,
1336 0x88, 0x63, 0x08, 0x4f, 0xd3, 0x71, 0xfb,
1337 0xeb, 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf,
1338@@ -829,7 +829,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1339 0x7a, 0xf9, 0xdd },
1340 .in_len = 66,
1341 .data_out =
1342- (uint8_t[]){ 0x50, 0x01, 0x86, 0x22, 0x2a, 0x8f, 0x86,
1343+ (uint8_t[]){ 0x80, 0x01, 0x86, 0x22, 0x2a, 0x8f, 0x86,
1344 0x25, 0x92, 0xcd, 0xa9, 0xa1, 0xa0, 0xf5,
1345 0x86, 0x0d, 0xe8, 0xe4, 0xef, 0xe0, 0x78,
1346 0x45, 0x7c, 0x0c, 0x41, 0x5c, 0x8f, 0x07,
1347@@ -838,7 +838,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1348 0x35, 0xff, 0x7a, 0x42, 0xac, 0x94, 0x21,
1349 0x60, 0x1c, 0x13, 0xcc, 0x7e, 0x6b, 0x2f,
1350 0x6f, 0x91, 0x89, 0xc6, 0xd4, 0xe6, 0x17,
1351- 0xae, 0xde, 0xfb, 0x90, 0x62, 0x59, 0xcb },
1352+ 0xae, 0xde, 0xfb, 0x19, 0xDa, 0x9a, 0xc2 },
1353 .sn_size = 12,
1354 .hfn = 0x1,
1355 .hfn_threshold = 0xfa558,
1356@@ -865,7 +865,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1357 0x0a, 0x98, 0xc1, 0x3c, 0x98, 0x82,
1358 0xdc, 0xb6, 0xc2, 0x36 },
1359 .data_in =
1360- (uint8_t[]){ 0x50, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1361+ (uint8_t[]){ 0x80, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1362 0x3f, 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde,
1363 0x88, 0x63, 0x08, 0x4f, 0xd3, 0x71, 0xfb,
1364 0xeb, 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf,
1365@@ -877,7 +877,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1366 0x7a, 0xf9, 0xdd },
1367 .in_len = 66,
1368 .data_out =
1369- (uint8_t[]){ 0x50, 0x01, 0x86, 0x69, 0xf2, 0x5d, 0xd7,
1370+ (uint8_t[]){ 0x80, 0x01, 0x86, 0x69, 0xf2, 0x5d, 0xd7,
1371 0xf5, 0xc1, 0xf7, 0x1e, 0x47, 0x5d, 0xce,
1372 0xbe, 0x48, 0xb5, 0x0b, 0x6a, 0x73, 0x9a,
1373 0x5a, 0xa3, 0x06, 0x47, 0x40, 0x96, 0xcf,
1374@@ -886,7 +886,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1375 0xc9, 0x7f, 0x11, 0x79, 0x24, 0x44, 0xe8,
1376 0x39, 0x11, 0x03, 0x0a, 0x9d, 0x4f, 0xe2,
1377 0x95, 0x9f, 0x47, 0x73, 0x37, 0x83, 0x8c,
1378- 0x23, 0xfa, 0x16, 0x72, 0x3e, 0x14, 0xa9 },
1379+ 0x23, 0xfa, 0x16, 0x6c, 0xcb, 0x92, 0xdf },
1380 .sn_size = 12,
1381 .hfn = 0x1,
1382 .hfn_threshold = 0xfa558,
1383@@ -913,7 +913,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1384 0x0a, 0x98, 0xc1, 0x3c, 0x98, 0x82,
1385 0xdc, 0xb6, 0xc2, 0x36 },
1386 .data_in =
1387- (uint8_t[]){ 0x50, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1388+ (uint8_t[]){ 0x80, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1389 0x3f, 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde,
1390 0x88, 0x63, 0x08, 0x4f, 0xd3, 0x71, 0xfb,
1391 0xeb, 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf,
1392@@ -925,7 +925,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1393 0x7a, 0xf9, 0xdd },
1394 .in_len = 66,
1395 .data_out =
1396- (uint8_t[]){ 0x50, 0x01, 0x86, 0x22, 0x2a, 0x8f, 0x86,
1397+ (uint8_t[]){ 0x80, 0x01, 0x86, 0x22, 0x2a, 0x8f, 0x86,
1398 0x25, 0x92, 0xcd, 0xa9, 0xa1, 0xa0, 0xf5,
1399 0x86, 0x0d, 0xe8, 0xe4, 0xef, 0xe0, 0x78,
1400 0x45, 0x7c, 0x0c, 0x41, 0x5c, 0x8f, 0x07,
1401@@ -934,7 +934,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1402 0x35, 0xff, 0x7a, 0x42, 0xac, 0x94, 0x21,
1403 0x60, 0x1c, 0x13, 0xcc, 0x7e, 0x6b, 0x2f,
1404 0x6f, 0x91, 0x89, 0xc6, 0xd4, 0xe6, 0x17,
1405- 0xae, 0xde, 0xfb, 0x3f, 0x47, 0xaa, 0x9b },
1406+ 0xae, 0xde, 0xfb, 0x5b, 0xc2, 0x9f, 0x29 },
1407 .sn_size = 12,
1408 .hfn = 0x1,
1409 .hfn_threshold = 0xfa558,
1410@@ -961,7 +961,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1411 0x0a, 0x98, 0xc1, 0x3c, 0x98, 0x82,
1412 0xdc, 0xb6, 0xc2, 0x36 },
1413 .data_in =
1414- (uint8_t[]){ 0x50, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1415+ (uint8_t[]){ 0x80, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1416 0x3f, 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde,
1417 0x88, 0x63, 0x08, 0x4f, 0xd3, 0x71, 0xfb,
1418 0xeb, 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf,
1419@@ -974,7 +974,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1420 .in_len = 66,
1421 .data_out =
1422 (uint8_t[]){
1423- 0x50, 0x01, 0x86, 0x69, 0xf2, 0x5d, 0xd7, 0xf5,
1424+ 0x80, 0x01, 0x86, 0x69, 0xf2, 0x5d, 0xd7, 0xf5,
1425 0xc1, 0xf7, 0x1e, 0x47, 0x5d, 0xce, 0xbe, 0x48,
1426 0xb5, 0x0b, 0x6a, 0x73, 0x9a, 0x5a, 0xa3, 0x06,
1427 0x47, 0x40, 0x96, 0xcf, 0x86, 0x98, 0x3d, 0x6f,
1428@@ -982,7 +982,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1429 0xa6, 0x24, 0xc9, 0x7f, 0x11, 0x79, 0x24, 0x44,
1430 0xe8, 0x39, 0x11, 0x03, 0x0a, 0x9d, 0x4f, 0xe2,
1431 0x95, 0x9f, 0x47, 0x73, 0x37, 0x83, 0x8c, 0x23,
1432- 0xfa, 0x16, 0x52, 0x69, 0x16, 0xfc,
1433+ 0xfa, 0x16, 0x5d, 0x83, 0x73, 0x34,
1434 },
1435 .sn_size = 12,
1436 .hfn = 0x1,
1437@@ -1010,7 +1010,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1438 0x0a, 0x98, 0xc1, 0x3c, 0x98, 0x82,
1439 0xdc, 0xb6, 0xc2, 0x36 },
1440 .data_in =
1441- (uint8_t[]){ 0x50, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1442+ (uint8_t[]){ 0x80, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1443 0x3f, 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde,
1444 0x88, 0x63, 0x08, 0x4f, 0xd3, 0x71, 0xfb,
1445 0xeb, 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf,
1446@@ -1022,7 +1022,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1447 0x7a, 0xf9, 0xdd },
1448 .in_len = 66,
1449 .data_out =
1450- (uint8_t[]){ 0x50, 0x01, 0x86, 0x22, 0x2a, 0x8f, 0x86,
1451+ (uint8_t[]){ 0x80, 0x01, 0x86, 0x22, 0x2a, 0x8f, 0x86,
1452 0x25, 0x92, 0xcd, 0xa9, 0xa1, 0xa0, 0xf5,
1453 0x86, 0x0d, 0xe8, 0xe4, 0xef, 0xe0, 0x78,
1454 0x45, 0x7c, 0x0c, 0x41, 0x5c, 0x8f, 0x07,
1455@@ -1031,7 +1031,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1456 0x35, 0xff, 0x7a, 0x42, 0xac, 0x94, 0x21,
1457 0x60, 0x1c, 0x13, 0xcc, 0x7e, 0x6b, 0x2f,
1458 0x6f, 0x91, 0x89, 0xc6, 0xd4, 0xe6, 0x17,
1459- 0xae, 0xde, 0xfb, 0xf5, 0xda, 0x73, 0xa7 },
1460+ 0xae, 0xde, 0xfb, 0xff, 0xf9, 0xef, 0xff },
1461 .sn_size = 12,
1462 .hfn = 0x1,
1463 .hfn_threshold = 0xfa558,
1464@@ -1154,7 +1154,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1465 0x0a, 0x98, 0xc1, 0x3c, 0x98, 0x82,
1466 0xdc, 0xb6, 0xc2, 0x36 },
1467 .data_in =
1468- (uint8_t[]){ 0x50, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1469+ (uint8_t[]){ 0x80, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1470 0x3f, 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde,
1471 0x88, 0x63, 0x08, 0x4f, 0xd3, 0x71, 0xfb,
1472 0xeb, 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf,
1473@@ -1166,7 +1166,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1474 0x7a, 0xf9, 0xdd },
1475 .in_len = 66,
1476 .data_out =
1477- (uint8_t[]){ 0x50, 0x01, 0x86, 0xe8, 0x8c, 0x96, 0x38,
1478+ (uint8_t[]){ 0x80, 0x01, 0x86, 0xe8, 0x8c, 0x96, 0x38,
1479 0x6e, 0xe4, 0x1f, 0xb9, 0x85, 0x61, 0x2e,
1480 0x64, 0x31, 0x22, 0x97, 0x5b, 0xf6, 0x40,
1481 0x08, 0x65, 0xc3, 0xfa, 0x72, 0xd2, 0x22,
1482@@ -1175,7 +1175,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1483 0x23, 0x80, 0xcc, 0x5f, 0xfd, 0x74, 0xb1,
1484 0xfb, 0xe1, 0xea, 0x6f, 0xf9, 0x9d, 0xf3,
1485 0x90, 0x02, 0x6e, 0xf1, 0xf8, 0x95, 0x97,
1486- 0xbd, 0xba, 0x08, 0x39, 0x63, 0x21, 0x82 },
1487+ 0xbd, 0xba, 0x08, 0xb2, 0x24, 0x23, 0xd9 },
1488 .sn_size = 12,
1489 .hfn = 0x1,
1490 .hfn_threshold = 0xfa558,
1491@@ -1202,7 +1202,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1492 0x0a, 0x98, 0xc1, 0x3c, 0x98, 0x82,
1493 0xdc, 0xb6, 0xc2, 0x36 },
1494 .data_in =
1495- (uint8_t[]){ 0x50, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1496+ (uint8_t[]){ 0x80, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1497 0x3f, 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde,
1498 0x88, 0x63, 0x08, 0x4f, 0xd3, 0x71, 0xfb,
1499 0xeb, 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf,
1500@@ -1214,7 +1214,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1501 0x7a, 0xf9, 0xdd },
1502 .in_len = 66,
1503 .data_out =
1504- (uint8_t[]){ 0x50, 0x01, 0x86, 0xd2, 0xc0, 0x3a, 0x41,
1505+ (uint8_t[]){ 0x80, 0x01, 0x86, 0xd2, 0xc0, 0x3a, 0x41,
1506 0xbc, 0x0b, 0x95, 0xa4, 0x57, 0x3e, 0x36,
1507 0x10, 0xb2, 0xff, 0x48, 0x1f, 0x10, 0xa8,
1508 0x06, 0x42, 0xc5, 0xa2, 0x33, 0xed, 0x2e,
1509@@ -1223,7 +1223,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1510 0x35, 0xd2, 0x31, 0x1a, 0xb8, 0x33, 0xc7,
1511 0x9c, 0xa4, 0xa4, 0x9b, 0x20, 0xc6, 0x47,
1512 0xdd, 0xe5, 0xa3, 0x4b, 0x9e, 0x66, 0xde,
1513- 0xc9, 0x0a, 0x64, 0x8e, 0x79, 0xde, 0xaa },
1514+ 0xc9, 0x0a, 0x64, 0x07, 0xc1, 0x1d, 0xa3 },
1515 .sn_size = 12,
1516 .hfn = 0x1,
1517 .hfn_threshold = 0xfa558,
1518@@ -1250,7 +1250,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1519 0x0a, 0x98, 0xc1, 0x3c, 0x98, 0x82,
1520 0xdc, 0xb6, 0xc2, 0x36 },
1521 .data_in =
1522- (uint8_t[]){ 0x50, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1523+ (uint8_t[]){ 0x80, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1524 0x3f, 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde,
1525 0x88, 0x63, 0x08, 0x4f, 0xd3, 0x71, 0xfb,
1526 0xeb, 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf,
1527@@ -1262,7 +1262,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1528 0x7a, 0xf9, 0xdd },
1529 .in_len = 66,
1530 .data_out =
1531- (uint8_t[]){ 0x50, 0x01, 0x86, 0xe8, 0x8c, 0x96, 0x38,
1532+ (uint8_t[]){ 0x80, 0x01, 0x86, 0xe8, 0x8c, 0x96, 0x38,
1533 0x6e, 0xe4, 0x1f, 0xb9, 0x85, 0x61, 0x2e,
1534 0x64, 0x31, 0x22, 0x97, 0x5b, 0xf6, 0x40,
1535 0x08, 0x65, 0xc3, 0xfa, 0x72, 0xd2, 0x22,
1536@@ -1271,7 +1271,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1537 0x23, 0x80, 0xcc, 0x5f, 0xfd, 0x74, 0xb1,
1538 0xfb, 0xe1, 0xea, 0x6f, 0xf9, 0x9d, 0xf3,
1539 0x90, 0x02, 0x6e, 0xf1, 0xf8, 0x95, 0x97,
1540- 0xbd, 0xba, 0x08, 0x72, 0xaa, 0x20, 0x3a },
1541+ 0xbd, 0xba, 0x08, 0x6c, 0x5f, 0xa6, 0x4c },
1542 .sn_size = 12,
1543 .hfn = 0x1,
1544 .hfn_threshold = 0xfa558,
1545@@ -1298,7 +1298,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1546 0x0a, 0x98, 0xc1, 0x3c, 0x98, 0x82,
1547 0xdc, 0xb6, 0xc2, 0x36 },
1548 .data_in =
1549- (uint8_t[]){ 0x50, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1550+ (uint8_t[]){ 0x80, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1551 0x3f, 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde,
1552 0x88, 0x63, 0x08, 0x4f, 0xd3, 0x71, 0xfb,
1553 0xeb, 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf,
1554@@ -1310,7 +1310,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1555 0x7a, 0xf9, 0xdd },
1556 .in_len = 66,
1557 .data_out =
1558- (uint8_t[]){ 0x50, 0x01, 0x86, 0xd2, 0xc0, 0x3a, 0x41,
1559+ (uint8_t[]){ 0x80, 0x01, 0x86, 0xd2, 0xc0, 0x3a, 0x41,
1560 0xbc, 0x0b, 0x95, 0xa4, 0x57, 0x3e, 0x36,
1561 0x10, 0xb2, 0xff, 0x48, 0x1f, 0x10, 0xa8,
1562 0x06, 0x42, 0xc5, 0xa2, 0x33, 0xed, 0x2e,
1563@@ -1319,7 +1319,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1564 0x35, 0xd2, 0x31, 0x1a, 0xb8, 0x33, 0xc7,
1565 0x9c, 0xa4, 0xa4, 0x9b, 0x20, 0xc6, 0x47,
1566 0xdd, 0xe5, 0xa3, 0x4b, 0x9e, 0x66, 0xde,
1567- 0xc9, 0x0a, 0x64, 0x21, 0x5c, 0x2d, 0xfa },
1568+ 0xc9, 0x0a, 0x64, 0x45, 0xd9, 0x18, 0x48 },
1569 .sn_size = 12,
1570 .hfn = 0x1,
1571 .hfn_threshold = 0xfa558,
1572@@ -1346,7 +1346,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1573 0x0a, 0x98, 0xc1, 0x3c, 0x98, 0x82,
1574 0xdc, 0xb6, 0xc2, 0x36 },
1575 .data_in =
1576- (uint8_t[]){ 0x50, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1577+ (uint8_t[]){ 0x80, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1578 0x3f, 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde,
1579 0x88, 0x63, 0x08, 0x4f, 0xd3, 0x71, 0xfb,
1580 0xeb, 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf,
1581@@ -1358,7 +1358,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1582 0x7a, 0xf9, 0xdd },
1583 .in_len = 66,
1584 .data_out =
1585- (uint8_t[]){ 0x50, 0x01, 0x86, 0xe8, 0x8c, 0x96, 0x38,
1586+ (uint8_t[]){ 0x80, 0x01, 0x86, 0xe8, 0x8c, 0x96, 0x38,
1587 0x6e, 0xe4, 0x1f, 0xb9, 0x85, 0x61, 0x2e,
1588 0x64, 0x31, 0x22, 0x97, 0x5b, 0xf6, 0x40,
1589 0x08, 0x65, 0xc3, 0xfa, 0x72, 0xd2, 0x22,
1590@@ -1367,7 +1367,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1591 0x23, 0x80, 0xcc, 0x5f, 0xfd, 0x74, 0xb1,
1592 0xfb, 0xe1, 0xea, 0x6f, 0xf9, 0x9d, 0xf3,
1593 0x90, 0x02, 0x6e, 0xf1, 0xf8, 0x95, 0x97,
1594- 0xbd, 0xba, 0x08, 0x52, 0xfd, 0x22, 0x6f },
1595+ 0xbd, 0xba, 0x08, 0x5d, 0x17, 0x47, 0xa7 },
1596 .sn_size = 12,
1597 .hfn = 0x1,
1598 .hfn_threshold = 0xfa558,
1599@@ -1394,7 +1394,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1600 0x0a, 0x98, 0xc1, 0x3c, 0x98, 0x82,
1601 0xdc, 0xb6, 0xc2, 0x36 },
1602 .data_in =
1603- (uint8_t[]){ 0x50, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1604+ (uint8_t[]){ 0x80, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1605 0x3f, 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde,
1606 0x88, 0x63, 0x08, 0x4f, 0xd3, 0x71, 0xfb,
1607 0xeb, 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf,
1608@@ -1406,7 +1406,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1609 0x7a, 0xf9, 0xdd },
1610 .in_len = 66,
1611 .data_out =
1612- (uint8_t[]){ 0x50, 0x01, 0x86, 0xd2, 0xc0, 0x3a, 0x41,
1613+ (uint8_t[]){ 0x80, 0x01, 0x86, 0xd2, 0xc0, 0x3a, 0x41,
1614 0xbc, 0x0b, 0x95, 0xa4, 0x57, 0x3e, 0x36,
1615 0x10, 0xb2, 0xff, 0x48, 0x1f, 0x10, 0xa8,
1616 0x06, 0x42, 0xc5, 0xa2, 0x33, 0xed, 0x2e,
1617@@ -1415,7 +1415,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1618 0x35, 0xd2, 0x31, 0x1a, 0xb8, 0x33, 0xc7,
1619 0x9c, 0xa4, 0xa4, 0x9b, 0x20, 0xc6, 0x47,
1620 0xdd, 0xe5, 0xa3, 0x4b, 0x9e, 0x66, 0xde,
1621- 0xc9, 0x0a, 0x64, 0xeb, 0xc1, 0xf4, 0xc6 },
1622+ 0xc9, 0x0a, 0x64, 0xe1, 0xe2, 0x68, 0x9e },
1623 .sn_size = 12,
1624 .hfn = 0x1,
1625 .hfn_threshold = 0xfa558,
1626@@ -1538,7 +1538,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1627 0x0a, 0x98, 0xc1, 0x3c, 0x98, 0x82,
1628 0xdc, 0xb6, 0xc2, 0x36 },
1629 .data_in =
1630- (uint8_t[]){ 0x50, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1631+ (uint8_t[]){ 0x80, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1632 0x3f, 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde,
1633 0x88, 0x63, 0x08, 0x4f, 0xd3, 0x71, 0xfb,
1634 0xeb, 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf,
1635@@ -1550,7 +1550,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1636 0x7a, 0xf9, 0xdd },
1637 .in_len = 66,
1638 .data_out =
1639- (uint8_t[]){ 0x50, 0x01, 0x86, 0x79, 0xdb, 0x02, 0x27,
1640+ (uint8_t[]){ 0x80, 0x01, 0x86, 0x79, 0xdb, 0x02, 0x27,
1641 0xa0, 0x85, 0x82, 0x87, 0x6b, 0x35, 0x2b,
1642 0xe1, 0x96, 0x5b, 0xfd, 0x67, 0xe1, 0x67,
1643 0x69, 0x17, 0x5b, 0x0a, 0x8f, 0xb8, 0x37,
1644@@ -1559,7 +1559,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1645 0xda, 0x94, 0x61, 0x8e, 0x2d, 0x7a, 0x5d,
1646 0x64, 0x0f, 0x4a, 0xc7, 0x7c, 0x9d, 0x56,
1647 0x5a, 0x2a, 0xcb, 0xff, 0x79, 0x07, 0xa5,
1648- 0xaf, 0x96, 0x5c, 0xb6, 0x6c, 0xeb, 0x14 },
1649+ 0xaf, 0x96, 0x5c, 0x3d, 0x2b, 0xe9, 0x4f },
1650 .sn_size = 12,
1651 .hfn = 0x1,
1652 .hfn_threshold = 0xfa558,
1653@@ -1586,7 +1586,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1654 0x0a, 0x98, 0xc1, 0x3c, 0x98, 0x82,
1655 0xdc, 0xb6, 0xc2, 0x36 },
1656 .data_in =
1657- (uint8_t[]){ 0x50, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1658+ (uint8_t[]){ 0x80, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1659 0x3f, 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde,
1660 0x88, 0x63, 0x08, 0x4f, 0xd3, 0x71, 0xfb,
1661 0xeb, 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf,
1662@@ -1598,7 +1598,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1663 0x7a, 0xf9, 0xdd },
1664 .in_len = 66,
1665 .data_out =
1666- (uint8_t[]){ 0x50, 0x01, 0x86, 0x2c, 0x0f, 0xc1, 0x08,
1667+ (uint8_t[]){ 0x80, 0x01, 0x86, 0x2c, 0x0f, 0xc1, 0x08,
1668 0x2e, 0xa7, 0x97, 0xd2, 0x6c, 0x17, 0x8f,
1669 0x22, 0x1f, 0x99, 0x1b, 0x48, 0x04, 0x29,
1670 0x54, 0x3f, 0x07, 0x01, 0xda, 0x19, 0x59,
1671@@ -1607,7 +1607,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1672 0x04, 0xf4, 0xfe, 0xe6, 0xf7, 0x53, 0x51,
1673 0x70, 0x10, 0x56, 0x83, 0x59, 0xb5, 0x64,
1674 0x0b, 0xa6, 0x2e, 0xa5, 0x03, 0x62, 0x13,
1675- 0x91, 0xaf, 0x24, 0xb2, 0x82, 0xfb, 0x27 },
1676+ 0x91, 0xaf, 0x24, 0x3b, 0x3a, 0x38, 0x2e },
1677 .sn_size = 12,
1678 .hfn = 0x1,
1679 .hfn_threshold = 0xfa558,
1680@@ -1634,7 +1634,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1681 0x0a, 0x98, 0xc1, 0x3c, 0x98, 0x82,
1682 0xdc, 0xb6, 0xc2, 0x36 },
1683 .data_in =
1684- (uint8_t[]){ 0x50, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1685+ (uint8_t[]){ 0x80, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1686 0x3f, 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde,
1687 0x88, 0x63, 0x08, 0x4f, 0xd3, 0x71, 0xfb,
1688 0xeb, 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf,
1689@@ -1646,7 +1646,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1690 0x7a, 0xf9, 0xdd },
1691 .in_len = 66,
1692 .data_out =
1693- (uint8_t[]){ 0x50, 0x01, 0x86, 0x79, 0xdb, 0x02, 0x27,
1694+ (uint8_t[]){ 0x80, 0x01, 0x86, 0x79, 0xdb, 0x02, 0x27,
1695 0xa0, 0x85, 0x82, 0x87, 0x6b, 0x35, 0x2b,
1696 0xe1, 0x96, 0x5b, 0xfd, 0x67, 0xe1, 0x67,
1697 0x69, 0x17, 0x5b, 0x0a, 0x8f, 0xb8, 0x37,
1698@@ -1655,7 +1655,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1699 0xda, 0x94, 0x61, 0x8e, 0x2d, 0x7a, 0x5d,
1700 0x64, 0x0f, 0x4a, 0xc7, 0x7c, 0x9d, 0x56,
1701 0x5a, 0x2a, 0xcb, 0xff, 0x79, 0x07, 0xa5,
1702- 0xaf, 0x96, 0x5c, 0xfd, 0xa5, 0xea, 0xac },
1703+ 0xaf, 0x96, 0x5c, 0xe3, 0x50, 0x6c, 0xda },
1704 .sn_size = 12,
1705 .hfn = 0x1,
1706 .hfn_threshold = 0xfa558,
1707@@ -1682,7 +1682,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1708 0x0a, 0x98, 0xc1, 0x3c, 0x98, 0x82,
1709 0xdc, 0xb6, 0xc2, 0x36 },
1710 .data_in =
1711- (uint8_t[]){ 0x50, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1712+ (uint8_t[]){ 0x80, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1713 0x3f, 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde,
1714 0x88, 0x63, 0x08, 0x4f, 0xd3, 0x71, 0xfb,
1715 0xeb, 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf,
1716@@ -1694,7 +1694,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1717 0x7a, 0xf9, 0xdd },
1718 .in_len = 66,
1719 .data_out =
1720- (uint8_t[]){ 0x50, 0x01, 0x86, 0x2c, 0x0f, 0xc1, 0x08,
1721+ (uint8_t[]){ 0x80, 0x01, 0x86, 0x2c, 0x0f, 0xc1, 0x08,
1722 0x2e, 0xa7, 0x97, 0xd2, 0x6c, 0x17, 0x8f,
1723 0x22, 0x1f, 0x99, 0x1b, 0x48, 0x04, 0x29,
1724 0x54, 0x3f, 0x07, 0x01, 0xda, 0x19, 0x59,
1725@@ -1703,7 +1703,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1726 0x04, 0xf4, 0xfe, 0xe6, 0xf7, 0x53, 0x51,
1727 0x70, 0x10, 0x56, 0x83, 0x59, 0xb5, 0x64,
1728 0x0b, 0xa6, 0x2e, 0xa5, 0x03, 0x62, 0x13,
1729- 0x91, 0xaf, 0x24, 0x1d, 0xa7, 0x08, 0x77 },
1730+ 0x91, 0xaf, 0x24, 0x79, 0x22, 0x3d, 0xc5 },
1731 .sn_size = 12,
1732 .hfn = 0x1,
1733 .hfn_threshold = 0xfa558,
1734@@ -1730,7 +1730,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1735 0x0a, 0x98, 0xc1, 0x3c, 0x98, 0x82,
1736 0xdc, 0xb6, 0xc2, 0x36 },
1737 .data_in =
1738- (uint8_t[]){ 0x50, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1739+ (uint8_t[]){ 0x80, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1740 0x3f, 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde,
1741 0x88, 0x63, 0x08, 0x4f, 0xd3, 0x71, 0xfb,
1742 0xeb, 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf,
1743@@ -1742,7 +1742,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1744 0x7a, 0xf9, 0xdd },
1745 .in_len = 66,
1746 .data_out =
1747- (uint8_t[]){ 0x50, 0x01, 0x86, 0x79, 0xdb, 0x02, 0x27,
1748+ (uint8_t[]){ 0x80, 0x01, 0x86, 0x79, 0xdb, 0x02, 0x27,
1749 0xa0, 0x85, 0x82, 0x87, 0x6b, 0x35, 0x2b,
1750 0xe1, 0x96, 0x5b, 0xfd, 0x67, 0xe1, 0x67,
1751 0x69, 0x17, 0x5b, 0x0a, 0x8f, 0xb8, 0x37,
1752@@ -1751,7 +1751,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1753 0xda, 0x94, 0x61, 0x8e, 0x2d, 0x7a, 0x5d,
1754 0x64, 0x0f, 0x4a, 0xc7, 0x7c, 0x9d, 0x56,
1755 0x5a, 0x2a, 0xcb, 0xff, 0x79, 0x07, 0xa5,
1756- 0xaf, 0x96, 0x5c, 0xdd, 0xf2, 0xe8, 0xf9 },
1757+ 0xaf, 0x96, 0x5c, 0xd2, 0x18, 0x8d, 0x31 },
1758 .sn_size = 12,
1759 .hfn = 0x1,
1760 .hfn_threshold = 0xfa558,
1761@@ -1778,7 +1778,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1762 0x0a, 0x98, 0xc1, 0x3c, 0x98, 0x82,
1763 0xdc, 0xb6, 0xc2, 0x36 },
1764 .data_in =
1765- (uint8_t[]){ 0x50, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1766+ (uint8_t[]){ 0x80, 0x01, 0x86, 0xb8, 0xf8, 0xdb, 0x2d,
1767 0x3f, 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde,
1768 0x88, 0x63, 0x08, 0x4f, 0xd3, 0x71, 0xfb,
1769 0xeb, 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf,
1770@@ -1790,7 +1790,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1771 0x7a, 0xf9, 0xdd },
1772 .in_len = 66,
1773 .data_out =
1774- (uint8_t[]){ 0x50, 0x01, 0x86, 0x2c, 0x0f, 0xc1, 0x08,
1775+ (uint8_t[]){ 0x80, 0x01, 0x86, 0x2c, 0x0f, 0xc1, 0x08,
1776 0x2e, 0xa7, 0x97, 0xd2, 0x6c, 0x17, 0x8f,
1777 0x22, 0x1f, 0x99, 0x1b, 0x48, 0x04, 0x29,
1778 0x54, 0x3f, 0x07, 0x01, 0xda, 0x19, 0x59,
1779@@ -1799,7 +1799,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1780 0x04, 0xf4, 0xfe, 0xe6, 0xf7, 0x53, 0x51,
1781 0x70, 0x10, 0x56, 0x83, 0x59, 0xb5, 0x64,
1782 0x0b, 0xa6, 0x2e, 0xa5, 0x03, 0x62, 0x13,
1783- 0x91, 0xaf, 0x24, 0xd7, 0x3a, 0xd1, 0x4b },
1784+ 0x91, 0xaf, 0x24, 0xdd, 0x19, 0x4d, 0x13 },
1785 .sn_size = 12,
1786 .hfn = 0x1,
1787 .hfn_threshold = 0xfa558,
1788@@ -2556,7 +2556,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1789 0x4b, 0x32, 0x87, 0xf9, 0xdb, 0xe0,
1790 0x31, 0x5f, 0x3a, 0x15 },
1791 .data_in =
1792- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
1793+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
1794 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde, 0x88,
1795 0x63, 0x08, 0x4f, 0xD3, 0x71, 0xfb, 0xeb,
1796 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf, 0x3f,
1797@@ -2568,7 +2568,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1798 0xf9, 0xdd, 0xcc, 0x69 },
1799 .in_len = 67,
1800 .data_out =
1801- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0x78, 0xee, 0x01,
1802+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0x78, 0xee, 0x01,
1803 0x4c, 0x79, 0xc7, 0x14, 0x79, 0x2c, 0x1b,
1804 0x8a, 0xd0, 0x17, 0xb4, 0xb4, 0xfe, 0xa7,
1805 0x17, 0x9a, 0x93, 0x5d, 0xad, 0x27, 0x8a,
1806@@ -2577,8 +2577,8 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1807 0x37, 0xfb, 0x98, 0x1b, 0x06, 0x1a, 0x76,
1808 0xf8, 0x07, 0x72, 0xe9, 0xa2, 0x89, 0x47,
1809 0x95, 0x8f, 0x8f, 0x4e, 0x45, 0x55, 0xd6,
1810- 0x0e, 0xf4, 0xe7, 0xe8, 0x78, 0xdd, 0xc1,
1811- 0x92 },
1812+ 0x0e, 0xf4, 0xe7, 0xe8, 0xc0, 0x48, 0x6a,
1813+ 0x7c },
1814 .sn_size = 18,
1815 .hfn = 0x1,
1816 .hfn_threshold = 0xfa558,
1817@@ -2605,7 +2605,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1818 0x4b, 0x32, 0x87, 0xf9, 0xdb, 0xe0,
1819 0x31, 0x5f, 0x3a, 0x15 },
1820 .data_in =
1821- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
1822+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
1823 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde, 0x88,
1824 0x63, 0x08, 0x4f, 0xD3, 0x71, 0xfb, 0xeb,
1825 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf, 0x3f,
1826@@ -2617,7 +2617,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1827 0xf9, 0xdd, 0xcc, 0x69 },
1828 .in_len = 67,
1829 .data_out =
1830- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0xbf, 0x21, 0xc9,
1831+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0xbf, 0x21, 0xc9,
1832 0x7d, 0x02, 0x8d, 0xf7, 0xf7, 0x80, 0x50,
1833 0x60, 0x32, 0x09, 0xb8, 0x69, 0x48, 0xab,
1834 0x58, 0xf0, 0xd9, 0x63, 0x63, 0x36, 0x01,
1835@@ -2626,8 +2626,8 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1836 0x4c, 0x00, 0xd0, 0x0e, 0x31, 0x1c, 0x87,
1837 0xee, 0x1c, 0xc3, 0x81, 0xb4, 0xb6, 0x09,
1838 0xb5, 0x3c, 0x85, 0xb9, 0xcc, 0x2d, 0x2e,
1839- 0x9c, 0x85, 0x0b, 0xf7, 0xb1, 0x80, 0x30,
1840- 0xa5 },
1841+ 0x9c, 0x85, 0x0b, 0xf7, 0x17, 0x28, 0x0f,
1842+ 0x7d },
1843 .sn_size = 18,
1844 .hfn = 0x1,
1845 .hfn_threshold = 0xfa558,
1846@@ -2654,7 +2654,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1847 0x4b, 0x32, 0x87, 0xf9, 0xdb, 0xe0,
1848 0x31, 0x5f, 0x3a, 0x15 },
1849 .data_in =
1850- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
1851+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
1852 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde, 0x88,
1853 0x63, 0x08, 0x4f, 0xD3, 0x71, 0xfb, 0xeb,
1854 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf, 0x3f,
1855@@ -2666,7 +2666,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1856 0xf9, 0xdd, 0xcc, 0x69 },
1857 .in_len = 67,
1858 .data_out =
1859- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0x78, 0xee, 0x01,
1860+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0x78, 0xee, 0x01,
1861 0x4c, 0x79, 0xc7, 0x14, 0x79, 0x2c, 0x1b,
1862 0x8a, 0xd0, 0x17, 0xb4, 0xb4, 0xfe, 0xa7,
1863 0x17, 0x9a, 0x93, 0x5d, 0xad, 0x27, 0x8a,
1864@@ -2675,8 +2675,8 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1865 0x37, 0xfb, 0x98, 0x1b, 0x06, 0x1a, 0x76,
1866 0xf8, 0x07, 0x72, 0xe9, 0xa2, 0x89, 0x47,
1867 0x95, 0x8f, 0x8f, 0x4e, 0x45, 0x55, 0xd6,
1868- 0x0e, 0xf4, 0xe7, 0xe8, 0x08, 0xa6, 0xdb,
1869- 0x19 },
1870+ 0x0e, 0xf4, 0xe7, 0xe8, 0x8e, 0x76, 0x4a,
1871+ 0x4e },
1872 .sn_size = 18,
1873 .hfn = 0x1,
1874 .hfn_threshold = 0xfa558,
1875@@ -2703,7 +2703,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1876 0x4b, 0x32, 0x87, 0xf9, 0xdb, 0xe0,
1877 0x31, 0x5f, 0x3a, 0x15 },
1878 .data_in =
1879- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
1880+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
1881 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde, 0x88,
1882 0x63, 0x08, 0x4f, 0xD3, 0x71, 0xfb, 0xeb,
1883 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf, 0x3f,
1884@@ -2715,7 +2715,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1885 0xf9, 0xdd, 0xcc, 0x69 },
1886 .in_len = 67,
1887 .data_out =
1888- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0xbf, 0x21, 0xc9,
1889+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0xbf, 0x21, 0xc9,
1890 0x7d, 0x02, 0x8d, 0xf7, 0xf7, 0x80, 0x50,
1891 0x60, 0x32, 0x09, 0xb8, 0x69, 0x48, 0xab,
1892 0x58, 0xf0, 0xd9, 0x63, 0x63, 0x36, 0x01,
1893@@ -2724,8 +2724,8 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1894 0x4c, 0x00, 0xd0, 0x0e, 0x31, 0x1c, 0x87,
1895 0xee, 0x1c, 0xc3, 0x81, 0xb4, 0xb6, 0x09,
1896 0xb5, 0x3c, 0x85, 0xb9, 0xcc, 0x2d, 0x2e,
1897- 0x9c, 0x85, 0x0b, 0xf7, 0x97, 0x5a, 0x56,
1898- 0xab },
1899+ 0x9c, 0x85, 0x0b, 0xf7, 0xc1, 0x27, 0x82,
1900+ 0xc3 },
1901 .sn_size = 18,
1902 .hfn = 0x1,
1903 .hfn_threshold = 0xfa558,
1904@@ -2752,7 +2752,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1905 0x4b, 0x32, 0x87, 0xf9, 0xdb, 0xe0,
1906 0x31, 0x5f, 0x3a, 0x15 },
1907 .data_in =
1908- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
1909+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
1910 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde, 0x88,
1911 0x63, 0x08, 0x4f, 0xD3, 0x71, 0xfb, 0xeb,
1912 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf, 0x3f,
1913@@ -2764,7 +2764,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1914 0xf9, 0xdd, 0xcc, 0x69 },
1915 .in_len = 67,
1916 .data_out =
1917- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0x78, 0xee, 0x01,
1918+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0x78, 0xee, 0x01,
1919 0x4c, 0x79, 0xc7, 0x14, 0x79, 0x2c, 0x1b,
1920 0x8a, 0xd0, 0x17, 0xb4, 0xb4, 0xfe, 0xa7,
1921 0x17, 0x9a, 0x93, 0x5d, 0xad, 0x27, 0x8a,
1922@@ -2773,8 +2773,8 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1923 0x37, 0xfb, 0x98, 0x1b, 0x06, 0x1a, 0x76,
1924 0xf8, 0x07, 0x72, 0xe9, 0xa2, 0x89, 0x47,
1925 0x95, 0x8f, 0x8f, 0x4e, 0x45, 0x55, 0xd6,
1926- 0x0e, 0xf4, 0xe7, 0xe8, 0x08, 0x68, 0xff,
1927- 0x7c },
1928+ 0x0e, 0xf4, 0xe7, 0xe8, 0x97, 0x76, 0xce,
1929+ 0xac },
1930 .sn_size = 18,
1931 .hfn = 0x1,
1932 .hfn_threshold = 0xfa558,
1933@@ -2801,7 +2801,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1934 0x4b, 0x32, 0x87, 0xf9, 0xdb, 0xe0,
1935 0x31, 0x5f, 0x3a, 0x15 },
1936 .data_in =
1937- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
1938+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
1939 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde, 0x88,
1940 0x63, 0x08, 0x4f, 0xD3, 0x71, 0xfb, 0xeb,
1941 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf, 0x3f,
1942@@ -2813,7 +2813,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1943 0xf9, 0xdd, 0xcc, 0x69 },
1944 .in_len = 67,
1945 .data_out =
1946- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0xbf, 0x21, 0xc9,
1947+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0xbf, 0x21, 0xc9,
1948 0x7d, 0x02, 0x8d, 0xf7, 0xf7, 0x80, 0x50,
1949 0x60, 0x32, 0x09, 0xb8, 0x69, 0x48, 0xab,
1950 0x58, 0xf0, 0xd9, 0x63, 0x63, 0x36, 0x01,
1951@@ -2822,8 +2822,8 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1952 0x4c, 0x00, 0xd0, 0x0e, 0x31, 0x1c, 0x87,
1953 0xee, 0x1c, 0xc3, 0x81, 0xb4, 0xb6, 0x09,
1954 0xb5, 0x3c, 0x85, 0xb9, 0xcc, 0x2d, 0x2e,
1955- 0x9c, 0x85, 0x0b, 0xf7, 0x41, 0xdd, 0x19,
1956- 0x32 },
1957+ 0x9c, 0x85, 0x0b, 0xf7, 0x69, 0x56, 0x6f,
1958+ 0xaf },
1959 .sn_size = 18,
1960 .hfn = 0x1,
1961 .hfn_threshold = 0xfa558,
1962@@ -2948,7 +2948,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1963 0x4b, 0x32, 0x87, 0xf9, 0xdb, 0xe0,
1964 0x31, 0x5f, 0x3a, 0x15 },
1965 .data_in =
1966- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
1967+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
1968 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde, 0x88,
1969 0x63, 0x08, 0x4f, 0xD3, 0x71, 0xfb, 0xeb,
1970 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf, 0x3f,
1971@@ -2960,7 +2960,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1972 0xf9, 0xdd, 0xcc, 0x69 },
1973 .in_len = 67,
1974 .data_out =
1975- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0x0c, 0xa8, 0x9d,
1976+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0x0c, 0xa8, 0x9d,
1977 0x9e, 0xcc, 0xf0, 0x1a, 0xc0, 0xf2, 0x9f,
1978 0x8c, 0xc9, 0x57, 0xc7, 0x99, 0x4d, 0xde,
1979 0xc5, 0x19, 0x69, 0x58, 0x5b, 0x1a, 0x51,
1980@@ -2969,8 +2969,8 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1981 0xb3, 0x24, 0x88, 0x68, 0x5f, 0x78, 0x3a,
1982 0xd2, 0x6c, 0xcc, 0xa0, 0xb5, 0xf0, 0x95,
1983 0x3e, 0xf1, 0xf4, 0x3e, 0x43, 0x8f, 0x6c,
1984- 0xae, 0x22, 0x59, 0x11, 0xf6, 0x97, 0x0b,
1985- 0x7b },
1986+ 0xae, 0x22, 0x59, 0x11, 0x4e, 0x02, 0xa0,
1987+ 0x95 },
1988 .sn_size = 18,
1989 .hfn = 0x1,
1990 .hfn_threshold = 0xfa558,
1991@@ -2997,7 +2997,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
1992 0x4b, 0x32, 0x87, 0xf9, 0xdb, 0xe0,
1993 0x31, 0x5f, 0x3a, 0x15 },
1994 .data_in =
1995- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
1996+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
1997 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde, 0x88,
1998 0x63, 0x08, 0x4f, 0xD3, 0x71, 0xfb, 0xeb,
1999 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf, 0x3f,
2000@@ -3009,7 +3009,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2001 0xf9, 0xdd, 0xcc, 0x69 },
2002 .in_len = 67,
2003 .data_out =
2004- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0x5a, 0xa9, 0xb5,
2005+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0x5a, 0xa9, 0xb5,
2006 0x61, 0x8b, 0x8a, 0xb7, 0x6a, 0x98, 0x30,
2007 0x6c, 0xed, 0x84, 0x69, 0xff, 0x6b, 0x7e,
2008 0x30, 0x59, 0x55, 0x80, 0x32, 0xd0, 0x0f,
2009@@ -3018,8 +3018,8 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2010 0x0e, 0x2e, 0x33, 0xe6, 0xa4, 0xea, 0x17,
2011 0xd6, 0x56, 0xa2, 0x3b, 0x5f, 0x56, 0x3a,
2012 0xa7, 0x6f, 0x4c, 0xc1, 0xca, 0xbd, 0x5f,
2013- 0xad, 0x3d, 0x99, 0x4a, 0xa3, 0xab, 0xd5,
2014- 0x7c },
2015+ 0xad, 0x3d, 0x99, 0x4a, 0x05, 0x03, 0xea,
2016+ 0xa4 },
2017 .sn_size = 18,
2018 .hfn = 0x1,
2019 .hfn_threshold = 0xfa558,
2020@@ -3046,7 +3046,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2021 0x4b, 0x32, 0x87, 0xf9, 0xdb, 0xe0,
2022 0x31, 0x5f, 0x3a, 0x15 },
2023 .data_in =
2024- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
2025+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
2026 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde, 0x88,
2027 0x63, 0x08, 0x4f, 0xD3, 0x71, 0xfb, 0xeb,
2028 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf, 0x3f,
2029@@ -3058,7 +3058,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2030 0xf9, 0xdd, 0xcc, 0x69 },
2031 .in_len = 67,
2032 .data_out =
2033- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0x0c, 0xa8, 0x9d,
2034+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0x0c, 0xa8, 0x9d,
2035 0x9e, 0xcc, 0xf0, 0x1a, 0xc0, 0xf2, 0x9f,
2036 0x8c, 0xc9, 0x57, 0xc7, 0x99, 0x4d, 0xde,
2037 0xc5, 0x19, 0x69, 0x58, 0x5b, 0x1a, 0x51,
2038@@ -3067,8 +3067,8 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2039 0xb3, 0x24, 0x88, 0x68, 0x5f, 0x78, 0x3a,
2040 0xd2, 0x6c, 0xcc, 0xa0, 0xb5, 0xf0, 0x95,
2041 0x3e, 0xf1, 0xf4, 0x3e, 0x43, 0x8f, 0x6c,
2042- 0xae, 0x22, 0x59, 0x11, 0x86, 0xec, 0x11,
2043- 0xf0 },
2044+ 0xae, 0x22, 0x59, 0x11, 0x00, 0x3c, 0x80,
2045+ 0xa7 },
2046 .sn_size = 18,
2047 .hfn = 0x1,
2048 .hfn_threshold = 0xfa558,
2049@@ -3095,7 +3095,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2050 0x4b, 0x32, 0x87, 0xf9, 0xdb, 0xe0,
2051 0x31, 0x5f, 0x3a, 0x15 },
2052 .data_in =
2053- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
2054+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
2055 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde, 0x88,
2056 0x63, 0x08, 0x4f, 0xD3, 0x71, 0xfb, 0xeb,
2057 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf, 0x3f,
2058@@ -3107,7 +3107,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2059 0xf9, 0xdd, 0xcc, 0x69 },
2060 .in_len = 67,
2061 .data_out =
2062- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0x5a, 0xa9, 0xb5,
2063+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0x5a, 0xa9, 0xb5,
2064 0x61, 0x8b, 0x8a, 0xb7, 0x6a, 0x98, 0x30,
2065 0x6c, 0xed, 0x84, 0x69, 0xff, 0x6b, 0x7e,
2066 0x30, 0x59, 0x55, 0x80, 0x32, 0xd0, 0x0f,
2067@@ -3116,8 +3116,8 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2068 0x0e, 0x2e, 0x33, 0xe6, 0xa4, 0xea, 0x17,
2069 0xd6, 0x56, 0xa2, 0x3b, 0x5f, 0x56, 0x3a,
2070 0xa7, 0x6f, 0x4c, 0xc1, 0xca, 0xbd, 0x5f,
2071- 0xad, 0x3d, 0x99, 0x4a, 0x85, 0x71, 0xb3,
2072- 0x72 },
2073+ 0xad, 0x3d, 0x99, 0x4a, 0xd3, 0x0c, 0x67,
2074+ 0x1a },
2075 .sn_size = 18,
2076 .hfn = 0x1,
2077 .hfn_threshold = 0xfa558,
2078@@ -3144,7 +3144,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2079 0x4b, 0x32, 0x87, 0xf9, 0xdb, 0xe0,
2080 0x31, 0x5f, 0x3a, 0x15 },
2081 .data_in =
2082- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
2083+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
2084 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde, 0x88,
2085 0x63, 0x08, 0x4f, 0xD3, 0x71, 0xfb, 0xeb,
2086 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf, 0x3f,
2087@@ -3156,7 +3156,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2088 0xf9, 0xdd, 0xcc, 0x69 },
2089 .in_len = 67,
2090 .data_out =
2091- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0x0c, 0xa8, 0x9d,
2092+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0x0c, 0xa8, 0x9d,
2093 0x9e, 0xcc, 0xf0, 0x1a, 0xc0, 0xf2, 0x9f,
2094 0x8c, 0xc9, 0x57, 0xc7, 0x99, 0x4d, 0xde,
2095 0xc5, 0x19, 0x69, 0x58, 0x5b, 0x1a, 0x51,
2096@@ -3165,8 +3165,8 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2097 0xb3, 0x24, 0x88, 0x68, 0x5f, 0x78, 0x3a,
2098 0xd2, 0x6c, 0xcc, 0xa0, 0xb5, 0xf0, 0x95,
2099 0x3e, 0xf1, 0xf4, 0x3e, 0x43, 0x8f, 0x6c,
2100- 0xae, 0x22, 0x59, 0x11, 0x86, 0x22, 0x35,
2101- 0x95 },
2102+ 0xae, 0x22, 0x59, 0x11, 0x19, 0x3c, 0x04,
2103+ 0x45 },
2104 .sn_size = 18,
2105 .hfn = 0x1,
2106 .hfn_threshold = 0xfa558,
2107@@ -3193,7 +3193,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2108 0x4b, 0x32, 0x87, 0xf9, 0xdb, 0xe0,
2109 0x31, 0x5f, 0x3a, 0x15 },
2110 .data_in =
2111- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
2112+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
2113 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde, 0x88,
2114 0x63, 0x08, 0x4f, 0xD3, 0x71, 0xfb, 0xeb,
2115 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf, 0x3f,
2116@@ -3205,7 +3205,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2117 0xf9, 0xdd, 0xcc, 0x69 },
2118 .in_len = 67,
2119 .data_out =
2120- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0x5a, 0xa9, 0xb5,
2121+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0x5a, 0xa9, 0xb5,
2122 0x61, 0x8b, 0x8a, 0xb7, 0x6a, 0x98, 0x30,
2123 0x6c, 0xed, 0x84, 0x69, 0xff, 0x6b, 0x7e,
2124 0x30, 0x59, 0x55, 0x80, 0x32, 0xd0, 0x0f,
2125@@ -3214,8 +3214,8 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2126 0x0e, 0x2e, 0x33, 0xe6, 0xa4, 0xea, 0x17,
2127 0xd6, 0x56, 0xa2, 0x3b, 0x5f, 0x56, 0x3a,
2128 0xa7, 0x6f, 0x4c, 0xc1, 0xca, 0xbd, 0x5f,
2129- 0xad, 0x3d, 0x99, 0x4a, 0x53, 0xf6, 0xfc,
2130- 0xeb },
2131+ 0xad, 0x3d, 0x99, 0x4a, 0x7b, 0x7d, 0x8a,
2132+ 0x76 },
2133 .sn_size = 18,
2134 .hfn = 0x1,
2135 .hfn_threshold = 0xfa558,
2136@@ -3340,7 +3340,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2137 0x4b, 0x32, 0x87, 0xf9, 0xdb, 0xe0,
2138 0x31, 0x5f, 0x3a, 0x15 },
2139 .data_in =
2140- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
2141+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
2142 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde, 0x88,
2143 0x63, 0x08, 0x4f, 0xD3, 0x71, 0xfb, 0xeb,
2144 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf, 0x3f,
2145@@ -3352,7 +3352,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2146 0xf9, 0xdd, 0xcc, 0x69 },
2147 .in_len = 67,
2148 .data_out =
2149- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0x9b, 0x9c, 0xde,
2150+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0x9b, 0x9c, 0xde,
2151 0xa1, 0x69, 0x9b, 0x27, 0xd3, 0x38, 0x93,
2152 0xf2, 0x12, 0xb1, 0xc6, 0x60, 0xac, 0xb7,
2153 0xf2, 0x37, 0xf3, 0x72, 0xaf, 0x50, 0x9d,
2154@@ -3361,8 +3361,8 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2155 0xbb, 0x15, 0xf3, 0x6a, 0x5d, 0x61, 0x12,
2156 0x6e, 0x6d, 0x1b, 0x92, 0xd8, 0x42, 0x60,
2157 0x3e, 0x1f, 0xe0, 0x6c, 0x28, 0x89, 0xf7,
2158- 0x0c, 0x61, 0x76, 0xdc, 0x25, 0x8a, 0x31,
2159- 0xed },
2160+ 0x0c, 0x61, 0x76, 0xdc, 0x9d, 0x1f, 0x9a,
2161+ 0x03 },
2162 .sn_size = 18,
2163 .hfn = 0x1,
2164 .hfn_threshold = 0xfa558,
2165@@ -3389,7 +3389,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2166 0x4b, 0x32, 0x87, 0xf9, 0xdb, 0xe0,
2167 0x31, 0x5f, 0x3a, 0x15 },
2168 .data_in =
2169- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
2170+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
2171 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde, 0x88,
2172 0x63, 0x08, 0x4f, 0xD3, 0x71, 0xfb, 0xeb,
2173 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf, 0x3f,
2174@@ -3401,7 +3401,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2175 0xf9, 0xdd, 0xcc, 0x69 },
2176 .in_len = 67,
2177 .data_out =
2178- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0x0c, 0xef, 0x82,
2179+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0x0c, 0xef, 0x82,
2180 0x59, 0x6b, 0x6b, 0x61, 0xbe, 0x54, 0x23,
2181 0x7d, 0x29, 0x6d, 0xa7, 0xd2, 0xfa, 0x26,
2182 0xcc, 0x1d, 0x18, 0x39, 0x99, 0xea, 0xac,
2183@@ -3410,8 +3410,8 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2184 0x7a, 0x8a, 0xe5, 0x00, 0x35, 0x4d, 0x0e,
2185 0x69, 0x9f, 0x4b, 0x72, 0x94, 0x8a, 0x25,
2186 0x69, 0x43, 0x28, 0xdc, 0x40, 0x60, 0x4f,
2187- 0x6c, 0xed, 0x6a, 0x50, 0xf3, 0x5e, 0x90,
2188- 0x42 },
2189+ 0x6c, 0xed, 0x6a, 0x50, 0x55, 0xf6, 0xaf,
2190+ 0x9a },
2191 .sn_size = 18,
2192 .hfn = 0x1,
2193 .hfn_threshold = 0xfa558,
2194@@ -3438,7 +3438,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2195 0x4b, 0x32, 0x87, 0xf9, 0xdb, 0xe0,
2196 0x31, 0x5f, 0x3a, 0x15 },
2197 .data_in =
2198- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
2199+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
2200 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde, 0x88,
2201 0x63, 0x08, 0x4f, 0xD3, 0x71, 0xfb, 0xeb,
2202 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf, 0x3f,
2203@@ -3450,7 +3450,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2204 0xf9, 0xdd, 0xcc, 0x69 },
2205 .in_len = 67,
2206 .data_out =
2207- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0x9b, 0x9c, 0xde,
2208+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0x9b, 0x9c, 0xde,
2209 0xa1, 0x69, 0x9b, 0x27, 0xd3, 0x38, 0x93,
2210 0xf2, 0x12, 0xb1, 0xc6, 0x60, 0xac, 0xb7,
2211 0xf2, 0x37, 0xf3, 0x72, 0xaf, 0x50, 0x9d,
2212@@ -3459,8 +3459,8 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2213 0xbb, 0x15, 0xf3, 0x6a, 0x5d, 0x61, 0x12,
2214 0x6e, 0x6d, 0x1b, 0x92, 0xd8, 0x42, 0x60,
2215 0x3e, 0x1f, 0xe0, 0x6c, 0x28, 0x89, 0xf7,
2216- 0x0c, 0x61, 0x76, 0xdc, 0x55, 0xf1, 0x2b,
2217- 0x66 },
2218+ 0x0c, 0x61, 0x76, 0xdc, 0xd3, 0x21, 0xba,
2219+ 0x31 },
2220 .sn_size = 18,
2221 .hfn = 0x1,
2222 .hfn_threshold = 0xfa558,
2223@@ -3487,7 +3487,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2224 0x4b, 0x32, 0x87, 0xf9, 0xdb, 0xe0,
2225 0x31, 0x5f, 0x3a, 0x15 },
2226 .data_in =
2227- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
2228+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
2229 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde, 0x88,
2230 0x63, 0x08, 0x4f, 0xD3, 0x71, 0xfb, 0xeb,
2231 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf, 0x3f,
2232@@ -3499,7 +3499,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2233 0xf9, 0xdd, 0xcc, 0x69 },
2234 .in_len = 67,
2235 .data_out =
2236- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0x0c, 0xef, 0x82,
2237+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0x0c, 0xef, 0x82,
2238 0x59, 0x6b, 0x6b, 0x61, 0xbe, 0x54, 0x23,
2239 0x7d, 0x29, 0x6d, 0xa7, 0xd2, 0xfa, 0x26,
2240 0xcc, 0x1d, 0x18, 0x39, 0x99, 0xea, 0xac,
2241@@ -3508,8 +3508,8 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2242 0x7a, 0x8a, 0xe5, 0x00, 0x35, 0x4d, 0x0e,
2243 0x69, 0x9f, 0x4b, 0x72, 0x94, 0x8a, 0x25,
2244 0x69, 0x43, 0x28, 0xdc, 0x40, 0x60, 0x4f,
2245- 0x6c, 0xed, 0x6a, 0x50, 0xd5, 0x84, 0xf6,
2246- 0x4c },
2247+ 0x6c, 0xed, 0x6a, 0x50, 0x83, 0xf9, 0x22,
2248+ 0x24 },
2249 .sn_size = 18,
2250 .hfn = 0x1,
2251 .hfn_threshold = 0xfa558,
2252@@ -3536,7 +3536,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2253 0x4b, 0x32, 0x87, 0xf9, 0xdb, 0xe0,
2254 0x31, 0x5f, 0x3a, 0x15 },
2255 .data_in =
2256- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
2257+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
2258 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde, 0x88,
2259 0x63, 0x08, 0x4f, 0xD3, 0x71, 0xfb, 0xeb,
2260 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf, 0x3f,
2261@@ -3548,7 +3548,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2262 0xf9, 0xdd, 0xcc, 0x69 },
2263 .in_len = 67,
2264 .data_out =
2265- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0x9b, 0x9c, 0xde,
2266+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0x9b, 0x9c, 0xde,
2267 0xa1, 0x69, 0x9b, 0x27, 0xd3, 0x38, 0x93,
2268 0xf2, 0x12, 0xb1, 0xc6, 0x60, 0xac, 0xb7,
2269 0xf2, 0x37, 0xf3, 0x72, 0xaf, 0x50, 0x9d,
2270@@ -3557,8 +3557,8 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2271 0xbb, 0x15, 0xf3, 0x6a, 0x5d, 0x61, 0x12,
2272 0x6e, 0x6d, 0x1b, 0x92, 0xd8, 0x42, 0x60,
2273 0x3e, 0x1f, 0xe0, 0x6c, 0x28, 0x89, 0xf7,
2274- 0x0c, 0x61, 0x76, 0xdc, 0x55, 0x3f, 0x0f,
2275- 0x03 },
2276+ 0x0c, 0x61, 0x76, 0xdc, 0xca, 0x21, 0x3e,
2277+ 0xd3 },
2278 .sn_size = 18,
2279 .hfn = 0x1,
2280 .hfn_threshold = 0xfa558,
2281@@ -3585,7 +3585,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2282 0x4b, 0x32, 0x87, 0xf9, 0xdb, 0xe0,
2283 0x31, 0x5f, 0x3a, 0x15 },
2284 .data_in =
2285- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
2286+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0xdb, 0x2d, 0x3f,
2287 0x23, 0x82, 0x53, 0xfd, 0x37, 0xde, 0x88,
2288 0x63, 0x08, 0x4f, 0xD3, 0x71, 0xfb, 0xeb,
2289 0x35, 0xf3, 0x64, 0xd3, 0x5e, 0xaf, 0x3f,
2290@@ -3597,7 +3597,7 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2291 0xf9, 0xdd, 0xcc, 0x69 },
2292 .in_len = 67,
2293 .data_out =
2294- (uint8_t[]){ 0xf8, 0x00, 0x00, 0xf8, 0x0c, 0xef, 0x82,
2295+ (uint8_t[]){ 0x80, 0x00, 0x00, 0xf8, 0x0c, 0xef, 0x82,
2296 0x59, 0x6b, 0x6b, 0x61, 0xbe, 0x54, 0x23,
2297 0x7d, 0x29, 0x6d, 0xa7, 0xd2, 0xfa, 0x26,
2298 0xcc, 0x1d, 0x18, 0x39, 0x99, 0xea, 0xac,
2299@@ -3606,8 +3606,8 @@ static const struct pdcp_sdap_test list_pdcp_sdap_tests[] = {
2300 0x7a, 0x8a, 0xe5, 0x00, 0x35, 0x4d, 0x0e,
2301 0x69, 0x9f, 0x4b, 0x72, 0x94, 0x8a, 0x25,
2302 0x69, 0x43, 0x28, 0xdc, 0x40, 0x60, 0x4f,
2303- 0x6c, 0xed, 0x6a, 0x50, 0x03, 0x03, 0xb9,
2304- 0xd5 },
2305+ 0x6c, 0xed, 0x6a, 0x50, 0x2b, 0x88, 0xcf,
2306+ 0x48 },
2307 .sn_size = 18,
2308 .hfn = 0x1,
2309 .hfn_threshold = 0xfa558,
2310diff --git a/app/test/test_event_crypto_adapter.c b/app/test/test_event_crypto_adapter.c
2311index 3d7e9fb..ea14094 100644
2312--- a/app/test/test_event_crypto_adapter.c
2313+++ b/app/test/test_event_crypto_adapter.c
2314@@ -523,11 +523,10 @@ configure_cryptodev(void)
2315 return TEST_FAILED;
2316 }
2317
2318- /* Create a NULL crypto device */
2319- nb_devs = rte_cryptodev_device_count_by_driver(
2320- rte_cryptodev_driver_id_get(
2321- RTE_STR(CRYPTODEV_NAME_NULL_PMD)));
2322+
2323+ nb_devs = rte_cryptodev_count();
2324 if (!nb_devs) {
2325+ /* Create a NULL crypto device */
2326 ret = rte_vdev_init(
2327 RTE_STR(CRYPTODEV_NAME_NULL_PMD), NULL);
2328
2329diff --git a/app/test/test_event_timer_adapter.c b/app/test/test_event_timer_adapter.c
2330index dfec499..3ded1c1 100644
2331--- a/app/test/test_event_timer_adapter.c
2332+++ b/app/test/test_event_timer_adapter.c
2333@@ -46,9 +46,10 @@ static uint64_t global_bkt_tck_ns;
2334 static uint64_t global_info_bkt_tck_ns;
2335 static volatile uint8_t arm_done;
2336
2337-#define CALC_TICKS(tks) \
2338- ceil((double)(tks * global_bkt_tck_ns) / global_info_bkt_tck_ns)
2339+#define CALC_TICKS(tks) ceil((double)((tks) * global_bkt_tck_ns) / global_info_bkt_tck_ns)
2340
2341+/* Wait double timeout ticks for software and an extra tick for hardware */
2342+#define WAIT_TICKS(tks) (using_services ? 2 * (tks) : tks + 1)
2343
2344 static bool using_services;
2345 static uint32_t test_lcore1;
2346@@ -419,10 +420,31 @@ timdev_teardown(void)
2347 rte_mempool_free(eventdev_test_mempool);
2348 }
2349
2350+static inline uint16_t
2351+timeout_event_dequeue(struct rte_event *evs, uint64_t nb_evs, uint64_t ticks)
2352+{
2353+ uint16_t ev_cnt = 0;
2354+ uint64_t end_cycle;
2355+
2356+ if (using_services && nb_evs == MAX_TIMERS)
2357+ ticks = 2 * ticks;
2358+
2359+ end_cycle = rte_rdtsc() + ticks * global_bkt_tck_ns * rte_get_tsc_hz() / 1E9;
2360+
2361+ while (ev_cnt < nb_evs && rte_rdtsc() < end_cycle) {
2362+ ev_cnt += rte_event_dequeue_burst(evdev, TEST_PORT_ID, &evs[ev_cnt], nb_evs, 0);
2363+ rte_pause();
2364+ }
2365+
2366+ return ev_cnt;
2367+}
2368+
2369 static inline int
2370 test_timer_state(void)
2371 {
2372 struct rte_event_timer *ev_tim;
2373+ const uint64_t max_ticks = 100;
2374+ uint64_t ticks, wait_ticks;
2375 struct rte_event ev;
2376 const struct rte_event_timer tim = {
2377 .ev.op = RTE_EVENT_OP_NEW,
2378@@ -433,11 +455,10 @@ test_timer_state(void)
2379 .state = RTE_EVENT_TIMER_NOT_ARMED,
2380 };
2381
2382-
2383 rte_mempool_get(eventdev_test_mempool, (void **)&ev_tim);
2384 *ev_tim = tim;
2385 ev_tim->ev.event_ptr = ev_tim;
2386- ev_tim->timeout_ticks = CALC_TICKS(120);
2387+ ev_tim->timeout_ticks = CALC_TICKS(max_ticks + 20);
2388
2389 TEST_ASSERT_EQUAL(rte_event_timer_arm_burst(timdev, &ev_tim, 1), 0,
2390 "Armed timer exceeding max_timeout.");
2391@@ -445,8 +466,9 @@ test_timer_state(void)
2392 "Improper timer state set expected %d returned %d",
2393 RTE_EVENT_TIMER_ERROR_TOOLATE, ev_tim->state);
2394
2395+ ticks = 10;
2396 ev_tim->state = RTE_EVENT_TIMER_NOT_ARMED;
2397- ev_tim->timeout_ticks = CALC_TICKS(10);
2398+ ev_tim->timeout_ticks = CALC_TICKS(ticks);
2399
2400 TEST_ASSERT_EQUAL(rte_event_timer_arm_burst(timdev, &ev_tim, 1), 1,
2401 "Failed to arm timer with proper timeout.");
2402@@ -455,14 +477,15 @@ test_timer_state(void)
2403 RTE_EVENT_TIMER_ARMED, ev_tim->state);
2404
2405 if (!using_services)
2406- rte_delay_us(20);
2407+ wait_ticks = 2 * ticks;
2408 else
2409- rte_delay_us(1000 + 200);
2410- TEST_ASSERT_EQUAL(rte_event_dequeue_burst(evdev, 0, &ev, 1, 0), 1,
2411- "Armed timer failed to trigger.");
2412+ wait_ticks = ticks;
2413+
2414+ TEST_ASSERT_EQUAL(timeout_event_dequeue(&ev, 1, WAIT_TICKS(wait_ticks)), 1,
2415+ "Armed timer failed to trigger.");
2416
2417 ev_tim->state = RTE_EVENT_TIMER_NOT_ARMED;
2418- ev_tim->timeout_ticks = CALC_TICKS(90);
2419+ ev_tim->timeout_ticks = CALC_TICKS(max_ticks - 10);
2420 TEST_ASSERT_EQUAL(rte_event_timer_arm_burst(timdev, &ev_tim, 1), 1,
2421 "Failed to arm timer with proper timeout.");
2422 TEST_ASSERT_EQUAL(rte_event_timer_cancel_burst(timdev, &ev_tim, 1),
2423@@ -1164,8 +1187,9 @@ stat_inc_reset_ev_enq(void)
2424 int ret, i, n;
2425 int num_evtims = MAX_TIMERS;
2426 struct rte_event_timer *evtims[num_evtims];
2427- struct rte_event evs[BATCH_SIZE];
2428+ struct rte_event evs[num_evtims];
2429 struct rte_event_timer_adapter_stats stats;
2430+ uint64_t ticks = 5;
2431 const struct rte_event_timer init_tim = {
2432 .ev.op = RTE_EVENT_OP_NEW,
2433 .ev.queue_id = TEST_QUEUE_ID,
2434@@ -1173,7 +1197,7 @@ stat_inc_reset_ev_enq(void)
2435 .ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL,
2436 .ev.event_type = RTE_EVENT_TYPE_TIMER,
2437 .state = RTE_EVENT_TIMER_NOT_ARMED,
2438- .timeout_ticks = CALC_TICKS(5), // expire in .5 sec
2439+ .timeout_ticks = CALC_TICKS(ticks), /**< expire in .5 sec */
2440 };
2441
2442 ret = rte_mempool_get_bulk(eventdev_test_mempool, (void **)evtims,
2443@@ -1198,31 +1222,12 @@ stat_inc_reset_ev_enq(void)
2444 "succeeded = %d, rte_errno = %s",
2445 num_evtims, ret, rte_strerror(rte_errno));
2446
2447- rte_delay_ms(1000);
2448-
2449-#define MAX_TRIES num_evtims
2450- int sum = 0;
2451- int tries = 0;
2452- bool done = false;
2453- while (!done) {
2454- sum += rte_event_dequeue_burst(evdev, TEST_PORT_ID, evs,
2455- RTE_DIM(evs), 10);
2456- if (sum >= num_evtims || ++tries >= MAX_TRIES)
2457- done = true;
2458-
2459- rte_delay_ms(10);
2460- }
2461-
2462- TEST_ASSERT_EQUAL(sum, num_evtims, "Expected %d timer expiry events, "
2463- "got %d", num_evtims, sum);
2464-
2465- TEST_ASSERT(tries < MAX_TRIES, "Exceeded max tries");
2466-
2467- rte_delay_ms(100);
2468+ n = timeout_event_dequeue(evs, RTE_DIM(evs), WAIT_TICKS(ticks));
2469+ TEST_ASSERT_EQUAL(n, num_evtims, "Expected %d timer expiry events, got %d",
2470+ num_evtims, n);
2471
2472 /* Make sure the eventdev is still empty */
2473- n = rte_event_dequeue_burst(evdev, TEST_PORT_ID, evs, RTE_DIM(evs),
2474- 10);
2475+ n = timeout_event_dequeue(evs, 1, WAIT_TICKS(1));
2476
2477 TEST_ASSERT_EQUAL(n, 0, "Dequeued unexpected number of timer expiry "
2478 "events from event device");
2479@@ -1259,6 +1264,7 @@ event_timer_arm(void)
2480 struct rte_event_timer_adapter *adapter = timdev;
2481 struct rte_event_timer *evtim = NULL;
2482 struct rte_event evs[BATCH_SIZE];
2483+ uint64_t ticks = 5;
2484 const struct rte_event_timer init_tim = {
2485 .ev.op = RTE_EVENT_OP_NEW,
2486 .ev.queue_id = TEST_QUEUE_ID,
2487@@ -1266,7 +1272,7 @@ event_timer_arm(void)
2488 .ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL,
2489 .ev.event_type = RTE_EVENT_TYPE_TIMER,
2490 .state = RTE_EVENT_TIMER_NOT_ARMED,
2491- .timeout_ticks = CALC_TICKS(5), // expire in .5 sec
2492+ .timeout_ticks = CALC_TICKS(ticks), /**< expire in .5 sec */
2493 };
2494
2495 rte_mempool_get(eventdev_test_mempool, (void **)&evtim);
2496@@ -1293,10 +1299,7 @@ event_timer_arm(void)
2497 TEST_ASSERT_EQUAL(rte_errno, EALREADY, "Unexpected rte_errno value "
2498 "after arming already armed timer");
2499
2500- /* Let timer expire */
2501- rte_delay_ms(1000);
2502-
2503- n = rte_event_dequeue_burst(evdev, TEST_PORT_ID, evs, RTE_DIM(evs), 0);
2504+ n = timeout_event_dequeue(evs, RTE_DIM(evs), WAIT_TICKS(ticks));
2505 TEST_ASSERT_EQUAL(n, 1, "Failed to dequeue expected number of expiry "
2506 "events from event device");
2507
2508@@ -1316,6 +1319,7 @@ event_timer_arm_double(void)
2509 struct rte_event_timer_adapter *adapter = timdev;
2510 struct rte_event_timer *evtim = NULL;
2511 struct rte_event evs[BATCH_SIZE];
2512+ uint64_t ticks = 5;
2513 const struct rte_event_timer init_tim = {
2514 .ev.op = RTE_EVENT_OP_NEW,
2515 .ev.queue_id = TEST_QUEUE_ID,
2516@@ -1323,7 +1327,7 @@ event_timer_arm_double(void)
2517 .ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL,
2518 .ev.event_type = RTE_EVENT_TYPE_TIMER,
2519 .state = RTE_EVENT_TIMER_NOT_ARMED,
2520- .timeout_ticks = CALC_TICKS(5), // expire in .5 sec
2521+ .timeout_ticks = CALC_TICKS(ticks), /**< expire in .5 sec */
2522 };
2523
2524 rte_mempool_get(eventdev_test_mempool, (void **)&evtim);
2525@@ -1343,10 +1347,7 @@ event_timer_arm_double(void)
2526 TEST_ASSERT_EQUAL(rte_errno, EALREADY, "Unexpected rte_errno value "
2527 "after double-arm");
2528
2529- /* Let timer expire */
2530- rte_delay_ms(600);
2531-
2532- n = rte_event_dequeue_burst(evdev, TEST_PORT_ID, evs, RTE_DIM(evs), 0);
2533+ n = timeout_event_dequeue(evs, RTE_DIM(evs), WAIT_TICKS(ticks));
2534 TEST_ASSERT_EQUAL(n, 1, "Dequeued incorrect number of expiry events - "
2535 "expected: 1, actual: %d", n);
2536
2537@@ -1373,6 +1374,7 @@ event_timer_arm_expiry(void)
2538 .ev.event_type = RTE_EVENT_TYPE_TIMER,
2539 .state = RTE_EVENT_TIMER_NOT_ARMED,
2540 };
2541+ uint64_t ticks = 30;
2542
2543 rte_mempool_get(eventdev_test_mempool, (void **)&evtim);
2544 if (evtim == NULL) {
2545@@ -1382,7 +1384,7 @@ event_timer_arm_expiry(void)
2546
2547 /* Set up an event timer */
2548 *evtim = init_tim;
2549- evtim->timeout_ticks = CALC_TICKS(30), // expire in 3 secs
2550+ evtim->timeout_ticks = CALC_TICKS(ticks); /**< expire in 3 secs */
2551 evtim->ev.event_ptr = evtim;
2552
2553 ret = rte_event_timer_arm_burst(adapter, &evtim, 1);
2554@@ -1391,17 +1393,10 @@ event_timer_arm_expiry(void)
2555 TEST_ASSERT_EQUAL(evtim->state, RTE_EVENT_TIMER_ARMED, "Event "
2556 "timer in incorrect state");
2557
2558- rte_delay_ms(2999);
2559-
2560- n = rte_event_dequeue_burst(evdev, TEST_PORT_ID, evs, RTE_DIM(evs), 0);
2561+ n = timeout_event_dequeue(evs, RTE_DIM(evs), ticks - 1);
2562 TEST_ASSERT_EQUAL(n, 0, "Dequeued unexpected timer expiry event");
2563
2564- /* Delay 100 ms to account for the adapter tick window - should let us
2565- * dequeue one event
2566- */
2567- rte_delay_ms(100);
2568-
2569- n = rte_event_dequeue_burst(evdev, TEST_PORT_ID, evs, RTE_DIM(evs), 0);
2570+ n = timeout_event_dequeue(evs, RTE_DIM(evs), WAIT_TICKS(1));
2571 TEST_ASSERT_EQUAL(n, 1, "Dequeued incorrect number (%d) of timer "
2572 "expiry events", n);
2573 TEST_ASSERT_EQUAL(evs[0].event_type, RTE_EVENT_TYPE_TIMER,
2574@@ -1433,6 +1428,7 @@ event_timer_arm_rearm(void)
2575 .ev.event_type = RTE_EVENT_TYPE_TIMER,
2576 .state = RTE_EVENT_TIMER_NOT_ARMED,
2577 };
2578+ uint64_t ticks = 1;
2579
2580 rte_mempool_get(eventdev_test_mempool, (void **)&evtim);
2581 if (evtim == NULL) {
2582@@ -1442,7 +1438,7 @@ event_timer_arm_rearm(void)
2583
2584 /* Set up a timer */
2585 *evtim = init_tim;
2586- evtim->timeout_ticks = CALC_TICKS(1); // expire in 0.1 sec
2587+ evtim->timeout_ticks = CALC_TICKS(ticks); /**< expire in 0.1 sec */
2588 evtim->ev.event_ptr = evtim;
2589
2590 /* Arm it */
2591@@ -1450,10 +1446,7 @@ event_timer_arm_rearm(void)
2592 TEST_ASSERT_EQUAL(ret, 1, "Failed to arm event timer: %s\n",
2593 rte_strerror(rte_errno));
2594
2595- /* Add 100ms to account for the adapter tick window */
2596- rte_delay_ms(100 + 100);
2597-
2598- n = rte_event_dequeue_burst(evdev, TEST_PORT_ID, evs, RTE_DIM(evs), 0);
2599+ n = timeout_event_dequeue(evs, RTE_DIM(evs), WAIT_TICKS(ticks));
2600 TEST_ASSERT_EQUAL(n, 1, "Failed to dequeue expected number of expiry "
2601 "events from event device");
2602
2603@@ -1470,10 +1463,7 @@ event_timer_arm_rearm(void)
2604 TEST_ASSERT_EQUAL(ret, 1, "Failed to arm event timer: %s\n",
2605 rte_strerror(rte_errno));
2606
2607- /* Add 100ms to account for the adapter tick window */
2608- rte_delay_ms(100 + 100);
2609-
2610- n = rte_event_dequeue_burst(evdev, TEST_PORT_ID, evs, RTE_DIM(evs), 0);
2611+ n = timeout_event_dequeue(evs, RTE_DIM(evs), WAIT_TICKS(ticks));
2612 TEST_ASSERT_EQUAL(n, 1, "Failed to dequeue expected number of expiry "
2613 "events from event device");
2614
2615@@ -1495,7 +1485,8 @@ event_timer_arm_max(void)
2616 int ret, i, n;
2617 int num_evtims = MAX_TIMERS;
2618 struct rte_event_timer *evtims[num_evtims];
2619- struct rte_event evs[BATCH_SIZE];
2620+ struct rte_event evs[num_evtims];
2621+ uint64_t ticks = 5;
2622 const struct rte_event_timer init_tim = {
2623 .ev.op = RTE_EVENT_OP_NEW,
2624 .ev.queue_id = TEST_QUEUE_ID,
2625@@ -1503,7 +1494,7 @@ event_timer_arm_max(void)
2626 .ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL,
2627 .ev.event_type = RTE_EVENT_TYPE_TIMER,
2628 .state = RTE_EVENT_TIMER_NOT_ARMED,
2629- .timeout_ticks = CALC_TICKS(5), // expire in .5 sec
2630+ .timeout_ticks = CALC_TICKS(ticks), /**< expire in .5 sec */
2631 };
2632
2633 ret = rte_mempool_get_bulk(eventdev_test_mempool, (void **)evtims,
2634@@ -1523,31 +1514,12 @@ event_timer_arm_max(void)
2635 "succeeded = %d, rte_errno = %s",
2636 num_evtims, ret, rte_strerror(rte_errno));
2637
2638- rte_delay_ms(1000);
2639-
2640-#define MAX_TRIES num_evtims
2641- int sum = 0;
2642- int tries = 0;
2643- bool done = false;
2644- while (!done) {
2645- sum += rte_event_dequeue_burst(evdev, TEST_PORT_ID, evs,
2646- RTE_DIM(evs), 10);
2647- if (sum >= num_evtims || ++tries >= MAX_TRIES)
2648- done = true;
2649-
2650- rte_delay_ms(10);
2651- }
2652-
2653- TEST_ASSERT_EQUAL(sum, num_evtims, "Expected %d timer expiry events, "
2654- "got %d", num_evtims, sum);
2655-
2656- TEST_ASSERT(tries < MAX_TRIES, "Exceeded max tries");
2657-
2658- rte_delay_ms(100);
2659+ n = timeout_event_dequeue(evs, RTE_DIM(evs), WAIT_TICKS(ticks));
2660+ TEST_ASSERT_EQUAL(n, num_evtims, "Expected %d timer expiry events, got %d",
2661+ num_evtims, n);
2662
2663 /* Make sure the eventdev is still empty */
2664- n = rte_event_dequeue_burst(evdev, TEST_PORT_ID, evs, RTE_DIM(evs),
2665- 10);
2666+ n = timeout_event_dequeue(evs, 1, WAIT_TICKS(1));
2667
2668 TEST_ASSERT_EQUAL(n, 0, "Dequeued unexpected number of timer expiry "
2669 "events from event device");
2670@@ -1667,6 +1639,7 @@ event_timer_cancel(void)
2671 .ev.event_type = RTE_EVENT_TYPE_TIMER,
2672 .state = RTE_EVENT_TIMER_NOT_ARMED,
2673 };
2674+ uint64_t ticks = 30;
2675
2676 rte_mempool_get(eventdev_test_mempool, (void **)&evtim);
2677 if (evtim == NULL) {
2678@@ -1684,7 +1657,7 @@ event_timer_cancel(void)
2679 /* Set up a timer */
2680 *evtim = init_tim;
2681 evtim->ev.event_ptr = evtim;
2682- evtim->timeout_ticks = CALC_TICKS(30); // expire in 3 sec
2683+ evtim->timeout_ticks = CALC_TICKS(ticks); /**< expire in 3 sec */
2684
2685 /* Check that cancelling an inited but unarmed timer fails */
2686 ret = rte_event_timer_cancel_burst(adapter, &evtim, 1);
2687@@ -1708,10 +1681,8 @@ event_timer_cancel(void)
2688 TEST_ASSERT_EQUAL(evtim->state, RTE_EVENT_TIMER_CANCELED,
2689 "evtim in incorrect state");
2690
2691- rte_delay_ms(3000);
2692-
2693 /* Make sure that no expiry event was generated */
2694- n = rte_event_dequeue_burst(evdev, TEST_PORT_ID, evs, RTE_DIM(evs), 0);
2695+ n = timeout_event_dequeue(evs, RTE_DIM(evs), WAIT_TICKS(ticks));
2696 TEST_ASSERT_EQUAL(n, 0, "Dequeued unexpected timer expiry event\n");
2697
2698 rte_mempool_put(eventdev_test_mempool, evtim);
2699@@ -1734,8 +1705,8 @@ event_timer_cancel_double(void)
2700 .ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL,
2701 .ev.event_type = RTE_EVENT_TYPE_TIMER,
2702 .state = RTE_EVENT_TIMER_NOT_ARMED,
2703- .timeout_ticks = CALC_TICKS(5), // expire in .5 sec
2704 };
2705+ uint64_t ticks = 30;
2706
2707 rte_mempool_get(eventdev_test_mempool, (void **)&evtim);
2708 if (evtim == NULL) {
2709@@ -1746,7 +1717,7 @@ event_timer_cancel_double(void)
2710 /* Set up a timer */
2711 *evtim = init_tim;
2712 evtim->ev.event_ptr = evtim;
2713- evtim->timeout_ticks = CALC_TICKS(30); // expire in 3 sec
2714+ evtim->timeout_ticks = CALC_TICKS(ticks); /**< expire in 3 sec */
2715
2716 ret = rte_event_timer_arm_burst(adapter, &evtim, 1);
2717 TEST_ASSERT_EQUAL(ret, 1, "Failed to arm event timer: %s\n",
2718@@ -1768,10 +1739,8 @@ event_timer_cancel_double(void)
2719 TEST_ASSERT_EQUAL(rte_errno, EALREADY, "Unexpected rte_errno value "
2720 "after double-cancel: rte_errno = %d", rte_errno);
2721
2722- rte_delay_ms(3000);
2723-
2724 /* Still make sure that no expiry event was generated */
2725- n = rte_event_dequeue_burst(evdev, TEST_PORT_ID, evs, RTE_DIM(evs), 0);
2726+ n = timeout_event_dequeue(evs, RTE_DIM(evs), WAIT_TICKS(ticks));
2727 TEST_ASSERT_EQUAL(n, 0, "Dequeued unexpected timer expiry event\n");
2728
2729 rte_mempool_put(eventdev_test_mempool, evtim);
2730diff --git a/app/test/test_hash_readwrite.c b/app/test/test_hash_readwrite.c
2731index 9b192f2..1ed6154 100644
2732--- a/app/test/test_hash_readwrite.c
2733+++ b/app/test/test_hash_readwrite.c
2734@@ -162,7 +162,7 @@ init_params(int use_ext, int use_htm, int rw_lf, int use_jhash)
2735
2736 handle = rte_hash_create(&hash_params);
2737 if (handle == NULL) {
2738- printf("hash creation failed");
2739+ printf("hash creation failed\n");
2740 return -1;
2741 }
2742
2743diff --git a/app/test/test_link_bonding.c b/app/test/test_link_bonding.c
2744index 12c50ef..0d5cfd4 100644
2745--- a/app/test/test_link_bonding.c
2746+++ b/app/test/test_link_bonding.c
2747@@ -2,7 +2,7 @@
2748 * Copyright(c) 2010-2014 Intel Corporation
2749 */
2750
2751-#include "unistd.h"
2752+#include <unistd.h>
2753 #include <string.h>
2754 #include <stdarg.h>
2755 #include <stdio.h>
2756@@ -448,7 +448,8 @@ test_add_already_bonded_slave_to_bonded_device(void)
2757 uint16_t slaves[RTE_MAX_ETHPORTS];
2758 char pmd_name[RTE_ETH_NAME_MAX_LEN];
2759
2760- test_add_slave_to_bonded_device();
2761+ TEST_ASSERT_SUCCESS(test_add_slave_to_bonded_device(),
2762+ "Failed to add slave to bonded device");
2763
2764 current_slave_count = rte_eth_bond_slaves_get(test_params->bonded_port_id,
2765 slaves, RTE_MAX_ETHPORTS);
2766diff --git a/app/test/test_link_bonding_mode4.c b/app/test/test_link_bonding_mode4.c
2767index 351129d..6eb2620 100644
2768--- a/app/test/test_link_bonding_mode4.c
2769+++ b/app/test/test_link_bonding_mode4.c
2770@@ -643,8 +643,7 @@ bond_handshake(void)
2771 /* If response didn't send - report failure */
2772 TEST_ASSERT_EQUAL(all_slaves_done, 1, "Bond handshake failed\n");
2773
2774- /* If flags doesn't match - report failure */
2775- return all_slaves_done == 1 ? TEST_SUCCESS : TEST_FAILED;
2776+ return TEST_SUCCESS;
2777 }
2778
2779 #define TEST_LACP_SLAVE_COUT RTE_DIM(test_params.slave_ports)
2780diff --git a/app/test/test_link_bonding_rssconf.c b/app/test/test_link_bonding_rssconf.c
2781index b3d71c6..6eb473b 100644
2782--- a/app/test/test_link_bonding_rssconf.c
2783+++ b/app/test/test_link_bonding_rssconf.c
2784@@ -326,7 +326,7 @@ test_propagate(void)
2785 uint8_t n;
2786 struct slave_conf *port;
2787 uint8_t bond_rss_key[40];
2788- struct rte_eth_rss_conf bond_rss_conf;
2789+ struct rte_eth_rss_conf bond_rss_conf = {0};
2790
2791 int retval = 0;
2792 uint64_t rss_hf = 0;
2793diff --git a/app/test/test_malloc.c b/app/test/test_malloc.c
2794index 6d9249f..9008038 100644
2795--- a/app/test/test_malloc.c
2796+++ b/app/test/test_malloc.c
2797@@ -301,11 +301,11 @@ test_multi_alloc_statistics(void)
2798 rte_malloc_get_socket_stats(socket,&post_stats);
2799 /* Check statistics reported are correct */
2800 /* All post stats should be equal to pre stats after alloc freed */
2801- if ((post_stats.heap_totalsz_bytes != pre_stats.heap_totalsz_bytes) &&
2802- (post_stats.heap_freesz_bytes!=pre_stats.heap_freesz_bytes) &&
2803- (post_stats.heap_allocsz_bytes!=pre_stats.heap_allocsz_bytes)&&
2804- (post_stats.alloc_count!=pre_stats.alloc_count)&&
2805- (post_stats.free_count!=pre_stats.free_count)) {
2806+ if ((post_stats.heap_totalsz_bytes != pre_stats.heap_totalsz_bytes) ||
2807+ (post_stats.heap_freesz_bytes != pre_stats.heap_freesz_bytes) ||
2808+ (post_stats.heap_allocsz_bytes != pre_stats.heap_allocsz_bytes) ||
2809+ (post_stats.alloc_count != pre_stats.alloc_count) ||
2810+ (post_stats.free_count != pre_stats.free_count)) {
2811 printf("Malloc statistics are incorrect - freed alloc\n");
2812 return -1;
2813 }
2814@@ -362,11 +362,11 @@ test_multi_alloc_statistics(void)
2815 return -1;
2816 }
2817
2818- if ((post_stats.heap_totalsz_bytes != pre_stats.heap_totalsz_bytes) &&
2819- (post_stats.heap_freesz_bytes!=pre_stats.heap_freesz_bytes) &&
2820- (post_stats.heap_allocsz_bytes!=pre_stats.heap_allocsz_bytes)&&
2821- (post_stats.alloc_count!=pre_stats.alloc_count)&&
2822- (post_stats.free_count!=pre_stats.free_count)) {
2823+ if ((post_stats.heap_totalsz_bytes != pre_stats.heap_totalsz_bytes) ||
2824+ (post_stats.heap_freesz_bytes != pre_stats.heap_freesz_bytes) ||
2825+ (post_stats.heap_allocsz_bytes != pre_stats.heap_allocsz_bytes) ||
2826+ (post_stats.alloc_count != pre_stats.alloc_count) ||
2827+ (post_stats.free_count != pre_stats.free_count)) {
2828 printf("Malloc statistics are incorrect - freed alloc\n");
2829 return -1;
2830 }
2831@@ -927,6 +927,7 @@ test_alloc_single_socket(int32_t socket)
2832 if (mem == NULL)
2833 return -1;
2834 if (addr_to_socket(mem) != desired_socket) {
2835+ rte_free(mem);
2836 return -1;
2837 }
2838 rte_free(mem);
2839diff --git a/app/test/test_mbuf.c b/app/test/test_mbuf.c
2840index 2287bce..9c0ac63 100644
2841--- a/app/test/test_mbuf.c
2842+++ b/app/test/test_mbuf.c
2843@@ -1172,37 +1172,16 @@ err:
2844 #endif
2845 }
2846
2847-#include <unistd.h>
2848-#include <sys/resource.h>
2849-#include <sys/time.h>
2850-#include <sys/wait.h>
2851-
2852-/* use fork() to test mbuf errors panic */
2853-static int
2854-verify_mbuf_check_panics(struct rte_mbuf *buf)
2855+/* Verify if mbuf can pass the check */
2856+static bool
2857+mbuf_check_pass(struct rte_mbuf *buf)
2858 {
2859- int pid;
2860- int status;
2861-
2862- pid = fork();
2863-
2864- if (pid == 0) {
2865- struct rlimit rl;
2866+ const char *reason;
2867
2868- /* No need to generate a coredump when panicking. */
2869- rl.rlim_cur = rl.rlim_max = 0;
2870- setrlimit(RLIMIT_CORE, &rl);
2871- rte_mbuf_sanity_check(buf, 1); /* should panic */
2872- exit(0); /* return normally if it doesn't panic */
2873- } else if (pid < 0) {
2874- printf("Fork Failed\n");
2875- return -1;
2876- }
2877- wait(&status);
2878- if(status == 0)
2879- return -1;
2880+ if (rte_mbuf_check(buf, 1, &reason) == 0)
2881+ return true;
2882
2883- return 0;
2884+ return false;
2885 }
2886
2887 static int
2888@@ -1219,47 +1198,47 @@ test_failing_mbuf_sanity_check(struct rte_mempool *pktmbuf_pool)
2889 return -1;
2890
2891 printf("Checking good mbuf initially\n");
2892- if (verify_mbuf_check_panics(buf) != -1)
2893+ if (!mbuf_check_pass(buf))
2894 return -1;
2895
2896 printf("Now checking for error conditions\n");
2897
2898- if (verify_mbuf_check_panics(NULL)) {
2899+ if (mbuf_check_pass(NULL)) {
2900 printf("Error with NULL mbuf test\n");
2901 return -1;
2902 }
2903
2904 badbuf = *buf;
2905 badbuf.pool = NULL;
2906- if (verify_mbuf_check_panics(&badbuf)) {
2907+ if (mbuf_check_pass(&badbuf)) {
2908 printf("Error with bad-pool mbuf test\n");
2909 return -1;
2910 }
2911
2912 badbuf = *buf;
2913 badbuf.buf_iova = 0;
2914- if (verify_mbuf_check_panics(&badbuf)) {
2915+ if (mbuf_check_pass(&badbuf)) {
2916 printf("Error with bad-physaddr mbuf test\n");
2917 return -1;
2918 }
2919
2920 badbuf = *buf;
2921 badbuf.buf_addr = NULL;
2922- if (verify_mbuf_check_panics(&badbuf)) {
2923+ if (mbuf_check_pass(&badbuf)) {
2924 printf("Error with bad-addr mbuf test\n");
2925 return -1;
2926 }
2927
2928 badbuf = *buf;
2929 badbuf.refcnt = 0;
2930- if (verify_mbuf_check_panics(&badbuf)) {
2931+ if (mbuf_check_pass(&badbuf)) {
2932 printf("Error with bad-refcnt(0) mbuf test\n");
2933 return -1;
2934 }
2935
2936 badbuf = *buf;
2937 badbuf.refcnt = UINT16_MAX;
2938- if (verify_mbuf_check_panics(&badbuf)) {
2939+ if (mbuf_check_pass(&badbuf)) {
2940 printf("Error with bad-refcnt(MAX) mbuf test\n");
2941 return -1;
2942 }
2943diff --git a/config/arm/meson.build b/config/arm/meson.build
2944index 89a3bf4..4131d6e 100644
2945--- a/config/arm/meson.build
2946+++ b/config/arm/meson.build
2947@@ -44,7 +44,9 @@ implementer_generic = {
2948 },
2949 'generic_aarch32': {
2950 'march': 'armv8-a',
2951- 'compiler_options': ['-mfpu=neon'],
2952+ 'force_march': true,
2953+ 'march_features': ['simd'],
2954+ 'compiler_options': ['-mfpu=auto'],
2955 'flags': [
2956 ['RTE_ARCH_ARM_NEON_MEMCPY', false],
2957 ['RTE_ARCH_STRICT_ALIGN', true],
2958@@ -535,21 +537,25 @@ if update_flags
2959 # probe supported archs and their features
2960 candidate_march = ''
2961 if part_number_config.has_key('march')
2962- supported_marchs = ['armv8.6-a', 'armv8.5-a', 'armv8.4-a', 'armv8.3-a',
2963- 'armv8.2-a', 'armv8.1-a', 'armv8-a']
2964- check_compiler_support = false
2965- foreach supported_march: supported_marchs
2966- if supported_march == part_number_config['march']
2967- # start checking from this version downwards
2968- check_compiler_support = true
2969- endif
2970- if (check_compiler_support and
2971- cc.has_argument('-march=' + supported_march))
2972- candidate_march = supported_march
2973- # highest supported march version found
2974- break
2975- endif
2976- endforeach
2977+ if part_number_config.get('force_march', false)
2978+ candidate_march = part_number_config['march']
2979+ else
2980+ supported_marchs = ['armv8.6-a', 'armv8.5-a', 'armv8.4-a', 'armv8.3-a',
2981+ 'armv8.2-a', 'armv8.1-a', 'armv8-a']
2982+ check_compiler_support = false
2983+ foreach supported_march: supported_marchs
2984+ if supported_march == part_number_config['march']
2985+ # start checking from this version downwards
2986+ check_compiler_support = true
2987+ endif
2988+ if (check_compiler_support and
2989+ cc.has_argument('-march=' + supported_march))
2990+ candidate_march = supported_march
2991+ # highest supported march version found
2992+ break
2993+ endif
2994+ endforeach
2995+ endif
2996 if candidate_march == ''
2997 error('No suitable armv8 march version found.')
2998 endif
2999@@ -581,7 +587,7 @@ if update_flags
3000 # apply supported compiler options
3001 if part_number_config.has_key('compiler_options')
3002 foreach flag: part_number_config['compiler_options']
3003- if cc.has_argument(flag)
3004+ if cc.has_multi_arguments(machine_args + [flag])
3005 machine_args += flag
3006 else
3007 warning('Configuration compiler option ' +
3008diff --git a/debian/changelog b/debian/changelog
3009index 59249b0..756eb1f 100644
3010--- a/debian/changelog
3011+++ b/debian/changelog
3012@@ -1,3 +1,16 @@
3013+dpdk (21.11.6-0ubuntu0.22.04.1) jammy; urgency=medium
3014+
3015+ * Merge LTS stable release 21.11.6 (LP: #2040463)
3016+ - Full release notes are available at:
3017+ https://doc.dpdk.org/guides-21.11/rel_notes/release_21_11.html#id17
3018+ * d/dpdk-dev.lintian-overrides: a pair of admin tools without manpages.
3019+ * Add new symbols:
3020+ - d/librte-eventdev22.symbols due to https://github.com/DPDK/dpdk-stable/commit/5a037544
3021+ - d/librte-common-sfc-efx22.symbols due to https://github.com/DPDK/dpdk-stable/commit/cf1e1a8e
3022+ * d/p/disable_autopkgtest_fails.patch: Refresh.
3023+
3024+ -- Miriam España Acebal <miriam.espana@canonical.com> Mon, 29 Jan 2024 13:52:29 +0100
3025+
3026 dpdk (21.11.4-0ubuntu0.22.04.1) jammy; urgency=medium
3027
3028 * Merge LTS stable release 21.11.4 (LP: #2026351)
3029diff --git a/debian/dpdk-dev.lintian-overrides b/debian/dpdk-dev.lintian-overrides
3030index 76652f9..944f8e0 100644
3031--- a/debian/dpdk-dev.lintian-overrides
3032+++ b/debian/dpdk-dev.lintian-overrides
3033@@ -1,4 +1,5 @@
3034 # admin only test tools, documentation only maintained on the web (if at all) by upstream
3035+dpdk-dev: no-manual-page usr/bin/dpdk-dumpcap
3036 dpdk-dev: no-manual-page usr/bin/dpdk-pdump
3037 dpdk-dev: no-manual-page usr/bin/dpdk-proc-info
3038 dpdk-dev: no-manual-page usr/bin/dpdk-telemetry.py
3039@@ -11,6 +12,7 @@ dpdk-dev: no-manual-page usr/bin/dpdk-test-crypto-perf
3040 dpdk-dev: no-manual-page usr/bin/dpdk-test-eventdev
3041 dpdk-dev: no-manual-page usr/bin/dpdk-test-fib
3042 dpdk-dev: no-manual-page usr/bin/dpdk-test-flow-perf
3043+dpdk-dev: no-manual-page usr/bin/dpdk-test-gpudev
3044 dpdk-dev: no-manual-page usr/bin/dpdk-test-pipeline
3045 dpdk-dev: no-manual-page usr/bin/dpdk-test-regex
3046 dpdk-dev: no-manual-page usr/bin/dpdk-test-sad
3047diff --git a/debian/librte-common-sfc-efx22.symbols b/debian/librte-common-sfc-efx22.symbols
3048index b7aceb9..d3658af 100644
3049--- a/debian/librte-common-sfc-efx22.symbols
3050+++ b/debian/librte-common-sfc-efx22.symbols
3051@@ -78,6 +78,7 @@ librte_common_sfc_efx.so.22 librte-common-sfc-efx22 #MINVER#
3052 efx_mae_action_rule_insert@INTERNAL 20.11~rc3
3053 efx_mae_action_rule_remove@INTERNAL 20.11~rc3
3054 efx_mae_action_set_alloc@INTERNAL 20.11~rc3
3055+ efx_mae_action_set_clear_fw_rsrc_ids@INTERNAL 21.11.6
3056 efx_mae_action_set_fill_in_counter_id@INTERNAL 21.08
3057 efx_mae_action_set_fill_in_dst_mac_id@INTERNAL 21.11
3058 efx_mae_action_set_fill_in_eh_id@INTERNAL 21.08
3059diff --git a/debian/librte-eventdev22.symbols b/debian/librte-eventdev22.symbols
3060index ccc6695..8800a84 100644
3061--- a/debian/librte-eventdev22.symbols
3062+++ b/debian/librte-eventdev22.symbols
3063@@ -50,6 +50,7 @@ librte_eventdev.so.22 librte-eventdev22 #MINVER#
3064 __rte_eventdev_trace_eth_tx_adapter_start@INTERNAL 21.11
3065 #MISSING: 21.11
3066 __rte_eventdev_trace_eth_tx_adapter_stop@INTERNAL 21.11
3067+ __rte_eventdev_trace_maintain@EXPERIMENTAL 21.11.6
3068 #MISSING: 21.11
3069 __rte_eventdev_trace_port_link@INTERNAL 21.11
3070 #MISSING: 21.11
3071diff --git a/debian/patches/disable_autopkgtest_fails.patch b/debian/patches/disable_autopkgtest_fails.patch
3072index a4330f9..ee93d58 100644
3073--- a/debian/patches/disable_autopkgtest_fails.patch
3074+++ b/debian/patches/disable_autopkgtest_fails.patch
3075@@ -8,19 +8,19 @@ Author: Christian Ehrhardt <christian.ehrhardt@canonical.com>
3076 Last-Update: 2021-07-13
3077 --- a/app/test/meson.build
3078 +++ b/app/test/meson.build
3079-@@ -227,7 +227,7 @@
3080- ['fib6_autotest', true],
3081+@@ -228,7 +228,7 @@
3082 ['func_reentrancy_autotest', false],
3083 ['flow_classify_autotest', false],
3084+ ['graph_autotest', true],
3085 - ['hash_autotest', true],
3086 + ['hash_autotest', false],
3087 ['interrupt_autotest', true],
3088 ['ipfrag_autotest', false],
3089 ['lcores_autotest', true],
3090-@@ -243,10 +243,10 @@
3091- ['memzone_autotest', false],
3092+@@ -245,10 +245,10 @@
3093 ['meter_autotest', true],
3094 ['multiprocess_autotest', false],
3095+ ['node_list_dump', true],
3096 - ['per_lcore_autotest', true],
3097 + ['per_lcore_autotest', false],
3098 ['pflock_autotest', true],
3099diff --git a/doc/api/doxy-api.conf.in b/doc/api/doxy-api.conf.in
3100index db2ca9b..591abe9 100644
3101--- a/doc/api/doxy-api.conf.in
3102+++ b/doc/api/doxy-api.conf.in
3103@@ -100,7 +100,6 @@ GENERATE_DEPRECATEDLIST = YES
3104 VERBATIM_HEADERS = NO
3105 ALPHABETICAL_INDEX = NO
3106
3107-HTML_TIMESTAMP = NO
3108 HTML_DYNAMIC_SECTIONS = YES
3109 SEARCHENGINE = YES
3110 SORT_MEMBER_DOCS = NO
3111diff --git a/doc/guides/nics/features/iavf.ini b/doc/guides/nics/features/iavf.ini
3112index c6694a1..3860f28 100644
3113--- a/doc/guides/nics/features/iavf.ini
3114+++ b/doc/guides/nics/features/iavf.ini
3115@@ -21,7 +21,7 @@ RSS key update = Y
3116 RSS reta update = Y
3117 VLAN filter = Y
3118 CRC offload = Y
3119-VLAN offload = Y
3120+VLAN offload = P
3121 L3 checksum offload = P
3122 L4 checksum offload = P
3123 Packet type parsing = Y
3124diff --git a/doc/guides/nics/hns3.rst b/doc/guides/nics/hns3.rst
3125index 791c9cc..3800246 100644
3126--- a/doc/guides/nics/hns3.rst
3127+++ b/doc/guides/nics/hns3.rst
3128@@ -30,7 +30,6 @@ Features of the HNS3 PMD are:
3129 - DCB
3130 - Scattered and gather for TX and RX
3131 - Vector Poll mode driver
3132-- Dump register
3133 - SR-IOV VF
3134 - Multi-process
3135 - MAC/VLAN filter
3136@@ -38,6 +37,15 @@ Features of the HNS3 PMD are:
3137 - NUMA support
3138 - Generic flow API
3139 - IEEE1588/802.1AS timestamping
3140+- Basic stats
3141+- Extended stats
3142+- Traffic Management API
3143+- Speed capabilities
3144+- Link Auto-negotiation
3145+- Link flow control
3146+- Dump register
3147+- Dump private info from device
3148+- FW version
3149
3150 Prerequisites
3151 -------------
3152@@ -58,7 +66,8 @@ The following options can be modified in the ``config/rte_config.h`` file.
3153
3154 - ``RTE_LIBRTE_HNS3_MAX_TQP_NUM_PER_PF`` (default ``256``)
3155
3156- Number of MAX queues reserved for PF.
3157+ Number of MAX queues reserved for PF on HIP09 and HIP10.
3158+ The MAX queue number is also determined by the value the firmware report.
3159
3160 Runtime Config Options
3161 ~~~~~~~~~~~~~~~~~~~~~~
3162@@ -81,7 +90,8 @@ Runtime Config Options
3163 ``common``.
3164
3165 For example::
3166- -a 0000:7d:00.0,rx_func_hint=simple
3167+
3168+ -a 0000:7d:00.0,rx_func_hint=simple
3169
3170 - ``tx_func_hint`` (default ``none``)
3171
3172@@ -101,7 +111,8 @@ Runtime Config Options
3173 ``common``.
3174
3175 For example::
3176- -a 0000:7d:00.0,tx_func_hint=common
3177+
3178+ -a 0000:7d:00.0,tx_func_hint=common
3179
3180 - ``dev_caps_mask`` (default ``0``)
3181
3182@@ -113,22 +124,25 @@ Runtime Config Options
3183 Its main purpose is to debug and avoid problems.
3184
3185 For example::
3186- -a 0000:7d:00.0,dev_caps_mask=0xF
3187+
3188+ -a 0000:7d:00.0,dev_caps_mask=0xF
3189
3190 - ``mbx_time_limit_ms`` (default ``500``)
3191- Used to define the mailbox time limit by user.
3192- Current, the max waiting time for MBX response is 500ms, but in
3193- some scenarios, it is not enough. Since it depends on the response
3194- of the kernel mode driver, and its response time is related to the
3195- scheduling of the system. In this special scenario, most of the
3196- cores are isolated, and only a few cores are used for system
3197- scheduling. When a large number of services are started, the
3198- scheduling of the system will be very busy, and the reply of the
3199- mbx message will time out, which will cause our PMD initialization
3200- to fail. So provide access to set mailbox time limit for user.
3201-
3202- For example::
3203- -a 0000:7d:00.0,mbx_time_limit_ms=600
3204+
3205+ Used to define the mailbox time limit by user.
3206+ Current, the max waiting time for MBX response is 500ms, but in
3207+ some scenarios, it is not enough. Since it depends on the response
3208+ of the kernel mode driver, and its response time is related to the
3209+ scheduling of the system. In this special scenario, most of the
3210+ cores are isolated, and only a few cores are used for system
3211+ scheduling. When a large number of services are started, the
3212+ scheduling of the system will be very busy, and the reply of the
3213+ mbx message will time out, which will cause our PMD initialization
3214+ to fail. So provide access to set mailbox time limit for user.
3215+
3216+ For example::
3217+
3218+ -a 0000:7d:00.0,mbx_time_limit_ms=600
3219
3220 Link status event Pre-conditions
3221 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3222@@ -137,7 +151,8 @@ Firmware 1.8.0.0 and later versions support reporting link changes to the PF.
3223 Therefore, to use the LSC for the PF driver, ensure that the firmware version
3224 also supports reporting link changes.
3225 If the VF driver needs to support LSC, special patch must be added:
3226-`<https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/net/ethernet/hisilicon/hns3?h=next-20210428&id=18b6e31f8bf4ac7af7b057228f38a5a530378e4e>`_.
3227+`<https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=18b6e31f8bf4ac7af7b057228f38a5a530378e4e>`_.
3228+
3229 Note: The patch has been uploaded to 5.13 of the Linux kernel mainline.
3230
3231
3232@@ -197,36 +212,50 @@ Generic flow API
3233
3234 - ``RSS Flow``
3235
3236- RSS Flow supports to set hash input set, hash function, enable hash
3237- and configure queues.
3238- For example:
3239- Configure queues as queue 0, 1, 2, 3.
3240+ RSS Flow supports for creating rule base on input tuple, hash key, queues
3241+ and hash algorithm. But hash key, queues and hash algorithm are the global
3242+ configuration for hardware which will affect other rules.
3243+ The rule just setting input tuple is completely independent.
3244+
3245+ Run ``testpmd``:
3246
3247 .. code-block:: console
3248
3249- testpmd> flow create 0 ingress pattern end actions rss types end \
3250- queues 0 1 2 3 end / end
3251+ dpdk-testpmd -a 0000:7d:00.0 -l 10-18 -- -i --rxq=8 --txq=8
3252+
3253+ All IP packets can be distributed to 8 queues.
3254
3255- Enable hash and set input set for IPv4-TCP.
3256+ Set IPv4-TCP packet is distributed to 8 queues based on L3/L4 SRC only.
3257
3258 .. code-block:: console
3259
3260- testpmd> flow create 0 ingress pattern eth / ipv4 / tcp / end \
3261- actions rss types ipv4-tcp l3-src-only end queues end / end
3262+ testpmd> flow create 0 ingress pattern eth / ipv4 / tcp / end actions \
3263+ rss types ipv4-tcp l4-src-only l3-src-only end queues end / end
3264
3265- Set symmetric hash enable for flow type IPv4-TCP.
3266+ Disable IPv4 packet RSS hash.
3267
3268 .. code-block:: console
3269
3270- testpmd> flow create 0 ingress pattern eth / ipv4 / tcp / end \
3271- actions rss types ipv4-tcp end queues end func symmetric_toeplitz / end
3272+ testpmd> flow create 0 ingress pattern eth / ipv4 / end actions rss \
3273+ types none end queues end / end
3274
3275- Set hash function as simple xor.
3276+ Set hash function as symmetric Toeplitz.
3277
3278 .. code-block:: console
3279
3280 testpmd> flow create 0 ingress pattern end actions rss types end \
3281- queues end func simple_xor / end
3282+ queues end func symmetric_toeplitz / end
3283+
3284+ In this case, all packets that enabled RSS are hashed using symmetric
3285+ Toeplitz algorithm.
3286+
3287+ Flush all RSS rules
3288+
3289+ .. code-block:: console
3290+
3291+ testpmd> flow flush 0
3292+
3293+ The RSS configurations of hardwre is back to the one ethdev ops set.
3294
3295 Statistics
3296 ----------
3297diff --git a/doc/guides/nics/i40e.rst b/doc/guides/nics/i40e.rst
3298index aedb1af..9629afe 100644
3299--- a/doc/guides/nics/i40e.rst
3300+++ b/doc/guides/nics/i40e.rst
3301@@ -88,13 +88,16 @@ Windows Prerequisites
3302 - To load NetUIO driver, follow the steps mentioned in `dpdk-kmods repository
3303 <https://git.dpdk.org/dpdk-kmods/tree/windows/netuio/README.rst>`_.
3304
3305-Recommended Matching List
3306--------------------------
3307-
3308-It is highly recommended to upgrade the i40e kernel driver and firmware to
3309-avoid the compatibility issues with i40e PMD. Here is the suggested matching
3310-list which has been tested and verified. The detailed information can refer
3311-to chapter Tested Platforms/Tested NICs in release notes.
3312+Kernel driver and Firmware Matching List
3313+----------------------------------------
3314+
3315+It is highly recommended to upgrade the i40e kernel driver and firmware
3316+to avoid the compatibility issues with i40e PMD.
3317+The table below shows a summary of the DPDK versions
3318+with corresponding out-of-tree Linux kernel drivers and firmware.
3319+The full list of in-tree and out-of-tree Linux kernel drivers from kernel.org
3320+and Linux distributions that were tested and verified
3321+are listed in the Tested Platforms section of the Release Notes for each release.
3322
3323 For X710/XL710/XXV710,
3324
3325diff --git a/doc/guides/nics/ice.rst b/doc/guides/nics/ice.rst
3326index 6b903b9..569fd9d 100644
3327--- a/doc/guides/nics/ice.rst
3328+++ b/doc/guides/nics/ice.rst
3329@@ -41,13 +41,16 @@ Windows Prerequisites
3330 - Loading of private Dynamic Device Personalization (DDP) package is not supported on Windows.
3331
3332
3333-Recommended Matching List
3334--------------------------
3335+Kernel driver, DDP and Firmware Matching List
3336+---------------------------------------------
3337
3338 It is highly recommended to upgrade the ice kernel driver, firmware and DDP package
3339 to avoid the compatibility issues with ice PMD.
3340-Here is the suggested matching list which has been tested and verified.
3341-The detailed information can refer to chapter Tested Platforms/Tested NICs in release notes.
3342+The table below shows a summary of the DPDK versions
3343+with corresponding out-of-tree Linux kernel drivers, DDP package and firmware.
3344+The full list of in-tree and out-of-tree Linux kernel drivers from kernel.org
3345+and Linux distributions that were tested and verified
3346+are listed in the Tested Platforms section of the Release Notes for each release.
3347
3348 +-----------+---------------+-----------------+-----------+--------------+-----------+
3349 | DPDK | Kernel Driver | OS Default DDP | COMMS DDP | Wireless DDP | Firmware |
3350diff --git a/doc/guides/nics/ixgbe.rst b/doc/guides/nics/ixgbe.rst
3351index ad1a3da..1b7cc17 100644
3352--- a/doc/guides/nics/ixgbe.rst
3353+++ b/doc/guides/nics/ixgbe.rst
3354@@ -16,8 +16,6 @@ The wider register gives space to hold multiple packet buffers so as to save ins
3355 There is no change to PMD API. The RX/TX handler are the only two entries for vPMD packet I/O.
3356 They are transparently registered at runtime RX/TX execution if all condition checks pass.
3357
3358-1. To date, only an SSE version of IX GBE vPMD is available.
3359-
3360 Some constraints apply as pre-conditions for specific optimizations on bulk packet transfers.
3361 The following sections explain RX and TX constraints in the vPMD.
3362
3363diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst
3364index 593a71c..e2fb45b 100644
3365--- a/doc/guides/nics/mlx5.rst
3366+++ b/doc/guides/nics/mlx5.rst
3367@@ -426,8 +426,12 @@ Limitations
3368 encapsulation actions.
3369 - For NIC Rx flow, supports ``MARK``, ``COUNT``, ``QUEUE``, ``RSS`` in the
3370 sample actions list.
3371- - For E-Switch mirroring flow, supports ``RAW ENCAP``, ``Port ID``,
3372- ``VXLAN ENCAP``, ``NVGRE ENCAP`` in the sample actions list.
3373+ - For E-Switch mirroring flow, supports ``RAW_ENCAP``, ``PORT_ID``,
3374+ ``VXLAN_ENCAP``, ``NVGRE_ENCAP`` in the sample actions list.
3375+ - For E-Switch mirroring flow with sample ratio = 1, the ``ENCAP`` action
3376+ supports uplink port only.
3377+ - For E-Switch mirroring flow with sample ratio = 1, the ``PORT`` and ``JUMP`` actions
3378+ are not supported without presented ``ENCAP`` action in the sample actions list.
3379 - For ConnectX-5 trusted device, the application metadata with SET_TAG index 0
3380 is not supported before ``RTE_FLOW_ACTION_TYPE_SAMPLE`` action.
3381
3382diff --git a/doc/guides/nics/tap.rst b/doc/guides/nics/tap.rst
3383index 681010d..84ec805 100644
3384--- a/doc/guides/nics/tap.rst
3385+++ b/doc/guides/nics/tap.rst
3386@@ -34,14 +34,14 @@ Using the option ``mac=fixed`` you can create a fixed known MAC address::
3387
3388 The MAC address will have a fixed value with the last octet incrementing by one
3389 for each interface string containing ``mac=fixed``. The MAC address is formatted
3390-as 00:'d':'t':'a':'p':[00-FF]. Convert the characters to hex and you get the
3391-actual MAC address: ``00:64:74:61:70:[00-FF]``.
3392+as 02:'d':'t':'a':'p':[00-FF]. Convert the characters to hex and you get the
3393+actual MAC address: ``02:64:74:61:70:[00-FF]``.
3394
3395- --vdev=net_tap0,mac="00:64:74:61:70:11"
3396+ --vdev=net_tap0,mac="02:64:74:61:70:11"
3397
3398 The MAC address will have a user value passed as string. The MAC address is in
3399 format with delimiter ``:``. The string is byte converted to hex and you get
3400-the actual MAC address: ``00:64:74:61:70:11``.
3401+the actual MAC address: ``02:64:74:61:70:11``.
3402
3403 It is possible to specify a remote netdevice to capture packets from by adding
3404 ``remote=foo1``, for example::
3405diff --git a/doc/guides/nics/virtio.rst b/doc/guides/nics/virtio.rst
3406index eef0cc2..0de445c 100644
3407--- a/doc/guides/nics/virtio.rst
3408+++ b/doc/guides/nics/virtio.rst
3409@@ -304,6 +304,7 @@ Prerequisites for Rx interrupts
3410 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3411
3412 To support Rx interrupts,
3413+
3414 #. Check if guest kernel supports VFIO-NOIOMMU:
3415
3416 Linux started to support VFIO-NOIOMMU since 4.8.0. Make sure the guest
3417@@ -466,12 +467,16 @@ according to below configuration:
3418
3419 #. Split virtqueue mergeable path: If Rx mergeable is negotiated, in-order feature is
3420 not negotiated, this path will be selected.
3421+
3422 #. Split virtqueue non-mergeable path: If Rx mergeable and in-order feature are not
3423 negotiated, also Rx offload(s) are requested, this path will be selected.
3424+
3425 #. Split virtqueue in-order mergeable path: If Rx mergeable and in-order feature are
3426 both negotiated, this path will be selected.
3427+
3428 #. Split virtqueue in-order non-mergeable path: If in-order feature is negotiated and
3429 Rx mergeable is not negotiated, this path will be selected.
3430+
3431 #. Split virtqueue vectorized Rx path: If Rx mergeable is disabled and no Rx offload
3432 requested, this path will be selected.
3433
3434@@ -480,16 +485,21 @@ according to below configuration:
3435
3436 #. Packed virtqueue mergeable path: If Rx mergeable is negotiated, in-order feature
3437 is not negotiated, this path will be selected.
3438+
3439 #. Packed virtqueue non-mergeable path: If Rx mergeable and in-order feature are not
3440 negotiated, this path will be selected.
3441+
3442 #. Packed virtqueue in-order mergeable path: If in-order and Rx mergeable feature are
3443 both negotiated, this path will be selected.
3444+
3445 #. Packed virtqueue in-order non-mergeable path: If in-order feature is negotiated and
3446 Rx mergeable is not negotiated, this path will be selected.
3447+
3448 #. Packed virtqueue vectorized Rx path: If building and running environment support
3449 (AVX512 || NEON) && in-order feature is negotiated && Rx mergeable
3450 is not negotiated && TCP_LRO Rx offloading is disabled && vectorized option enabled,
3451 this path will be selected.
3452+
3453 #. Packed virtqueue vectorized Tx path: If building and running environment support
3454 (AVX512 || NEON) && in-order feature is negotiated && vectorized option enabled,
3455 this path will be selected.
3456@@ -567,5 +577,7 @@ or configuration, below steps can help you identify which path you selected and
3457 root cause faster.
3458
3459 #. Run vhost/virtio test case;
3460+
3461 #. Run "perf top" and check virtio Rx/Tx callback names;
3462+
3463 #. Identify which virtio path is selected refer to above table.
3464diff --git a/doc/guides/platform/cnxk.rst b/doc/guides/platform/cnxk.rst
3465index 149dbda..8eff2c4 100644
3466--- a/doc/guides/platform/cnxk.rst
3467+++ b/doc/guides/platform/cnxk.rst
3468@@ -105,7 +105,9 @@ where even VF bound to the first domain and odd VF bound to the second domain.
3469 Typical application usage models are,
3470
3471 #. Communication between the Linux kernel and DPDK application.
3472+
3473 #. Exception path to Linux kernel from DPDK application as SW ``KNI`` replacement.
3474+
3475 #. Communication between two different DPDK applications.
3476
3477 SDP interface
3478@@ -124,6 +126,7 @@ can bind PF or VF to use SDP interface and it will be enumerated as ethdev ports
3479 The primary use case for SDP is to enable the smart NIC use case. Typical usage models are,
3480
3481 #. Communication channel between remote host and cnxk SoC over PCIe.
3482+
3483 #. Transfer packets received from network interface to remote host over PCIe and
3484 vice-versa.
3485
3486@@ -244,7 +247,7 @@ context or stats using debugfs.
3487
3488 Enable ``debugfs`` by:
3489
3490-1. Compile kernel with debugfs enabled, i.e ``CONFIG_DEBUGFS=y``.
3491+1. Compile kernel with debugfs enabled, i.e ``CONFIG_DEBUG_FS=y``.
3492 2. Boot OCTEON CN9K/CN10K with debugfs supported kernel.
3493 3. Verify ``debugfs`` mounted by default "mount | grep -i debugfs" or mount it manually by using.
3494
3495diff --git a/doc/guides/prog_guide/event_timer_adapter.rst b/doc/guides/prog_guide/event_timer_adapter.rst
3496index 9106092..7733424 100644
3497--- a/doc/guides/prog_guide/event_timer_adapter.rst
3498+++ b/doc/guides/prog_guide/event_timer_adapter.rst
3499@@ -229,9 +229,7 @@ Note that it is necessary to initialize the event timer state to
3500 RTE_EVENT_TIMER_NOT_ARMED. Also note that we have saved a pointer to the
3501 ``conn`` object in the timer's event payload. This will allow us to locate
3502 the connection object again once we dequeue the timer expiry event from the
3503-event device later. As a convenience, the application may specify no value for
3504-ev.event_ptr, and the adapter will by default set it to point at the event
3505-timer itself.
3506+event device later.
3507
3508 Now we can arm the event timer with ``rte_event_timer_arm_burst()``:
3509
3510diff --git a/doc/guides/prog_guide/generic_segmentation_offload_lib.rst b/doc/guides/prog_guide/generic_segmentation_offload_lib.rst
3511index e605b86..30d13bc 100644
3512--- a/doc/guides/prog_guide/generic_segmentation_offload_lib.rst
3513+++ b/doc/guides/prog_guide/generic_segmentation_offload_lib.rst
3514@@ -204,7 +204,7 @@ To segment an outgoing packet, an application must:
3515 - a flag, that indicates whether the IPv4 headers of output segments should
3516 contain fixed or incremental ID values.
3517
3518-2. Set the appropriate ol_flags in the mbuf.
3519+#. Set the appropriate ol_flags in the mbuf.
3520
3521 - The GSO library use the value of an mbuf's ``ol_flags`` attribute to
3522 determine how a packet should be segmented. It is the application's
3523diff --git a/doc/guides/prog_guide/graph_lib.rst b/doc/guides/prog_guide/graph_lib.rst
3524index 1cfdc86..4ab0623 100644
3525--- a/doc/guides/prog_guide/graph_lib.rst
3526+++ b/doc/guides/prog_guide/graph_lib.rst
3527@@ -173,7 +173,7 @@ Create the graph object
3528 ~~~~~~~~~~~~~~~~~~~~~~~
3529 Now that the nodes are linked, Its time to create a graph by including
3530 the required nodes. The application can provide a set of node patterns to
3531-form a graph object. The ``famish()`` API used underneath for the pattern
3532+form a graph object. The ``fnmatch()`` API used underneath for the pattern
3533 matching to include the required nodes. After the graph create any changes to
3534 nodes or graph is not allowed.
3535
3536diff --git a/doc/guides/prog_guide/rte_flow.rst b/doc/guides/prog_guide/rte_flow.rst
3537index 7984e88..91ace7a 100644
3538--- a/doc/guides/prog_guide/rte_flow.rst
3539+++ b/doc/guides/prog_guide/rte_flow.rst
3540@@ -148,14 +148,15 @@ Attribute: Group
3541 Flow rules can be grouped by assigning them a common group number. Groups
3542 allow a logical hierarchy of flow rule groups (tables) to be defined. These
3543 groups can be supported virtually in the PMD or in the physical device.
3544-Group 0 is the default group and this is the only group which flows are
3545-guarantee to matched against, all subsequent groups can only be reached by
3546-way of the JUMP action from a matched flow rule.
3547+Group 0 is the default group and is the only group that
3548+flows are guaranteed to be matched against.
3549+All subsequent groups can only be reached by using a JUMP action
3550+from a matched flow rule.
3551
3552 Although optional, applications are encouraged to group similar rules as
3553 much as possible to fully take advantage of hardware capabilities
3554 (e.g. optimized matching) and work around limitations (e.g. a single pattern
3555-type possibly allowed in a given group), while being aware that the groups
3556+type possibly allowed in a given group), while being aware that the groups'
3557 hierarchies must be programmed explicitly.
3558
3559 Note that support for more than a single group is not guaranteed.
3560@@ -170,7 +171,7 @@ Priority levels are arbitrary and up to the application, they do
3561 not need to be contiguous nor start from 0, however the maximum number
3562 varies between devices and may be affected by existing flow rules.
3563
3564-A flow which matches multiple rules in the same group will always matched by
3565+A flow which matches multiple rules in the same group will always be matched by
3566 the rule with the highest priority in that group.
3567
3568 If a packet is matched by several rules of a given group for a given
3569@@ -1831,12 +1832,12 @@ flow group/tables on the device, this action redirects the matched flow to
3570 the specified group on that device.
3571
3572 If a matched flow is redirected to a table which doesn't contain a matching
3573-rule for that flow then the behavior is undefined and the resulting behavior
3574-is up to the specific device. Best practice when using groups would be define
3575+rule for that flow, then the behavior is undefined and the resulting behavior
3576+is up to the specific device. Best practice when using groups would be to define
3577 a default flow rule for each group which a defines the default actions in that
3578 group so a consistent behavior is defined.
3579
3580-Defining an action for matched flow in a group to jump to a group which is
3581+Defining an action for a matched flow in a group to jump to a group which is
3582 higher in the group hierarchy may not be supported by physical devices,
3583 depending on how groups are mapped to the physical devices. In the
3584 definitions of jump actions, applications should be aware that it may be
3585@@ -2008,8 +2009,8 @@ Also, regarding packet encapsulation ``level``:
3586 level.
3587
3588 - ``2`` and subsequent values request RSS to be performed on the specified
3589- inner packet encapsulation level, from outermost to innermost (lower to
3590- higher values).
3591+ inner packet encapsulation level, from outermost to innermost (lower to
3592+ higher values).
3593
3594 Values other than ``0`` are not necessarily supported.
3595
3596@@ -3066,20 +3067,23 @@ The immediate value ``RTE_FLOW_FIELD_VALUE`` (or a pointer to it
3597 ``RTE_FLOW_FIELD_START`` is used to point to the beginning of a packet.
3598 See ``enum rte_flow_field_id`` for the list of supported fields.
3599
3600-``op`` selects the operation to perform on a destination field.
3601+``op`` selects the operation to perform on a destination field:
3602+
3603 - ``set`` copies the data from ``src`` field to ``dst`` field.
3604 - ``add`` adds together ``dst`` and ``src`` and stores the result into ``dst``.
3605-- ``sub`` subtracts ``src`` from ``dst`` and stores the result into ``dst``
3606+- ``sub`` subtracts ``src`` from ``dst`` and stores the result into ``dst``.
3607
3608 ``width`` defines a number of bits to use from ``src`` field.
3609
3610 ``level`` is used to access any packet field on any encapsulation level
3611-as well as any tag element in the tag array.
3612-- ``0`` means the default behaviour. Depending on the packet type, it can
3613-mean outermost, innermost or anything in between.
3614+as well as any tag element in the tag array:
3615+
3616+- ``0`` means the default behaviour. Depending on the packet type,
3617+ it can mean outermost, innermost or anything in between.
3618 - ``1`` requests access to the outermost packet encapsulation level.
3619 - ``2`` and subsequent values requests access to the specified packet
3620-encapsulation level, from outermost to innermost (lower to higher values).
3621+ encapsulation level, from outermost to innermost (lower to higher values).
3622+
3623 For the tag array (in case of multiple tags are supported and present)
3624 ``level`` translates directly into the array index.
3625
3626diff --git a/doc/guides/prog_guide/rte_security.rst b/doc/guides/prog_guide/rte_security.rst
3627index 72ca0bd..8619757 100644
3628--- a/doc/guides/prog_guide/rte_security.rst
3629+++ b/doc/guides/prog_guide/rte_security.rst
3630@@ -592,68 +592,27 @@ Security session configuration
3631
3632 Security Session configuration structure is defined as ``rte_security_session_conf``
3633
3634-.. code-block:: c
3635-
3636- struct rte_security_session_conf {
3637- enum rte_security_session_action_type action_type;
3638- /**< Type of action to be performed on the session */
3639- enum rte_security_session_protocol protocol;
3640- /**< Security protocol to be configured */
3641- union {
3642- struct rte_security_ipsec_xform ipsec;
3643- struct rte_security_macsec_xform macsec;
3644- struct rte_security_pdcp_xform pdcp;
3645- struct rte_security_docsis_xform docsis;
3646- };
3647- /**< Configuration parameters for security session */
3648- struct rte_crypto_sym_xform *crypto_xform;
3649- /**< Security Session Crypto Transformations */
3650- void *userdata;
3651- /**< Application specific userdata to be saved with session */
3652- };
3653+.. literalinclude:: ../../../lib/security/rte_security.h
3654+ :language: c
3655+ :start-after: Structure rte_security_session_conf 8<
3656+ :end-before: >8 End of structure rte_security_session_conf.
3657
3658 The configuration structure reuses the ``rte_crypto_sym_xform`` struct for crypto related
3659 configuration. The ``rte_security_session_action_type`` struct is used to specify whether the
3660 session is configured for Lookaside Protocol offload or Inline Crypto or Inline Protocol
3661 Offload.
3662
3663-.. code-block:: c
3664-
3665- enum rte_security_session_action_type {
3666- RTE_SECURITY_ACTION_TYPE_NONE,
3667- /**< No security actions */
3668- RTE_SECURITY_ACTION_TYPE_INLINE_CRYPTO,
3669- /**< Crypto processing for security protocol is processed inline
3670- * during transmission
3671- */
3672- RTE_SECURITY_ACTION_TYPE_INLINE_PROTOCOL,
3673- /**< All security protocol processing is performed inline during
3674- * transmission
3675- */
3676- RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
3677- /**< All security protocol processing including crypto is performed
3678- * on a lookaside accelerator
3679- */
3680- RTE_SECURITY_ACTION_TYPE_CPU_CRYPTO
3681- /**< Similar to ACTION_TYPE_NONE but crypto processing for security
3682- * protocol is processed synchronously by a CPU.
3683- */
3684- };
3685+.. literalinclude:: ../../../lib/security/rte_security.h
3686+ :language: c
3687+ :start-after: Enumeration of rte_security_session_action_type 8<
3688+ :end-before: >8 End enumeration of rte_security_session_action_type.
3689
3690 The ``rte_security_session_protocol`` is defined as
3691
3692-.. code-block:: c
3693-
3694- enum rte_security_session_protocol {
3695- RTE_SECURITY_PROTOCOL_IPSEC = 1,
3696- /**< IPsec Protocol */
3697- RTE_SECURITY_PROTOCOL_MACSEC,
3698- /**< MACSec Protocol */
3699- RTE_SECURITY_PROTOCOL_PDCP,
3700- /**< PDCP Protocol */
3701- RTE_SECURITY_PROTOCOL_DOCSIS,
3702- /**< DOCSIS Protocol */
3703- };
3704+.. literalinclude:: ../../../lib/security/rte_security.h
3705+ :language: c
3706+ :start-after: Enumeration of rte_security_session_protocol 8<
3707+ :end-before: >8 End enumeration of rte_security_session_protocol.
3708
3709 Currently the library defines configuration parameters for IPsec and PDCP only.
3710 For other protocols like MACSec, structures and enums are defined as place holders
3711diff --git a/doc/guides/rawdevs/ntb.rst b/doc/guides/rawdevs/ntb.rst
3712index 2bb115d..f8befc6 100644
3713--- a/doc/guides/rawdevs/ntb.rst
3714+++ b/doc/guides/rawdevs/ntb.rst
3715@@ -1,6 +1,8 @@
3716 .. SPDX-License-Identifier: BSD-3-Clause
3717 Copyright(c) 2018 Intel Corporation.
3718
3719+.. include:: <isonum.txt>
3720+
3721 NTB Rawdev Driver
3722 =================
3723
3724@@ -17,19 +19,23 @@ some information by using scratchpad registers.
3725 BIOS setting on Intel Xeon
3726 --------------------------
3727
3728-Intel Non-transparent Bridge needs special BIOS setting. The reference for
3729-Skylake is https://www.intel.com/content/dam/support/us/en/documents/server-products/Intel_Xeon_Processor_Scalable_Family_BIOS_User_Guide.pdf
3730-
3731-- Set the needed PCIe port as NTB to NTB mode on both hosts.
3732-- Enable NTB bars and set bar size of bar 23 and bar 45 as 12-29 (4K-512M)
3733- on both hosts (for Ice Lake, bar size can be set as 12-51, namely 4K-128PB).
3734- Note that bar size on both hosts should be the same.
3735-- Disable split bars for both hosts.
3736-- Set crosslink control override as DSD/USP on one host, USD/DSP on
3737- another host.
3738-- Disable PCIe PII SSC (Spread Spectrum Clocking) for both hosts. This
3739- is a hardware requirement.
3740-
3741+Intel Non-transparent Bridge (NTB) needs special BIOS settings on both systems.
3742+Note that for 4th Generation Intel\ |reg| Xeon\ |reg| Scalable Processors,
3743+option ``Port Subsystem Mode`` should be changed from ``Gen5`` to ``Gen4 Only``,
3744+then reboot.
3745+
3746+- Set ``Non-Transparent Bridge PCIe Port Definition`` for needed PCIe ports
3747+ as ``NTB to NTB`` mode, on both hosts.
3748+- Set ``Enable NTB BARs`` as ``Enabled``, on both hosts.
3749+- Set ``Enable SPLIT BARs`` as ``Disabled``, on both hosts.
3750+- Set ``Imbar1 Size``, ``Imbar2 Size``, ``Embar1 Size`` and ``Embar2 Size``,
3751+ as 12-29 (i.e., 4K-512M) for 2nd Generation Intel\ |reg| Xeon\ |reg| Scalable Processors;
3752+ as 12-51 (i.e., 4K-128PB) for 3rd and 4th Generation Intel\ |reg| Xeon\ |reg| Scalable Processors.
3753+ Note that those bar sizes on both hosts should be the same.
3754+- Set ``Crosslink Control override`` as ``DSD/USP`` on one host,
3755+ ``USD/DSP`` on another host.
3756+- Set ``PCIe PLL SSC (Spread Spectrum Clocking)`` as ``Disabled``, on both hosts.
3757+ This is a hardware requirement when using Re-timer Cards.
3758
3759 Device Setup
3760 ------------
3761@@ -145,4 +151,8 @@ like the following:
3762 Limitation
3763 ----------
3764
3765-- This PMD only supports Intel Skylake and Ice Lake platforms.
3766+This PMD is only supported on Intel Xeon Platforms:
3767+
3768+- 4th Generation Intel® Xeon® Scalable Processors.
3769+- 3rd Generation Intel® Xeon® Scalable Processors.
3770+- 2nd Generation Intel® Xeon® Scalable Processors.
3771diff --git a/doc/guides/rel_notes/release_21_11.rst b/doc/guides/rel_notes/release_21_11.rst
3772index 8d3218b..762db48 100644
3773--- a/doc/guides/rel_notes/release_21_11.rst
3774+++ b/doc/guides/rel_notes/release_21_11.rst
3775@@ -2540,3 +2540,657 @@ Tested Platforms
3776 * DPDK 21.11.4 contains fixes up to DPDK 23.03
3777 * Issues identified/fixed in DPDK main branch after DPDK 23.03 may be present in DPDK 21.11.4
3778 * Intel validation team reported a performance issue for a specific test on a specific platform, Intel(R) Xeon(R) Platinum 8280M CPU @ 2.70GHz CPU. Other tests and other platforms do not have this performance issue. See `mailing list <https://mails.dpdk.org/archives/stable/2023-May/043729.html>`__ for more details.
3779+
3780+21.11.5 Release Notes
3781+---------------------
3782+
3783+
3784+21.11.5 Fixes
3785+~~~~~~~~~~~~~
3786+
3787+* app/crypto-perf: fix socket ID default value
3788+* app/testpmd: fix checksum engine with GTP on 32-bit
3789+* app/testpmd: fix GTP L2 length in checksum engine
3790+* baseband/fpga_5gnr_fec: fix possible division by zero
3791+* baseband/fpga_5gnr_fec: fix starting unconfigured queue
3792+* build: fix case of project language name
3793+* ci: fix libabigail cache in GHA
3794+* common/cnxk: fix inline device VF identification
3795+* common/cnxk: fix IPsec IPv6 tunnel address byte swap
3796+* common/iavf: fix MAC type for 710 NIC
3797+* common/mlx5: adjust fork call with new kernel API
3798+* common/qat: detach crypto from compress build
3799+* common/sfc_efx/base: fix Rx queue without RSS hash prefix
3800+* crypto/ipsec_mb: fix enqueue counter for SNOW3G
3801+* crypto/ipsec_mb: optimize allocation in session
3802+* crypto/openssl: skip workaround at compilation time
3803+* crypto/scheduler: fix last element for valid args
3804+* doc: fix auth algos in cryptoperf app
3805+* doc: fix event timer adapter guide
3806+* doc: fix format in flow API guide
3807+* doc: fix kernel patch link in hns3 guide
3808+* doc: fix number of leading spaces in hns3 guide
3809+* doc: fix syntax in hns3 guide
3810+* doc: fix typo in cnxk platform guide
3811+* doc: fix typo in graph guide
3812+* doc: fix typos and wording in flow API guide
3813+* doc: remove warning with Doxygen 1.9.7
3814+* doc: update BIOS settings and supported HW for NTB
3815+* eal: avoid calling cleanup twice
3816+* eal/linux: fix legacy mem init with many segments
3817+* eal/linux: fix secondary process crash for mp hotplug requests
3818+* ethdev: check that at least one FEC mode is specified
3819+* ethdev: fix indirect action conversion
3820+* ethdev: fix MAC address occupies two entries
3821+* ethdev: fix potential leak in PCI probing helper
3822+* ethdev: update documentation for API to get FEC
3823+* ethdev: update documentation for API to set FEC
3824+* event/cnxk: fix nanoseconds to ticks conversion
3825+* eventdev/timer: fix buffer flush
3826+* eventdev/timer: fix timeout event wait behavior
3827+* event/dsw: free rings on close
3828+* examples/fips_validation: fix digest length in AES-GCM
3829+* examples/ip_pipeline: fix build with GCC 13
3830+* examples/ipsec-secgw: fix TAP default MAC address
3831+* examples/l2fwd-cat: fix external build
3832+* examples/ntb: fix build with GCC 13
3833+* fib: fix adding default route
3834+* hash: fix reading unaligned bits in Toeplitz hash
3835+* ipc: fix file descriptor leakage with unhandled messages
3836+* ipsec: fix NAT-T header length
3837+* kernel/freebsd: fix function parameter list
3838+* kni: fix build with Linux 6.3
3839+* kni: fix build with Linux 6.5
3840+* mbuf: fix Doxygen comment of distributor metadata
3841+* mem: fix memsegs exhausted message
3842+* net/bonding: fix destroy dedicated queues flow
3843+* net/bonding: fix startup when NUMA is not supported
3844+* net/cnxk: fix cookies check with security offload
3845+* net/cnxk: fix flow queue index validation
3846+* net/cnxk: flush SQ before configuring MTU
3847+* net/dpaa2: fix checksum good flags
3848+* net/e1000: fix queue number initialization
3849+* net/e1000: fix Rx and Tx queue status
3850+* net/hns3: delete duplicate macro definition
3851+* net/hns3: extract PTP to its own header file
3852+* net/hns3: fix build warning
3853+* net/hns3: fix device start return value
3854+* net/hns3: fix FEC mode check
3855+* net/hns3: fix FEC mode for 200G ports
3856+* net/hns3: fix IMP reset trigger
3857+* net/hns3: fix inaccurate log
3858+* net/hns3: fix index to look up table in NEON Rx
3859+* net/hns3: fix mbuf leakage when RxQ started after reset
3860+* net/hns3: fix mbuf leakage when RxQ started during reset
3861+* net/hns3: fix missing FEC capability
3862+* net/hns3: fix never set MAC flow control
3863+* net/hns3: fix non-zero weight for disabled TC
3864+* net/hns3: fix redundant line break in log
3865+* net/hns3: fix RTC time after reset
3866+* net/hns3: fix RTC time on initialization
3867+* net/hns3: fix Rx multiple firmware reset interrupts
3868+* net/hns3: fix uninitialized variable
3869+* net/hns3: fix variable type mismatch
3870+* net/hns3: get FEC capability from firmware
3871+* net/hns3: uninitialize PTP
3872+* net/i40e: fix comments
3873+* net/i40e: fix Rx data buffer size
3874+* net/i40e: fix tunnel packet Tx descriptor
3875+* net/iavf: fix abnormal disable HW interrupt
3876+* net/iavf: fix Rx data buffer size
3877+* net/iavf: fix stop ordering
3878+* net/iavf: fix tunnel TSO path selection
3879+* net/iavf: fix VLAN insertion in vector path
3880+* net/iavf: fix VLAN offload with AVX512
3881+* net/iavf: release large VF when closing device
3882+* net/ice: adjust timestamp mbuf register
3883+* net/ice/base: remove unreachable code
3884+* net/ice: fix 32-bit build
3885+* net/ice: fix DCF control thread crash
3886+* net/ice: fix DCF RSS initialization
3887+* net/ice: fix outer UDP checksum offload
3888+* net/ice: fix protocol agnostic offloading with big packets
3889+* net/ice: fix RSS hash key generation
3890+* net/ice: fix Rx data buffer size
3891+* net/ice: fix statistics
3892+* net/ice: fix timestamp enabling
3893+* net/ice: fix tunnel packet Tx descriptor
3894+* net/ice: fix VLAN mode parser
3895+* net/ice: initialize parser for double VLAN
3896+* net/igc: fix Rx and Tx queue status
3897+* net/ixgbe: add proper memory barriers in Rx
3898+* net/ixgbe: fix Rx and Tx queue status
3899+* net/mlx5: enhance error log for tunnel offloading
3900+* net/mlx5: fix device removal event handling
3901+* net/mlx5: fix drop action attribute validation
3902+* net/mlx5: fix drop action memory leak
3903+* net/mlx5: fix duplicated tag index matching in SWS
3904+* net/mlx5: fix flow dump for modify field
3905+* net/mlx5: fix flow workspace destruction
3906+* net/mlx5: fix LRO TCP checksum
3907+* net/mlx5: fix risk in NEON Rx descriptor read
3908+* net/mlx5: fix validation for conntrack indirect action
3909+* net/mlx5: forbid MPRQ restart
3910+* net/netvsc: fix sizeof calculation
3911+* net/nfp: fix address always related with PF ID 0
3912+* net/nfp: fix offloading flows
3913+* net/ngbe: fix extended statistics
3914+* net/ngbe: fix RSS offload capability
3915+* net/qede: fix RSS indirection table initialization
3916+* net/sfc: invalidate dangling MAE flow action FW resource IDs
3917+* net/sfc: stop misuse of Rx ingress m-port metadata on EF100
3918+* net/tap: set locally administered bit for fixed MAC address
3919+* net/txgbe/base: fix Tx with fiber hotplug
3920+* net/txgbe: fix extended statistics
3921+* net/txgbe: fix interrupt enable mask
3922+* net/txgbe: fix to set autoneg for 1G speed
3923+* net/txgbe: fix use-after-free on remove
3924+* net/virtio: fix initialization to return negative errno
3925+* net/virtio: propagate interrupt configuration error values
3926+* net/virtio-user: fix leak when initialisation fails
3927+* net/vmxnet3: fix drop of empty segments in Tx
3928+* net/vmxnet3: fix return code in initializing
3929+* pci: fix comment referencing renamed function
3930+* pipeline: fix double free for table stats
3931+* ring: fix dequeue parameter name
3932+* ring: fix use after free
3933+* telemetry: fix autotest on Alpine
3934+* test: add graph tests
3935+* test/bonding: fix include of standard header
3936+* test/crypto: fix PDCP-SDAP test vectors
3937+* test/crypto: fix return value for SNOW3G
3938+* test/crypto: fix session creation check
3939+* test/malloc: fix missing free
3940+* test/malloc: fix statistics checks
3941+* test/mbuf: fix crash in a forked process
3942+* version: 21.11.5-rc1
3943+* vfio: fix include with musl runtime
3944+* vhost: fix invalid call FD handling
3945+
3946+21.11.5 Validation
3947+~~~~~~~~~~~~~~~~~~
3948+
3949+* `Red Hat(R) Testing <https://mails.dpdk.org/archives/stable/2023-August/045101.html>`__
3950+
3951+ * Platform
3952+
3953+ * RHEL 9
3954+ * Kernel 5.14
3955+ * Qemu 6.2
3956+ * X540-AT2 NIC(ixgbe, 10G)
3957+
3958+ * Functionality
3959+
3960+ * Guest with device assignment(PF) throughput testing(1G hugepage size)
3961+ * Guest with device assignment(PF) throughput testing(2M hugepage size)
3962+ * Guest with device assignment(VF) throughput testing
3963+ * PVP (host dpdk testpmd as vswitch) 1Q: throughput testing
3964+ * PVP vhost-user 2Q throughput testing
3965+ * PVP vhost-user 1Q cross numa node throughput testing
3966+ * Guest with vhost-user 2 queues throughput testing
3967+ * vhost-user reconnect with dpdk-client, qemu-server: qemu reconnect
3968+ * vhost-user reconnect with dpdk-client, qemu-server: ovs reconnect
3969+ * PVP 1Q live migration testing
3970+ * PVP 1Q cross numa node live migration testing
3971+ * Guest with ovs+dpdk+vhost-user 1Q live migration testing
3972+ * Guest with ovs+dpdk+vhost-user 1Q live migration testing (2M)
3973+ * Guest with ovs+dpdk+vhost-user 2Q live migration testing
3974+ * Guest with ovs+dpdk+vhost-user 4Q live migration testing
3975+ * Host PF + DPDK testing
3976+ * Host VF + DPDK testing
3977+
3978+
3979+* `Nvidia(R) Testing <https://mails.dpdk.org/archives/stable/2023-August/045124.html>`__
3980+
3981+ * Basic functionality with testpmd
3982+
3983+ * Tx/Rx
3984+ * xstats
3985+ * Timestamps
3986+ * Link status
3987+ * RTE flow
3988+ * RSS
3989+ * VLAN filtering, stripping and insertion
3990+ * Checksum/TSO
3991+ * ptype
3992+ * link_status_interrupt example application
3993+ * l3fwd-power example application
3994+ * Multi-process example applications
3995+ * Hardware LRO tests
3996+ * Regex application
3997+ * Buffer Split
3998+ * Tx scheduling
3999+
4000+ * Build tests
4001+ * ConnectX-6 Dx
4002+ * ConnectX-5
4003+ * ConnectX-4 Lx
4004+ * BlueField-2
4005+
4006+
4007+* `Intel(R) Testing <https://mails.dpdk.org/archives/stable/2023-August/045177.html>`__
4008+
4009+ * Basic Intel(R) NIC(ixgbe, i40e and ice) testing
4010+
4011+ * PF (i40e)
4012+ * PF (ixgbe)
4013+ * PF (ice)
4014+ * VF (i40e)
4015+ * VF (ixgbe)
4016+ * VF (ice)
4017+ * Compile Testing
4018+ * Intel NIC single core/NIC performance
4019+ * Power and IPsec
4020+
4021+ * Basic cryptodev and virtio testing
4022+
4023+ * vhost/virtio basic loopback, PVP and performance test
4024+ * cryptodev Function/Performance
4025+
4026+21.11.5 Known Issues
4027+~~~~~~~~~~~~~~~~~~~~
4028+
4029+* DPDK 21.11.5 contains fixes up to DPDK 23.07
4030+* Issues identified/fixed in DPDK main branch after DPDK 23.07 may be present in DPDK 21.11.5
4031+
4032+21.11.5 Fixes skipped and status unresolved
4033+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4034+
4035+* c5b531d6ee app/crypto-perf: fix session freeing
4036+* 04dac73643 eventdev/crypto: fix enqueue count
4037+* 4b04134cbb eventdev/crypto: fix failed events
4038+* da73a2a0d1 eventdev/crypto: fix offset used while flushing events
4039+* f442c04001 eventdev/crypto: fix overflow in circular buffer
4040+* 5a0f64d84b net/cnxk: fix configuring large Rx/Tx queues
4041+* 59ceaa72d5 common/cnxk: fix part number for CN10K
4042+* 31a28a99fd net/ngbe: add spinlock protection on YT PHY
4043+* 5781638519 common/cnxk: fix RQ mask config for CN10KB chip
4044+* 3fe71706ab event/cnxk: fix stale data in workslot
4045+* 927cb43fe9 examples/l3fwd: fix port group mask with AltiVec
4046+* 0f044b6681 net/iavf: fix refine protocol header
4047+* 0b241667cc net/iavf: fix tainted scalar
4048+* b125c0e721 net/iavf: fix tainted scalar
4049+* cedb44dc87 common/mlx5: improve AES-XTS tweak capability check
4050+* 0fd1386c30 app/testpmd: cleanup cleanly from signal
4051+* f1d0993e03 app/testpmd: fix interactive mode on Windows
4052+* 7be74edb90 common/mlx5: use just sufficient barrier for Arm
4053+* 7bdf7a13ae app/testpmd: fix encap/decap size calculation
4054+* d2d7f0190b doc: fix code blocks in cryptodev guide
4055+* 7e7b6762ea eal: enhance NUMA affinity heuristic
4056+* e97738919c net/nfp: fix Tx descriptor free logic of NFD3
4057+* ebc352c77f net/mlx5: fix matcher layout size calculation
4058+* ad4d51d277 net/mlx5: forbid duplicated tag index in pattern template
4059+* 6df1bc6b3b mempool/cnxk: avoid hang when counting batch allocs
4060+* 772e30281a common/cnxk: fix CPT backpressure disable on LBK
4061+* b37fe88a2c event/cnxk: fix LMTST write for single event mode
4062+* 92a16af450 net/iavf: fix virtchnl command called in interrupt
4063+* 12011b11a3 net/txgbe: adapt to MNG veto bit setting
4064+* 21f702d556 net/ngbe: fix link status in no LSC mode
4065+* 659cfce01e net/ngbe: remove redundant codes
4066+* 6fd3a7a618 net/ice/base: fix internal etype in switch filter
4067+* 9749dffe23 net/ice: fix MAC type of E822 and E823
4068+* 1c7a4d37e7 common/cnxk: fix mailbox timeout due to deadlock
4069+* 5e170dd8b6 net/txgbe: fix blocking system events
4070+* 37ca457d3f common/mlx5: fix obtaining IB device in LAG mode
4071+* 8c047e823a net/bnxt: fix multi-root card support
4072+* 8b4618a7b4 crypto/qat: fix null algorithm digest placement
4073+* 9a518054b5 Ahmad examples/l3fwd: fix duplicate expression for default nexthop
4074+* e6479f009f net/mlx5: fix MPRQ stride size for headroom
4075+
4076+21.11.6 Release Notes
4077+---------------------
4078+
4079+
4080+21.11.6 Fixes
4081+~~~~~~~~~~~~~
4082+
4083+* app/bbdev: fix link with NXP LA12XX
4084+* app/dumpcap: allow multiple invocations
4085+* app/dumpcap: fix mbuf pool ring type
4086+* app/pipeline: add sigint handler
4087+* app/procinfo: adjust format of RSS info
4088+* app/procinfo: fix RSS info
4089+* app/procinfo: remove unnecessary rte_malloc
4090+* app/testpmd: add explicit check for tunnel TSO
4091+* app/testpmd: fix help string
4092+* app/testpmd: fix primary process not polling all queues
4093+* app/testpmd: fix tunnel TSO capability check
4094+* app/testpmd: fix tunnel TSO configuration
4095+* app/testpmd: remove useless check in TSO command
4096+* baseband/acc: fix ACC100 HARQ input alignment
4097+* bus/dpaa: fix build with asserts for GCC 13
4098+* bus/pci: fix device ID log
4099+* common/cnxk: fix aura disable handling
4100+* common/cnxk: fix default flow action setting
4101+* common/cnxk: fix different size bit operations
4102+* common/cnxk: fix DPI memzone name
4103+* common/cnxk: fix pool buffer size in opaque mode
4104+* common/cnxk: fix xstats for different packet sizes
4105+* common/cnxk: remove dead Meson code
4106+* common/mlx5: fix controller index parsing
4107+* config/arm: fix aarch32 build with GCC 13
4108+* cryptodev: add missing doc for security context
4109+* crypto/ipsec_mb: add dependency check for cross build
4110+* crypto/nitrox: fix panic with high number of segments
4111+* crypto/qat: fix NULL algorithm digest placement
4112+* crypto/qat: fix raw API null algorithm digest
4113+* dma/cnxk: fix device state
4114+* doc: fix hns3 build option about max queue number
4115+* doc: fix RSS flow description in hns3 guide
4116+* doc: fix some ordered lists
4117+* doc: remove number of commands in vDPA guide
4118+* doc: remove restriction on ixgbe vector support
4119+* doc: replace code blocks with includes in security guide
4120+* doc: update features in hns3 guide
4121+* doc: update versions recommendations for i40e and ice
4122+* eal/unix: fix firmware reading with external xz helper
4123+* eal/windows: fix build with recent MinGW
4124+* ethdev: account for smaller MTU when setting default
4125+* ethdev: fix 32-bit build with GCC 13
4126+* ethdev: fix ESP packet type description
4127+* ethdev: fix function name in comment
4128+* event/cnxk: fix getwork mode devargs parsing
4129+* event/cnxk: fix return values for capability API
4130+* eventdev/eth_rx: fix timestamp field register in mbuf
4131+* eventdev: fix device pointer for vdev-based devices
4132+* eventdev: fix missing driver names in info struct
4133+* eventdev: fix symbol export for port maintenance
4134+* event/dlb2: fix disable PASID
4135+* event/dlb2: fix missing queue ordering capability flag
4136+* event/dlb2: fix name check in self-test
4137+* event/sw: fix ordering corruption with op release
4138+* event/sw: remove obsolete comment
4139+* examples/ethtool: fix pause configuration
4140+* examples/ipsec-secgw: fix partial overflow
4141+* fib6: fix adding default route as first route
4142+* fib: fix adding default route overwriting entire table
4143+* hash: align SSE lookup to scalar implementation
4144+* malloc: remove return from void functions
4145+* mempool: clarify enqueue/dequeue ops documentation
4146+* mempool/cnxk: fix free from non-EAL threads
4147+* mempool: fix default ops for an empty mempool
4148+* mempool: fix get function documentation
4149+* meter: fix RFC4115 trTCM API Doxygen
4150+* net/af_packet: fix Rx and Tx queue state
4151+* net/af_xdp: fix Rx and Tx queue state
4152+* net/af_xdp: make compatible with libbpf 0.8.0
4153+* net/avp: fix Rx and Tx queue state
4154+* net/bnx2x: fix Rx and Tx queue state
4155+* net/bnxt: fix Rx and Tx queue state
4156+* net/bonding: fix header for C++
4157+* net/bonding: fix link status callback stop
4158+* net/bonding: fix possible overrun
4159+* net/bonding: fix Rx and Tx queue state
4160+* net/cnxk: fix uninitialized variable
4161+* net/cnxk: fix uninitialized variable
4162+* net/cxgbe: fix Rx and Tx queue state
4163+* net/dpaa2: fix Rx and Tx queue state
4164+* net/dpaa: fix Rx and Tx queue state
4165+* net/e1000: fix Rx and Tx queue state
4166+* net/ena: fix Rx and Tx queue state
4167+* net/enetc: fix Rx and Tx queue state
4168+* net/enic: avoid extra unlock in MTU set
4169+* net/enic: fix Rx and Tx queue state
4170+* net/hinic: fix Rx and Tx queue state
4171+* net/hns3: extract common function to obtain revision ID
4172+* net/hns3: fix crash for NEON and SVE
4173+* net/hns3: fix double stats for IMP and global reset
4174+* net/hns3: fix error code for multicast resource
4175+* net/hns3: fix flushing multicast MAC address
4176+* net/hns3: fix ignored reset event
4177+* net/hns3: fix IMP or global reset
4178+* net/hns3: fix LRO offload to report
4179+* net/hns3: fix mailbox sync
4180+* net/hns3: fix multiple reset detected log
4181+* net/hns3: fix order in NEON Rx
4182+* net/hns3: fix reset event status
4183+* net/hns3: fix setting DCB capability
4184+* net/hns3: fix some error logs
4185+* net/hns3: fix some return values
4186+* net/hns3: fix traffic management thread safety
4187+* net/hns3: fix typo in function name
4188+* net/hns3: fix unchecked Rx free threshold
4189+* net/hns3: fix uninitialized hash algo value
4190+* net/hns3: fix VF default MAC modified when set failed
4191+* net/hns3: fix VF reset handler interruption
4192+* net/hns3: keep set/get algo key functions local
4193+* net/hns3: refactor interrupt state query
4194+* net/hns3: remove reset log in secondary
4195+* net/i40e: fix buffer leak on Rx reconfiguration
4196+* net/i40e: fix FDIR queue receives broadcast packets
4197+* net/iavf: fix checksum offloading
4198+* net/iavf: fix ESN session update
4199+* net/iavf: fix indent in Tx path
4200+* net/iavf: fix port stats clearing
4201+* net/iavf: fix TSO with big segments
4202+* net/iavf: fix Tx debug
4203+* net/iavf: fix Tx offload flags check
4204+* net/iavf: fix Tx offload mask
4205+* net/iavf: fix Tx preparation
4206+* net/iavf: fix VLAN offload strip flag
4207+* net/iavf: remove log from Tx prepare function
4208+* net/iavf: unregister interrupt handler before FD close
4209+* net/ice: fix crash on closing representor ports
4210+* net/ice: fix DCF port statistics
4211+* net/ice: fix initial link status
4212+* net/ice: fix L1 check interval
4213+* net/ice: fix TM configuration clearing
4214+* net/ice: fix TSO with big segments
4215+* net/ice: fix Tx preparation
4216+* net/ice: remove log from Tx prepare function
4217+* net/ice: write timestamp to first segment in scattered Rx
4218+* net/ipn3ke: fix Rx and Tx queue state
4219+* net/memif: fix Rx and Tx queue state
4220+* net/mlx4: fix Rx and Tx queue state
4221+* net/mlx5: fix decap action checking in sample flow
4222+* net/mlx5: fix E-Switch mirror flow rule validation
4223+* net/mlx5: fix hairpin queue states
4224+* net/mlx5: fix hairpin queue unbind
4225+* net/mlx5: fix leak in sysfs port name translation
4226+* net/mlx5: fix matcher layout size calculation
4227+* net/mlx5: fix MPRQ stride size to accommodate the headroom
4228+* net/mlx5: fix multi-segment Tx inline data length
4229+* net/mlx5: fix shared Rx queue list management
4230+* net/mlx5: fix use after free on Rx queue start
4231+* net/mlx5: fix validation of sample encap flow action
4232+* net/mlx5: zero UDP checksum over IPv4 in encapsulation
4233+* net/mvneta: fix Rx and Tx queue state
4234+* net/mvpp2: fix Rx and Tx queue state
4235+* net/netvsc: increase VSP response timeout to 60 seconds
4236+* net/nfp: fix DMA error after abnormal exit
4237+* net/nfp: fix link status interrupt
4238+* net/nfp: fix reconfigure logic in PF initialization
4239+* net/nfp: fix reconfigure logic in VF initialization
4240+* net/nfp: fix reconfigure logic of set MAC address
4241+* net/nfp: fix Tx descriptor free logic of NFD3
4242+* net/ngbe: check process type in close operation
4243+* net/ngbe: fix flow control
4244+* net/ngbe: fix Rx and Tx queue state
4245+* net/ngbe: keep link down after device close
4246+* net/ngbe: reconfigure MAC Rx when link update
4247+* net/null: fix Rx and Tx queue state
4248+* net/octeon_ep: fix Rx and Tx queue state
4249+* net/pfe: fix Rx and Tx queue state
4250+* net/ring: fix Rx and Tx queue state
4251+* net/sfc: account for data offset on Tx
4252+* net/sfc: add missing error code indication to MAE init path
4253+* net/sfc: fix Rx and Tx queue state
4254+* net/sfc: remove null dereference in log
4255+* net/sfc: set max Rx packet length for representors
4256+* net/softnic: fix Rx and Tx queue state
4257+* net/tap: fix IPv4 checksum offloading
4258+* net/tap: fix L4 checksum offloading
4259+* net/tap: fix RSS for fragmented packets
4260+* net/tap: use MAC address parse API instead of local parser
4261+* net/txgbe: add Tx queue maximum limit
4262+* net/txgbe: check process type in close operation
4263+* net/txgbe: fix GRE tunnel packet checksum
4264+* net/txgbe: fix out of bound access
4265+* net/txgbe: fix Rx and Tx queue state
4266+* net/txgbe: keep link down after device close
4267+* net/txgbe: reconfigure MAC Rx when link update
4268+* net/vhost: fix Rx and Tx queue state
4269+* net/virtio: fix descriptor addresses in 32-bit build
4270+* net/virtio: fix link state interrupt vector setting
4271+* net/virtio: fix missing next flag in Tx packed ring
4272+* net/virtio: fix Rx and Tx queue state
4273+* net/vmxnet3: fix Rx and Tx queue state
4274+* pdump: fix error number on IPC response
4275+* random: initialize state for unregistered non-EAL threads
4276+* rawdev: fix device class in log message
4277+* Revert "net/iavf: fix abnormal disable HW interrupt"
4278+* Revert "net/iavf: fix tunnel TSO path selection"
4279+* test/bbdev: assert failed test for queue configure
4280+* test/bbdev: fix Python script subprocess
4281+* test/bonding: add missing check
4282+* test/bonding: fix uninitialized RSS configuration
4283+* test/bonding: remove unreachable statement
4284+* test/crypto: fix IV in some vectors
4285+* test/crypto: fix typo in asym tests
4286+* test/crypto: skip some synchronous tests with CPU crypto
4287+* test/event: fix crypto null device creation
4288+* test/hash: fix creation error log
4289+* version: 21.11.6-rc1
4290+* vhost: fix check on virtqueue access in async registration
4291+* vhost: fix check on virtqueue access in in-flight getter
4292+* vhost: fix missing check on virtqueue access
4293+* vhost: fix missing lock protection in power monitor API
4294+* vhost: fix missing vring call check on virtqueue access
4295+
4296+21.11.6 Validation
4297+~~~~~~~~~~~~~~~~~~
4298+
4299+* `Red Hat(R) Testing <https://mails.dpdk.org/archives/stable/2023-December/046925.html>`__
4300+
4301+ * Platform
4302+
4303+ * RHEL 9
4304+ * Kernel 5.14
4305+ * Qemu 7.2
4306+ * X540-AT2 NIC(ixgbe, 10G)
4307+
4308+ * Functionality
4309+
4310+ * Guest with device assignment(PF) throughput testing(1G hugepage size)
4311+ * Guest with device assignment(PF) throughput testing(2M hugepage size)
4312+ * Guest with device assignment(VF) throughput testing
4313+ * PVP (host dpdk testpmd as vswitch) 1Q: throughput testing
4314+ * PVP vhost-user 2Q throughput testing
4315+ * PVP vhost-user 1Q cross numa node throughput testing
4316+ * Guest with vhost-user 2 queues throughput testing
4317+ * vhost-user reconnect with dpdk-client, qemu-server: qemu reconnect
4318+ * vhost-user reconnect with dpdk-client, qemu-server: ovs reconnect
4319+ * PVP 1Q live migration testing
4320+ * PVP 1Q cross numa node live migration testing
4321+ * Guest with ovs+dpdk+vhost-user 1Q live migration testing
4322+ * Guest with ovs+dpdk+vhost-user 1Q live migration testing (2M)
4323+ * Guest with ovs+dpdk+vhost-user 2Q live migration testing
4324+ * Guest with ovs+dpdk+vhost-user 4Q live migration testing
4325+ * Host PF + DPDK testing
4326+ * Host VF + DPDK testing
4327+
4328+
4329+* `Nvidia(R) Testing <https://mails.dpdk.org/archives/stable/2024-January/046939.html>`__
4330+
4331+ * Basic functionality with testpmd
4332+
4333+ * Tx/Rx
4334+ * xstats
4335+ * Timestamps
4336+ * Link status
4337+ * RTE flow
4338+ * RSS
4339+ * VLAN filtering, stripping and insertion
4340+ * Checksum/TSO
4341+ * ptype
4342+ * link_status_interrupt example application
4343+ * l3fwd-power example application
4344+ * Multi-process example applications
4345+ * Hardware LRO tests
4346+ * Regex application
4347+ * Buffer Split
4348+ * Tx scheduling
4349+
4350+ * Build tests
4351+ * ConnectX-6 Dx
4352+ * ConnectX-7
4353+ * BlueField-2
4354+
4355+
4356+* `Intel(R) Testing <https://mails.dpdk.org/archives/stable/2024-January/047001.html>`__
4357+
4358+ * Basic Intel(R) NIC(ixgbe, i40e and ice) testing
4359+
4360+ * PF (i40e, ixgbe)
4361+ * VF (i40e, ixgbe)
4362+ * PF/VF (ice)
4363+ * Compile Testing
4364+ * Intel NIC single core/NIC performance
4365+ * IPsec
4366+
4367+ * Basic cryptodev and virtio testing
4368+
4369+ * vhost/virtio basic loopback, PVP and performance test
4370+ * cryptodev Function/Performance
4371+
4372+21.11.6 Known Issues
4373+~~~~~~~~~~~~~~~~~~~~
4374+
4375+* DPDK 21.11.6 contains fixes up to DPDK 23.11
4376+* Issues identified/fixed in DPDK main branch after DPDK 23.11 may be present in DPDK 21.11.6
4377+
4378+21.11.6 Fixes skipped and status unresolved
4379+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4380+
4381+* c5b531d6ee app/crypto-perf: fix session freeing
4382+* 61b52e7edb app/test: fix reference to master in bonding test
4383+* 0fd1386c30 app/testpmd: cleanup cleanly from signal
4384+* a996cd04ae app/testpmd: fix early exit from signal
4385+* 7bdf7a13ae app/testpmd: fix encap/decap size calculation
4386+* f1d0993e03 app/testpmd: fix interactive mode on Windows
4387+* 5d8c1f6253 common/cnxk: check error in MAC address set
4388+* a6f639e079 common/cnxk: fix BP threshold calculation
4389+* 772e30281a common/cnxk: fix CPT backpressure disable on LBK
4390+* 2e9863fbb6 common/cnxk: fix different size bit operations
4391+* 4f6f36ce23 common/cnxk: fix leak in error path
4392+* 1c7a4d37e7 common/cnxk: fix mailbox timeout due to deadlock
4393+* 59ceaa72d5 common/cnxk: fix part number for CN10K
4394+* 5781638519 common/cnxk: fix RQ mask config for CN10KB chip
4395+* 56fa6f92e9 common/cnxk: fix RSS key configuration
4396+* 37ca457d3f common/mlx5: fix obtaining IB device in LAG mode
4397+* cedb44dc87 common/mlx5: improve AES-XTS tweak capability check
4398+* 7be74edb90 common/mlx5: use just sufficient barrier for Arm
4399+* 9d91c3047d crypto/openssl: fix memory leaks in asym operations
4400+* 3dd3115078 dma/cnxk: fix chunk buffer failure return code
4401+* ba39a261a7 dma/cnxk: fix completion ring tail wrap
4402+* 95a955e3e0 dma/cnxk: fix device reconfigure
4403+* 694e8e643d event/cnxk: fix CASP usage for clang
4404+* b37fe88a2c event/cnxk: fix LMTST write for single event mode
4405+* 3fe71706ab event/cnxk: fix stale data in workslot
4406+* 04dac73643 eventdev/crypto: fix enqueue count
4407+* 4b04134cbb eventdev/crypto: fix failed events
4408+* da73a2a0d1 eventdev/crypto: fix offset used while flushing events
4409+* f442c04001 eventdev/crypto: fix overflow in circular buffer
4410+* 9a518054b5 examples/l3fwd: fix duplicate expression for default nexthop
4411+* 927cb43fe9 examples/l3fwd: fix port group mask with AltiVec
4412+* 6df1bc6b3b mempool/cnxk: avoid hang when counting batch allocs
4413+* b3ddd649ad mempool/cnxk: fix alloc from non-EAL threads
4414+* 0236016c02 net/axgbe: fix Rx and Tx queue state
4415+* 5a0f64d84b net/cnxk: fix configuring large Rx/Tx queues
4416+* 7752f14026 net/cnxk: fix Rx flush on CN10k
4417+* 0f044b6681 net/iavf: fix refine protocol header
4418+* 0b241667cc net/iavf: fix tainted scalar
4419+* b125c0e721 net/iavf: fix tainted scalar
4420+* 92a16af450 net/iavf: fix virtchnl command called in interrupt
4421+* 6fd3a7a618 net/ice/base: fix internal etype in switch filter
4422+* 9749dffe23 net/ice: fix MAC type of E822 and E823
4423+* 2ece3b7186 net/mlx5: fix flow workspace double free in Windows
4424+* c46216e77a net/nfp: fix Rx and Tx queue state
4425+* a74c5001e9 net/ngbe: add proper memory barriers in Rx
4426+* 31a28a99fd net/ngbe: add spinlock protection on YT PHY
4427+* 21f702d556 net/ngbe: fix link status in no LSC mode
4428+* 659cfce01e net/ngbe: remove redundant codes
4429+* 12011b11a3 net/txgbe: adapt to MNG veto bit setting
4430+* 5e170dd8b6 net/txgbe: fix blocking system events
4431+* 166591931b pcapng: modify timestamp calculation
4432+* 63bf81a617 test: fix named test macro
4433diff --git a/doc/guides/sample_app_ug/vdpa.rst b/doc/guides/sample_app_ug/vdpa.rst
4434index cb9c4f2..51e69fc 100644
4435--- a/doc/guides/sample_app_ug/vdpa.rst
4436+++ b/doc/guides/sample_app_ug/vdpa.rst
4437@@ -38,8 +38,7 @@ where
4438 * --iface specifies the path prefix of the UNIX domain socket file, e.g.
4439 /tmp/vhost-user-, then the socket files will be named as /tmp/vhost-user-<n>
4440 (n starts from 0).
4441-* --interactive means run the vdpa sample in interactive mode, currently 4
4442- internal cmds are supported:
4443+* --interactive means run the vDPA sample in interactive mode:
4444
4445 1. help: show help message
4446 2. list: list all available vdpa devices
4447diff --git a/doc/guides/tools/cryptoperf.rst b/doc/guides/tools/cryptoperf.rst
4448index ce93483..1e63638 100644
4449--- a/doc/guides/tools/cryptoperf.rst
4450+++ b/doc/guides/tools/cryptoperf.rst
4451@@ -233,7 +233,6 @@ The following are the application command-line options:
4452 Set authentication algorithm name, where ``name`` is one
4453 of the following::
4454
4455- 3des-cbc
4456 aes-cbc-mac
4457 aes-cmac
4458 aes-gmac
4459diff --git a/drivers/baseband/acc100/rte_acc100_pmd.c b/drivers/baseband/acc100/rte_acc100_pmd.c
4460index 5ac2f96..d84a883 100644
4461--- a/drivers/baseband/acc100/rte_acc100_pmd.c
4462+++ b/drivers/baseband/acc100/rte_acc100_pmd.c
4463@@ -1375,7 +1375,7 @@ acc100_fcw_ld_fill(struct rte_bbdev_dec_op *op, struct acc100_fcw_ld *fcw,
4464 - op->ldpc_dec.n_filler);
4465
4466 /* Alignment on next 64B - Already enforced from HC output */
4467- harq_in_length = RTE_ALIGN_FLOOR(harq_in_length, ACC100_HARQ_ALIGN_64B);
4468+ harq_in_length = RTE_ALIGN_CEIL(harq_in_length, ACC100_HARQ_ALIGN_64B);
4469
4470 /* Stronger alignment requirement when in decompression mode */
4471 if (fcw->hcin_decomp_mode > 0)
4472diff --git a/drivers/baseband/fpga_5gnr_fec/rte_fpga_5gnr_fec.c b/drivers/baseband/fpga_5gnr_fec/rte_fpga_5gnr_fec.c
4473index 15d23d6..6931884 100644
4474--- a/drivers/baseband/fpga_5gnr_fec/rte_fpga_5gnr_fec.c
4475+++ b/drivers/baseband/fpga_5gnr_fec/rte_fpga_5gnr_fec.c
4476@@ -564,17 +564,21 @@ static int
4477 fpga_queue_start(struct rte_bbdev *dev, uint16_t queue_id)
4478 {
4479 struct fpga_5gnr_fec_device *d = dev->data->dev_private;
4480+ struct fpga_queue *q = dev->data->queues[queue_id].queue_private;
4481+ uint32_t offset = FPGA_5GNR_FEC_RING_CTRL_REGS +
4482+ (sizeof(struct fpga_ring_ctrl_reg) * q->q_idx);
4483+ uint8_t enable = 0x01;
4484+ uint16_t zero = 0x0000;
4485 #ifdef RTE_LIBRTE_BBDEV_DEBUG
4486 if (d == NULL) {
4487 rte_bbdev_log(ERR, "Invalid device pointer");
4488 return -1;
4489 }
4490 #endif
4491- struct fpga_queue *q = dev->data->queues[queue_id].queue_private;
4492- uint32_t offset = FPGA_5GNR_FEC_RING_CTRL_REGS +
4493- (sizeof(struct fpga_ring_ctrl_reg) * q->q_idx);
4494- uint8_t enable = 0x01;
4495- uint16_t zero = 0x0000;
4496+ if (dev->data->queues[queue_id].queue_private == NULL) {
4497+ rte_bbdev_log(ERR, "Cannot start invalid queue %d", queue_id);
4498+ return -1;
4499+ }
4500
4501 /* Clear queue head and tail variables */
4502 q->tail = q->head_free_desc = 0;
4503@@ -879,9 +883,11 @@ check_desc_error(uint32_t error_code) {
4504 static inline uint16_t
4505 get_k0(uint16_t n_cb, uint16_t z_c, uint8_t bg, uint8_t rv_index)
4506 {
4507+ uint16_t n = (bg == 1 ? N_ZC_1 : N_ZC_2) * z_c;
4508 if (rv_index == 0)
4509 return 0;
4510- uint16_t n = (bg == 1 ? N_ZC_1 : N_ZC_2) * z_c;
4511+ if (z_c == 0)
4512+ return 0;
4513 if (n_cb == n) {
4514 if (rv_index == 1)
4515 return (bg == 1 ? K0_1_1 : K0_1_2) * z_c;
4516diff --git a/drivers/bus/dpaa/base/qbman/qman.c b/drivers/bus/dpaa/base/qbman/qman.c
4517index 447c091..aa8da96 100644
4518--- a/drivers/bus/dpaa/base/qbman/qman.c
4519+++ b/drivers/bus/dpaa/base/qbman/qman.c
4520@@ -1,7 +1,7 @@
4521 /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
4522 *
4523 * Copyright 2008-2016 Freescale Semiconductor Inc.
4524- * Copyright 2017,2019 NXP
4525+ * Copyright 2017,2019-2023 NXP
4526 *
4527 */
4528
4529@@ -897,7 +897,7 @@ mr_loop:
4530 /* Lookup in the retirement table */
4531 fq = table_find_fq(p,
4532 be32_to_cpu(msg->fq.fqid));
4533- DPAA_BUG_ON(!fq);
4534+ DPAA_BUG_ON(fq != NULL);
4535 fq_state_change(p, fq, &swapped_msg, verb);
4536 if (fq->cb.fqs)
4537 fq->cb.fqs(p, fq, &swapped_msg);
4538@@ -909,6 +909,7 @@ mr_loop:
4539 #else
4540 fq = (void *)(uintptr_t)msg->fq.contextB;
4541 #endif
4542+ DPAA_BUG_ON(fq != NULL);
4543 fq_state_change(p, fq, msg, verb);
4544 if (fq->cb.fqs)
4545 fq->cb.fqs(p, fq, &swapped_msg);
4546diff --git a/drivers/bus/pci/linux/pci_vfio.c b/drivers/bus/pci/linux/pci_vfio.c
4547index cd0d0b1..822aa41 100644
4548--- a/drivers/bus/pci/linux/pci_vfio.c
4549+++ b/drivers/bus/pci/linux/pci_vfio.c
4550@@ -2,6 +2,7 @@
4551 * Copyright(c) 2010-2014 Intel Corporation
4552 */
4553
4554+#include <unistd.h>
4555 #include <string.h>
4556 #include <fcntl.h>
4557 #include <linux/pci_regs.h>
4558diff --git a/drivers/bus/pci/pci_common.c b/drivers/bus/pci/pci_common.c
4559index def372b..6ff136f 100644
4560--- a/drivers/bus/pci/pci_common.c
4561+++ b/drivers/bus/pci/pci_common.c
4562@@ -262,7 +262,7 @@ rte_pci_probe_one_driver(struct rte_pci_driver *dr,
4563 }
4564 }
4565
4566- RTE_LOG(INFO, EAL, "Probe PCI driver: %s (%x:%x) device: "PCI_PRI_FMT" (socket %i)\n",
4567+ RTE_LOG(INFO, EAL, "Probe PCI driver: %s (%x:%04x) device: "PCI_PRI_FMT" (socket %i)\n",
4568 dr->driver.name, dev->id.vendor_id, dev->id.device_id,
4569 loc->domain, loc->bus, loc->devid, loc->function,
4570 dev->device.numa_node);
4571diff --git a/drivers/common/cnxk/cnxk_security.c b/drivers/common/cnxk/cnxk_security.c
4572index 787138b..7f4f0a6 100644
4573--- a/drivers/common/cnxk/cnxk_security.c
4574+++ b/drivers/common/cnxk/cnxk_security.c
4575@@ -201,6 +201,14 @@ ot_ipsec_inb_ctx_size(struct roc_ot_ipsec_inb_sa *sa)
4576 return size;
4577 }
4578
4579+static void
4580+ot_ipsec_update_ipv6_addr_endianness(uint64_t *addr)
4581+{
4582+ *addr = rte_be_to_cpu_64(*addr);
4583+ addr++;
4584+ *addr = rte_be_to_cpu_64(*addr);
4585+}
4586+
4587 static int
4588 ot_ipsec_inb_tunnel_hdr_fill(struct roc_ot_ipsec_inb_sa *sa,
4589 struct rte_security_ipsec_xform *ipsec_xfrm)
4590@@ -237,6 +245,10 @@ ot_ipsec_inb_tunnel_hdr_fill(struct roc_ot_ipsec_inb_sa *sa,
4591 memcpy(&sa->outer_hdr.ipv6.dst_addr, &tunnel->ipv6.dst_addr,
4592 sizeof(struct in6_addr));
4593
4594+ /* IP Source and Dest are in LE/CPU endian */
4595+ ot_ipsec_update_ipv6_addr_endianness((uint64_t *)&sa->outer_hdr.ipv6.src_addr);
4596+ ot_ipsec_update_ipv6_addr_endianness((uint64_t *)&sa->outer_hdr.ipv6.dst_addr);
4597+
4598 break;
4599 default:
4600 return -EINVAL;
4601@@ -421,6 +433,10 @@ cnxk_ot_ipsec_outb_sa_fill(struct roc_ot_ipsec_outb_sa *sa,
4602 memcpy(&sa->outer_hdr.ipv6.dst_addr, &tunnel->ipv6.dst_addr,
4603 sizeof(struct in6_addr));
4604
4605+ /* IP Source and Dest are in LE/CPU endian */
4606+ ot_ipsec_update_ipv6_addr_endianness((uint64_t *)&sa->outer_hdr.ipv6.src_addr);
4607+ ot_ipsec_update_ipv6_addr_endianness((uint64_t *)&sa->outer_hdr.ipv6.dst_addr);
4608+
4609 /* Outer header flow label source */
4610 if (!ipsec_xfrm->options.copy_flabel) {
4611 sa->w2.s.ipv4_df_src_or_ipv6_flw_lbl_src =
4612diff --git a/drivers/common/cnxk/cnxk_security_ar.h b/drivers/common/cnxk/cnxk_security_ar.h
4613index 3ec4c29..b4c51bd 100644
4614--- a/drivers/common/cnxk/cnxk_security_ar.h
4615+++ b/drivers/common/cnxk/cnxk_security_ar.h
4616@@ -17,7 +17,7 @@
4617 BITS_PER_LONG_LONG)
4618
4619 #define WORD_SHIFT 6
4620-#define WORD_SIZE (1 << WORD_SHIFT)
4621+#define WORD_SIZE (1ULL << WORD_SHIFT)
4622 #define WORD_MASK (WORD_SIZE - 1)
4623
4624 #define IPSEC_ANTI_REPLAY_FAILED (-1)
4625diff --git a/drivers/common/cnxk/hw/nix.h b/drivers/common/cnxk/hw/nix.h
4626index dd2ebec..8231c94 100644
4627--- a/drivers/common/cnxk/hw/nix.h
4628+++ b/drivers/common/cnxk/hw/nix.h
4629@@ -616,6 +616,7 @@
4630 #define NIX_RX_ACTIONOP_RSS (0x4ull)
4631 #define NIX_RX_ACTIONOP_PF_FUNC_DROP (0x5ull)
4632 #define NIX_RX_ACTIONOP_MIRROR (0x6ull)
4633+#define NIX_RX_ACTIONOP_DEFAULT (0xfull)
4634
4635 #define NIX_RX_VTAGACTION_VTAG0_RELPTR (0x0ull)
4636 #define NIX_RX_VTAGACTION_VTAG1_RELPTR (0x4ull)
4637diff --git a/drivers/common/cnxk/meson.build b/drivers/common/cnxk/meson.build
4638index 4928f7e..9e7ccd2 100644
4639--- a/drivers/common/cnxk/meson.build
4640+++ b/drivers/common/cnxk/meson.build
4641@@ -8,7 +8,6 @@ if not is_linux or not dpdk_conf.get('RTE_ARCH_64')
4642 subdir_done()
4643 endif
4644
4645-config_flag_fmt = 'RTE_LIBRTE_@0@_COMMON'
4646 deps = ['eal', 'pci', 'bus_pci', 'mbuf', 'security']
4647 sources = files(
4648 'roc_ae.c',
4649diff --git a/drivers/common/cnxk/roc_dev.c b/drivers/common/cnxk/roc_dev.c
4650index 9a86969..0a9c722 100644
4651--- a/drivers/common/cnxk/roc_dev.c
4652+++ b/drivers/common/cnxk/roc_dev.c
4653@@ -951,6 +951,7 @@ dev_vf_hwcap_update(struct plt_pci_device *pci_dev, struct dev *dev)
4654 case PCI_DEVID_CNXK_RVU_AF_VF:
4655 case PCI_DEVID_CNXK_RVU_VF:
4656 case PCI_DEVID_CNXK_RVU_SDP_VF:
4657+ case PCI_DEVID_CNXK_RVU_NIX_INL_VF:
4658 dev->hwcap |= DEV_HWCAP_F_VF;
4659 break;
4660 }
4661diff --git a/drivers/common/cnxk/roc_dpi.c b/drivers/common/cnxk/roc_dpi.c
4662index 23b2cc4..1666fe5 100644
4663--- a/drivers/common/cnxk/roc_dpi.c
4664+++ b/drivers/common/cnxk/roc_dpi.c
4665@@ -81,10 +81,10 @@ roc_dpi_configure(struct roc_dpi *roc_dpi)
4666 return rc;
4667 }
4668
4669- snprintf(name, sizeof(name), "dpimem%d", roc_dpi->vfid);
4670+ snprintf(name, sizeof(name), "dpimem%d:%d:%d:%d", pci_dev->addr.domain, pci_dev->addr.bus,
4671+ pci_dev->addr.devid, pci_dev->addr.function);
4672 buflen = DPI_CMD_QUEUE_SIZE * DPI_CMD_QUEUE_BUFS;
4673- dpi_mz = plt_memzone_reserve_aligned(name, buflen, 0,
4674- DPI_CMD_QUEUE_SIZE);
4675+ dpi_mz = plt_memzone_reserve_aligned(name, buflen, 0, DPI_CMD_QUEUE_SIZE);
4676 if (dpi_mz == NULL) {
4677 plt_err("dpi memzone reserve failed");
4678 rc = -ENOMEM;
4679diff --git a/drivers/common/cnxk/roc_mbox.h b/drivers/common/cnxk/roc_mbox.h
4680index 9a8ae6b..564bf29 100644
4681--- a/drivers/common/cnxk/roc_mbox.h
4682+++ b/drivers/common/cnxk/roc_mbox.h
4683@@ -453,7 +453,7 @@ struct lmtst_tbl_setup_req {
4684
4685 struct cgx_stats_rsp {
4686 struct mbox_msghdr hdr;
4687-#define CGX_RX_STATS_COUNT 13
4688+#define CGX_RX_STATS_COUNT 9
4689 #define CGX_TX_STATS_COUNT 18
4690 uint64_t __io rx_stats[CGX_RX_STATS_COUNT];
4691 uint64_t __io tx_stats[CGX_TX_STATS_COUNT];
4692diff --git a/drivers/common/cnxk/roc_npa.c b/drivers/common/cnxk/roc_npa.c
4693index efcb758..ddd66c6 100644
4694--- a/drivers/common/cnxk/roc_npa.c
4695+++ b/drivers/common/cnxk/roc_npa.c
4696@@ -115,6 +115,8 @@ npa_aura_pool_fini(struct mbox *mbox, uint32_t aura_id, uint64_t aura_handle)
4697 aura_req->op = NPA_AQ_INSTOP_WRITE;
4698 aura_req->aura.ena = 0;
4699 aura_req->aura_mask.ena = ~aura_req->aura_mask.ena;
4700+ aura_req->aura.bp_ena = 0;
4701+ aura_req->aura_mask.bp_ena = ~aura_req->aura_mask.bp_ena;
4702
4703 rc = mbox_process(mbox);
4704 if (rc < 0)
4705@@ -305,7 +307,11 @@ npa_aura_pool_pair_alloc(struct npa_lf *lf, const uint32_t block_size,
4706 /* Update pool fields */
4707 pool->stack_base = mz->iova;
4708 pool->ena = 1;
4709- pool->buf_size = block_size / ROC_ALIGN;
4710+ /* In opaque mode buffer size must be 0 */
4711+ if (!pool->nat_align)
4712+ pool->buf_size = 0;
4713+ else
4714+ pool->buf_size = block_size / ROC_ALIGN;
4715 pool->stack_max_pages = stack_size;
4716 pool->shift = plt_log2_u32(block_count);
4717 pool->shift = pool->shift < 8 ? 0 : pool->shift - 8;
4718diff --git a/drivers/common/cnxk/roc_npc.c b/drivers/common/cnxk/roc_npc.c
4719index 5ee7ff5..9422a42 100644
4720--- a/drivers/common/cnxk/roc_npc.c
4721+++ b/drivers/common/cnxk/roc_npc.c
4722@@ -516,11 +516,15 @@ npc_parse_actions(struct roc_npc *roc_npc, const struct roc_npc_attr *attr,
4723 if (req_act == ROC_NPC_ACTION_TYPE_VLAN_STRIP) {
4724 /* Only VLAN action is provided */
4725 flow->npc_action = NIX_RX_ACTIONOP_UCAST;
4726- } else if (req_act &
4727- (ROC_NPC_ACTION_TYPE_PF | ROC_NPC_ACTION_TYPE_VF)) {
4728- flow->npc_action = NIX_RX_ACTIONOP_UCAST;
4729- if (req_act & ROC_NPC_ACTION_TYPE_QUEUE)
4730- flow->npc_action |= (uint64_t)rq << 20;
4731+ } else if (req_act & (ROC_NPC_ACTION_TYPE_PF | ROC_NPC_ACTION_TYPE_VF)) {
4732+ /* Check if any other action is set */
4733+ if ((req_act == ROC_NPC_ACTION_TYPE_PF) || (req_act == ROC_NPC_ACTION_TYPE_VF)) {
4734+ flow->npc_action = NIX_RX_ACTIONOP_DEFAULT;
4735+ } else {
4736+ flow->npc_action = NIX_RX_ACTIONOP_UCAST;
4737+ if (req_act & ROC_NPC_ACTION_TYPE_QUEUE)
4738+ flow->npc_action |= (uint64_t)rq << 20;
4739+ }
4740 } else if (req_act & ROC_NPC_ACTION_TYPE_DROP) {
4741 flow->npc_action = NIX_RX_ACTIONOP_DROP;
4742 } else if (req_act & ROC_NPC_ACTION_TYPE_QUEUE) {
4743@@ -531,8 +535,7 @@ npc_parse_actions(struct roc_npc *roc_npc, const struct roc_npc_attr *attr,
4744 } else if (req_act & ROC_NPC_ACTION_TYPE_SEC) {
4745 flow->npc_action = NIX_RX_ACTIONOP_UCAST_IPSEC;
4746 flow->npc_action |= (uint64_t)rq << 20;
4747- } else if (req_act &
4748- (ROC_NPC_ACTION_TYPE_FLAG | ROC_NPC_ACTION_TYPE_MARK)) {
4749+ } else if (req_act & (ROC_NPC_ACTION_TYPE_FLAG | ROC_NPC_ACTION_TYPE_MARK)) {
4750 flow->npc_action = NIX_RX_ACTIONOP_UCAST;
4751 } else if (req_act & ROC_NPC_ACTION_TYPE_COUNT) {
4752 /* Keep ROC_NPC_ACTION_TYPE_COUNT_ACT always at the end
4753diff --git a/drivers/common/cnxk/roc_npc_mcam_dump.c b/drivers/common/cnxk/roc_npc_mcam_dump.c
4754index 51305b4..1ba3d8f 100644
4755--- a/drivers/common/cnxk/roc_npc_mcam_dump.c
4756+++ b/drivers/common/cnxk/roc_npc_mcam_dump.c
4757@@ -442,6 +442,10 @@ npc_flow_dump_rx_action(FILE *file, uint64_t npc_action)
4758 plt_strlcpy(index_name, "Multicast/mirror table index",
4759 NPC_MAX_FIELD_NAME_SIZE);
4760 break;
4761+ case NIX_RX_ACTIONOP_DEFAULT:
4762+ fprintf(file, "NIX_RX_ACTIONOP_DEFAULT (%" PRIu64 ")\n",
4763+ (uint64_t)NIX_RX_ACTIONOP_DEFAULT);
4764+ break;
4765 default:
4766 plt_err("Unknown NIX_RX_ACTIONOP found");
4767 return;
4768diff --git a/drivers/common/iavf/iavf_common.c b/drivers/common/iavf/iavf_common.c
4769index 855a0ab..dc7662b 100644
4770--- a/drivers/common/iavf/iavf_common.c
4771+++ b/drivers/common/iavf/iavf_common.c
4772@@ -27,6 +27,8 @@ enum iavf_status iavf_set_mac_type(struct iavf_hw *hw)
4773 break;
4774 case IAVF_DEV_ID_VF:
4775 case IAVF_DEV_ID_VF_HV:
4776+ hw->mac.type = IAVF_MAC_XL710;
4777+ break;
4778 case IAVF_DEV_ID_ADAPTIVE_VF:
4779 hw->mac.type = IAVF_MAC_VF;
4780 break;
4781diff --git a/drivers/common/mlx5/linux/meson.build b/drivers/common/mlx5/linux/meson.build
4782index 4c7b53b..8be8285 100644
4783--- a/drivers/common/mlx5/linux/meson.build
4784+++ b/drivers/common/mlx5/linux/meson.build
4785@@ -202,6 +202,8 @@ has_sym_args = [
4786 'mlx5dv_dr_domain_allow_duplicate_rules' ],
4787 [ 'HAVE_MLX5_IBV_REG_MR_IOVA', 'infiniband/verbs.h',
4788 'ibv_reg_mr_iova' ],
4789+ [ 'HAVE_IBV_FORK_UNNEEDED', 'infiniband/verbs.h',
4790+ 'ibv_is_fork_initialized'],
4791 ]
4792 config = configuration_data()
4793 foreach arg:has_sym_args
4794diff --git a/drivers/common/mlx5/linux/mlx5_common_os.c b/drivers/common/mlx5/linux/mlx5_common_os.c
4795index eeb583a..9fd6c1b 100644
4796--- a/drivers/common/mlx5/linux/mlx5_common_os.c
4797+++ b/drivers/common/mlx5/linux/mlx5_common_os.c
4798@@ -95,10 +95,11 @@ mlx5_translate_port_name(const char *port_name_in,
4799 char ctrl = 0, pf_c1, pf_c2, vf_c1, vf_c2, eol;
4800 char *end;
4801 int sc_items;
4802+ int32_t ctrl_num = -1;
4803
4804- sc_items = sscanf(port_name_in, "%c%d",
4805- &ctrl, &port_info_out->ctrl_num);
4806+ sc_items = sscanf(port_name_in, "%c%d", &ctrl, &ctrl_num);
4807 if (sc_items == 2 && ctrl == 'c') {
4808+ port_info_out->ctrl_num = ctrl_num;
4809 port_name_in++; /* 'c' */
4810 port_name_in += snprintf(NULL, 0, "%d",
4811 port_info_out->ctrl_num);
4812diff --git a/drivers/common/mlx5/linux/mlx5_glue.c b/drivers/common/mlx5/linux/mlx5_glue.c
4813index bc66220..e29b3b8 100644
4814--- a/drivers/common/mlx5/linux/mlx5_glue.c
4815+++ b/drivers/common/mlx5/linux/mlx5_glue.c
4816@@ -19,6 +19,10 @@
4817 static int
4818 mlx5_glue_fork_init(void)
4819 {
4820+#ifdef HAVE_IBV_FORK_UNNEEDED
4821+ if (ibv_is_fork_initialized() == IBV_FORK_UNNEEDED)
4822+ return 0; /* ibv_fork_init() not needed */
4823+#endif
4824 return ibv_fork_init();
4825 }
4826
4827diff --git a/drivers/common/qat/meson.build b/drivers/common/qat/meson.build
4828index af92271..1606fad 100644
4829--- a/drivers/common/qat/meson.build
4830+++ b/drivers/common/qat/meson.build
4831@@ -35,14 +35,6 @@ if qat_crypto and not libcrypto.found()
4832 'missing dependency, libcrypto')
4833 endif
4834
4835-# The driver should not build if both compression and crypto are disabled
4836-#FIXME common code depends on compression files so check only compress!
4837-if not qat_compress # and not qat_crypto
4838- build = false
4839- reason = '' # rely on reason for compress/crypto above
4840- subdir_done()
4841-endif
4842-
4843 deps += ['bus_pci', 'cryptodev', 'net', 'compressdev']
4844 sources += files(
4845 'qat_common.c',
4846diff --git a/drivers/common/qat/qat_qp.c b/drivers/common/qat/qat_qp.c
4847index cde421e..5a39a90 100644
4848--- a/drivers/common/qat/qat_qp.c
4849+++ b/drivers/common/qat/qat_qp.c
4850@@ -452,20 +452,6 @@ adf_configure_queues(struct qat_qp *qp, enum qat_device_gen qat_dev_gen)
4851 }
4852
4853 static inline void
4854-txq_write_tail(enum qat_device_gen qat_dev_gen,
4855- struct qat_qp *qp, struct qat_queue *q)
4856-{
4857- struct qat_qp_hw_spec_funcs *ops =
4858- qat_qp_hw_spec[qat_dev_gen];
4859-
4860- /*
4861- * Pointer check should be done during
4862- * initialization
4863- */
4864- ops->qat_qp_csr_write_tail(qp, q);
4865-}
4866-
4867-static inline void
4868 qat_qp_csr_write_head(enum qat_device_gen qat_dev_gen, struct qat_qp *qp,
4869 struct qat_queue *q, uint32_t new_head)
4870 {
4871@@ -643,179 +629,6 @@ kick_tail:
4872 return nb_ops_sent;
4873 }
4874
4875-/* Use this for compression only - but keep consistent with above common
4876- * function as much as possible.
4877- */
4878-uint16_t
4879-qat_enqueue_comp_op_burst(void *qp, void **ops, uint16_t nb_ops)
4880-{
4881- register struct qat_queue *queue;
4882- struct qat_qp *tmp_qp = (struct qat_qp *)qp;
4883- register uint32_t nb_ops_sent = 0;
4884- register int nb_desc_to_build;
4885- uint16_t nb_ops_possible = nb_ops;
4886- register uint8_t *base_addr;
4887- register uint32_t tail;
4888-
4889- int descriptors_built, total_descriptors_built = 0;
4890- int nb_remaining_descriptors;
4891- int overflow = 0;
4892-
4893- if (unlikely(nb_ops == 0))
4894- return 0;
4895-
4896- /* read params used a lot in main loop into registers */
4897- queue = &(tmp_qp->tx_q);
4898- base_addr = (uint8_t *)queue->base_addr;
4899- tail = queue->tail;
4900-
4901- /* Find how many can actually fit on the ring */
4902- {
4903- /* dequeued can only be written by one thread, but it may not
4904- * be this thread. As it's 4-byte aligned it will be read
4905- * atomically here by any Intel CPU.
4906- * enqueued can wrap before dequeued, but cannot
4907- * lap it as var size of enq/deq (uint32_t) > var size of
4908- * max_inflights (uint16_t). In reality inflights is never
4909- * even as big as max uint16_t, as it's <= ADF_MAX_DESC.
4910- * On wrapping, the calculation still returns the correct
4911- * positive value as all three vars are unsigned.
4912- */
4913- uint32_t inflights =
4914- tmp_qp->enqueued - tmp_qp->dequeued;
4915-
4916- /* Find how many can actually fit on the ring */
4917- overflow = (inflights + nb_ops) - tmp_qp->max_inflights;
4918- if (overflow > 0) {
4919- nb_ops_possible = nb_ops - overflow;
4920- if (nb_ops_possible == 0)
4921- return 0;
4922- }
4923-
4924- /* QAT has plenty of work queued already, so don't waste cycles
4925- * enqueueing, wait til the application has gathered a bigger
4926- * burst or some completed ops have been dequeued
4927- */
4928- if (tmp_qp->min_enq_burst_threshold && inflights >
4929- QAT_QP_MIN_INFL_THRESHOLD && nb_ops_possible <
4930- tmp_qp->min_enq_burst_threshold) {
4931- tmp_qp->stats.threshold_hit_count++;
4932- return 0;
4933- }
4934- }
4935-
4936- /* At this point nb_ops_possible is assuming a 1:1 mapping
4937- * between ops and descriptors.
4938- * Fewer may be sent if some ops have to be split.
4939- * nb_ops_possible is <= burst size.
4940- * Find out how many spaces are actually available on the qp in case
4941- * more are needed.
4942- */
4943- nb_remaining_descriptors = nb_ops_possible
4944- + ((overflow >= 0) ? 0 : overflow * (-1));
4945- QAT_DP_LOG(DEBUG, "Nb ops requested %d, nb descriptors remaining %d",
4946- nb_ops, nb_remaining_descriptors);
4947-
4948- while (nb_ops_sent != nb_ops_possible &&
4949- nb_remaining_descriptors > 0) {
4950- struct qat_comp_op_cookie *cookie =
4951- tmp_qp->op_cookies[tail >> queue->trailz];
4952-
4953- descriptors_built = 0;
4954-
4955- QAT_DP_LOG(DEBUG, "--- data length: %u",
4956- ((struct rte_comp_op *)*ops)->src.length);
4957-
4958- nb_desc_to_build = qat_comp_build_request(*ops,
4959- base_addr + tail, cookie, tmp_qp->qat_dev_gen);
4960- QAT_DP_LOG(DEBUG, "%d descriptors built, %d remaining, "
4961- "%d ops sent, %d descriptors needed",
4962- total_descriptors_built, nb_remaining_descriptors,
4963- nb_ops_sent, nb_desc_to_build);
4964-
4965- if (unlikely(nb_desc_to_build < 0)) {
4966- /* this message cannot be enqueued */
4967- tmp_qp->stats.enqueue_err_count++;
4968- if (nb_ops_sent == 0)
4969- return 0;
4970- goto kick_tail;
4971- } else if (unlikely(nb_desc_to_build > 1)) {
4972- /* this op is too big and must be split - get more
4973- * descriptors and retry
4974- */
4975-
4976- QAT_DP_LOG(DEBUG, "Build %d descriptors for this op",
4977- nb_desc_to_build);
4978-
4979- nb_remaining_descriptors -= nb_desc_to_build;
4980- if (nb_remaining_descriptors >= 0) {
4981- /* There are enough remaining descriptors
4982- * so retry
4983- */
4984- int ret2 = qat_comp_build_multiple_requests(
4985- *ops, tmp_qp, tail,
4986- nb_desc_to_build);
4987-
4988- if (unlikely(ret2 < 1)) {
4989- QAT_DP_LOG(DEBUG,
4990- "Failed to build (%d) descriptors, status %d",
4991- nb_desc_to_build, ret2);
4992-
4993- qat_comp_free_split_op_memzones(cookie,
4994- nb_desc_to_build - 1);
4995-
4996- tmp_qp->stats.enqueue_err_count++;
4997-
4998- /* This message cannot be enqueued */
4999- if (nb_ops_sent == 0)
5000- return 0;
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches