aboutsummaryrefslogtreecommitdiffstats
path: root/resources/libraries/bash/function/dpdk.sh
diff options
context:
space:
mode:
Diffstat (limited to 'resources/libraries/bash/function/dpdk.sh')
-rw-r--r--resources/libraries/bash/function/dpdk.sh101
1 files changed, 76 insertions, 25 deletions
diff --git a/resources/libraries/bash/function/dpdk.sh b/resources/libraries/bash/function/dpdk.sh
index 0b148aa83d..86abb84a02 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) 2020 Cisco and/or its affiliates.
+# Copyright (c) 2023 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,24 +86,18 @@ function dpdk_compile () {
pushd "${DPDK_DIR}" || die "Pushd 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"
+ # 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 setup ${meson_options} build || {
die "Failed to compile DPDK!"
}
ninja -C build || die "Failed to compile DPDK!"
@@ -196,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.
@@ -204,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"
@@ -238,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
@@ -248,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).
@@ -292,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
@@ -302,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
+}