X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Flibraries%2Fbash%2Ffunction%2Fdpdk.sh;h=d579cfc444d5f9d7f82081b5477eb88cdd67c099;hb=d66bbe4d85079621e13d6e2940c933da1297ba2b;hp=362524349cefc5b0c41a63b4ee66fea7f835199c;hpb=924fdf657f45dd191819148b7186725c6328408f;p=csit.git diff --git a/resources/libraries/bash/function/dpdk.sh b/resources/libraries/bash/function/dpdk.sh index 362524349c..d579cfc444 100644 --- a/resources/libraries/bash/function/dpdk.sh +++ b/resources/libraries/bash/function/dpdk.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021 Cisco and/or its affiliates. +# Copyright (c) 2022 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: @@ -86,27 +86,18 @@ function dpdk_compile () { pushd "${DPDK_DIR}" || die "Pushd failed" - # Patch ARM. - sed_file="config/arm/meson.build" - sed_cmd="s/'RTE_MAX_LCORE', [0-9]*/'RTE_MAX_LCORE', $(nproc --all)/" - sed -i "${sed_cmd}" "${sed_file}" || die "RTE_MAX_LCORE Patch failed" - sed_cmd="s/'RTE_MAX_NUMA_NODES', [0-9]*/'RTE_MAX_NUMA_NODES', " - sed_cmd+="$(echo /sys/devices/system/node/node* | wc -w)/" - sed -i "${sed_cmd}" "${sed_file}" || die "RTE_MAX_NUMA_NODES Patch failed" + # enable l3fwd + meson_options="-Dexamples=l3fwd " - # 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 examples/l3fwd || die "Pushd failed" - sed -i "${sed_rxd}" "${sed_file}" || die "Patch failed" - sed -i "${sed_txd}" "${sed_file}" || die "Patch failed" - popd || die "Popd failed" + # i40e specific options + meson_options="${meson_options} \ + -Dc_args=-DRTE_LIBRTE_I40E_16BYTE_RX_DESC=y" + + # Configure generic build - the same used by VPP + meson_options="${meson_options} -Dplatform=generic" # Compile using Meson and Ninja. - export CFLAGS="" - CFLAGS+="-DRTE_LIBRTE_I40E_16BYTE_RX_DESC=y" - meson -Dexamples=l3fwd build || { + meson ${meson_options} build || { die "Failed to compile DPDK!" } ninja -C build || die "Failed to compile DPDK!" @@ -199,7 +190,6 @@ function dpdk_l3fwd_compile () { # # Variables read: # - DPDK_DIR - Path to DPDK framework. - # - CSIT_DIR - Path to CSIT framework. # Functions called: # - die - Print to stderr and exit. @@ -207,12 +197,7 @@ function dpdk_l3fwd_compile () { 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 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" popd || die "Popd failed" @@ -241,6 +226,28 @@ function dpdk_l3fwd () { for attempt in {1..60}; do echo "Checking if l3fwd is alive, attempt nr ${attempt}" if fgrep "L3FWD: entering main loop on lcore" screenlog.0; then + cat screenlog.0 + exit 0 + fi + sleep 1 + done + cat screenlog.0 + + exit 1 +} + + +function dpdk_l3fwd_check () { + + # DPDK l3fwd check state. + + set -exuo pipefail + + for attempt in {1..60}; do + echo "Checking if l3fwd state is ok, attempt nr ${attempt}" + if fgrep "Link up" screenlog.0; then + cat screenlog.0 + dpdk_l3fwd_pid exit 0 fi sleep 1 @@ -251,6 +258,16 @@ function dpdk_l3fwd () { } +function dpdk_l3fwd_pid () { + l3fwd_pid="$(pidof dpdk-l3fwd)" + if [ ! -z "${l3fwd_pid}" ]; then + echo "L3fwd process ID: ${l3fwd_pid}" + else + echo "L3fwd not running!" + fi +} + + function dpdk_precheck () { # Precheck system settings (nr_hugepages, max_map_count). @@ -295,9 +312,10 @@ 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; then - cat screenlog.0 - exit 0 + if fgrep "Press enter to exit" screenlog.0; then + cat screenlog.0 + dpdk_testpmd_pid + exit 0 fi sleep 1 done @@ -305,3 +323,33 @@ function dpdk_testpmd () { exit 1 } + + +function dpdk_testpmd_check () { + + # DPDK testpmd check links state. + + set -exuo pipefail + + for attempt in {1..60}; do + echo "Checking if testpmd links state changed, attempt nr ${attempt}" + if fgrep "link state change event" screenlog.0; then + cat screenlog.0 + exit 0 + fi + sleep 1 + done + cat screenlog.0 + + exit 1 +} + + +function dpdk_testpmd_pid () { + testpmd_pid="$(pidof dpdk-testpmd)" + if [ ! -z "${testpmd_pid}" ]; then + echo "Testpmd process ID: ${testpmd_pid}" + else + echo "Testpmd not running!" + fi +}