Merge ~paelzer/ubuntu/+source/dpdk:19.11-Focal-early into ubuntu/+source/dpdk:ubuntu/focal-devel

Proposed by Christian Ehrhardt 
Status: Superseded
Proposed branch: ~paelzer/ubuntu/+source/dpdk:19.11-Focal-early
Merge into: ubuntu/+source/dpdk:ubuntu/focal-devel
Diff against target: 897838 lines (+520284/-75162)
3081 files modified
.ci/linux-build.sh (+18/-1)
.ci/linux-setup.sh (+8/-2)
.gitignore (+16/-0)
.travis.yml (+24/-2)
ABI_VERSION (+1/-0)
GNUmakefile (+0/-1)
MAINTAINERS (+390/-189)
Makefile (+0/-1)
VERSION (+1/-0)
app/Makefile (+9/-0)
app/meson.build (+16/-3)
app/pdump/Makefile (+0/-1)
app/pdump/main.c (+146/-36)
app/pdump/meson.build (+0/-1)
app/proc-info/Makefile (+0/-1)
app/proc-info/main.c (+705/-21)
app/proc-info/meson.build (+1/-2)
app/test-acl/Makefile (+17/-0)
app/test-acl/main.c (+3/-2)
app/test-acl/meson.build (+5/-0)
app/test-bbdev/Makefile (+3/-0)
app/test-bbdev/ldpc_dec_default.data (+1/-0)
app/test-bbdev/ldpc_enc_default.data (+1/-0)
app/test-bbdev/main.c (+27/-18)
app/test-bbdev/main.h (+3/-0)
app/test-bbdev/meson.build (+3/-0)
app/test-bbdev/test-bbdev.py (+8/-1)
app/test-bbdev/test_bbdev.c (+5/-7)
app/test-bbdev/test_bbdev_perf.c (+1628/-412)
app/test-bbdev/test_bbdev_vector.c (+509/-11)
app/test-bbdev/test_bbdev_vector.h (+12/-4)
app/test-bbdev/test_vectors/ldpc_dec_HARQ_1_0.data (+353/-0)
app/test-bbdev/test_vectors/ldpc_dec_HARQ_1_1.data (+684/-0)
app/test-bbdev/test_vectors/ldpc_dec_HARQ_1_2.data (+902/-0)
app/test-bbdev/test_vectors/ldpc_dec_v11835.data (+49/-0)
app/test-bbdev/test_vectors/ldpc_dec_v2342.data (+745/-0)
app/test-bbdev/test_vectors/ldpc_dec_v2342_drop.data (+745/-0)
app/test-bbdev/test_vectors/ldpc_dec_v7813.data (+48/-0)
app/test-bbdev/test_vectors/ldpc_dec_v8480.data (+74/-0)
app/test-bbdev/test_vectors/ldpc_dec_v8568.data (+255/-0)
app/test-bbdev/test_vectors/ldpc_dec_v9503.data (+1215/-0)
app/test-bbdev/test_vectors/ldpc_enc_v11835.data (+41/-0)
app/test-bbdev/test_vectors/ldpc_enc_v2342.data (+151/-0)
app/test-bbdev/test_vectors/ldpc_enc_v7813.data (+43/-0)
app/test-bbdev/test_vectors/ldpc_enc_v8568.data (+70/-0)
app/test-bbdev/test_vectors/ldpc_enc_v9503.data (+197/-0)
app/test-bbdev/turbo_enc_default.data (+1/-1)
app/test-cmdline/Makefile (+24/-0)
app/test-cmdline/cmdline_test.c (+35/-0)
app/test-cmdline/cmdline_test.py (+89/-0)
app/test-cmdline/cmdline_test_data.py (+282/-0)
app/test-cmdline/commands.c (+360/-0)
app/test-cmdline/meson.build (+5/-0)
app/test-compress-perf/Makefile (+19/-0)
app/test-compress-perf/comp_perf.h (+50/-0)
app/test-compress-perf/comp_perf_options.h (+83/-0)
app/test-compress-perf/comp_perf_options_parse.c (+652/-0)
app/test-compress-perf/comp_perf_test_benchmark.c (+408/-0)
app/test-compress-perf/comp_perf_test_benchmark.h (+36/-0)
app/test-compress-perf/comp_perf_test_common.c (+562/-0)
app/test-compress-perf/comp_perf_test_common.h (+54/-0)
app/test-compress-perf/comp_perf_test_verify.c (+442/-0)
app/test-compress-perf/comp_perf_test_verify.h (+33/-0)
app/test-compress-perf/main.c (+513/-0)
app/test-compress-perf/meson.build (+10/-0)
app/test-crypto-perf/cperf.h (+1/-0)
app/test-crypto-perf/cperf_ops.c (+122/-6)
app/test-crypto-perf/cperf_ops.h (+1/-1)
app/test-crypto-perf/cperf_options.h (+14/-1)
app/test-crypto-perf/cperf_options_parsing.c (+80/-0)
app/test-crypto-perf/cperf_test_common.c (+1/-0)
app/test-crypto-perf/cperf_test_latency.c (+3/-2)
app/test-crypto-perf/cperf_test_latency.h (+1/-0)
app/test-crypto-perf/cperf_test_pmd_cyclecount.c (+3/-2)
app/test-crypto-perf/cperf_test_pmd_cyclecount.h (+1/-0)
app/test-crypto-perf/cperf_test_throughput.c (+20/-9)
app/test-crypto-perf/cperf_test_throughput.h (+1/-0)
app/test-crypto-perf/cperf_test_vector_parsing.c (+1/-1)
app/test-crypto-perf/cperf_test_vectors.c (+55/-0)
app/test-crypto-perf/cperf_test_verify.c (+14/-5)
app/test-crypto-perf/cperf_test_verify.h (+1/-0)
app/test-crypto-perf/main.c (+76/-36)
app/test-crypto-perf/meson.build (+1/-1)
app/test-eventdev/Makefile (+0/-1)
app/test-eventdev/evt_common.h (+81/-0)
app/test-eventdev/evt_options.c (+42/-2)
app/test-eventdev/evt_options.h (+3/-35)
app/test-eventdev/meson.build (+0/-1)
app/test-eventdev/parser.c (+3/-32)
app/test-eventdev/test_order_atq.c (+1/-10)
app/test-eventdev/test_order_queue.c (+1/-10)
app/test-eventdev/test_perf_atq.c (+32/-12)
app/test-eventdev/test_perf_common.c (+55/-58)
app/test-eventdev/test_perf_queue.c (+33/-13)
app/test-eventdev/test_pipeline_atq.c (+8/-17)
app/test-eventdev/test_pipeline_common.c (+64/-8)
app/test-eventdev/test_pipeline_common.h (+3/-3)
app/test-eventdev/test_pipeline_queue.c (+8/-17)
app/test-pipeline/Makefile (+33/-0)
app/test-pipeline/config.c (+233/-0)
app/test-pipeline/init.c (+257/-0)
app/test-pipeline/main.c (+85/-4)
app/test-pipeline/main.h (+130/-0)
app/test-pipeline/meson.build (+14/-0)
app/test-pipeline/pipeline_acl.c (+249/-0)
app/test-pipeline/pipeline_hash.c (+469/-0)
app/test-pipeline/pipeline_lpm.c (+173/-0)
app/test-pipeline/pipeline_lpm_ipv6.c (+171/-0)
app/test-pipeline/pipeline_stub.c (+135/-0)
app/test-pipeline/runtime.c (+155/-0)
app/test-pmd/cmdline.c (+845/-266)
app/test-pmd/cmdline_flow.c (+1416/-92)
app/test-pmd/cmdline_mtr.c (+23/-23)
app/test-pmd/cmdline_tm.c (+11/-11)
app/test-pmd/config.c (+278/-54)
app/test-pmd/csumonly.c (+177/-92)
app/test-pmd/flowgen.c (+16/-19)
app/test-pmd/icmpecho.c (+61/-56)
app/test-pmd/ieee1588fwd.c (+9/-9)
app/test-pmd/macfwd.c (+6/-6)
app/test-pmd/macswap.c (+8/-30)
app/test-pmd/macswap.h (+40/-0)
app/test-pmd/macswap_common.h (+46/-0)
app/test-pmd/macswap_neon.h (+97/-0)
app/test-pmd/macswap_sse.h (+94/-0)
app/test-pmd/parameters.c (+152/-19)
app/test-pmd/softnicfwd.c (+13/-3)
app/test-pmd/testpmd.c (+594/-311)
app/test-pmd/testpmd.h (+68/-40)
app/test-pmd/txonly.c (+134/-85)
app/test-pmd/util.c (+117/-23)
app/test-sad/Makefile (+18/-0)
app/test-sad/main.c (+671/-0)
app/test-sad/meson.build (+6/-0)
app/test/Makefile (+304/-0)
app/test/autotest.py (+51/-0)
app/test/autotest_data.py (+790/-0)
app/test/autotest_runner.py (+439/-0)
app/test/autotest_test_funcs.py (+342/-0)
app/test/commands.c (+383/-0)
app/test/meson.build (+461/-0)
app/test/packet_burst_generator.c (+457/-0)
app/test/packet_burst_generator.h (+78/-0)
app/test/process.h (+163/-0)
app/test/resource.c (+276/-0)
app/test/resource.h (+106/-0)
app/test/sample_packet_forward.c (+114/-0)
app/test/sample_packet_forward.h (+47/-0)
app/test/test.c (+309/-0)
app/test/test.h (+186/-0)
app/test/test_acl.c (+4/-4)
app/test/test_acl.h (+669/-0)
app/test/test_alarm.c (+234/-0)
app/test/test_atomic.c (+634/-0)
app/test/test_barrier.c (+289/-0)
app/test/test_bitmap.c (+185/-0)
app/test/test_bitratestats.c (+226/-0)
app/test/test_bpf.c (+868/-119)
app/test/test_byteorder.c (+66/-0)
app/test/test_cfgfile.c (+334/-0)
app/test/test_cfgfiles/etc/empty.ini (+0/-0)
app/test/test_cfgfiles/etc/empty_key_value.ini (+3/-0)
app/test/test_cfgfiles/etc/invalid_section.ini (+3/-0)
app/test/test_cfgfiles/etc/line_too_long.ini (+3/-0)
app/test/test_cfgfiles/etc/missing_section.ini (+2/-0)
app/test/test_cfgfiles/etc/realloc_sections.ini (+128/-0)
app/test/test_cfgfiles/etc/sample1.ini (+12/-0)
app/test/test_cfgfiles/etc/sample2.ini (+12/-0)
app/test/test_cmdline.c (+63/-0)
app/test/test_cmdline.h (+44/-0)
app/test/test_cmdline_etheraddr.c (+217/-0)
app/test/test_cmdline_ipaddr.c (+684/-0)
app/test/test_cmdline_lib.c (+234/-0)
app/test/test_cmdline_num.c (+593/-0)
app/test/test_cmdline_portlist.c (+221/-0)
app/test/test_cmdline_string.c (+383/-0)
app/test/test_common.c (+315/-0)
app/test/test_compressdev.c (+3222/-0)
app/test/test_compressdev_test_buffer.h (+295/-0)
app/test/test_cpuflags.c (+176/-0)
app/test/test_crc.c (+164/-0)
app/test/test_cryptodev.c (+5254/-1529)
app/test/test_cryptodev.h (+211/-0)
app/test/test_cryptodev_aes_test_vectors.h (+780/-53)
app/test/test_cryptodev_asym.c (+799/-160)
app/test/test_cryptodev_asym_util.h (+38/-0)
app/test/test_cryptodev_blockcipher.c (+832/-0)
app/test/test_cryptodev_blockcipher.h (+118/-0)
app/test/test_cryptodev_des_test_vectors.h (+24/-12)
app/test/test_cryptodev_dh_test_vectors.h (+80/-0)
app/test/test_cryptodev_dsa_test_vectors.h (+117/-0)
app/test/test_cryptodev_hash_test_vectors.h (+826/-0)
app/test/test_cryptodev_hmac_test_vectors.h (+93/-0)
app/test/test_cryptodev_kasumi_hash_test_vectors.h (+220/-0)
app/test/test_cryptodev_kasumi_test_vectors.h (+437/-0)
app/test/test_cryptodev_mixed_test_vectors.h (+172/-0)
app/test/test_cryptodev_mod_test_vectors.h (+1070/-0)
app/test/test_cryptodev_rsa_test_vectors.h (+407/-0)
app/test/test_cryptodev_security_pdcp.c (+590/-0)
app/test/test_cryptodev_security_pdcp_test_func.h (+48/-0)
app/test/test_cryptodev_security_pdcp_test_vectors.h (+6323/-0)
app/test/test_cryptodev_snow3g_hash_test_vectors.h (+498/-0)
app/test/test_cryptodev_snow3g_test_vectors.h (+739/-0)
app/test/test_cryptodev_zuc_test_vectors.h (+1132/-0)
app/test/test_cycles.c (+131/-0)
app/test/test_debug.c (+126/-0)
app/test/test_distributor.c (+704/-0)
app/test/test_distributor_perf.c (+268/-0)
app/test/test_eal_flags.c (+266/-135)
app/test/test_eal_fs.c (+177/-0)
app/test/test_efd.c (+469/-0)
app/test/test_efd_perf.c (+385/-0)
app/test/test_errno.c (+87/-0)
app/test/test_event_crypto_adapter.c (+979/-0)
app/test/test_event_eth_rx_adapter.c (+721/-0)
app/test/test_event_eth_tx_adapter.c (+703/-0)
app/test/test_event_ring.c (+247/-0)
app/test/test_event_timer_adapter.c (+42/-28)
app/test/test_eventdev.c (+1035/-0)
app/test/test_external_mem.c (+576/-0)
app/test/test_fbarray.c (+736/-0)
app/test/test_fib.c (+414/-0)
app/test/test_fib6.c (+423/-0)
app/test/test_fib6_perf.c (+157/-0)
app/test/test_fib_perf.c (+411/-0)
app/test/test_flow_classify.c (+876/-0)
app/test/test_flow_classify.h (+26/-0)
app/test/test_func_reentrancy.c (+498/-0)
app/test/test_hash.c (+118/-20)
app/test/test_hash_functions.c (+293/-0)
app/test/test_hash_multiwriter.c (+293/-0)
app/test/test_hash_perf.c (+701/-0)
app/test/test_hash_readwrite.c (+708/-0)
app/test/test_hash_readwrite_lf.c (+1434/-0)
app/test/test_interrupts.c (+562/-0)
app/test/test_ipsec.c (+2512/-0)
app/test/test_ipsec_sad.c (+887/-0)
app/test/test_kni.c (+765/-0)
app/test/test_kvargs.c (+227/-0)
app/test/test_latencystats.c (+206/-0)
app/test/test_link_bonding.c (+482/-244)
app/test/test_link_bonding_mode4.c (+1675/-0)
app/test/test_link_bonding_rssconf.c (+662/-0)
app/test/test_logs.c (+109/-0)
app/test/test_lpm.c (+1290/-0)
app/test/test_lpm6.c (+1796/-0)
app/test/test_lpm6_perf.c (+163/-0)
app/test/test_lpm_perf.c (+484/-0)
app/test/test_malloc.c (+968/-0)
app/test/test_mbuf.c (+2742/-0)
app/test/test_mcslock.c (+250/-0)
app/test/test_member.c (+715/-0)
app/test/test_member_perf.c (+625/-0)
app/test/test_memcpy.c (+133/-0)
app/test/test_memcpy_perf.c (+352/-0)
app/test/test_memory.c (+107/-0)
app/test/test_mempool.c (+668/-0)
app/test/test_mempool_perf.c (+399/-0)
app/test/test_memzone.c (+1129/-0)
app/test/test_meter.c (+716/-0)
app/test/test_metrics.c (+329/-0)
app/test/test_mp_secondary.c (+209/-0)
app/test/test_pdump.c (+219/-0)
app/test/test_pdump.h (+31/-0)
app/test/test_per_lcore.c (+108/-0)
app/test/test_pmd_perf.c (+888/-0)
app/test/test_pmd_ring.c (+579/-0)
app/test/test_pmd_ring_perf.c (+165/-0)
app/test/test_power.c (+176/-0)
app/test/test_power_cpufreq.c (+644/-0)
app/test/test_power_kvm_vm.c (+302/-0)
app/test/test_prefetch.c (+32/-0)
app/test/test_rand_perf.c (+92/-0)
app/test/test_rawdev.c (+47/-0)
app/test/test_rcu_qsbr.c (+1050/-0)
app/test/test_rcu_qsbr_perf.c (+690/-0)
app/test/test_reciprocal_division.c (+167/-0)
app/test/test_reciprocal_division_perf.c (+201/-0)
app/test/test_red.c (+1856/-0)
app/test/test_reorder.c (+393/-0)
app/test/test_resource.c (+104/-0)
app/test/test_rib.c (+367/-0)
app/test/test_rib6.c (+372/-0)
app/test/test_ring.c (+876/-0)
app/test/test_ring_perf.c (+488/-0)
app/test/test_rwlock.c (+555/-0)
app/test/test_sched.c (+198/-0)
app/test/test_service_cores.c (+933/-0)
app/test/test_spinlock.c (+306/-0)
app/test/test_stack.c (+426/-0)
app/test/test_stack_perf.c (+356/-0)
app/test/test_string_fns.c (+185/-0)
app/test/test_table.c (+197/-0)
app/test/test_table.h (+184/-0)
app/test/test_table_acl.c (+730/-0)
app/test/test_table_combined.c (+842/-0)
app/test/test_table_combined.h (+27/-0)
app/test/test_table_pipeline.c (+569/-0)
app/test/test_table_ports.c (+191/-0)
app/test/test_table_ports.h (+13/-0)
app/test/test_table_tables.c (+1053/-0)
app/test/test_table_tables.h (+22/-0)
app/test/test_tailq.c (+128/-0)
app/test/test_thash.c (+143/-0)
app/test/test_ticketlock.c (+319/-0)
app/test/test_timer.c (+600/-0)
app/test/test_timer_perf.c (+134/-0)
app/test/test_timer_racecond.c (+208/-0)
app/test/test_timer_secondary.c (+217/-0)
app/test/test_version.c (+28/-0)
app/test/test_xmmt_ops.h (+54/-0)
app/test/virtual_pmd.c (+612/-0)
app/test/virtual_pmd.h (+77/-0)
buildtools/check-experimental-syms.sh (+29/-12)
buildtools/map-list-symbol.sh (+70/-0)
buildtools/map_to_def.py (+40/-0)
buildtools/meson.build (+14/-1)
buildtools/options-ibverbs-static.sh (+14/-0)
buildtools/pmdinfogen/meson.build (+6/-1)
buildtools/pmdinfogen/pmdinfogen.h (+0/-1)
config/arm/arm64_armada_linux_gcc (+3/-1)
config/arm/arm64_armv8_linux_gcc (+4/-0)
config/arm/arm64_bluefield_linux_gcc (+17/-0)
config/arm/arm64_dpaa_linux_gcc (+2/-0)
config/arm/arm64_emag_linux_gcc (+16/-0)
config/arm/arm64_n1sdp_linux_gcc (+17/-0)
config/arm/arm64_octeontx2_linux_gcc (+17/-0)
config/arm/arm64_thunderx2_linux_gcc (+17/-0)
config/arm/arm64_thunderx_linux_gcc (+2/-0)
config/arm/meson.build (+79/-41)
config/common_armv8a_linux (+7/-1)
config/common_base (+165/-29)
config/common_freebsd (+1/-0)
config/common_linux (+18/-0)
config/defconfig_arm-armv7a-linux-gcc (+1/-0)
config/defconfig_arm-armv7a-linuxapp-gcc (+5/-1)
config/defconfig_arm64-armada-linux-gcc (+1/-0)
config/defconfig_arm64-armada-linuxapp-gcc (+25/-0)
config/defconfig_arm64-armv8a-linux-clang (+1/-0)
config/defconfig_arm64-armv8a-linux-gcc (+1/-0)
config/defconfig_arm64-armv8a-linuxapp-clang (+1/-1)
config/defconfig_arm64-armv8a-linuxapp-gcc (+1/-1)
config/defconfig_arm64-bluefield-linux-gcc (+1/-0)
config/defconfig_arm64-bluefield-linuxapp-gcc (+18/-0)
config/defconfig_arm64-dpaa-linux-gcc (+1/-0)
config/defconfig_arm64-dpaa-linuxapp-gcc (+13/-8)
config/defconfig_arm64-emag-linux-gcc (+1/-0)
config/defconfig_arm64-emag-linuxapp-gcc (+11/-0)
config/defconfig_arm64-n1sdp-linux-gcc (+1/-0)
config/defconfig_arm64-n1sdp-linuxapp-gcc (+4/-12)
config/defconfig_arm64-octeontx2-linux-gcc (+1/-0)
config/defconfig_arm64-octeontx2-linuxapp-gcc (+22/-0)
config/defconfig_arm64-stingray-linux-gcc (+1/-0)
config/defconfig_arm64-stingray-linuxapp-gcc (+1/-1)
config/defconfig_arm64-thunderx-linux-gcc (+1/-0)
config/defconfig_arm64-thunderx-linuxapp-gcc (+1/-1)
config/defconfig_arm64-thunderx2-linux-gcc (+1/-0)
config/defconfig_arm64-thunderx2-linuxapp-gcc (+12/-0)
config/defconfig_arm64-xgene1-linux-gcc (+1/-0)
config/defconfig_arm64-xgene1-linuxapp-gcc (+1/-1)
config/defconfig_i686-native-linux-gcc (+1/-0)
config/defconfig_i686-native-linux-icc (+1/-0)
config/defconfig_i686-native-linuxapp-gcc (+16/-1)
config/defconfig_i686-native-linuxapp-icc (+16/-1)
config/defconfig_ppc_64-power8-linux-gcc (+1/-0)
config/defconfig_ppc_64-power8-linuxapp-gcc (+7/-31)
config/defconfig_x86_64-native-bsdapp-clang (+1/-1)
config/defconfig_x86_64-native-bsdapp-gcc (+1/-1)
config/defconfig_x86_64-native-freebsd-clang (+1/-0)
config/defconfig_x86_64-native-freebsd-gcc (+1/-0)
config/defconfig_x86_64-native-linux-clang (+1/-0)
config/defconfig_x86_64-native-linux-gcc (+1/-0)
config/defconfig_x86_64-native-linux-icc (+1/-0)
config/defconfig_x86_64-native-linuxapp-clang (+1/-1)
config/defconfig_x86_64-native-linuxapp-gcc (+1/-1)
config/defconfig_x86_64-native-linuxapp-icc (+11/-1)
config/defconfig_x86_x32-native-linux-gcc (+1/-0)
config/defconfig_x86_x32-native-linuxapp-gcc (+16/-1)
config/meson.build (+116/-19)
config/ppc_64/meson.build (+13/-1)
config/rte_config.h (+15/-5)
config/x86/meson.build (+20/-25)
debian/changelog (+86/-0)
debian/control (+544/-220)
debian/control.modules.in (+0/-1)
debian/dpdk-dev.install (+10/-4)
debian/dpdk-dev.lintian-overrides (+13/-0)
debian/dpdk-doc.lintian-overrides (+1/-0)
debian/dpdk.lintian-overrides (+3/-0)
debian/gbp.conf (+2/-2)
debian/interfaces (+0/-2)
debian/libdpdk-dev.lintian-overrides (+6/-1)
debian/librte-acl20.0.symbols (+15/-0)
debian/librte-bbdev20.0.symbols (+29/-0)
debian/librte-bitratestats20.0.symbols (+5/-0)
debian/librte-bpf20.0.symbols (+12/-0)
debian/librte-bus-fslmc20.0.symbols (+105/-0)
debian/librte-bus-ifpga20.0.symbols (+7/-0)
debian/librte-bus-pci20.0.symbols (+14/-0)
debian/librte-bus-vdev20.0.symbols (+8/-0)
debian/librte-bus-vmbus20.0.symbols (+24/-0)
debian/librte-cfgfile20.0.symbols (+18/-0)
debian/librte-cmdline20.0.symbols (+67/-0)
debian/librte-common-cpt20.0.symbols (+5/-0)
debian/librte-common-dpaax20.0.symbols (+19/-0)
debian/librte-common-octeontx2-20.0.symbols (+31/-0)
debian/librte-common-octeontx20.0.symbols (+8/-0)
debian/librte-compressdev20.0.symbols (+36/-0)
debian/librte-cryptodev20.0.symbols (+72/-0)
debian/librte-distributor20.0.symbols (+11/-0)
debian/librte-eal20.0.symbols (+308/-0)
debian/librte-efd20.0.symbols (+9/-0)
debian/librte-ethdev20.0.symbols (+205/-0)
debian/librte-eventdev20.0.symbols (+84/-0)
debian/librte-fib20.0.symbols (+18/-0)
debian/librte-flow-classify20.0.symbols (+9/-0)
debian/librte-gso20.0.symbols (+3/-0)
debian/librte-hash20.0.symbols (+28/-0)
debian/librte-ip-frag20.0.symbols (+12/-0)
debian/librte-ipsec20.0.symbols (+13/-0)
debian/librte-jobstats20.0.symbols (+16/-0)
debian/librte-kni20.0.symbols (+15/-0)
debian/librte-kvargs20.0.symbols (+9/-0)
debian/librte-latencystats20.0.symbols (+7/-0)
debian/librte-lpm20.0.symbols (+19/-0)
debian/librte-mbuf20.0.symbols (+39/-0)
debian/librte-member20.0.symbols (+12/-0)
debian/librte-mempool-bucket20.0.symbols (+3/-0)
debian/librte-mempool-octeontx2-20.0.symbols (+4/-0)
debian/librte-mempool-octeontx20.0.symbols (+4/-0)
debian/librte-mempool-ring20.0.symbols (+3/-0)
debian/librte-mempool-stack20.0.symbols (+3/-0)
debian/librte-mempool20.0.symbols (+33/-0)
debian/librte-meter20.0.symbols (+9/-0)
debian/librte-metrics20.0.symbols (+11/-0)
debian/librte-net20.0.symbols (+11/-0)
debian/librte-pci20.0.symbols (+7/-0)
debian/librte-pdump20.0.symbols (+8/-0)
debian/librte-pipeline20.0.symbols (+50/-0)
debian/librte-pmd-af-packet20.0.symbols (+2/-2)
debian/librte-pmd-af-xdp20.0.symbols (+2/-2)
debian/librte-pmd-ark20.0.symbols (+2/-2)
debian/librte-pmd-atlantic20.0.symbols (+9/-0)
debian/librte-pmd-avp20.0.symbols (+2/-2)
debian/librte-pmd-axgbe20.0.symbols (+2/-2)
debian/librte-pmd-bbdev-fpga-lte-fec20.0.symbols (+6/-0)
debian/librte-pmd-bbdev-null20.0.symbols (+2/-2)
debian/librte-pmd-bbdev-turbo-sw20.0.symbols (+2/-2)
debian/librte-pmd-bnx2x20.0.symbols (+2/-0)
debian/librte-pmd-bnxt20.0.symbols (+18/-0)
debian/librte-pmd-bond20.0.symbols (+29/-0)
debian/librte-pmd-caam-jr20.0.symbols (+2/-0)
debian/librte-pmd-ccp20.0.symbols (+2/-0)
debian/librte-pmd-crypto-scheduler20.0.symbols (+12/-0)
debian/librte-pmd-cxgbe20.0.symbols (+2/-2)
debian/librte-pmd-dpaa-event20.0.symbols (+2/-2)
debian/librte-pmd-dpaa-sec20.0.symbols (+6/-0)
debian/librte-pmd-dpaa2-20.0.symbols (+8/-0)
debian/librte-pmd-dpaa2-event20.0.symbols (+2/-2)
debian/librte-pmd-dpaa2-sec20.0.symbols (+6/-0)
debian/librte-pmd-dpaa20.0.symbols (+9/-0)
debian/librte-pmd-dsw-event20.0.symbols (+2/-0)
debian/librte-pmd-e1000-20.0.symbols (+2/-2)
debian/librte-pmd-ena20.0.symbols (+2/-2)
debian/librte-pmd-enetc20.0.symbols (+2/-2)
debian/librte-pmd-enic20.0.symbols (+2/-2)
debian/librte-pmd-fm10k20.0.symbols (+2/-2)
debian/librte-pmd-hinic20.0.symbols (+2/-2)
debian/librte-pmd-hns3-20.0.symbols (+2/-2)
debian/librte-pmd-i40e20.0.symbols (+38/-0)
debian/librte-pmd-iavf20.0.symbols (+2/-2)
debian/librte-pmd-ice20.0.symbols (+11/-0)
debian/librte-pmd-ifc20.0.symbols (+2/-2)
debian/librte-pmd-ipn3ke20.0.symbols (+2/-2)
debian/librte-pmd-isal20.0.symbols (+2/-2)
debian/librte-pmd-ixgbe20.0.symbols (+38/-0)
debian/librte-pmd-kni20.0.symbols (+2/-2)
debian/librte-pmd-liquidio20.0.symbols (+2/-2)
debian/librte-pmd-memif20.0.symbols (+2/-2)
debian/librte-pmd-mlx4-20.0.symbols (+2/-2)
debian/librte-pmd-mlx5-20.0.symbols (+2/-2)
debian/librte-pmd-netvsc20.0.symbols (+2/-0)
debian/librte-pmd-nfp20.0.symbols (+2/-2)
debian/librte-pmd-nitrox20.0.symbols (+2/-2)
debian/librte-pmd-null-crypto20.0.symbols (+2/-2)
debian/librte-pmd-null20.0.symbols (+2/-2)
debian/librte-pmd-octeontx-compress20.0.symbols (+2/-0)
debian/librte-pmd-octeontx-crypto20.0.symbols (+2/-0)
debian/librte-pmd-octeontx-event20.0.symbols (+2/-0)
debian/librte-pmd-octeontx2-20.0.symbols (+2/-2)
debian/librte-pmd-octeontx2-crypto20.0.symbols (+3/-0)
debian/librte-pmd-octeontx2-event20.0.symbols (+2/-2)
debian/librte-pmd-octeontx20.0.symbols (+3/-0)
debian/librte-pmd-opdl-event20.0.symbols (+2/-2)
debian/librte-pmd-openssl20.0.symbols (+2/-2)
debian/librte-pmd-pcap20.0.symbols (+2/-2)
debian/librte-pmd-pfe20.0.symbols (+2/-2)
debian/librte-pmd-qat20.0.symbols (+2/-0)
debian/librte-pmd-qede20.0.symbols (+2/-2)
debian/librte-pmd-ring20.0.symbols (+4/-0)
debian/librte-pmd-sfc20.0.symbols (+2/-2)
debian/librte-pmd-skeleton-event20.0.symbols (+4/-0)
debian/librte-pmd-softnic20.0.symbols (+5/-0)
debian/librte-pmd-sw-event20.0.symbols (+4/-0)
debian/librte-pmd-tap20.0.symbols (+4/-0)
debian/librte-pmd-thunderx20.0.symbols (+2/-2)
debian/librte-pmd-vdev-netvsc20.0.symbols (+4/-0)
debian/librte-pmd-vhost20.0.symbols (+4/-0)
debian/librte-pmd-virtio-crypto20.0.symbols (+4/-0)
debian/librte-pmd-virtio20.0.symbols (+4/-0)
debian/librte-pmd-vmxnet3-20.0.symbols (+4/-0)
debian/librte-pmd-zlib20.0.symbols (+2/-0)
debian/librte-port20.0.symbols (+32/-0)
debian/librte-power20.0.symbols (+28/-0)
debian/librte-rawdev-dpaa2-cmdif20.0.symbols (+4/-0)
debian/librte-rawdev-dpaa2-qdma20.0.symbols (+16/-0)
debian/librte-rawdev-ioat20.0.symbols (+4/-0)
debian/librte-rawdev-ntb20.0.symbols (+4/-0)
debian/librte-rawdev-octeontx2-dma20.0.symbols (+4/-0)
debian/librte-rawdev-skeleton20.0.symbols (+4/-0)
debian/librte-rawdev20.0.symbols (+31/-0)
debian/librte-rcu20.0.symbols (+9/-0)
debian/librte-reorder20.0.symbols (+9/-0)
debian/librte-rib20.0.symbols (+30/-0)
debian/librte-ring20.0.symbols (+11/-0)
debian/librte-sched20.0.symbols (+23/-0)
debian/librte-security20.0.symbols (+12/-0)
debian/librte-stack20.0.symbols (+5/-0)
debian/librte-table20.0.symbols (+16/-0)
debian/librte-telemetry20.0.symbols (+6/-0)
debian/librte-timer20.0.symbols (+20/-0)
debian/librte-vhost20.0.symbols (+58/-0)
debian/not-installed (+2/-0)
debian/patches/series (+0/-5)
debian/rules (+14/-8)
debian/source/lintian-overrides (+3/-0)
debian/tests/control (+0/-1)
debian/tests/test-dkms (+0/-6)
dev/null (+0/-77)
devtools/build-tags.sh (+8/-15)
devtools/check-abi-version.sh (+54/-0)
devtools/check-dup-includes.sh (+1/-1)
devtools/check-git-log.sh (+24/-0)
devtools/check-includes.sh (+0/-1)
devtools/check-symbol-change.sh (+6/-0)
devtools/checkpatches.sh (+74/-22)
devtools/cocci/strlcpy-with-header.cocci (+12/-0)
devtools/cocci/strlcpy.cocci (+1/-2)
devtools/get-maintainer.sh (+1/-1)
devtools/load-devel-config (+2/-2)
devtools/test-build.sh (+69/-55)
devtools/test-meson-builds.sh (+103/-18)
devtools/test-null.sh (+21/-6)
devtools/update-abi.sh (+46/-0)
devtools/update_version_map_abi.py (+175/-0)
devtools/validate-abi.sh (+1/-1)
doc/api/doxy-api-index.md (+18/-3)
doc/api/doxy-api.conf.in (+11/-2)
doc/build-sdk-meson.txt (+11/-28)
doc/build-sdk-quick.txt (+1/-1)
doc/guides/bbdevs/fpga_lte_fec.rst (+316/-0)
doc/guides/bbdevs/index.rst (+1/-0)
doc/guides/bbdevs/turbo_sw.rst (+64/-40)
doc/guides/compressdevs/features/default.ini (+19/-18)
doc/guides/compressdevs/features/isal.ini (+2/-0)
doc/guides/compressdevs/features/qat.ini (+11/-10)
doc/guides/compressdevs/isal.rst (+28/-2)
doc/guides/compressdevs/octeontx.rst (+3/-3)
doc/guides/compressdevs/qat_comp.rst (+9/-0)
doc/guides/conf.py (+0/-4)
doc/guides/contributing/abi_policy.rst (+327/-0)
doc/guides/contributing/abi_versioning.rst (+522/-0)
doc/guides/contributing/coding_style.rst (+26/-12)
doc/guides/contributing/design.rst (+4/-4)
doc/guides/contributing/documentation.rst (+0/-1)
doc/guides/contributing/img/abi_stability_policy.svg (+1059/-0)
doc/guides/contributing/img/what_is_an_abi.svg (+382/-0)
doc/guides/contributing/index.rst (+3/-1)
doc/guides/contributing/patches.rst (+49/-14)
doc/guides/contributing/stable.rst (+15/-11)
doc/guides/contributing/vulnerability.rst (+325/-0)
doc/guides/cryptodevs/aesni_gcm.rst (+8/-6)
doc/guides/cryptodevs/aesni_mb.rst (+11/-6)
doc/guides/cryptodevs/armv8.rst (+1/-1)
doc/guides/cryptodevs/caam_jr.rst (+4/-4)
doc/guides/cryptodevs/ccp.rst (+16/-16)
doc/guides/cryptodevs/dpaa2_sec.rst (+4/-4)
doc/guides/cryptodevs/dpaa_sec.rst (+8/-4)
doc/guides/cryptodevs/features/aesni_gcm.ini (+3/-1)
doc/guides/cryptodevs/features/aesni_mb.ini (+1/-0)
doc/guides/cryptodevs/features/default.ini (+4/-0)
doc/guides/cryptodevs/features/dpaa2_sec.ini (+4/-0)
doc/guides/cryptodevs/features/dpaa_sec.ini (+4/-0)
doc/guides/cryptodevs/features/nitrox.ini (+40/-0)
doc/guides/cryptodevs/features/octeontx.ini (+5/-1)
doc/guides/cryptodevs/features/octeontx2.ini (+71/-0)
doc/guides/cryptodevs/features/openssl.ini (+3/-0)
doc/guides/cryptodevs/features/qat.ini (+9/-0)
doc/guides/cryptodevs/index.rst (+2/-0)
doc/guides/cryptodevs/mvsam.rst (+1/-29)
doc/guides/cryptodevs/nitrox.rst (+51/-0)
doc/guides/cryptodevs/octeontx.rst (+27/-2)
doc/guides/cryptodevs/octeontx2.rst (+159/-0)
doc/guides/cryptodevs/openssl.rst (+1/-1)
doc/guides/cryptodevs/overview.rst (+9/-0)
doc/guides/cryptodevs/qat.rst (+118/-54)
doc/guides/cryptodevs/virtio.rst (+5/-5)
doc/guides/cryptodevs/zuc.rst (+2/-2)
doc/guides/eventdevs/dpaa.rst (+1/-1)
doc/guides/eventdevs/dpaa2.rst (+3/-3)
doc/guides/eventdevs/index.rst (+1/-0)
doc/guides/eventdevs/octeontx.rst (+8/-1)
doc/guides/eventdevs/octeontx2.rst (+164/-0)
doc/guides/eventdevs/opdl.rst (+2/-2)
doc/guides/freebsd_gsg/build_dpdk.rst (+3/-3)
doc/guides/freebsd_gsg/build_sample_apps.rst (+5/-5)
doc/guides/freebsd_gsg/install_from_ports.rst (+30/-42)
doc/guides/freebsd_gsg/intro.rst (+2/-2)
doc/guides/howto/debug_troubleshoot.rst (+460/-0)
doc/guides/howto/flow_bifurcation.rst (+26/-0)
doc/guides/howto/img/dtg_consumer_ring.svg (+24/-0)
doc/guides/howto/img/dtg_crypto.svg (+21/-0)
doc/guides/howto/img/dtg_distributor_worker.svg (+36/-0)
doc/guides/howto/img/dtg_mempool.svg (+27/-0)
doc/guides/howto/img/dtg_pdump.svg (+33/-0)
doc/guides/howto/img/dtg_producer_ring.svg (+24/-0)
doc/guides/howto/img/dtg_qos_tx.svg (+29/-0)
doc/guides/howto/img/dtg_rx_rate.svg (+25/-0)
doc/guides/howto/img/dtg_rx_tx_drop.svg (+33/-0)
doc/guides/howto/img/dtg_sample_app_model.svg (+110/-0)
doc/guides/howto/img/dtg_service.svg (+20/-0)
doc/guides/howto/index.rst (+1/-0)
doc/guides/howto/lm_bond_virtio_sriov.rst (+2/-2)
doc/guides/howto/lm_virtio_vhost_user.rst (+2/-2)
doc/guides/howto/pvp_reference_benchmark.rst (+5/-31)
doc/guides/howto/rte_flow.rst (+1/-1)
doc/guides/howto/telemetry.rst (+5/-4)
doc/guides/howto/virtio_user_for_container_networking.rst (+2/-2)
doc/guides/index.rst (+2/-1)
doc/guides/linux_gsg/build_dpdk.rst (+140/-9)
doc/guides/linux_gsg/build_sample_apps.rst (+3/-3)
doc/guides/linux_gsg/cross_build_dpdk_for_arm64.rst (+37/-27)
doc/guides/linux_gsg/eal_args.include.rst (+6/-0)
doc/guides/linux_gsg/intro.rst (+2/-2)
doc/guides/linux_gsg/linux_drivers.rst (+6/-1)
doc/guides/linux_gsg/linux_eal_parameters.rst (+4/-6)
doc/guides/linux_gsg/nic_perf_intel_platform.rst (+7/-9)
doc/guides/linux_gsg/quick_start.rst (+13/-13)
doc/guides/linux_gsg/sys_reqs.rst (+40/-39)
doc/guides/mempool/index.rst (+1/-0)
doc/guides/mempool/octeontx.rst (+1/-1)
doc/guides/mempool/octeontx2.rst (+90/-0)
doc/guides/nics/af_packet.rst (+67/-0)
doc/guides/nics/af_xdp.rst (+59/-0)
doc/guides/nics/ark.rst (+1/-28)
doc/guides/nics/atlantic.rst (+6/-0)
doc/guides/nics/avp.rst (+2/-28)
doc/guides/nics/bnx2x.rst (+3/-30)
doc/guides/nics/bnxt.rst (+120/-20)
doc/guides/nics/build_and_test.rst (+17/-17)
doc/guides/nics/cxgbe.rst (+27/-36)
doc/guides/nics/dpaa.rst (+4/-11)
doc/guides/nics/dpaa2.rst (+14/-8)
doc/guides/nics/ena.rst (+31/-45)
doc/guides/nics/enetc.rst (+7/-0)
doc/guides/nics/enic.rst (+36/-29)
doc/guides/nics/features.rst (+20/-80)
doc/guides/nics/features/af_xdp.ini (+11/-0)
doc/guides/nics/features/atlantic.ini (+1/-0)
doc/guides/nics/features/bnxt.ini (+3/-3)
doc/guides/nics/features/default.ini (+1/-7)
doc/guides/nics/features/ena.ini (+4/-8)
doc/guides/nics/features/enetc.ini (+9/-0)
doc/guides/nics/features/enic.ini (+3/-2)
doc/guides/nics/features/failsafe.ini (+1/-0)
doc/guides/nics/features/hinic.ini (+46/-0)
doc/guides/nics/features/hns3.ini (+33/-0)
doc/guides/nics/features/hns3_vf.ini (+28/-0)
doc/guides/nics/features/i40e.ini (+1/-4)
doc/guides/nics/features/i40e_vec.ini (+0/-4)
doc/guides/nics/features/i40e_vf.ini (+0/-1)
doc/guides/nics/features/i40e_vf_vec.ini (+0/-1)
doc/guides/nics/features/iavf.ini (+1/-1)
doc/guides/nics/features/iavf_vec.ini (+1/-1)
doc/guides/nics/features/ice.ini (+42/-0)
doc/guides/nics/features/ice_vec.ini (+35/-0)
doc/guides/nics/features/igb.ini (+0/-4)
doc/guides/nics/features/ipn3ke.ini (+51/-0)
doc/guides/nics/features/ixgbe.ini (+0/-5)
doc/guides/nics/features/ixgbe_vec.ini (+0/-5)
doc/guides/nics/features/ixgbe_vf.ini (+1/-0)
doc/guides/nics/features/memif.ini (+14/-0)
doc/guides/nics/features/mlx4.ini (+2/-0)
doc/guides/nics/features/mlx5.ini (+2/-1)
doc/guides/nics/features/nfb.ini (+17/-0)
doc/guides/nics/features/nfp.ini (+1/-0)
doc/guides/nics/features/nfp_vf.ini (+1/-0)
doc/guides/nics/features/octeontx2.ini (+54/-0)
doc/guides/nics/features/octeontx2_vec.ini (+49/-0)
doc/guides/nics/features/octeontx2_vf.ini (+45/-0)
doc/guides/nics/features/pfe.ini (+17/-0)
doc/guides/nics/features/qede.ini (+0/-3)
doc/guides/nics/features/sfc_efx.ini (+1/-0)
doc/guides/nics/fm10k.rst (+3/-3)
doc/guides/nics/hinic.rst (+68/-0)
doc/guides/nics/hns3.rst (+60/-0)
doc/guides/nics/i40e.rst (+29/-6)
doc/guides/nics/ice.rst (+291/-0)
doc/guides/nics/ifc.rst (+11/-1)
doc/guides/nics/index.rst (+10/-0)
doc/guides/nics/intel_vf.rst (+12/-12)
doc/guides/nics/ipn3ke.rst (+107/-0)
doc/guides/nics/kni.rst (+2/-2)
doc/guides/nics/liquidio.rst (+2/-2)
doc/guides/nics/memif.rst (+274/-0)
doc/guides/nics/mlx4.rst (+66/-72)
doc/guides/nics/mlx5.rst (+600/-229)
doc/guides/nics/mvneta.rst (+1/-1)
doc/guides/nics/mvpp2.rst (+7/-31)
doc/guides/nics/nfb.rst (+164/-0)
doc/guides/nics/nfp.rst (+14/-28)
doc/guides/nics/octeontx.rst (+11/-4)
doc/guides/nics/octeontx2.rst (+338/-0)
doc/guides/nics/pcap_ring.rst (+28/-0)
doc/guides/nics/pfe.rst (+180/-0)
doc/guides/nics/qede.rst (+63/-7)
doc/guides/nics/sfc_efx.rst (+7/-26)
doc/guides/nics/softnic.rst (+2/-2)
doc/guides/nics/szedata2.rst (+3/-3)
doc/guides/nics/tap.rst (+4/-5)
doc/guides/nics/thunderx.rst (+4/-4)
doc/guides/nics/vhost.rst (+7/-29)
doc/guides/nics/virtio.rst (+209/-35)
doc/guides/platform/bluefield.rst (+143/-0)
doc/guides/platform/dpaa2.rst (+6/-2)
doc/guides/platform/img/octeontx2_packet_flow_hw_accelerators.svg (+2804/-0)
doc/guides/platform/img/octeontx2_resource_virtualization.svg (+2418/-0)
doc/guides/platform/index.rst (+2/-0)
doc/guides/platform/octeontx.rst (+3/-3)
doc/guides/platform/octeontx2.rst (+552/-0)
doc/guides/prog_guide/bbdev.rst (+463/-50)
doc/guides/prog_guide/bpf_lib.rst (+1/-1)
doc/guides/prog_guide/build_app.rst (+2/-2)
doc/guides/prog_guide/compressdev.rst (+34/-30)
doc/guides/prog_guide/cryptodev_lib.rst (+82/-28)
doc/guides/prog_guide/dev_kit_build_system.rst (+4/-47)
doc/guides/prog_guide/dev_kit_root_make_help.rst (+3/-3)
doc/guides/prog_guide/env_abstraction_layer.rst (+159/-15)
doc/guides/prog_guide/event_crypto_adapter.rst (+5/-0)
doc/guides/prog_guide/event_ethernet_rx_adapter.rst (+5/-0)
doc/guides/prog_guide/event_ethernet_tx_adapter.rst (+2/-1)
doc/guides/prog_guide/event_timer_adapter.rst (+7/-3)
doc/guides/prog_guide/eventdev.rst (+5/-0)
doc/guides/prog_guide/ext_app_lib_make_help.rst (+2/-2)
doc/guides/prog_guide/extend_dpdk.rst (+2/-2)
doc/guides/prog_guide/generic_segmentation_offload_lib.rst (+1/-2)
doc/guides/prog_guide/glossary.rst (+1/-1)
doc/guides/prog_guide/hash_lib.rst (+3/-3)
doc/guides/prog_guide/img/cryptodev_sym_sess.svg (+375/-350)
doc/guides/prog_guide/img/linuxapp_launch.svg (+2/-2)
doc/guides/prog_guide/img/rcu_general_info.svg (+509/-0)
doc/guides/prog_guide/img/sched_hier_per_port.svg (+492/-0)
doc/guides/prog_guide/index.rst (+4/-0)
doc/guides/prog_guide/intro.rst (+1/-1)
doc/guides/prog_guide/ipsec_lib.rst (+316/-0)
doc/guides/prog_guide/kernel_nic_interface.rst (+30/-5)
doc/guides/prog_guide/lto.rst (+43/-0)
doc/guides/prog_guide/metrics_lib.rst (+14/-0)
doc/guides/prog_guide/overview.rst (+1/-1)
doc/guides/prog_guide/packet_classif_access_ctrl.rst (+10/-10)
doc/guides/prog_guide/pdump_lib.rst (+4/-14)
doc/guides/prog_guide/profile_app.rst (+1/-1)
doc/guides/prog_guide/qos_framework.rst (+90/-22)
doc/guides/prog_guide/rcu_lib.rst (+192/-0)
doc/guides/prog_guide/rte_flow.rst (+233/-20)
doc/guides/prog_guide/rte_security.rst (+2/-2)
doc/guides/prog_guide/source_org.rst (+2/-77)
doc/guides/prog_guide/stack_lib.rst (+83/-0)
doc/guides/prog_guide/switch_representation.rst (+2/-4)
doc/guides/prog_guide/vhost_lib.rst (+38/-0)
doc/guides/rawdevs/dpaa2_cmdif.rst (+3/-3)
doc/guides/rawdevs/dpaa2_qdma.rst (+3/-3)
doc/guides/rawdevs/index.rst (+4/-1)
doc/guides/rawdevs/ioat.rst (+265/-0)
doc/guides/rawdevs/ntb.rst (+154/-0)
doc/guides/rawdevs/octeontx2_dma.rst (+115/-0)
doc/guides/rel_notes/deprecation.rst (+47/-66)
doc/guides/rel_notes/index.rst (+4/-0)
doc/guides/rel_notes/known_issues.rst (+27/-0)
doc/guides/rel_notes/release_16_07.rst (+0/-1)
doc/guides/rel_notes/release_17_02.rst (+1/-2)
doc/guides/rel_notes/release_17_11.rst (+1/-1)
doc/guides/rel_notes/release_18_02.rst (+1/-1)
doc/guides/rel_notes/release_18_05.rst (+1/-1)
doc/guides/rel_notes/release_18_11.rst (+0/-1402)
doc/guides/rel_notes/release_19_02.rst (+665/-0)
doc/guides/rel_notes/release_19_05.rst (+726/-0)
doc/guides/rel_notes/release_19_08.rst (+748/-0)
doc/guides/rel_notes/release_19_11.rst (+920/-0)
doc/guides/rel_notes/release_2_1.rst (+1/-1)
doc/guides/sample_app_ug/bbdev_app.rst (+3/-3)
doc/guides/sample_app_ug/cmd_line.rst (+1/-1)
doc/guides/sample_app_ug/dist_app.rst (+20/-2)
doc/guides/sample_app_ug/ethtool.rst (+1/-1)
doc/guides/sample_app_ug/fips_validation.rst (+2/-2)
doc/guides/sample_app_ug/flow_classify.rst (+22/-18)
doc/guides/sample_app_ug/flow_filtering.rst (+18/-8)
doc/guides/sample_app_ug/hello_world.rst (+2/-2)
doc/guides/sample_app_ug/index.rst (+4/-6)
doc/guides/sample_app_ug/intro.rst (+13/-46)
doc/guides/sample_app_ug/ioat.rst (+581/-0)
doc/guides/sample_app_ug/ip_frag.rst (+10/-10)
doc/guides/sample_app_ug/ip_pipeline.rst (+16/-8)
doc/guides/sample_app_ug/ip_reassembly.rst (+10/-10)
doc/guides/sample_app_ug/ipsec_secgw.rst (+205/-10)
doc/guides/sample_app_ug/ipv4_multicast.rst (+8/-8)
doc/guides/sample_app_ug/keep_alive.rst (+1/-1)
doc/guides/sample_app_ug/kernel_nic_interface.rst (+12/-16)
doc/guides/sample_app_ug/l2_forward_cat.rst (+1/-1)
doc/guides/sample_app_ug/l2_forward_crypto.rst (+2/-2)
doc/guides/sample_app_ug/l2_forward_event.rst (+698/-0)
doc/guides/sample_app_ug/l2_forward_job_stats.rst (+4/-4)
doc/guides/sample_app_ug/l2_forward_real_virtual.rst (+4/-4)
doc/guides/sample_app_ug/l3_forward.rst (+9/-6)
doc/guides/sample_app_ug/l3_forward_power_man.rst (+28/-0)
doc/guides/sample_app_ug/link_status_intr.rst (+10/-7)
doc/guides/sample_app_ug/ntb.rst (+94/-0)
doc/guides/sample_app_ug/packet_ordering.rst (+3/-1)
doc/guides/sample_app_ug/performance_thread.rst (+2/-2)
doc/guides/sample_app_ug/ptpclient.rst (+5/-5)
doc/guides/sample_app_ug/qos_scheduler.rst (+82/-12)
doc/guides/sample_app_ug/rxtx_callbacks.rst (+13/-5)
doc/guides/sample_app_ug/server_node_efd.rst (+6/-6)
doc/guides/sample_app_ug/service_cores.rst (+1/-1)
doc/guides/sample_app_ug/skeleton.rst (+7/-5)
doc/guides/sample_app_ug/tep_termination.rst (+1/-1)
doc/guides/sample_app_ug/test_pipeline.rst (+1/-1)
doc/guides/sample_app_ug/timer.rst (+1/-1)
doc/guides/sample_app_ug/vhost_blk.rst (+16/-30)
doc/guides/sample_app_ug/vm_power_management.rst (+45/-52)
doc/guides/sample_app_ug/vmdq_dcb_forwarding.rst (+4/-4)
doc/guides/testpmd_app_ug/build_app.rst (+1/-1)
doc/guides/testpmd_app_ug/run_app.rst (+55/-4)
doc/guides/testpmd_app_ug/testpmd_funcs.rst (+300/-114)
doc/guides/tools/comp_perf.rst (+110/-0)
doc/guides/tools/cryptoperf.rst (+10/-0)
doc/guides/tools/devbind.rst (+1/-28)
doc/guides/tools/index.rst (+2/-28)
doc/guides/tools/pdump.rst (+10/-1)
doc/guides/tools/pmdinfo.rst (+1/-27)
doc/guides/tools/proc_info.rst (+30/-2)
doc/guides/tools/testbbdev.rst (+5/-6)
doc/guides/tools/testeventdev.rst (+37/-14)
doc/guides/windows_gsg/build_dpdk.rst (+89/-0)
doc/guides/windows_gsg/index.rst (+14/-0)
doc/guides/windows_gsg/intro.rst (+20/-0)
drivers/baseband/Makefile (+2/-0)
drivers/baseband/fpga_lte_fec/Makefile (+26/-0)
drivers/baseband/fpga_lte_fec/fpga_lte_fec.c (+2675/-0)
drivers/baseband/fpga_lte_fec/fpga_lte_fec.h (+74/-0)
drivers/baseband/fpga_lte_fec/meson.build (+6/-0)
drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map (+10/-0)
drivers/baseband/meson.build (+3/-3)
drivers/baseband/null/Makefile (+0/-3)
drivers/baseband/null/meson.build (+0/-1)
drivers/baseband/null/rte_pmd_bbdev_null_version.map (+1/-1)
drivers/baseband/turbo_sw/Makefile (+20/-9)
drivers/baseband/turbo_sw/bbdev_turbo_software.c (+847/-158)
drivers/baseband/turbo_sw/meson.build (+40/-0)
drivers/baseband/turbo_sw/rte_pmd_bbdev_turbo_sw_version.map (+1/-1)
drivers/bus/dpaa/Makefile (+1/-4)
drivers/bus/dpaa/base/fman/fman.c (+8/-7)
drivers/bus/dpaa/base/fman/netcfg_layer.c (+5/-5)
drivers/bus/dpaa/base/qbman/dpaa_sys.h (+2/-1)
drivers/bus/dpaa/base/qbman/qman.c (+77/-22)
drivers/bus/dpaa/base/qbman/qman_driver.c (+40/-64)
drivers/bus/dpaa/base/qbman/qman_priv.h (+12/-3)
drivers/bus/dpaa/dpaa_bus.c (+177/-73)
drivers/bus/dpaa/include/fman.h (+2/-1)
drivers/bus/dpaa/include/fsl_qman.h (+27/-3)
drivers/bus/dpaa/include/fsl_usd.h (+6/-2)
drivers/bus/dpaa/include/netcfg.h (+2/-2)
drivers/bus/dpaa/meson.build (+6/-5)
drivers/bus/dpaa/rte_bus_dpaa_version.map (+38/-60)
drivers/bus/dpaa/rte_dpaa_bus.h (+7/-2)
drivers/bus/fslmc/Makefile (+1/-3)
drivers/bus/fslmc/fslmc_bus.c (+157/-55)
drivers/bus/fslmc/fslmc_vfio.c (+241/-56)
drivers/bus/fslmc/fslmc_vfio.h (+6/-1)
drivers/bus/fslmc/mc/dpci.c (+1/-75)
drivers/bus/fslmc/mc/dpcon.c (+1/-30)
drivers/bus/fslmc/mc/fsl_dpci.h (+1/-21)
drivers/bus/fslmc/mc/fsl_dpcon.h (+1/-19)
drivers/bus/fslmc/mc/fsl_dpio_cmd.h (+2/-2)
drivers/bus/fslmc/mc/fsl_dpmng.h (+2/-2)
drivers/bus/fslmc/meson.build (+3/-4)
drivers/bus/fslmc/portal/dpaa2_hw_dpio.c (+74/-7)
drivers/bus/fslmc/portal/dpaa2_hw_dpio.h (+5/-5)
drivers/bus/fslmc/portal/dpaa2_hw_pvt.h (+48/-9)
drivers/bus/fslmc/qbman/include/fsl_qbman_base.h (+94/-1)
drivers/bus/fslmc/qbman/include/fsl_qbman_portal.h (+82/-1)
drivers/bus/fslmc/qbman/qbman_portal.c (+518/-54)
drivers/bus/fslmc/qbman/qbman_portal.h (+3/-3)
drivers/bus/fslmc/qbman/qbman_sys.h (+34/-13)
drivers/bus/fslmc/rte_bus_fslmc_version.map (+62/-78)
drivers/bus/fslmc/rte_fslmc.h (+3/-1)
drivers/bus/ifpga/Makefile (+0/-3)
drivers/bus/ifpga/ifpga_bus.c (+13/-0)
drivers/bus/ifpga/meson.build (+0/-2)
drivers/bus/ifpga/rte_bus_ifpga.h (+16/-0)
drivers/bus/ifpga/rte_bus_ifpga_version.map (+4/-3)
drivers/bus/pci/Makefile (+3/-5)
drivers/bus/pci/bsd/pci.c (+17/-6)
drivers/bus/pci/linux/pci.c (+49/-149)
drivers/bus/pci/linux/pci_uio.c (+10/-2)
drivers/bus/pci/linux/pci_vfio.c (+33/-11)
drivers/bus/pci/meson.build (+1/-3)
drivers/bus/pci/pci_common.c (+147/-1)
drivers/bus/pci/private.h (+11/-0)
drivers/bus/pci/rte_bus_pci.h (+42/-2)
drivers/bus/pci/rte_bus_pci_version.map (+1/-1)
drivers/bus/vdev/Makefile (+0/-3)
drivers/bus/vdev/meson.build (+0/-2)
drivers/bus/vdev/rte_bus_vdev.h (+6/-0)
drivers/bus/vdev/rte_bus_vdev_version.map (+3/-9)
drivers/bus/vdev/vdev.c (+6/-1)
drivers/bus/vmbus/Makefile (+2/-4)
drivers/bus/vmbus/linux/vmbus_uio.c (+15/-10)
drivers/bus/vmbus/meson.build (+2/-3)
drivers/bus/vmbus/rte_bus_vmbus_version.map (+2/-10)
drivers/bus/vmbus/vmbus_common_uio.c (+60/-74)
drivers/common/Makefile (+8/-1)
drivers/common/cpt/Makefile (+0/-2)
drivers/common/cpt/cpt_common.h (+12/-18)
drivers/common/cpt/cpt_hw_types.h (+59/-0)
drivers/common/cpt/cpt_mcode_defines.h (+45/-2)
drivers/common/cpt/cpt_pmd_logs.h (+5/-7)
drivers/common/cpt/cpt_pmd_ops_helper.c (+15/-0)
drivers/common/cpt/cpt_pmd_ops_helper.h (+9/-0)
drivers/common/cpt/cpt_ucode.h (+272/-334)
drivers/common/cpt/cpt_ucode_asym.h (+453/-0)
drivers/common/cpt/rte_common_cpt_version.map (+4/-1)
drivers/common/dpaax/Makefile (+6/-7)
drivers/common/dpaax/caamflib/desc.h (+9/-3)
drivers/common/dpaax/caamflib/desc/algo.h (+246/-100)
drivers/common/dpaax/caamflib/desc/common.h (+1/-1)
drivers/common/dpaax/caamflib/desc/ipsec.h (+85/-112)
drivers/common/dpaax/caamflib/desc/pdcp.h (+1174/-215)
drivers/common/dpaax/caamflib/rta/fifo_load_store_cmd.h (+5/-4)
drivers/common/dpaax/caamflib/rta/header_cmd.h (+17/-4)
drivers/common/dpaax/caamflib/rta/jump_cmd.h (+1/-2)
drivers/common/dpaax/caamflib/rta/key_cmd.h (+3/-2)
drivers/common/dpaax/caamflib/rta/load_cmd.h (+7/-3)
drivers/common/dpaax/caamflib/rta/math_cmd.h (+7/-5)
drivers/common/dpaax/caamflib/rta/move_cmd.h (+4/-4)
drivers/common/dpaax/caamflib/rta/nfifo_cmd.h (+5/-5)
drivers/common/dpaax/caamflib/rta/operation_cmd.h (+3/-3)
drivers/common/dpaax/caamflib/rta/protocol_cmd.h (+9/-2)
drivers/common/dpaax/caamflib/rta/sec_run_time_asm.h (+21/-10)
drivers/common/dpaax/caamflib/rta/seq_in_out_ptr_cmd.h (+5/-2)
drivers/common/dpaax/caamflib/rta/store_cmd.h (+3/-3)
drivers/common/dpaax/compat.h (+8/-7)
drivers/common/dpaax/dpaa_of.c (+36/-34)
drivers/common/dpaax/dpaa_of.h (+20/-5)
drivers/common/dpaax/dpaax_iova_table.c (+14/-8)
drivers/common/dpaax/dpaax_iova_table.h (+2/-0)
drivers/common/dpaax/dpaax_logs.h (+10/-0)
drivers/common/dpaax/meson.build (+10/-3)
drivers/common/dpaax/rte_common_dpaax_version.map (+14/-2)
drivers/common/meson.build (+1/-1)
drivers/common/mvep/Makefile (+0/-3)
drivers/common/mvep/meson.build (+1/-0)
drivers/common/mvep/rte_common_mvep_version.map (+4/-2)
drivers/common/octeontx/Makefile (+0/-2)
drivers/common/octeontx/octeontx_mbox.c (+110/-2)
drivers/common/octeontx/octeontx_mbox.h (+11/-2)
drivers/common/octeontx/rte_common_octeontx_version.map (+7/-2)
drivers/common/octeontx2/Makefile (+38/-0)
drivers/common/octeontx2/hw/otx2_nix.h (+1391/-0)
drivers/common/octeontx2/hw/otx2_npa.h (+305/-0)
drivers/common/octeontx2/hw/otx2_npc.h (+480/-0)
drivers/common/octeontx2/hw/otx2_rvu.h (+212/-0)
drivers/common/octeontx2/hw/otx2_sso.h (+209/-0)
drivers/common/octeontx2/hw/otx2_ssow.h (+56/-0)
drivers/common/octeontx2/hw/otx2_tim.h (+34/-0)
drivers/common/octeontx2/meson.build (+25/-0)
drivers/common/octeontx2/otx2_common.c (+248/-0)
drivers/common/octeontx2/otx2_common.h (+157/-0)
drivers/common/octeontx2/otx2_dev.c (+1040/-0)
drivers/common/octeontx2/otx2_dev.h (+146/-0)
drivers/common/octeontx2/otx2_io_arm64.h (+95/-0)
drivers/common/octeontx2/otx2_io_generic.h (+63/-0)
drivers/common/octeontx2/otx2_irq.c (+254/-0)
drivers/common/octeontx2/otx2_irq.h (+25/-0)
drivers/common/octeontx2/otx2_mbox.c (+422/-0)
drivers/common/octeontx2/otx2_mbox.h (+1709/-0)
drivers/common/octeontx2/rte_common_octeontx2_version.map (+35/-0)
drivers/common/qat/Makefile (+8/-2)
drivers/common/qat/meson.build (+1/-0)
drivers/common/qat/qat_adf/icp_qat_fw_comp.h (+73/-0)
drivers/common/qat/qat_adf/icp_qat_fw_la.h (+15/-4)
drivers/common/qat/qat_adf/icp_qat_fw_mmp_ids.h (+1538/-0)
drivers/common/qat/qat_adf/icp_qat_fw_pke.h (+426/-0)
drivers/common/qat/qat_adf/icp_qat_hw.h (+19/-0)
drivers/common/qat/qat_adf/qat_pke_functionality_arrays.h (+79/-0)
drivers/common/qat/qat_device.h (+11/-1)
drivers/common/qat/qat_logs.c (+1/-2)
drivers/common/qat/qat_logs.h (+1/-2)
drivers/common/qat/qat_qp.c (+11/-1)
drivers/common/qat/qat_qp.h (+2/-1)
drivers/compress/isal/Makefile (+0/-3)
drivers/compress/isal/isal_compress_pmd.c (+89/-20)
drivers/compress/isal/isal_compress_pmd_ops.c (+4/-2)
drivers/compress/isal/meson.build (+2/-2)
drivers/compress/isal/rte_pmd_isal_version.map (+1/-1)
drivers/compress/octeontx/Makefile (+0/-3)
drivers/compress/octeontx/include/zip_regs.h (+0/-8)
drivers/compress/octeontx/otx_zip.h (+1/-1)
drivers/compress/octeontx/otx_zip_pmd.c (+2/-0)
drivers/compress/octeontx/rte_pmd_octeontx_compress_version.map (+1/-1)
drivers/compress/qat/qat_comp.c (+366/-28)
drivers/compress/qat/qat_comp.h (+46/-8)
drivers/compress/qat/qat_comp_pmd.c (+198/-25)
drivers/compress/qat/qat_comp_pmd.h (+2/-0)
drivers/compress/qat/rte_pmd_qat_version.map (+1/-1)
drivers/compress/zlib/Makefile (+0/-3)
drivers/compress/zlib/meson.build (+1/-1)
drivers/compress/zlib/rte_pmd_zlib_version.map (+1/-1)
drivers/compress/zlib/zlib_pmd_private.h (+3/-3)
drivers/crypto/Makefile (+4/-2)
drivers/crypto/aesni_gcm/Makefile (+17/-6)
drivers/crypto/aesni_gcm/aesni_gcm_ops.h (+9/-57)
drivers/crypto/aesni_gcm/aesni_gcm_pmd.c (+103/-35)
drivers/crypto/aesni_gcm/aesni_gcm_pmd_ops.c (+5/-4)
drivers/crypto/aesni_gcm/aesni_gcm_pmd_private.h (+10/-4)
drivers/crypto/aesni_gcm/meson.build (+13/-0)
drivers/crypto/aesni_gcm/rte_pmd_aesni_gcm_version.map (+1/-1)
drivers/crypto/aesni_mb/Makefile (+18/-5)
drivers/crypto/aesni_mb/aesni_mb_pmd_private.h (+45/-16)
drivers/crypto/aesni_mb/meson.build (+14/-0)
drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c (+325/-161)
drivers/crypto/aesni_mb/rte_aesni_mb_pmd_ops.c (+155/-61)
drivers/crypto/aesni_mb/rte_pmd_aesni_mb_version.map (+1/-1)
drivers/crypto/armv8/Makefile (+1/-3)
drivers/crypto/armv8/armv8_pmd_private.h (+5/-3)
drivers/crypto/armv8/rte_armv8_pmd.c (+7/-6)
drivers/crypto/armv8/rte_armv8_pmd_ops.c (+4/-3)
drivers/crypto/armv8/rte_pmd_armv8_version.map (+1/-1)
drivers/crypto/caam_jr/Makefile (+3/-6)
drivers/crypto/caam_jr/caam_jr.c (+31/-57)
drivers/crypto/caam_jr/caam_jr_hw.c (+0/-5)
drivers/crypto/caam_jr/caam_jr_pvt.h (+7/-1)
drivers/crypto/caam_jr/caam_jr_uio.c (+0/-5)
drivers/crypto/caam_jr/meson.build (+5/-3)
drivers/crypto/caam_jr/rte_pmd_caam_jr_version.map (+1/-2)
drivers/crypto/ccp/Makefile (+0/-3)
drivers/crypto/ccp/ccp_crypto.c (+16/-8)
drivers/crypto/ccp/ccp_crypto.h (+5/-2)
drivers/crypto/ccp/ccp_dev.h (+1/-1)
drivers/crypto/ccp/ccp_pmd_ops.c (+17/-16)
drivers/crypto/ccp/ccp_pmd_private.h (+6/-2)
drivers/crypto/ccp/meson.build (+4/-3)
drivers/crypto/ccp/rte_ccp_pmd.c (+51/-21)
drivers/crypto/ccp/rte_pmd_ccp_version.map (+1/-2)
drivers/crypto/dpaa2_sec/Makefile (+2/-4)
drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c (+716/-288)
drivers/crypto/dpaa2_sec/dpaa2_sec_event.h (+1/-1)
drivers/crypto/dpaa2_sec/dpaa2_sec_logs.h (+3/-1)
drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h (+153/-9)
drivers/crypto/dpaa2_sec/meson.build (+4/-5)
drivers/crypto/dpaa2_sec/rte_pmd_dpaa2_sec_version.map (+3/-7)
drivers/crypto/dpaa_sec/Makefile (+3/-6)
drivers/crypto/dpaa_sec/dpaa_sec.c (+1536/-465)
drivers/crypto/dpaa_sec/dpaa_sec.h (+378/-26)
drivers/crypto/dpaa_sec/dpaa_sec_event.h (+19/-0)
drivers/crypto/dpaa_sec/meson.build (+6/-3)
drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map (+5/-1)
drivers/crypto/kasumi/Makefile (+1/-3)
drivers/crypto/kasumi/kasumi_pmd_private.h (+5/-3)
drivers/crypto/kasumi/meson.build (+2/-0)
drivers/crypto/kasumi/rte_kasumi_pmd.c (+7/-5)
drivers/crypto/kasumi/rte_kasumi_pmd_ops.c (+4/-3)
drivers/crypto/kasumi/rte_pmd_kasumi_version.map (+1/-1)
drivers/crypto/meson.build (+18/-3)
drivers/crypto/mvsam/Makefile (+0/-3)
drivers/crypto/mvsam/meson.build (+1/-0)
drivers/crypto/mvsam/mrvl_pmd_private.h (+6/-3)
drivers/crypto/mvsam/rte_mrvl_pmd.c (+40/-6)
drivers/crypto/mvsam/rte_mrvl_pmd_ops.c (+12/-3)
drivers/crypto/mvsam/rte_pmd_mvsam_version.map (+1/-1)
drivers/crypto/nitrox/Makefile (+31/-0)
drivers/crypto/nitrox/meson.build (+19/-0)
drivers/crypto/nitrox/nitrox_csr.h (+40/-0)
drivers/crypto/nitrox/nitrox_device.c (+124/-0)
drivers/crypto/nitrox/nitrox_device.h (+22/-0)
drivers/crypto/nitrox/nitrox_hal.c (+236/-0)
drivers/crypto/nitrox/nitrox_hal.h (+165/-0)
drivers/crypto/nitrox/nitrox_logs.c (+14/-0)
drivers/crypto/nitrox/nitrox_logs.h (+15/-0)
drivers/crypto/nitrox/nitrox_qp.c (+115/-0)
drivers/crypto/nitrox/nitrox_qp.h (+104/-0)
drivers/crypto/nitrox/nitrox_sym.c (+728/-0)
drivers/crypto/nitrox/nitrox_sym.h (+13/-0)
drivers/crypto/nitrox/nitrox_sym_capabilities.c (+99/-0)
drivers/crypto/nitrox/nitrox_sym_capabilities.h (+12/-0)
drivers/crypto/nitrox/nitrox_sym_ctx.h (+84/-0)
drivers/crypto/nitrox/nitrox_sym_reqmgr.c (+635/-0)
drivers/crypto/nitrox/nitrox_sym_reqmgr.h (+23/-0)
drivers/crypto/nitrox/rte_pmd_nitrox_version.map (+3/-0)
drivers/crypto/null/Makefile (+0/-3)
drivers/crypto/null/null_crypto_pmd.c (+4/-2)
drivers/crypto/null/null_crypto_pmd_ops.c (+3/-2)
drivers/crypto/null/null_crypto_pmd_private.h (+3/-1)
drivers/crypto/null/rte_pmd_null_crypto_version.map (+1/-1)
drivers/crypto/octeontx/Makefile (+2/-11)
drivers/crypto/octeontx/meson.build (+3/-2)
drivers/crypto/octeontx/otx_cryptodev.c (+8/-19)
drivers/crypto/octeontx/otx_cryptodev.h (+5/-1)
drivers/crypto/octeontx/otx_cryptodev_capabilities.c (+68/-27)
drivers/crypto/octeontx/otx_cryptodev_capabilities.h (+2/-3)
drivers/crypto/octeontx/otx_cryptodev_hw_access.c (+123/-11)
drivers/crypto/octeontx/otx_cryptodev_hw_access.h (+8/-3)
drivers/crypto/octeontx/otx_cryptodev_mbox.c (+27/-2)
drivers/crypto/octeontx/otx_cryptodev_mbox.h (+25/-7)
drivers/crypto/octeontx/otx_cryptodev_ops.c (+542/-127)
drivers/crypto/octeontx/otx_cryptodev_ops.h (+2/-3)
drivers/crypto/octeontx/rte_pmd_octeontx_crypto_version.map (+1/-2)
drivers/crypto/octeontx2/Makefile (+47/-0)
drivers/crypto/octeontx2/meson.build (+34/-0)
drivers/crypto/octeontx2/otx2_cryptodev.c (+157/-0)
drivers/crypto/octeontx2/otx2_cryptodev.h (+43/-0)
drivers/crypto/octeontx2/otx2_cryptodev_capabilities.c (+639/-0)
drivers/crypto/octeontx2/otx2_cryptodev_capabilities.h (+16/-0)
drivers/crypto/octeontx2/otx2_cryptodev_hw_access.c (+225/-0)
drivers/crypto/octeontx2/otx2_cryptodev_hw_access.h (+169/-0)
drivers/crypto/octeontx2/otx2_cryptodev_mbox.c (+175/-0)
drivers/crypto/octeontx2/otx2_cryptodev_mbox.h (+25/-0)
drivers/crypto/octeontx2/otx2_cryptodev_ops.c (+1106/-0)
drivers/crypto/octeontx2/otx2_cryptodev_ops.h (+21/-0)
drivers/crypto/octeontx2/rte_pmd_octeontx2_crypto_version.map (+3/-0)
drivers/crypto/openssl/Makefile (+1/-3)
drivers/crypto/openssl/meson.build (+2/-1)
drivers/crypto/openssl/openssl_pmd_private.h (+2/-0)
drivers/crypto/openssl/rte_openssl_pmd.c (+107/-48)
drivers/crypto/openssl/rte_openssl_pmd_ops.c (+4/-3)
drivers/crypto/openssl/rte_pmd_openssl_version.map (+1/-1)
drivers/crypto/qat/meson.build (+5/-2)
drivers/crypto/qat/qat_asym.c (+788/-0)
drivers/crypto/qat/qat_asym.h (+95/-0)
drivers/crypto/qat/qat_asym_capabilities.h (+63/-0)
drivers/crypto/qat/qat_asym_pmd.c (+312/-0)
drivers/crypto/qat/qat_asym_pmd.h (+50/-0)
drivers/crypto/qat/qat_sym.c (+71/-19)
drivers/crypto/qat/qat_sym_capabilities.h (+24/-4)
drivers/crypto/qat/qat_sym_pmd.c (+3/-3)
drivers/crypto/qat/qat_sym_pmd.h (+1/-2)
drivers/crypto/qat/qat_sym_session.c (+102/-10)
drivers/crypto/qat/qat_sym_session.h (+9/-4)
drivers/crypto/scheduler/Makefile (+0/-3)
drivers/crypto/scheduler/rte_cryptodev_scheduler.c (+4/-4)
drivers/crypto/scheduler/rte_pmd_crypto_scheduler_version.map (+7/-12)
drivers/crypto/scheduler/scheduler_pmd_ops.c (+2/-3)
drivers/crypto/snow3g/Makefile (+1/-3)
drivers/crypto/snow3g/meson.build (+1/-0)
drivers/crypto/snow3g/rte_pmd_snow3g_version.map (+1/-1)
drivers/crypto/snow3g/rte_snow3g_pmd.c (+26/-9)
drivers/crypto/snow3g/rte_snow3g_pmd_ops.c (+4/-3)
drivers/crypto/snow3g/snow3g_pmd_private.h (+6/-3)
drivers/crypto/virtio/Makefile (+0/-2)
drivers/crypto/virtio/rte_pmd_virtio_crypto_version.map (+1/-1)
drivers/crypto/virtio/virtio_cryptodev.c (+25/-13)
drivers/crypto/virtio/virtio_cryptodev.h (+2/-0)
drivers/crypto/virtio/virtio_pci.c (+3/-3)
drivers/crypto/virtio/virtio_pci.h (+3/-3)
drivers/crypto/zuc/Makefile (+1/-3)
drivers/crypto/zuc/meson.build (+2/-0)
drivers/crypto/zuc/rte_pmd_zuc_version.map (+1/-1)
drivers/crypto/zuc/rte_zuc_pmd.c (+7/-5)
drivers/crypto/zuc/rte_zuc_pmd_ops.c (+4/-3)
drivers/crypto/zuc/zuc_pmd_private.h (+5/-3)
drivers/event/Makefile (+1/-0)
drivers/event/dpaa/Makefile (+4/-3)
drivers/event/dpaa/dpaa_eventdev.c (+225/-7)
drivers/event/dpaa/dpaa_eventdev.h (+6/-1)
drivers/event/dpaa/meson.build (+4/-2)
drivers/event/dpaa/rte_pmd_dpaa_event_version.map (+1/-2)
drivers/event/dpaa2/Makefile (+5/-8)
drivers/event/dpaa2/dpaa2_eventdev.c (+135/-31)
drivers/event/dpaa2/dpaa2_eventdev.h (+4/-12)
drivers/event/dpaa2/dpaa2_eventdev_logs.h (+7/-1)
drivers/event/dpaa2/dpaa2_eventdev_selftest.c (+833/-0)
drivers/event/dpaa2/meson.build (+4/-4)
drivers/event/dpaa2/rte_pmd_dpaa2_event_version.map (+1/-1)
drivers/event/dsw/Makefile (+0/-3)
drivers/event/dsw/meson.build (+3/-1)
drivers/event/dsw/rte_pmd_dsw_event_version.map (+1/-1)
drivers/event/meson.build (+1/-1)
drivers/event/octeontx/Makefile (+0/-3)
drivers/event/octeontx/meson.build (+0/-1)
drivers/event/octeontx/rte_pmd_octeontx_event_version.map (+1/-1)
drivers/event/octeontx/ssovf_evdev.c (+5/-1)
drivers/event/octeontx/ssovf_probe.c (+3/-4)
drivers/event/octeontx/ssovf_worker.h (+15/-2)
drivers/event/octeontx/timvf_evdev.c (+6/-6)
drivers/event/octeontx/timvf_evdev.h (+2/-6)
drivers/event/octeontx/timvf_probe.c (+42/-25)
drivers/event/octeontx2/Makefile (+47/-0)
drivers/event/octeontx2/meson.build (+34/-0)
drivers/event/octeontx2/otx2_evdev.c (+1784/-0)
drivers/event/octeontx2/otx2_evdev.h (+400/-0)
drivers/event/octeontx2/otx2_evdev_adptr.c (+492/-0)
drivers/event/octeontx2/otx2_evdev_irq.c (+272/-0)
drivers/event/octeontx2/otx2_evdev_selftest.c (+1511/-0)
drivers/event/octeontx2/otx2_evdev_stats.h (+286/-0)
drivers/event/octeontx2/otx2_tim_evdev.c (+773/-0)
drivers/event/octeontx2/otx2_tim_evdev.h (+253/-0)
drivers/event/octeontx2/otx2_tim_worker.c (+190/-0)
drivers/event/octeontx2/otx2_tim_worker.h (+583/-0)
drivers/event/octeontx2/otx2_worker.c (+371/-0)
drivers/event/octeontx2/otx2_worker.h (+304/-0)
drivers/event/octeontx2/otx2_worker_dual.c (+343/-0)
drivers/event/octeontx2/otx2_worker_dual.h (+105/-0)
drivers/event/octeontx2/rte_pmd_octeontx2_event_version.map (+3/-0)
drivers/event/opdl/Makefile (+0/-3)
drivers/event/opdl/opdl_ring.c (+2/-2)
drivers/event/opdl/opdl_test.c (+0/-3)
drivers/event/opdl/rte_pmd_opdl_event_version.map (+1/-1)
drivers/event/skeleton/Makefile (+0/-2)
drivers/event/skeleton/rte_pmd_skeleton_event_version.map (+1/-2)
drivers/event/sw/Makefile (+0/-4)
drivers/event/sw/meson.build (+0/-1)
drivers/event/sw/rte_pmd_sw_event_version.map (+1/-1)
drivers/event/sw/sw_evdev_xstats.c (+2/-3)
drivers/mempool/Makefile (+1/-0)
drivers/mempool/bucket/Makefile (+1/-2)
drivers/mempool/bucket/meson.build (+2/-0)
drivers/mempool/bucket/rte_mempool_bucket.c (+8/-2)
drivers/mempool/bucket/rte_mempool_bucket_version.map (+1/-2)
drivers/mempool/dpaa/Makefile (+1/-3)
drivers/mempool/dpaa/dpaa_mempool.c (+24/-7)
drivers/mempool/dpaa/dpaa_mempool.h (+2/-2)
drivers/mempool/dpaa/meson.build (+3/-2)
drivers/mempool/dpaa/rte_mempool_dpaa_version.map (+1/-1)
drivers/mempool/dpaa2/Makefile (+1/-4)
drivers/mempool/dpaa2/dpaa2_hw_mempool.c (+46/-12)
drivers/mempool/dpaa2/dpaa2_hw_mempool.h (+2/-2)
drivers/mempool/dpaa2/meson.build (+3/-4)
drivers/mempool/dpaa2/rte_mempool_dpaa2_version.map (+3/-9)
drivers/mempool/meson.build (+1/-1)
drivers/mempool/octeontx/Makefile (+2/-2)
drivers/mempool/octeontx/meson.build (+2/-0)
drivers/mempool/octeontx/octeontx_fpavf.c (+60/-29)
drivers/mempool/octeontx/rte_mempool_octeontx.c (+12/-9)
drivers/mempool/octeontx/rte_mempool_octeontx_version.map (+1/-1)
drivers/mempool/octeontx2/Makefile (+42/-0)
drivers/mempool/octeontx2/meson.build (+25/-0)
drivers/mempool/octeontx2/otx2_mempool.c (+455/-0)
drivers/mempool/octeontx2/otx2_mempool.h (+219/-0)
drivers/mempool/octeontx2/otx2_mempool_debug.c (+135/-0)
drivers/mempool/octeontx2/otx2_mempool_irq.c (+303/-0)
drivers/mempool/octeontx2/otx2_mempool_ops.c (+776/-0)
drivers/mempool/octeontx2/rte_mempool_octeontx2_version.map (+8/-0)
drivers/mempool/ring/Makefile (+0/-2)
drivers/mempool/ring/rte_mempool_ring_version.map (+1/-2)
drivers/mempool/stack/Makefile (+2/-3)
drivers/mempool/stack/meson.build (+5/-1)
drivers/mempool/stack/rte_mempool_stack.c (+47/-68)
drivers/mempool/stack/rte_mempool_stack_version.map (+1/-2)
drivers/meson.build (+98/-40)
drivers/net/Makefile (+10/-1)
drivers/net/af_packet/Makefile (+0/-2)
drivers/net/af_packet/meson.build (+2/-1)
drivers/net/af_packet/rte_eth_af_packet.c (+63/-39)
drivers/net/af_packet/rte_pmd_af_packet_version.map (+1/-2)
drivers/net/af_xdp/Makefile (+26/-0)
drivers/net/af_xdp/af_xdp_deps.h (+15/-0)
drivers/net/af_xdp/meson.build (+16/-0)
drivers/net/af_xdp/rte_eth_af_xdp.c (+1375/-0)
drivers/net/af_xdp/rte_pmd_af_xdp_version.map (+3/-0)
drivers/net/ark/Makefile (+1/-3)
drivers/net/ark/ark_ethdev.c (+33/-14)
drivers/net/ark/ark_ext.h (+2/-2)
drivers/net/ark/ark_global.h (+3/-2)
drivers/net/ark/ark_logs.h (+14/-11)
drivers/net/ark/ark_pktchkr.c (+2/-1)
drivers/net/ark/ark_pktgen.c (+2/-1)
drivers/net/ark/rte_pmd_ark_version.map (+2/-3)
drivers/net/atlantic/Makefile (+2/-2)
drivers/net/atlantic/atl_common.h (+1/-1)
drivers/net/atlantic/atl_ethdev.c (+435/-62)
drivers/net/atlantic/atl_ethdev.h (+13/-1)
drivers/net/atlantic/atl_types.h (+43/-2)
drivers/net/atlantic/hw_atl/hw_atl_b0.c (+0/-1)
drivers/net/atlantic/hw_atl/hw_atl_utils.c (+4/-5)
drivers/net/atlantic/hw_atl/hw_atl_utils.h (+158/-8)
drivers/net/atlantic/hw_atl/hw_atl_utils_fw2x.c (+110/-22)
drivers/net/atlantic/meson.build (+3/-0)
drivers/net/atlantic/rte_pmd_atlantic.c (+102/-0)
drivers/net/atlantic/rte_pmd_atlantic.h (+144/-0)
drivers/net/atlantic/rte_pmd_atlantic_version.map (+12/-2)
drivers/net/avp/Makefile (+1/-2)
drivers/net/avp/avp_ethdev.c (+72/-30)
drivers/net/avp/meson.build (+4/-2)
drivers/net/avp/rte_avp_common.h (+1/-1)
drivers/net/avp/rte_pmd_avp_version.map (+1/-1)
drivers/net/axgbe/Makefile (+2/-3)
drivers/net/axgbe/axgbe_dev.c (+2/-2)
drivers/net/axgbe/axgbe_ethdev.c (+33/-21)
drivers/net/axgbe/axgbe_ethdev.h (+2/-2)
drivers/net/axgbe/axgbe_phy_impl.c (+3/-3)
drivers/net/axgbe/axgbe_rxtx.c (+1/-1)
drivers/net/axgbe/meson.build (+4/-1)
drivers/net/axgbe/rte_pmd_axgbe_version.map (+1/-1)
drivers/net/bnx2x/Makefile (+1/-2)
drivers/net/bnx2x/bnx2x.c (+32/-51)
drivers/net/bnx2x/bnx2x.h (+78/-21)
drivers/net/bnx2x/bnx2x_ethdev.c (+23/-12)
drivers/net/bnx2x/bnx2x_ethdev.h (+2/-1)
drivers/net/bnx2x/bnx2x_osal.h (+35/-0)
drivers/net/bnx2x/bnx2x_rxtx.c (+6/-4)
drivers/net/bnx2x/bnx2x_vfpf.c (+4/-4)
drivers/net/bnx2x/bnx2x_vfpf.h (+1/-1)
drivers/net/bnx2x/ecore_fw_defs.h (+135/-117)
drivers/net/bnx2x/ecore_hsi.h (+1940/-1568)
drivers/net/bnx2x/ecore_init.h (+109/-105)
drivers/net/bnx2x/ecore_init_ops.h (+87/-105)
drivers/net/bnx2x/ecore_mfw_req.h (+9/-2)
drivers/net/bnx2x/ecore_reg.h (+4485/-2132)
drivers/net/bnx2x/ecore_sp.c (+26/-22)
drivers/net/bnx2x/ecore_sp.h (+260/-50)
drivers/net/bnx2x/elink.c (+1/-1)
drivers/net/bnx2x/meson.build (+3/-1)
drivers/net/bnx2x/rte_pmd_bnx2x_version.map (+1/-2)
drivers/net/bnxt/Makefile (+3/-2)
drivers/net/bnxt/bnxt.h (+343/-33)
drivers/net/bnxt/bnxt_cpr.c (+122/-7)
drivers/net/bnxt/bnxt_cpr.h (+45/-9)
drivers/net/bnxt/bnxt_ethdev.c (+1854/-627)
drivers/net/bnxt/bnxt_filter.c (+17/-16)
drivers/net/bnxt/bnxt_filter.h (+31/-6)
drivers/net/bnxt/bnxt_flow.c (+969/-144)
drivers/net/bnxt/bnxt_hwrm.c (+1275/-216)
drivers/net/bnxt/bnxt_hwrm.h (+52/-4)
drivers/net/bnxt/bnxt_irq.c (+45/-17)
drivers/net/bnxt/bnxt_irq.h (+1/-3)
drivers/net/bnxt/bnxt_ring.c (+504/-137)
drivers/net/bnxt/bnxt_ring.h (+54/-3)
drivers/net/bnxt/bnxt_rxq.c (+177/-78)
drivers/net/bnxt/bnxt_rxq.h (+5/-1)
drivers/net/bnxt/bnxt_rxr.c (+147/-54)
drivers/net/bnxt/bnxt_rxr.h (+46/-10)
drivers/net/bnxt/bnxt_rxtx_vec_sse.c (+510/-0)
drivers/net/bnxt/bnxt_stats.c (+108/-37)
drivers/net/bnxt/bnxt_stats.h (+2/-2)
drivers/net/bnxt/bnxt_txq.c (+27/-5)
drivers/net/bnxt/bnxt_txq.h (+2/-0)
drivers/net/bnxt/bnxt_txr.c (+94/-36)
drivers/net/bnxt/bnxt_txr.h (+23/-1)
drivers/net/bnxt/bnxt_util.c (+11/-0)
drivers/net/bnxt/bnxt_util.h (+5/-0)
drivers/net/bnxt/bnxt_vnic.c (+64/-17)
drivers/net/bnxt/bnxt_vnic.h (+8/-1)
drivers/net/bnxt/hsi_struct_def_dpdk.h (+23910/-15917)
drivers/net/bnxt/meson.build (+4/-1)
drivers/net/bnxt/rte_pmd_bnxt.c (+116/-20)
drivers/net/bnxt/rte_pmd_bnxt.h (+2/-2)
drivers/net/bnxt/rte_pmd_bnxt_version.map (+2/-2)
drivers/net/bonding/Makefile (+1/-3)
drivers/net/bonding/eth_bond_8023ad_private.h (+11/-4)
drivers/net/bonding/eth_bond_private.h (+8/-9)
drivers/net/bonding/meson.build (+1/-2)
drivers/net/bonding/rte_eth_bond.h (+1/-1)
drivers/net/bonding/rte_eth_bond_8023ad.c (+142/-45)
drivers/net/bonding/rte_eth_bond_8023ad.h (+12/-12)
drivers/net/bonding/rte_eth_bond_alb.c (+56/-44)
drivers/net/bonding/rte_eth_bond_alb.h (+5/-5)
drivers/net/bonding/rte_eth_bond_api.c (+27/-8)
drivers/net/bonding/rte_eth_bond_args.c (+5/-10)
drivers/net/bonding/rte_eth_bond_flow.c (+1/-1)
drivers/net/bonding/rte_eth_bond_pmd.c (+495/-363)
drivers/net/bonding/rte_pmd_bond_version.map (+13/-34)
drivers/net/cxgbe/Makefile (+0/-4)
drivers/net/cxgbe/base/adapter.h (+15/-22)
drivers/net/cxgbe/base/common.h (+3/-2)
drivers/net/cxgbe/base/t4_hw.c (+2/-2)
drivers/net/cxgbe/base/t4_regs_values.h (+9/-0)
drivers/net/cxgbe/base/t4_tcb.h (+6/-0)
drivers/net/cxgbe/base/t4fw_interface.h (+2/-1)
drivers/net/cxgbe/base/t4vf_hw.c (+1/-1)
drivers/net/cxgbe/clip_tbl.c (+1/-1)
drivers/net/cxgbe/cxgbe.h (+14/-8)
drivers/net/cxgbe/cxgbe_compat.h (+55/-49)
drivers/net/cxgbe/cxgbe_ethdev.c (+73/-37)
drivers/net/cxgbe/cxgbe_filter.c (+147/-139)
drivers/net/cxgbe/cxgbe_filter.h (+15/-13)
drivers/net/cxgbe/cxgbe_flow.c (+246/-35)
drivers/net/cxgbe/cxgbe_main.c (+84/-65)
drivers/net/cxgbe/cxgbe_pfvf.h (+17/-7)
drivers/net/cxgbe/cxgbevf_ethdev.c (+8/-2)
drivers/net/cxgbe/cxgbevf_main.c (+14/-6)
drivers/net/cxgbe/l2t.c (+8/-6)
drivers/net/cxgbe/l2t.h (+4/-3)
drivers/net/cxgbe/mps_tcam.c (+7/-7)
drivers/net/cxgbe/mps_tcam.h (+3/-3)
drivers/net/cxgbe/rte_pmd_cxgbe_version.map (+1/-2)
drivers/net/cxgbe/sge.c (+18/-113)
drivers/net/dpaa/Makefile (+1/-3)
drivers/net/dpaa/dpaa_ethdev.c (+172/-85)
drivers/net/dpaa/dpaa_ethdev.h (+4/-2)
drivers/net/dpaa/dpaa_rxtx.c (+121/-102)
drivers/net/dpaa/meson.build (+6/-1)
drivers/net/dpaa/rte_pmd_dpaa_version.map (+4/-7)
drivers/net/dpaa2/Makefile (+10/-5)
drivers/net/dpaa2/base/dpaa2_hw_dpni.c (+57/-3)
drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h (+24/-2)
drivers/net/dpaa2/dpaa2_ethdev.c (+661/-150)
drivers/net/dpaa2/dpaa2_ethdev.h (+90/-7)
drivers/net/dpaa2/dpaa2_flow.c (+2016/-0)
drivers/net/dpaa2/dpaa2_mux.c (+247/-0)
drivers/net/dpaa2/dpaa2_ptp.c (+181/-0)
drivers/net/dpaa2/dpaa2_rxtx.c (+783/-24)
drivers/net/dpaa2/dpaa2_sparser.c (+269/-0)
drivers/net/dpaa2/dpaa2_sparser.h (+206/-0)
drivers/net/dpaa2/mc/dpdmux.c (+929/-0)
drivers/net/dpaa2/mc/dpkg.c (+4/-1)
drivers/net/dpaa2/mc/dpni.c (+580/-6)
drivers/net/dpaa2/mc/dprtc.c (+523/-0)
drivers/net/dpaa2/mc/fsl_dpdmux.h (+410/-0)
drivers/net/dpaa2/mc/fsl_dpdmux_cmd.h (+221/-0)
drivers/net/dpaa2/mc/fsl_dpni.h (+400/-21)
drivers/net/dpaa2/mc/fsl_dpni_cmd.h (+198/-18)
drivers/net/dpaa2/mc/fsl_dprtc.h (+109/-0)
drivers/net/dpaa2/mc/fsl_dprtc_cmd.h (+91/-0)
drivers/net/dpaa2/mc/fsl_net.h (+2/-0)
drivers/net/dpaa2/meson.build (+14/-4)
drivers/net/dpaa2/rte_pmd_dpaa2.h (+90/-0)
drivers/net/dpaa2/rte_pmd_dpaa2_version.map (+10/-6)
drivers/net/e1000/Makefile (+0/-2)
drivers/net/e1000/base/README (+3/-31)
drivers/net/e1000/base/e1000_80003es2lan.c (+3/-32)
drivers/net/e1000/base/e1000_80003es2lan.h (+3/-32)
drivers/net/e1000/base/e1000_82540.c (+3/-32)
drivers/net/e1000/base/e1000_82541.c (+3/-32)
drivers/net/e1000/base/e1000_82541.h (+3/-32)
drivers/net/e1000/base/e1000_82542.c (+3/-32)
drivers/net/e1000/base/e1000_82543.c (+4/-33)
drivers/net/e1000/base/e1000_82543.h (+3/-32)
drivers/net/e1000/base/e1000_82571.c (+3/-32)
drivers/net/e1000/base/e1000_82571.h (+3/-32)
drivers/net/e1000/base/e1000_82575.c (+3/-32)
drivers/net/e1000/base/e1000_82575.h (+3/-32)
drivers/net/e1000/base/e1000_api.c (+3/-32)
drivers/net/e1000/base/e1000_api.h (+3/-32)
drivers/net/e1000/base/e1000_defines.h (+3/-32)
drivers/net/e1000/base/e1000_hw.h (+3/-32)
drivers/net/e1000/base/e1000_i210.c (+3/-32)
drivers/net/e1000/base/e1000_i210.h (+3/-32)
drivers/net/e1000/base/e1000_ich8lan.c (+4/-33)
drivers/net/e1000/base/e1000_ich8lan.h (+3/-32)
drivers/net/e1000/base/e1000_mac.c (+3/-32)
drivers/net/e1000/base/e1000_mac.h (+3/-32)
drivers/net/e1000/base/e1000_manage.c (+3/-32)
drivers/net/e1000/base/e1000_manage.h (+3/-32)
drivers/net/e1000/base/e1000_mbx.c (+3/-32)
drivers/net/e1000/base/e1000_mbx.h (+3/-32)
drivers/net/e1000/base/e1000_nvm.c (+3/-32)
drivers/net/e1000/base/e1000_nvm.h (+3/-32)
drivers/net/e1000/base/e1000_osdep.c (+3/-32)
drivers/net/e1000/base/e1000_osdep.h (+3/-32)
drivers/net/e1000/base/e1000_phy.c (+4/-33)
drivers/net/e1000/base/e1000_phy.h (+3/-32)
drivers/net/e1000/base/e1000_regs.h (+3/-32)
drivers/net/e1000/base/e1000_vf.c (+3/-32)
drivers/net/e1000/base/e1000_vf.h (+3/-32)
drivers/net/e1000/e1000_ethdev.h (+18/-7)
drivers/net/e1000/e1000_logs.c (+39/-9)
drivers/net/e1000/e1000_logs.h (+16/-9)
drivers/net/e1000/em_ethdev.c (+84/-60)
drivers/net/e1000/em_rxtx.c (+134/-12)
drivers/net/e1000/igb_ethdev.c (+226/-175)
drivers/net/e1000/igb_flow.c (+16/-9)
drivers/net/e1000/igb_pf.c (+9/-8)
drivers/net/e1000/igb_rxtx.c (+15/-11)
drivers/net/e1000/rte_pmd_e1000_version.map (+1/-2)
drivers/net/ena/Makefile (+2/-33)
drivers/net/ena/base/ena_com.c (+404/-111)
drivers/net/ena/base/ena_com.h (+110/-37)
drivers/net/ena/base/ena_defs/ena_admin_defs.h (+375/-227)
drivers/net/ena/base/ena_defs/ena_common_defs.h (+6/-34)
drivers/net/ena/base/ena_defs/ena_eth_io_defs.h (+130/-149)
drivers/net/ena/base/ena_defs/ena_gen_info.h (+6/-34)
drivers/net/ena/base/ena_defs/ena_includes.h (+4/-32)
drivers/net/ena/base/ena_defs/ena_regs_defs.h (+101/-141)
drivers/net/ena/base/ena_eth_com.c (+239/-131)
drivers/net/ena/base/ena_eth_com.h (+85/-38)
drivers/net/ena/base/ena_plat.h (+10/-38)
drivers/net/ena/base/ena_plat_dpdk.h (+49/-42)
drivers/net/ena/ena_ethdev.c (+662/-263)
drivers/net/ena/ena_ethdev.h (+56/-66)
drivers/net/ena/ena_logs.h (+16/-38)
drivers/net/ena/ena_platform.h (+4/-32)
drivers/net/ena/rte_pmd_ena_version.map (+1/-2)
drivers/net/enetc/Makefile (+3/-3)
drivers/net/enetc/base/enetc_hw.h (+54/-6)
drivers/net/enetc/enetc.h (+7/-6)
drivers/net/enetc/enetc_ethdev.c (+560/-238)
drivers/net/enetc/enetc_logs.h (+2/-0)
drivers/net/enetc/enetc_rxtx.c (+101/-18)
drivers/net/enetc/meson.build (+3/-1)
drivers/net/enetc/rte_pmd_enetc_version.map (+1/-2)
drivers/net/enic/Makefile (+3/-3)
drivers/net/enic/base/vnic_dev.c (+118/-2)
drivers/net/enic/base/vnic_dev.h (+2/-0)
drivers/net/enic/base/vnic_devcmd.h (+19/-0)
drivers/net/enic/base/vnic_flowman.h (+365/-0)
drivers/net/enic/base/vnic_rss.h (+0/-5)
drivers/net/enic/enic.h (+40/-11)
drivers/net/enic/enic_clsf.c (+20/-21)
drivers/net/enic/enic_compat.h (+8/-7)
drivers/net/enic/enic_ethdev.c (+268/-44)
drivers/net/enic/enic_flow.c (+227/-112)
drivers/net/enic/enic_fm_flow.c (+2456/-0)
drivers/net/enic/enic_main.c (+88/-37)
drivers/net/enic/enic_res.c (+15/-32)
drivers/net/enic/enic_res.h (+0/-2)
drivers/net/enic/enic_rxtx_vec_avx2.c (+3/-4)
drivers/net/enic/meson.build (+3/-1)
drivers/net/enic/rte_pmd_enic_version.map (+1/-2)
drivers/net/failsafe/Makefile (+1/-3)
drivers/net/failsafe/failsafe.c (+59/-6)
drivers/net/failsafe/failsafe_args.c (+4/-8)
drivers/net/failsafe/failsafe_eal.c (+6/-4)
drivers/net/failsafe/failsafe_ether.c (+25/-14)
drivers/net/failsafe/failsafe_intr.c (+10/-10)
drivers/net/failsafe/failsafe_ops.c (+273/-39)
drivers/net/failsafe/failsafe_private.h (+32/-26)
drivers/net/failsafe/failsafe_rxtx.c (+23/-2)
drivers/net/failsafe/meson.build (+1/-1)
drivers/net/failsafe/rte_pmd_failsafe_version.map (+1/-2)
drivers/net/fm10k/Makefile (+1/-2)
drivers/net/fm10k/base/fm10k_api.c (+3/-32)
drivers/net/fm10k/base/fm10k_api.h (+3/-32)
drivers/net/fm10k/base/fm10k_common.c (+3/-32)
drivers/net/fm10k/base/fm10k_common.h (+3/-32)
drivers/net/fm10k/base/fm10k_mbx.c (+3/-32)
drivers/net/fm10k/base/fm10k_mbx.h (+3/-32)
drivers/net/fm10k/base/fm10k_osdep.h (+3/-32)
drivers/net/fm10k/base/fm10k_pf.c (+3/-32)
drivers/net/fm10k/base/fm10k_pf.h (+3/-32)
drivers/net/fm10k/base/fm10k_tlv.c (+3/-32)
drivers/net/fm10k/base/fm10k_tlv.h (+3/-32)
drivers/net/fm10k/base/fm10k_type.h (+3/-32)
drivers/net/fm10k/base/fm10k_vf.c (+3/-32)
drivers/net/fm10k/base/fm10k_vf.h (+3/-32)
drivers/net/fm10k/base/meson.build (+2/-1)
drivers/net/fm10k/fm10k.h (+4/-1)
drivers/net/fm10k/fm10k_ethdev.c (+146/-86)
drivers/net/fm10k/fm10k_logs.h (+12/-6)
drivers/net/fm10k/fm10k_rxtx.c (+30/-2)
drivers/net/fm10k/fm10k_rxtx_vec.c (+9/-2)
drivers/net/fm10k/meson.build (+2/-0)
drivers/net/fm10k/rte_pmd_fm10k_version.map (+1/-2)
drivers/net/hinic/Makefile (+67/-0)
drivers/net/hinic/base/hinic_compat.h (+277/-0)
drivers/net/hinic/base/hinic_csr.h (+135/-0)
drivers/net/hinic/base/hinic_pmd_api_cmd.c (+1042/-0)
drivers/net/hinic/base/hinic_pmd_api_cmd.h (+271/-0)
drivers/net/hinic/base/hinic_pmd_cfg.c (+243/-0)
drivers/net/hinic/base/hinic_pmd_cfg.h (+145/-0)
drivers/net/hinic/base/hinic_pmd_cmd.h (+463/-0)
drivers/net/hinic/base/hinic_pmd_cmdq.c (+849/-0)
drivers/net/hinic/base/hinic_pmd_cmdq.h (+242/-0)
drivers/net/hinic/base/hinic_pmd_eqs.c (+490/-0)
drivers/net/hinic/base/hinic_pmd_eqs.h (+98/-0)
drivers/net/hinic/base/hinic_pmd_hwdev.c (+1530/-0)
drivers/net/hinic/base/hinic_pmd_hwdev.h (+492/-0)
drivers/net/hinic/base/hinic_pmd_hwif.c (+543/-0)
drivers/net/hinic/base/hinic_pmd_hwif.h (+124/-0)
drivers/net/hinic/base/hinic_pmd_mbox.c (+936/-0)
drivers/net/hinic/base/hinic_pmd_mbox.h (+93/-0)
drivers/net/hinic/base/hinic_pmd_mgmt.c (+801/-0)
drivers/net/hinic/base/hinic_pmd_mgmt.h (+117/-0)
drivers/net/hinic/base/hinic_pmd_niccfg.c (+1947/-0)
drivers/net/hinic/base/hinic_pmd_niccfg.h (+861/-0)
drivers/net/hinic/base/hinic_pmd_nicio.c (+901/-0)
drivers/net/hinic/base/hinic_pmd_nicio.h (+264/-0)
drivers/net/hinic/base/hinic_pmd_wq.c (+179/-0)
drivers/net/hinic/base/hinic_pmd_wq.h (+137/-0)
drivers/net/hinic/base/meson.build (+37/-0)
drivers/net/hinic/hinic_pmd_ethdev.c (+3171/-0)
drivers/net/hinic/hinic_pmd_ethdev.h (+192/-0)
drivers/net/hinic/hinic_pmd_flow.c (+2385/-0)
drivers/net/hinic/hinic_pmd_rx.c (+1050/-0)
drivers/net/hinic/hinic_pmd_rx.h (+128/-0)
drivers/net/hinic/hinic_pmd_tx.c (+1294/-0)
drivers/net/hinic/hinic_pmd_tx.h (+144/-0)
drivers/net/hinic/meson.build (+14/-0)
drivers/net/hinic/rte_pmd_hinic_version.map (+3/-0)
drivers/net/hns3/Makefile (+43/-0)
drivers/net/hns3/hns3_cmd.c (+550/-0)
drivers/net/hns3/hns3_cmd.h (+761/-0)
drivers/net/hns3/hns3_dcb.c (+1642/-0)
drivers/net/hns3/hns3_dcb.h (+166/-0)
drivers/net/hns3/hns3_ethdev.c (+4957/-0)
drivers/net/hns3/hns3_ethdev.h (+646/-0)
drivers/net/hns3/hns3_ethdev_vf.c (+1864/-0)
drivers/net/hns3/hns3_fdir.c (+1059/-0)
drivers/net/hns3/hns3_fdir.h (+205/-0)
drivers/net/hns3/hns3_flow.c (+1903/-0)
drivers/net/hns3/hns3_intr.c (+1167/-0)
drivers/net/hns3/hns3_intr.h (+79/-0)
drivers/net/hns3/hns3_logs.h (+34/-0)
drivers/net/hns3/hns3_mbx.c (+351/-0)
drivers/net/hns3/hns3_mbx.h (+142/-0)
drivers/net/hns3/hns3_mp.c (+214/-0)
drivers/net/hns3/hns3_mp.h (+14/-0)
drivers/net/hns3/hns3_regs.c (+368/-0)
drivers/net/hns3/hns3_regs.h (+99/-0)
drivers/net/hns3/hns3_rss.c (+582/-0)
drivers/net/hns3/hns3_rss.h (+124/-0)
drivers/net/hns3/hns3_rxtx.c (+1688/-0)
drivers/net/hns3/hns3_rxtx.h (+314/-0)
drivers/net/hns3/hns3_stats.c (+929/-0)
drivers/net/hns3/hns3_stats.h (+152/-0)
drivers/net/hns3/meson.build (+37/-0)
drivers/net/hns3/rte_pmd_hns3_version.map (+3/-0)
drivers/net/i40e/Makefile (+3/-2)
drivers/net/i40e/base/README (+3/-31)
drivers/net/i40e/base/i40e_adminq_cmd.h (+0/-49)
drivers/net/i40e/base/i40e_common.c (+2/-6)
drivers/net/i40e/base/i40e_devids.h (+2/-2)
drivers/net/i40e/base/i40e_type.h (+3/-2)
drivers/net/i40e/base/meson.build (+4/-2)
drivers/net/i40e/i40e_ethdev.c (+334/-178)
drivers/net/i40e/i40e_ethdev.h (+52/-12)
drivers/net/i40e/i40e_ethdev_vf.c (+198/-70)
drivers/net/i40e/i40e_fdir.c (+84/-63)
drivers/net/i40e/i40e_flow.c (+94/-38)
drivers/net/i40e/i40e_logs.h (+15/-9)
drivers/net/i40e/i40e_pf.c (+143/-11)
drivers/net/i40e/i40e_rxtx.c (+133/-69)
drivers/net/i40e/i40e_rxtx.h (+8/-0)
drivers/net/i40e/i40e_rxtx_vec_altivec.c (+3/-32)
drivers/net/i40e/i40e_rxtx_vec_avx2.c (+191/-35)
drivers/net/i40e/i40e_rxtx_vec_neon.c (+1/-4)
drivers/net/i40e/i40e_rxtx_vec_sse.c (+145/-9)
drivers/net/i40e/i40e_vf_representor.c (+14/-12)
drivers/net/i40e/meson.build (+2/-2)
drivers/net/i40e/rte_pmd_i40e.c (+46/-20)
drivers/net/i40e/rte_pmd_i40e.h (+22/-4)
drivers/net/i40e/rte_pmd_i40e_version.map (+22/-43)
drivers/net/iavf/Makefile (+29/-13)
drivers/net/iavf/base/README (+4/-4)
drivers/net/iavf/base/iavf_adminq.c (+294/-323)
drivers/net/iavf/base/iavf_adminq.h (+137/-0)
drivers/net/iavf/base/iavf_adminq_cmd.h (+2812/-0)
drivers/net/iavf/base/iavf_alloc.h (+36/-0)
drivers/net/iavf/base/iavf_common.c (+1816/-0)
drivers/net/iavf/base/iavf_devids.h (+14/-0)
drivers/net/iavf/base/iavf_hmc.h (+216/-0)
drivers/net/iavf/base/iavf_lan_hmc.h (+69/-98)
drivers/net/iavf/base/iavf_osdep.h (+41/-41)
drivers/net/iavf/base/iavf_prototype.h (+177/-0)
drivers/net/iavf/base/iavf_register.h (+317/-0)
drivers/net/iavf/base/iavf_status.h (+79/-0)
drivers/net/iavf/base/iavf_type.h (+1995/-0)
drivers/net/iavf/base/meson.build (+3/-3)
drivers/net/iavf/base/virtchnl.h (+24/-38)
drivers/net/iavf/iavf.h (+222/-0)
drivers/net/iavf/iavf_ethdev.c (+1548/-0)
drivers/net/iavf/iavf_log.h (+23/-16)
drivers/net/iavf/iavf_rxtx.c (+340/-377)
drivers/net/iavf/iavf_rxtx.h (+94/-82)
drivers/net/iavf/iavf_rxtx_vec_avx2.c (+868/-0)
drivers/net/iavf/iavf_rxtx_vec_common.h (+80/-15)
drivers/net/iavf/iavf_rxtx_vec_sse.c (+93/-60)
drivers/net/iavf/iavf_vchnl.c (+132/-132)
drivers/net/iavf/meson.build (+36/-0)
drivers/net/iavf/rte_pmd_iavf_version.map (+3/-0)
drivers/net/ice/Makefile (+88/-0)
drivers/net/ice/base/README (+22/-0)
drivers/net/ice/base/ice_adminq_cmd.h (+2470/-0)
drivers/net/ice/base/ice_alloc.h (+22/-0)
drivers/net/ice/base/ice_bitops.h (+374/-0)
drivers/net/ice/base/ice_common.c (+4265/-0)
drivers/net/ice/base/ice_common.h (+219/-0)
drivers/net/ice/base/ice_controlq.c (+1186/-0)
drivers/net/ice/base/ice_controlq.h (+97/-0)
drivers/net/ice/base/ice_dcb.c (+1441/-0)
drivers/net/ice/base/ice_dcb.h (+224/-0)
drivers/net/ice/base/ice_devids.h (+28/-0)
drivers/net/ice/base/ice_fdir.c (+1090/-0)
drivers/net/ice/base/ice_fdir.h (+238/-0)
drivers/net/ice/base/ice_flex_pipe.c (+5736/-0)
drivers/net/ice/base/ice_flex_pipe.h (+81/-0)
drivers/net/ice/base/ice_flex_type.h (+789/-0)
drivers/net/ice/base/ice_flow.c (+2392/-0)
drivers/net/ice/base/ice_flow.h (+432/-0)
drivers/net/ice/base/ice_hw_autogen.h (+9452/-0)
drivers/net/ice/base/ice_lan_tx_rx.h (+2375/-0)
drivers/net/ice/base/ice_nvm.c (+646/-0)
drivers/net/ice/base/ice_nvm.h (+91/-0)
drivers/net/ice/base/ice_osdep.h (+397/-0)
drivers/net/ice/base/ice_protocol_type.h (+311/-0)
drivers/net/ice/base/ice_sbq_cmd.h (+93/-0)
drivers/net/ice/base/ice_sched.c (+5470/-0)
drivers/net/ice/base/ice_sched.h (+192/-0)
drivers/net/ice/base/ice_status.h (+46/-0)
drivers/net/ice/base/ice_switch.c (+6786/-0)
drivers/net/ice/base/ice_switch.h (+454/-0)
drivers/net/ice/base/ice_type.h (+1034/-0)
drivers/net/ice/base/meson.build (+32/-0)
drivers/net/ice/ice_ethdev.c (+4603/-0)
drivers/net/ice/ice_ethdev.h (+514/-0)
drivers/net/ice/ice_fdir_filter.c (+1979/-0)
drivers/net/ice/ice_generic_flow.c (+1959/-0)
drivers/net/ice/ice_generic_flow.h (+486/-0)
drivers/net/ice/ice_hash.c (+573/-0)
drivers/net/ice/ice_logs.h (+51/-0)
drivers/net/ice/ice_rxtx.c (+3735/-0)
drivers/net/ice/ice_rxtx.h (+205/-0)
drivers/net/ice/ice_rxtx_vec_avx2.c (+838/-0)
drivers/net/ice/ice_rxtx_vec_common.h (+302/-0)
drivers/net/ice/ice_rxtx_vec_sse.c (+642/-0)
drivers/net/ice/ice_switch_filter.c (+1201/-0)
drivers/net/ice/meson.build (+40/-0)
drivers/net/ice/rte_pmd_ice.h (+231/-0)
drivers/net/ice/rte_pmd_ice_version.map (+15/-0)
drivers/net/ifc/Makefile (+1/-2)
drivers/net/ifc/base/ifcvf.h (+1/-0)
drivers/net/ifc/ifcvf_vdpa.c (+455/-36)
drivers/net/ifc/meson.build (+1/-0)
drivers/net/ifc/rte_pmd_ifc_version.map (+1/-2)
drivers/net/ipn3ke/Makefile (+39/-0)
drivers/net/ipn3ke/ipn3ke_ethdev.c (+596/-0)
drivers/net/ipn3ke/ipn3ke_ethdev.h (+1078/-0)
drivers/net/ipn3ke/ipn3ke_flow.c (+1380/-0)
drivers/net/ipn3ke/ipn3ke_flow.h (+106/-0)
drivers/net/ipn3ke/ipn3ke_logs.h (+30/-0)
drivers/net/ipn3ke/ipn3ke_rawdev_api.h (+74/-0)
drivers/net/ipn3ke/ipn3ke_representor.c (+2984/-0)
drivers/net/ipn3ke/ipn3ke_tm.c (+2055/-0)
drivers/net/ipn3ke/meson.build (+29/-0)
drivers/net/ipn3ke/rte_pmd_ipn3ke_version.map (+9/-0)
drivers/net/ixgbe/Makefile (+0/-2)
drivers/net/ixgbe/base/README (+3/-31)
drivers/net/ixgbe/base/ixgbe_x550.c (+15/-0)
drivers/net/ixgbe/base/meson.build (+3/-1)
drivers/net/ixgbe/ixgbe_ethdev.c (+534/-202)
drivers/net/ixgbe/ixgbe_ethdev.h (+29/-4)
drivers/net/ixgbe/ixgbe_fdir.c (+2/-3)
drivers/net/ixgbe/ixgbe_flow.c (+14/-14)
drivers/net/ixgbe/ixgbe_ipsec.c (+27/-8)
drivers/net/ixgbe/ixgbe_ipsec.h (+2/-1)
drivers/net/ixgbe/ixgbe_logs.h (+15/-9)
drivers/net/ixgbe/ixgbe_pf.c (+74/-39)
drivers/net/ixgbe/ixgbe_rxtx.c (+91/-16)
drivers/net/ixgbe/ixgbe_rxtx.h (+1/-0)
drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c (+80/-16)
drivers/net/ixgbe/ixgbe_vf_representor.c (+5/-3)
drivers/net/ixgbe/meson.build (+0/-2)
drivers/net/ixgbe/rte_pmd_ixgbe.c (+19/-128)
drivers/net/ixgbe/rte_pmd_ixgbe.h (+11/-6)
drivers/net/ixgbe/rte_pmd_ixgbe_version.map (+22/-40)
drivers/net/kni/Makefile (+0/-3)
drivers/net/kni/meson.build (+1/-1)
drivers/net/kni/rte_eth_kni.c (+47/-32)
drivers/net/kni/rte_pmd_kni_version.map (+1/-2)
drivers/net/liquidio/Makefile (+0/-2)
drivers/net/liquidio/lio_ethdev.c (+63/-41)
drivers/net/liquidio/rte_pmd_liquidio_version.map (+1/-2)
drivers/net/memif/Makefile (+33/-0)
drivers/net/memif/memif.h (+179/-0)
drivers/net/memif/memif_socket.c (+1115/-0)
drivers/net/memif/memif_socket.h (+109/-0)
drivers/net/memif/meson.build (+20/-0)
drivers/net/memif/rte_eth_memif.c (+1806/-0)
drivers/net/memif/rte_eth_memif.h (+214/-0)
drivers/net/memif/rte_pmd_memif_version.map (+3/-0)
drivers/net/meson.build (+15/-2)
drivers/net/mlx4/Makefile (+23/-8)
drivers/net/mlx4/meson.build (+38/-14)
drivers/net/mlx4/mlx4.c (+338/-25)
drivers/net/mlx4/mlx4.h (+104/-11)
drivers/net/mlx4/mlx4_ethdev.c (+129/-20)
drivers/net/mlx4/mlx4_flow.c (+17/-12)
drivers/net/mlx4/mlx4_flow.h (+0/-1)
drivers/net/mlx4/mlx4_mp.c (+362/-0)
drivers/net/mlx4/mlx4_mr.c (+124/-19)
drivers/net/mlx4/mlx4_mr.h (+2/-1)
drivers/net/mlx4/mlx4_prm.h (+2/-1)
drivers/net/mlx4/mlx4_rxq.c (+6/-1)
drivers/net/mlx4/mlx4_rxtx.c (+5/-2)
drivers/net/mlx4/mlx4_rxtx.h (+6/-1)
drivers/net/mlx4/mlx4_txq.c (+155/-2)
drivers/net/mlx4/mlx4_utils.h (+14/-2)
drivers/net/mlx4/rte_pmd_mlx4_version.map (+1/-2)
drivers/net/mlx5/Makefile (+78/-262)
drivers/net/mlx5/meson.build (+63/-118)
drivers/net/mlx5/mlx5.c (+2305/-441)
drivers/net/mlx5/mlx5.h (+710/-62)
drivers/net/mlx5/mlx5_defs.h (+68/-26)
drivers/net/mlx5/mlx5_devx_cmds.c (+929/-0)
drivers/net/mlx5/mlx5_ethdev.c (+1081/-242)
drivers/net/mlx5/mlx5_flow.c (+2821/-105)
drivers/net/mlx5/mlx5_flow.h (+496/-61)
drivers/net/mlx5/mlx5_flow_dv.c (+7836/-1938)
drivers/net/mlx5/mlx5_flow_meter.c (+1285/-0)
drivers/net/mlx5/mlx5_flow_verbs.c (+124/-57)
drivers/net/mlx5/mlx5_glue.c (+626/-27)
drivers/net/mlx5/mlx5_glue.h (+104/-12)
drivers/net/mlx5/mlx5_mac.c (+29/-9)
drivers/net/mlx5/mlx5_mp.c (+412/-0)
drivers/net/mlx5/mlx5_mr.c (+399/-160)
drivers/net/mlx5/mlx5_mr.h (+5/-3)
drivers/net/mlx5/mlx5_nl.c (+530/-44)
drivers/net/mlx5/mlx5_prm.h (+1393/-100)
drivers/net/mlx5/mlx5_rss.c (+1/-0)
drivers/net/mlx5/mlx5_rxmode.c (+62/-14)
drivers/net/mlx5/mlx5_rxq.c (+1237/-559)
drivers/net/mlx5/mlx5_rxtx.c (+4305/-1424)
drivers/net/mlx5/mlx5_rxtx.h (+228/-396)
drivers/net/mlx5/mlx5_rxtx_vec.c (+7/-177)
drivers/net/mlx5/mlx5_rxtx_vec.h (+4/-12)
drivers/net/mlx5/mlx5_rxtx_vec_altivec.h (+1095/-0)
drivers/net/mlx5/mlx5_rxtx_vec_neon.h (+41/-305)
drivers/net/mlx5/mlx5_rxtx_vec_sse.h (+45/-308)
drivers/net/mlx5/mlx5_stats.c (+34/-23)
drivers/net/mlx5/mlx5_trigger.c (+162/-15)
drivers/net/mlx5/mlx5_txq.c (+755/-251)
drivers/net/mlx5/mlx5_utils.c (+119/-0)
drivers/net/mlx5/mlx5_utils.h (+105/-2)
drivers/net/mlx5/mlx5_vlan.c (+24/-11)
drivers/net/mlx5/rte_pmd_mlx5_version.map (+1/-1)
drivers/net/mvneta/Makefile (+0/-3)
drivers/net/mvneta/meson.build (+1/-0)
drivers/net/mvneta/mvneta_ethdev.c (+63/-56)
drivers/net/mvneta/mvneta_ethdev.h (+17/-3)
drivers/net/mvneta/mvneta_rxtx.c (+22/-40)
drivers/net/mvneta/rte_pmd_mvneta_version.map (+1/-1)
drivers/net/mvpp2/Makefile (+0/-3)
drivers/net/mvpp2/meson.build (+1/-0)
drivers/net/mvpp2/mrvl_ethdev.c (+99/-83)
drivers/net/mvpp2/mrvl_ethdev.h (+3/-3)
drivers/net/mvpp2/mrvl_flow.c (+2/-2)
drivers/net/mvpp2/rte_pmd_mvpp2_version.map (+1/-1)
drivers/net/netvsc/Makefile (+0/-2)
drivers/net/netvsc/hn_ethdev.c (+224/-28)
drivers/net/netvsc/hn_nvs.c (+1/-1)
drivers/net/netvsc/hn_rndis.c (+9/-36)
drivers/net/netvsc/hn_rndis.h (+3/-2)
drivers/net/netvsc/hn_rxtx.c (+51/-15)
drivers/net/netvsc/hn_var.h (+20/-9)
drivers/net/netvsc/hn_vf.c (+90/-24)
drivers/net/netvsc/meson.build (+1/-1)
drivers/net/netvsc/rte_pmd_netvsc_version.map (+1/-3)
drivers/net/nfb/Makefile (+40/-0)
drivers/net/nfb/meson.build (+11/-0)
drivers/net/nfb/nfb.h (+57/-0)
drivers/net/nfb/nfb_ethdev.c (+604/-0)
drivers/net/nfb/nfb_rx.c (+174/-0)
drivers/net/nfb/nfb_rx.h (+223/-0)
drivers/net/nfb/nfb_rxmode.c (+108/-0)
drivers/net/nfb/nfb_rxmode.h (+77/-0)
drivers/net/nfb/nfb_stats.c (+79/-0)
drivers/net/nfb/nfb_stats.h (+41/-0)
drivers/net/nfb/nfb_tx.c (+113/-0)
drivers/net/nfb/nfb_tx.h (+194/-0)
drivers/net/nfb/rte_pmd_nfb_version.map (+3/-0)
drivers/net/nfp/Makefile (+0/-2)
drivers/net/nfp/meson.build (+3/-2)
drivers/net/nfp/nfp_net.c (+564/-113)
drivers/net/nfp/nfp_net_ctrl.h (+1/-27)
drivers/net/nfp/nfp_net_logs.h (+10/-27)
drivers/net/nfp/nfp_net_pmd.h (+3/-28)
drivers/net/nfp/nfpcore/nfp_cpp_pcie_ops.c (+97/-11)
drivers/net/nfp/rte_pmd_nfp_version.map (+1/-1)
drivers/net/null/Makefile (+2/-32)
drivers/net/null/meson.build (+0/-1)
drivers/net/null/rte_eth_null.c (+25/-47)
drivers/net/null/rte_pmd_null_version.map (+1/-2)
drivers/net/octeontx/Makefile (+0/-2)
drivers/net/octeontx/base/octeontx_bgx.h (+3/-0)
drivers/net/octeontx/base/octeontx_pkivf.c (+70/-13)
drivers/net/octeontx/base/octeontx_pkivf.h (+38/-211)
drivers/net/octeontx/base/octeontx_pkovf.c (+33/-4)
drivers/net/octeontx/base/octeontx_pkovf.h (+3/-0)
drivers/net/octeontx/octeontx_ethdev.c (+36/-18)
drivers/net/octeontx/octeontx_ethdev.h (+2/-1)
drivers/net/octeontx/rte_pmd_octeontx_version.map (+3/-7)
drivers/net/octeontx2/Makefile (+59/-0)
drivers/net/octeontx2/meson.build (+41/-0)
drivers/net/octeontx2/otx2_ethdev.c (+2474/-0)
drivers/net/octeontx2/otx2_ethdev.h (+574/-0)
drivers/net/octeontx2/otx2_ethdev_debug.c (+500/-0)
drivers/net/octeontx2/otx2_ethdev_devargs.c (+164/-0)
drivers/net/octeontx2/otx2_ethdev_irq.c (+468/-0)
drivers/net/octeontx2/otx2_ethdev_ops.c (+621/-0)
drivers/net/octeontx2/otx2_flow.c (+981/-0)
drivers/net/octeontx2/otx2_flow.h (+397/-0)
drivers/net/octeontx2/otx2_flow_ctrl.c (+224/-0)
drivers/net/octeontx2/otx2_flow_parse.c (+1046/-0)
drivers/net/octeontx2/otx2_flow_utils.c (+959/-0)
drivers/net/octeontx2/otx2_link.c (+161/-0)
drivers/net/octeontx2/otx2_lookup.c (+338/-0)
drivers/net/octeontx2/otx2_mac.c (+149/-0)
drivers/net/octeontx2/otx2_mcast.c (+339/-0)
drivers/net/octeontx2/otx2_ptp.c (+437/-0)
drivers/net/octeontx2/otx2_rss.c (+375/-0)
drivers/net/octeontx2/otx2_rx.c (+413/-0)
drivers/net/octeontx2/otx2_rx.h (+340/-0)
drivers/net/octeontx2/otx2_stats.c (+396/-0)
drivers/net/octeontx2/otx2_tm.c (+1402/-0)
drivers/net/octeontx2/otx2_tm.h (+153/-0)
drivers/net/octeontx2/otx2_tx.c (+1056/-0)
drivers/net/octeontx2/otx2_tx.h (+605/-0)
drivers/net/octeontx2/otx2_vlan.c (+1040/-0)
drivers/net/octeontx2/rte_pmd_octeontx2_version.map (+3/-0)
drivers/net/pcap/Makefile (+0/-2)
drivers/net/pcap/meson.build (+2/-5)
drivers/net/pcap/rte_eth_pcap.c (+327/-56)
drivers/net/pcap/rte_pmd_pcap_version.map (+1/-2)
drivers/net/pfe/Makefile (+35/-0)
drivers/net/pfe/base/cbus.h (+66/-0)
drivers/net/pfe/base/cbus/bmu.h (+41/-0)
drivers/net/pfe/base/cbus/class_csr.h (+277/-0)
drivers/net/pfe/base/cbus/emac_mtip.h (+231/-0)
drivers/net/pfe/base/cbus/gpi.h (+77/-0)
drivers/net/pfe/base/cbus/hif.h (+86/-0)
drivers/net/pfe/base/cbus/hif_nocpy.h (+36/-0)
drivers/net/pfe/base/cbus/tmu_csr.h (+154/-0)
drivers/net/pfe/base/cbus/util_csr.h (+47/-0)
drivers/net/pfe/base/pfe.h (+422/-0)
drivers/net/pfe/meson.build (+23/-0)
drivers/net/pfe/pfe_eth.h (+76/-0)
drivers/net/pfe/pfe_ethdev.c (+1191/-0)
drivers/net/pfe/pfe_hal.c (+629/-0)
drivers/net/pfe/pfe_hif.c (+868/-0)
drivers/net/pfe/pfe_hif.h (+156/-0)
drivers/net/pfe/pfe_hif_lib.c (+576/-0)
drivers/net/pfe/pfe_hif_lib.h (+181/-0)
drivers/net/pfe/pfe_logs.h (+31/-0)
drivers/net/pfe/pfe_mod.h (+64/-0)
drivers/net/pfe/rte_pmd_pfe_version.map (+3/-0)
drivers/net/qede/Makefile (+1/-2)
drivers/net/qede/base/bcm_osal.c (+1/-0)
drivers/net/qede/base/bcm_osal.h (+6/-3)
drivers/net/qede/base/common_hsi.h (+159/-102)
drivers/net/qede/base/ecore.h (+63/-16)
drivers/net/qede/base/ecore_chain.h (+58/-26)
drivers/net/qede/base/ecore_cxt.c (+299/-221)
drivers/net/qede/base/ecore_cxt.h (+12/-0)
drivers/net/qede/base/ecore_dcbx.c (+4/-3)
drivers/net/qede/base/ecore_dev.c (+446/-326)
drivers/net/qede/base/ecore_dev_api.h (+1/-92)
drivers/net/qede/base/ecore_gtt_reg_addr.h (+26/-16)
drivers/net/qede/base/ecore_gtt_values.h (+9/-9)
drivers/net/qede/base/ecore_hsi_common.h (+583/-551)
drivers/net/qede/base/ecore_hsi_debug_tools.h (+202/-276)
drivers/net/qede/base/ecore_hsi_eth.h (+619/-767)
drivers/net/qede/base/ecore_hsi_init_func.h (+16/-9)
drivers/net/qede/base/ecore_hsi_init_tool.h (+40/-2)
drivers/net/qede/base/ecore_hw.c (+48/-24)
drivers/net/qede/base/ecore_hw.h (+70/-28)
drivers/net/qede/base/ecore_init_fw_funcs.c (+478/-332)
drivers/net/qede/base/ecore_init_fw_funcs.h (+114/-28)
drivers/net/qede/base/ecore_init_ops.c (+13/-53)
drivers/net/qede/base/ecore_init_ops.h (+1/-11)
drivers/net/qede/base/ecore_int.c (+92/-53)
drivers/net/qede/base/ecore_int.h (+2/-2)
drivers/net/qede/base/ecore_int_api.h (+9/-4)
drivers/net/qede/base/ecore_iov_api.h (+2/-2)
drivers/net/qede/base/ecore_iro.h (+176/-144)
drivers/net/qede/base/ecore_iro_values.h (+215/-121)
drivers/net/qede/base/ecore_l2.c (+32/-28)
drivers/net/qede/base/ecore_l2_api.h (+29/-12)
drivers/net/qede/base/ecore_mcp.c (+186/-125)
drivers/net/qede/base/ecore_mcp.h (+7/-2)
drivers/net/qede/base/ecore_proto_if.h (+1/-0)
drivers/net/qede/base/ecore_rt_defs.h (+393/-477)
drivers/net/qede/base/ecore_sp_commands.c (+10/-5)
drivers/net/qede/base/ecore_spq.c (+34/-21)
drivers/net/qede/base/ecore_sriov.c (+122/-56)
drivers/net/qede/base/ecore_sriov.h (+2/-2)
drivers/net/qede/base/ecore_vf.c (+7/-11)
drivers/net/qede/base/eth_common.h (+79/-22)
drivers/net/qede/base/mcp_public.h (+56/-3)
drivers/net/qede/base/nvm_cfg.h (+899/-10)
drivers/net/qede/base/reg_addr.h (+40/-35)
drivers/net/qede/meson.build (+2/-0)
drivers/net/qede/qede_ethdev.c (+299/-273)
drivers/net/qede/qede_ethdev.h (+23/-13)
drivers/net/qede/qede_filter.c (+53/-43)
drivers/net/qede/qede_if.h (+2/-2)
drivers/net/qede/qede_main.c (+4/-4)
drivers/net/qede/qede_rxtx.c (+297/-132)
drivers/net/qede/qede_rxtx.h (+22/-6)
drivers/net/qede/rte_pmd_qede_version.map (+1/-2)
drivers/net/ring/Makefile (+0/-2)
drivers/net/ring/meson.build (+0/-1)
drivers/net/ring/rte_eth_ring.c (+16/-18)
drivers/net/ring/rte_pmd_ring_version.map (+2/-8)
drivers/net/sfc/Makefile (+4/-2)
drivers/net/sfc/base/ef10_ev.c (+70/-41)
drivers/net/sfc/base/ef10_evb.c (+553/-0)
drivers/net/sfc/base/ef10_filter.c (+8/-19)
drivers/net/sfc/base/ef10_firmware_ids.h (+184/-0)
drivers/net/sfc/base/ef10_image.c (+46/-28)
drivers/net/sfc/base/ef10_impl.h (+197/-1)
drivers/net/sfc/base/ef10_intr.c (+5/-11)
drivers/net/sfc/base/ef10_mac.c (+3/-5)
drivers/net/sfc/base/ef10_mcdi.c (+5/-11)
drivers/net/sfc/base/ef10_nic.c (+197/-136)
drivers/net/sfc/base/ef10_nvram.c (+93/-22)
drivers/net/sfc/base/ef10_phy.c (+2/-2)
drivers/net/sfc/base/ef10_proxy.c (+474/-0)
drivers/net/sfc/base/ef10_rx.c (+71/-42)
drivers/net/sfc/base/ef10_tlv_layout.h (+52/-0)
drivers/net/sfc/base/ef10_tx.c (+10/-8)
drivers/net/sfc/base/ef10_vpd.c (+15/-28)
drivers/net/sfc/base/efx.h (+279/-22)
drivers/net/sfc/base/efx_bootcfg.c (+2/-2)
drivers/net/sfc/base/efx_check.h (+58/-57)
drivers/net/sfc/base/efx_ev.c (+65/-34)
drivers/net/sfc/base/efx_evb.c (+544/-0)
drivers/net/sfc/base/efx_filter.c (+2/-2)
drivers/net/sfc/base/efx_impl.h (+136/-15)
drivers/net/sfc/base/efx_intr.c (+3/-3)
drivers/net/sfc/base/efx_mac.c (+2/-2)
drivers/net/sfc/base/efx_mcdi.c (+77/-27)
drivers/net/sfc/base/efx_mcdi.h (+11/-4)
drivers/net/sfc/base/efx_nic.c (+42/-4)
drivers/net/sfc/base/efx_nvram.c (+79/-29)
drivers/net/sfc/base/efx_phy.c (+2/-2)
drivers/net/sfc/base/efx_proxy.c (+364/-0)
drivers/net/sfc/base/efx_regs_mcdi.h (+2765/-152)
drivers/net/sfc/base/efx_regs_mcdi_aoe.h (+65/-2)
drivers/net/sfc/base/efx_regs_mcdi_strs.h (+102/-0)
drivers/net/sfc/base/efx_rx.c (+58/-28)
drivers/net/sfc/base/efx_sram.c (+6/-10)
drivers/net/sfc/base/efx_tx.c (+39/-19)
drivers/net/sfc/base/efx_vpd.c (+2/-2)
drivers/net/sfc/base/hunt_impl.h (+5/-1)
drivers/net/sfc/base/hunt_nic.c (+14/-1)
drivers/net/sfc/base/mcdi_mon.c (+13/-13)
drivers/net/sfc/base/medford2_impl.h (+4/-0)
drivers/net/sfc/base/medford2_nic.c (+12/-1)
drivers/net/sfc/base/medford_impl.h (+4/-0)
drivers/net/sfc/base/medford_nic.c (+12/-1)
drivers/net/sfc/base/meson.build (+5/-0)
drivers/net/sfc/base/siena_impl.h (+20/-1)
drivers/net/sfc/base/siena_nic.c (+12/-1)
drivers/net/sfc/base/siena_nvram.c (+30/-4)
drivers/net/sfc/efsys.h (+4/-0)
drivers/net/sfc/meson.build (+1/-2)
drivers/net/sfc/rte_pmd_sfc_version.map (+1/-2)
drivers/net/sfc/sfc.c (+56/-12)
drivers/net/sfc/sfc.h (+81/-24)
drivers/net/sfc/sfc_debug.h (+5/-4)
drivers/net/sfc/sfc_dp_rx.h (+41/-6)
drivers/net/sfc/sfc_dp_tx.h (+110/-6)
drivers/net/sfc/sfc_ef10.h (+12/-0)
drivers/net/sfc/sfc_ef10_essb_rx.c (+10/-7)
drivers/net/sfc/sfc_ef10_rx.c (+54/-6)
drivers/net/sfc/sfc_ef10_tx.c (+151/-39)
drivers/net/sfc/sfc_ethdev.c (+333/-216)
drivers/net/sfc/sfc_ev.c (+27/-16)
drivers/net/sfc/sfc_ev.h (+1/-3)
drivers/net/sfc/sfc_flow.c (+26/-26)
drivers/net/sfc/sfc_intr.c (+37/-6)
drivers/net/sfc/sfc_log.h (+19/-18)
drivers/net/sfc/sfc_mcdi.c (+1/-1)
drivers/net/sfc/sfc_port.c (+5/-5)
drivers/net/sfc/sfc_rx.c (+293/-175)
drivers/net/sfc/sfc_rx.h (+11/-27)
drivers/net/sfc/sfc_tso.c (+14/-25)
drivers/net/sfc/sfc_tso.h (+14/-2)
drivers/net/sfc/sfc_tx.c (+230/-145)
drivers/net/sfc/sfc_tx.h (+9/-20)
drivers/net/softnic/Makefile (+2/-4)
drivers/net/softnic/meson.build (+3/-2)
drivers/net/softnic/parser.c (+9/-9)
drivers/net/softnic/parser.h (+1/-1)
drivers/net/softnic/rte_eth_softnic.c (+113/-2)
drivers/net/softnic/rte_eth_softnic.h (+22/-1)
drivers/net/softnic/rte_eth_softnic_cli.c (+552/-81)
drivers/net/softnic/rte_eth_softnic_cryptodev.c (+47/-2)
drivers/net/softnic/rte_eth_softnic_flow.c (+8/-8)
drivers/net/softnic/rte_eth_softnic_internals.h (+16/-3)
drivers/net/softnic/rte_eth_softnic_link.c (+4/-1)
drivers/net/softnic/rte_eth_softnic_meter.c (+13/-13)
drivers/net/softnic/rte_eth_softnic_pipeline.c (+33/-20)
drivers/net/softnic/rte_eth_softnic_tap.c (+3/-3)
drivers/net/softnic/rte_eth_softnic_thread.c (+130/-34)
drivers/net/softnic/rte_eth_softnic_tm.c (+117/-66)
drivers/net/softnic/rte_pmd_softnic_version.map (+1/-1)
drivers/net/szedata2/Makefile (+0/-2)
drivers/net/szedata2/meson.build (+2/-1)
drivers/net/szedata2/rte_eth_szedata2.c (+36/-15)
drivers/net/szedata2/rte_eth_szedata2.h (+3/-0)
drivers/net/szedata2/rte_pmd_szedata2_version.map (+1/-1)
drivers/net/tap/Makefile (+0/-2)
drivers/net/tap/meson.build (+3/-2)
drivers/net/tap/rte_eth_tap.c (+192/-94)
drivers/net/tap/rte_eth_tap.h (+2/-2)
drivers/net/tap/rte_pmd_tap_version.map (+1/-2)
drivers/net/tap/tap_flow.c (+9/-7)
drivers/net/thunderx/Makefile (+0/-2)
drivers/net/thunderx/base/nicvf_plat.h (+4/-1)
drivers/net/thunderx/nicvf_ethdev.c (+28/-14)
drivers/net/thunderx/nicvf_ethdev.h (+2/-1)
drivers/net/thunderx/nicvf_struct.h (+1/-1)
drivers/net/thunderx/rte_pmd_thunderx_version.map (+1/-2)
drivers/net/vdev_netvsc/Makefile (+0/-1)
drivers/net/vdev_netvsc/meson.build (+3/-4)
drivers/net/vdev_netvsc/rte_pmd_vdev_netvsc_version.map (+1/-2)
drivers/net/vdev_netvsc/vdev_netvsc.c (+11/-22)
drivers/net/vhost/Makefile (+0/-2)
drivers/net/vhost/meson.build (+1/-1)
drivers/net/vhost/rte_eth_vhost.c (+54/-21)
drivers/net/vhost/rte_pmd_vhost_version.map (+2/-7)
drivers/net/virtio/Makefile (+2/-2)
drivers/net/virtio/meson.build (+3/-1)
drivers/net/virtio/rte_pmd_virtio_version.map (+1/-2)
drivers/net/virtio/virtio_ethdev.c (+385/-170)
drivers/net/virtio/virtio_ethdev.h (+11/-5)
drivers/net/virtio/virtio_pci.c (+1/-1)
drivers/net/virtio/virtio_pci.h (+16/-2)
drivers/net/virtio/virtio_ring.h (+58/-4)
drivers/net/virtio/virtio_rxtx.c (+1001/-259)
drivers/net/virtio/virtio_rxtx.h (+2/-0)
drivers/net/virtio/virtio_rxtx_simple.h (+1/-1)
drivers/net/virtio/virtio_rxtx_simple_altivec.c (+209/-0)
drivers/net/virtio/virtio_rxtx_simple_neon.c (+9/-3)
drivers/net/virtio/virtio_rxtx_simple_sse.c (+9/-3)
drivers/net/virtio/virtio_user/vhost_kernel.c (+0/-1)
drivers/net/virtio/virtio_user/vhost_kernel_tap.c (+1/-1)
drivers/net/virtio/virtio_user/vhost_user.c (+2/-2)
drivers/net/virtio/virtio_user/virtio_user_dev.c (+129/-20)
drivers/net/virtio/virtio_user/virtio_user_dev.h (+17/-4)
drivers/net/virtio/virtio_user_ethdev.c (+68/-19)
drivers/net/virtio/virtqueue.c (+42/-3)
drivers/net/virtio/virtqueue.h (+212/-31)
drivers/net/vmxnet3/Makefile (+0/-2)
drivers/net/vmxnet3/base/README (+3/-31)
drivers/net/vmxnet3/base/vmxnet3_defs.h (+12/-0)
drivers/net/vmxnet3/rte_pmd_vmxnet3_version.map (+1/-2)
drivers/net/vmxnet3/vmxnet3_ethdev.c (+58/-25)
drivers/net/vmxnet3/vmxnet3_ethdev.h (+9/-1)
drivers/net/vmxnet3/vmxnet3_rxtx.c (+65/-22)
drivers/raw/Makefile (+5/-2)
drivers/raw/dpaa2_cmdif/Makefile (+3/-4)
drivers/raw/dpaa2_cmdif/dpaa2_cmdif.c (+8/-8)
drivers/raw/dpaa2_cmdif/meson.build (+1/-2)
drivers/raw/dpaa2_cmdif/rte_rawdev_dpaa2_cmdif_version.map (+3/-0)
drivers/raw/dpaa2_qdma/Makefile (+4/-5)
drivers/raw/dpaa2_qdma/dpaa2_qdma.c (+705/-207)
drivers/raw/dpaa2_qdma/dpaa2_qdma.h (+53/-27)
drivers/raw/dpaa2_qdma/meson.build (+2/-3)
drivers/raw/dpaa2_qdma/rte_pmd_dpaa2_qdma.h (+86/-17)
drivers/raw/dpaa2_qdma/rte_rawdev_dpaa2_qdma_version.map (+2/-2)
drivers/raw/ifpga/Makefile (+9/-5)
drivers/raw/ifpga/base/Makefile (+6/-0)
drivers/raw/ifpga/base/README (+15/-0)
drivers/raw/ifpga/base/ifpga_api.c (+117/-2)
drivers/raw/ifpga/base/ifpga_api.h (+1/-0)
drivers/raw/ifpga/base/ifpga_defines.h (+109/-33)
drivers/raw/ifpga/base/ifpga_enumerate.c (+130/-227)
drivers/raw/ifpga/base/ifpga_feature_dev.c (+185/-46)
drivers/raw/ifpga/base/ifpga_feature_dev.h (+79/-23)
drivers/raw/ifpga/base/ifpga_fme.c (+689/-17)
drivers/raw/ifpga/base/ifpga_fme_dperf.c (+8/-8)
drivers/raw/ifpga/base/ifpga_fme_error.c (+61/-31)
drivers/raw/ifpga/base/ifpga_fme_iperf.c (+14/-14)
drivers/raw/ifpga/base/ifpga_fme_pr.c (+4/-4)
drivers/raw/ifpga/base/ifpga_hw.h (+34/-10)
drivers/raw/ifpga/base/ifpga_port.c (+55/-14)
drivers/raw/ifpga/base/ifpga_port_error.c (+24/-5)
drivers/raw/ifpga/base/meson.build (+8/-13)
drivers/raw/ifpga/base/opae_at24_eeprom.c (+87/-0)
drivers/raw/ifpga/base/opae_at24_eeprom.h (+14/-0)
drivers/raw/ifpga/base/opae_debug.c (+11/-8)
drivers/raw/ifpga/base/opae_eth_group.c (+316/-0)
drivers/raw/ifpga/base/opae_eth_group.h (+102/-0)
drivers/raw/ifpga/base/opae_hw_api.c (+335/-2)
drivers/raw/ifpga/base/opae_hw_api.h (+79/-1)
drivers/raw/ifpga/base/opae_i2c.c (+512/-0)
drivers/raw/ifpga/base/opae_i2c.h (+131/-0)
drivers/raw/ifpga/base/opae_ifpga_hw_api.h (+2/-0)
drivers/raw/ifpga/base/opae_intel_max10.c (+650/-0)
drivers/raw/ifpga/base/opae_intel_max10.h (+211/-0)
drivers/raw/ifpga/base/opae_osdep.h (+20/-6)
drivers/raw/ifpga/base/opae_spi.c (+299/-0)
drivers/raw/ifpga/base/opae_spi.h (+168/-0)
drivers/raw/ifpga/base/opae_spi_transaction.c (+498/-0)
drivers/raw/ifpga/base/osdep_raw/osdep_generic.h (+76/-0)
drivers/raw/ifpga/base/osdep_rte/osdep_generic.h (+16/-0)
drivers/raw/ifpga/ifpga_rawdev.c (+1731/-0)
drivers/raw/ifpga/ifpga_rawdev.h (+42/-0)
drivers/raw/ifpga/meson.build (+28/-0)
drivers/raw/ifpga/rte_rawdev_ifpga_version.map (+3/-0)
drivers/raw/ioat/Makefile (+28/-0)
drivers/raw/ioat/ioat_rawdev.c (+393/-0)
drivers/raw/ioat/ioat_rawdev_test.c (+245/-0)
drivers/raw/ioat/meson.build (+11/-0)
drivers/raw/ioat/rte_ioat_rawdev.h (+233/-0)
drivers/raw/ioat/rte_ioat_spec.h (+301/-0)
drivers/raw/ioat/rte_rawdev_ioat_version.map (+3/-0)
drivers/raw/meson.build (+5/-2)
drivers/raw/ntb/Makefile (+29/-0)
drivers/raw/ntb/meson.build (+9/-0)
drivers/raw/ntb/ntb.c (+1513/-0)
drivers/raw/ntb/ntb.h (+237/-0)
drivers/raw/ntb/ntb_hw_intel.c (+391/-0)
drivers/raw/ntb/ntb_hw_intel.h (+86/-0)
drivers/raw/ntb/rte_pmd_ntb.h (+43/-0)
drivers/raw/ntb/rte_rawdev_ntb_version.map (+3/-0)
drivers/raw/octeontx2_dma/Makefile (+34/-0)
drivers/raw/octeontx2_dma/meson.build (+18/-0)
drivers/raw/octeontx2_dma/otx2_dpi_msg.c (+105/-0)
drivers/raw/octeontx2_dma/otx2_dpi_rawdev.c (+437/-0)
drivers/raw/octeontx2_dma/otx2_dpi_rawdev.h (+196/-0)
drivers/raw/octeontx2_dma/otx2_dpi_test.c (+217/-0)
drivers/raw/octeontx2_dma/rte_rawdev_octeontx2_dma_version.map (+3/-0)
drivers/raw/skeleton/Makefile (+2/-4)
drivers/raw/skeleton/rte_rawdev_skeleton_version.map (+3/-0)
drivers/raw/skeleton/skeleton_rawdev.c (+5/-4)
drivers/raw/skeleton/skeleton_rawdev.h (+1/-1)
drivers/raw/skeleton/skeleton_rawdev_test.c (+30/-28)
examples/Makefile (+10/-8)
examples/bbdev_app/Makefile (+8/-6)
examples/bbdev_app/main.c (+43/-25)
examples/bond/Makefile (+8/-6)
examples/bond/main.c (+117/-59)
examples/bpf/README (+8/-0)
examples/bpf/dummy.c (+20/-0)
examples/bpf/t1.c (+56/-0)
examples/bpf/t2.c (+31/-0)
examples/bpf/t3.c (+43/-0)
examples/cmdline/Makefile (+8/-6)
examples/cmdline/commands.c (+3/-7)
examples/cmdline/parse_obj_list.c (+1/-1)
examples/distributor/Makefile (+8/-6)
examples/distributor/main.c (+184/-55)
examples/distributor/meson.build (+4/-1)
examples/ethtool/Makefile (+4/-4)
examples/ethtool/ethtool-app/Makefile (+2/-2)
examples/ethtool/ethtool-app/ethapp.c (+4/-4)
examples/ethtool/ethtool-app/main.c (+29/-11)
examples/ethtool/lib/Makefile (+4/-4)
examples/ethtool/lib/rte_ethtool.c (+35/-15)
examples/ethtool/lib/rte_ethtool.h (+4/-3)
examples/ethtool/meson.build (+12/-2)
examples/eventdev_pipeline/Makefile (+7/-7)
examples/eventdev_pipeline/main.c (+10/-119)
examples/eventdev_pipeline/meson.build (+0/-1)
examples/eventdev_pipeline/pipeline_common.h (+5/-5)
examples/eventdev_pipeline/pipeline_worker_generic.c (+138/-0)
examples/eventdev_pipeline/pipeline_worker_tx.c (+135/-1)
examples/fips_validation/Makefile (+10/-6)
examples/fips_validation/fips_dev_self_test.c (+1732/-0)
examples/fips_validation/fips_dev_self_test.h (+25/-0)
examples/fips_validation/fips_validation.c (+58/-30)
examples/fips_validation/fips_validation.h (+23/-1)
examples/fips_validation/fips_validation_aes.c (+1/-0)
examples/fips_validation/fips_validation_gcm.c (+8/-8)
examples/fips_validation/fips_validation_sha.c (+110/-0)
examples/fips_validation/fips_validation_tdes.c (+9/-0)
examples/fips_validation/main.c (+421/-75)
examples/fips_validation/meson.build (+2/-0)
examples/flow_classify/Makefile (+8/-6)
examples/flow_classify/flow_classify.c (+29/-18)
examples/flow_filtering/Makefile (+8/-6)
examples/flow_filtering/flow_blocks.c (+0/-1)
examples/flow_filtering/main.c (+23/-10)
examples/helloworld/Makefile (+8/-6)
examples/ioat/Makefile (+56/-0)
examples/ioat/ioatfwd.c (+1007/-0)
examples/ioat/meson.build (+8/-3)
examples/ip_fragmentation/Makefile (+8/-6)
examples/ip_fragmentation/main.c (+94/-37)
examples/ip_pipeline/Makefile (+10/-8)
examples/ip_pipeline/cli.c (+182/-134)
examples/ip_pipeline/cryptodev.c (+50/-4)
examples/ip_pipeline/cryptodev.h (+3/-0)
examples/ip_pipeline/examples/flow_crypto.cli (+4/-5)
examples/ip_pipeline/kni.c (+6/-3)
examples/ip_pipeline/link.c (+9/-4)
examples/ip_pipeline/parser.c (+9/-9)
examples/ip_pipeline/parser.h (+1/-1)
examples/ip_pipeline/pipeline.c (+20/-20)
examples/ip_pipeline/pipeline.h (+6/-0)
examples/ip_pipeline/tap.c (+3/-3)
examples/ip_pipeline/tmgr.c (+12/-13)
examples/ip_pipeline/tmgr.h (+5/-4)
examples/ip_reassembly/Makefile (+8/-6)
examples/ip_reassembly/main.c (+57/-29)
examples/ipsec-secgw/Makefile (+11/-8)
examples/ipsec-secgw/ep0.cfg (+4/-4)
examples/ipsec-secgw/ep1.cfg (+6/-6)
examples/ipsec-secgw/esp.c (+48/-34)
examples/ipsec-secgw/ipsec-secgw.c (+864/-277)
examples/ipsec-secgw/ipsec.c (+307/-241)
examples/ipsec-secgw/ipsec.h (+96/-9)
examples/ipsec-secgw/ipsec_process.c (+380/-0)
examples/ipsec-secgw/meson.build (+3/-3)
examples/ipsec-secgw/parser.c (+91/-0)
examples/ipsec-secgw/parser.h (+4/-4)
examples/ipsec-secgw/sa.c (+369/-37)
examples/ipsec-secgw/test/bypass_defs.sh (+46/-0)
examples/ipsec-secgw/test/common_defs.sh (+125/-0)
examples/ipsec-secgw/test/common_defs_secgw.sh (+66/-0)
examples/ipsec-secgw/test/data_rxtx.sh (+65/-0)
examples/ipsec-secgw/test/linux_test4.sh (+79/-0)
examples/ipsec-secgw/test/linux_test6.sh (+80/-0)
examples/ipsec-secgw/test/pkttest.py (+128/-0)
examples/ipsec-secgw/test/pkttest.sh (+66/-0)
examples/ipsec-secgw/test/run_test.sh (+147/-0)
examples/ipsec-secgw/test/trs_3descbc_sha1_common_defs.sh (+74/-0)
examples/ipsec-secgw/test/trs_3descbc_sha1_defs.sh (+68/-0)
examples/ipsec-secgw/test/trs_3descbc_sha1_esn_atom_defs.sh (+6/-0)
examples/ipsec-secgw/test/trs_3descbc_sha1_esn_defs.sh (+67/-0)
examples/ipsec-secgw/test/trs_3descbc_sha1_old_defs.sh (+6/-0)
examples/ipsec-secgw/test/trs_aescbc_sha1_common_defs.sh (+70/-0)
examples/ipsec-secgw/test/trs_aescbc_sha1_defs.sh (+68/-0)
examples/ipsec-secgw/test/trs_aescbc_sha1_esn_atom_defs.sh (+6/-0)
examples/ipsec-secgw/test/trs_aescbc_sha1_esn_defs.sh (+67/-0)
examples/ipsec-secgw/test/trs_aescbc_sha1_old_defs.sh (+6/-0)
examples/ipsec-secgw/test/trs_aesctr_sha1_common_defs.sh (+70/-0)
examples/ipsec-secgw/test/trs_aesctr_sha1_defs.sh (+68/-0)
examples/ipsec-secgw/test/trs_aesctr_sha1_esn_atom_defs.sh (+6/-0)
examples/ipsec-secgw/test/trs_aesctr_sha1_esn_defs.sh (+67/-0)
examples/ipsec-secgw/test/trs_aesctr_sha1_old_defs.sh (+6/-0)
examples/ipsec-secgw/test/trs_aesgcm_common_defs.sh (+61/-0)
examples/ipsec-secgw/test/trs_aesgcm_defs.sh (+67/-0)
examples/ipsec-secgw/test/trs_aesgcm_esn_atom_defs.sh (+6/-0)
examples/ipsec-secgw/test/trs_aesgcm_esn_defs.sh (+67/-0)
examples/ipsec-secgw/test/trs_aesgcm_inline_crypto_defs.sh (+7/-0)
examples/ipsec-secgw/test/trs_aesgcm_inline_crypto_fallback_defs.sh (+5/-0)
examples/ipsec-secgw/test/trs_aesgcm_inline_crypto_old_defs.sh (+6/-0)
examples/ipsec-secgw/test/trs_aesgcm_old_defs.sh (+6/-0)
examples/ipsec-secgw/test/trs_ipv6opts.py (+182/-0)
examples/ipsec-secgw/test/tun_3descbc_sha1_common_defs.sh (+73/-0)
examples/ipsec-secgw/test/tun_3descbc_sha1_defs.sh (+71/-0)
examples/ipsec-secgw/test/tun_3descbc_sha1_esn_atom_defs.sh (+6/-0)
examples/ipsec-secgw/test/tun_3descbc_sha1_esn_defs.sh (+71/-0)
examples/ipsec-secgw/test/tun_3descbc_sha1_old_defs.sh (+6/-0)
examples/ipsec-secgw/test/tun_aescbc_sha1_common_defs.sh (+69/-0)
examples/ipsec-secgw/test/tun_aescbc_sha1_defs.sh (+71/-0)
examples/ipsec-secgw/test/tun_aescbc_sha1_esn_atom_defs.sh (+6/-0)
examples/ipsec-secgw/test/tun_aescbc_sha1_esn_defs.sh (+71/-0)
examples/ipsec-secgw/test/tun_aescbc_sha1_old_defs.sh (+6/-0)
examples/ipsec-secgw/test/tun_aesctr_sha1_common_defs.sh (+69/-0)
examples/ipsec-secgw/test/tun_aesctr_sha1_defs.sh (+71/-0)
examples/ipsec-secgw/test/tun_aesctr_sha1_esn_atom_defs.sh (+6/-0)
examples/ipsec-secgw/test/tun_aesctr_sha1_esn_defs.sh (+71/-0)
examples/ipsec-secgw/test/tun_aesctr_sha1_old_defs.sh (+6/-0)
examples/ipsec-secgw/test/tun_aesgcm_common_defs.sh (+63/-0)
examples/ipsec-secgw/test/tun_aesgcm_defs.sh (+71/-0)
examples/ipsec-secgw/test/tun_aesgcm_esn_atom_defs.sh (+6/-0)
examples/ipsec-secgw/test/tun_aesgcm_esn_defs.sh (+71/-0)
examples/ipsec-secgw/test/tun_aesgcm_inline_crypto_defs.sh (+7/-0)
examples/ipsec-secgw/test/tun_aesgcm_inline_crypto_fallback_defs.sh (+5/-0)
examples/ipsec-secgw/test/tun_aesgcm_inline_crypto_old_defs.sh (+6/-0)
examples/ipsec-secgw/test/tun_aesgcm_old_defs.sh (+6/-0)
examples/ipsec-secgw/test/tun_null_header_reconstruct.py (+479/-0)
examples/ipv4_multicast/Makefile (+8/-6)
examples/ipv4_multicast/main.c (+57/-41)
examples/kni/Makefile (+10/-8)
examples/kni/main.c (+63/-27)
examples/l2fwd-cat/Makefile (+8/-6)
examples/l2fwd-cat/l2fwd-cat.c (+9/-4)
examples/l2fwd-crypto/Makefile (+9/-6)
examples/l2fwd-crypto/main.c (+104/-67)
examples/l2fwd-crypto/meson.build (+1/-0)
examples/l2fwd-event/Makefile (+62/-0)
examples/l2fwd-event/l2fwd_common.c (+105/-0)
examples/l2fwd-event/l2fwd_common.h (+132/-0)
examples/l2fwd-event/l2fwd_event.c (+394/-0)
examples/l2fwd-event/l2fwd_event.h (+73/-0)
examples/l2fwd-event/l2fwd_event_generic.c (+312/-0)
examples/l2fwd-event/l2fwd_event_internal_port.c (+291/-0)
examples/l2fwd-event/l2fwd_poll.c (+181/-0)
examples/l2fwd-event/l2fwd_poll.h (+25/-0)
examples/l2fwd-event/main.c (+587/-0)
examples/l2fwd-event/meson.build (+23/-0)
examples/l2fwd-jobstats/Makefile (+8/-6)
examples/l2fwd-jobstats/main.c (+34/-8)
examples/l2fwd-keepalive/Makefile (+8/-6)
examples/l2fwd-keepalive/ka-agent/Makefile (+2/-2)
examples/l2fwd-keepalive/main.c (+31/-8)
examples/l2fwd/Makefile (+12/-6)
examples/l2fwd/main.c (+36/-8)
examples/l2fwd/meson.build (+2/-0)
examples/l3fwd-acl/Makefile (+8/-6)
examples/l3fwd-acl/main.c (+96/-58)
examples/l3fwd-power/Makefile (+11/-8)
examples/l3fwd-power/main.c (+401/-77)
examples/l3fwd-power/meson.build (+1/-1)
examples/l3fwd-power/perf_core.c (+0/-1)
examples/l3fwd/Makefile (+8/-6)
examples/l3fwd/l3fwd.h (+4/-4)
examples/l3fwd/l3fwd_altivec.h (+15/-11)
examples/l3fwd/l3fwd_common.h (+2/-2)
examples/l3fwd/l3fwd_em.c (+24/-22)
examples/l3fwd/l3fwd_em.h (+12/-10)
examples/l3fwd/l3fwd_em_hlm.h (+10/-9)
examples/l3fwd/l3fwd_em_hlm_neon.h (+10/-10)
examples/l3fwd/l3fwd_em_hlm_sse.h (+8/-8)
examples/l3fwd/l3fwd_em_sequential.h (+10/-9)
examples/l3fwd/l3fwd_lpm.c (+56/-41)
examples/l3fwd/l3fwd_lpm.h (+12/-10)
examples/l3fwd/l3fwd_lpm_altivec.h (+10/-10)
examples/l3fwd/l3fwd_lpm_neon.h (+15/-15)
examples/l3fwd/l3fwd_lpm_sse.h (+10/-10)
examples/l3fwd/l3fwd_neon.h (+15/-11)
examples/l3fwd/l3fwd_sse.h (+15/-11)
examples/l3fwd/main.c (+97/-37)
examples/link_status_interrupt/Makefile (+8/-6)
examples/link_status_interrupt/main.c (+43/-11)
examples/meson.build (+56/-6)
examples/multi_process/Makefile (+6/-6)
examples/multi_process/client_server_mp/Makefile (+4/-4)
examples/multi_process/client_server_mp/mp_client/client.c (+9/-9)
examples/multi_process/client_server_mp/mp_client/meson.build (+6/-3)
examples/multi_process/client_server_mp/mp_server/Makefile (+4/-4)
examples/multi_process/client_server_mp/mp_server/args.c (+22/-18)
examples/multi_process/client_server_mp/mp_server/args.h (+1/-1)
examples/multi_process/client_server_mp/mp_server/init.c (+14/-7)
examples/multi_process/client_server_mp/mp_server/main.c (+8/-2)
examples/multi_process/client_server_mp/mp_server/meson.build (+6/-3)
examples/multi_process/hotplug_mp/Makefile (+2/-3)
examples/multi_process/hotplug_mp/meson.build (+2/-3)
examples/multi_process/simple_mp/Makefile (+2/-2)
examples/multi_process/simple_mp/meson.build (+2/-3)
examples/multi_process/simple_mp/mp_commands.c (+1/-1)
examples/multi_process/symmetric_mp/Makefile (+2/-2)
examples/multi_process/symmetric_mp/main.c (+19/-3)
examples/multi_process/symmetric_mp/meson.build (+1/-1)
examples/ntb/Makefile (+70/-0)
examples/ntb/meson.build (+19/-0)
examples/ntb/ntb_fwd.c (+1494/-0)
examples/packet_ordering/Makefile (+8/-6)
examples/packet_ordering/main.c (+63/-9)
examples/performance-thread/Makefile (+2/-2)
examples/performance-thread/l3fwd-thread/Makefile (+2/-8)
examples/performance-thread/l3fwd-thread/main.c (+214/-172)
examples/performance-thread/l3fwd-thread/meson.build (+27/-0)
examples/performance-thread/pthread_shim/Makefile (+2/-2)
examples/performance-thread/pthread_shim/meson.build (+28/-0)
examples/performance-thread/pthread_shim/pthread_shim.c (+1/-1)
examples/ptpclient/Makefile (+8/-6)
examples/ptpclient/ptpclient.c (+40/-19)
examples/qos_meter/Makefile (+8/-6)
examples/qos_meter/main.c (+29/-8)
examples/qos_meter/main.h (+5/-5)
examples/qos_meter/rte_policer.c (+2/-2)
examples/qos_meter/rte_policer.h (+6/-6)
examples/qos_sched/Makefile (+10/-8)
examples/qos_sched/app_thread.c (+23/-11)
examples/qos_sched/cfg_file.c (+214/-139)
examples/qos_sched/init.c (+104/-32)
examples/qos_sched/main.c (+1/-0)
examples/qos_sched/main.h (+5/-0)
examples/qos_sched/profile.cfg (+78/-42)
examples/qos_sched/profile_ov.cfg (+70/-37)
examples/qos_sched/stats.c (+311/-227)
examples/rxtx_callbacks/Makefile (+11/-6)
examples/rxtx_callbacks/main.c (+105/-9)
examples/rxtx_callbacks/meson.build (+3/-0)
examples/server_node_efd/Makefile (+4/-4)
examples/server_node_efd/node/meson.build (+6/-3)
examples/server_node_efd/node/node.c (+3/-3)
examples/server_node_efd/server/Makefile (+4/-4)
examples/server_node_efd/server/init.c (+16/-3)
examples/server_node_efd/server/main.c (+14/-5)
examples/server_node_efd/server/meson.build (+6/-3)
examples/service_cores/Makefile (+8/-6)
examples/skeleton/Makefile (+8/-6)
examples/skeleton/basicfwd.c (+16/-5)
examples/tep_termination/Makefile (+12/-10)
examples/tep_termination/main.c (+2/-2)
examples/tep_termination/main.h (+1/-1)
examples/tep_termination/meson.build (+2/-2)
examples/tep_termination/vxlan.c (+62/-55)
examples/tep_termination/vxlan.h (+5/-5)
examples/tep_termination/vxlan_setup.c (+27/-21)
examples/tep_termination/vxlan_setup.h (+1/-1)
examples/timer/Makefile (+8/-6)
examples/vdpa/Makefile (+47/-11)
examples/vdpa/meson.build (+2/-2)
examples/vhost/Makefile (+10/-8)
examples/vhost/main.c (+48/-47)
examples/vhost/main.h (+1/-1)
examples/vhost/meson.build (+1/-1)
examples/vhost_blk/Makefile (+26/-11)
examples/vhost_blk/blk.c (+126/-0)
examples/vhost_blk/blk_spec.h (+95/-0)
examples/vhost_blk/meson.build (+8/-2)
examples/vhost_blk/vhost_blk.c (+1094/-0)
examples/vhost_blk/vhost_blk.h (+127/-0)
examples/vhost_blk/vhost_blk_compat.c (+174/-0)
examples/vhost_crypto/Makefile (+47/-11)
examples/vhost_crypto/main.c (+18/-5)
examples/vm_power_manager/Makefile (+2/-2)
examples/vm_power_manager/channel_manager.c (+182/-122)
examples/vm_power_manager/channel_manager.h (+22/-30)
examples/vm_power_manager/channel_monitor.c (+335/-107)
examples/vm_power_manager/guest_cli/Makefile (+3/-2)
examples/vm_power_manager/guest_cli/main.c (+9/-2)
examples/vm_power_manager/guest_cli/meson.build (+2/-4)
examples/vm_power_manager/guest_cli/vm_power_cli_guest.c (+324/-26)
examples/vm_power_manager/guest_cli/vm_power_cli_guest.h (+1/-1)
examples/vm_power_manager/main.c (+30/-8)
examples/vm_power_manager/oob_monitor_x86.c (+31/-3)
examples/vm_power_manager/power_manager.c (+10/-79)
examples/vm_power_manager/power_manager.h (+12/-2)
examples/vm_power_manager/vm_power_cli.c (+56/-157)
examples/vmdq/Makefile (+8/-6)
examples/vmdq/main.c (+26/-9)
examples/vmdq_dcb/Makefile (+8/-6)
examples/vmdq_dcb/main.c (+28/-9)
kernel/Makefile (+2/-2)
kernel/freebsd/Makefile (+2/-2)
kernel/freebsd/meson.build (+5/-2)
kernel/linux/kni/Kbuild (+1/-3)
kernel/linux/kni/Makefile (+1/-25)
kernel/linux/kni/compat.h (+13/-0)
kernel/linux/kni/kni_dev.h (+41/-24)
kernel/linux/kni/kni_fifo.h (+1/-1)
kernel/linux/kni/kni_misc.c (+49/-89)
kernel/linux/kni/kni_net.c (+103/-82)
kernel/linux/kni/meson.build (+3/-8)
kernel/linux/meson.build (+19/-31)
kernel/meson.build (+1/-1)
kernel/windows/meson.build (+4/-0)
lib/Makefile (+17/-7)
lib/librte_acl/Makefile (+0/-2)
lib/librte_acl/acl_run_altivec.c (+3/-31)
lib/librte_acl/acl_run_altivec.h (+3/-30)
lib/librte_acl/meson.build (+6/-2)
lib/librte_acl/rte_acl.c (+28/-14)
lib/librte_acl/rte_acl_osdep.h (+0/-1)
lib/librte_acl/rte_acl_version.map (+1/-1)
lib/librte_bbdev/Makefile (+0/-3)
lib/librte_bbdev/rte_bbdev.c (+40/-31)
lib/librte_bbdev/rte_bbdev.h (+187/-24)
lib/librte_bbdev/rte_bbdev_op.h (+470/-121)
lib/librte_bbdev/rte_bbdev_pmd.h (+8/-4)
lib/librte_bbdev/rte_bbdev_version.map (+4/-0)
lib/librte_bitratestats/Makefile (+0/-2)
lib/librte_bitratestats/meson.build (+0/-1)
lib/librte_bitratestats/rte_bitrate.c (+2/-4)
lib/librte_bitratestats/rte_bitratestats_version.map (+1/-1)
lib/librte_bpf/Makefile (+2/-2)
lib/librte_bpf/bpf.c (+5/-3)
lib/librte_bpf/bpf_exec.c (+2/-2)
lib/librte_bpf/bpf_impl.h (+1/-2)
lib/librte_bpf/bpf_jit_arm64.c (+1451/-0)
lib/librte_bpf/bpf_load.c (+4/-2)
lib/librte_bpf/bpf_load_elf.c (+1/-1)
lib/librte_bpf/bpf_pkt.c (+4/-4)
lib/librte_bpf/bpf_validate.c (+7/-5)
lib/librte_bpf/meson.build (+5/-2)
lib/librte_bpf/rte_bpf.h (+13/-7)
lib/librte_bpf/rte_bpf_ethdev.h (+8/-4)
lib/librte_cfgfile/Makefile (+1/-2)
lib/librte_cfgfile/meson.build (+0/-1)
lib/librte_cfgfile/rte_cfgfile.c (+45/-31)
lib/librte_cfgfile/rte_cfgfile_version.map (+8/-26)
lib/librte_cmdline/Makefile (+2/-3)
lib/librte_cmdline/cmdline.c (+1/-1)
lib/librte_cmdline/cmdline_parse.c (+3/-2)
lib/librte_cmdline/cmdline_parse_etheraddr.c (+8/-63)
lib/librte_cmdline/cmdline_parse_ipaddr.c (+0/-6)
lib/librte_cmdline/cmdline_parse_num.c (+2/-2)
lib/librte_cmdline/meson.build (+3/-5)
lib/librte_cmdline/rte_cmdline_version.map (+2/-8)
lib/librte_compressdev/Makefile (+0/-3)
lib/librte_compressdev/rte_comp.c (+17/-5)
lib/librte_compressdev/rte_comp.h (+31/-5)
lib/librte_compressdev/rte_compressdev.c (+30/-27)
lib/librte_compressdev/rte_compressdev.h (+50/-22)
lib/librte_compressdev/rte_compressdev_pmd.c (+5/-4)
lib/librte_compressdev/rte_compressdev_pmd.h (+12/-6)
lib/librte_compressdev/rte_compressdev_version.map (+1/-0)
lib/librte_cryptodev/Makefile (+2/-4)
lib/librte_cryptodev/meson.build (+2/-2)
lib/librte_cryptodev/rte_crypto_asym.h (+89/-38)
lib/librte_cryptodev/rte_crypto_sym.h (+91/-34)
lib/librte_cryptodev/rte_cryptodev.c (+243/-69)
lib/librte_cryptodev/rte_cryptodev.h (+106/-22)
lib/librte_cryptodev/rte_cryptodev_pmd.c (+2/-1)
lib/librte_cryptodev/rte_cryptodev_pmd.h (+12/-5)
lib/librte_cryptodev/rte_cryptodev_version.map (+38/-66)
lib/librte_distributor/Makefile (+1/-3)
lib/librte_distributor/distributor_private.h (+174/-0)
lib/librte_distributor/meson.build (+7/-1)
lib/librte_distributor/rte_distributor.c (+78/-81)
lib/librte_distributor/rte_distributor_match_generic.c (+1/-1)
lib/librte_distributor/rte_distributor_match_sse.c (+1/-1)
lib/librte_distributor/rte_distributor_single.c (+72/-55)
lib/librte_distributor/rte_distributor_single.h (+218/-0)
lib/librte_distributor/rte_distributor_version.map (+1/-15)
lib/librte_eal/Makefile (+4/-4)
lib/librte_eal/common/Makefile (+5/-3)
lib/librte_eal/common/arch/ppc_64/rte_cpuflags.c (+3/-30)
lib/librte_eal/common/arch/ppc_64/rte_cycles.c (+4/-0)
lib/librte_eal/common/arch/x86/rte_cpuflags.c (+1/-0)
lib/librte_eal/common/arch/x86/rte_cycles.c (+1/-1)
lib/librte_eal/common/eal_common_bus.c (+28/-36)
lib/librte_eal/common/eal_common_class.c (+2/-4)
lib/librte_eal/common/eal_common_cpuflags.c (+0/-11)
lib/librte_eal/common/eal_common_dev.c (+38/-6)
lib/librte_eal/common/eal_common_devargs.c (+2/-8)
lib/librte_eal/common/eal_common_errno.c (+1/-1)
lib/librte_eal/common/eal_common_fbarray.c (+325/-59)
lib/librte_eal/common/eal_common_hexdump.c (+50/-64)
lib/librte_eal/common/eal_common_launch.c (+2/-0)
lib/librte_eal/common/eal_common_lcore.c (+83/-12)
lib/librte_eal/common/eal_common_log.c (+21/-16)
lib/librte_eal/common/eal_common_mcfg.c (+171/-0)
lib/librte_eal/common/eal_common_memalloc.c (+0/-1)
lib/librte_eal/common/eal_common_memory.c (+151/-55)
lib/librte_eal/common/eal_common_memzone.c (+2/-2)
lib/librte_eal/common/eal_common_options.c (+58/-1)
lib/librte_eal/common/eal_common_proc.c (+46/-26)
lib/librte_eal/common/eal_common_tailqs.c (+4/-3)
lib/librte_eal/common/eal_common_thread.c (+1/-1)
lib/librte_eal/common/eal_common_timer.c (+19/-2)
lib/librte_eal/common/eal_common_uuid.c (+0/-26)
lib/librte_eal/common/eal_filesystem.h (+0/-11)
lib/librte_eal/common/eal_hugepages.h (+1/-1)
lib/librte_eal/common/eal_internal_cfg.h (+2/-0)
lib/librte_eal/common/eal_memalloc.h (+4/-1)
lib/librte_eal/common/eal_memcfg.h (+99/-0)
lib/librte_eal/common/eal_options.h (+2/-0)
lib/librte_eal/common/eal_private.h (+70/-0)
lib/librte_eal/common/hotplug_mp.c (+23/-2)
lib/librte_eal/common/include/arch/arm/rte_atomic_32.h (+0/-18)
lib/librte_eal/common/include/arch/arm/rte_atomic_64.h (+146/-0)
lib/librte_eal/common/include/arch/arm/rte_mcslock.h (+22/-0)
lib/librte_eal/common/include/arch/arm/rte_ticketlock.h (+22/-0)
lib/librte_eal/common/include/arch/ppc_64/rte_atomic.h (+2/-51)
lib/librte_eal/common/include/arch/ppc_64/rte_byteorder.h (+3/-33)
lib/librte_eal/common/include/arch/ppc_64/rte_cpuflags.h (+3/-30)
lib/librte_eal/common/include/arch/ppc_64/rte_cycles.h (+3/-30)
lib/librte_eal/common/include/arch/ppc_64/rte_mcslock.h (+18/-0)
lib/librte_eal/common/include/arch/ppc_64/rte_memcpy.h (+3/-30)
lib/librte_eal/common/include/arch/ppc_64/rte_prefetch.h (+3/-30)
lib/librte_eal/common/include/arch/ppc_64/rte_spinlock.h (+3/-30)
lib/librte_eal/common/include/arch/ppc_64/rte_ticketlock.h (+18/-0)
lib/librte_eal/common/include/arch/ppc_64/rte_vect.h (+3/-30)
lib/librte_eal/common/include/arch/x86/rte_atomic_32.h (+2/-31)
lib/librte_eal/common/include/arch/x86/rte_atomic_64.h (+38/-31)
lib/librte_eal/common/include/arch/x86/rte_cpuflags.h (+1/-0)
lib/librte_eal/common/include/arch/x86/rte_mcslock.h (+18/-0)
lib/librte_eal/common/include/arch/x86/rte_memcpy.h (+9/-9)
lib/librte_eal/common/include/arch/x86/rte_ticketlock.h (+18/-0)
lib/librte_eal/common/include/generic/rte_atomic.h (+68/-3)
lib/librte_eal/common/include/generic/rte_byteorder.h (+1/-1)
lib/librte_eal/common/include/generic/rte_cpuflags.h (+0/-9)
lib/librte_eal/common/include/generic/rte_cycles.h (+2/-1)
lib/librte_eal/common/include/generic/rte_mcslock.h (+179/-0)
lib/librte_eal/common/include/generic/rte_rwlock.h (+59/-0)
lib/librte_eal/common/include/generic/rte_ticketlock.h (+224/-0)
lib/librte_eal/common/include/rte_bitmap.h (+0/-6)
lib/librte_eal/common/include/rte_bus.h (+47/-31)
lib/librte_eal/common/include/rte_common.h (+155/-2)
lib/librte_eal/common/include/rte_compat.h (+22/-0)
lib/librte_eal/common/include/rte_debug.h (+1/-1)
lib/librte_eal/common/include/rte_dev.h (+66/-66)
lib/librte_eal/common/include/rte_devargs.h (+0/-8)
lib/librte_eal/common/include/rte_eal.h (+27/-68)
lib/librte_eal/common/include/rte_eal_interrupts.h (+1/-1)
lib/librte_eal/common/include/rte_eal_memconfig.h (+110/-88)
lib/librte_eal/common/include/rte_fbarray.h (+118/-23)
lib/librte_eal/common/include/rte_function_versioning.h (+90/-0)
lib/librte_eal/common/include/rte_interrupts.h (+53/-0)
lib/librte_eal/common/include/rte_keepalive.h (+2/-30)
lib/librte_eal/common/include/rte_lcore.h (+49/-122)
lib/librte_eal/common/include/rte_log.h (+15/-0)
lib/librte_eal/common/include/rte_malloc.h (+47/-18)
lib/librte_eal/common/include/rte_memory.h (+193/-61)
lib/librte_eal/common/include/rte_option.h (+13/-4)
lib/librte_eal/common/include/rte_random.h (+30/-18)
lib/librte_eal/common/include/rte_reciprocal.h (+1/-1)
lib/librte_eal/common/include/rte_service.h (+4/-13)
lib/librte_eal/common/include/rte_service_component.h (+3/-3)
lib/librte_eal/common/include/rte_string_fns.h (+5/-3)
lib/librte_eal/common/include/rte_uuid.h (+0/-26)
lib/librte_eal/common/include/rte_version.h (+1/-35)
lib/librte_eal/common/include/rte_vfio.h (+6/-46)
lib/librte_eal/common/malloc_elem.c (+36/-7)
lib/librte_eal/common/malloc_elem.h (+5/-3)
lib/librte_eal/common/malloc_heap.c (+100/-34)
lib/librte_eal/common/malloc_heap.h (+37/-3)
lib/librte_eal/common/malloc_mp.c (+10/-8)
lib/librte_eal/common/meson.build (+7/-2)
lib/librte_eal/common/rte_malloc.c (+107/-96)
lib/librte_eal/common/rte_option.c (+47/-7)
lib/librte_eal/common/rte_random.c (+211/-0)
lib/librte_eal/common/rte_reciprocal.c (+7/-34)
lib/librte_eal/common/rte_service.c (+25/-29)
lib/librte_eal/freebsd/BSDmakefile.meson (+14/-0)
lib/librte_eal/freebsd/Makefile (+1/-1)
lib/librte_eal/freebsd/eal/Makefile (+93/-0)
lib/librte_eal/freebsd/eal/eal.c (+151/-67)
lib/librte_eal/freebsd/eal/eal_alarm.c (+314/-0)
lib/librte_eal/freebsd/eal/eal_alarm_private.h (+19/-0)
lib/librte_eal/freebsd/eal/eal_cpuflags.c (+21/-0)
lib/librte_eal/freebsd/eal/eal_debug.c (+92/-0)
lib/librte_eal/freebsd/eal/eal_dev.c (+35/-0)
lib/librte_eal/freebsd/eal/eal_hugepage_info.c (+156/-0)
lib/librte_eal/freebsd/eal/eal_interrupts.c (+113/-1)
lib/librte_eal/freebsd/eal/eal_lcore.c (+52/-0)
lib/librte_eal/freebsd/eal/eal_memalloc.c (+81/-0)
lib/librte_eal/freebsd/eal/eal_memory.c (+16/-2)
lib/librte_eal/freebsd/eal/eal_thread.c (+177/-0)
lib/librte_eal/freebsd/eal/eal_timer.c (+64/-0)
lib/librte_eal/freebsd/eal/include/rte_os.h (+40/-0)
lib/librte_eal/freebsd/eal/meson.build (+22/-0)
lib/librte_eal/linux/Makefile (+11/-0)
lib/librte_eal/linux/eal/Makefile (+101/-0)
lib/librte_eal/linux/eal/eal.c (+191/-131)
lib/librte_eal/linux/eal/eal_alarm.c (+244/-0)
lib/librte_eal/linux/eal/eal_cpuflags.c (+84/-0)
lib/librte_eal/linux/eal/eal_debug.c (+92/-0)
lib/librte_eal/linux/eal/eal_dev.c (+396/-0)
lib/librte_eal/linux/eal/eal_hugepage_info.c (+547/-0)
lib/librte_eal/linux/eal/eal_interrupts.c (+165/-2)
lib/librte_eal/linux/eal/eal_lcore.c (+81/-0)
lib/librte_eal/linux/eal/eal_log.c (+62/-0)
lib/librte_eal/linux/eal/eal_memalloc.c (+152/-229)
lib/librte_eal/linux/eal/eal_memory.c (+120/-51)
lib/librte_eal/linux/eal/eal_thread.c (+188/-0)
lib/librte_eal/linux/eal/eal_timer.c (+232/-0)
lib/librte_eal/linux/eal/eal_vfio.c (+179/-97)
lib/librte_eal/linux/eal/eal_vfio.h (+158/-0)
lib/librte_eal/linux/eal/eal_vfio_mp_sync.c (+123/-0)
lib/librte_eal/linux/eal/include/rte_kni_common.h (+137/-0)
lib/librte_eal/linux/eal/include/rte_os.h (+33/-0)
lib/librte_eal/linux/eal/meson.build (+31/-0)
lib/librte_eal/meson.build (+9/-14)
lib/librte_eal/rte_eal_exports.def (+9/-0)
lib/librte_eal/rte_eal_version.map (+188/-216)
lib/librte_eal/windows/eal/eal.c (+84/-0)
lib/librte_eal/windows/eal/eal_debug.c (+19/-0)
lib/librte_eal/windows/eal/eal_lcore.c (+100/-0)
lib/librte_eal/windows/eal/eal_thread.c (+154/-0)
lib/librte_eal/windows/eal/include/fnmatch.h (+48/-0)
lib/librte_eal/windows/eal/include/pthread.h (+27/-0)
lib/librte_eal/windows/eal/include/regex.h (+90/-0)
lib/librte_eal/windows/eal/include/rte_os.h (+52/-0)
lib/librte_eal/windows/eal/include/sched.h (+46/-0)
lib/librte_eal/windows/eal/include/sys/queue.h (+294/-0)
lib/librte_eal/windows/eal/include/unistd.h (+12/-0)
lib/librte_eal/windows/eal/meson.build (+20/-0)
lib/librte_efd/Makefile (+0/-2)
lib/librte_efd/rte_efd.c (+11/-9)
lib/librte_efd/rte_efd_version.map (+1/-1)
lib/librte_ethdev/Makefile (+1/-3)
lib/librte_ethdev/ethdev_private.h (+3/-3)
lib/librte_ethdev/meson.build (+1/-2)
lib/librte_ethdev/rte_class_eth.c (+3/-10)
lib/librte_ethdev/rte_dev_info.h (+2/-0)
lib/librte_ethdev/rte_eth_ctrl.h (+10/-75)
lib/librte_ethdev/rte_ethdev.c (+892/-178)
lib/librte_ethdev/rte_ethdev.h (+605/-97)
lib/librte_ethdev/rte_ethdev_core.h (+267/-22)
lib/librte_ethdev/rte_ethdev_driver.h (+45/-5)
lib/librte_ethdev/rte_ethdev_version.map (+90/-124)
lib/librte_ethdev/rte_flow.c (+217/-6)
lib/librte_ethdev/rte_flow.h (+491/-28)
lib/librte_ethdev/rte_flow_driver.h (+2/-1)
lib/librte_ethdev/rte_mtr.c (+13/-13)
lib/librte_ethdev/rte_mtr.h (+34/-59)
lib/librte_ethdev/rte_mtr_driver.h (+1/-1)
lib/librte_ethdev/rte_tm.h (+12/-50)
lib/librte_eventdev/Makefile (+1/-4)
lib/librte_eventdev/meson.build (+1/-2)
lib/librte_eventdev/rte_event_crypto_adapter.c (+11/-11)
lib/librte_eventdev/rte_event_crypto_adapter.h (+15/-62)
lib/librte_eventdev/rte_event_eth_rx_adapter.c (+53/-70)
lib/librte_eventdev/rte_event_eth_rx_adapter.h (+44/-76)
lib/librte_eventdev/rte_event_eth_tx_adapter.c (+11/-11)
lib/librte_eventdev/rte_event_eth_tx_adapter.h (+38/-75)
lib/librte_eventdev/rte_event_ring.c (+8/-8)
lib/librte_eventdev/rte_event_timer_adapter.c (+335/-433)
lib/librte_eventdev/rte_event_timer_adapter.h (+18/-70)
lib/librte_eventdev/rte_eventdev.c (+9/-8)
lib/librte_eventdev/rte_eventdev.h (+20/-10)
lib/librte_eventdev/rte_eventdev_version.map (+46/-77)
lib/librte_fib/Makefile (+23/-0)
lib/librte_fib/dir24_8.c (+737/-0)
lib/librte_fib/dir24_8.h (+35/-0)
lib/librte_fib/meson.build (+8/-0)
lib/librte_fib/rte_fib.c (+319/-0)
lib/librte_fib/rte_fib.h (+188/-0)
lib/librte_fib/rte_fib6.c (+321/-0)
lib/librte_fib/rte_fib6.h (+193/-0)
lib/librte_fib/rte_fib_version.map (+23/-0)
lib/librte_fib/trie.c (+759/-0)
lib/librte_fib/trie.h (+36/-0)
lib/librte_flow_classify/Makefile (+0/-2)
lib/librte_flow_classify/rte_flow_classify.c (+9/-9)
lib/librte_flow_classify/rte_flow_classify.h (+14/-7)
lib/librte_gro/Makefile (+0/-2)
lib/librte_gro/gro_tcp4.c (+14/-14)
lib/librte_gro/gro_tcp4.h (+12/-11)
lib/librte_gro/gro_vxlan_tcp4.c (+35/-33)
lib/librte_gro/gro_vxlan_tcp4.h (+3/-3)
lib/librte_gro/rte_gro_version.map (+1/-1)
lib/librte_gso/Makefile (+0/-2)
lib/librte_gso/gso_common.h (+8/-8)
lib/librte_gso/gso_tcp4.c (+6/-6)
lib/librte_gso/gso_tunnel_tcp4.c (+7/-7)
lib/librte_gso/gso_udp4.c (+5/-5)
lib/librte_gso/rte_gso.h (+4/-4)
lib/librte_gso/rte_gso_version.map (+1/-1)
lib/librte_hash/Makefile (+1/-3)
lib/librte_hash/meson.build (+3/-1)
lib/librte_hash/rte_cuckoo_hash.c (+174/-99)
lib/librte_hash/rte_cuckoo_hash.h (+8/-0)
lib/librte_hash/rte_fbk_hash.c (+9/-8)
lib/librte_hash/rte_hash.h (+2/-1)
lib/librte_hash/rte_hash_version.map (+9/-34)
lib/librte_hash/rte_jhash.h (+2/-31)
lib/librte_hash/rte_thash.h (+4/-32)
lib/librte_ip_frag/Makefile (+0/-2)
lib/librte_ip_frag/rte_ip_frag.h (+9/-7)
lib/librte_ip_frag/rte_ip_frag_common.c (+1/-1)
lib/librte_ip_frag/rte_ip_frag_version.map (+2/-8)
lib/librte_ip_frag/rte_ipv4_fragmentation.c (+21/-22)
lib/librte_ip_frag/rte_ipv4_reassembly.c (+7/-10)
lib/librte_ip_frag/rte_ipv6_fragmentation.c (+15/-13)
lib/librte_ip_frag/rte_ipv6_reassembly.c (+3/-6)
lib/librte_ipsec/Makefile (+30/-0)
lib/librte_ipsec/crypto.h (+182/-0)
lib/librte_ipsec/esp_inb.c (+664/-0)
lib/librte_ipsec/esp_outb.c (+584/-0)
lib/librte_ipsec/iph.h (+279/-0)
lib/librte_ipsec/ipsec_sad.c (+515/-0)
lib/librte_ipsec/ipsec_sqn.h (+309/-0)
lib/librte_ipsec/meson.build (+10/-0)
lib/librte_ipsec/misc.h (+108/-0)
lib/librte_ipsec/pad.h (+45/-0)
lib/librte_ipsec/rte_ipsec.h (+157/-0)
lib/librte_ipsec/rte_ipsec_group.h (+153/-0)
lib/librte_ipsec/rte_ipsec_sa.h (+182/-0)
lib/librte_ipsec/rte_ipsec_sad.h (+176/-0)
lib/librte_ipsec/rte_ipsec_version.map (+21/-0)
lib/librte_ipsec/sa.c (+688/-0)
lib/librte_ipsec/sa.h (+185/-0)
lib/librte_ipsec/ses.c (+52/-0)
lib/librte_jobstats/Makefile (+0/-2)
lib/librte_jobstats/rte_jobstats.c (+2/-1)
lib/librte_jobstats/rte_jobstats_version.map (+2/-8)
lib/librte_kni/Makefile (+0/-2)
lib/librte_kni/meson.build (+2/-2)
lib/librte_kni/rte_kni.c (+63/-28)
lib/librte_kni/rte_kni.h (+11/-5)
lib/librte_kni/rte_kni_version.map (+1/-1)
lib/librte_kvargs/Makefile (+0/-2)
lib/librte_kvargs/meson.build (+0/-4)
lib/librte_kvargs/rte_kvargs.c (+0/-2)
lib/librte_kvargs/rte_kvargs_version.map (+2/-2)
lib/librte_latencystats/Makefile (+0/-2)
lib/librte_latencystats/rte_latencystats.c (+24/-4)
lib/librte_latencystats/rte_latencystats_version.map (+1/-1)
lib/librte_lpm/Makefile (+0/-2)
lib/librte_lpm/meson.build (+1/-1)
lib/librte_lpm/rte_lpm.c (+139/-959)
lib/librte_lpm/rte_lpm.h (+4/-89)
lib/librte_lpm/rte_lpm6.c (+24/-126)
lib/librte_lpm/rte_lpm6.h (+0/-25)
lib/librte_lpm/rte_lpm_altivec.h (+3/-30)
lib/librte_lpm/rte_lpm_neon.h (+3/-37)
lib/librte_lpm/rte_lpm_sse.h (+0/-1)
lib/librte_lpm/rte_lpm_version.map (+6/-29)
lib/librte_mbuf/Makefile (+8/-3)
lib/librte_mbuf/meson.build (+7/-3)
lib/librte_mbuf/rte_mbuf.c (+276/-20)
lib/librte_mbuf/rte_mbuf.h (+313/-768)
lib/librte_mbuf/rte_mbuf_core.h (+371/-188)
lib/librte_mbuf/rte_mbuf_dyn.c (+553/-0)
lib/librte_mbuf/rte_mbuf_dyn.h (+253/-0)
lib/librte_mbuf/rte_mbuf_version.map (+29/-28)
lib/librte_member/Makefile (+0/-2)
lib/librte_member/rte_member.c (+11/-9)
lib/librte_member/rte_member_version.map (+1/-1)
lib/librte_mempool/Makefile (+0/-2)
lib/librte_mempool/meson.build (+0/-1)
lib/librte_mempool/rte_mempool.c (+94/-114)
lib/librte_mempool/rte_mempool.h (+106/-15)
lib/librte_mempool/rte_mempool_ops.c (+5/-2)
lib/librte_mempool/rte_mempool_ops_default.c (+94/-19)
lib/librte_mempool/rte_mempool_version.map (+19/-31)
lib/librte_meter/Makefile (+0/-2)
lib/librte_meter/meson.build (+0/-1)
lib/librte_meter/rte_meter.c (+51/-1)
lib/librte_meter/rte_meter.h (+275/-36)
lib/librte_meter/rte_meter_version.map (+8/-4)
lib/librte_metrics/Makefile (+0/-2)
lib/librte_metrics/rte_metrics.c (+20/-0)
lib/librte_metrics/rte_metrics.h (+18/-0)
lib/librte_metrics/rte_metrics_version.map (+7/-1)
lib/librte_net/Makefile (+3/-3)
lib/librte_net/meson.build (+5/-3)
lib/librte_net/rte_arp.c (+18/-17)
lib/librte_net/rte_arp.h (+22/-21)
lib/librte_net/rte_esp.h (+10/-2)
lib/librte_net/rte_ether.c (+115/-0)
lib/librte_net/rte_ether.h (+113/-152)
lib/librte_net/rte_gre.h (+1/-1)
lib/librte_net/rte_gtp.h (+51/-0)
lib/librte_net/rte_higig.h (+145/-0)
lib/librte_net/rte_icmp.h (+10/-8)
lib/librte_net/rte_ip.h (+113/-52)
lib/librte_net/rte_mpls.h (+1/-1)
lib/librte_net/rte_net.c (+50/-50)
lib/librte_net/rte_net.h (+38/-14)
lib/librte_net/rte_net_crc.c (+6/-0)
lib/librte_net/rte_net_crc.h (+0/-6)
lib/librte_net/rte_net_version.map (+7/-9)
lib/librte_net/rte_sctp.h (+7/-5)
lib/librte_net/rte_tcp.h (+24/-10)
lib/librte_net/rte_udp.h (+7/-5)
lib/librte_net/rte_vxlan.h (+71/-0)
lib/librte_pci/Makefile (+0/-2)
lib/librte_pci/rte_pci.c (+0/-19)
lib/librte_pci/rte_pci.h (+0/-47)
lib/librte_pci/rte_pci_version.map (+1/-4)
lib/librte_pdump/Makefile (+0/-2)
lib/librte_pdump/meson.build (+0/-1)
lib/librte_pdump/rte_pdump.c (+17/-14)
lib/librte_pdump/rte_pdump.h (+1/-33)
lib/librte_pdump/rte_pdump_version.map (+1/-2)
lib/librte_pipeline/Makefile (+0/-2)
lib/librte_pipeline/meson.build (+0/-1)
lib/librte_pipeline/rte_pipeline.c (+1/-1)
lib/librte_pipeline/rte_pipeline_version.map (+8/-26)
lib/librte_pipeline/rte_port_in_action.h (+16/-8)
lib/librte_pipeline/rte_table_action.c (+229/-178)
lib/librte_pipeline/rte_table_action.h (+56/-24)
lib/librte_port/Makefile (+3/-3)
lib/librte_port/meson.build (+9/-4)
lib/librte_port/rte_port_eventdev.c (+584/-0)
lib/librte_port/rte_port_eventdev.h (+99/-0)
lib/librte_port/rte_port_kni.c (+3/-32)
lib/librte_port/rte_port_kni.h (+3/-32)
lib/librte_port/rte_port_ras.c (+6/-4)
lib/librte_port/rte_port_source_sink.c (+3/-3)
lib/librte_port/rte_port_version.map (+22/-43)
lib/librte_power/Makefile (+2/-2)
lib/librte_power/channel_commands.h (+39/-2)
lib/librte_power/guest_channel.c (+71/-6)
lib/librte_power/guest_channel.h (+48/-0)
lib/librte_power/meson.build (+4/-2)
lib/librte_power/power_acpi_cpufreq.c (+17/-6)
lib/librte_power/power_kvm_vm.c (+5/-5)
lib/librte_power/power_pstate_cpufreq.c (+854/-0)
lib/librte_power/power_pstate_cpufreq.h (+218/-0)
lib/librte_power/rte_power.c (+60/-12)
lib/librte_power/rte_power.h (+5/-2)
lib/librte_power/rte_power_empty_poll.c (+7/-7)
lib/librte_power/rte_power_empty_poll.h (+14/-7)
lib/librte_power/rte_power_version.map (+7/-18)
lib/librte_rawdev/Makefile (+0/-3)
lib/librte_rawdev/rte_rawdev.c (+9/-7)
lib/librte_rawdev/rte_rawdev_pmd.h (+4/-2)
lib/librte_rawdev/rte_rawdev_version.map (+2/-2)
lib/librte_rcu/Makefile (+21/-0)
lib/librte_rcu/meson.build (+12/-0)
lib/librte_rcu/rte_rcu_qsbr.c (+280/-0)
lib/librte_rcu/rte_rcu_qsbr.h (+699/-0)
lib/librte_rcu/rte_rcu_version.map (+13/-0)
lib/librte_reorder/Makefile (+0/-2)
lib/librte_reorder/rte_reorder.c (+23/-10)
lib/librte_reorder/rte_reorder_version.map (+4/-4)
lib/librte_rib/Makefile (+23/-0)
lib/librte_rib/meson.build (+8/-0)
lib/librte_rib/rte_rib.c (+532/-0)
lib/librte_rib/rte_rib.h (+277/-0)
lib/librte_rib/rte_rib6.c (+598/-0)
lib/librte_rib/rte_rib6.h (+334/-0)
lib/librte_rib/rte_rib_version.map (+35/-0)
lib/librte_ring/Makefile (+0/-2)
lib/librte_ring/meson.build (+0/-1)
lib/librte_ring/rte_ring.c (+18/-10)
lib/librte_ring/rte_ring.h (+17/-2)
lib/librte_ring/rte_ring_version.map (+5/-4)
lib/librte_sched/Makefile (+0/-2)
lib/librte_sched/rte_approx.c (+153/-0)
lib/librte_sched/rte_approx.h (+18/-0)
lib/librte_sched/rte_sched.c (+1335/-825)
lib/librte_sched/rte_sched.h (+173/-106)
lib/librte_sched/rte_sched_common.h (+0/-6)
lib/librte_sched/rte_sched_version.map (+5/-11)
lib/librte_security/Makefile (+1/-4)
lib/librte_security/meson.build (+1/-1)
lib/librte_security/rte_security.c (+3/-3)
lib/librte_security/rte_security.h (+62/-14)
lib/librte_security/rte_security_version.map (+1/-1)
lib/librte_stack/Makefile (+28/-0)
lib/librte_stack/meson.build (+11/-0)
lib/librte_stack/rte_stack.c (+197/-0)
lib/librte_stack/rte_stack.h (+269/-0)
lib/librte_stack/rte_stack_lf.c (+31/-0)
lib/librte_stack/rte_stack_lf.h (+112/-0)
lib/librte_stack/rte_stack_lf_c11.h (+159/-0)
lib/librte_stack/rte_stack_lf_generic.h (+149/-0)
lib/librte_stack/rte_stack_lf_stubs.h (+44/-0)
lib/librte_stack/rte_stack_std.c (+26/-0)
lib/librte_stack/rte_stack_std.h (+124/-0)
lib/librte_stack/rte_stack_version.map (+9/-0)
lib/librte_stack/stack_pvt.h (+34/-0)
lib/librte_table/Makefile (+0/-2)
lib/librte_table/meson.build (+0/-1)
lib/librte_table/rte_table_hash_func.h (+18/-9)
lib/librte_table/rte_table_version.map (+1/-1)
lib/librte_telemetry/Makefile (+0/-2)
lib/librte_telemetry/meson.build (+2/-1)
lib/librte_telemetry/rte_telemetry.c (+96/-35)
lib/librte_telemetry/rte_telemetry.h (+6/-3)
lib/librte_telemetry/rte_telemetry_internal.h (+30/-2)
lib/librte_telemetry/rte_telemetry_parser.c (+115/-17)
lib/librte_telemetry/rte_telemetry_parser.h (+2/-1)
lib/librte_timer/Makefile (+1/-2)
lib/librte_timer/meson.build (+2/-0)
lib/librte_timer/rte_timer.c (+458/-52)
lib/librte_timer/rte_timer.h (+223/-5)
lib/librte_timer/rte_timer_version.map (+14/-1)
lib/librte_vhost/Makefile (+18/-2)
lib/librte_vhost/iotlb.c (+2/-31)
lib/librte_vhost/iotlb.h (+3/-30)
lib/librte_vhost/meson.build (+9/-2)
lib/librte_vhost/rte_vdpa.h (+50/-5)
lib/librte_vhost/rte_vhost.h (+339/-14)
lib/librte_vhost/rte_vhost_crypto.h (+16/-8)
lib/librte_vhost/rte_vhost_version.map (+23/-41)
lib/librte_vhost/socket.c (+63/-1)
lib/librte_vhost/vdpa.c (+102/-0)
lib/librte_vhost/vhost.c (+675/-51)
lib/librte_vhost/vhost.h (+159/-171)
lib/librte_vhost/vhost_crypto.c (+25/-15)
lib/librte_vhost/vhost_user.c (+717/-156)
lib/librte_vhost/vhost_user.h (+11/-2)
lib/librte_vhost/virtio_net.c (+963/-353)
lib/meson.build (+85/-29)
license/exceptions.txt (+0/-1)
meson.build (+48/-42)
meson_options.txt (+16/-12)
mk/arch/ppc_64/rte.vars.mk (+2/-30)
mk/exec-env/bsdapp (+1/-0)
mk/exec-env/freebsd/rte.vars.mk (+36/-0)
mk/exec-env/linux/rte.vars.mk (+44/-0)
mk/exec-env/linuxapp (+1/-0)
mk/machine/emag/rte.vars.mk (+32/-0)
mk/machine/n1sdp/rte.vars.mk (+34/-0)
mk/machine/octeontx2/rte.vars.mk (+34/-0)
mk/machine/power8/rte.vars.mk (+2/-29)
mk/machine/thunderx2/rte.vars.mk (+34/-0)
mk/rte.app.mk (+73/-31)
mk/rte.cpuflags.mk (+4/-0)
mk/rte.helper.mk (+10/-0)
mk/rte.lib.mk (+5/-9)
mk/rte.sdkbuild.mk (+0/-3)
mk/rte.sdkconfig.mk (+14/-18)
mk/rte.sdkdoc.mk (+1/-0)
mk/rte.sdkinstall.mk (+3/-0)
mk/rte.sdkroot.mk (+3/-5)
mk/rte.sdktest.mk (+4/-4)
mk/target/generic/rte.vars.mk (+20/-12)
mk/toolchain/gcc/rte.toolchain-compat.mk (+10/-1)
mk/toolchain/gcc/rte.vars.mk (+12/-0)
mk/toolchain/icc/rte.vars.mk (+8/-0)
usertools/dpdk-devbind.py (+119/-65)
usertools/dpdk-pmdinfo.py (+46/-19)
usertools/dpdk-setup.sh (+5/-5)
usertools/dpdk-telemetry-client.py (+20/-8)
Reviewer Review Type Date Requested Status
Canonical Server Pending
Canonical Server packageset reviewers Pending
git-ubuntu developers Pending
Review via email: mp+377279@code.launchpad.net

This proposal has been superseded by a proposal from 2020-01-09.

To post a comment you must log in.
Revision history for this message
Christian Ehrhardt  (paelzer) wrote :

This is the bump from 18.11.5-1 currently in Focal to 19.11-2.
Debian has no FF ahead, so there we will wait for a final OVS 2.13 release - that timing woudln't work for Ubuntu 20.04
Also due to bug 1836708 still waiting on the kernel Team it can't be a sync (not even from experimental), but it needs to be in Focal before Openvswitch lands.

James is working on OVN/Openvswitch 2.13 here https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/3694/+packages

I was test building DPDK here https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/3881/+packages

There aren't that many tests that we can do before OVS is complete (the few I can completed like l2fwd and testpmd), but once we have that we will have to upload DPDK first. Therefore I opened this MP.

To some extend you can consider the all but the last few changes peer reviewed already as I do those with Luca in Debian. The only "new" content is the disabling of libbpd-dev build dependency for now until the kernel team got to it. Then it will be a sync.

Unmerged commits

c2aa5fb... by Christian Ehrhardt 

d/changelog: release 19.11 for Focal

Signed-off-by: Christian Ehrhardt <email address hidden>

6a551fe... by Christian Ehrhardt 

d/control: update-maintainer

Signed-off-by: Christian Ehrhardt <email address hidden>

b229c2d... by Christian Ehrhardt 

d/control: disable bpf still lacking the kernel building the package

Signed-off-by: Christian Ehrhardt <email address hidden>

e34483e... by Luca Boccassi

Import patches-unapplied version 19.11-2 to debian/experimental

Imported using git-ubuntu import.

Changelog parent: 755fe889762a3b00740507e151dceb0169fbe633

New changelog entries:
  * dh-missing: ignore examples directory, as they are already installed
    manually. (Closes: #947371)

755fe88... by Luca Boccassi

Import patches-unapplied version 19.11-1 to debian/experimental

Imported using git-ubuntu import.

Changelog parent: d23ee6d33164a2ea284963bda9f3347ea203a072

New changelog entries:
  [ Christian Ehrhardt ]
  * New upstream release 19.11; for a full list of changes see:
    http://doc.dpdk.org/guides-19.08/rel_notes/release_19_08.html
    - Includes d/p/avoid-as-needed-as-it-causes-overlinking.patch: fix
      overlinking in software using the dpdk pkg-config (LP: #1841759)
    - d/control: bump versions to 19.11
    - d/*.symbols: bump for 19.11
    - rte-kni module support dropped upstream, remove former package
      dpdk-rte-kni-dkms (LP: #1853195)
    - d/p/fix-ppc64-mlx4-build.patch: drop patch now being upstream
    - new Major ABI is set to 20.0 by upstream
    - d/dpdk.lintian-overrides: it is ok that example shell scripts are
      not executable
    - d/control, d/*.symbols: new PMDs for qede pfe nitrox hns3 and
      octeontx2-crypto
    - d/control, d/*.symbols: new rte libraries rib and fib
    - d/dpdk-dev.install: add new dpdk-test-sad
    - d/rules: global ABI_VERSION now tracked in a file by upstream
    - d/control: add new build-dependencies libisal-dev, libfdt-dev
      and libbpf-dev
    - d/control: drop no more built librte-pmd-ipn3ke20.0
    - d/control: add new PMDs of 19.11 af-xdp and isal
    - d/rules: add ability to handle fully experimental libs to be soname zero
    - d/control: experimental only libs now are on an soname 0.200 (bbdev, bpf,
      compressdev, fib, flow-classify, ipsec, rcu, rib, stack, telemetry)
    - d/control: let libdpdk-dev depend on the new build dependencies
  * fixup package reference in debian/librte-common-octeontx2-19.11.symbols
  * drop duplicate debian/update-control.py helper
  [ Christian Ehrhardt ]
  * New upstream release 19.08; for a full list of changes see:
    http://doc.dpdk.org/guides-19.08/rel_notes/release_19_08.html
    - d/*.symbols: flat update for 19.08
    - d/control: update to new major version number
    - d/dpdk-dev.install: update new paths to dpdk-test
    - d/control, d/librte-pmd-qede18.11.symbols: drop pmd-qede no more built
      by default
    - d/control, d/*.symbols: new PMDs librte-pmd-octeontx2
      librte-pmd-bbdev-fpga-lte-fec librte-pmd-bbdev-turbo-sw librte-pmd-hinic
      librte-pmd-ice librte-pmd-ipn3ke librte-pmd-memif
      librte-pmd-octeontx2-event
    - d/control, d/*.symbols: renamed PMDs
      - librte-pmd-skeleton-rawdev -> librte-rawdev-skeleton
      - librte-pmd-dpaa2-cmdif -> librte-rawdev-dpaa2-cmdif
      - librte-pmd-dpaa2-qdma -> librte-rawdev-dpaa2-qdma
      - librte-pmd-avf -> librte-pmd-iavf
      - librte-pmd-ifpga-rawdev (somewhat indirectly replaced by
        librte-pmd-ipn3ke)
    - d/control: add new Homepage references
    - d/control, d/*.symbols: new rawdev drivers librte-rawdev-ioat,
      librte-rawdev-ntb and librte-rawdev-octeontx2-dma
    - d/control, d/*.symbols: add new libraries librte-common-octeontx2,
      librte-ipsec, librte-mempool-octeontx2, librte-rcu and librte-stack
    - d/dpdk-dev.install: new test binaries" debian/dpdk-dev.install
    - d/dpdk-doc.install: add new examples path" debian/dpdk-doc.install
    - d/*.symbols: add new and updated symbols
    - d/p/fix-ppc64-mlx4-build.patch: fix FTBFS on ppc64el
  * Drop patches now upstream
    - 0004-build-bump-minimum-Meson-version-to-0.47.1.patch
    - 0005-build-use-dependency-instead-of-find_library.patch
    - 0006-build-reorder-libraries-and-build-eal-before-cmdline.patch
    - 0007-build-use-dependency-for-libbsd-instead-of-manual-ap.patch

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh
2index 4eb7c3c..ccc3a7c 100755
3--- a/.ci/linux-build.sh
4+++ b/.ci/linux-build.sh
5@@ -16,9 +16,26 @@ trap on_error EXIT
6
7 if [ "$AARCH64" = "1" ]; then
8 # convert the arch specifier
9- OPTS="$OPTS --cross-file config/arm/arm64_armv8_linuxapp_gcc"
10+ OPTS="$OPTS --cross-file config/arm/arm64_armv8_linux_gcc"
11+fi
12+
13+if [ "$BUILD_DOCS" = "1" ]; then
14+ OPTS="$OPTS -Denable_docs=true"
15+fi
16+
17+if [ "$BUILD_32BIT" = "1" ]; then
18+ OPTS="$OPTS -Dc_args=-m32 -Dc_link_args=-m32"
19+ export PKG_CONFIG_LIBDIR="/usr/lib32/pkgconfig"
20 fi
21
22 OPTS="$OPTS --default-library=$DEF_LIB"
23 meson build --werror -Dexamples=all $OPTS
24 ninja -C build
25+
26+if [ "$AARCH64" != "1" ]; then
27+ devtools/test-null.sh
28+fi
29+
30+if [ "$RUN_TESTS" = "1" ]; then
31+ sudo meson test -C build --suite fast-tests -t 3
32+fi
33diff --git a/.ci/linux-setup.sh b/.ci/linux-setup.sh
34index acdf9f3..dfb9d4a 100755
35--- a/.ci/linux-setup.sh
36+++ b/.ci/linux-setup.sh
37@@ -1,3 +1,9 @@
38-#!/bin/sh
39+#!/bin/sh -xe
40
41-python3 -m pip install --upgrade meson --user
42+# need to install as 'root' since some of the unit tests won't run without it
43+sudo python3 -m pip install --upgrade meson
44+
45+# setup hugepages
46+cat /proc/meminfo
47+sudo sh -c 'echo 1024 > /proc/sys/vm/nr_hugepages'
48+cat /proc/meminfo
49diff --git a/.gitignore b/.gitignore
50index 3d6b35e..9741ba0 100644
51--- a/.gitignore
52+++ b/.gitignore
53@@ -1,3 +1,7 @@
54+# ignore hidden files
55+.*
56+
57+# ignore generated documentation tables
58 doc/guides/nics/overview_table.txt
59 doc/guides/cryptodevs/overview_feature_table.txt
60 doc/guides/cryptodevs/overview_cipher_table.txt
61@@ -5,6 +9,8 @@ doc/guides/cryptodevs/overview_auth_table.txt
62 doc/guides/cryptodevs/overview_aead_table.txt
63 doc/guides/cryptodevs/overview_asym_table.txt
64 doc/guides/compressdevs/overview_feature_table.txt
65+
66+# ignore generated ctags/cscope files
67 cscope.out.po
68 cscope.out.in
69 cscope.out
70@@ -14,3 +20,13 @@ GPATH
71 GRTAGS
72 tags
73 TAGS
74+
75+# ignore python bytecode files
76+*.pyc
77+
78+# ignore default build directory, and directories from test-meson-builds.sh
79+build
80+build-*
81+# ignore other build directory patterns
82+*-gcc*
83+*-clang*
84diff --git a/.travis.yml b/.travis.yml
85index 7b167fa..8f90d06 100644
86--- a/.travis.yml
87+++ b/.travis.yml
88@@ -17,12 +17,19 @@ addons:
89
90 aarch64_packages: &aarch64_packages
91 - *required_packages
92- - [gcc-aarch64-linux-gnu, libc6-dev-arm64-cross]
93+ - [gcc-aarch64-linux-gnu, libc6-dev-arm64-cross, pkg-config-aarch64-linux-gnu]
94
95 extra_packages: &extra_packages
96 - *required_packages
97 - [libbsd-dev, libpcap-dev, libcrypto++-dev, libjansson4]
98
99+build_32b_packages: &build_32b_packages
100+ - *required_packages
101+ - [gcc-multilib]
102+
103+doc_packages: &doc_packages
104+ - [doxygen, graphviz, python3-sphinx]
105+
106 before_install: ./.ci/${TRAVIS_OS_NAME}-setup.sh
107
108 env:
109@@ -30,9 +37,16 @@ env:
110 - DEF_LIB="shared"
111 - DEF_LIB="static" OPTS="-Denable_kmods=false"
112 - DEF_LIB="shared" OPTS="-Denable_kmods=false"
113+ - DEF_LIB="shared" RUN_TESTS=1
114
115 matrix:
116 include:
117+ - env: DEF_LIB="static" BUILD_32BIT=1
118+ compiler: gcc
119+ addons:
120+ apt:
121+ packages:
122+ - *build_32b_packages
123 - env: DEF_LIB="static" OPTS="-Denable_kmods=false" AARCH64=1
124 compiler: gcc
125 addons:
126@@ -51,12 +65,13 @@ matrix:
127 apt:
128 packages:
129 - *extra_packages
130- - env: DEF_LIB="shared" EXTRA_PACKAGES=1
131+ - env: DEF_LIB="shared" EXTRA_PACKAGES=1 RUN_TESTS=1 BUILD_DOCS=1
132 compiler: gcc
133 addons:
134 apt:
135 packages:
136 - *extra_packages
137+ - *doc_packages
138 - env: DEF_LIB="static" OPTS="-Denable_kmods=false" EXTRA_PACKAGES=1
139 compiler: gcc
140 addons:
141@@ -81,6 +96,13 @@ matrix:
142 apt:
143 packages:
144 - *extra_packages
145+ - env: DEF_LIB="shared" EXTRA_PACKAGES=1 RUN_TESTS=1 BUILD_DOCS=1
146+ compiler: clang
147+ addons:
148+ apt:
149+ packages:
150+ - *extra_packages
151+ - *doc_packages
152 - env: DEF_LIB="static" OPTS="-Denable_kmods=false" EXTRA_PACKAGES=1
153 compiler: clang
154 addons:
155diff --git a/ABI_VERSION b/ABI_VERSION
156new file mode 100644
157index 0000000..9a7c1e5
158--- /dev/null
159+++ b/ABI_VERSION
160@@ -0,0 +1 @@
161+20.0
162diff --git a/GNUmakefile b/GNUmakefile
163index ae80720..e8de422 100644
164--- a/GNUmakefile
165+++ b/GNUmakefile
166@@ -13,6 +13,5 @@ export RTE_SDK
167 #
168
169 ROOTDIRS-y := buildtools lib kernel drivers app
170-ROOTDIRS- := test
171
172 include $(RTE_SDK)/mk/rte.sdkroot.mk
173diff --git a/MAINTAINERS b/MAINTAINERS
174index d0ba42e..4395d8d 100644
175--- a/MAINTAINERS
176+++ b/MAINTAINERS
177@@ -24,20 +24,29 @@ General Project Administration
178
179 Main Branch
180 M: Thomas Monjalon <thomas@monjalon.net>
181-M: Ferruh Yigit <ferruh.yigit@intel.com>
182+M: David Marchand <david.marchand@redhat.com>
183 T: git://dpdk.org/dpdk
184
185 Next-net Tree
186 M: Ferruh Yigit <ferruh.yigit@intel.com>
187+M: Andrew Rybchenko <arybchenko@solarflare.com>
188 T: git://dpdk.org/next/dpdk-next-net
189
190+Next-net-brcm Tree
191+M: Ajit Khaparde <ajit.khaparde@broadcom.com>
192+T: git://dpdk.org/next/dpdk-next-net-brcm
193+
194 Next-net-intel Tree
195 M: Qi Zhang <qi.z.zhang@intel.com>
196-M: Beilei Xing <beilei.xing@intel.com>
197+M: Xiaolong Ye <xiaolong.ye@intel.com>
198 T: git://dpdk.org/next/dpdk-next-net-intel
199
200+Next-net-mrvl Tree
201+M: Jerin Jacob <jerinj@marvell.com>
202+T: git://dpdk.org/next/dpdk-next-net-mrvl
203+
204 Next-net-mlx Tree
205-M: Shahaf Shuler <shahafs@mellanox.com>
206+M: Raslan Darawsheh <rasland@mellanox.com>
207 T: git://dpdk.org/next/dpdk-next-net-mlx
208
209 Next-virtio Tree
210@@ -46,12 +55,11 @@ M: Tiwei Bie <tiwei.bie@intel.com>
211 T: git://dpdk.org/next/dpdk-next-virtio
212
213 Next-crypto Tree
214-M: Pablo de Lara <pablo.de.lara.guarch@intel.com>
215 M: Akhil Goyal <akhil.goyal@nxp.com>
216 T: git://dpdk.org/next/dpdk-next-crypto
217
218 Next-eventdev Tree
219-M: Jerin Jacob <jerin.jacob@caviumnetworks.com>
220+M: Jerin Jacob <jerinj@marvell.com>
221 T: git://dpdk.org/next/dpdk-next-eventdev
222
223 Next-qos Tree
224@@ -63,8 +71,8 @@ M: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
225 T: git://dpdk.org/next/dpdk-next-pipeline
226
227 Stable Branches
228-M: Yuanhan Liu <yliu@fridaylinux.org>
229 M: Luca Boccassi <bluca@debian.org>
230+M: Kevin Traynor <ktraynor@redhat.com>
231 T: git://dpdk.org/dpdk-stable
232
233 Security Issues
234@@ -76,6 +84,10 @@ M: Marko Kovacevic <marko.kovacevic@intel.com>
235 F: README
236 F: doc/
237
238+ABI Policy
239+M: Ray Kinsella <mdr@ashroe.eu>
240+F: doc/guides/contributing/abi_*.rst
241+
242 Developers and Maintainers Tools
243 M: Thomas Monjalon <thomas@monjalon.net>
244 F: MAINTAINERS
245@@ -101,7 +113,6 @@ F: GNUmakefile
246 F: Makefile
247 F: config/
248 F: mk/
249-F: pkg/
250 F: buildtools/auto-config-h.sh
251 F: buildtools/gen-build-mk.sh
252 F: buildtools/gen-config-h.sh
253@@ -114,25 +125,31 @@ F: doc/guides/prog_guide/ext_app_lib_make_help.rst
254 Meson build
255 M: Bruce Richardson <bruce.richardson@intel.com>
256 F: meson.build
257-F: lib/librte_eal/bsdapp/BSDmakefile.meson
258+F: lib/librte_eal/freebsd/BSDmakefile.meson
259 F: meson_options.txt
260 F: config/rte_config.h
261 F: buildtools/gen-pmdinfo-cfile.sh
262+F: buildtools/map_to_def.py
263 F: buildtools/symlink-drivers-solibs.sh
264
265 Public CI
266 M: Aaron Conole <aconole@redhat.com>
267-M: Michael Santana <msantana@redhat.com>
268+M: Michael Santana <maicolgabriel@hotmail.com>
269 F: .travis.yml
270 F: .ci/
271
272 ABI versioning
273 M: Neil Horman <nhorman@tuxdriver.com>
274-F: lib/librte_compat/
275+F: lib/librte_eal/common/include/rte_compat.h
276+F: lib/librte_eal/common/include/rte_function_versioning.h
277 F: doc/guides/rel_notes/deprecation.rst
278-F: devtools/validate-abi.sh
279+F: devtools/check-abi-version.sh
280 F: devtools/check-symbol-change.sh
281+F: devtools/update-abi.sh
282+F: devtools/update_version_map_abi.py
283+F: devtools/validate-abi.sh
284 F: buildtools/check-experimental-syms.sh
285+F: buildtools/map-list-symbol.sh
286
287 Driver information
288 M: Neil Horman <nhorman@tuxdriver.com>
289@@ -150,27 +167,27 @@ F: lib/librte_eal/common/include/*
290 F: lib/librte_eal/common/include/generic/
291 F: lib/librte_eal/rte_eal_version.map
292 F: doc/guides/prog_guide/env_abstraction_layer.rst
293-F: test/test/test_alarm.c
294-F: test/test/test_atomic.c
295-F: test/test/test_barrier.c
296-F: test/test/test_byteorder.c
297-F: test/test/test_common.c
298-F: test/test/test_cpuflags.c
299-F: test/test/test_cycles.c
300-F: test/test/test_debug.c
301-F: test/test/test_eal*
302-F: test/test/test_errno.c
303-F: test/test/test_interrupts.c
304-F: test/test/test_logs.c
305-F: test/test/test_memcpy*
306-F: test/test/test_per_lcore.c
307-F: test/test/test_prefetch.c
308-F: test/test/test_reciprocal_division*
309-F: test/test/test_rwlock.c
310-F: test/test/test_spinlock.c
311-F: test/test/test_string_fns.c
312-F: test/test/test_tailq.c
313-F: test/test/test_version.c
314+F: app/test/test_alarm.c
315+F: app/test/test_atomic.c
316+F: app/test/test_barrier.c
317+F: app/test/test_byteorder.c
318+F: app/test/test_common.c
319+F: app/test/test_cpuflags.c
320+F: app/test/test_cycles.c
321+F: app/test/test_debug.c
322+F: app/test/test_eal*
323+F: app/test/test_errno.c
324+F: app/test/test_interrupts.c
325+F: app/test/test_logs.c
326+F: app/test/test_memcpy*
327+F: app/test/test_per_lcore.c
328+F: app/test/test_prefetch.c
329+F: app/test/test_reciprocal_division*
330+F: app/test/test_rwlock.c
331+F: app/test/test_spinlock.c
332+F: app/test/test_string_fns.c
333+F: app/test/test_tailq.c
334+F: app/test/test_version.c
335
336 Memory Allocation
337 M: Anatoly Burakov <anatoly.burakov@intel.com>
338@@ -181,18 +198,17 @@ F: lib/librte_eal/common/*malloc*
339 F: lib/librte_eal/common/eal_common_fbarray.c
340 F: lib/librte_eal/common/eal_common_mem*
341 F: lib/librte_eal/common/eal_hugepages.h
342-F: lib/librte_eal/linuxapp/eal/eal_mem*
343-F: lib/librte_eal/bsdapp/eal/eal_mem*
344+F: lib/librte_eal/linux/eal/eal_mem*
345+F: lib/librte_eal/freebsd/eal/eal_mem*
346 F: doc/guides/prog_guide/env_abstraction_layer.rst
347-F: test/test/test_external_mem.c
348-F: test/test/test_func_reentrancy.c
349-F: test/test/test_fbarray.c
350-F: test/test/test_malloc.c
351-F: test/test/test_memory.c
352-F: test/test/test_memzone.c
353+F: app/test/test_external_mem.c
354+F: app/test/test_func_reentrancy.c
355+F: app/test/test_fbarray.c
356+F: app/test/test_malloc.c
357+F: app/test/test_memory.c
358+F: app/test/test_memzone.c
359
360 Keep alive
361-M: Remy Horton <remy.horton@intel.com>
362 F: lib/librte_eal/common/include/rte_keepalive.h
363 F: lib/librte_eal/common/rte_keepalive.c
364 F: examples/l2fwd-keepalive/
365@@ -201,8 +217,9 @@ F: doc/guides/sample_app_ug/keep_alive.rst
366 Secondary process
367 M: Anatoly Burakov <anatoly.burakov@intel.com>
368 K: RTE_PROC_
369+F: lib/librte_eal/common/eal_common_proc.c
370 F: doc/guides/prog_guide/multi_proc_support.rst
371-F: test/test/test_mp_secondary.c
372+F: app/test/test_mp_secondary.c
373 F: examples/multi_process/
374 F: doc/guides/sample_app_ug/multi_process.rst
375
376@@ -212,12 +229,28 @@ F: lib/librte_eal/common/include/rte_service.h
377 F: lib/librte_eal/common/include/rte_service_component.h
378 F: lib/librte_eal/common/rte_service.c
379 F: doc/guides/prog_guide/service_cores.rst
380-F: test/test/test_service_cores.c
381+F: app/test/test_service_cores.c
382
383 Bitmap
384 M: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
385 F: lib/librte_eal/common/include/rte_bitmap.h
386-F: test/test/test_bitmap.c
387+F: app/test/test_bitmap.c
388+
389+MCSlock - EXPERIMENTAL
390+M: Phil Yang <phil.yang@arm.com>
391+F: lib/librte_eal/common/include/generic/rte_mcslock.h
392+F: app/test/test_mcslock.c
393+
394+Ticketlock
395+M: Joyce Kong <joyce.kong@arm.com>
396+F: lib/librte_eal/common/include/generic/rte_ticketlock.h
397+F: app/test/test_ticketlock.c
398+
399+Pseudo-random Number Generation
400+M: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
401+F: lib/librte_eal/common/include/rte_random.h
402+F: lib/librte_eal/common/rte_random.c
403+F: app/test/test_rand_perf.c
404
405 ARM v7
406 M: Jan Viktorin <viktorin@rehivetech.com>
407@@ -226,11 +259,12 @@ F: lib/librte_eal/common/arch/arm/
408 F: lib/librte_eal/common/include/arch/arm/
409
410 ARM v8
411-M: Jerin Jacob <jerin.jacob@caviumnetworks.com>
412+M: Jerin Jacob <jerinj@marvell.com>
413 M: Gavin Hu <gavin.hu@arm.com>
414 F: lib/librte_eal/common/include/arch/arm/*_64.h
415 F: lib/librte_net/net_crc_neon.h
416 F: lib/librte_acl/acl_run_neon.*
417+F: lib/librte_bpf/bpf_jit_arm64.c
418 F: lib/librte_lpm/rte_lpm_neon.h
419 F: lib/librte_hash/rte*_arm64.h
420 F: lib/librte_efd/rte*_arm64.h
421@@ -253,8 +287,8 @@ F: lib/librte_eal/common/arch/x86/
422 F: lib/librte_eal/common/include/arch/x86/
423
424 Linux EAL (with overlaps)
425-F: lib/librte_eal/linuxapp/Makefile
426-F: lib/librte_eal/linuxapp/eal/
427+F: lib/librte_eal/linux/Makefile
428+F: lib/librte_eal/linux/eal/
429 F: doc/guides/linux_gsg/
430
431 Linux UIO
432@@ -264,13 +298,13 @@ F: drivers/bus/pci/linux/*uio*
433
434 Linux VFIO
435 M: Anatoly Burakov <anatoly.burakov@intel.com>
436-F: lib/librte_eal/linuxapp/eal/*vfio*
437+F: lib/librte_eal/linux/eal/*vfio*
438 F: drivers/bus/pci/linux/*vfio*
439
440 FreeBSD EAL (with overlaps)
441 M: Bruce Richardson <bruce.richardson@intel.com>
442-F: lib/librte_eal/bsdapp/Makefile
443-F: lib/librte_eal/bsdapp/eal/
444+F: lib/librte_eal/freebsd/Makefile
445+F: lib/librte_eal/freebsd/eal/
446 F: doc/guides/freebsd_gsg/
447
448 FreeBSD contigmem
449@@ -281,6 +315,16 @@ FreeBSD UIO
450 M: Bruce Richardson <bruce.richardson@intel.com>
451 F: kernel/freebsd/nic_uio/
452
453+Windows support
454+M: Harini Ramakrishnan <harini.ramakrishnan@microsoft.com>
455+M: Omar Cardona <ocardona@microsoft.com>
456+M: Anand Rawat <anand.rawat@intel.com>
457+M: Ranjit Menon <ranjit.menon@intel.com>
458+F: kernel/windows/
459+F: lib/librte_eal/windows/
460+F: lib/librte_eal/rte_eal_exports.def
461+F: doc/guides/windows_gsg/
462+
463
464 Core Libraries
465 --------------
466@@ -291,23 +335,30 @@ M: Andrew Rybchenko <arybchenko@solarflare.com>
467 F: lib/librte_mempool/
468 F: drivers/mempool/Makefile
469 F: drivers/mempool/ring/
470-F: drivers/mempool/stack/
471 F: doc/guides/prog_guide/mempool_lib.rst
472-F: test/test/test_mempool*
473-F: test/test/test_func_reentrancy.c
474+F: app/test/test_mempool*
475+F: app/test/test_func_reentrancy.c
476
477 Ring queue
478 M: Olivier Matz <olivier.matz@6wind.com>
479 F: lib/librte_ring/
480 F: doc/guides/prog_guide/ring_lib.rst
481-F: test/test/test_ring*
482-F: test/test/test_func_reentrancy.c
483+F: app/test/test_ring*
484+F: app/test/test_func_reentrancy.c
485+
486+Stack - EXPERIMENTAL
487+M: Gage Eads <gage.eads@intel.com>
488+M: Olivier Matz <olivier.matz@6wind.com>
489+F: lib/librte_stack/
490+F: drivers/mempool/stack/
491+F: app/test/test_stack*
492+F: doc/guides/prog_guide/stack_lib.rst
493
494 Packet buffer
495 M: Olivier Matz <olivier.matz@6wind.com>
496 F: lib/librte_mbuf/
497 F: doc/guides/prog_guide/mbuf_lib.rst
498-F: test/test/test_mbuf.c
499+F: app/test/test_mbuf.c
500
501 Ethernet API
502 M: Thomas Monjalon <thomas@monjalon.net>
503@@ -316,6 +367,7 @@ M: Andrew Rybchenko <arybchenko@solarflare.com>
504 T: git://dpdk.org/next/dpdk-next-net
505 F: lib/librte_ethdev/
506 F: devtools/test-null.sh
507+F: doc/guides/prog_guide/switch_representation.rst
508
509 Flow API
510 M: Adrien Mazarguil <adrien.mazarguil@6wind.com>
511@@ -334,7 +386,7 @@ M: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
512 F: lib/librte_ethdev/rte_mtr*
513
514 Baseband API - EXPERIMENTAL
515-M: Amr Mokhtar <amr.mokhtar@intel.com>
516+M: Nicolas Chautru <nicolas.chautru@intel.com>
517 T: git://dpdk.org/next/dpdk-next-crypto
518 F: lib/librte_bbdev/
519 F: doc/guides/prog_guide/bbdev.rst
520@@ -346,11 +398,10 @@ F: examples/bbdev_app/
521 F: doc/guides/sample_app_ug/bbdev_app.rst
522
523 Crypto API
524-M: Pablo de Lara <pablo.de.lara.guarch@intel.com>
525 M: Declan Doherty <declan.doherty@intel.com>
526 T: git://dpdk.org/next/dpdk-next-crypto
527 F: lib/librte_cryptodev/
528-F: test/test/test_cryptodev*
529+F: app/test/test_cryptodev*
530 F: examples/l2fwd-crypto/
531
532 Security API
533@@ -362,56 +413,55 @@ F: doc/guides/prog_guide/rte_security.rst
534
535 Compression API - EXPERIMENTAL
536 M: Fiona Trahe <fiona.trahe@intel.com>
537-M: Pablo de Lara <pablo.de.lara.guarch@intel.com>
538-M: Ashish Gupta <ashish.gupta@caviumnetworks.com>
539+M: Ashish Gupta <ashish.gupta@marvell.com>
540 T: git://dpdk.org/next/dpdk-next-crypto
541 F: lib/librte_compressdev/
542 F: drivers/compress/
543-F: test/test/test_compressdev*
544+F: app/test/test_compressdev*
545 F: doc/guides/prog_guide/compressdev.rst
546 F: doc/guides/compressdevs/features/default.ini
547
548 Eventdev API
549-M: Jerin Jacob <jerin.jacob@caviumnetworks.com>
550+M: Jerin Jacob <jerinj@marvell.com>
551 T: git://dpdk.org/next/dpdk-next-eventdev
552 F: lib/librte_eventdev/
553 F: drivers/event/skeleton/
554-F: test/test/test_eventdev.c
555+F: app/test/test_eventdev.c
556
557-Eventdev Ethdev Rx Adapter API - EXPERIMENTAL
558+Eventdev Ethdev Rx Adapter API
559 M: Nikhil Rao <nikhil.rao@intel.com>
560 T: git://dpdk.org/next/dpdk-next-eventdev
561 F: lib/librte_eventdev/*eth_rx_adapter*
562-F: test/test/test_event_eth_rx_adapter.c
563+F: app/test/test_event_eth_rx_adapter.c
564 F: doc/guides/prog_guide/event_ethernet_rx_adapter.rst
565
566-Eventdev Ethdev Tx Adapter API - EXPERIMENTAL
567+Eventdev Ethdev Tx Adapter API
568 M: Nikhil Rao <nikhil.rao@intel.com>
569 T: git://dpdk.org/next/dpdk-next-eventdev
570 F: lib/librte_eventdev/*eth_tx_adapter*
571-F: test/test/test_event_eth_tx_adapter.c
572+F: app/test/test_event_eth_tx_adapter.c
573 F: doc/guides/prog_guide/event_ethernet_tx_adapter.rst
574
575-Eventdev Timer Adapter API - EXPERIMENTAL
576+Eventdev Timer Adapter API
577 M: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
578 T: git://dpdk.org/next/dpdk-next-eventdev
579 F: lib/librte_eventdev/*timer_adapter*
580-F: test/test/test_event_timer_adapter.c
581+F: app/test/test_event_timer_adapter.c
582 F: doc/guides/prog_guide/event_timer_adapter.rst
583
584-Eventdev Crypto Adapter API - EXPERIMENTAL
585+Eventdev Crypto Adapter API
586 M: Abhinandan Gujjar <abhinandan.gujjar@intel.com>
587 T: git://dpdk.org/next/dpdk-next-eventdev
588 F: lib/librte_eventdev/*crypto_adapter*
589-F: test/test/test_event_crypto_adapter.c
590+F: app/test/test_event_crypto_adapter.c
591 F: doc/guides/prog_guide/event_crypto_adapter.rst
592
593 Raw device API - EXPERIMENTAL
594 M: Shreyansh Jain <shreyansh.jain@nxp.com>
595 M: Hemant Agrawal <hemant.agrawal@nxp.com>
596 F: lib/librte_rawdev/
597-F: drivers/raw/skeleton_rawdev/
598-F: test/test/test_rawdev.c
599+F: drivers/raw/skeleton/
600+F: app/test/test_rawdev.c
601 F: doc/guides/prog_guide/rawdev.rst
602
603
604@@ -423,6 +473,16 @@ M: Artem V. Andreev <artem.andreev@oktetlabs.ru>
605 M: Andrew Rybchenko <arybchenko@solarflare.com>
606 F: drivers/mempool/bucket/
607
608+Marvell OCTEON TX2
609+M: Jerin Jacob <jerinj@marvell.com>
610+M: Nithin Dabilpuram <ndabilpuram@marvell.com>
611+M: Vamsi Attunuru <vattunuru@marvell.com>
612+F: drivers/common/octeontx2/
613+F: drivers/mempool/octeontx2/
614+F: doc/guides/platform/img/octeontx2_*
615+F: doc/guides/platform/octeontx2.rst
616+F: doc/guides/mempool/octeontx2.rst
617+
618
619 Bus Drivers
620 -----------
621@@ -433,7 +493,7 @@ F: drivers/bus/ifpga/
622
623 NXP buses
624 M: Hemant Agrawal <hemant.agrawal@nxp.com>
625-M: Shreyansh Jain <shreyansh.jain@nxp.com>
626+M: Sachin Saxena <sachin.saxena@nxp.com>
627 F: drivers/common/dpaax/
628 F: drivers/bus/dpaa/
629 F: drivers/bus/fslmc/
630@@ -456,11 +516,10 @@ T: git://dpdk.org/next/dpdk-next-net
631 F: doc/guides/nics/features/default.ini
632
633 Link bonding
634-M: Declan Doherty <declan.doherty@intel.com>
635 M: Chas Williams <chas3@att.com>
636 F: drivers/net/bonding/
637 F: doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst
638-F: test/test/test_link_bonding*
639+F: app/test/test_link_bonding*
640 F: examples/bond/
641 F: doc/guides/nics/features/bonding.ini
642
643@@ -469,7 +528,7 @@ M: Ferruh Yigit <ferruh.yigit@intel.com>
644 F: kernel/linux/kni/
645 F: lib/librte_kni/
646 F: doc/guides/prog_guide/kernel_nic_interface.rst
647-F: test/test/test_kni.c
648+F: app/test/test_kni.c
649 F: examples/kni/
650 F: doc/guides/sample_app_ug/kernel_nic_interface.rst
651
652@@ -478,11 +537,19 @@ M: John W. Linville <linville@tuxdriver.com>
653 F: drivers/net/af_packet/
654 F: doc/guides/nics/features/afpacket.ini
655
656+Linux AF_XDP
657+M: Xiaolong Ye <xiaolong.ye@intel.com>
658+M: Qi Zhang <qi.z.zhang@intel.com>
659+F: drivers/net/af_xdp/
660+F: doc/guides/nics/af_xdp.rst
661+F: doc/guides/nics/features/af_xdp.ini
662+
663 Amazon ENA
664 M: Marcin Wojtas <mw@semihalf.com>
665 M: Michal Krawczyk <mk@semihalf.com>
666 M: Guy Tzalik <gtzalik@amazon.com>
667 M: Evgeny Schemeilin <evgenys@amazon.com>
668+M: Igor Chauskin <igorch@amazon.com>
669 F: drivers/net/ena/
670 F: doc/guides/nics/ena.rst
671 F: doc/guides/nics/features/ena.ini
672@@ -511,26 +578,30 @@ F: doc/guides/nics/features/ark.ini
673 Broadcom bnxt
674 M: Ajit Khaparde <ajit.khaparde@broadcom.com>
675 M: Somnath Kotur <somnath.kotur@broadcom.com>
676+T: git://dpdk.org/next/dpdk-next-net-brcm
677 F: drivers/net/bnxt/
678 F: doc/guides/nics/bnxt.rst
679 F: doc/guides/nics/features/bnxt.ini
680
681 Cavium ThunderX nicvf
682-M: Jerin Jacob <jerin.jacob@caviumnetworks.com>
683-M: Maciej Czekaj <maciej.czekaj@caviumnetworks.com>
684+M: Jerin Jacob <jerinj@marvell.com>
685+M: Maciej Czekaj <mczekaj@marvell.com>
686+T: git://dpdk.org/next/dpdk-next-net-mrvl
687 F: drivers/net/thunderx/
688 F: doc/guides/nics/thunderx.rst
689 F: doc/guides/nics/features/thunderx.ini
690
691 Cavium LiquidIO
692-M: Shijith Thotton <shijith.thotton@cavium.com>
693-M: Srisivasubramanian Srinivasan <ssrinivasan@cavium.com>
694+M: Shijith Thotton <sthotton@marvell.com>
695+M: Srisivasubramanian Srinivasan <srinivasan@marvell.com>
696+T: git://dpdk.org/next/dpdk-next-net-mrvl
697 F: drivers/net/liquidio/
698 F: doc/guides/nics/liquidio.rst
699 F: doc/guides/nics/features/liquidio.ini
700
701 Cavium OCTEON TX
702-M: Jerin Jacob <jerin.jacob@caviumnetworks.com>
703+M: Jerin Jacob <jerinj@marvell.com>
704+T: git://dpdk.org/next/dpdk-next-net-mrvl
705 F: drivers/common/octeontx/
706 F: drivers/mempool/octeontx/
707 F: drivers/net/octeontx/
708@@ -550,6 +621,22 @@ F: drivers/net/enic/
709 F: doc/guides/nics/enic.rst
710 F: doc/guides/nics/features/enic.ini
711
712+Hisilicon hns3
713+M: Wei Hu (Xavier) <xavier.huwei@huawei.com>
714+M: Min Hu (Connor) <humin29@huawei.com>
715+M: Yisen Zhuang <yisen.zhuang@huawei.com>
716+F: drivers/net/hns3/
717+F: doc/guides/nics/hns3.rst
718+F: doc/guides/nics/features/hns3.ini
719+
720+Huawei hinic
721+M: Ziyang Xuan <xuanziyang2@huawei.com>
722+M: Xiaoyun Wang <cloud.wangxiaoyun@huawei.com>
723+M: Guoyang Zhou <zhouguoyang@huawei.com>
724+F: drivers/net/hinic/
725+F: doc/guides/nics/hinic.rst
726+F: doc/guides/nics/features/hinic.ini
727+
728 Intel e1000
729 M: Wenzhuo Lu <wenzhuo.lu@intel.com>
730 T: git://dpdk.org/next/dpdk-next-net-intel
731@@ -585,12 +672,12 @@ F: drivers/net/fm10k/
732 F: doc/guides/nics/fm10k.rst
733 F: doc/guides/nics/features/fm10k*.ini
734
735-Intel avf
736+Intel iavf
737 M: Jingjing Wu <jingjing.wu@intel.com>
738 M: Wenzhuo Lu <wenzhuo.lu@intel.com>
739 T: git://dpdk.org/next/dpdk-next-net-intel
740-F: drivers/net/avf/
741-F: doc/guides/nics/features/avf*.ini
742+F: drivers/net/iavf/
743+F: doc/guides/nics/features/iavf*.ini
744
745 Intel ifc
746 M: Xiao Wang <xiao.w.wang@intel.com>
747@@ -599,10 +686,25 @@ F: drivers/net/ifc/
748 F: doc/guides/nics/ifc.rst
749 F: doc/guides/nics/features/ifc*.ini
750
751+Intel ice
752+M: Qiming Yang <qiming.yang@intel.com>
753+M: Wenzhuo Lu <wenzhuo.lu@intel.com>
754+T: git://dpdk.org/next/dpdk-next-net-intel
755+F: drivers/net/ice/
756+F: doc/guides/nics/ice.rst
757+F: doc/guides/nics/features/ice.ini
758+
759+Intel ipn3ke
760+M: Rosen Xu <rosen.xu@intel.com>
761+T: git://dpdk.org/next/dpdk-next-net-intel
762+F: drivers/net/ipn3ke/
763+F: doc/guides/nics/ipn3ke.rst
764+F: doc/guides/nics/features/ipn3ke.ini
765+
766 Marvell mvpp2
767 M: Tomasz Duszynski <tdu@semihalf.com>
768-M: Dmitri Epshtein <dima@marvell.com>
769-M: Natalie Samsonov <nsamsono@marvell.com>
770+M: Liron Himi <lironh@marvell.com>
771+T: git://dpdk.org/next/dpdk-next-net-mrvl
772 F: drivers/common/mvep/
773 F: drivers/net/mvpp2/
774 F: doc/guides/nics/mvpp2.rst
775@@ -610,12 +712,21 @@ F: doc/guides/nics/features/mvpp2.ini
776
777 Marvell mvneta
778 M: Zyta Szpak <zr@semihalf.com>
779-M: Dmitri Epshtein <dima@marvell.com>
780-M: Natalie Samsonov <nsamsono@marvell.com>
781+M: Liron Himi <lironh@marvell.com>
782+T: git://dpdk.org/next/dpdk-next-net-mrvl
783 F: drivers/net/mvneta/
784 F: doc/guides/nics/mvneta.rst
785 F: doc/guides/nics/features/mvneta.ini
786
787+Marvell OCTEON TX2
788+M: Jerin Jacob <jerinj@marvell.com>
789+M: Nithin Dabilpuram <ndabilpuram@marvell.com>
790+M: Kiran Kumar K <kirankumark@marvell.com>
791+T: git://dpdk.org/next/dpdk-next-net-mrvl
792+F: drivers/net/octeontx2/
793+F: doc/guides/nics/features/octeontx2*.ini
794+F: doc/guides/nics/octeontx2.rst
795+
796 Mellanox mlx4
797 M: Matan Azrad <matan@mellanox.com>
798 M: Shahaf Shuler <shahafs@mellanox.com>
799@@ -625,10 +736,12 @@ F: doc/guides/nics/mlx4.rst
800 F: doc/guides/nics/features/mlx4.ini
801
802 Mellanox mlx5
803+M: Matan Azrad <matan@mellanox.com>
804 M: Shahaf Shuler <shahafs@mellanox.com>
805-M: Yongseok Koh <yskoh@mellanox.com>
806+M: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
807 T: git://dpdk.org/next/dpdk-next-net-mlx
808 F: drivers/net/mlx5/
809+F: buildtools/options-ibverbs-static.sh
810 F: doc/guides/nics/mlx5.rst
811 F: doc/guides/nics/features/mlx5.ini
812
813@@ -648,19 +761,28 @@ F: doc/guides/nics/features/netvsc.ini
814
815 Netcope szedata2
816 M: Jan Remes <remes@netcope.com>
817+M: Rastislav Cernay <cernay@netcope.com>
818 F: drivers/net/szedata2/
819 F: doc/guides/nics/szedata2.rst
820 F: doc/guides/nics/features/szedata2.ini
821
822+Netcope nfb
823+M: Rastislav Cernay <cernay@netcope.com>
824+M: Jan Remes <remes@netcope.com>
825+F: drivers/net/nfb/
826+F: doc/guides/nics/nfb.rst
827+F: doc/guides/nics/features/nfb.ini
828+
829 Netronome nfp
830-M: Alejandro Lucero <alejandro.lucero@netronome.com>
831+M: Heinrich Kuhn <heinrich.kuhn@netronome.com>
832+M: Jan Gutter <jan.gutter@netronome.com>
833 F: drivers/net/nfp/
834 F: doc/guides/nics/nfp.rst
835 F: doc/guides/nics/features/nfp*.ini
836
837 NXP dpaa
838 M: Hemant Agrawal <hemant.agrawal@nxp.com>
839-M: Shreyansh Jain <shreyansh.jain@nxp.com>
840+M: Sachin Saxena <sachin.saxena@nxp.com>
841 F: drivers/mempool/dpaa/
842 F: drivers/net/dpaa/
843 F: doc/guides/nics/dpaa.rst
844@@ -668,7 +790,7 @@ F: doc/guides/nics/features/dpaa.ini
845
846 NXP dpaa2
847 M: Hemant Agrawal <hemant.agrawal@nxp.com>
848-M: Shreyansh Jain <shreyansh.jain@nxp.com>
849+M: Sachin Saxena <sachin.saxena@nxp.com>
850 F: drivers/mempool/dpaa2/
851 F: drivers/net/dpaa2/
852 F: doc/guides/nics/dpaa2.rst
853@@ -676,22 +798,30 @@ F: doc/guides/nics/features/dpaa2.ini
854
855 NXP enetc
856 M: Gagandeep Singh <g.singh@nxp.com>
857-M: Pankaj Chauhan <pankaj.chauhan@nxp.com>
858+M: Sachin Saxena <sachin.saxena@nxp.com>
859 F: drivers/net/enetc/
860 F: doc/guides/nics/enetc.rst
861 F: doc/guides/nics/features/enetc.ini
862
863+NXP pfe
864+M: Gagandeep Singh <g.singh@nxp.com>
865+M: Akhil Goyal <akhil.goyal@nxp.com>
866+F: doc/guides/nics/pfe.rst
867+F: drivers/net/pfe/
868+F: doc/guides/nics/features/pfe.ini
869+
870 QLogic bnx2x
871-M: Harish Patil <harish.patil@cavium.com>
872-M: Rasesh Mody <rasesh.mody@cavium.com>
873+M: Rasesh Mody <rmody@marvell.com>
874+M: Shahed Shaikh <shshaikh@marvell.com>
875+T: git://dpdk.org/next/dpdk-next-net-mrvl
876 F: drivers/net/bnx2x/
877 F: doc/guides/nics/bnx2x.rst
878 F: doc/guides/nics/features/bnx2x*.ini
879
880 QLogic qede PMD
881-M: Rasesh Mody <rasesh.mody@cavium.com>
882-M: Harish Patil <harish.patil@cavium.com>
883-M: Shahed Shaikh <shahed.shaikh@cavium.com>
884+M: Rasesh Mody <rmody@marvell.com>
885+M: Shahed Shaikh <shshaikh@marvell.com>
886+T: git://dpdk.org/next/dpdk-next-net-mrvl
887 F: drivers/net/qede/
888 F: doc/guides/nics/qede.rst
889 F: doc/guides/nics/features/qede*.ini
890@@ -717,8 +847,8 @@ F: lib/librte_vhost/
891 F: doc/guides/prog_guide/vhost_lib.rst
892 F: examples/vhost/
893 F: doc/guides/sample_app_ug/vhost.rst
894-F: examples/vhost_scsi/
895-F: doc/guides/sample_app_ug/vhost_scsi.rst
896+F: examples/vhost_blk/
897+F: doc/guides/sample_app_ug/vhost_blk.rst
898 F: examples/vhost_crypto/
899 F: examples/vdpa/
900 F: doc/guides/sample_app_ug/vdpa.rst
901@@ -742,7 +872,7 @@ F: doc/guides/nics/virtio.rst
902 F: doc/guides/nics/features/virtio*.ini
903
904 Wind River AVP
905-M: Allain Legacy <allain.legacy@windriver.com>
906+M: Steven Webster <steven.webster@windriver.com>
907 M: Matt Peters <matt.peters@windriver.com>
908 F: drivers/net/avp/
909 F: doc/guides/nics/avp.rst
910@@ -770,8 +900,8 @@ Ring PMD
911 M: Bruce Richardson <bruce.richardson@intel.com>
912 F: drivers/net/ring/
913 F: doc/guides/nics/pcap_ring.rst
914-F: test/test/test_pmd_ring.c
915-F: test/test/test_pmd_ring_perf.c
916+F: app/test/test_pmd_ring.c
917+F: app/test/test_pmd_ring_perf.c
918 F: doc/guides/nics/features/ring.ini
919
920 Null Networking PMD
921@@ -792,10 +922,15 @@ F: drivers/net/softnic/
922 F: doc/guides/nics/features/softnic.ini
923 F: doc/guides/nics/softnic.rst
924
925+Memif PMD
926+M: Jakub Grajciar <jgrajcia@cisco.com>
927+F: drivers/net/memif/
928+F: doc/guides/nics/memif.rst
929+F: doc/guides/nics/features/memif.ini
930+
931
932 Crypto Drivers
933 --------------
934-M: Pablo de Lara <pablo.de.lara.guarch@intel.com>
935 T: git://dpdk.org/next/dpdk-next-crypto
936 F: doc/guides/cryptodevs/features/default.ini
937
938@@ -806,13 +941,13 @@ F: doc/guides/cryptodevs/ccp.rst
939 F: doc/guides/cryptodevs/features/ccp.ini
940
941 ARMv8 Crypto
942-M: Jerin Jacob <jerin.jacob@caviumnetworks.com>
943+M: Ruifeng Wang <ruifeng.wang@arm.com>
944 F: drivers/crypto/armv8/
945 F: doc/guides/cryptodevs/armv8.rst
946 F: doc/guides/cryptodevs/features/armv8.ini
947
948 Cavium OCTEON TX crypto
949-M: Anoob Joseph <anoob.joseph@caviumnetworks.com>
950+M: Anoob Joseph <anoobj@marvell.com>
951 F: drivers/common/cpt/
952 F: drivers/crypto/octeontx/
953 F: doc/guides/cryptodevs/octeontx.rst
954@@ -825,12 +960,14 @@ F: doc/guides/cryptodevs/scheduler.rst
955
956 Intel AES-NI GCM
957 M: Declan Doherty <declan.doherty@intel.com>
958+M: Pablo de Lara <pablo.de.lara.guarch@intel.com>
959 F: drivers/crypto/aesni_gcm/
960 F: doc/guides/cryptodevs/aesni_gcm.rst
961 F: doc/guides/cryptodevs/features/aesni_gcm.ini
962
963 Intel AES-NI Multi-Buffer
964 M: Declan Doherty <declan.doherty@intel.com>
965+M: Pablo de Lara <pablo.de.lara.guarch@intel.com>
966 F: drivers/crypto/aesni_mb/
967 F: doc/guides/cryptodevs/aesni_mb.rst
968 F: doc/guides/cryptodevs/features/aesni_mb.ini
969@@ -850,14 +987,28 @@ F: drivers/crypto/kasumi/
970 F: doc/guides/cryptodevs/kasumi.rst
971 F: doc/guides/cryptodevs/features/kasumi.ini
972
973-Marvell Mrvl
974+Marvell mvsam
975 M: Tomasz Duszynski <tdu@semihalf.com>
976-M: Dmitri Epshtein <dima@marvell.com>
977-M: Natalie Samsonov <nsamsono@marvell.com>
978+M: Michael Shamis <michaelsh@marvell.com>
979+M: Liron Himi <lironh@marvell.com>
980 F: drivers/crypto/mvsam/
981 F: doc/guides/cryptodevs/mvsam.rst
982 F: doc/guides/cryptodevs/features/mvsam.ini
983
984+Marvell Nitrox
985+M: Nagadheeraj Rottela <rnagadheeraj@marvell.com>
986+M: Srikanth Jampala <jsrikanth@marvell.com>
987+F: drivers/crypto/nitrox/
988+F: doc/guides/cryptodevs/nitrox.rst
989+F: doc/guides/cryptodevs/features/nitrox.ini
990+
991+Marvell OCTEON TX2 crypto
992+M: Ankur Dwivedi <adwivedi@marvell.com>
993+M: Anoob Joseph <anoobj@marvell.com>
994+F: drivers/crypto/octeontx2/
995+F: doc/guides/cryptodevs/octeontx2.rst
996+F: doc/guides/cryptodevs/features/octeontx2.ini
997+
998 Null Crypto
999 M: Declan Doherty <declan.doherty@intel.com>
1000 F: drivers/crypto/null/
1001@@ -912,11 +1063,10 @@ F: doc/guides/cryptodevs/features/zuc.ini
1002
1003 Compression Drivers
1004 -------------------
1005-M: Pablo de Lara <pablo.de.lara.guarch@intel.com>
1006 T: git://dpdk.org/next/dpdk-next-crypto
1007
1008 Cavium OCTEON TX zipvf
1009-M: Ashish Gupta <ashish.gupta@cavium.com>
1010+M: Ashish Gupta <ashish.gupta@marvell.com>
1011 F: drivers/compress/octeontx/
1012 F: doc/guides/compressdevs/octeontx.rst
1013 F: doc/guides/compressdevs/features/octeontx.ini
1014@@ -933,7 +1083,7 @@ F: doc/guides/compressdevs/isal.rst
1015 F: doc/guides/compressdevs/features/isal.ini
1016
1017 ZLIB
1018-M: Sunila Sahu <sunila.sahu@caviumnetworks.com>
1019+M: Sunila Sahu <ssahu@marvell.com>
1020 F: drivers/compress/zlib/
1021 F: doc/guides/compressdevs/zlib.rst
1022 F: doc/guides/compressdevs/features/zlib.ini
1023@@ -941,21 +1091,27 @@ F: doc/guides/compressdevs/features/zlib.ini
1024
1025 Eventdev Drivers
1026 ----------------
1027-M: Jerin Jacob <jerin.jacob@caviumnetworks.com>
1028+M: Jerin Jacob <jerinj@marvell.com>
1029 T: git://dpdk.org/next/dpdk-next-eventdev
1030
1031 Cavium OCTEON TX ssovf
1032-M: Jerin Jacob <jerin.jacob@caviumnetworks.com>
1033+M: Jerin Jacob <jerinj@marvell.com>
1034 F: drivers/event/octeontx/
1035 F: doc/guides/eventdevs/octeontx.rst
1036
1037 Cavium OCTEON TX timvf
1038-M: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
1039+M: Pavan Nikhilesh <pbhagavatula@marvell.com>
1040 F: drivers/event/octeontx/timvf_*
1041
1042+Marvell OCTEON TX2
1043+M: Pavan Nikhilesh <pbhagavatula@marvell.com>
1044+M: Jerin Jacob <jerinj@marvell.com>
1045+F: drivers/event/octeontx2/
1046+F: doc/guides/eventdevs/octeontx2.rst
1047+
1048 NXP DPAA eventdev
1049 M: Hemant Agrawal <hemant.agrawal@nxp.com>
1050-M: Sunil Kumar Kori <sunil.kori@nxp.com>
1051+M: Nipun Gupta <nipun.gupta@nxp.com>
1052 F: drivers/event/dpaa/
1053 F: doc/guides/eventdevs/dpaa.rst
1054
1055@@ -990,8 +1146,16 @@ Rawdev Drivers
1056 Intel FPGA
1057 M: Rosen Xu <rosen.xu@intel.com>
1058 M: Tianfei zhang <tianfei.zhang@intel.com>
1059-F: drivers/raw/ifpga_rawdev/
1060-F: doc/guides/rawdevs/ifpga_rawdev.rst
1061+T: git://dpdk.org/next/dpdk-next-net-intel
1062+F: drivers/raw/ifpga/
1063+F: doc/guides/rawdevs/ifpga.rst
1064+
1065+IOAT Rawdev
1066+M: Bruce Richardson <bruce.richardson@intel.com>
1067+F: drivers/raw/ioat/
1068+F: doc/guides/rawdevs/ioat.rst
1069+F: examples/ioat/
1070+F: doc/guides/sample_app_ug/ioat.rst
1071
1072 NXP DPAA2 QDMA
1073 M: Nipun Gupta <nipun.gupta@nxp.com>
1074@@ -1003,6 +1167,20 @@ M: Nipun Gupta <nipun.gupta@nxp.com>
1075 F: drivers/raw/dpaa2_cmdif/
1076 F: doc/guides/rawdevs/dpaa2_cmdif.rst
1077
1078+Marvell OCTEON TX2 DMA
1079+M: Satha Rao <skoteshwar@marvell.com>
1080+M: Vamsi Attunuru <vattunuru@marvell.com>
1081+F: drivers/raw/octeontx2_dma/
1082+F: doc/guides/rawdevs/octeontx2_dma.rst
1083+
1084+NTB
1085+M: Xiaoyun Li <xiaoyun.li@intel.com>
1086+M: Jingjing Wu <jingjing.wu@intel.com>
1087+F: drivers/raw/ntb/
1088+F: doc/guides/rawdevs/ntb.rst
1089+F: examples/ntb/
1090+F: doc/guides/sample_app_ug/ntb.rst
1091+
1092
1093 Packet processing
1094 -----------------
1095@@ -1015,7 +1193,7 @@ Packet CRC
1096 M: Jasvinder Singh <jasvinder.singh@intel.com>
1097 F: lib/librte_net/rte_net_crc*
1098 F: lib/librte_net/net_crc_sse.h
1099-F: test/test/test_crc.c
1100+F: app/test/test_crc.c
1101
1102 IP fragmentation & reassembly
1103 M: Konstantin Ananyev <konstantin.ananyev@intel.com>
1104@@ -1036,20 +1214,30 @@ M: Jiayu Hu <jiayu.hu@intel.com>
1105 F: lib/librte_gso/
1106 F: doc/guides/prog_guide/generic_segmentation_offload_lib.rst
1107
1108+IPsec - EXPERIMENTAL
1109+M: Konstantin Ananyev <konstantin.ananyev@intel.com>
1110+T: git://dpdk.org/next/dpdk-next-crypto
1111+F: lib/librte_ipsec/
1112+M: Bernard Iremonger <bernard.iremonger@intel.com>
1113+F: app/test/test_ipsec.c
1114+F: doc/guides/prog_guide/ipsec_lib.rst
1115+M: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
1116+F: app/test/test_ipsec_sad.c
1117+F: app/test-sad/
1118+
1119 Flow Classify - EXPERIMENTAL
1120 M: Bernard Iremonger <bernard.iremonger@intel.com>
1121 F: lib/librte_flow_classify/
1122-F: test/test/test_flow_classify*
1123+F: app/test/test_flow_classify*
1124 F: doc/guides/prog_guide/flow_classify_lib.rst
1125 F: examples/flow_classify/
1126 F: doc/guides/sample_app_ug/flow_classify.rst
1127
1128 Distributor
1129-M: Bruce Richardson <bruce.richardson@intel.com>
1130 M: David Hunt <david.hunt@intel.com>
1131 F: lib/librte_distributor/
1132 F: doc/guides/prog_guide/packet_distrib_lib.rst
1133-F: test/test/test_distributor*
1134+F: app/test/test_distributor*
1135 F: examples/distributor/
1136 F: doc/guides/sample_app_ug/dist_app.rst
1137
1138@@ -1057,16 +1245,17 @@ Reorder
1139 M: Reshma Pattan <reshma.pattan@intel.com>
1140 F: lib/librte_reorder/
1141 F: doc/guides/prog_guide/reorder_lib.rst
1142-F: test/test/test_reorder*
1143+F: app/test/test_reorder*
1144 F: examples/packet_ordering/
1145 F: doc/guides/sample_app_ug/packet_ordering.rst
1146
1147 Hierarchical scheduler
1148 M: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
1149+M: Jasvinder Singh <jasvinder.singh@intel.com>
1150 F: lib/librte_sched/
1151 F: doc/guides/prog_guide/qos_framework.rst
1152-F: test/test/test_red.c
1153-F: test/test/test_sched.c
1154+F: app/test/test_red.c
1155+F: app/test/test_sched.c
1156 F: examples/qos_sched/
1157 F: doc/guides/sample_app_ug/qos_scheduler.rst
1158
1159@@ -1074,6 +1263,7 @@ Packet capture
1160 M: Reshma Pattan <reshma.pattan@intel.com>
1161 F: lib/librte_pdump/
1162 F: doc/guides/prog_guide/pdump_lib.rst
1163+F: app/test/test_pdump.*
1164 F: app/pdump/
1165 F: doc/guides/tools/pdump.rst
1166
1167@@ -1085,8 +1275,8 @@ F: lib/librte_pipeline/
1168 F: lib/librte_port/
1169 F: lib/librte_table/
1170 F: doc/guides/prog_guide/packet_framework.rst
1171-F: test/test/test_table*
1172-F: test/test-pipeline/
1173+F: app/test/test_table*
1174+F: app/test-pipeline/
1175 F: doc/guides/sample_app_ug/test_pipeline.rst
1176 F: examples/ip_pipeline/
1177 F: doc/guides/sample_app_ug/ip_pipeline.rst
1178@@ -1099,48 +1289,57 @@ ACL
1179 M: Konstantin Ananyev <konstantin.ananyev@intel.com>
1180 F: lib/librte_acl/
1181 F: doc/guides/prog_guide/packet_classif_access_ctrl.rst
1182-F: test/test-acl/
1183-F: test/test/test_acl.*
1184+F: app/test-acl/
1185+F: app/test/test_acl.*
1186 F: examples/l3fwd-acl/
1187 F: doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
1188
1189 EFD
1190 M: Byron Marohn <byron.marohn@intel.com>
1191-M: Pablo de Lara Guarch <pablo.de.lara.guarch@intel.com>
1192+M: Yipeng Wang <yipeng1.wang@intel.com>
1193 F: lib/librte_efd/
1194 F: doc/guides/prog_guide/efd_lib.rst
1195-F: test/test/test_efd*
1196+F: app/test/test_efd*
1197 F: examples/server_node_efd/
1198 F: doc/guides/sample_app_ug/server_node_efd.rst
1199
1200 Hashes
1201+M: Yipeng Wang <yipeng1.wang@intel.com>
1202+M: Sameh Gobriel <sameh.gobriel@intel.com>
1203 M: Bruce Richardson <bruce.richardson@intel.com>
1204-M: Pablo de Lara <pablo.de.lara.guarch@intel.com>
1205 F: lib/librte_hash/
1206 F: doc/guides/prog_guide/hash_lib.rst
1207-F: test/test/test_*hash*
1208-F: test/test/test_func_reentrancy.c
1209+F: app/test/test_*hash*
1210+F: app/test/test_func_reentrancy.c
1211
1212 LPM
1213 M: Bruce Richardson <bruce.richardson@intel.com>
1214+M: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
1215 F: lib/librte_lpm/
1216 F: doc/guides/prog_guide/lpm*
1217-F: test/test/test_lpm*
1218-F: test/test/test_func_reentrancy.c
1219-F: test/test/test_xmmt_ops.h
1220+F: app/test/test_lpm*
1221+F: app/test/test_func_reentrancy.c
1222+F: app/test/test_xmmt_ops.h
1223
1224 Membership - EXPERIMENTAL
1225 M: Yipeng Wang <yipeng1.wang@intel.com>
1226 M: Sameh Gobriel <sameh.gobriel@intel.com>
1227 F: lib/librte_member/
1228 F: doc/guides/prog_guide/member_lib.rst
1229-F: test/test/test_member*
1230+F: app/test/test_member*
1231+
1232+RIB/FIB - EXPERIMENTAL
1233+M: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
1234+F: lib/librte_rib/
1235+F: app/test/test_rib*
1236+F: lib/librte_fib/
1237+F: app/test/test_fib*
1238
1239 Traffic metering
1240 M: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
1241 F: lib/librte_meter/
1242 F: doc/guides/sample_app_ug/qos_scheduler.rst
1243-F: test/test/test_meter.c
1244+F: app/test/test_meter.c
1245 F: examples/qos_meter/
1246 F: doc/guides/sample_app_ug/qos_metering.rst
1247
1248@@ -1151,21 +1350,27 @@ Other libraries
1249 Configuration file
1250 M: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
1251 F: lib/librte_cfgfile/
1252-F: test/test/test_cfgfile.c
1253-F: test/test/test_cfgfiles/
1254+F: app/test/test_cfgfile.c
1255+F: app/test/test_cfgfiles/
1256
1257 Interactive command line
1258 M: Olivier Matz <olivier.matz@6wind.com>
1259 F: lib/librte_cmdline/
1260-F: test/cmdline_test/
1261-F: test/test/test_cmdline*
1262+F: app/test-cmdline/
1263+F: app/test/test_cmdline*
1264 F: examples/cmdline/
1265 F: doc/guides/sample_app_ug/cmd_line.rst
1266
1267 Key/Value parsing
1268 M: Olivier Matz <olivier.matz@6wind.com>
1269 F: lib/librte_kvargs/
1270-F: test/test/test_kvargs.c
1271+F: app/test/test_kvargs.c
1272+
1273+RCU - EXPERIMENTAL
1274+M: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
1275+F: lib/librte_rcu/
1276+F: app/test/test_rcu*
1277+F: doc/guides/prog_guide/rcu_lib.rst
1278
1279 PCI
1280 M: Gaetan Rivet <gaetan.rivet@6wind.com>
1281@@ -1175,7 +1380,7 @@ Power management
1282 M: David Hunt <david.hunt@intel.com>
1283 F: lib/librte_power/
1284 F: doc/guides/prog_guide/power_man.rst
1285-F: test/test/test_power*
1286+F: app/test/test_power*
1287 F: examples/l3fwd-power/
1288 F: doc/guides/sample_app_ug/l3_forward_power_man.rst
1289 F: examples/vm_power_manager/
1290@@ -1183,30 +1388,30 @@ F: doc/guides/sample_app_ug/vm_power_management.rst
1291
1292 Timers
1293 M: Robert Sanford <rsanford@akamai.com>
1294+M: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
1295 F: lib/librte_timer/
1296 F: doc/guides/prog_guide/timer_lib.rst
1297-F: test/test/test_timer*
1298+F: app/test/test_timer*
1299 F: examples/timer/
1300 F: doc/guides/sample_app_ug/timer.rst
1301
1302 Job statistics
1303-M: Pablo de Lara <pablo.de.lara.guarch@intel.com>
1304 F: lib/librte_jobstats/
1305 F: examples/l2fwd-jobstats/
1306 F: doc/guides/sample_app_ug/l2_forward_job_stats.rst
1307
1308 Metrics
1309-M: Remy Horton <remy.horton@intel.com>
1310 F: lib/librte_metrics/
1311-F: test/test/test_metrics.c
1312+F: app/test/test_metrics.c
1313
1314 Bit-rate statistics
1315-M: Remy Horton <remy.horton@intel.com>
1316 F: lib/librte_bitratestats/
1317+F: app/test/test_bitratestats.c
1318
1319 Latency statistics
1320 M: Reshma Pattan <reshma.pattan@intel.com>
1321 F: lib/librte_latencystats/
1322+F: app/test/test_latencystats.c
1323
1324 Telemetry - EXPERIMENTAL
1325 M: Kevin Laatz <kevin.laatz@intel.com>
1326@@ -1217,8 +1422,8 @@ F: doc/guides/howto/telemetry.rst
1327 BPF - EXPERIMENTAL
1328 M: Konstantin Ananyev <konstantin.ananyev@intel.com>
1329 F: lib/librte_bpf/
1330-F: test/bpf/
1331-F: test/test/test_bpf.c
1332+F: examples/bpf/
1333+F: app/test/test_bpf.c
1334 F: doc/guides/prog_guide/bpf_lib.rst
1335
1336
1337@@ -1226,20 +1431,24 @@ Test Applications
1338 -----------------
1339
1340 Unit tests framework
1341-F: test/Makefile
1342-F: test/test/Makefile
1343-F: test/test/autotest*
1344-F: test/test/commands.c
1345-F: test/test/packet_burst_generator.c
1346-F: test/test/packet_burst_generator.h
1347-F: test/test/process.h
1348-F: test/test/resource.*
1349-F: test/test/test.c
1350-F: test/test/test.h
1351-F: test/test/test_pmd_perf.c
1352-F: test/test/test_resource.c
1353-F: test/test/virtual_pmd.c
1354-F: test/test/virtual_pmd.h
1355+F: app/test/Makefile
1356+F: app/test/autotest*
1357+F: app/test/commands.c
1358+F: app/test/packet_burst_generator.c
1359+F: app/test/packet_burst_generator.h
1360+F: app/test/process.h
1361+F: app/test/resource.*
1362+F: app/test/test.c
1363+F: app/test/test.h
1364+F: app/test/test_pmd_perf.c
1365+F: app/test/test_resource.c
1366+F: app/test/virtual_pmd.c
1367+F: app/test/virtual_pmd.h
1368+
1369+Sample packet helper functions for unit test
1370+M: Reshma Pattan <reshma.pattan@intel.com>
1371+F: app/test/sample_packet_forward.c
1372+F: app/test/sample_packet_forward.h
1373
1374 Driver testing tool
1375 M: Wenzhuo Lu <wenzhuo.lu@intel.com>
1376@@ -1248,17 +1457,21 @@ M: Bernard Iremonger <bernard.iremonger@intel.com>
1377 F: app/test-pmd/
1378 F: doc/guides/testpmd_app_ug/
1379
1380+Compression performance test application
1381+F: app/test-compress-perf/
1382+F: doc/guides/tools/comp_perf.rst
1383+
1384 Crypto performance test application
1385 M: Declan Doherty <declan.doherty@intel.com>
1386 F: app/test-crypto-perf/
1387 F: doc/guides/tools/cryptoperf.rst
1388
1389 Eventdev test application
1390-M: Jerin Jacob <jerin.jacob@caviumnetworks.com>
1391+M: Jerin Jacob <jerinj@marvell.com>
1392 F: app/test-eventdev/
1393 F: doc/guides/tools/testeventdev.rst
1394 F: doc/guides/tools/img/eventdev_*
1395-F: test/test/test_event_ring.c
1396+F: app/test/test_event_ring.c
1397
1398 Procinfo tool
1399 M: Maryam Tahhan <maryam.tahhan@intel.com>
1400@@ -1270,13 +1483,9 @@ F: doc/guides/tools/proc_info.rst
1401 Other Example Applications
1402 --------------------------
1403
1404-M: Remy Horton <remy.horton@intel.com>
1405 F: examples/ethtool/
1406 F: doc/guides/sample_app_ug/ethtool.rst
1407
1408-F: examples/exception_path/
1409-F: doc/guides/sample_app_ug/exception_path.rst
1410-
1411 M: Marko Kovacevic <marko.kovacevic@intel.com>
1412 F: examples/fips_validation/
1413 F: doc/guides/sample_app_ug/fips_validation.rst
1414@@ -1286,7 +1495,6 @@ F: examples/flow_filtering/
1415 F: doc/guides/sample_app_ug/flow_filtering.rst
1416
1417 M: Bruce Richardson <bruce.richardson@intel.com>
1418-M: Pablo de Lara <pablo.de.lara.guarch@intel.com>
1419 F: examples/helloworld/
1420 F: doc/guides/sample_app_ug/hello_world.rst
1421
1422@@ -1299,7 +1507,6 @@ F: examples/ipv4_multicast/
1423 F: doc/guides/sample_app_ug/ipv4_multicast.rst
1424
1425 M: Bruce Richardson <bruce.richardson@intel.com>
1426-M: Pablo de Lara <pablo.de.lara.guarch@intel.com>
1427 F: examples/l2fwd/
1428 F: doc/guides/sample_app_ug/l2_forward_real_virtual.rst
1429
1430@@ -1307,32 +1514,26 @@ M: Tomasz Kantecki <tomasz.kantecki@intel.com>
1431 F: doc/guides/sample_app_ug/l2_forward_cat.rst
1432 F: examples/l2fwd-cat/
1433
1434+M: Sunil Kumar Kori <skori@marvell.com>
1435+M: Pavan Nikhilesh <pbhagavatula@marvell.com>
1436+T: git://dpdk.org/next/dpdk-next-eventdev
1437+F: examples/l2fwd-event/
1438+F: doc/guides/sample_app_ug/l2_forward_event.rst
1439+
1440 F: examples/l3fwd/
1441 F: doc/guides/sample_app_ug/l3_forward.rst
1442
1443-F: examples/l3fwd-vf/
1444-F: doc/guides/sample_app_ug/l3_forward_virtual.rst
1445-
1446 F: examples/link_status_interrupt/
1447 F: doc/guides/sample_app_ug/link_status_intr.rst
1448
1449-F: examples/load_balancer/
1450-F: doc/guides/sample_app_ug/load_balancer.rst
1451-
1452-F: examples/netmap_compat/
1453-F: doc/guides/sample_app_ug/netmap_compatibility.rst
1454-
1455 L-threads - EXPERIMENTAL
1456 M: John McNamara <john.mcnamara@intel.com>
1457 F: examples/performance-thread/
1458 F: doc/guides/sample_app_ug/performance_thread.rst
1459
1460-M: Pablo de Lara <pablo.de.lara.guarch@intel.com>
1461+M: Kirill Rybalchenko <kirill.rybalchenko@intel.com>
1462 F: examples/ptpclient/
1463
1464-F: examples/quota_watermark/
1465-F: doc/guides/sample_app_ug/quota_watermark.rst
1466-
1467 M: Bruce Richardson <bruce.richardson@intel.com>
1468 M: John McNamara <john.mcnamara@intel.com>
1469 F: examples/rxtx_callbacks/
1470diff --git a/Makefile b/Makefile
1471index 6cd70a0..571277a 100644
1472--- a/Makefile
1473+++ b/Makefile
1474@@ -2,4 +2,3 @@
1475 # Copyright(c) 2010-2014 Intel Corporation
1476
1477 .error Error please compile using GNU Make (gmake)
1478-
1479diff --git a/VERSION b/VERSION
1480new file mode 100644
1481index 0000000..22131b0
1482--- /dev/null
1483+++ b/VERSION
1484@@ -0,0 +1 @@
1485+19.11.0
1486diff --git a/app/Makefile b/app/Makefile
1487index 069fa98..db9d2d5 100644
1488--- a/app/Makefile
1489+++ b/app/Makefile
1490@@ -3,14 +3,23 @@
1491
1492 include $(RTE_SDK)/mk/rte.vars.mk
1493
1494+DIRS-$(CONFIG_RTE_APP_TEST) += test
1495 DIRS-$(CONFIG_RTE_TEST_PMD) += test-pmd
1496 DIRS-$(CONFIG_RTE_PROC_INFO) += proc-info
1497 DIRS-$(CONFIG_RTE_LIBRTE_PDUMP) += pdump
1498+DIRS-$(CONFIG_RTE_LIBRTE_ACL) += test-acl
1499+DIRS-$(CONFIG_RTE_LIBRTE_CMDLINE) += test-cmdline
1500+DIRS-$(CONFIG_RTE_LIBRTE_PIPELINE) += test-pipeline
1501+DIRS-$(CONFIG_RTE_LIBRTE_IPSEC) += test-sad
1502
1503 ifeq ($(CONFIG_RTE_LIBRTE_BBDEV),y)
1504 DIRS-$(CONFIG_RTE_TEST_BBDEV) += test-bbdev
1505 endif
1506
1507+ifeq ($(CONFIG_RTE_LIBRTE_COMPRESSDEV),y)
1508+DIRS-$(CONFIG_RTE_APP_COMPRESS_PERF) += test-compress-perf
1509+endif
1510+
1511 ifeq ($(CONFIG_RTE_LIBRTE_CRYPTODEV),y)
1512 DIRS-$(CONFIG_RTE_APP_CRYPTO_PERF) += test-crypto-perf
1513 endif
1514diff --git a/app/meson.build b/app/meson.build
1515index fd5f701..71109cc 100644
1516--- a/app/meson.build
1517+++ b/app/meson.build
1518@@ -1,12 +1,22 @@
1519 # SPDX-License-Identifier: BSD-3-Clause
1520-# Copyright(c) 2017 Intel Corporation
1521+# Copyright(c) 2017-2019 Intel Corporation
1522
1523-apps = ['pdump',
1524+if is_windows
1525+ subdir_done()
1526+endif
1527+
1528+apps = [
1529+ 'pdump',
1530 'proc-info',
1531+ 'test-acl',
1532 'test-bbdev',
1533+ 'test-cmdline',
1534+ 'test-compress-perf',
1535 'test-crypto-perf',
1536 'test-eventdev',
1537- 'test-pmd']
1538+ 'test-pipeline',
1539+ 'test-pmd',
1540+ 'test-sad']
1541
1542 # for BSD only
1543 lib_execinfo = cc.find_library('execinfo', required: false)
1544@@ -57,3 +67,6 @@ foreach app:apps
1545 install: true)
1546 endif
1547 endforeach
1548+
1549+# special case the autotests
1550+subdir('test')
1551diff --git a/app/pdump/Makefile b/app/pdump/Makefile
1552index bd3c208..e6b9eea 100644
1553--- a/app/pdump/Makefile
1554+++ b/app/pdump/Makefile
1555@@ -7,7 +7,6 @@ ifeq ($(CONFIG_RTE_LIBRTE_PDUMP),y)
1556
1557 APP = dpdk-pdump
1558
1559-CFLAGS += -DALLOW_EXPERIMENTAL_API
1560 CFLAGS += $(WERROR_FLAGS)
1561
1562 # all source are stored in SRCS-y
1563diff --git a/app/pdump/main.c b/app/pdump/main.c
1564index ccf2a1d..903d02f 100644
1565--- a/app/pdump/main.c
1566+++ b/app/pdump/main.c
1567@@ -13,6 +13,7 @@
1568 #include <net/if.h>
1569
1570 #include <rte_eal.h>
1571+#include <rte_alarm.h>
1572 #include <rte_common.h>
1573 #include <rte_debug.h>
1574 #include <rte_ethdev.h>
1575@@ -28,6 +29,9 @@
1576 #include <rte_pdump.h>
1577
1578 #define CMD_LINE_OPT_PDUMP "pdump"
1579+#define CMD_LINE_OPT_PDUMP_NUM 256
1580+#define CMD_LINE_OPT_MULTI "multi"
1581+#define CMD_LINE_OPT_MULTI_NUM 257
1582 #define PDUMP_PORT_ARG "port"
1583 #define PDUMP_PCI_ARG "device_id"
1584 #define PDUMP_QUEUE_ARG "queue"
1585@@ -62,6 +66,8 @@
1586 #define SIZE 256
1587 #define BURST_SIZE 32
1588 #define NUM_VDEVS 2
1589+/* Maximum delay for exiting after primary process. */
1590+#define MONITOR_INTERVAL (500 * 1000)
1591
1592 /* true if x is a power of 2 */
1593 #define POWEROF2(x) ((((x)-1) & (x)) == 0)
1594@@ -139,12 +145,15 @@ struct parse_val {
1595 static int num_tuples;
1596 static struct rte_eth_conf port_conf_default;
1597 static volatile uint8_t quit_signal;
1598+static uint8_t multiple_core_capture;
1599
1600 /**< display usage */
1601 static void
1602 pdump_usage(const char *prgname)
1603 {
1604- printf("usage: %s [EAL options] -- --pdump "
1605+ printf("usage: %s [EAL options]"
1606+ " --["CMD_LINE_OPT_MULTI"]\n"
1607+ " --"CMD_LINE_OPT_PDUMP" "
1608 "'(port=<port id> | device_id=<pci id or vdev name>),"
1609 "(queue=<queue_id>),"
1610 "(rx-dev=<iface or pcap file> |"
1611@@ -189,12 +198,12 @@ parse_rxtxdev(const char *key, const char *value, void *extra_args)
1612 struct pdump_tuples *pt = extra_args;
1613
1614 if (!strcmp(key, PDUMP_RX_DEV_ARG)) {
1615- snprintf(pt->rx_dev, sizeof(pt->rx_dev), "%s", value);
1616+ strlcpy(pt->rx_dev, value, sizeof(pt->rx_dev));
1617 /* identify the tx stream type for pcap vdev */
1618 if (if_nametoindex(pt->rx_dev))
1619 pt->rx_vdev_stream_type = IFACE;
1620 } else if (!strcmp(key, PDUMP_TX_DEV_ARG)) {
1621- snprintf(pt->tx_dev, sizeof(pt->tx_dev), "%s", value);
1622+ strlcpy(pt->tx_dev, value, sizeof(pt->tx_dev));
1623 /* identify the tx stream type for pcap vdev */
1624 if (if_nametoindex(pt->tx_dev))
1625 pt->tx_vdev_stream_type = IFACE;
1626@@ -375,7 +384,8 @@ launch_args_parse(int argc, char **argv, char *prgname)
1627 int opt, ret;
1628 int option_index;
1629 static struct option long_option[] = {
1630- {"pdump", 1, 0, 0},
1631+ {CMD_LINE_OPT_PDUMP, 1, 0, CMD_LINE_OPT_PDUMP_NUM},
1632+ {CMD_LINE_OPT_MULTI, 0, 0, CMD_LINE_OPT_MULTI_NUM},
1633 {NULL, 0, 0, 0}
1634 };
1635
1636@@ -386,17 +396,16 @@ launch_args_parse(int argc, char **argv, char *prgname)
1637 while ((opt = getopt_long(argc, argv, " ",
1638 long_option, &option_index)) != EOF) {
1639 switch (opt) {
1640- case 0:
1641- if (!strncmp(long_option[option_index].name,
1642- CMD_LINE_OPT_PDUMP,
1643- sizeof(CMD_LINE_OPT_PDUMP))) {
1644- ret = parse_pdump(optarg);
1645- if (ret) {
1646- pdump_usage(prgname);
1647- return -1;
1648- }
1649+ case CMD_LINE_OPT_PDUMP_NUM:
1650+ ret = parse_pdump(optarg);
1651+ if (ret) {
1652+ pdump_usage(prgname);
1653+ return -1;
1654 }
1655 break;
1656+ case CMD_LINE_OPT_MULTI_NUM:
1657+ multiple_core_capture = 1;
1658+ break;
1659 default:
1660 pdump_usage(prgname);
1661 return -1;
1662@@ -407,6 +416,21 @@ launch_args_parse(int argc, char **argv, char *prgname)
1663 }
1664
1665 static void
1666+monitor_primary(void *arg __rte_unused)
1667+{
1668+ if (quit_signal)
1669+ return;
1670+
1671+ if (rte_eal_primary_proc_alive(NULL)) {
1672+ rte_eal_alarm_set(MONITOR_INTERVAL, monitor_primary, NULL);
1673+ return;
1674+ }
1675+
1676+ printf("Primary process is no longer active, exiting...\n");
1677+ quit_signal = 1;
1678+}
1679+
1680+static void
1681 print_pdump_stats(void)
1682 {
1683 int i;
1684@@ -531,6 +555,21 @@ cleanup_pdump_resources(void)
1685 }
1686
1687 static void
1688+disable_primary_monitor(void)
1689+{
1690+ int ret;
1691+
1692+ /*
1693+ * Cancel monitoring of primary process.
1694+ * There will be no error if no alarm is set
1695+ * (in case primary process kill was detected earlier).
1696+ */
1697+ ret = rte_eal_alarm_cancel(monitor_primary, NULL);
1698+ if (ret < 0)
1699+ printf("Fail to disable monitor:%d\n", ret);
1700+}
1701+
1702+static void
1703 signal_handler(int sig_num)
1704 {
1705 if (sig_num == SIGINT) {
1706@@ -543,7 +582,7 @@ signal_handler(int sig_num)
1707 static inline int
1708 configure_vdev(uint16_t port_id)
1709 {
1710- struct ether_addr addr;
1711+ struct rte_ether_addr addr;
1712 const uint16_t rxRings = 0, txRings = 1;
1713 int ret;
1714 uint16_t q;
1715@@ -567,7 +606,10 @@ configure_vdev(uint16_t port_id)
1716 if (ret < 0)
1717 rte_exit(EXIT_FAILURE, "dev start failed\n");
1718
1719- rte_eth_macaddr_get(port_id, &addr);
1720+ ret = rte_eth_macaddr_get(port_id, &addr);
1721+ if (ret != 0)
1722+ rte_exit(EXIT_FAILURE, "macaddr get failed\n");
1723+
1724 printf("Port %u MAC: %02"PRIx8" %02"PRIx8" %02"PRIx8
1725 " %02"PRIx8" %02"PRIx8" %02"PRIx8"\n",
1726 port_id,
1727@@ -575,7 +617,13 @@ configure_vdev(uint16_t port_id)
1728 addr.addr_bytes[2], addr.addr_bytes[3],
1729 addr.addr_bytes[4], addr.addr_bytes[5]);
1730
1731- rte_eth_promiscuous_enable(port_id);
1732+ ret = rte_eth_promiscuous_enable(port_id);
1733+ if (ret != 0) {
1734+ rte_exit(EXIT_FAILURE,
1735+ "promiscuous mode enable failed: %s\n",
1736+ rte_strerror(-ret));
1737+ return ret;
1738+ }
1739
1740 return 0;
1741 }
1742@@ -598,11 +646,11 @@ create_mp_ring_vdev(void)
1743 mbuf_pool = rte_mempool_lookup(mempool_name);
1744 if (mbuf_pool == NULL) {
1745 /* create mempool */
1746- mbuf_pool = rte_pktmbuf_pool_create(mempool_name,
1747+ mbuf_pool = rte_pktmbuf_pool_create_by_ops(mempool_name,
1748 pt->total_num_mbufs,
1749 MBUF_POOL_CACHE_SIZE, 0,
1750 pt->mbuf_data_size,
1751- rte_socket_id());
1752+ rte_socket_id(), "ring_mp_mc");
1753 if (mbuf_pool == NULL) {
1754 cleanup_rings();
1755 rte_exit(EXIT_FAILURE,
1756@@ -835,22 +883,84 @@ enable_pdump(void)
1757 }
1758
1759 static inline void
1760+pdump_packets(struct pdump_tuples *pt)
1761+{
1762+ if (pt->dir & RTE_PDUMP_FLAG_RX)
1763+ pdump_rxtx(pt->rx_ring, pt->rx_vdev_id, &pt->stats);
1764+ if (pt->dir & RTE_PDUMP_FLAG_TX)
1765+ pdump_rxtx(pt->tx_ring, pt->tx_vdev_id, &pt->stats);
1766+}
1767+
1768+static int
1769+dump_packets_core(void *arg)
1770+{
1771+ struct pdump_tuples *pt = (struct pdump_tuples *) arg;
1772+
1773+ printf(" core (%u); port %u device (%s) queue %u\n",
1774+ rte_lcore_id(), pt->port, pt->device_id, pt->queue);
1775+ fflush(stdout);
1776+
1777+ while (!quit_signal)
1778+ pdump_packets(pt);
1779+
1780+ return 0;
1781+}
1782+
1783+static inline void
1784 dump_packets(void)
1785 {
1786 int i;
1787- struct pdump_tuples *pt;
1788+ uint32_t lcore_id = 0;
1789
1790- while (!quit_signal) {
1791- for (i = 0; i < num_tuples; i++) {
1792- pt = &pdump_t[i];
1793- if (pt->dir & RTE_PDUMP_FLAG_RX)
1794- pdump_rxtx(pt->rx_ring, pt->rx_vdev_id,
1795- &pt->stats);
1796- if (pt->dir & RTE_PDUMP_FLAG_TX)
1797- pdump_rxtx(pt->tx_ring, pt->tx_vdev_id,
1798- &pt->stats);
1799+ if (!multiple_core_capture) {
1800+ printf(" core (%u), capture for (%d) tuples\n",
1801+ rte_lcore_id(), num_tuples);
1802+
1803+ for (i = 0; i < num_tuples; i++)
1804+ printf(" - port %u device (%s) queue %u\n",
1805+ pdump_t[i].port,
1806+ pdump_t[i].device_id,
1807+ pdump_t[i].queue);
1808+
1809+ while (!quit_signal) {
1810+ for (i = 0; i < num_tuples; i++)
1811+ pdump_packets(&pdump_t[i]);
1812 }
1813+
1814+ return;
1815 }
1816+
1817+ /* check if there enough core */
1818+ if ((uint32_t)num_tuples >= rte_lcore_count()) {
1819+ printf("Insufficient cores to run parallel!\n");
1820+ return;
1821+ }
1822+
1823+ lcore_id = rte_get_next_lcore(lcore_id, 1, 0);
1824+
1825+ for (i = 0; i < num_tuples; i++) {
1826+ rte_eal_remote_launch(dump_packets_core,
1827+ &pdump_t[i], lcore_id);
1828+ lcore_id = rte_get_next_lcore(lcore_id, 1, 0);
1829+
1830+ if (rte_eal_wait_lcore(lcore_id) < 0)
1831+ rte_exit(EXIT_FAILURE, "failed to wait\n");
1832+ }
1833+
1834+ /* master core */
1835+ while (!quit_signal)
1836+ ;
1837+}
1838+
1839+static void
1840+enable_primary_monitor(void)
1841+{
1842+ int ret;
1843+
1844+ /* Once primary exits, so will pdump. */
1845+ ret = rte_eal_alarm_set(MONITOR_INTERVAL, monitor_primary, NULL);
1846+ if (ret < 0)
1847+ printf("Fail to enable monitor:%d\n", ret);
1848 }
1849
1850 int
1851@@ -860,23 +970,21 @@ main(int argc, char **argv)
1852 int ret;
1853 int i;
1854
1855- char c_flag[] = "-c1";
1856 char n_flag[] = "-n4";
1857 char mp_flag[] = "--proc-type=secondary";
1858- char *argp[argc + 3];
1859+ char *argp[argc + 2];
1860
1861 /* catch ctrl-c so we can print on exit */
1862 signal(SIGINT, signal_handler);
1863
1864 argp[0] = argv[0];
1865- argp[1] = c_flag;
1866- argp[2] = n_flag;
1867- argp[3] = mp_flag;
1868+ argp[1] = n_flag;
1869+ argp[2] = mp_flag;
1870
1871 for (i = 1; i < argc; i++)
1872- argp[i + 3] = argv[i];
1873+ argp[i + 2] = argv[i];
1874
1875- argc += 3;
1876+ argc += 2;
1877
1878 diag = rte_eal_init(argc, argp);
1879 if (diag < 0)
1880@@ -886,7 +994,7 @@ main(int argc, char **argv)
1881 rte_exit(EXIT_FAILURE, "No Ethernet ports - bye\n");
1882
1883 argc -= diag;
1884- argv += (diag - 3);
1885+ argv += (diag - 2);
1886
1887 /* parse app arguments */
1888 if (argc > 1) {
1889@@ -898,8 +1006,10 @@ main(int argc, char **argv)
1890 /* create mempool, ring and vdevs info */
1891 create_mp_ring_vdev();
1892 enable_pdump();
1893+ enable_primary_monitor();
1894 dump_packets();
1895
1896+ disable_primary_monitor();
1897 cleanup_pdump_resources();
1898 /* dump debug stats */
1899 print_pdump_stats();
1900diff --git a/app/pdump/meson.build b/app/pdump/meson.build
1901index 116c27f..7bb908e 100644
1902--- a/app/pdump/meson.build
1903+++ b/app/pdump/meson.build
1904@@ -2,5 +2,4 @@
1905 # Copyright(c) 2018 Intel Corporation
1906
1907 sources = files('main.c')
1908-allow_experimental_apis = true
1909 deps += ['ethdev', 'kvargs', 'pdump']
1910diff --git a/app/proc-info/Makefile b/app/proc-info/Makefile
1911index 9e87f52..214f3f5 100644
1912--- a/app/proc-info/Makefile
1913+++ b/app/proc-info/Makefile
1914@@ -5,7 +5,6 @@ include $(RTE_SDK)/mk/rte.vars.mk
1915
1916 APP = dpdk-procinfo
1917
1918-CFLAGS += -DALLOW_EXPERIMENTAL_API
1919 CFLAGS += $(WERROR_FLAGS)
1920
1921 # all source are stored in SRCS-y
1922diff --git a/app/proc-info/main.c b/app/proc-info/main.c
1923index c20effa..abeca4a 100644
1924--- a/app/proc-info/main.c
1925+++ b/app/proc-info/main.c
1926@@ -29,6 +29,13 @@
1927 #include <rte_branch_prediction.h>
1928 #include <rte_string_fns.h>
1929 #include <rte_metrics.h>
1930+#include <rte_cycles.h>
1931+#ifdef RTE_LIBRTE_SECURITY
1932+#include <rte_security.h>
1933+#endif
1934+#include <rte_cryptodev.h>
1935+#include <rte_tm.h>
1936+#include <rte_hexdump.h>
1937
1938 /* Maximum long option length for option parsing. */
1939 #define MAX_LONG_OPT_SZ 64
1940@@ -36,6 +43,10 @@
1941
1942 #define MAX_STRING_LEN 256
1943
1944+#define STATS_BDR_FMT "========================================"
1945+#define STATS_BDR_STR(w, s) printf("%.*s%s%.*s\n", w, \
1946+ STATS_BDR_FMT, s, w, STATS_BDR_FMT)
1947+
1948 /**< mask of enabled ports */
1949 static uint32_t enabled_port_mask;
1950 /**< Enable stats. */
1951@@ -65,6 +76,25 @@ static char *xstats_name;
1952 static uint32_t nb_xstats_ids;
1953 static uint64_t xstats_ids[MAX_NB_XSTATS_IDS];
1954
1955+/* show border */
1956+static char bdr_str[MAX_STRING_LEN];
1957+
1958+/**< Enable show port. */
1959+static uint32_t enable_shw_port;
1960+/**< Enable show tm. */
1961+static uint32_t enable_shw_tm;
1962+/**< Enable show crypto. */
1963+static uint32_t enable_shw_crypto;
1964+/**< Enable show ring. */
1965+static uint32_t enable_shw_ring;
1966+static char *ring_name;
1967+/**< Enable show mempool. */
1968+static uint32_t enable_shw_mempool;
1969+static char *mempool_name;
1970+/**< Enable iter mempool. */
1971+static uint32_t enable_iter_mempool;
1972+static char *mempool_iter_name;
1973+
1974 /**< display usage */
1975 static void
1976 proc_info_usage(const char *prgname)
1977@@ -83,7 +113,13 @@ proc_info_usage(const char *prgname)
1978 " --stats-reset: to reset port statistics\n"
1979 " --xstats-reset: to reset port extended statistics\n"
1980 " --collectd-format: to print statistics to STDOUT in expected by collectd format\n"
1981- " --host-id STRING: host id used to identify the system process is running on\n",
1982+ " --host-id STRING: host id used to identify the system process is running on\n"
1983+ " --show-port: to display ports information\n"
1984+ " --show-tm: to display traffic manager information for ports\n"
1985+ " --show-crypto: to display crypto information\n"
1986+ " --show-ring[=name]: to display ring information\n"
1987+ " --show-mempool[=name]: to display mempool information\n"
1988+ " --iter-mempool=name: iterate mempool elements to display content\n",
1989 prgname);
1990 }
1991
1992@@ -159,7 +195,7 @@ proc_info_preparse_args(int argc, char **argv)
1993 proc_info_usage(prgname);
1994 return -1;
1995 }
1996- snprintf(host_id, sizeof(host_id), "%s", argv[i+1]);
1997+ strlcpy(host_id, argv[i + 1], sizeof(host_id));
1998 }
1999 }
2000
2001@@ -167,7 +203,7 @@ proc_info_preparse_args(int argc, char **argv)
2002 int err = gethostname(host_id, MAX_LONG_OPT_SZ-1);
2003
2004 if (err)
2005- strcpy(host_id, "unknown");
2006+ strlcpy(host_id, "unknown", sizeof(host_id));
2007 }
2008
2009 return 0;
2010@@ -190,6 +226,12 @@ proc_info_parse_args(int argc, char **argv)
2011 {"collectd-format", 0, NULL, 0},
2012 {"xstats-ids", 1, NULL, 1},
2013 {"host-id", 0, NULL, 0},
2014+ {"show-port", 0, NULL, 0},
2015+ {"show-tm", 0, NULL, 0},
2016+ {"show-crypto", 0, NULL, 0},
2017+ {"show-ring", optional_argument, NULL, 0},
2018+ {"show-mempool", optional_argument, NULL, 0},
2019+ {"iter-mempool", required_argument, NULL, 0},
2020 {NULL, 0, 0, 0}
2021 };
2022
2023@@ -233,6 +275,28 @@ proc_info_parse_args(int argc, char **argv)
2024 else if (!strncmp(long_option[option_index].name, "xstats-reset",
2025 MAX_LONG_OPT_SZ))
2026 reset_xstats = 1;
2027+ else if (!strncmp(long_option[option_index].name,
2028+ "show-port", MAX_LONG_OPT_SZ))
2029+ enable_shw_port = 1;
2030+ else if (!strncmp(long_option[option_index].name,
2031+ "show-tm", MAX_LONG_OPT_SZ))
2032+ enable_shw_tm = 1;
2033+ else if (!strncmp(long_option[option_index].name,
2034+ "show-crypto", MAX_LONG_OPT_SZ))
2035+ enable_shw_crypto = 1;
2036+ else if (!strncmp(long_option[option_index].name,
2037+ "show-ring", MAX_LONG_OPT_SZ)) {
2038+ enable_shw_ring = 1;
2039+ ring_name = optarg;
2040+ } else if (!strncmp(long_option[option_index].name,
2041+ "show-mempool", MAX_LONG_OPT_SZ)) {
2042+ enable_shw_mempool = 1;
2043+ mempool_name = optarg;
2044+ } else if (!strncmp(long_option[option_index].name,
2045+ "iter-mempool", MAX_LONG_OPT_SZ)) {
2046+ enable_iter_mempool = 1;
2047+ mempool_iter_name = optarg;
2048+ }
2049 break;
2050 case 1:
2051 /* Print xstat single value given by name*/
2052@@ -334,50 +398,50 @@ static void collectd_resolve_cnt_type(char *cnt_type, size_t cnt_type_len,
2053 if ((type_end != NULL) &&
2054 (strncmp(cnt_name, "rx_", strlen("rx_")) == 0)) {
2055 if (strncmp(type_end, "_errors", strlen("_errors")) == 0)
2056- strncpy(cnt_type, "if_rx_errors", cnt_type_len);
2057+ strlcpy(cnt_type, "if_rx_errors", cnt_type_len);
2058 else if (strncmp(type_end, "_dropped", strlen("_dropped")) == 0)
2059- strncpy(cnt_type, "if_rx_dropped", cnt_type_len);
2060+ strlcpy(cnt_type, "if_rx_dropped", cnt_type_len);
2061 else if (strncmp(type_end, "_bytes", strlen("_bytes")) == 0)
2062- strncpy(cnt_type, "if_rx_octets", cnt_type_len);
2063+ strlcpy(cnt_type, "if_rx_octets", cnt_type_len);
2064 else if (strncmp(type_end, "_packets", strlen("_packets")) == 0)
2065- strncpy(cnt_type, "if_rx_packets", cnt_type_len);
2066+ strlcpy(cnt_type, "if_rx_packets", cnt_type_len);
2067 else if (strncmp(type_end, "_placement",
2068 strlen("_placement")) == 0)
2069- strncpy(cnt_type, "if_rx_errors", cnt_type_len);
2070+ strlcpy(cnt_type, "if_rx_errors", cnt_type_len);
2071 else if (strncmp(type_end, "_buff", strlen("_buff")) == 0)
2072- strncpy(cnt_type, "if_rx_errors", cnt_type_len);
2073+ strlcpy(cnt_type, "if_rx_errors", cnt_type_len);
2074 else
2075 /* Does not fit obvious type: use a more generic one */
2076- strncpy(cnt_type, "derive", cnt_type_len);
2077+ strlcpy(cnt_type, "derive", cnt_type_len);
2078 } else if ((type_end != NULL) &&
2079 (strncmp(cnt_name, "tx_", strlen("tx_"))) == 0) {
2080 if (strncmp(type_end, "_errors", strlen("_errors")) == 0)
2081- strncpy(cnt_type, "if_tx_errors", cnt_type_len);
2082+ strlcpy(cnt_type, "if_tx_errors", cnt_type_len);
2083 else if (strncmp(type_end, "_dropped", strlen("_dropped")) == 0)
2084- strncpy(cnt_type, "if_tx_dropped", cnt_type_len);
2085+ strlcpy(cnt_type, "if_tx_dropped", cnt_type_len);
2086 else if (strncmp(type_end, "_bytes", strlen("_bytes")) == 0)
2087- strncpy(cnt_type, "if_tx_octets", cnt_type_len);
2088+ strlcpy(cnt_type, "if_tx_octets", cnt_type_len);
2089 else if (strncmp(type_end, "_packets", strlen("_packets")) == 0)
2090- strncpy(cnt_type, "if_tx_packets", cnt_type_len);
2091+ strlcpy(cnt_type, "if_tx_packets", cnt_type_len);
2092 else
2093 /* Does not fit obvious type: use a more generic one */
2094- strncpy(cnt_type, "derive", cnt_type_len);
2095+ strlcpy(cnt_type, "derive", cnt_type_len);
2096 } else if ((type_end != NULL) &&
2097 (strncmp(cnt_name, "flow_", strlen("flow_"))) == 0) {
2098 if (strncmp(type_end, "_filters", strlen("_filters")) == 0)
2099- strncpy(cnt_type, "operations", cnt_type_len);
2100+ strlcpy(cnt_type, "operations", cnt_type_len);
2101 else if (strncmp(type_end, "_errors", strlen("_errors")) == 0)
2102- strncpy(cnt_type, "errors", cnt_type_len);
2103+ strlcpy(cnt_type, "errors", cnt_type_len);
2104 else if (strncmp(type_end, "_filters", strlen("_filters")) == 0)
2105- strncpy(cnt_type, "filter_result", cnt_type_len);
2106+ strlcpy(cnt_type, "filter_result", cnt_type_len);
2107 } else if ((type_end != NULL) &&
2108 (strncmp(cnt_name, "mac_", strlen("mac_"))) == 0) {
2109 if (strncmp(type_end, "_errors", strlen("_errors")) == 0)
2110- strncpy(cnt_type, "errors", cnt_type_len);
2111+ strlcpy(cnt_type, "errors", cnt_type_len);
2112 } else {
2113 /* Does not fit obvious type, or strrchr error: */
2114 /* use a more generic type */
2115- strncpy(cnt_type, "derive", cnt_type_len);
2116+ strlcpy(cnt_type, "derive", cnt_type_len);
2117 }
2118 }
2119
2120@@ -518,8 +582,16 @@ err:
2121 static void
2122 nic_xstats_clear(uint16_t port_id)
2123 {
2124+ int ret;
2125+
2126 printf("\n Clearing NIC xstats for port %d\n", port_id);
2127- rte_eth_xstats_reset(port_id);
2128+ ret = rte_eth_xstats_reset(port_id);
2129+ if (ret != 0) {
2130+ printf("\n Error clearing xstats for port %d: %s\n", port_id,
2131+ strerror(-ret));
2132+ return;
2133+ }
2134+
2135 printf("\n NIC extended statistics for port %d cleared\n", port_id);
2136 }
2137
2138@@ -584,6 +656,601 @@ metrics_display(int port_id)
2139 rte_free(names);
2140 }
2141
2142+static void
2143+show_port(void)
2144+{
2145+ uint16_t i = 0;
2146+ int ret = 0, j, k;
2147+
2148+ snprintf(bdr_str, MAX_STRING_LEN, " show - Port PMD %"PRIu64,
2149+ rte_get_tsc_hz());
2150+ STATS_BDR_STR(10, bdr_str);
2151+
2152+ RTE_ETH_FOREACH_DEV(i) {
2153+ uint16_t mtu = 0;
2154+ struct rte_eth_link link;
2155+ struct rte_eth_dev_info dev_info;
2156+ struct rte_eth_rxq_info queue_info;
2157+ struct rte_eth_rss_conf rss_conf;
2158+
2159+ memset(&rss_conf, 0, sizeof(rss_conf));
2160+
2161+ snprintf(bdr_str, MAX_STRING_LEN, " Port (%u)", i);
2162+ STATS_BDR_STR(5, bdr_str);
2163+ printf(" - generic config\n");
2164+
2165+ printf("\t -- Socket %d\n", rte_eth_dev_socket_id(i));
2166+ ret = rte_eth_link_get(i, &link);
2167+ if (ret < 0) {
2168+ printf("Link get failed (port %u): %s\n",
2169+ i, rte_strerror(-ret));
2170+ } else {
2171+ printf("\t -- link speed %d duplex %d,"
2172+ " auto neg %d status %d\n",
2173+ link.link_speed,
2174+ link.link_duplex,
2175+ link.link_autoneg,
2176+ link.link_status);
2177+ }
2178+ printf("\t -- promiscuous (%d)\n",
2179+ rte_eth_promiscuous_get(i));
2180+ ret = rte_eth_dev_get_mtu(i, &mtu);
2181+ if (ret == 0)
2182+ printf("\t -- mtu (%d)\n", mtu);
2183+
2184+ ret = rte_eth_dev_info_get(i, &dev_info);
2185+ if (ret != 0) {
2186+ printf("Error during getting device (port %u) info: %s\n",
2187+ i, strerror(-ret));
2188+ return;
2189+ }
2190+
2191+ printf(" - queue\n");
2192+ for (j = 0; j < dev_info.nb_rx_queues; j++) {
2193+ ret = rte_eth_rx_queue_info_get(i, j, &queue_info);
2194+ if (ret == 0) {
2195+ printf("\t -- queue %d rx scatter %d"
2196+ " descriptors %d"
2197+ " offloads 0x%"PRIx64
2198+ " mempool socket %d\n",
2199+ j,
2200+ queue_info.scattered_rx,
2201+ queue_info.nb_desc,
2202+ queue_info.conf.offloads,
2203+ queue_info.mp->socket_id);
2204+ }
2205+ }
2206+
2207+ ret = rte_eth_dev_rss_hash_conf_get(i, &rss_conf);
2208+ if (ret == 0) {
2209+ if (rss_conf.rss_key) {
2210+ printf(" - RSS\n");
2211+ printf("\t -- RSS len %u key (hex):",
2212+ rss_conf.rss_key_len);
2213+ for (k = 0; k < rss_conf.rss_key_len; k++)
2214+ printf(" %x", rss_conf.rss_key[k]);
2215+ printf("\t -- hf 0x%"PRIx64"\n",
2216+ rss_conf.rss_hf);
2217+ }
2218+ }
2219+
2220+ printf(" - cyrpto context\n");
2221+#ifdef RTE_LIBRTE_SECURITY
2222+ void *p_ctx = rte_eth_dev_get_sec_ctx(i);
2223+ printf("\t -- security context - %p\n", p_ctx);
2224+
2225+ if (p_ctx) {
2226+ printf("\t -- size %u\n",
2227+ rte_security_session_get_size(p_ctx));
2228+ const struct rte_security_capability *s_cap =
2229+ rte_security_capabilities_get(p_ctx);
2230+ if (s_cap) {
2231+ printf("\t -- action (0x%x), protocol (0x%x),"
2232+ " offload flags (0x%x)\n",
2233+ s_cap->action,
2234+ s_cap->protocol,
2235+ s_cap->ol_flags);
2236+ printf("\t -- capabilities - oper type %x\n",
2237+ s_cap->crypto_capabilities->op);
2238+ }
2239+ }
2240+#endif
2241+ }
2242+
2243+ STATS_BDR_STR(50, "");
2244+}
2245+
2246+static void
2247+display_nodecap_info(int is_leaf, struct rte_tm_node_capabilities *cap)
2248+{
2249+ if (cap == NULL)
2250+ return;
2251+
2252+ if (!is_leaf) {
2253+ printf("\t -- nonleaf sched max:\n"
2254+ "\t\t + children (%u)\n"
2255+ "\t\t + sp priorities (%u)\n"
2256+ "\t\t + wfq children per group (%u)\n"
2257+ "\t\t + wfq groups (%u)\n"
2258+ "\t\t + wfq weight (%u)\n",
2259+ cap->nonleaf.sched_n_children_max,
2260+ cap->nonleaf.sched_sp_n_priorities_max,
2261+ cap->nonleaf.sched_wfq_n_children_per_group_max,
2262+ cap->nonleaf.sched_wfq_n_groups_max,
2263+ cap->nonleaf.sched_wfq_weight_max);
2264+ } else {
2265+ printf("\t -- leaf cman support:\n"
2266+ "\t\t + wred pkt mode (%d)\n"
2267+ "\t\t + wred byte mode (%d)\n"
2268+ "\t\t + head drop (%d)\n"
2269+ "\t\t + wred context private (%d)\n"
2270+ "\t\t + wred context shared (%u)\n",
2271+ cap->leaf.cman_wred_packet_mode_supported,
2272+ cap->leaf.cman_wred_byte_mode_supported,
2273+ cap->leaf.cman_head_drop_supported,
2274+ cap->leaf.cman_wred_context_private_supported,
2275+ cap->leaf.cman_wred_context_shared_n_max);
2276+ }
2277+}
2278+
2279+static void
2280+display_levelcap_info(int is_leaf, struct rte_tm_level_capabilities *cap)
2281+{
2282+ if (cap == NULL)
2283+ return;
2284+
2285+ if (!is_leaf) {
2286+ printf("\t -- shaper private: (%d) dual rate (%d)\n",
2287+ cap->nonleaf.shaper_private_supported,
2288+ cap->nonleaf.shaper_private_dual_rate_supported);
2289+ printf("\t -- shaper share: (%u)\n",
2290+ cap->nonleaf.shaper_shared_n_max);
2291+ printf("\t -- non leaf sched MAX:\n"
2292+ "\t\t + children (%u)\n"
2293+ "\t\t + sp (%u)\n"
2294+ "\t\t + wfq children per group (%u)\n"
2295+ "\t\t + wfq groups (%u)\n"
2296+ "\t\t + wfq weight (%u)\n",
2297+ cap->nonleaf.sched_n_children_max,
2298+ cap->nonleaf.sched_sp_n_priorities_max,
2299+ cap->nonleaf.sched_wfq_n_children_per_group_max,
2300+ cap->nonleaf.sched_wfq_n_groups_max,
2301+ cap->nonleaf.sched_wfq_weight_max);
2302+ } else {
2303+ printf("\t -- shaper private: (%d) dual rate (%d)\n",
2304+ cap->leaf.shaper_private_supported,
2305+ cap->leaf.shaper_private_dual_rate_supported);
2306+ printf("\t -- shaper share: (%u)\n",
2307+ cap->leaf.shaper_shared_n_max);
2308+ printf(" -- leaf cman support:\n"
2309+ "\t\t + wred pkt mode (%d)\n"
2310+ "\t\t + wred byte mode (%d)\n"
2311+ "\t\t + head drop (%d)\n"
2312+ "\t\t + wred context private (%d)\n"
2313+ "\t\t + wred context shared (%u)\n",
2314+ cap->leaf.cman_wred_packet_mode_supported,
2315+ cap->leaf.cman_wred_byte_mode_supported,
2316+ cap->leaf.cman_head_drop_supported,
2317+ cap->leaf.cman_wred_context_private_supported,
2318+ cap->leaf.cman_wred_context_shared_n_max);
2319+ }
2320+}
2321+
2322+static void
2323+show_tm(void)
2324+{
2325+ int ret = 0, check_for_leaf = 0, is_leaf = 0;
2326+ unsigned int j, k;
2327+ uint16_t i = 0;
2328+
2329+ snprintf(bdr_str, MAX_STRING_LEN, " show - TM PMD %"PRIu64,
2330+ rte_get_tsc_hz());
2331+ STATS_BDR_STR(10, bdr_str);
2332+
2333+ RTE_ETH_FOREACH_DEV(i) {
2334+ struct rte_eth_dev_info dev_info;
2335+ struct rte_tm_capabilities cap;
2336+ struct rte_tm_error error;
2337+ struct rte_tm_node_capabilities capnode;
2338+ struct rte_tm_level_capabilities caplevel;
2339+ uint32_t n_leaf_nodes = 0;
2340+
2341+ memset(&cap, 0, sizeof(cap));
2342+ memset(&error, 0, sizeof(error));
2343+
2344+ ret = rte_eth_dev_info_get(i, &dev_info);
2345+ if (ret != 0) {
2346+ printf("Error during getting device (port %u) info: %s\n",
2347+ i, strerror(-ret));
2348+ return;
2349+ }
2350+
2351+ printf(" - Generic for port (%u)\n"
2352+ "\t -- driver name %s\n"
2353+ "\t -- max vf (%u)\n"
2354+ "\t -- max tx queues (%u)\n"
2355+ "\t -- number of tx queues (%u)\n",
2356+ i,
2357+ dev_info.driver_name,
2358+ dev_info.max_vfs,
2359+ dev_info.max_tx_queues,
2360+ dev_info.nb_tx_queues);
2361+
2362+ ret = rte_tm_capabilities_get(i, &cap, &error);
2363+ if (ret)
2364+ continue;
2365+
2366+ printf(" - MAX: nodes (%u) levels (%u) children (%u)\n",
2367+ cap.n_nodes_max,
2368+ cap.n_levels_max,
2369+ cap.sched_n_children_max);
2370+
2371+ printf(" - identical nodes: non leaf (%d) leaf (%d)\n",
2372+ cap.non_leaf_nodes_identical,
2373+ cap.leaf_nodes_identical);
2374+
2375+ printf(" - Shaper MAX:\n"
2376+ "\t -- total (%u)\n"
2377+ "\t -- private (%u) private dual (%d)\n"
2378+ "\t -- shared (%u) shared dual (%u)\n",
2379+ cap.shaper_n_max,
2380+ cap.shaper_private_n_max,
2381+ cap.shaper_private_dual_rate_n_max,
2382+ cap.shaper_shared_n_max,
2383+ cap.shaper_shared_dual_rate_n_max);
2384+
2385+ printf(" - mark support:\n");
2386+ printf("\t -- vlan dei: GREEN (%d) YELLOW (%d) RED (%d)\n",
2387+ cap.mark_vlan_dei_supported[RTE_COLOR_GREEN],
2388+ cap.mark_vlan_dei_supported[RTE_COLOR_YELLOW],
2389+ cap.mark_vlan_dei_supported[RTE_COLOR_RED]);
2390+ printf("\t -- ip ecn tcp: GREEN (%d) YELLOW (%d) RED (%d)\n",
2391+ cap.mark_ip_ecn_tcp_supported[RTE_COLOR_GREEN],
2392+ cap.mark_ip_ecn_tcp_supported[RTE_COLOR_YELLOW],
2393+ cap.mark_ip_ecn_tcp_supported[RTE_COLOR_RED]);
2394+ printf("\t -- ip ecn sctp: GREEN (%d) YELLOW (%d) RED (%d)\n",
2395+ cap.mark_ip_ecn_sctp_supported[RTE_COLOR_GREEN],
2396+ cap.mark_ip_ecn_sctp_supported[RTE_COLOR_YELLOW],
2397+ cap.mark_ip_ecn_sctp_supported[RTE_COLOR_RED]);
2398+ printf("\t -- ip dscp: GREEN (%d) YELLOW (%d) RED (%d)\n",
2399+ cap.mark_ip_dscp_supported[RTE_COLOR_GREEN],
2400+ cap.mark_ip_dscp_supported[RTE_COLOR_YELLOW],
2401+ cap.mark_ip_dscp_supported[RTE_COLOR_RED]);
2402+
2403+ printf(" - mask stats (0x%"PRIx64")"
2404+ " dynamic update (0x%"PRIx64")\n",
2405+ cap.stats_mask,
2406+ cap.dynamic_update_mask);
2407+
2408+ printf(" - sched MAX:\n"
2409+ "\t -- total (%u)\n"
2410+ "\t -- sp levels (%u)\n"
2411+ "\t -- wfq children per group (%u)\n"
2412+ "\t -- wfq groups (%u)\n"
2413+ "\t -- wfq weight (%u)\n",
2414+ cap.sched_sp_n_priorities_max,
2415+ cap.sched_sp_n_priorities_max,
2416+ cap.sched_wfq_n_children_per_group_max,
2417+ cap.sched_wfq_n_groups_max,
2418+ cap.sched_wfq_weight_max);
2419+
2420+ printf(" - CMAN support:\n"
2421+ "\t -- WRED mode: pkt (%d) byte (%d)\n"
2422+ "\t -- head drop (%d)\n",
2423+ cap.cman_wred_packet_mode_supported,
2424+ cap.cman_wred_byte_mode_supported,
2425+ cap.cman_head_drop_supported);
2426+ printf("\t -- MAX WRED CONTEXT:"
2427+ " total (%u) private (%u) shared (%u)\n",
2428+ cap.cman_wred_context_n_max,
2429+ cap.cman_wred_context_private_n_max,
2430+ cap.cman_wred_context_shared_n_max);
2431+
2432+ for (j = 0; j < cap.n_nodes_max; j++) {
2433+ memset(&capnode, 0, sizeof(capnode));
2434+ ret = rte_tm_node_capabilities_get(i, j,
2435+ &capnode, &error);
2436+ if (ret)
2437+ continue;
2438+
2439+ check_for_leaf = 1;
2440+
2441+ printf(" NODE %u\n", j);
2442+ printf("\t - shaper private: (%d) dual rate (%d)\n",
2443+ capnode.shaper_private_supported,
2444+ capnode.shaper_private_dual_rate_supported);
2445+ printf("\t - shaper shared max: (%u)\n",
2446+ capnode.shaper_shared_n_max);
2447+ printf("\t - stats mask %"PRIx64"\n",
2448+ capnode.stats_mask);
2449+
2450+ ret = rte_tm_node_type_get(i, j, &is_leaf, &error);
2451+ if (ret)
2452+ continue;
2453+
2454+ display_nodecap_info(is_leaf, &capnode);
2455+ }
2456+
2457+ for (j = 0; j < cap.n_levels_max; j++) {
2458+ memset(&caplevel, 0, sizeof(caplevel));
2459+ ret = rte_tm_level_capabilities_get(i, j,
2460+ &caplevel, &error);
2461+ if (ret)
2462+ continue;
2463+
2464+ printf(" - Level %u\n", j);
2465+ printf("\t -- node MAX: %u non leaf %u leaf %u\n",
2466+ caplevel.n_nodes_max,
2467+ caplevel.n_nodes_nonleaf_max,
2468+ caplevel.n_nodes_leaf_max);
2469+ printf("\t -- indetical: non leaf %u leaf %u\n",
2470+ caplevel.non_leaf_nodes_identical,
2471+ caplevel.leaf_nodes_identical);
2472+
2473+ for (k = 0; k < caplevel.n_nodes_max; k++) {
2474+ ret = rte_tm_node_type_get(i, k,
2475+ &is_leaf, &error);
2476+ if (ret)
2477+ continue;
2478+
2479+ display_levelcap_info(is_leaf, &caplevel);
2480+ }
2481+ }
2482+
2483+ if (check_for_leaf) {
2484+ ret = rte_tm_get_number_of_leaf_nodes(i,
2485+ &n_leaf_nodes, &error);
2486+ if (ret == 0)
2487+ printf(" - leaf nodes (%u)\n", n_leaf_nodes);
2488+ }
2489+
2490+ for (j = 0; j < n_leaf_nodes; j++) {
2491+ struct rte_tm_node_stats stats;
2492+ memset(&stats, 0, sizeof(stats));
2493+
2494+ ret = rte_tm_node_stats_read(i, j,
2495+ &stats, &cap.stats_mask, 0, &error);
2496+ if (ret)
2497+ continue;
2498+
2499+ printf(" - STATS for node (%u)\n", j);
2500+ printf(" -- pkts (%"PRIu64") bytes (%"PRIu64")\n",
2501+ stats.n_pkts, stats.n_bytes);
2502+
2503+ ret = rte_tm_node_type_get(i, j, &is_leaf, &error);
2504+ if (ret || (!is_leaf))
2505+ continue;
2506+
2507+ printf(" -- leaf queued:"
2508+ " pkts (%"PRIu64") bytes (%"PRIu64")\n",
2509+ stats.leaf.n_pkts_queued,
2510+ stats.leaf.n_bytes_queued);
2511+ printf(" - dropped:\n"
2512+ "\t -- GREEN:"
2513+ " pkts (%"PRIu64") bytes (%"PRIu64")\n"
2514+ "\t -- YELLOW:"
2515+ " pkts (%"PRIu64") bytes (%"PRIu64")\n"
2516+ "\t -- RED:"
2517+ " pkts (%"PRIu64") bytes (%"PRIu64")\n",
2518+ stats.leaf.n_pkts_dropped[RTE_COLOR_GREEN],
2519+ stats.leaf.n_bytes_dropped[RTE_COLOR_GREEN],
2520+ stats.leaf.n_pkts_dropped[RTE_COLOR_YELLOW],
2521+ stats.leaf.n_bytes_dropped[RTE_COLOR_YELLOW],
2522+ stats.leaf.n_pkts_dropped[RTE_COLOR_RED],
2523+ stats.leaf.n_bytes_dropped[RTE_COLOR_RED]);
2524+ }
2525+ }
2526+
2527+ STATS_BDR_STR(50, "");
2528+}
2529+
2530+static void
2531+display_crypto_feature_info(uint64_t x)
2532+{
2533+ if (x == 0)
2534+ return;
2535+
2536+ printf("\t -- feature flags\n");
2537+ printf("\t\t + symmetric (%c), asymmetric (%c)\n"
2538+ "\t\t + symmetric operation chaining (%c)\n",
2539+ (x & RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO) ? 'y' : 'n',
2540+ (x & RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO) ? 'y' : 'n',
2541+ (x & RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING) ? 'y' : 'n');
2542+ printf("\t\t + CPU: SSE (%c), AVX (%c), AVX2 (%c), AVX512 (%c)\n",
2543+ (x & RTE_CRYPTODEV_FF_CPU_SSE) ? 'y' : 'n',
2544+ (x & RTE_CRYPTODEV_FF_CPU_AVX) ? 'y' : 'n',
2545+ (x & RTE_CRYPTODEV_FF_CPU_AVX2) ? 'y' : 'n',
2546+ (x & RTE_CRYPTODEV_FF_CPU_AVX512) ? 'y' : 'n');
2547+ printf("\t\t + AESNI: CPU (%c), HW (%c)\n",
2548+ (x & RTE_CRYPTODEV_FF_CPU_AESNI) ? 'y' : 'n',
2549+ (x & RTE_CRYPTODEV_FF_HW_ACCELERATED) ? 'y' : 'n');
2550+ printf("\t\t + INLINE (%c)\n",
2551+ (x & RTE_CRYPTODEV_FF_SECURITY) ? 'y' : 'n');
2552+ printf("\t\t + ARM: NEON (%c), CE (%c)\n",
2553+ (x & RTE_CRYPTODEV_FF_CPU_NEON) ? 'y' : 'n',
2554+ (x & RTE_CRYPTODEV_FF_CPU_ARM_CE) ? 'y' : 'n');
2555+ printf("\t -- buffer offload\n");
2556+ printf("\t\t + IN_PLACE_SGL (%c)\n",
2557+ (x & RTE_CRYPTODEV_FF_IN_PLACE_SGL) ? 'y' : 'n');
2558+ printf("\t\t + OOP_SGL_IN_SGL_OUT (%c)\n",
2559+ (x & RTE_CRYPTODEV_FF_OOP_SGL_IN_SGL_OUT) ? 'y' : 'n');
2560+ printf("\t\t + OOP_SGL_IN_LB_OUT (%c)\n",
2561+ (x & RTE_CRYPTODEV_FF_OOP_SGL_IN_LB_OUT) ? 'y' : 'n');
2562+ printf("\t\t + OOP_LB_IN_SGL_OUT (%c)\n",
2563+ (x & RTE_CRYPTODEV_FF_OOP_LB_IN_SGL_OUT) ? 'y' : 'n');
2564+ printf("\t\t + OOP_LB_IN_LB_OUT (%c)\n",
2565+ (x & RTE_CRYPTODEV_FF_OOP_LB_IN_LB_OUT) ? 'y' : 'n');
2566+}
2567+
2568+static void
2569+show_crypto(void)
2570+{
2571+ uint8_t crypto_dev_count = rte_cryptodev_count(), i;
2572+
2573+ snprintf(bdr_str, MAX_STRING_LEN, " show - CRYPTO PMD %"PRIu64,
2574+ rte_get_tsc_hz());
2575+ STATS_BDR_STR(10, bdr_str);
2576+
2577+ for (i = 0; i < crypto_dev_count; i++) {
2578+ struct rte_cryptodev_info dev_info;
2579+ struct rte_cryptodev_stats stats;
2580+
2581+ rte_cryptodev_info_get(i, &dev_info);
2582+
2583+ printf(" - device (%u)\n", i);
2584+ printf("\t -- name (%s)\n"
2585+ "\t -- driver (%s)\n"
2586+ "\t -- id (%u) on socket (%d)\n"
2587+ "\t -- queue pairs (%d)\n",
2588+ rte_cryptodev_name_get(i),
2589+ dev_info.driver_name,
2590+ dev_info.driver_id,
2591+ dev_info.device->numa_node,
2592+ rte_cryptodev_queue_pair_count(i));
2593+
2594+ display_crypto_feature_info(dev_info.feature_flags);
2595+
2596+ memset(&stats, 0, sizeof(0));
2597+ if (rte_cryptodev_stats_get(i, &stats) == 0) {
2598+ printf("\t -- stats\n");
2599+ printf("\t\t + enqueue count (%"PRIu64")"
2600+ " error (%"PRIu64")\n",
2601+ stats.enqueued_count,
2602+ stats.enqueue_err_count);
2603+ printf("\t\t + dequeue count (%"PRIu64")"
2604+ " error (%"PRIu64")\n",
2605+ stats.dequeued_count,
2606+ stats.dequeue_err_count);
2607+ }
2608+ }
2609+
2610+ STATS_BDR_STR(50, "");
2611+}
2612+
2613+static void
2614+show_ring(char *name)
2615+{
2616+ snprintf(bdr_str, MAX_STRING_LEN, " show - RING %"PRIu64,
2617+ rte_get_tsc_hz());
2618+ STATS_BDR_STR(10, bdr_str);
2619+
2620+ if (name != NULL) {
2621+ struct rte_ring *ptr = rte_ring_lookup(name);
2622+ if (ptr != NULL) {
2623+ printf(" - Name (%s) on socket (%d)\n"
2624+ " - flags:\n"
2625+ "\t -- Single Producer Enqueue (%u)\n"
2626+ "\t -- Single Consmer Dequeue (%u)\n",
2627+ ptr->name,
2628+ ptr->memzone->socket_id,
2629+ ptr->flags & RING_F_SP_ENQ,
2630+ ptr->flags & RING_F_SC_DEQ);
2631+ printf(" - size (%u) mask (0x%x) capacity (%u)\n",
2632+ ptr->size,
2633+ ptr->mask,
2634+ ptr->capacity);
2635+ printf(" - count (%u) free count (%u)\n",
2636+ rte_ring_count(ptr),
2637+ rte_ring_free_count(ptr));
2638+ printf(" - full (%d) empty (%d)\n",
2639+ rte_ring_full(ptr),
2640+ rte_ring_empty(ptr));
2641+
2642+ STATS_BDR_STR(50, "");
2643+ return;
2644+ }
2645+ }
2646+
2647+ rte_ring_list_dump(stdout);
2648+ STATS_BDR_STR(50, "");
2649+}
2650+
2651+static void
2652+show_mempool(char *name)
2653+{
2654+ uint64_t flags = 0;
2655+
2656+ snprintf(bdr_str, MAX_STRING_LEN, " show - MEMPOOL %"PRIu64,
2657+ rte_get_tsc_hz());
2658+ STATS_BDR_STR(10, bdr_str);
2659+
2660+ if (name != NULL) {
2661+ struct rte_mempool *ptr = rte_mempool_lookup(name);
2662+ if (ptr != NULL) {
2663+ flags = ptr->flags;
2664+ printf(" - Name: %s on socket %d\n"
2665+ " - flags:\n"
2666+ "\t -- No spread (%c)\n"
2667+ "\t -- No cache align (%c)\n"
2668+ "\t -- SP put (%c), SC get (%c)\n"
2669+ "\t -- Pool created (%c)\n"
2670+ "\t -- No IOVA config (%c)\n",
2671+ ptr->name,
2672+ ptr->socket_id,
2673+ (flags & MEMPOOL_F_NO_SPREAD) ? 'y' : 'n',
2674+ (flags & MEMPOOL_F_NO_CACHE_ALIGN) ? 'y' : 'n',
2675+ (flags & MEMPOOL_F_SP_PUT) ? 'y' : 'n',
2676+ (flags & MEMPOOL_F_SC_GET) ? 'y' : 'n',
2677+ (flags & MEMPOOL_F_POOL_CREATED) ? 'y' : 'n',
2678+ (flags & MEMPOOL_F_NO_IOVA_CONTIG) ? 'y' : 'n');
2679+ printf(" - Size %u Cache %u element %u\n"
2680+ " - header %u trailer %u\n"
2681+ " - private data size %u\n",
2682+ ptr->size,
2683+ ptr->cache_size,
2684+ ptr->elt_size,
2685+ ptr->header_size,
2686+ ptr->trailer_size,
2687+ ptr->private_data_size);
2688+ printf(" - memezone - socket %d\n",
2689+ ptr->mz->socket_id);
2690+ printf(" - Count: avail (%u), in use (%u)\n",
2691+ rte_mempool_avail_count(ptr),
2692+ rte_mempool_in_use_count(ptr));
2693+
2694+ STATS_BDR_STR(50, "");
2695+ return;
2696+ }
2697+ }
2698+
2699+ rte_mempool_list_dump(stdout);
2700+ STATS_BDR_STR(50, "");
2701+}
2702+
2703+static void
2704+mempool_itr_obj(struct rte_mempool *mp, void *opaque,
2705+ void *obj, unsigned int obj_idx)
2706+{
2707+ printf(" - obj_idx %u opaque %p obj %p\n",
2708+ obj_idx, opaque, obj);
2709+
2710+ if (obj)
2711+ rte_hexdump(stdout, " Obj Content",
2712+ obj, (mp->elt_size > 256)?256:mp->elt_size);
2713+}
2714+
2715+static void
2716+iter_mempool(char *name)
2717+{
2718+ snprintf(bdr_str, MAX_STRING_LEN, " iter - MEMPOOL %"PRIu64,
2719+ rte_get_tsc_hz());
2720+ STATS_BDR_STR(10, bdr_str);
2721+
2722+ if (name != NULL) {
2723+ struct rte_mempool *ptr = rte_mempool_lookup(name);
2724+ if (ptr != NULL) {
2725+ /* iterate each object */
2726+ uint32_t ret = rte_mempool_obj_iter(ptr,
2727+ mempool_itr_obj, NULL);
2728+ printf("\n - iterated %u objects\n", ret);
2729+ STATS_BDR_STR(50, "");
2730+ return;
2731+ }
2732+ }
2733+
2734+ STATS_BDR_STR(50, "");
2735+}
2736+
2737 int
2738 main(int argc, char **argv)
2739 {
2740@@ -664,9 +1331,26 @@ main(int argc, char **argv)
2741 if (enable_metrics)
2742 metrics_display(RTE_METRICS_GLOBAL);
2743
2744+ /* show information for PMD */
2745+ if (enable_shw_port)
2746+ show_port();
2747+ if (enable_shw_tm)
2748+ show_tm();
2749+ if (enable_shw_crypto)
2750+ show_crypto();
2751+ if (enable_shw_ring)
2752+ show_ring(ring_name);
2753+ if (enable_shw_mempool)
2754+ show_mempool(mempool_name);
2755+ if (enable_iter_mempool)
2756+ iter_mempool(mempool_iter_name);
2757+
2758 ret = rte_eal_cleanup();
2759 if (ret)
2760 printf("Error from rte_eal_cleanup(), %d\n", ret);
2761
2762+ strlcpy(bdr_str, " ", MAX_STRING_LEN);
2763+ STATS_BDR_STR(50, bdr_str);
2764+
2765 return 0;
2766 }
2767diff --git a/app/proc-info/meson.build b/app/proc-info/meson.build
2768index a52b2ee..f050c4a 100644
2769--- a/app/proc-info/meson.build
2770+++ b/app/proc-info/meson.build
2771@@ -2,5 +2,4 @@
2772 # Copyright(c) 2018 Intel Corporation
2773
2774 sources = files('main.c')
2775-allow_experimental_apis = true
2776-deps += ['ethdev', 'metrics']
2777+deps += ['ethdev', 'metrics', 'security']
2778diff --git a/app/test-acl/Makefile b/app/test-acl/Makefile
2779new file mode 100644
2780index 0000000..5f26294
2781--- /dev/null
2782+++ b/app/test-acl/Makefile
2783@@ -0,0 +1,17 @@
2784+# SPDX-License-Identifier: BSD-3-Clause
2785+# Copyright(c) 2010-2014 Intel Corporation
2786+
2787+include $(RTE_SDK)/mk/rte.vars.mk
2788+
2789+ifeq ($(CONFIG_RTE_LIBRTE_ACL),y)
2790+
2791+APP = testacl
2792+
2793+CFLAGS += $(WERROR_FLAGS)
2794+
2795+# all source are stored in SRCS-y
2796+SRCS-y := main.c
2797+
2798+include $(RTE_SDK)/mk/rte.app.mk
2799+
2800+endif
2801diff --git a/test/test-acl/main.c b/app/test-acl/main.c
2802similarity index 94%
2803rename from test/test-acl/main.c
2804rename to app/test-acl/main.c
2805index 648525a..57f2394 100644
2806--- a/test/test-acl/main.c
2807+++ b/app/test-acl/main.c
2808@@ -2,6 +2,7 @@
2809 * Copyright(c) 2010-2014 Intel Corporation
2810 */
2811
2812+#include <rte_string_fns.h>
2813 #include <rte_acl.h>
2814 #include <getopt.h>
2815 #include <string.h>
2816@@ -624,7 +625,7 @@ parse_ipv4_net(const char *in, uint32_t *addr, uint32_t *mask_len)
2817 GET_CB_FIELD(in, d, 0, UINT8_MAX, '/');
2818 GET_CB_FIELD(in, m, 0, sizeof(uint32_t) * CHAR_BIT, 0);
2819
2820- addr[0] = IPv4(a, b, c, d);
2821+ addr[0] = RTE_IPV4(a, b, c, d);
2822 mask_len[0] = m;
2823
2824 return 0;
2825@@ -928,7 +929,7 @@ print_usage(const char *prgname)
2826 n += rc;
2827 }
2828
2829- snprintf(buf + n, sizeof(buf) - n, "%s", acl_alg[i].name);
2830+ strlcpy(buf + n, acl_alg[i].name, sizeof(buf) - n);
2831
2832 fprintf(stdout,
2833 PRINT_USAGE_START
2834diff --git a/app/test-acl/meson.build b/app/test-acl/meson.build
2835new file mode 100644
2836index 0000000..d5c2581
2837--- /dev/null
2838+++ b/app/test-acl/meson.build
2839@@ -0,0 +1,5 @@
2840+# SPDX-License-Identifier: BSD-3-Clause
2841+# Copyright(c) 2019 Intel Corporation
2842+
2843+sources = files('main.c')
2844+deps += ['acl', 'net']
2845diff --git a/app/test-bbdev/Makefile b/app/test-bbdev/Makefile
2846index 6da0c8e..c53982f 100644
2847--- a/app/test-bbdev/Makefile
2848+++ b/app/test-bbdev/Makefile
2849@@ -21,5 +21,8 @@ SRCS-$(CONFIG_RTE_TEST_BBDEV) += test_bbdev_perf.c
2850 SRCS-$(CONFIG_RTE_TEST_BBDEV) += test_bbdev_vector.c
2851
2852 LDLIBS += -lm
2853+ifeq ($(CONFIG_RTE_LIBRTE_PMD_BBDEV_FPGA_LTE_FEC),y)
2854+LDLIBS += -lrte_pmd_bbdev_fpga_lte_fec
2855+endif
2856
2857 include $(RTE_SDK)/mk/rte.app.mk
2858diff --git a/app/test-bbdev/ldpc_dec_default.data b/app/test-bbdev/ldpc_dec_default.data
2859new file mode 120000
2860index 0000000..3058cc0
2861--- /dev/null
2862+++ b/app/test-bbdev/ldpc_dec_default.data
2863@@ -0,0 +1 @@
2864+test_vectors/ldpc_dec_v2342.data
2865\ No newline at end of file
2866diff --git a/app/test-bbdev/ldpc_enc_default.data b/app/test-bbdev/ldpc_enc_default.data
2867new file mode 120000
2868index 0000000..371cbc6
2869--- /dev/null
2870+++ b/app/test-bbdev/ldpc_enc_default.data
2871@@ -0,0 +1 @@
2872+test_vectors/turbo_dec_c1_k6144_r0_e10376_crc24b_sbd_negllr_high_snr.data
2873\ No newline at end of file
2874diff --git a/app/test-bbdev/main.c b/app/test-bbdev/main.c
2875index 41b54bb..8a42115 100644
2876--- a/app/test-bbdev/main.c
2877+++ b/app/test-bbdev/main.c
2878@@ -16,11 +16,13 @@
2879
2880 #include "main.h"
2881
2882+
2883 /* Defines how many testcases can be specified as cmdline args */
2884 #define MAX_CMDLINE_TESTCASES 8
2885
2886 static const char tc_sep = ',';
2887
2888+/* Declare structure for command line test parameters and options */
2889 static struct test_params {
2890 struct test_command *test_to_run[MAX_CMDLINE_TESTCASES];
2891 unsigned int num_tests;
2892@@ -28,6 +30,7 @@ static struct test_params {
2893 unsigned int burst_sz;
2894 unsigned int num_lcores;
2895 char test_vector_filename[PATH_MAX];
2896+ bool init_device;
2897 } test_params;
2898
2899 static struct test_commands_list commands_list =
2900@@ -46,9 +49,8 @@ unit_test_suite_runner(struct unit_test_suite *suite)
2901 unsigned int total = 0, skipped = 0, succeeded = 0, failed = 0;
2902 uint64_t start, end;
2903
2904- printf(
2905- "\n + ------------------------------------------------------- +\n");
2906- printf(" + Starting Test Suite : %s\n", suite->suite_name);
2907+ printf("\n===========================================================\n");
2908+ printf("Starting Test Suite : %s\n", suite->suite_name);
2909
2910 start = rte_rdtsc_precise();
2911
2912@@ -57,15 +59,13 @@ unit_test_suite_runner(struct unit_test_suite *suite)
2913 if (test_result == TEST_FAILED) {
2914 printf(" + Test suite setup %s failed!\n",
2915 suite->suite_name);
2916- printf(
2917- " + ------------------------------------------------------- +\n");
2918+ printf(" + ------------------------------------------------------- +\n");
2919 return 1;
2920 }
2921 if (test_result == TEST_SKIPPED) {
2922 printf(" + Test suite setup %s skipped!\n",
2923 suite->suite_name);
2924- printf(
2925- " + ------------------------------------------------------- +\n");
2926+ printf(" + ------------------------------------------------------- +\n");
2927 return 0;
2928 }
2929 }
2930@@ -82,15 +82,15 @@ unit_test_suite_runner(struct unit_test_suite *suite)
2931
2932 if (test_result == TEST_SUCCESS) {
2933 succeeded++;
2934- printf(" + TestCase [%2d] : %s passed\n", total,
2935+ printf("TestCase [%2d] : %s passed\n", total,
2936 suite->unit_test_cases[total].name);
2937 } else if (test_result == TEST_SKIPPED) {
2938 skipped++;
2939- printf(" + TestCase [%2d] : %s skipped\n", total,
2940+ printf("TestCase [%2d] : %s skipped\n", total,
2941 suite->unit_test_cases[total].name);
2942 } else {
2943 failed++;
2944- printf(" + TestCase [%2d] : %s failed\n", total,
2945+ printf("TestCase [%2d] : %s failed\n", total,
2946 suite->unit_test_cases[total].name);
2947 }
2948
2949@@ -103,7 +103,7 @@ unit_test_suite_runner(struct unit_test_suite *suite)
2950
2951 end = rte_rdtsc_precise();
2952
2953- printf(" + ------------------------------------------------------- +\n");
2954+ printf(" + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +\n");
2955 printf(" + Test Suite Summary : %s\n", suite->suite_name);
2956 printf(" + Tests Total : %2d\n", total);
2957 printf(" + Tests Skipped : %2d\n", skipped);
2958@@ -111,7 +111,7 @@ unit_test_suite_runner(struct unit_test_suite *suite)
2959 printf(" + Tests Failed : %2d\n", failed);
2960 printf(" + Tests Lasted : %lg ms\n",
2961 ((end - start) * 1000) / (double)rte_get_tsc_hz());
2962- printf(" + ------------------------------------------------------- +\n");
2963+ printf(" + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +\n");
2964
2965 return (failed > 0) ? 1 : 0;
2966 }
2967@@ -140,12 +140,18 @@ get_num_lcores(void)
2968 return test_params.num_lcores;
2969 }
2970
2971+bool
2972+get_init_device(void)
2973+{
2974+ return test_params.init_device;
2975+}
2976+
2977 static void
2978 print_usage(const char *prog_name)
2979 {
2980 struct test_command *t;
2981
2982- printf("Usage: %s [EAL params] [-- [-n/--num-ops NUM_OPS]\n"
2983+ printf("***Usage: %s [EAL params] [-- [-n/--num-ops NUM_OPS]\n"
2984 "\t[-b/--burst-size BURST_SIZE]\n"
2985 "\t[-v/--test-vector VECTOR_FILE]\n"
2986 "\t[-c/--test-cases TEST_CASE[,TEST_CASE,...]]]\n",
2987@@ -174,11 +180,12 @@ parse_args(int argc, char **argv, struct test_params *tp)
2988 { "test-cases", 1, 0, 'c' },
2989 { "test-vector", 1, 0, 'v' },
2990 { "lcores", 1, 0, 'l' },
2991+ { "init-device", 0, 0, 'i'},
2992 { "help", 0, 0, 'h' },
2993 { NULL, 0, 0, 0 }
2994 };
2995
2996- while ((opt = getopt_long(argc, argv, "hn:b:c:v:l:", lgopts,
2997+ while ((opt = getopt_long(argc, argv, "hin:b:c:v:l:", lgopts,
2998 &option_index)) != EOF)
2999 switch (opt) {
3000 case 'n':
3001@@ -238,6 +245,10 @@ parse_args(int argc, char **argv, struct test_params *tp)
3002 "Num of lcores mustn't be greater than %u",
3003 RTE_MAX_LCORE);
3004 break;
3005+ case 'i':
3006+ /* indicate fpga fec config required */
3007+ tp->init_device = true;
3008+ break;
3009 case 'h':
3010 print_usage(argv[0]);
3011 return 0;
3012@@ -280,7 +291,7 @@ run_all_tests(void)
3013 struct test_command *t;
3014
3015 TAILQ_FOREACH(t, &commands_list, next)
3016- ret |= t->callback();
3017+ ret |= (int) t->callback();
3018
3019 return ret;
3020 }
3021@@ -292,7 +303,7 @@ run_parsed_tests(struct test_params *tp)
3022 unsigned int i;
3023
3024 for (i = 0; i < tp->num_tests; ++i)
3025- ret |= tp->test_to_run[i]->callback();
3026+ ret |= (int) tp->test_to_run[i]->callback();
3027
3028 return ret;
3029 }
3030@@ -316,8 +327,6 @@ main(int argc, char **argv)
3031 return 1;
3032 }
3033
3034- rte_log_set_global_level(RTE_LOG_INFO);
3035-
3036 /* If no argument provided - run all tests */
3037 if (test_params.num_tests == 0)
3038 return run_all_tests();
3039diff --git a/app/test-bbdev/main.h b/app/test-bbdev/main.h
3040index 20a55ef..23b4d58 100644
3041--- a/app/test-bbdev/main.h
3042+++ b/app/test-bbdev/main.h
3043@@ -20,6 +20,7 @@
3044 #define DEFAULT_BURST 32U
3045 #define DEFAULT_OPS 64U
3046
3047+
3048 #define TEST_ASSERT(cond, msg, ...) do { \
3049 if (!(cond)) { \
3050 printf("TestCase %s() line %d failed: " \
3051@@ -117,4 +118,6 @@ unsigned int get_burst_sz(void);
3052
3053 unsigned int get_num_lcores(void);
3054
3055+bool get_init_device(void);
3056+
3057 #endif
3058diff --git a/app/test-bbdev/meson.build b/app/test-bbdev/meson.build
3059index eb8cc04..4f53a2e 100644
3060--- a/app/test-bbdev/meson.build
3061+++ b/app/test-bbdev/meson.build
3062@@ -7,3 +7,6 @@ sources = files('main.c',
3063 'test_bbdev_vector.c')
3064 allow_experimental_apis = true
3065 deps += ['bbdev', 'bus_vdev']
3066+if dpdk_conf.has('RTE_LIBRTE_PMD_BBDEV_FPGA_LTE_FEC')
3067+ deps += ['pmd_bbdev_fpga_lte_fec']
3068+endif
3069diff --git a/app/test-bbdev/test-bbdev.py b/app/test-bbdev/test-bbdev.py
3070index acab9eb..0194be0 100755
3071--- a/app/test-bbdev/test-bbdev.py
3072+++ b/app/test-bbdev/test-bbdev.py
3073@@ -23,7 +23,7 @@ else:
3074 if "RTE_TARGET" in os.environ:
3075 dpdk_target = os.environ["RTE_TARGET"]
3076 else:
3077- dpdk_target = "x86_64-native-linuxapp-gcc"
3078+ dpdk_target = "x86_64-native-linux-gcc"
3079
3080 parser = argparse.ArgumentParser(
3081 description='BBdev Unit Test Application',
3082@@ -59,6 +59,9 @@ parser.add_argument("-l", "--num-lcores",
3083 type=int,
3084 help="Number of lcores to run.",
3085 default=16)
3086+parser.add_argument("-i", "--init-device",
3087+ action='store_true',
3088+ help="Initialise PF device with default values.")
3089
3090 args = parser.parse_args()
3091
3092@@ -82,6 +85,10 @@ if args.test_cases:
3093 params.extend(["-c"])
3094 params.extend([",".join(args.test_cases)])
3095
3096+if args.init_device:
3097+ params.extend(["-i"])
3098+
3099+
3100 exit_status = 0
3101 for vector in args.test_vector:
3102 for burst_size in args.burst_size:
3103diff --git a/app/test-bbdev/test_bbdev.c b/app/test-bbdev/test_bbdev.c
3104index 137c74c..ac06d73 100644
3105--- a/app/test-bbdev/test_bbdev.c
3106+++ b/app/test-bbdev/test_bbdev.c
3107@@ -14,8 +14,6 @@
3108 #include <rte_bbdev.h>
3109 #include <rte_bbdev_op.h>
3110 #include <rte_bbdev_pmd.h>
3111-#include<string.h>
3112-#include <rte_string_fns.h>
3113
3114 #include "main.h"
3115
3116@@ -770,7 +768,7 @@ test_bbdev_driver_init(void)
3117 {
3118 struct rte_bbdev *dev1, *dev2;
3119 const char *name = "dev_name";
3120- char name_tmp[16];
3121+ char name_tmp[32];
3122 int num_devs, num_devs_tmp;
3123
3124 dev1 = rte_bbdev_allocate(NULL);
3125@@ -790,14 +788,14 @@ test_bbdev_driver_init(void)
3126
3127 /* Initialize the maximum amount of devices */
3128 do {
3129- snprintf(name_tmp, sizeof(name_tmp), "%s%i", "name_", num_devs);
3130+ sprintf(name_tmp, "%s%i", "name_", num_devs);
3131 dev2 = rte_bbdev_allocate(name_tmp);
3132 TEST_ASSERT(dev2 != NULL,
3133 "Failed to initialize bbdev driver");
3134 ++num_devs;
3135 } while (num_devs < (RTE_BBDEV_MAX_DEVS - 1));
3136
3137- snprintf(name_tmp, sizeof(name_tmp), "%s%i", "name_", num_devs);
3138+ sprintf(name_tmp, "%s%i", "name_", num_devs);
3139 dev2 = rte_bbdev_allocate(name_tmp);
3140 TEST_ASSERT(dev2 == NULL, "Failed to initialize bbdev driver number %d "
3141 "more drivers than RTE_BBDEV_MAX_DEVS: %d ", num_devs,
3142@@ -806,7 +804,7 @@ test_bbdev_driver_init(void)
3143 num_devs--;
3144
3145 while (num_devs >= num_devs_tmp) {
3146- snprintf(name_tmp, sizeof(name_tmp), "%s%i", "name_", num_devs);
3147+ sprintf(name_tmp, "%s%i", "name_", num_devs);
3148 dev2 = rte_bbdev_get_named_dev(name_tmp);
3149 TEST_ASSERT_SUCCESS(rte_bbdev_release(dev2),
3150 "Failed to uninitialize bbdev driver %s ",
3151@@ -827,7 +825,7 @@ test_bbdev_driver_init(void)
3152 TEST_ASSERT_FAIL(rte_bbdev_release(NULL),
3153 "Failed to uninitialize bbdev driver with NULL bbdev");
3154
3155- strlcpy(name_tmp, "invalid_name", sizeof(name_tmp));
3156+ sprintf(name_tmp, "%s", "invalid_name");
3157 dev2 = rte_bbdev_get_named_dev(name_tmp);
3158 TEST_ASSERT_FAIL(rte_bbdev_release(dev2),
3159 "Failed to uninitialize bbdev driver with invalid name");
3160diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
3161index fa26deb..d8db58e 100644
3162--- a/app/test-bbdev/test_bbdev_perf.c
3163+++ b/app/test-bbdev/test_bbdev_perf.c
3164@@ -16,6 +16,11 @@
3165 #include <rte_malloc.h>
3166 #include <rte_random.h>
3167 #include <rte_hexdump.h>
3168+#include <rte_interrupts.h>
3169+
3170+#ifdef RTE_LIBRTE_PMD_BBDEV_FPGA_LTE_FEC
3171+#include <fpga_lte_fec.h>
3172+#endif
3173
3174 #include "main.h"
3175 #include "test_bbdev_vector.h"
3176@@ -23,6 +28,19 @@
3177 #define GET_SOCKET(socket_id) (((socket_id) == SOCKET_ID_ANY) ? 0 : (socket_id))
3178
3179 #define MAX_QUEUES RTE_MAX_LCORE
3180+#define TEST_REPETITIONS 1000
3181+
3182+#ifdef RTE_LIBRTE_PMD_BBDEV_FPGA_LTE_FEC
3183+#define FPGA_PF_DRIVER_NAME ("intel_fpga_lte_fec_pf")
3184+#define FPGA_VF_DRIVER_NAME ("intel_fpga_lte_fec_vf")
3185+#define VF_UL_QUEUE_VALUE 4
3186+#define VF_DL_QUEUE_VALUE 4
3187+#define UL_BANDWIDTH 3
3188+#define DL_BANDWIDTH 3
3189+#define UL_LOAD_BALANCE 128
3190+#define DL_LOAD_BALANCE 128
3191+#define FLR_TIMEOUT 610
3192+#endif
3193
3194 #define OPS_CACHE_SIZE 256U
3195 #define OPS_POOL_SIZE_MIN 511U /* 0.5K per queue */
3196@@ -48,6 +66,8 @@ static struct active_device {
3197 struct rte_mempool *in_mbuf_pool;
3198 struct rte_mempool *hard_out_mbuf_pool;
3199 struct rte_mempool *soft_out_mbuf_pool;
3200+ struct rte_mempool *harq_in_mbuf_pool;
3201+ struct rte_mempool *harq_out_mbuf_pool;
3202 } active_devs[RTE_BBDEV_MAX_DEVS];
3203
3204 static uint8_t nb_active_devs;
3205@@ -57,6 +77,8 @@ struct test_buffers {
3206 struct rte_bbdev_op_data *inputs;
3207 struct rte_bbdev_op_data *hard_outputs;
3208 struct rte_bbdev_op_data *soft_outputs;
3209+ struct rte_bbdev_op_data *harq_inputs;
3210+ struct rte_bbdev_op_data *harq_outputs;
3211 };
3212
3213 /* Operation parameters specific for given test case */
3214@@ -76,31 +98,36 @@ struct test_op_params {
3215 struct thread_params {
3216 uint8_t dev_id;
3217 uint16_t queue_id;
3218+ uint32_t lcore_id;
3219 uint64_t start_time;
3220- double mops;
3221+ double ops_per_sec;
3222 double mbps;
3223+ uint8_t iter_count;
3224 rte_atomic16_t nb_dequeued;
3225 rte_atomic16_t processing_status;
3226+ rte_atomic16_t burst_sz;
3227 struct test_op_params *op_params;
3228+ struct rte_bbdev_dec_op *dec_ops[MAX_BURST];
3229+ struct rte_bbdev_enc_op *enc_ops[MAX_BURST];
3230 };
3231
3232 #ifdef RTE_BBDEV_OFFLOAD_COST
3233 /* Stores time statistics */
3234 struct test_time_stats {
3235 /* Stores software enqueue total working time */
3236- uint64_t enq_sw_tot_time;
3237+ uint64_t enq_sw_total_time;
3238 /* Stores minimum value of software enqueue working time */
3239 uint64_t enq_sw_min_time;
3240 /* Stores maximum value of software enqueue working time */
3241 uint64_t enq_sw_max_time;
3242 /* Stores turbo enqueue total working time */
3243- uint64_t enq_tur_tot_time;
3244- /* Stores minimum value of turbo enqueue working time */
3245- uint64_t enq_tur_min_time;
3246- /* Stores maximum value of turbo enqueue working time */
3247- uint64_t enq_tur_max_time;
3248+ uint64_t enq_acc_total_time;
3249+ /* Stores minimum value of accelerator enqueue working time */
3250+ uint64_t enq_acc_min_time;
3251+ /* Stores maximum value of accelerator enqueue working time */
3252+ uint64_t enq_acc_max_time;
3253 /* Stores dequeue total working time */
3254- uint64_t deq_tot_time;
3255+ uint64_t deq_total_time;
3256 /* Stores minimum value of dequeue working time */
3257 uint64_t deq_min_time;
3258 /* Stores maximum value of dequeue working time */
3259@@ -112,6 +139,24 @@ typedef int (test_case_function)(struct active_device *ad,
3260 struct test_op_params *op_params);
3261
3262 static inline void
3263+mbuf_reset(struct rte_mbuf *m)
3264+{
3265+ m->pkt_len = 0;
3266+
3267+ do {
3268+ m->data_len = 0;
3269+ m = m->next;
3270+ } while (m != NULL);
3271+}
3272+
3273+/* Read flag value 0/1 from bitmap */
3274+static inline bool
3275+check_bit(uint32_t bitmap, uint32_t bitmask)
3276+{
3277+ return bitmap & bitmask;
3278+}
3279+
3280+static inline void
3281 set_avail_op(struct active_device *ad, enum rte_bbdev_op_type op_type)
3282 {
3283 ad->supported_ops |= (1 << op_type);
3284@@ -141,12 +186,15 @@ static int
3285 check_dev_cap(const struct rte_bbdev_info *dev_info)
3286 {
3287 unsigned int i;
3288- unsigned int nb_inputs, nb_soft_outputs, nb_hard_outputs;
3289+ unsigned int nb_inputs, nb_soft_outputs, nb_hard_outputs,
3290+ nb_harq_inputs, nb_harq_outputs;
3291 const struct rte_bbdev_op_cap *op_cap = dev_info->drv.capabilities;
3292
3293 nb_inputs = test_vector.entries[DATA_INPUT].nb_segments;
3294 nb_soft_outputs = test_vector.entries[DATA_SOFT_OUTPUT].nb_segments;
3295 nb_hard_outputs = test_vector.entries[DATA_HARD_OUTPUT].nb_segments;
3296+ nb_harq_inputs = test_vector.entries[DATA_HARQ_INPUT].nb_segments;
3297+ nb_harq_outputs = test_vector.entries[DATA_HARQ_OUTPUT].nb_segments;
3298
3299 for (i = 0; op_cap->type != RTE_BBDEV_OP_NONE; ++i, ++op_cap) {
3300 if (op_cap->type != test_vector.op_type)
3301@@ -163,7 +211,7 @@ check_dev_cap(const struct rte_bbdev_info *dev_info)
3302 !(cap->capability_flags &
3303 RTE_BBDEV_TURBO_SOFT_OUTPUT)) {
3304 printf(
3305- "WARNING: Device \"%s\" does not support soft output - soft output flags will be ignored.\n",
3306+ "INFO: Device \"%s\" does not support soft output - soft output flags will be ignored.\n",
3307 dev_info->dev_name);
3308 clear_soft_out_cap(
3309 &test_vector.turbo_dec.op_flags);
3310@@ -216,7 +264,35 @@ check_dev_cap(const struct rte_bbdev_info *dev_info)
3311 if (nb_hard_outputs > cap->num_buffers_dst) {
3312 printf(
3313 "Too many hard outputs defined: %u, max: %u\n",
3314- nb_hard_outputs, cap->num_buffers_src);
3315+ nb_hard_outputs, cap->num_buffers_dst);
3316+ return TEST_FAILED;
3317+ }
3318+ if (intr_enabled && !(cap->capability_flags &
3319+ RTE_BBDEV_TURBO_ENC_INTERRUPTS)) {
3320+ printf(
3321+ "Dequeue interrupts are not supported!\n");
3322+ return TEST_FAILED;
3323+ }
3324+
3325+ return TEST_SUCCESS;
3326+ } else if (op_cap->type == RTE_BBDEV_OP_LDPC_ENC) {
3327+ const struct rte_bbdev_op_cap_ldpc_enc *cap =
3328+ &op_cap->cap.ldpc_enc;
3329+
3330+ if (!flags_match(test_vector.ldpc_enc.op_flags,
3331+ cap->capability_flags)){
3332+ printf("Flag Mismatch\n");
3333+ return TEST_FAILED;
3334+ }
3335+ if (nb_inputs > cap->num_buffers_src) {
3336+ printf("Too many inputs defined: %u, max: %u\n",
3337+ nb_inputs, cap->num_buffers_src);
3338+ return TEST_FAILED;
3339+ }
3340+ if (nb_hard_outputs > cap->num_buffers_dst) {
3341+ printf(
3342+ "Too many hard outputs defined: %u, max: %u\n",
3343+ nb_hard_outputs, cap->num_buffers_dst);
3344 return TEST_FAILED;
3345 }
3346 if (intr_enabled && !(cap->capability_flags &
3347@@ -227,6 +303,49 @@ check_dev_cap(const struct rte_bbdev_info *dev_info)
3348 }
3349
3350 return TEST_SUCCESS;
3351+ } else if (op_cap->type == RTE_BBDEV_OP_LDPC_DEC) {
3352+ const struct rte_bbdev_op_cap_ldpc_dec *cap =
3353+ &op_cap->cap.ldpc_dec;
3354+
3355+ if (!flags_match(test_vector.ldpc_dec.op_flags,
3356+ cap->capability_flags)){
3357+ printf("Flag Mismatch\n");
3358+ return TEST_FAILED;
3359+ }
3360+ if (nb_inputs > cap->num_buffers_src) {
3361+ printf("Too many inputs defined: %u, max: %u\n",
3362+ nb_inputs, cap->num_buffers_src);
3363+ return TEST_FAILED;
3364+ }
3365+ if (nb_hard_outputs > cap->num_buffers_hard_out) {
3366+ printf(
3367+ "Too many hard outputs defined: %u, max: %u\n",
3368+ nb_hard_outputs,
3369+ cap->num_buffers_hard_out);
3370+ return TEST_FAILED;
3371+ }
3372+ if (nb_harq_inputs > cap->num_buffers_hard_out) {
3373+ printf(
3374+ "Too many HARQ inputs defined: %u, max: %u\n",
3375+ nb_hard_outputs,
3376+ cap->num_buffers_hard_out);
3377+ return TEST_FAILED;
3378+ }
3379+ if (nb_harq_outputs > cap->num_buffers_hard_out) {
3380+ printf(
3381+ "Too many HARQ outputs defined: %u, max: %u\n",
3382+ nb_hard_outputs,
3383+ cap->num_buffers_hard_out);
3384+ return TEST_FAILED;
3385+ }
3386+ if (intr_enabled && !(cap->capability_flags &
3387+ RTE_BBDEV_TURBO_DEC_INTERRUPTS)) {
3388+ printf(
3389+ "Dequeue interrupts are not supported!\n");
3390+ return TEST_FAILED;
3391+ }
3392+
3393+ return TEST_SUCCESS;
3394 }
3395 }
3396
3397@@ -280,6 +399,10 @@ create_mempools(struct active_device *ad, int socket_id,
3398 &test_vector.entries[DATA_HARD_OUTPUT];
3399 struct op_data_entries *soft_out =
3400 &test_vector.entries[DATA_SOFT_OUTPUT];
3401+ struct op_data_entries *harq_in =
3402+ &test_vector.entries[DATA_HARQ_INPUT];
3403+ struct op_data_entries *harq_out =
3404+ &test_vector.entries[DATA_HARQ_OUTPUT];
3405
3406 /* allocate ops mempool */
3407 ops_pool_size = optimal_mempool_size(RTE_MAX(
3408@@ -333,22 +456,53 @@ create_mempools(struct active_device *ad, int socket_id,
3409 socket_id);
3410 ad->hard_out_mbuf_pool = mp;
3411
3412- if (soft_out->nb_segments == 0)
3413- return TEST_SUCCESS;
3414
3415 /* Soft outputs */
3416- mbuf_pool_size = optimal_mempool_size(ops_pool_size *
3417- soft_out->nb_segments);
3418- mp = create_mbuf_pool(soft_out, ad->dev_id, socket_id, mbuf_pool_size,
3419- "soft_out");
3420- TEST_ASSERT_NOT_NULL(mp,
3421- "ERROR Failed to create %uB soft output pktmbuf pool for dev %u on socket %u.",
3422- mbuf_pool_size,
3423- ad->dev_id,
3424- socket_id);
3425- ad->soft_out_mbuf_pool = mp;
3426+ if (soft_out->nb_segments > 0) {
3427+ mbuf_pool_size = optimal_mempool_size(ops_pool_size *
3428+ soft_out->nb_segments);
3429+ mp = create_mbuf_pool(soft_out, ad->dev_id, socket_id,
3430+ mbuf_pool_size,
3431+ "soft_out");
3432+ TEST_ASSERT_NOT_NULL(mp,
3433+ "ERROR Failed to create %uB soft output pktmbuf pool for dev %u on socket %u.",
3434+ mbuf_pool_size,
3435+ ad->dev_id,
3436+ socket_id);
3437+ ad->soft_out_mbuf_pool = mp;
3438+ }
3439
3440- return 0;
3441+ /* HARQ inputs */
3442+ if (harq_in->nb_segments > 0) {
3443+ mbuf_pool_size = optimal_mempool_size(ops_pool_size *
3444+ harq_in->nb_segments);
3445+ mp = create_mbuf_pool(harq_in, ad->dev_id, socket_id,
3446+ mbuf_pool_size,
3447+ "harq_in");
3448+ TEST_ASSERT_NOT_NULL(mp,
3449+ "ERROR Failed to create %uB harq input pktmbuf pool for dev %u on socket %u.",
3450+ mbuf_pool_size,
3451+ ad->dev_id,
3452+ socket_id);
3453+ ad->harq_in_mbuf_pool = mp;
3454+ }
3455+
3456+ /* HARQ outputs */
3457+ if (harq_out->nb_segments > 0) {
3458+ mbuf_pool_size = optimal_mempool_size(ops_pool_size *
3459+ harq_out->nb_segments);
3460+ mp = create_mbuf_pool(harq_out, ad->dev_id, socket_id,
3461+ mbuf_pool_size,
3462+ "harq_out");
3463+ TEST_ASSERT_NOT_NULL(mp,
3464+ "ERROR Failed to create %uB harq output pktmbuf pool for dev %u on socket %u.",
3465+ mbuf_pool_size,
3466+ ad->dev_id,
3467+ socket_id);
3468+ ad->harq_out_mbuf_pool = mp;
3469+ }
3470+
3471+ return TEST_SUCCESS;
3472 }
3473
3474 static int
3475@@ -362,7 +516,56 @@ add_bbdev_dev(uint8_t dev_id, struct rte_bbdev_info *info,
3476 unsigned int nb_queues;
3477 enum rte_bbdev_op_type op_type = vector->op_type;
3478
3479+/* Configure fpga lte fec with PF & VF values
3480+ * if '-i' flag is set and using fpga device
3481+ */
3482+#ifdef RTE_LIBRTE_PMD_BBDEV_FPGA_LTE_FEC
3483+ if ((get_init_device() == true) &&
3484+ (!strcmp(info->drv.driver_name, FPGA_PF_DRIVER_NAME))) {
3485+ struct fpga_lte_fec_conf conf;
3486+ unsigned int i;
3487+
3488+ printf("Configure FPGA FEC Driver %s with default values\n",
3489+ info->drv.driver_name);
3490+
3491+ /* clear default configuration before initialization */
3492+ memset(&conf, 0, sizeof(struct fpga_lte_fec_conf));
3493+
3494+ /* Set PF mode :
3495+ * true if PF is used for data plane
3496+ * false for VFs
3497+ */
3498+ conf.pf_mode_en = true;
3499+
3500+ for (i = 0; i < FPGA_LTE_FEC_NUM_VFS; ++i) {
3501+ /* Number of UL queues per VF (fpga supports 8 VFs) */
3502+ conf.vf_ul_queues_number[i] = VF_UL_QUEUE_VALUE;
3503+ /* Number of DL queues per VF (fpga supports 8 VFs) */
3504+ conf.vf_dl_queues_number[i] = VF_DL_QUEUE_VALUE;
3505+ }
3506+
3507+ /* UL bandwidth. Needed for schedule algorithm */
3508+ conf.ul_bandwidth = UL_BANDWIDTH;
3509+ /* DL bandwidth */
3510+ conf.dl_bandwidth = DL_BANDWIDTH;
3511+
3512+ /* UL & DL load Balance Factor to 64 */
3513+ conf.ul_load_balance = UL_LOAD_BALANCE;
3514+ conf.dl_load_balance = DL_LOAD_BALANCE;
3515+
3516+ /**< FLR timeout value */
3517+ conf.flr_time_out = FLR_TIMEOUT;
3518+
3519+ /* setup FPGA PF with configuration information */
3520+ ret = fpga_lte_fec_configure(info->dev_name, &conf);
3521+ TEST_ASSERT_SUCCESS(ret,
3522+ "Failed to configure 4G FPGA PF for bbdev %s",
3523+ info->dev_name);
3524+ }
3525+#endif
3526 nb_queues = RTE_MIN(rte_lcore_count(), info->drv.max_num_queues);
3527+ nb_queues = RTE_MIN(nb_queues, (unsigned int) MAX_QUEUES);
3528+
3529 /* setup device */
3530 ret = rte_bbdev_setup_queues(dev_id, nb_queues, info->socket_id);
3531 if (ret < 0) {
3532@@ -571,11 +774,15 @@ init_op_data_objs(struct rte_bbdev_op_data *bufs,
3533 op_type, n * ref_entries->nb_segments,
3534 mbuf_pool->size);
3535
3536+ TEST_ASSERT_SUCCESS(((seg->length + RTE_PKTMBUF_HEADROOM) >
3537+ (uint32_t)UINT16_MAX),
3538+ "Given data is bigger than allowed mbuf segment size");
3539+
3540 bufs[i].data = m_head;
3541 bufs[i].offset = 0;
3542 bufs[i].length = 0;
3543
3544- if (op_type == DATA_INPUT) {
3545+ if ((op_type == DATA_INPUT) || (op_type == DATA_HARQ_INPUT)) {
3546 data = rte_pktmbuf_append(m_head, seg->length);
3547 TEST_ASSERT_NOT_NULL(data,
3548 "Couldn't append %u bytes to mbuf from %d data type mbuf pool",
3549@@ -587,7 +794,6 @@ init_op_data_objs(struct rte_bbdev_op_data *bufs,
3550 rte_memcpy(data, seg->addr, seg->length);
3551 bufs[i].length += seg->length;
3552
3553-
3554 for (j = 1; j < ref_entries->nb_segments; ++j) {
3555 struct rte_mbuf *m_tail =
3556 rte_pktmbuf_alloc(mbuf_pool);
3557@@ -615,6 +821,23 @@ init_op_data_objs(struct rte_bbdev_op_data *bufs,
3558 "Couldn't chain mbufs from %d data type mbuf pool",
3559 op_type);
3560 }
3561+ } else {
3562+
3563+ /* allocate chained-mbuf for output buffer */
3564+ for (j = 1; j < ref_entries->nb_segments; ++j) {
3565+ struct rte_mbuf *m_tail =
3566+ rte_pktmbuf_alloc(mbuf_pool);
3567+ TEST_ASSERT_NOT_NULL(m_tail,
3568+ "Not enough mbufs in %d data type mbuf pool (needed %u, available %u)",
3569+ op_type,
3570+ n * ref_entries->nb_segments,
3571+ mbuf_pool->size);
3572+
3573+ ret = rte_pktmbuf_chain(m_head, m_tail);
3574+ TEST_ASSERT_SUCCESS(ret,
3575+ "Couldn't chain mbufs from %d data type mbuf pool",
3576+ op_type);
3577+ }
3578 }
3579 }
3580
3581@@ -644,7 +867,7 @@ allocate_buffers_on_socket(struct rte_bbdev_op_data **buffers, const int len,
3582
3583 static void
3584 limit_input_llr_val_range(struct rte_bbdev_op_data *input_ops,
3585- uint16_t n, int8_t max_llr_modulus)
3586+ const uint16_t n, const int8_t max_llr_modulus)
3587 {
3588 uint16_t i, byte_idx;
3589
3590@@ -653,7 +876,7 @@ limit_input_llr_val_range(struct rte_bbdev_op_data *input_ops,
3591 while (m != NULL) {
3592 int8_t *llr = rte_pktmbuf_mtod_offset(m, int8_t *,
3593 input_ops[i].offset);
3594- for (byte_idx = 0; byte_idx < input_ops[i].length;
3595+ for (byte_idx = 0; byte_idx < rte_pktmbuf_data_len(m);
3596 ++byte_idx)
3597 llr[byte_idx] = round((double)max_llr_modulus *
3598 llr[byte_idx] / INT8_MAX);
3599@@ -663,10 +886,50 @@ limit_input_llr_val_range(struct rte_bbdev_op_data *input_ops,
3600 }
3601 }
3602
3603+static void
3604+ldpc_input_llr_scaling(struct rte_bbdev_op_data *input_ops,
3605+ const uint16_t n, const int8_t llr_size,
3606+ const int8_t llr_decimals)
3607+{
3608+ if (input_ops == NULL)
3609+ return;
3610+
3611+ uint16_t i, byte_idx;
3612+
3613+ int16_t llr_max, llr_min, llr_tmp;
3614+ llr_max = (1 << (llr_size - 1)) - 1;
3615+ llr_min = -llr_max;
3616+ for (i = 0; i < n; ++i) {
3617+ struct rte_mbuf *m = input_ops[i].data;
3618+ while (m != NULL) {
3619+ int8_t *llr = rte_pktmbuf_mtod_offset(m, int8_t *,
3620+ input_ops[i].offset);
3621+ for (byte_idx = 0; byte_idx < rte_pktmbuf_data_len(m);
3622+ ++byte_idx) {
3623+
3624+ llr_tmp = llr[byte_idx];
3625+ if (llr_decimals == 2)
3626+ llr_tmp *= 2;
3627+ else if (llr_decimals == 0)
3628+ llr_tmp /= 2;
3629+ llr_tmp = RTE_MIN(llr_max,
3630+ RTE_MAX(llr_min, llr_tmp));
3631+ llr[byte_idx] = (int8_t) llr_tmp;
3632+ }
3633+
3634+ m = m->next;
3635+ }
3636+ }
3637+}
3638+
3639+
3640+
3641 static int
3642 fill_queue_buffers(struct test_op_params *op_params,
3643 struct rte_mempool *in_mp, struct rte_mempool *hard_out_mp,
3644- struct rte_mempool *soft_out_mp, uint16_t queue_id,
3645+ struct rte_mempool *soft_out_mp,
3646+ struct rte_mempool *harq_in_mp, struct rte_mempool *harq_out_mp,
3647+ uint16_t queue_id,
3648 const struct rte_bbdev_op_cap *capabilities,
3649 uint16_t min_alignment, const int socket_id)
3650 {
3651@@ -678,12 +941,16 @@ fill_queue_buffers(struct test_op_params *op_params,
3652 in_mp,
3653 soft_out_mp,
3654 hard_out_mp,
3655+ harq_in_mp,
3656+ harq_out_mp,
3657 };
3658
3659 struct rte_bbdev_op_data **queue_ops[DATA_NUM_TYPES] = {
3660 &op_params->q_bufs[socket_id][queue_id].inputs,
3661 &op_params->q_bufs[socket_id][queue_id].soft_outputs,
3662 &op_params->q_bufs[socket_id][queue_id].hard_outputs,
3663+ &op_params->q_bufs[socket_id][queue_id].harq_inputs,
3664+ &op_params->q_bufs[socket_id][queue_id].harq_outputs,
3665 };
3666
3667 for (type = DATA_INPUT; type < DATA_NUM_TYPES; ++type) {
3668@@ -708,6 +975,15 @@ fill_queue_buffers(struct test_op_params *op_params,
3669 limit_input_llr_val_range(*queue_ops[DATA_INPUT], n,
3670 capabilities->cap.turbo_dec.max_llr_modulus);
3671
3672+ if (test_vector.op_type == RTE_BBDEV_OP_LDPC_DEC) {
3673+ ldpc_input_llr_scaling(*queue_ops[DATA_INPUT], n,
3674+ capabilities->cap.ldpc_dec.llr_size,
3675+ capabilities->cap.ldpc_dec.llr_decimals);
3676+ ldpc_input_llr_scaling(*queue_ops[DATA_HARQ_INPUT], n,
3677+ capabilities->cap.ldpc_dec.llr_size,
3678+ capabilities->cap.ldpc_dec.llr_decimals);
3679+ }
3680+
3681 return 0;
3682 }
3683
3684@@ -720,12 +996,16 @@ free_buffers(struct active_device *ad, struct test_op_params *op_params)
3685 rte_mempool_free(ad->in_mbuf_pool);
3686 rte_mempool_free(ad->hard_out_mbuf_pool);
3687 rte_mempool_free(ad->soft_out_mbuf_pool);
3688+ rte_mempool_free(ad->harq_in_mbuf_pool);
3689+ rte_mempool_free(ad->harq_out_mbuf_pool);
3690
3691 for (i = 0; i < rte_lcore_count(); ++i) {
3692 for (j = 0; j < RTE_MAX_NUMA_NODES; ++j) {
3693 rte_free(op_params->q_bufs[j][i].inputs);
3694 rte_free(op_params->q_bufs[j][i].hard_outputs);
3695 rte_free(op_params->q_bufs[j][i].soft_outputs);
3696+ rte_free(op_params->q_bufs[j][i].harq_inputs);
3697+ rte_free(op_params->q_bufs[j][i].harq_outputs);
3698 }
3699 }
3700 }
3701@@ -757,6 +1037,8 @@ copy_reference_dec_op(struct rte_bbdev_dec_op **ops, unsigned int n,
3702 turbo_dec->tb_params.c_neg;
3703 ops[i]->turbo_dec.tb_params.cab =
3704 turbo_dec->tb_params.cab;
3705+ ops[i]->turbo_dec.tb_params.r =
3706+ turbo_dec->tb_params.r;
3707 } else {
3708 ops[i]->turbo_dec.cb_params.e = turbo_dec->cb_params.e;
3709 ops[i]->turbo_dec.cb_params.k = turbo_dec->cb_params.k;
3710@@ -823,6 +1105,93 @@ copy_reference_enc_op(struct rte_bbdev_enc_op **ops, unsigned int n,
3711 }
3712 }
3713
3714+static void
3715+copy_reference_ldpc_dec_op(struct rte_bbdev_dec_op **ops, unsigned int n,
3716+ unsigned int start_idx,
3717+ struct rte_bbdev_op_data *inputs,
3718+ struct rte_bbdev_op_data *hard_outputs,
3719+ struct rte_bbdev_op_data *soft_outputs,
3720+ struct rte_bbdev_op_data *harq_inputs,
3721+ struct rte_bbdev_op_data *harq_outputs,
3722+ struct rte_bbdev_dec_op *ref_op)
3723+{
3724+ unsigned int i;
3725+ struct rte_bbdev_op_ldpc_dec *ldpc_dec = &ref_op->ldpc_dec;
3726+
3727+ for (i = 0; i < n; ++i) {
3728+ if (ldpc_dec->code_block_mode == 0) {
3729+ ops[i]->ldpc_dec.tb_params.ea =
3730+ ldpc_dec->tb_params.ea;
3731+ ops[i]->ldpc_dec.tb_params.eb =
3732+ ldpc_dec->tb_params.eb;
3733+ ops[i]->ldpc_dec.tb_params.c =
3734+ ldpc_dec->tb_params.c;
3735+ ops[i]->ldpc_dec.tb_params.cab =
3736+ ldpc_dec->tb_params.cab;
3737+ ops[i]->ldpc_dec.tb_params.r =
3738+ ldpc_dec->tb_params.r;
3739+ } else {
3740+ ops[i]->ldpc_dec.cb_params.e = ldpc_dec->cb_params.e;
3741+ }
3742+
3743+ ops[i]->ldpc_dec.basegraph = ldpc_dec->basegraph;
3744+ ops[i]->ldpc_dec.z_c = ldpc_dec->z_c;
3745+ ops[i]->ldpc_dec.q_m = ldpc_dec->q_m;
3746+ ops[i]->ldpc_dec.n_filler = ldpc_dec->n_filler;
3747+ ops[i]->ldpc_dec.n_cb = ldpc_dec->n_cb;
3748+ ops[i]->ldpc_dec.iter_max = ldpc_dec->iter_max;
3749+ ops[i]->ldpc_dec.rv_index = ldpc_dec->rv_index;
3750+ ops[i]->ldpc_dec.op_flags = ldpc_dec->op_flags;
3751+ ops[i]->ldpc_dec.code_block_mode = ldpc_dec->code_block_mode;
3752+
3753+ ops[i]->ldpc_dec.hard_output = hard_outputs[start_idx + i];
3754+ ops[i]->ldpc_dec.input = inputs[start_idx + i];
3755+ if (soft_outputs != NULL)
3756+ ops[i]->ldpc_dec.soft_output =
3757+ soft_outputs[start_idx + i];
3758+ if (harq_inputs != NULL)
3759+ ops[i]->ldpc_dec.harq_combined_input =
3760+ harq_inputs[start_idx + i];
3761+ if (harq_outputs != NULL)
3762+ ops[i]->ldpc_dec.harq_combined_output =
3763+ harq_outputs[start_idx + i];
3764+ }
3765+}
3766+
3767+
3768+static void
3769+copy_reference_ldpc_enc_op(struct rte_bbdev_enc_op **ops, unsigned int n,
3770+ unsigned int start_idx,
3771+ struct rte_bbdev_op_data *inputs,
3772+ struct rte_bbdev_op_data *outputs,
3773+ struct rte_bbdev_enc_op *ref_op)
3774+{
3775+ unsigned int i;
3776+ struct rte_bbdev_op_ldpc_enc *ldpc_enc = &ref_op->ldpc_enc;
3777+ for (i = 0; i < n; ++i) {
3778+ if (ldpc_enc->code_block_mode == 0) {
3779+ ops[i]->ldpc_enc.tb_params.ea = ldpc_enc->tb_params.ea;
3780+ ops[i]->ldpc_enc.tb_params.eb = ldpc_enc->tb_params.eb;
3781+ ops[i]->ldpc_enc.tb_params.cab =
3782+ ldpc_enc->tb_params.cab;
3783+ ops[i]->ldpc_enc.tb_params.c = ldpc_enc->tb_params.c;
3784+ ops[i]->ldpc_enc.tb_params.r = ldpc_enc->tb_params.r;
3785+ } else {
3786+ ops[i]->ldpc_enc.cb_params.e = ldpc_enc->cb_params.e;
3787+ }
3788+ ops[i]->ldpc_enc.basegraph = ldpc_enc->basegraph;
3789+ ops[i]->ldpc_enc.z_c = ldpc_enc->z_c;
3790+ ops[i]->ldpc_enc.q_m = ldpc_enc->q_m;
3791+ ops[i]->ldpc_enc.n_filler = ldpc_enc->n_filler;
3792+ ops[i]->ldpc_enc.n_cb = ldpc_enc->n_cb;
3793+ ops[i]->ldpc_enc.rv_index = ldpc_enc->rv_index;
3794+ ops[i]->ldpc_enc.op_flags = ldpc_enc->op_flags;
3795+ ops[i]->ldpc_enc.code_block_mode = ldpc_enc->code_block_mode;
3796+ ops[i]->ldpc_enc.output = outputs[start_idx + i];
3797+ ops[i]->ldpc_enc.input = inputs[start_idx + i];
3798+ }
3799+}
3800+
3801 static int
3802 check_dec_status_and_ordering(struct rte_bbdev_dec_op *op,
3803 unsigned int order_idx, const int expected_status)
3804@@ -860,15 +1229,18 @@ validate_op_chain(struct rte_bbdev_op_data *op,
3805 uint8_t i;
3806 struct rte_mbuf *m = op->data;
3807 uint8_t nb_dst_segments = orig_op->nb_segments;
3808+ uint32_t total_data_size = 0;
3809
3810 TEST_ASSERT(nb_dst_segments == m->nb_segs,
3811 "Number of segments differ in original (%u) and filled (%u) op",
3812 nb_dst_segments, m->nb_segs);
3813
3814+ /* Validate each mbuf segment length */
3815 for (i = 0; i < nb_dst_segments; ++i) {
3816 /* Apply offset to the first mbuf segment */
3817 uint16_t offset = (i == 0) ? op->offset : 0;
3818- uint16_t data_len = m->data_len - offset;
3819+ uint16_t data_len = rte_pktmbuf_data_len(m) - offset;
3820+ total_data_size += orig_op->segments[i].length;
3821
3822 TEST_ASSERT(orig_op->segments[i].length == data_len,
3823 "Length of segment differ in original (%u) and filled (%u) op",
3824@@ -880,52 +1252,61 @@ validate_op_chain(struct rte_bbdev_op_data *op,
3825 m = m->next;
3826 }
3827
3828+ /* Validate total mbuf pkt length */
3829+ uint32_t pkt_len = rte_pktmbuf_pkt_len(op->data) - op->offset;
3830+ TEST_ASSERT(total_data_size == pkt_len,
3831+ "Length of data differ in original (%u) and filled (%u) op",
3832+ total_data_size, pkt_len);
3833+
3834 return TEST_SUCCESS;
3835 }
3836
3837 static int
3838-validate_dec_buffers(struct rte_bbdev_dec_op *ref_op, struct test_buffers *bufs,
3839- const uint16_t num_to_process)
3840+validate_dec_op(struct rte_bbdev_dec_op **ops, const uint16_t n,
3841+ struct rte_bbdev_dec_op *ref_op, const int vector_mask)
3842 {
3843- int i;
3844-
3845+ unsigned int i;
3846+ int ret;
3847 struct op_data_entries *hard_data_orig =
3848 &test_vector.entries[DATA_HARD_OUTPUT];
3849 struct op_data_entries *soft_data_orig =
3850 &test_vector.entries[DATA_SOFT_OUTPUT];
3851+ struct rte_bbdev_op_turbo_dec *ops_td;
3852+ struct rte_bbdev_op_data *hard_output;
3853+ struct rte_bbdev_op_data *soft_output;
3854+ struct rte_bbdev_op_turbo_dec *ref_td = &ref_op->turbo_dec;
3855+
3856+ for (i = 0; i < n; ++i) {
3857+ ops_td = &ops[i]->turbo_dec;
3858+ hard_output = &ops_td->hard_output;
3859+ soft_output = &ops_td->soft_output;
3860+
3861+ if (vector_mask & TEST_BBDEV_VF_EXPECTED_ITER_COUNT)
3862+ TEST_ASSERT(ops_td->iter_count <= ref_td->iter_count,
3863+ "Returned iter_count (%d) > expected iter_count (%d)",
3864+ ops_td->iter_count, ref_td->iter_count);
3865+ ret = check_dec_status_and_ordering(ops[i], i, ref_op->status);
3866+ TEST_ASSERT_SUCCESS(ret,
3867+ "Checking status and ordering for decoder failed");
3868
3869- for (i = 0; i < num_to_process; i++) {
3870- TEST_ASSERT_SUCCESS(validate_op_chain(&bufs->hard_outputs[i],
3871+ TEST_ASSERT_SUCCESS(validate_op_chain(hard_output,
3872 hard_data_orig),
3873- "Hard output buffers are not equal");
3874- if (ref_op->turbo_dec.op_flags &
3875- RTE_BBDEV_TURBO_SOFT_OUTPUT)
3876- TEST_ASSERT_SUCCESS(validate_op_chain(
3877- &bufs->soft_outputs[i],
3878+ "Hard output buffers (CB=%u) are not equal",
3879+ i);
3880+
3881+ if (ref_op->turbo_dec.op_flags & RTE_BBDEV_TURBO_SOFT_OUTPUT)
3882+ TEST_ASSERT_SUCCESS(validate_op_chain(soft_output,
3883 soft_data_orig),
3884- "Soft output buffers are not equal");
3885+ "Soft output buffers (CB=%u) are not equal",
3886+ i);
3887 }
3888
3889 return TEST_SUCCESS;
3890 }
3891
3892-static int
3893-validate_enc_buffers(struct test_buffers *bufs, const uint16_t num_to_process)
3894-{
3895- int i;
3896-
3897- struct op_data_entries *hard_data_orig =
3898- &test_vector.entries[DATA_HARD_OUTPUT];
3899-
3900- for (i = 0; i < num_to_process; i++)
3901- TEST_ASSERT_SUCCESS(validate_op_chain(&bufs->hard_outputs[i],
3902- hard_data_orig), "");
3903-
3904- return TEST_SUCCESS;
3905-}
3906
3907 static int
3908-validate_dec_op(struct rte_bbdev_dec_op **ops, const uint16_t n,
3909+validate_ldpc_dec_op(struct rte_bbdev_dec_op **ops, const uint16_t n,
3910 struct rte_bbdev_dec_op *ref_op, const int vector_mask)
3911 {
3912 unsigned int i;
3913@@ -934,39 +1315,53 @@ validate_dec_op(struct rte_bbdev_dec_op **ops, const uint16_t n,
3914 &test_vector.entries[DATA_HARD_OUTPUT];
3915 struct op_data_entries *soft_data_orig =
3916 &test_vector.entries[DATA_SOFT_OUTPUT];
3917- struct rte_bbdev_op_turbo_dec *ops_td;
3918+ struct op_data_entries *harq_data_orig =
3919+ &test_vector.entries[DATA_HARQ_OUTPUT];
3920+ struct rte_bbdev_op_ldpc_dec *ops_td;
3921 struct rte_bbdev_op_data *hard_output;
3922+ struct rte_bbdev_op_data *harq_output;
3923 struct rte_bbdev_op_data *soft_output;
3924- struct rte_bbdev_op_turbo_dec *ref_td = &ref_op->turbo_dec;
3925+ struct rte_bbdev_op_ldpc_dec *ref_td = &ref_op->ldpc_dec;
3926
3927 for (i = 0; i < n; ++i) {
3928- ops_td = &ops[i]->turbo_dec;
3929+ ops_td = &ops[i]->ldpc_dec;
3930 hard_output = &ops_td->hard_output;
3931+ harq_output = &ops_td->harq_combined_output;
3932 soft_output = &ops_td->soft_output;
3933
3934+ ret = check_dec_status_and_ordering(ops[i], i, ref_op->status);
3935+ TEST_ASSERT_SUCCESS(ret,
3936+ "Checking status and ordering for decoder failed");
3937 if (vector_mask & TEST_BBDEV_VF_EXPECTED_ITER_COUNT)
3938 TEST_ASSERT(ops_td->iter_count <= ref_td->iter_count,
3939 "Returned iter_count (%d) > expected iter_count (%d)",
3940 ops_td->iter_count, ref_td->iter_count);
3941- ret = check_dec_status_and_ordering(ops[i], i, ref_op->status);
3942- TEST_ASSERT_SUCCESS(ret,
3943- "Checking status and ordering for decoder failed");
3944-
3945- TEST_ASSERT_SUCCESS(validate_op_chain(hard_output,
3946- hard_data_orig),
3947- "Hard output buffers (CB=%u) are not equal",
3948- i);
3949+ /* We can ignore data when the decoding failed to converge */
3950+ if ((ops[i]->status & (1 << RTE_BBDEV_SYNDROME_ERROR)) == 0)
3951+ TEST_ASSERT_SUCCESS(validate_op_chain(hard_output,
3952+ hard_data_orig),
3953+ "Hard output buffers (CB=%u) are not equal",
3954+ i);
3955
3956- if (ref_op->turbo_dec.op_flags & RTE_BBDEV_TURBO_SOFT_OUTPUT)
3957+ if (ref_op->ldpc_dec.op_flags & RTE_BBDEV_LDPC_SOFT_OUT_ENABLE)
3958 TEST_ASSERT_SUCCESS(validate_op_chain(soft_output,
3959 soft_data_orig),
3960 "Soft output buffers (CB=%u) are not equal",
3961 i);
3962+ if (ref_op->ldpc_dec.op_flags &
3963+ RTE_BBDEV_LDPC_HQ_COMBINE_OUT_ENABLE) {
3964+ ldpc_input_llr_scaling(harq_output, 1, 8, 0);
3965+ TEST_ASSERT_SUCCESS(validate_op_chain(harq_output,
3966+ harq_data_orig),
3967+ "HARQ output buffers (CB=%u) are not equal",
3968+ i);
3969+ }
3970 }
3971
3972 return TEST_SUCCESS;
3973 }
3974
3975+
3976 static int
3977 validate_enc_op(struct rte_bbdev_enc_op **ops, const uint16_t n,
3978 struct rte_bbdev_enc_op *ref_op)
3979@@ -990,6 +1385,29 @@ validate_enc_op(struct rte_bbdev_enc_op **ops, const uint16_t n,
3980 return TEST_SUCCESS;
3981 }
3982
3983+static int
3984+validate_ldpc_enc_op(struct rte_bbdev_enc_op **ops, const uint16_t n,
3985+ struct rte_bbdev_enc_op *ref_op)
3986+{
3987+ unsigned int i;
3988+ int ret;
3989+ struct op_data_entries *hard_data_orig =
3990+ &test_vector.entries[DATA_HARD_OUTPUT];
3991+
3992+ for (i = 0; i < n; ++i) {
3993+ ret = check_enc_status_and_ordering(ops[i], i, ref_op->status);
3994+ TEST_ASSERT_SUCCESS(ret,
3995+ "Checking status and ordering for encoder failed");
3996+ TEST_ASSERT_SUCCESS(validate_op_chain(
3997+ &ops[i]->ldpc_enc.output,
3998+ hard_data_orig),
3999+ "Output buffers (CB=%u) are not equal",
4000+ i);
4001+ }
4002+
4003+ return TEST_SUCCESS;
4004+}
4005+
4006 static void
4007 create_reference_dec_op(struct rte_bbdev_dec_op *op)
4008 {
4009@@ -1004,26 +1422,138 @@ create_reference_dec_op(struct rte_bbdev_dec_op *op)
4010 }
4011
4012 static void
4013-create_reference_enc_op(struct rte_bbdev_enc_op *op)
4014+create_reference_ldpc_dec_op(struct rte_bbdev_dec_op *op)
4015 {
4016 unsigned int i;
4017 struct op_data_entries *entry;
4018
4019- op->turbo_enc = test_vector.turbo_enc;
4020+ op->ldpc_dec = test_vector.ldpc_dec;
4021 entry = &test_vector.entries[DATA_INPUT];
4022 for (i = 0; i < entry->nb_segments; ++i)
4023- op->turbo_enc.input.length +=
4024+ op->ldpc_dec.input.length +=
4025+ entry->segments[i].length;
4026+ if (test_vector.ldpc_dec.op_flags &
4027+ RTE_BBDEV_LDPC_HQ_COMBINE_IN_ENABLE) {
4028+ entry = &test_vector.entries[DATA_HARQ_INPUT];
4029+ for (i = 0; i < entry->nb_segments; ++i)
4030+ op->ldpc_dec.harq_combined_input.length +=
4031 entry->segments[i].length;
4032+ }
4033 }
4034
4035-static int
4036-init_test_op_params(struct test_op_params *op_params,
4037- enum rte_bbdev_op_type op_type, const int expected_status,
4038- const int vector_mask, struct rte_mempool *ops_mp,
4039- uint16_t burst_sz, uint16_t num_to_process, uint16_t num_lcores)
4040-{
4041- int ret = 0;
4042- if (op_type == RTE_BBDEV_OP_TURBO_DEC)
4043+
4044+static void
4045+create_reference_enc_op(struct rte_bbdev_enc_op *op)
4046+{
4047+ unsigned int i;
4048+ struct op_data_entries *entry;
4049+
4050+ op->turbo_enc = test_vector.turbo_enc;
4051+ entry = &test_vector.entries[DATA_INPUT];
4052+ for (i = 0; i < entry->nb_segments; ++i)
4053+ op->turbo_enc.input.length +=
4054+ entry->segments[i].length;
4055+}
4056+
4057+static void
4058+create_reference_ldpc_enc_op(struct rte_bbdev_enc_op *op)
4059+{
4060+ unsigned int i;
4061+ struct op_data_entries *entry;
4062+
4063+ op->ldpc_enc = test_vector.ldpc_enc;
4064+ entry = &test_vector.entries[DATA_INPUT];
4065+ for (i = 0; i < entry->nb_segments; ++i)
4066+ op->ldpc_enc.input.length +=
4067+ entry->segments[i].length;
4068+}
4069+
4070+static uint32_t
4071+calc_dec_TB_size(struct rte_bbdev_dec_op *op)
4072+{
4073+ uint8_t i;
4074+ uint32_t c, r, tb_size = 0;
4075+
4076+ if (op->turbo_dec.code_block_mode) {
4077+ tb_size = op->turbo_dec.tb_params.k_neg;
4078+ } else {
4079+ c = op->turbo_dec.tb_params.c;
4080+ r = op->turbo_dec.tb_params.r;
4081+ for (i = 0; i < c-r; i++)
4082+ tb_size += (r < op->turbo_dec.tb_params.c_neg) ?
4083+ op->turbo_dec.tb_params.k_neg :
4084+ op->turbo_dec.tb_params.k_pos;
4085+ }
4086+ return tb_size;
4087+}
4088+
4089+static uint32_t
4090+calc_ldpc_dec_TB_size(struct rte_bbdev_dec_op *op)
4091+{
4092+ uint8_t i;
4093+ uint32_t c, r, tb_size = 0;
4094+ uint16_t sys_cols = (op->ldpc_dec.basegraph == 1) ? 22 : 10;
4095+
4096+ if (op->ldpc_dec.code_block_mode) {
4097+ tb_size = sys_cols * op->ldpc_dec.z_c - op->ldpc_dec.n_filler;
4098+ } else {
4099+ c = op->ldpc_dec.tb_params.c;
4100+ r = op->ldpc_dec.tb_params.r;
4101+ for (i = 0; i < c-r; i++)
4102+ tb_size += sys_cols * op->ldpc_dec.z_c
4103+ - op->ldpc_dec.n_filler;
4104+ }
4105+ return tb_size;
4106+}
4107+
4108+static uint32_t
4109+calc_enc_TB_size(struct rte_bbdev_enc_op *op)
4110+{
4111+ uint8_t i;
4112+ uint32_t c, r, tb_size = 0;
4113+
4114+ if (op->turbo_enc.code_block_mode) {
4115+ tb_size = op->turbo_enc.tb_params.k_neg;
4116+ } else {
4117+ c = op->turbo_enc.tb_params.c;
4118+ r = op->turbo_enc.tb_params.r;
4119+ for (i = 0; i < c-r; i++)
4120+ tb_size += (r < op->turbo_enc.tb_params.c_neg) ?
4121+ op->turbo_enc.tb_params.k_neg :
4122+ op->turbo_enc.tb_params.k_pos;
4123+ }
4124+ return tb_size;
4125+}
4126+
4127+static uint32_t
4128+calc_ldpc_enc_TB_size(struct rte_bbdev_enc_op *op)
4129+{
4130+ uint8_t i;
4131+ uint32_t c, r, tb_size = 0;
4132+ uint16_t sys_cols = (op->ldpc_enc.basegraph == 1) ? 22 : 10;
4133+
4134+ if (op->turbo_enc.code_block_mode) {
4135+ tb_size = sys_cols * op->ldpc_enc.z_c - op->ldpc_enc.n_filler;
4136+ } else {
4137+ c = op->turbo_enc.tb_params.c;
4138+ r = op->turbo_enc.tb_params.r;
4139+ for (i = 0; i < c-r; i++)
4140+ tb_size += sys_cols * op->ldpc_enc.z_c
4141+ - op->ldpc_enc.n_filler;
4142+ }
4143+ return tb_size;
4144+}
4145+
4146+
4147+static int
4148+init_test_op_params(struct test_op_params *op_params,
4149+ enum rte_bbdev_op_type op_type, const int expected_status,
4150+ const int vector_mask, struct rte_mempool *ops_mp,
4151+ uint16_t burst_sz, uint16_t num_to_process, uint16_t num_lcores)
4152+{
4153+ int ret = 0;
4154+ if (op_type == RTE_BBDEV_OP_TURBO_DEC ||
4155+ op_type == RTE_BBDEV_OP_LDPC_DEC)
4156 ret = rte_bbdev_dec_op_alloc_bulk(ops_mp,
4157 &op_params->ref_dec_op, 1);
4158 else
4159@@ -1037,11 +1567,12 @@ init_test_op_params(struct test_op_params *op_params,
4160 op_params->num_to_process = num_to_process;
4161 op_params->num_lcores = num_lcores;
4162 op_params->vector_mask = vector_mask;
4163- if (op_type == RTE_BBDEV_OP_TURBO_DEC)
4164+ if (op_type == RTE_BBDEV_OP_TURBO_DEC ||
4165+ op_type == RTE_BBDEV_OP_LDPC_DEC)
4166 op_params->ref_dec_op->status = expected_status;
4167- else if (op_type == RTE_BBDEV_OP_TURBO_ENC)
4168+ else if (op_type == RTE_BBDEV_OP_TURBO_ENC
4169+ || op_type == RTE_BBDEV_OP_LDPC_ENC)
4170 op_params->ref_enc_op->status = expected_status;
4171-
4172 return 0;
4173 }
4174
4175@@ -1087,27 +1618,35 @@ run_test_case_on_device(test_case_function *test_case_func, uint8_t dev_id,
4176 goto fail;
4177 }
4178
4179- if (test_vector.op_type == RTE_BBDEV_OP_TURBO_DEC) {
4180- /* Find Decoder capabilities */
4181- const struct rte_bbdev_op_cap *cap = info.drv.capabilities;
4182- while (cap->type != RTE_BBDEV_OP_NONE) {
4183- if (cap->type == RTE_BBDEV_OP_TURBO_DEC) {
4184- capabilities = cap;
4185- break;
4186- }
4187+
4188+ /* Find capabilities */
4189+ const struct rte_bbdev_op_cap *cap = info.drv.capabilities;
4190+ for (i = 0; i < RTE_BBDEV_OP_TYPE_COUNT; i++) {
4191+ if (cap->type == test_vector.op_type) {
4192+ capabilities = cap;
4193+ break;
4194 }
4195- TEST_ASSERT_NOT_NULL(capabilities,
4196- "Couldn't find Decoder capabilities");
4197+ cap++;
4198+ }
4199+ TEST_ASSERT_NOT_NULL(capabilities,
4200+ "Couldn't find capabilities");
4201
4202+ if (test_vector.op_type == RTE_BBDEV_OP_TURBO_DEC) {
4203 create_reference_dec_op(op_params->ref_dec_op);
4204 } else if (test_vector.op_type == RTE_BBDEV_OP_TURBO_ENC)
4205 create_reference_enc_op(op_params->ref_enc_op);
4206+ else if (test_vector.op_type == RTE_BBDEV_OP_LDPC_ENC)
4207+ create_reference_ldpc_enc_op(op_params->ref_enc_op);
4208+ else if (test_vector.op_type == RTE_BBDEV_OP_LDPC_DEC)
4209+ create_reference_ldpc_dec_op(op_params->ref_dec_op);
4210
4211 for (i = 0; i < ad->nb_queues; ++i) {
4212 f_ret = fill_queue_buffers(op_params,
4213 ad->in_mbuf_pool,
4214 ad->hard_out_mbuf_pool,
4215 ad->soft_out_mbuf_pool,
4216+ ad->harq_in_mbuf_pool,
4217+ ad->harq_out_mbuf_pool,
4218 ad->queue_ids[i],
4219 capabilities,
4220 info.drv.min_alignment,
4221@@ -1163,21 +1702,11 @@ dequeue_event_callback(uint16_t dev_id,
4222 int ret;
4223 uint16_t i;
4224 uint64_t total_time;
4225- uint16_t deq, burst_sz, num_to_process;
4226- uint16_t queue_id = INVALID_QUEUE_ID;
4227- struct rte_bbdev_dec_op *dec_ops[MAX_BURST];
4228- struct rte_bbdev_enc_op *enc_ops[MAX_BURST];
4229- struct test_buffers *bufs;
4230+ uint16_t deq, burst_sz, num_ops;
4231+ uint16_t queue_id = *(uint16_t *) ret_param;
4232 struct rte_bbdev_info info;
4233-
4234- /* Input length in bytes, million operations per second,
4235- * million bits per second.
4236- */
4237- double in_len;
4238-
4239+ double tb_len_bits;
4240 struct thread_params *tp = cb_arg;
4241- RTE_SET_USED(ret_param);
4242- queue_id = tp->queue_id;
4243
4244 /* Find matching thread params using queue_id */
4245 for (i = 0; i < MAX_QUEUES; ++i, ++tp)
4246@@ -1197,14 +1726,19 @@ dequeue_event_callback(uint16_t dev_id,
4247 return;
4248 }
4249
4250- burst_sz = tp->op_params->burst_sz;
4251- num_to_process = tp->op_params->num_to_process;
4252+ burst_sz = rte_atomic16_read(&tp->burst_sz);
4253+ num_ops = tp->op_params->num_to_process;
4254
4255- if (test_vector.op_type == RTE_BBDEV_OP_TURBO_DEC)
4256- deq = rte_bbdev_dequeue_dec_ops(dev_id, queue_id, dec_ops,
4257+ if (test_vector.op_type == RTE_BBDEV_OP_TURBO_DEC ||
4258+ test_vector.op_type == RTE_BBDEV_OP_LDPC_DEC)
4259+ deq = rte_bbdev_dequeue_dec_ops(dev_id, queue_id,
4260+ &tp->dec_ops[
4261+ rte_atomic16_read(&tp->nb_dequeued)],
4262 burst_sz);
4263 else
4264- deq = rte_bbdev_dequeue_enc_ops(dev_id, queue_id, enc_ops,
4265+ deq = rte_bbdev_dequeue_enc_ops(dev_id, queue_id,
4266+ &tp->enc_ops[
4267+ rte_atomic16_read(&tp->nb_dequeued)],
4268 burst_sz);
4269
4270 if (deq < burst_sz) {
4271@@ -1215,7 +1749,7 @@ dequeue_event_callback(uint16_t dev_id,
4272 return;
4273 }
4274
4275- if (rte_atomic16_read(&tp->nb_dequeued) + deq < num_to_process) {
4276+ if (rte_atomic16_read(&tp->nb_dequeued) + deq < num_ops) {
4277 rte_atomic16_add(&tp->nb_dequeued, deq);
4278 return;
4279 }
4280@@ -1224,14 +1758,32 @@ dequeue_event_callback(uint16_t dev_id,
4281
4282 rte_bbdev_info_get(dev_id, &info);
4283
4284- bufs = &tp->op_params->q_bufs[GET_SOCKET(info.socket_id)][queue_id];
4285-
4286 ret = TEST_SUCCESS;
4287- if (test_vector.op_type == RTE_BBDEV_OP_TURBO_DEC)
4288- ret = validate_dec_buffers(tp->op_params->ref_dec_op, bufs,
4289- num_to_process);
4290- else if (test_vector.op_type == RTE_BBDEV_OP_TURBO_ENC)
4291- ret = validate_enc_buffers(bufs, num_to_process);
4292+
4293+ if (test_vector.op_type == RTE_BBDEV_OP_TURBO_DEC) {
4294+ struct rte_bbdev_dec_op *ref_op = tp->op_params->ref_dec_op;
4295+ ret = validate_dec_op(tp->dec_ops, num_ops, ref_op,
4296+ tp->op_params->vector_mask);
4297+ /* get the max of iter_count for all dequeued ops */
4298+ for (i = 0; i < num_ops; ++i)
4299+ tp->iter_count = RTE_MAX(
4300+ tp->dec_ops[i]->turbo_dec.iter_count,
4301+ tp->iter_count);
4302+ rte_bbdev_dec_op_free_bulk(tp->dec_ops, deq);
4303+ } else if (test_vector.op_type == RTE_BBDEV_OP_TURBO_ENC) {
4304+ struct rte_bbdev_enc_op *ref_op = tp->op_params->ref_enc_op;
4305+ ret = validate_enc_op(tp->enc_ops, num_ops, ref_op);
4306+ rte_bbdev_enc_op_free_bulk(tp->enc_ops, deq);
4307+ } else if (test_vector.op_type == RTE_BBDEV_OP_LDPC_ENC) {
4308+ struct rte_bbdev_enc_op *ref_op = tp->op_params->ref_enc_op;
4309+ ret = validate_ldpc_enc_op(tp->enc_ops, num_ops, ref_op);
4310+ rte_bbdev_enc_op_free_bulk(tp->enc_ops, deq);
4311+ } else if (test_vector.op_type == RTE_BBDEV_OP_LDPC_DEC) {
4312+ struct rte_bbdev_dec_op *ref_op = tp->op_params->ref_dec_op;
4313+ ret = validate_ldpc_dec_op(tp->dec_ops, num_ops, ref_op,
4314+ tp->op_params->vector_mask);
4315+ rte_bbdev_dec_op_free_bulk(tp->dec_ops, deq);
4316+ }
4317
4318 if (ret) {
4319 printf("Buffers validation failed\n");
4320@@ -1240,13 +1792,19 @@ dequeue_event_callback(uint16_t dev_id,
4321
4322 switch (test_vector.op_type) {
4323 case RTE_BBDEV_OP_TURBO_DEC:
4324- in_len = tp->op_params->ref_dec_op->turbo_dec.input.length;
4325+ tb_len_bits = calc_dec_TB_size(tp->op_params->ref_dec_op);
4326 break;
4327 case RTE_BBDEV_OP_TURBO_ENC:
4328- in_len = tp->op_params->ref_enc_op->turbo_enc.input.length;
4329+ tb_len_bits = calc_enc_TB_size(tp->op_params->ref_enc_op);
4330+ break;
4331+ case RTE_BBDEV_OP_LDPC_DEC:
4332+ tb_len_bits = calc_ldpc_dec_TB_size(tp->op_params->ref_dec_op);
4333+ break;
4334+ case RTE_BBDEV_OP_LDPC_ENC:
4335+ tb_len_bits = calc_ldpc_enc_TB_size(tp->op_params->ref_enc_op);
4336 break;
4337 case RTE_BBDEV_OP_NONE:
4338- in_len = 0.0;
4339+ tb_len_bits = 0.0;
4340 break;
4341 default:
4342 printf("Unknown op type: %d\n", test_vector.op_type);
4343@@ -1254,9 +1812,9 @@ dequeue_event_callback(uint16_t dev_id,
4344 return;
4345 }
4346
4347- tp->mops = ((double)num_to_process / 1000000.0) /
4348+ tp->ops_per_sec += ((double)num_ops) /
4349 ((double)total_time / (double)rte_get_tsc_hz());
4350- tp->mbps = ((double)num_to_process * in_len * 8 / 1000000.0) /
4351+ tp->mbps += (((double)(num_ops * tb_len_bits)) / 1000000.0) /
4352 ((double)total_time / (double)rte_get_tsc_hz());
4353
4354 rte_atomic16_add(&tp->nb_dequeued, deq);
4355@@ -1267,14 +1825,14 @@ throughput_intr_lcore_dec(void *arg)
4356 {
4357 struct thread_params *tp = arg;
4358 unsigned int enqueued;
4359- struct rte_bbdev_dec_op *ops[MAX_BURST];
4360 const uint16_t queue_id = tp->queue_id;
4361 const uint16_t burst_sz = tp->op_params->burst_sz;
4362 const uint16_t num_to_process = tp->op_params->num_to_process;
4363+ struct rte_bbdev_dec_op *ops[num_to_process];
4364 struct test_buffers *bufs = NULL;
4365- unsigned int allocs_failed = 0;
4366 struct rte_bbdev_info info;
4367- int ret;
4368+ int ret, i, j;
4369+ uint16_t num_to_enq, enq;
4370
4371 TEST_ASSERT_SUCCESS((burst_sz > MAX_BURST),
4372 "BURST_SIZE should be <= %u", MAX_BURST);
4373@@ -1284,6 +1842,11 @@ throughput_intr_lcore_dec(void *arg)
4374 tp->dev_id, queue_id);
4375
4376 rte_bbdev_info_get(tp->dev_id, &info);
4377+
4378+ TEST_ASSERT_SUCCESS((num_to_process > info.drv.queue_size_lim),
4379+ "NUM_OPS cannot exceed %u for this device",
4380+ info.drv.queue_size_lim);
4381+
4382 bufs = &tp->op_params->q_bufs[GET_SOCKET(info.socket_id)][queue_id];
4383
4384 rte_atomic16_clear(&tp->processing_status);
4385@@ -1292,38 +1855,58 @@ throughput_intr_lcore_dec(void *arg)
4386 while (rte_atomic16_read(&tp->op_params->sync) == SYNC_WAIT)
4387 rte_pause();
4388
4389- tp->start_time = rte_rdtsc_precise();
4390- for (enqueued = 0; enqueued < num_to_process;) {
4391+ ret = rte_bbdev_dec_op_alloc_bulk(tp->op_params->mp, ops,
4392+ num_to_process);
4393+ TEST_ASSERT_SUCCESS(ret, "Allocation failed for %d ops",
4394+ num_to_process);
4395+ if (test_vector.op_type != RTE_BBDEV_OP_NONE)
4396+ copy_reference_dec_op(ops, num_to_process, 0, bufs->inputs,
4397+ bufs->hard_outputs, bufs->soft_outputs,
4398+ tp->op_params->ref_dec_op);
4399
4400- uint16_t num_to_enq = burst_sz;
4401+ /* Set counter to validate the ordering */
4402+ for (j = 0; j < num_to_process; ++j)
4403+ ops[j]->opaque_data = (void *)(uintptr_t)j;
4404
4405- if (unlikely(num_to_process - enqueued < num_to_enq))
4406- num_to_enq = num_to_process - enqueued;
4407+ for (j = 0; j < TEST_REPETITIONS; ++j) {
4408+ for (i = 0; i < num_to_process; ++i)
4409+ rte_pktmbuf_reset(ops[i]->turbo_dec.hard_output.data);
4410
4411- ret = rte_bbdev_dec_op_alloc_bulk(tp->op_params->mp, ops,
4412- num_to_enq);
4413- if (ret != 0) {
4414- allocs_failed++;
4415- continue;
4416- }
4417+ tp->start_time = rte_rdtsc_precise();
4418+ for (enqueued = 0; enqueued < num_to_process;) {
4419+ num_to_enq = burst_sz;
4420
4421- if (test_vector.op_type != RTE_BBDEV_OP_NONE)
4422- copy_reference_dec_op(ops, num_to_enq, enqueued,
4423- bufs->inputs,
4424- bufs->hard_outputs,
4425- bufs->soft_outputs,
4426- tp->op_params->ref_dec_op);
4427+ if (unlikely(num_to_process - enqueued < num_to_enq))
4428+ num_to_enq = num_to_process - enqueued;
4429
4430- enqueued += rte_bbdev_enqueue_dec_ops(tp->dev_id, queue_id, ops,
4431- num_to_enq);
4432+ enq = 0;
4433+ do {
4434+ enq += rte_bbdev_enqueue_dec_ops(tp->dev_id,
4435+ queue_id, &ops[enqueued],
4436+ num_to_enq);
4437+ } while (unlikely(num_to_enq != enq));
4438+ enqueued += enq;
4439+
4440+ /* Write to thread burst_sz current number of enqueued
4441+ * descriptors. It ensures that proper number of
4442+ * descriptors will be dequeued in callback
4443+ * function - needed for last batch in case where
4444+ * the number of operations is not a multiple of
4445+ * burst size.
4446+ */
4447+ rte_atomic16_set(&tp->burst_sz, num_to_enq);
4448
4449- rte_bbdev_dec_op_free_bulk(ops, num_to_enq);
4450+ /* Wait until processing of previous batch is
4451+ * completed
4452+ */
4453+ while (rte_atomic16_read(&tp->nb_dequeued) !=
4454+ (int16_t) enqueued)
4455+ rte_pause();
4456+ }
4457+ if (j != TEST_REPETITIONS - 1)
4458+ rte_atomic16_clear(&tp->nb_dequeued);
4459 }
4460
4461- if (allocs_failed > 0)
4462- printf("WARNING: op allocations failed: %u times\n",
4463- allocs_failed);
4464-
4465 return TEST_SUCCESS;
4466 }
4467
4468@@ -1332,14 +1915,14 @@ throughput_intr_lcore_enc(void *arg)
4469 {
4470 struct thread_params *tp = arg;
4471 unsigned int enqueued;
4472- struct rte_bbdev_enc_op *ops[MAX_BURST];
4473 const uint16_t queue_id = tp->queue_id;
4474 const uint16_t burst_sz = tp->op_params->burst_sz;
4475 const uint16_t num_to_process = tp->op_params->num_to_process;
4476+ struct rte_bbdev_enc_op *ops[num_to_process];
4477 struct test_buffers *bufs = NULL;
4478- unsigned int allocs_failed = 0;
4479 struct rte_bbdev_info info;
4480- int ret;
4481+ int ret, i, j;
4482+ uint16_t num_to_enq, enq;
4483
4484 TEST_ASSERT_SUCCESS((burst_sz > MAX_BURST),
4485 "BURST_SIZE should be <= %u", MAX_BURST);
4486@@ -1349,6 +1932,11 @@ throughput_intr_lcore_enc(void *arg)
4487 tp->dev_id, queue_id);
4488
4489 rte_bbdev_info_get(tp->dev_id, &info);
4490+
4491+ TEST_ASSERT_SUCCESS((num_to_process > info.drv.queue_size_lim),
4492+ "NUM_OPS cannot exceed %u for this device",
4493+ info.drv.queue_size_lim);
4494+
4495 bufs = &tp->op_params->q_bufs[GET_SOCKET(info.socket_id)][queue_id];
4496
4497 rte_atomic16_clear(&tp->processing_status);
4498@@ -1357,37 +1945,57 @@ throughput_intr_lcore_enc(void *arg)
4499 while (rte_atomic16_read(&tp->op_params->sync) == SYNC_WAIT)
4500 rte_pause();
4501
4502- tp->start_time = rte_rdtsc_precise();
4503- for (enqueued = 0; enqueued < num_to_process;) {
4504+ ret = rte_bbdev_enc_op_alloc_bulk(tp->op_params->mp, ops,
4505+ num_to_process);
4506+ TEST_ASSERT_SUCCESS(ret, "Allocation failed for %d ops",
4507+ num_to_process);
4508+ if (test_vector.op_type != RTE_BBDEV_OP_NONE)
4509+ copy_reference_enc_op(ops, num_to_process, 0, bufs->inputs,
4510+ bufs->hard_outputs, tp->op_params->ref_enc_op);
4511
4512- uint16_t num_to_enq = burst_sz;
4513+ /* Set counter to validate the ordering */
4514+ for (j = 0; j < num_to_process; ++j)
4515+ ops[j]->opaque_data = (void *)(uintptr_t)j;
4516
4517- if (unlikely(num_to_process - enqueued < num_to_enq))
4518- num_to_enq = num_to_process - enqueued;
4519+ for (j = 0; j < TEST_REPETITIONS; ++j) {
4520+ for (i = 0; i < num_to_process; ++i)
4521+ rte_pktmbuf_reset(ops[i]->turbo_enc.output.data);
4522
4523- ret = rte_bbdev_enc_op_alloc_bulk(tp->op_params->mp, ops,
4524- num_to_enq);
4525- if (ret != 0) {
4526- allocs_failed++;
4527- continue;
4528- }
4529+ tp->start_time = rte_rdtsc_precise();
4530+ for (enqueued = 0; enqueued < num_to_process;) {
4531+ num_to_enq = burst_sz;
4532
4533- if (test_vector.op_type != RTE_BBDEV_OP_NONE)
4534- copy_reference_enc_op(ops, num_to_enq, enqueued,
4535- bufs->inputs,
4536- bufs->hard_outputs,
4537- tp->op_params->ref_enc_op);
4538+ if (unlikely(num_to_process - enqueued < num_to_enq))
4539+ num_to_enq = num_to_process - enqueued;
4540
4541- enqueued += rte_bbdev_enqueue_enc_ops(tp->dev_id, queue_id, ops,
4542- num_to_enq);
4543+ enq = 0;
4544+ do {
4545+ enq += rte_bbdev_enqueue_enc_ops(tp->dev_id,
4546+ queue_id, &ops[enqueued],
4547+ num_to_enq);
4548+ } while (unlikely(enq != num_to_enq));
4549+ enqueued += enq;
4550+
4551+ /* Write to thread burst_sz current number of enqueued
4552+ * descriptors. It ensures that proper number of
4553+ * descriptors will be dequeued in callback
4554+ * function - needed for last batch in case where
4555+ * the number of operations is not a multiple of
4556+ * burst size.
4557+ */
4558+ rte_atomic16_set(&tp->burst_sz, num_to_enq);
4559
4560- rte_bbdev_enc_op_free_bulk(ops, num_to_enq);
4561+ /* Wait until processing of previous batch is
4562+ * completed
4563+ */
4564+ while (rte_atomic16_read(&tp->nb_dequeued) !=
4565+ (int16_t) enqueued)
4566+ rte_pause();
4567+ }
4568+ if (j != TEST_REPETITIONS - 1)
4569+ rte_atomic16_clear(&tp->nb_dequeued);
4570 }
4571
4572- if (allocs_failed > 0)
4573- printf("WARNING: op allocations failed: %u times\n",
4574- allocs_failed);
4575-
4576 return TEST_SUCCESS;
4577 }
4578
4579@@ -1395,86 +2003,205 @@ static int
4580 throughput_pmd_lcore_dec(void *arg)
4581 {
4582 struct thread_params *tp = arg;
4583- unsigned int enqueued, dequeued;
4584- struct rte_bbdev_dec_op *ops_enq[MAX_BURST], *ops_deq[MAX_BURST];
4585- uint64_t total_time, start_time;
4586+ uint16_t enq, deq;
4587+ uint64_t total_time = 0, start_time;
4588 const uint16_t queue_id = tp->queue_id;
4589 const uint16_t burst_sz = tp->op_params->burst_sz;
4590- const uint16_t num_to_process = tp->op_params->num_to_process;
4591+ const uint16_t num_ops = tp->op_params->num_to_process;
4592+ struct rte_bbdev_dec_op *ops_enq[num_ops];
4593+ struct rte_bbdev_dec_op *ops_deq[num_ops];
4594 struct rte_bbdev_dec_op *ref_op = tp->op_params->ref_dec_op;
4595 struct test_buffers *bufs = NULL;
4596- unsigned int allocs_failed = 0;
4597- int ret;
4598+ int i, j, ret;
4599 struct rte_bbdev_info info;
4600-
4601- /* Input length in bytes, million operations per second, million bits
4602- * per second.
4603- */
4604- double in_len;
4605+ uint16_t num_to_enq;
4606
4607 TEST_ASSERT_SUCCESS((burst_sz > MAX_BURST),
4608 "BURST_SIZE should be <= %u", MAX_BURST);
4609
4610 rte_bbdev_info_get(tp->dev_id, &info);
4611+
4612+ TEST_ASSERT_SUCCESS((num_ops > info.drv.queue_size_lim),
4613+ "NUM_OPS cannot exceed %u for this device",
4614+ info.drv.queue_size_lim);
4615+
4616 bufs = &tp->op_params->q_bufs[GET_SOCKET(info.socket_id)][queue_id];
4617
4618 while (rte_atomic16_read(&tp->op_params->sync) == SYNC_WAIT)
4619 rte_pause();
4620
4621- start_time = rte_rdtsc_precise();
4622- for (enqueued = 0, dequeued = 0; dequeued < num_to_process;) {
4623- uint16_t deq;
4624+ ret = rte_bbdev_dec_op_alloc_bulk(tp->op_params->mp, ops_enq, num_ops);
4625+ TEST_ASSERT_SUCCESS(ret, "Allocation failed for %d ops", num_ops);
4626
4627- if (likely(enqueued < num_to_process)) {
4628+ if (test_vector.op_type != RTE_BBDEV_OP_NONE)
4629+ copy_reference_dec_op(ops_enq, num_ops, 0, bufs->inputs,
4630+ bufs->hard_outputs, bufs->soft_outputs, ref_op);
4631
4632- uint16_t num_to_enq = burst_sz;
4633+ /* Set counter to validate the ordering */
4634+ for (j = 0; j < num_ops; ++j)
4635+ ops_enq[j]->opaque_data = (void *)(uintptr_t)j;
4636
4637- if (unlikely(num_to_process - enqueued < num_to_enq))
4638- num_to_enq = num_to_process - enqueued;
4639+ for (i = 0; i < TEST_REPETITIONS; ++i) {
4640
4641- ret = rte_bbdev_dec_op_alloc_bulk(tp->op_params->mp,
4642- ops_enq, num_to_enq);
4643- if (ret != 0) {
4644- allocs_failed++;
4645- goto do_dequeue;
4646- }
4647+ for (j = 0; j < num_ops; ++j)
4648+ mbuf_reset(ops_enq[j]->turbo_dec.hard_output.data);
4649
4650- if (test_vector.op_type != RTE_BBDEV_OP_NONE)
4651- copy_reference_dec_op(ops_enq, num_to_enq,
4652- enqueued,
4653- bufs->inputs,
4654- bufs->hard_outputs,
4655- bufs->soft_outputs,
4656- ref_op);
4657+ start_time = rte_rdtsc_precise();
4658
4659- enqueued += rte_bbdev_enqueue_dec_ops(tp->dev_id,
4660- queue_id, ops_enq, num_to_enq);
4661+ for (enq = 0, deq = 0; enq < num_ops;) {
4662+ num_to_enq = burst_sz;
4663+
4664+ if (unlikely(num_ops - enq < num_to_enq))
4665+ num_to_enq = num_ops - enq;
4666+
4667+ enq += rte_bbdev_enqueue_dec_ops(tp->dev_id,
4668+ queue_id, &ops_enq[enq], num_to_enq);
4669+
4670+ deq += rte_bbdev_dequeue_dec_ops(tp->dev_id,
4671+ queue_id, &ops_deq[deq], enq - deq);
4672 }
4673-do_dequeue:
4674- deq = rte_bbdev_dequeue_dec_ops(tp->dev_id, queue_id, ops_deq,
4675- burst_sz);
4676- dequeued += deq;
4677- rte_bbdev_dec_op_free_bulk(ops_enq, deq);
4678- }
4679- total_time = rte_rdtsc_precise() - start_time;
4680
4681- if (allocs_failed > 0)
4682- printf("WARNING: op allocations failed: %u times\n",
4683- allocs_failed);
4684+ /* dequeue the remaining */
4685+ while (deq < enq) {
4686+ deq += rte_bbdev_dequeue_dec_ops(tp->dev_id,
4687+ queue_id, &ops_deq[deq], enq - deq);
4688+ }
4689
4690- TEST_ASSERT(enqueued == dequeued, "enqueued (%u) != dequeued (%u)",
4691- enqueued, dequeued);
4692+ total_time += rte_rdtsc_precise() - start_time;
4693+ }
4694+
4695+ tp->iter_count = 0;
4696+ /* get the max of iter_count for all dequeued ops */
4697+ for (i = 0; i < num_ops; ++i) {
4698+ tp->iter_count = RTE_MAX(ops_enq[i]->turbo_dec.iter_count,
4699+ tp->iter_count);
4700+ }
4701
4702 if (test_vector.op_type != RTE_BBDEV_OP_NONE) {
4703- ret = validate_dec_buffers(ref_op, bufs, num_to_process);
4704- TEST_ASSERT_SUCCESS(ret, "Buffers validation failed");
4705+ ret = validate_dec_op(ops_deq, num_ops, ref_op,
4706+ tp->op_params->vector_mask);
4707+ TEST_ASSERT_SUCCESS(ret, "Validation failed!");
4708 }
4709
4710- in_len = ref_op->turbo_dec.input.length;
4711- tp->mops = ((double)num_to_process / 1000000.0) /
4712+ rte_bbdev_dec_op_free_bulk(ops_enq, num_ops);
4713+
4714+ double tb_len_bits = calc_dec_TB_size(ref_op);
4715+
4716+ tp->ops_per_sec = ((double)num_ops * TEST_REPETITIONS) /
4717 ((double)total_time / (double)rte_get_tsc_hz());
4718- tp->mbps = ((double)num_to_process * in_len * 8 / 1000000.0) /
4719+ tp->mbps = (((double)(num_ops * TEST_REPETITIONS * tb_len_bits)) /
4720+ 1000000.0) / ((double)total_time /
4721+ (double)rte_get_tsc_hz());
4722+
4723+ return TEST_SUCCESS;
4724+}
4725+
4726+static int
4727+throughput_pmd_lcore_ldpc_dec(void *arg)
4728+{
4729+ struct thread_params *tp = arg;
4730+ uint16_t enq, deq;
4731+ uint64_t total_time = 0, start_time;
4732+ const uint16_t queue_id = tp->queue_id;
4733+ const uint16_t burst_sz = tp->op_params->burst_sz;
4734+ const uint16_t num_ops = tp->op_params->num_to_process;
4735+ struct rte_bbdev_dec_op *ops_enq[num_ops];
4736+ struct rte_bbdev_dec_op *ops_deq[num_ops];
4737+ struct rte_bbdev_dec_op *ref_op = tp->op_params->ref_dec_op;
4738+ struct test_buffers *bufs = NULL;
4739+ int i, j, ret;
4740+ struct rte_bbdev_info info;
4741+ uint16_t num_to_enq;
4742+
4743+ TEST_ASSERT_SUCCESS((burst_sz > MAX_BURST),
4744+ "BURST_SIZE should be <= %u", MAX_BURST);
4745+
4746+ rte_bbdev_info_get(tp->dev_id, &info);
4747+
4748+ TEST_ASSERT_SUCCESS((num_ops > info.drv.queue_size_lim),
4749+ "NUM_OPS cannot exceed %u for this device",
4750+ info.drv.queue_size_lim);
4751+
4752+ bufs = &tp->op_params->q_bufs[GET_SOCKET(info.socket_id)][queue_id];
4753+
4754+ while (rte_atomic16_read(&tp->op_params->sync) == SYNC_WAIT)
4755+ rte_pause();
4756+
4757+ ret = rte_bbdev_dec_op_alloc_bulk(tp->op_params->mp, ops_enq, num_ops);
4758+ TEST_ASSERT_SUCCESS(ret, "Allocation failed for %d ops", num_ops);
4759+
4760+ /* For throughput tests we need to disable early termination */
4761+ if (check_bit(ref_op->ldpc_dec.op_flags,
4762+ RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE))
4763+ ref_op->ldpc_dec.op_flags -=
4764+ RTE_BBDEV_LDPC_ITERATION_STOP_ENABLE;
4765+ ref_op->ldpc_dec.iter_max = 6;
4766+ ref_op->ldpc_dec.iter_count = ref_op->ldpc_dec.iter_max;
4767+
4768+ if (test_vector.op_type != RTE_BBDEV_OP_NONE)
4769+ copy_reference_ldpc_dec_op(ops_enq, num_ops, 0, bufs->inputs,
4770+ bufs->hard_outputs, bufs->soft_outputs,
4771+ bufs->harq_inputs, bufs->harq_outputs, ref_op);
4772+
4773+ /* Set counter to validate the ordering */
4774+ for (j = 0; j < num_ops; ++j)
4775+ ops_enq[j]->opaque_data = (void *)(uintptr_t)j;
4776+
4777+ for (i = 0; i < TEST_REPETITIONS; ++i) {
4778+ for (j = 0; j < num_ops; ++j) {
4779+ mbuf_reset(ops_enq[j]->ldpc_dec.hard_output.data);
4780+ if (check_bit(ref_op->ldpc_dec.op_flags,
4781+ RTE_BBDEV_LDPC_HQ_COMBINE_OUT_ENABLE))
4782+ mbuf_reset(
4783+ ops_enq[j]->ldpc_dec.harq_combined_output.data);
4784+ }
4785+
4786+ start_time = rte_rdtsc_precise();
4787+
4788+ for (enq = 0, deq = 0; enq < num_ops;) {
4789+ num_to_enq = burst_sz;
4790+
4791+ if (unlikely(num_ops - enq < num_to_enq))
4792+ num_to_enq = num_ops - enq;
4793+
4794+ enq += rte_bbdev_enqueue_ldpc_dec_ops(tp->dev_id,
4795+ queue_id, &ops_enq[enq], num_to_enq);
4796+
4797+ deq += rte_bbdev_dequeue_ldpc_dec_ops(tp->dev_id,
4798+ queue_id, &ops_deq[deq], enq - deq);
4799+ }
4800+
4801+ /* dequeue the remaining */
4802+ while (deq < enq) {
4803+ deq += rte_bbdev_dequeue_ldpc_dec_ops(tp->dev_id,
4804+ queue_id, &ops_deq[deq], enq - deq);
4805+ }
4806+
4807+ total_time += rte_rdtsc_precise() - start_time;
4808+ }
4809+
4810+ tp->iter_count = 0;
4811+ /* get the max of iter_count for all dequeued ops */
4812+ for (i = 0; i < num_ops; ++i) {
4813+ tp->iter_count = RTE_MAX(ops_enq[i]->ldpc_dec.iter_count,
4814+ tp->iter_count);
4815+ }
4816+
4817+ if (test_vector.op_type != RTE_BBDEV_OP_NONE) {
4818+ ret = validate_ldpc_dec_op(ops_deq, num_ops, ref_op,
4819+ tp->op_params->vector_mask);
4820+ TEST_ASSERT_SUCCESS(ret, "Validation failed!");
4821+ }
4822+
4823+ rte_bbdev_dec_op_free_bulk(ops_enq, num_ops);
4824+
4825+ double tb_len_bits = calc_ldpc_dec_TB_size(ref_op);
4826+
4827+ tp->ops_per_sec = ((double)num_ops * TEST_REPETITIONS) /
4828 ((double)total_time / (double)rte_get_tsc_hz());
4829+ tp->mbps = (((double)(num_ops * TEST_REPETITIONS * tb_len_bits)) /
4830+ 1000000.0) / ((double)total_time /
4831+ (double)rte_get_tsc_hz());
4832
4833 return TEST_SUCCESS;
4834 }
4835@@ -1483,108 +2210,224 @@ static int
4836 throughput_pmd_lcore_enc(void *arg)
4837 {
4838 struct thread_params *tp = arg;
4839- unsigned int enqueued, dequeued;
4840- struct rte_bbdev_enc_op *ops_enq[MAX_BURST], *ops_deq[MAX_BURST];
4841- uint64_t total_time, start_time;
4842+ uint16_t enq, deq;
4843+ uint64_t total_time = 0, start_time;
4844 const uint16_t queue_id = tp->queue_id;
4845 const uint16_t burst_sz = tp->op_params->burst_sz;
4846- const uint16_t num_to_process = tp->op_params->num_to_process;
4847+ const uint16_t num_ops = tp->op_params->num_to_process;
4848+ struct rte_bbdev_enc_op *ops_enq[num_ops];
4849+ struct rte_bbdev_enc_op *ops_deq[num_ops];
4850 struct rte_bbdev_enc_op *ref_op = tp->op_params->ref_enc_op;
4851 struct test_buffers *bufs = NULL;
4852- unsigned int allocs_failed = 0;
4853- int ret;
4854+ int i, j, ret;
4855 struct rte_bbdev_info info;
4856-
4857- /* Input length in bytes, million operations per second, million bits
4858- * per second.
4859- */
4860- double in_len;
4861+ uint16_t num_to_enq;
4862
4863 TEST_ASSERT_SUCCESS((burst_sz > MAX_BURST),
4864 "BURST_SIZE should be <= %u", MAX_BURST);
4865
4866 rte_bbdev_info_get(tp->dev_id, &info);
4867+
4868+ TEST_ASSERT_SUCCESS((num_ops > info.drv.queue_size_lim),
4869+ "NUM_OPS cannot exceed %u for this device",
4870+ info.drv.queue_size_lim);
4871+
4872 bufs = &tp->op_params->q_bufs[GET_SOCKET(info.socket_id)][queue_id];
4873
4874 while (rte_atomic16_read(&tp->op_params->sync) == SYNC_WAIT)
4875 rte_pause();
4876
4877- start_time = rte_rdtsc_precise();
4878- for (enqueued = 0, dequeued = 0; dequeued < num_to_process;) {
4879- uint16_t deq;
4880+ ret = rte_bbdev_enc_op_alloc_bulk(tp->op_params->mp, ops_enq,
4881+ num_ops);
4882+ TEST_ASSERT_SUCCESS(ret, "Allocation failed for %d ops",
4883+ num_ops);
4884+ if (test_vector.op_type != RTE_BBDEV_OP_NONE)
4885+ copy_reference_enc_op(ops_enq, num_ops, 0, bufs->inputs,
4886+ bufs->hard_outputs, ref_op);
4887
4888- if (likely(enqueued < num_to_process)) {
4889+ /* Set counter to validate the ordering */
4890+ for (j = 0; j < num_ops; ++j)
4891+ ops_enq[j]->opaque_data = (void *)(uintptr_t)j;
4892
4893- uint16_t num_to_enq = burst_sz;
4894+ for (i = 0; i < TEST_REPETITIONS; ++i) {
4895
4896- if (unlikely(num_to_process - enqueued < num_to_enq))
4897- num_to_enq = num_to_process - enqueued;
4898+ if (test_vector.op_type != RTE_BBDEV_OP_NONE)
4899+ for (j = 0; j < num_ops; ++j)
4900+ mbuf_reset(ops_enq[j]->turbo_enc.output.data);
4901
4902- ret = rte_bbdev_enc_op_alloc_bulk(tp->op_params->mp,
4903- ops_enq, num_to_enq);
4904- if (ret != 0) {
4905- allocs_failed++;
4906- goto do_dequeue;
4907- }
4908+ start_time = rte_rdtsc_precise();
4909
4910- if (test_vector.op_type != RTE_BBDEV_OP_NONE)
4911- copy_reference_enc_op(ops_enq, num_to_enq,
4912- enqueued,
4913- bufs->inputs,
4914- bufs->hard_outputs,
4915- ref_op);
4916+ for (enq = 0, deq = 0; enq < num_ops;) {
4917+ num_to_enq = burst_sz;
4918
4919- enqueued += rte_bbdev_enqueue_enc_ops(tp->dev_id,
4920- queue_id, ops_enq, num_to_enq);
4921+ if (unlikely(num_ops - enq < num_to_enq))
4922+ num_to_enq = num_ops - enq;
4923+
4924+ enq += rte_bbdev_enqueue_enc_ops(tp->dev_id,
4925+ queue_id, &ops_enq[enq], num_to_enq);
4926+
4927+ deq += rte_bbdev_dequeue_enc_ops(tp->dev_id,
4928+ queue_id, &ops_deq[deq], enq - deq);
4929 }
4930-do_dequeue:
4931- deq = rte_bbdev_dequeue_enc_ops(tp->dev_id, queue_id, ops_deq,
4932- burst_sz);
4933- dequeued += deq;
4934- rte_bbdev_enc_op_free_bulk(ops_enq, deq);
4935- }
4936- total_time = rte_rdtsc_precise() - start_time;
4937
4938- if (allocs_failed > 0)
4939- printf("WARNING: op allocations failed: %u times\n",
4940- allocs_failed);
4941+ /* dequeue the remaining */
4942+ while (deq < enq) {
4943+ deq += rte_bbdev_dequeue_enc_ops(tp->dev_id,
4944+ queue_id, &ops_deq[deq], enq - deq);
4945+ }
4946
4947- TEST_ASSERT(enqueued == dequeued, "enqueued (%u) != dequeued (%u)",
4948- enqueued, dequeued);
4949+ total_time += rte_rdtsc_precise() - start_time;
4950+ }
4951
4952 if (test_vector.op_type != RTE_BBDEV_OP_NONE) {
4953- ret = validate_enc_buffers(bufs, num_to_process);
4954- TEST_ASSERT_SUCCESS(ret, "Buffers validation failed");
4955+ ret = validate_enc_op(ops_deq, num_ops, ref_op);
4956+ TEST_ASSERT_SUCCESS(ret, "Validation failed!");
4957 }
4958
4959- in_len = ref_op->turbo_enc.input.length;
4960+ rte_bbdev_enc_op_free_bulk(ops_enq, num_ops);
4961
4962- tp->mops = ((double)num_to_process / 1000000.0) /
4963+ double tb_len_bits = calc_enc_TB_size(ref_op);
4964+
4965+ tp->ops_per_sec = ((double)num_ops * TEST_REPETITIONS) /
4966 ((double)total_time / (double)rte_get_tsc_hz());
4967- tp->mbps = ((double)num_to_process * in_len * 8 / 1000000.0) /
4968+ tp->mbps = (((double)(num_ops * TEST_REPETITIONS * tb_len_bits))
4969+ / 1000000.0) / ((double)total_time /
4970+ (double)rte_get_tsc_hz());
4971+
4972+ return TEST_SUCCESS;
4973+}
4974+
4975+static int
4976+throughput_pmd_lcore_ldpc_enc(void *arg)
4977+{
4978+ struct thread_params *tp = arg;
4979+ uint16_t enq, deq;
4980+ uint64_t total_time = 0, start_time;
4981+ const uint16_t queue_id = tp->queue_id;
4982+ const uint16_t burst_sz = tp->op_params->burst_sz;
4983+ const uint16_t num_ops = tp->op_params->num_to_process;
4984+ struct rte_bbdev_enc_op *ops_enq[num_ops];
4985+ struct rte_bbdev_enc_op *ops_deq[num_ops];
4986+ struct rte_bbdev_enc_op *ref_op = tp->op_params->ref_enc_op;
4987+ struct test_buffers *bufs = NULL;
4988+ int i, j, ret;
4989+ struct rte_bbdev_info info;
4990+ uint16_t num_to_enq;
4991+
4992+ TEST_ASSERT_SUCCESS((burst_sz > MAX_BURST),
4993+ "BURST_SIZE should be <= %u", MAX_BURST);
4994+
4995+ rte_bbdev_info_get(tp->dev_id, &info);
4996+
4997+ TEST_ASSERT_SUCCESS((num_ops > info.drv.queue_size_lim),
4998+ "NUM_OPS cannot exceed %u for this device",
4999+ info.drv.queue_size_lim);
5000+
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches