Merge "Add source and destination seed value in IXIA RFC2544"
[yardstick.git] / yardstick / benchmark / scenarios / networking / testpmd_fwd.bash
1 #!/bin/bash
2 ##############################################################################
3 # Copyright (c) 2017 ZTE corporation and others.
4 #
5 # All rights reserved. This program and the accompanying materials
6 # are made available under the terms of the Apache License, Version 2.0
7 # which accompanies this distribution, and is available at
8 # http://www.apache.org/licenses/LICENSE-2.0
9 ##############################################################################
10 #!/bin/sh
11
12 set -e
13
14 # Commandline arguments
15 DST_MAC=$1         # MAC address of the peer port
16 ETH1=$2
17 ETH2=$3
18
19 DPDK_VERSION="dpdk-17.02"
20
21 load_modules()
22 {
23     if lsmod | grep "uio" &> /dev/null ; then
24     echo "uio module is loaded"
25     else
26     modprobe uio
27     fi
28
29     if lsmod | grep "igb_uio" &> /dev/null ; then
30     echo "igb_uio module is loaded"
31     else
32     insmod /opt/tempT/$DPDK_VERSION/x86_64-native-linuxapp-gcc/kmod/igb_uio.ko
33     fi
34
35     if lsmod | grep "rte_kni" &> /dev/null ; then
36     echo "rte_kni module is loaded"
37     else
38     insmod /opt/tempT/$DPDK_VERSION/x86_64-native-linuxapp-gcc/kmod/rte_kni.ko
39     fi
40 }
41
42 change_permissions()
43 {
44     chmod 777 /sys/bus/pci/drivers/virtio-pci/*
45     chmod 777 /sys/bus/pci/drivers/igb_uio/*
46 }
47
48 add_interface_to_dpdk(){
49     ip link set $ETH1 down
50     ip link set $ETH2 down
51     interfaces=$(lspci |grep Eth |tail -n +2 |awk '{print $1}')
52     /opt/tempT/$DPDK_VERSION/usertools//dpdk-devbind.py --bind=igb_uio $interfaces
53 }
54
55 run_testpmd()
56 {
57     blacklist=$(lspci |grep Eth |awk '{print $1}'|head -1)
58     cd /opt/tempT/$DPDK_VERSION/x86_64-native-linuxapp-gcc/app
59     sudo ./testpmd -c 0x07 -n 4 -b $blacklist -- -a --eth-peer=1,$DST_MAC --forward-mode=mac
60 }
61
62 main()
63 {
64     load_modules
65     change_permissions
66     add_interface_to_dpdk
67     run_testpmd
68 }
69
70 main