diff options
Diffstat (limited to 'resources/libraries/bash/function/dpdk.sh')
-rw-r--r-- | resources/libraries/bash/function/dpdk.sh | 110 |
1 files changed, 22 insertions, 88 deletions
diff --git a/resources/libraries/bash/function/dpdk.sh b/resources/libraries/bash/function/dpdk.sh index 4298e79e62..0b148aa83d 100644 --- a/resources/libraries/bash/function/dpdk.sh +++ b/resources/libraries/bash/function/dpdk.sh @@ -84,55 +84,29 @@ function dpdk_compile () { set -exuo pipefail - arch=$(uname -m) || { - die "Get CPU architecture failed." - } - - # DPDK prefers "arm64" to "aarch64" and does not allow arm64 native target. - if [ ${arch} == "aarch64" ]; then - arch="arm64" - machine="armv8a" - else - machine="native" - fi - - # Patch settings. - sed_mlx="s/^CONFIG_RTE_LIBRTE_MLX5_PMD=n/CONFIG_RTE_LIBRTE_MLX5_PMD=y/g" - sed_i40e="s/^CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n/CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=y/g" - sed_file="./config/common_base" - pushd "${DPDK_DIR}" || die "Pushd failed" - if ( lsmod || die ) | fgrep mlx; then - sed -i "${sed_mlx}" "${sed_file}" || die - fi - sed -i "${sed_i40e}" "${sed_file}" || die "Patch failed" - - sed_build_fix='s/#include <\(rte_ethdev.*.h\)>/#include "\1"/g' - # can't put the filename in quotes so that shell expands it - sed -i "${sed_build_fix}" ./lib/librte_ethdev/rte_ethdev*.h || { - die "DPDK build patch failed" - } + # Patch ARM. + sed_cmd="s/'RTE_MAX_LCORE', [0-9]*/'RTE_MAX_LCORE', $(nproc --all)/" + sed_file="config/arm/meson.build" + sed -i "${sed_cmd}" "${sed_file}" || die "Patch failed" - # Compile - make install T="${arch}"-"${machine}"-linuxapp-gcc -j || { - die "Failed to compile DPDK!" - } - popd || die "Popd failed" - - # Compile the l3fwd. - export RTE_SDK="${DPDK_DIR}/" - export RTE_TARGET="${arch}-${machine}-linuxapp-gcc" - # Patch settings. + # Patch L3FWD. sed_rxd="s/^#define RTE_TEST_RX_DESC_DEFAULT 128/#define RTE_TEST_RX_DESC_DEFAULT 1024/g" sed_txd="s/^#define RTE_TEST_TX_DESC_DEFAULT 512/#define RTE_TEST_TX_DESC_DEFAULT 1024/g" sed_file="./main.c" - pushd "${RTE_SDK}"/examples/l3fwd || die "Pushd failed" + pushd examples/l3fwd || die "Pushd failed" sed -i "${sed_rxd}" "${sed_file}" || die "Patch failed" sed -i "${sed_txd}" "${sed_file}" || die "Patch failed" - make clean || die "Failed to compile l3fwd" - make -j || die "Failed to compile l3fwd" popd || die "Popd failed" + + # Compile using Meson and Ninja. + export CFLAGS="" + CFLAGS+="-DRTE_LIBRTE_I40E_16BYTE_RX_DESC=y" + meson -Dexamples=l3fwd build || { + die "Failed to compile DPDK!" + } + ninja -C build || die "Failed to compile DPDK!" } @@ -228,32 +202,18 @@ function dpdk_l3fwd_compile () { set -exuo pipefail - arch=$(uname -m) || { - die "Get CPU architecture failed." - } - - # DPDK prefers "arm64" to "aarch64" and does not allow arm64 native target. - if [ ${arch} == "aarch64" ]; then - arch="arm64" - machine="armv8a" - else - machine="native" - fi - - # Compile the l3fwd. - export RTE_SDK="${DPDK_DIR}/" - export RTE_TARGET="${arch}-${machine}-linuxapp-gcc" - # Patch settings. + pushd "${DPDK_DIR}" || die "Pushd failed" + # Patch L3FWD. sed_rxd="s/^#define RTE_TEST_RX_DESC_DEFAULT 128/#define RTE_TEST_RX_DESC_DEFAULT 2048/g" sed_txd="s/^#define RTE_TEST_TX_DESC_DEFAULT 512/#define RTE_TEST_TX_DESC_DEFAULT 2048/g" sed_file="./main.c" - pushd "${RTE_SDK}"/examples/l3fwd || die "Pushd failed" + pushd examples/l3fwd || die "Pushd failed" sed -i "${sed_rxd}" "${sed_file}" || die "Patch failed" sed -i "${sed_txd}" "${sed_file}" || die "Patch failed" chmod +x ${1} && source ${1} || die "Patch failed" - make clean || die "Failed to compile l3fwd" - make -j || die "Failed to compile l3fwd" popd || die "Popd failed" + + ninja -C build || die "Failed to compile DPDK!" } @@ -268,20 +228,8 @@ function dpdk_l3fwd () { set -exuo pipefail - arch=$(uname -m) || { - die "Get CPU architecture failed." - } - - # DPDK prefers "arm64" to "aarch64" and does not allow arm64 native target. - if [ ${arch} == "aarch64" ]; then - arch="arm64" - machine="armv8a" - else - machine="native" - fi - rm -f screenlog.0 || true - binary="${DPDK_DIR}/examples/l3fwd/build/app/l3fwd" + binary="${DPDK_DIR}/build/examples/dpdk-l3fwd" sudo sh -c "screen -dmSL DPDK-test ${binary} ${@}" || { die "Failed to start l3fwd" @@ -335,20 +283,8 @@ function dpdk_testpmd () { set -exuo pipefail - arch=$(uname -m) || { - die "Get CPU architecture failed." - } - - # DPDK prefers "arm64" to "aarch64" and does not allow arm64 native target. - if [ ${arch} == "aarch64" ]; then - arch="arm64" - machine="armv8a" - else - machine="native" - fi - rm -f screenlog.0 || true - binary="${DPDK_DIR}/${arch}-${machine}-linuxapp-gcc/app/testpmd" + binary="${DPDK_DIR}/build/app/dpdk-testpmd" sudo sh -c "screen -dmSL DPDK-test ${binary} ${@}" || { die "Failed to start testpmd" @@ -356,9 +292,7 @@ function dpdk_testpmd () { for attempt in {1..60}; do echo "Checking if testpmd is alive, attempt nr ${attempt}" - if fgrep "Press enter to exit" screenlog.0 && \ - fgrep "Port 0: link state change event" screenlog.0 && \ - fgrep "Port 1: link state change event" screenlog.0; then + if fgrep "Press enter to exit" screenlog.0; then cat screenlog.0 exit 0 fi |