+ DPDK 20.08
+ Migrate make -> meson
+ Fix all trending issues
Signed-off-by: pmikus <pmikus@cisco.com>
Change-Id: I31dcb22627c0f8d17ec63c5b138a2da958b006f4
+dpdk-20.08
\ No newline at end of file
- 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"
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.
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"
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"
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"
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!"
- 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"
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"
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"
popd || die "Popd failed"
+
+ ninja -C build || die "Failed to compile DPDK!"
- 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
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"
sudo sh -c "screen -dmSL DPDK-test ${binary} ${@}" || {
die "Failed to start l3fwd"
- 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
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"
sudo sh -c "screen -dmSL DPDK-test ${binary} ${@}" || {
die "Failed to start testpmd"
for attempt in {1..60}; do
echo "Checking if testpmd is alive, attempt nr ${attempt}"
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
cat screenlog.0
exit 0
fi
if jumbo_frames:
l3fwd_args = DpdkUtil.get_l3fwd_args(
if jumbo_frames:
l3fwd_args = DpdkUtil.get_l3fwd_args(
- eal_corelist=f"0,{lcores_list}",
+ eal_corelist=f"1,{lcores_list}",
eal_driver=False,
eal_pci_whitelist0=if_pci0,
eal_pci_whitelist1=if_pci1,
eal_driver=False,
eal_pci_whitelist0=if_pci0,
eal_pci_whitelist1=if_pci1,
)
else:
l3fwd_args = DpdkUtil.get_l3fwd_args(
)
else:
l3fwd_args = DpdkUtil.get_l3fwd_args(
- eal_corelist=f"0,{lcores_list}",
+ eal_corelist=f"1,{lcores_list}",
eal_driver=False,
eal_pci_whitelist0=if_pci0,
eal_pci_whitelist1=if_pci1,
eal_driver=False,
eal_pci_whitelist0=if_pci0,
eal_pci_whitelist1=if_pci1,
pmd_max_pkt_len = u"9200" if jumbo_frames else u"1518"
testpmd_args = DpdkUtil.get_testpmd_args(
pmd_max_pkt_len = u"9200" if jumbo_frames else u"1518"
testpmd_args = DpdkUtil.get_testpmd_args(
- eal_corelist=f"0,{lcores_list}",
+ eal_corelist=f"1,{lcores_list}",
eal_driver=False,
eal_pci_whitelist0=if_pci0,
eal_pci_whitelist1=if_pci1,
eal_driver=False,
eal_pci_whitelist0=if_pci0,
eal_pci_whitelist1=if_pci1,
options.add_with_value_from_dict(
u"w", u"eal_pci_whitelist1", kwargs
)
options.add_with_value_from_dict(
u"w", u"eal_pci_whitelist1", kwargs
)
- # Set master core.
- options.add_with_value(
- u"-master-lcore", u"0"
- )
# Load an external driver. Multiple -d options are allowed.
options.add_with_value_if_from_dict(
u"d", u"/usr/lib/librte_pmd_virtio.so", u"eal_driver", kwargs, True
# Load an external driver. Multiple -d options are allowed.
options.add_with_value_if_from_dict(
u"d", u"/usr/lib/librte_pmd_virtio.so", u"eal_driver", kwargs, True
| | | ${numa}= | Get interfaces numa node | ${nodes['${dut}']}
| | | ... | ${${dut}_pf1}[0] | ${${dut}_pf2}[0]
| | | ${smt_used}= | Is SMT enabled | ${nodes['${dut}']['cpuinfo']}
| | | ${numa}= | Get interfaces numa node | ${nodes['${dut}']}
| | | ... | ${${dut}_pf1}[0] | ${${dut}_pf2}[0]
| | | ${smt_used}= | Is SMT enabled | ${nodes['${dut}']['cpuinfo']}
-| | | ${cpus}= | Cpu Range Per Node Str | ${nodes['${dut}']} | ${numa}
-| | | ... | skip_cnt=${1} | cpu_cnt=${dp_cores} | smt_used=${smt_used}
+| | | ${cpus}= | Cpu List Per Node Str | ${nodes['${dut}']} | ${numa}
+| | | ... | skip_cnt=${2} | cpu_cnt=${cpu_count_int} | smt_used=${smt_used}
| | | ${thr_count_int}= | Run keyword if | ${smt_used} |
| | | ... | Evaluate | int(${cpu_count_int}*2) | ELSE | Set variable
| | | ... | ${thr_count_int}
| | | ${thr_count_int}= | Run keyword if | ${smt_used} |
| | | ... | Evaluate | int(${cpu_count_int}*2) | ELSE | Set variable
| | | ... | ${thr_count_int}
| | | ... | ${${dut}_pf1}[0] | ${${dut}_pf2}[0]
| | | ${smt_used}= | Is SMT enabled | ${nodes['${dut}']['cpuinfo']}
| | | ${cpus}= | Cpu List Per Node Str | ${nodes['${dut}']} | ${numa}
| | | ... | ${${dut}_pf1}[0] | ${${dut}_pf2}[0]
| | | ${smt_used}= | Is SMT enabled | ${nodes['${dut}']['cpuinfo']}
| | | ${cpus}= | Cpu List Per Node Str | ${nodes['${dut}']} | ${numa}
-| | | ... | skip_cnt=${1} | cpu_cnt=${cpu_count_int} | smt_used=${smt_used}
+| | | ... | skip_cnt=${2} | cpu_cnt=${cpu_count_int} | smt_used=${smt_used}
| | | ${thr_count_int}= | Run keyword if | ${smt_used} |
| | | ... | Evaluate | int(${cpu_count_int}*2) | ELSE | Set variable
| | | ... | ${thr_count_int}
| | | ${thr_count_int}= | Run keyword if | ${smt_used} |
| | | ... | Evaluate | int(${cpu_count_int}*2) | ELSE | Set variable
| | | ... | ${thr_count_int}
| | Run Keyword If | ${extended_debug}==${True}
| | ... | Perf Stat On All DUTs | ${nodes}
| | Run Keyword If | ${extended_debug}==${True}
| | ... | Perf Stat On All DUTs | ${nodes}
-| Additional Statistics Action For vpp-clear-show-runtime-with-traffic
+| Additional Statistics Action For clear-show-runtime-with-traffic
| | [Documentation]
| | ... | Additional Statistics Action for clear and show runtime counters with
| | ... | running traffic.
| | [Documentation]
| | ... | Additional Statistics Action for clear and show runtime counters with
| | ... | running traffic.
| | Clear and show runtime counters with running traffic
| | ... | ${trial_duration} | ${rate} | ${frame_size} | ${traffic_profile}
| | ... | ${traffic_directions} | ${tx_port} | ${rx_port}
| | Clear and show runtime counters with running traffic
| | ... | ${trial_duration} | ${rate} | ${frame_size} | ${traffic_profile}
| | ... | ${traffic_directions} | ${tx_port} | ${rx_port}
+
+| Additional Statistics Action For noop
+| | [Documentation]
+| | ... | Additional Statistics Action for no operation.
+| |
+| | No operation
\ No newline at end of file
- "dkms"
- "iperf3"
- "linux-tools-common"
- "dkms"
- "iperf3"
- "linux-tools-common"
- "qemu-system"
- "socat"
- "unzip"
- "qemu-system"
- "socat"
- "unzip"
+- name: Install Meson (repository version is too old)
+ pip:
+ name:
+ - "meson==0.47.1"
+ tags:
+ - install-meson
+
- name: Set sudoers admin
lineinfile:
path: "/etc/sudoers"
- name: Set sudoers admin
lineinfile:
path: "/etc/sudoers"
| | ... | - post_run_stats - Statistics actions during traffic after timer.
| |
| | ${pre_stats}= | Create List
| | ... | - post_run_stats - Statistics actions during traffic after timer.
| |
| | ${pre_stats}= | Create List
-| | ... | vpp-clear-show-runtime-with-traffic
-| | ${post_stats}= | Create List | ${EMPTY}
-| | ${pre_run_stats}= | Create List | ${EMPTY}
-| | ${post_run_stats}= | Create List | ${EMPTY}
+| | ... | clear-show-runtime-with-traffic
+| | ${post_stats}= | Create List | noop
+| | ${pre_run_stats}= | Create List | noop
+| | ${post_run_stats}= | Create List | noop
| | Set Global Variable | ${pre_stats}
| | Set Global Variable | ${post_stats}
| | Set Global Variable | ${pre_run_stats}
| | Set Global Variable | ${pre_stats}
| | Set Global Variable | ${post_stats}
| | Set Global Variable | ${pre_run_stats}
| | ... | - packages_dir - Path to directory where VPP packages are stored.
| |
| | ${pre_stats}= | Create List
| | ... | - packages_dir - Path to directory where VPP packages are stored.
| |
| | ${pre_stats}= | Create List
-| | ... | vpp-clear-show-runtime-with-traffic | vpp-clear-stats
+| | ... | clear-show-runtime-with-traffic | vpp-clear-stats
| | ... | vpp-enable-packettrace | vpp-enable-elog
| | ${post_stats}= | Create List
| | ... | vpp-show-stats | vpp-show-packettrace | vpp-show-elog
| | ... | vpp-enable-packettrace | vpp-enable-elog
| | ${post_stats}= | Create List
| | ... | vpp-show-stats | vpp-show-packettrace | vpp-show-elog