test suite reviews and discussions
 help / color / mirror / Atom feed
* [dts] [PATCH 00/26]  DTS support for Cavium NICs
@ 2017-04-06 17:51 Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 01/26] framework settings: Adding cavium PCI IDs and drivers Angela Czubak
                   ` (27 more replies)
  0 siblings, 28 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Changes done to run DTS for Cavium NICs

1) Cavium devices with 177d:a034 and 177d:0011 PCI IDs are added to NICs list, both of which are supported by thunder-nicvf driver
2) When appending pci devices info, the only Cavium NICs appended are the ones with 10Gb/s linkspeed
3) For arm64 architecture the hugepage size is detected and if it is 524288, then lesser amount of hugepages is acquired
4) Created a method in Dut class for getting the right binding script (if someone chooses to use older DPDK version)
5) Checking link is done via IPv4 ping alternately, so that DUT can be a system without IPv6 (previously link was detected solely by checking if an interface obtained an IPv6 address and then by using ping6). This also makes force binding necessary, as those interfaces are detected as active.
6) Checking whether vfio-pci was loaded using lsmod can be deceptive. If someone decides to use DPDK on a system with modules built into the kernel, then this approach will fail. Instead, DPDK binding script can be used and if it shows that vfio-pci can be used, DTS proceeds, otherwise it send with an error due to a failed assertion.
7) Modifying tests and config for Cavium NICs


Angela Czubak (26):
  framework settings: Adding cavium PCI IDs and drivers
  framework dut and project_dpdk: using correct available binding
    scripts
  framework dut and project_dpdk: binding smaller number of hugepages
    for     arm64
  framework crb: Appending only 10G devices for cavium
  framework project_dpdk: asserting loading vfio-pci by using DPDK    
    binding script
  framework: checking link with IPv4 ping
  tests: ipv4_reassembly - added splitting result in tcpdump_command
  framework: getting DPDK binding script moved to a method in dut
  tests: Modified tests to take cavium nics into account
  tests: checksum_offload - fixes
  tests: dynamic_config - taking into account cavium NICs
  tests: fdir - skipping fdir tests for Cavium NICs
  tests: ieee1588 - skipping ieee1588_enable test for Cavium NICs
  tests: jumboframes - skipping jumboframes tests testing bigger than   
     allowed frames for Cavium NICs
  tests: l2fwd - fixes to run on two cards (same NIC) and expecting    
    "L2FWD: entering main loop" instead of "memory mapped"
  tests: link_status_interrupt - skipping    
    test_link_status_interrupt_port_available for Cavium NICs
  tests: link_status_interrupt - skipping tests verifying adding MAC    
    addresses for Cavium NICs
  tests: pmdpcap - modifying the right config file + importing utils    
    after scapy
  tests: pmdrssreta - skipping tests for Cavium NICs
  tests: queue_start_stop - taking into account cavium NICs
  tests: quota_watermark - skipping tests for Cavium NICs
  tests: short_live - taking into account cavium NICs + fixes
  tests: tso - taking into account cavium NICs
  tests: uni_pkt - taking into account cavium NICs
  tests: unit_tests_dump - taking into account cavium NICs
  tests: unit_tests_lpm - asking for lesser amount of hugepages if they 
       are 524288kB

 conf/dpdk_support_test_case.xls     | Bin 25600 -> 8704 bytes
 conf/dpdk_test_case_checklist.xls   | Bin 31232 -> 21504 bytes
 framework/crb.py                    |   9 +-
 framework/dut.py                    |  52 ++++++---
 framework/pmd_output.py             |   4 +
 framework/project_dpdk.py           |  18 ++-
 framework/settings.py               |   4 +
 framework/test_capabilities.py      |   9 ++
 framework/test_case.py              |   2 +
 framework/tester.py                 |  11 ++
 nics/net_device.py                  |   8 +-
 tests/TestSuite_checksum_offload.py |  38 +++----
 tests/TestSuite_dynamic_config.py   |  10 +-
 tests/TestSuite_ipv4_reassembly.py  |   2 +-
 tests/TestSuite_l2fwd.py            |   4 +-
 tests/TestSuite_pmdpcap.py          |  13 ++-
 tests/TestSuite_queue_start_stop.py |   5 +-
 tests/TestSuite_short_live.py       |  44 ++++++--
 tests/TestSuite_shutdown_api.py     |  33 +++---
 tests/TestSuite_tso.py              |  10 +-
 tests/TestSuite_uni_pkt.py          | 219 ++++++++++++++++++++++++------------
 tests/TestSuite_unit_tests_dump.py  |  17 ++-
 tests/TestSuite_unit_tests_lpm.py   |   9 +-
 23 files changed, 365 insertions(+), 156 deletions(-)
 create mode 100644 framework/test_capabilities.py

-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 01/26] framework settings: Adding cavium PCI IDs and drivers
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 02/26] framework dut and project_dpdk: using correct available binding scripts Angela Czubak
                   ` (26 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Below patch adds preliminary settings to support Cavium NICs.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 framework/settings.py  | 4 ++++
 framework/test_case.py | 2 ++
 2 files changed, 6 insertions(+)

diff --git a/framework/settings.py b/framework/settings.py
index 44743f9..342314d 100644
--- a/framework/settings.py
+++ b/framework/settings.py
@@ -91,6 +91,8 @@ NICS = {
     'ConnectX4': '15b3:1013',
     'boulderrapid': '8086:15d0',
     'fortville_25g': '8086:158b',
+    'cavium_a034': '177d:a034',
+    'cavium_0011': '177d:0011',
 }
 
 DRIVERS = {
@@ -136,6 +138,8 @@ DRIVERS = {
     'ConnectX4': 'mlx5_core',
     'boulderrapid': 'fm10k',
     'fortville_25g': 'i40e',
+    'cavium_a034': 'thunder-nicvf',
+    'cavium_0011': 'thunder-nicvf',
 }
 
 """
diff --git a/framework/test_case.py b/framework/test_case.py
index 270f7b9..d97d898 100644
--- a/framework/test_case.py
+++ b/framework/test_case.py
@@ -365,5 +365,7 @@ class TestCase(object):
             bitrate *= 10
         elif nic == 'redrockcanyou':
             bitrate *= 40
+        elif driver == 'thunder-nicvf':
+            bitrate *= 10
 
         return bitrate * num_ports / 8 / (frame_size + 20)
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 02/26] framework dut and project_dpdk: using correct available binding scripts
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 01/26] framework settings: Adding cavium PCI IDs and drivers Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 03/26] framework dut and project_dpdk: binding smaller number of hugepages for arm64 Angela Czubak
                   ` (25 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Below patch makes scripts look for correct DPDK binding script,
checking whether 'usertools' or 'tools' directory is present and which
script exist in 'tools' directory ('dpdk-devbind.py' or
'dpdk_nic_bind.py')

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 framework/dut.py          | 21 ++++++++++++++++++---
 framework/project_dpdk.py | 20 ++++++++++++++++++--
 2 files changed, 36 insertions(+), 5 deletions(-)

diff --git a/framework/dut.py b/framework/dut.py
index 9cbdaf7..4ce5c3a 100644
--- a/framework/dut.py
+++ b/framework/dut.py
@@ -377,8 +377,15 @@ class Dut(Crb):
         if current_nic == 0:
             self.logger.info("Not nic need bind driver: %s" % driver)
             return
-
-        self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ')
+        op = self.send_command("ls")
+        if "usertools" in op:
+            self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ')
+        else:
+            op = self.send_command("ls tools")
+            if "dpdk_nic_bind.py" in op:
+                self.send_expect('tools/dpdk_nic_bind.py %s' % binding_list, '# ')
+            else:
+                self.send_expect('tools/dpdk-devbind.py %s' % binding_list, '# ')
 
     def unbind_interfaces_linux(self, nics_to_bind=None):
         """
@@ -402,7 +409,15 @@ class Dut(Crb):
             self.logger.info("Not nic need unbind driver")
             return
 
-        self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ', 30)
+        op = self.send_command("ls")
+        if "usertools" in op:
+            self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ')
+        else:
+            op = self.send_command("ls tools")
+            if "dpdk_nic_bind.py" in op:
+                self.send_expect('tools/dpdk_nic_bind.py %s' % binding_list, '# ')
+            else:
+                self.send_expect('tools/dpdk-devbind.py %s' % binding_list, '# ')
 
     def get_ports(self, nic_type='any', perf=None, socket=None):
         """
diff --git a/framework/project_dpdk.py b/framework/project_dpdk.py
index a0cb4c2..50740f8 100644
--- a/framework/project_dpdk.py
+++ b/framework/project_dpdk.py
@@ -314,7 +314,15 @@ class DPDKdut(Dut):
                 binding_list += '%s ' % (port_info['pci'])
             current_nic += 1
 
-        self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ')
+        op = self.send_command("ls")
+        if "usertools" in op:
+            self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ')
+        else:
+            op = self.send_command("ls tools")
+            if "dpdk_nic_bind.py" in op:
+                self.send_expect('tools/dpdk_nic_bind.py %s' % binding_list, '# ')
+            else:
+                self.send_expect('tools/dpdk-devbind.py %s' % binding_list, '# ')
 
     def unbind_interfaces_linux(self, nics_to_bind=None):
         """
@@ -329,7 +337,15 @@ class DPDKdut(Dut):
                 binding_list += '%s ' % (port_info['pci'])
             current_nic += 1
 
-        self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ', 30)
+        op = self.send_command("ls")
+        if "usertools" in op:
+            self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ')
+        else:
+            op = self.send_command("ls tools")
+            if "dpdk_nic_bind.py" in op:
+                self.send_expect('tools/dpdk_nic_bind.py %s' % binding_list, '# ')
+            else:
+                self.send_expect('tools/dpdk-devbind.py %s' % binding_list, '# ')
 
     def build_dpdk_apps(self, folder, extra_options=''):
         """
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 03/26] framework dut and project_dpdk: binding smaller number of hugepages for arm64
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 01/26] framework settings: Adding cavium PCI IDs and drivers Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 02/26] framework dut and project_dpdk: using correct available binding scripts Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 04/26] framework crb: Appending only 10G devices for cavium Angela Czubak
                   ` (24 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Changed default number of set hugepages from 1024 to 8 if architecture
is arm64 and huge pages size is 524288 kB.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 framework/dut.py          | 5 ++++-
 framework/project_dpdk.py | 6 +++++-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/framework/dut.py b/framework/dut.py
index 4ce5c3a..b5a21ce 100644
--- a/framework/dut.py
+++ b/framework/dut.py
@@ -308,7 +308,10 @@ class Dut(Crb):
             elif self.architecture == "ppc_64":
                 arch_huge_pages = hugepages if hugepages > 0 else 512
             elif self.architecture == "arm64":
-                arch_huge_pages = hugepages if hugepages > 0 else 2048
+                if hugepages_size == "524288":
+                    arch_huge_pages = hugepages if hugepages > 0 else 8
+                else:
+                    arch_huge_pages = hugepages if hugepages > 0 else 2048
 
             if total_huge_pages != arch_huge_pages:
                 # before all hugepage average distribution  by all socket,
diff --git a/framework/project_dpdk.py b/framework/project_dpdk.py
index 50740f8..97491c7 100644
--- a/framework/project_dpdk.py
+++ b/framework/project_dpdk.py
@@ -428,9 +428,13 @@ class DPDKtester(Tester):
 
         if not self.skip_setup:
             total_huge_pages = self.get_total_huge_pages()
+            hugepages_size = self.send_expect("awk '/Hugepagesize/ {print $2}' /proc/meminfo", "# ")
             if total_huge_pages == 0:
                 self.mount_huge_pages()
-                self.set_huge_pages(1024)
+                if hugepages_size == "524288":
+                    self.set_huge_pages(8)
+                else:
+                    self.set_huge_pages(1024)
 
             self.session.copy_file_to("dep/tgen.tgz")
             self.session.copy_file_to("dep/tclclient.tgz")
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 04/26] framework crb: Appending only 10G devices for cavium
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
                   ` (2 preceding siblings ...)
  2017-04-06 17:51 ` [dts] [PATCH 03/26] framework dut and project_dpdk: binding smaller number of hugepages for arm64 Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 05/26] framework project_dpdk: asserting loading vfio-pci by using DPDK binding script Angela Czubak
                   ` (23 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

When collecting pci devices info in
pci_devices_information_uncached_linux devices are checked if they are
from cavium and if so linkspeed is detected to append only 10Gb
interfaces

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 framework/crb.py | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/framework/crb.py b/framework/crb.py
index 9b41a0f..63c8093 100644
--- a/framework/crb.py
+++ b/framework/crb.py
@@ -268,7 +268,14 @@ class Crb(object):
         match = pattern.findall(out)
         self.pci_devices_info = []
         for i in range(len(match)):
-            self.pci_devices_info.append((match[i][0], match[i][1]))
+            #check if device is cavium and check its linkspeed, append only if it is 10G
+            if "177d:" in match[i][1]:
+                linkspeed = "10000"
+                nic_linkspeed = self.send_command("cat /sys/bus/pci/devices/%s/net/*/speed" % match[i][0])
+                if nic_linkspeed == linkspeed:
+                    self.pci_devices_info.append((match[i][0], match[i][1]))
+            else:
+                self.pci_devices_info.append((match[i][0], match[i][1]))
 
     def pci_devices_information_uncached_freebsd(self):
         """
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 05/26] framework project_dpdk: asserting loading vfio-pci by using DPDK binding script
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
                   ` (3 preceding siblings ...)
  2017-04-06 17:51 ` [dts] [PATCH 04/26] framework crb: Appending only 10G devices for cavium Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 06/26] framework: checking link with IPv4 ping Angela Czubak
                   ` (22 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

If one uses kernel with builtin modules lsmod does not print modules
even though they may be used. Thus, it is better to check if vfio-pci
can be bound by checking status with DPDK binding script (it appears in
unused drivers).

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 framework/project_dpdk.py | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/framework/project_dpdk.py b/framework/project_dpdk.py
index 97491c7..f3d3701 100644
--- a/framework/project_dpdk.py
+++ b/framework/project_dpdk.py
@@ -102,8 +102,17 @@ class DPDKdut(Dut):
             self.send_expect("rmmod vfio", "#", 70)
             self.send_expect("modprobe vfio", "#", 70)
             self.send_expect("modprobe vfio-pci", "#", 70)
-            out = self.send_expect("lsmod | grep vfio_iommu_type1", "#")
-            assert ("vfio_iommu_type1" in out), "Failed to setup vfio-pci"
+            # check with dpdk binding script instead of lsmod - kernel may have builtin modules
+            op = self.send_command("ls")
+            if "usertools" in op:
+                out = self.send_expect('usertools/dpdk-devbind.py --status', '# ')
+            else:
+                op = self.send_command("ls tools")
+                if "dpdk_nic_bind.py" in op:
+                    out = self.send_expect('tools/dpdk_nic_bind.py --status', '# ')
+                else:
+                    out = self.send_expect('tools/dpdk-devbind.py --status', '# ')
+            assert ("vfio-pci" in out), "Failed to setup vfio-pci"
         else:
             self.send_expect("modprobe uio", "#", 70)
             out = self.send_expect("lsmod | grep igb_uio", "#")
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 06/26]  framework: checking link with IPv4 ping
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
                   ` (4 preceding siblings ...)
  2017-04-06 17:51 ` [dts] [PATCH 05/26] framework project_dpdk: asserting loading vfio-pci by using DPDK binding script Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 07/26] tests: ipv4_reassembly - added splitting result in tcpdump_command Angela Czubak
                   ` (21 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Some kernels may not use IPv6 and hence there is no point using ping6.
If lack of link by IPv6 is detected then IPv4 pings are sent
(previously ports where skipped if they had no IPv6 connectivity).
DPDK binding script uses "--force" argument, since interfaces are
detected as active.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 framework/dut.py          | 30 ++++++++++++++++++++----------
 framework/project_dpdk.py |  2 +-
 framework/tester.py       | 11 +++++++++++
 nics/net_device.py        |  8 ++++----
 4 files changed, 36 insertions(+), 15 deletions(-)

diff --git a/framework/dut.py b/framework/dut.py
index b5a21ce..cd899c8 100644
--- a/framework/dut.py
+++ b/framework/dut.py
@@ -382,7 +382,7 @@ class Dut(Crb):
             return
         op = self.send_command("ls")
         if "usertools" in op:
-            self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ')
+            self.send_expect('usertools/dpdk-devbind.py --force %s' % binding_list, '# ')
         else:
             op = self.send_command("ls tools")
             if "dpdk_nic_bind.py" in op:
@@ -602,7 +602,12 @@ class Dut(Crb):
             if ":" not in ipv6:
                 ipv6 = "Not connected"
 
+            out = self.send_expect("ip -family inet address show dev %s | awk '/inet/ { print $2 }'"
+                    % intf, "# ")
+            ipv4 = out.split('/')[0]
+
             port_info['ipv6'] = ipv6
+            port_info['ipv4'] = ipv4
 
     def rescan_ports_uncached_freebsd(self):
         unknow_interface = RED('Skipped: unknow_interface')
@@ -922,15 +927,20 @@ class Dut(Crb):
                 # skip ping those not connected port
                 ipv6 = self.get_ipv6_address(dutPort)
                 if ipv6 == "Not connected":
-                    continue
-
-                if getattr(self, 'send_ping6', None):
-                    out = self.send_ping6(
-                        dutPort, self.tester.ports_info[remotePort]['ipv6'],
-                        self.get_mac_address(dutPort))
-                else:
-                    out = self.tester.send_ping6(
-                        remotePort, ipv6, self.get_mac_address(dutPort))
+                    if self.tester.ports_info[remotePort].has_key('ipv4'):
+			out = self.tester.send_ping(
+				dutPort, self.tester.ports_info[remotePort]['ipv4'],
+				self.get_mac_address(dutPort))
+		    else:
+                    	continue
+		else:
+                    if getattr(self, 'send_ping6', None):
+                    	out = self.send_ping6(
+                        	dutPort, self.tester.ports_info[remotePort]['ipv6'],
+                        	self.get_mac_address(dutPort))
+                    else:
+                    	out = self.tester.send_ping6(
+				remotePort, ipv6, self.get_mac_address(dutPort))
 
                 if ('64 bytes from' in out):
                     self.logger.info("PORT MAP: [dut %d: tester %d]" % (dutPort, remotePort))
diff --git a/framework/project_dpdk.py b/framework/project_dpdk.py
index f3d3701..2a50e87 100644
--- a/framework/project_dpdk.py
+++ b/framework/project_dpdk.py
@@ -325,7 +325,7 @@ class DPDKdut(Dut):
 
         op = self.send_command("ls")
         if "usertools" in op:
-            self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ')
+            self.send_expect('usertools/dpdk-devbind.py --force %s' % binding_list, '# ')
         else:
             op = self.send_command("ls tools")
             if "dpdk_nic_bind.py" in op:
diff --git a/framework/tester.py b/framework/tester.py
index d793e91..5cf5e00 100644
--- a/framework/tester.py
+++ b/framework/tester.py
@@ -336,6 +336,7 @@ class Tester(Crb):
             macaddr = port.get_mac_addr()
 
             ipv6 = port.get_ipv6_addr()
+            ipv4 = port.get_ipv4_addr()
 
             # store the port info to port mapping
             self.ports_info.append({'port': port,
@@ -343,6 +344,7 @@ class Tester(Crb):
                                     'type': pci_id,
                                     'intf': intf,
                                     'mac': macaddr,
+				    'ipv4': ipv4,
                                     'ipv6': ipv6})
 
             # return if port is not connect x3
@@ -364,6 +366,15 @@ class Tester(Crb):
                                     'mac': macaddr,
                                     'ipv6': ipv6})
 
+    def send_ping(self, localPort, ipv4, mac):
+        """
+        Send ping6 packet from local port with destination ipv4 address.
+        """
+        if self.ports_info[localPort]['type'] == 'ixia':
+            return "Not implemented yet"
+        else:
+            return self.send_expect("ping -w 5 -c 5 -A -I %s %s" % (self.ports_info[localPort]['intf'], ipv4), "# ", 10)
+
     def send_ping6(self, localPort, ipv6, mac):
         """
         Send ping6 packet from local port with destination ipv6 address.
diff --git a/nics/net_device.py b/nics/net_device.py
index 0af4ad5..4861145 100644
--- a/nics/net_device.py
+++ b/nics/net_device.py
@@ -343,21 +343,21 @@ class NetDevice(object):
         """
         get_ipv4_addr = getattr(
             self, 'get_ipv4_addr_%s' % self.__get_os_type())
-        return get_ipv4_addr(self.intf_name, self.currenct_driver)
+        return get_ipv4_addr(self.intf_name, self.current_driver)
 
     def get_ipv4_addr_linux(self, intf, driver):
         """
         Get ipv4 address of specified pci device on linux.
         """
         try:
-            get_ipv4_addr_linux = getattr(self, 'get_ipv4_linux_%s' % driver)
+            get_ipv4_addr_linux = getattr(self, 'get_ipv4_addr_linux_%s' % driver)
         except Exception as e:
             generic_driver = 'generic'
             get_ipv4_addr_linux = getattr(
-                self, 'get_ipv4_linux_%s' %
+                self, 'get_ipv4_addr_linux_%s' %
                 generic_driver)
 
-        return get_ipv4_addr_linux(intf, domain_id, bus_id, devfun_id, driver)
+        return get_ipv4_addr_linux(intf)
 
     def get_ipv4_addr_linux_generic(self, intf):
         """
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 07/26] tests: ipv4_reassembly - added splitting result in tcpdump_command
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
                   ` (5 preceding siblings ...)
  2017-04-06 17:51 ` [dts] [PATCH 06/26] framework: checking link with IPv4 ping Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 08/26] framework: getting DPDK binding script moved to a method in dut Angela Czubak
                   ` (20 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Result from tcpdump_command may contain something more than only number,
added splitting and taking first element of this operation so that
casting to int proceeds

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_ipv4_reassembly.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/TestSuite_ipv4_reassembly.py b/tests/TestSuite_ipv4_reassembly.py
index 3f0e725..8f28823 100644
--- a/tests/TestSuite_ipv4_reassembly.py
+++ b/tests/TestSuite_ipv4_reassembly.py
@@ -257,7 +257,7 @@ class TestIpReassembly(TestCase):
         """
 
         result = self.tester.send_expect(command, '#')
-        return int(result.strip())
+        return int(result.strip().split()[0])
 
     def number_of_received_packets(self, tcp_port):
         """
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 08/26] framework: getting DPDK binding script moved to a method in dut
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
                   ` (6 preceding siblings ...)
  2017-04-06 17:51 ` [dts] [PATCH 07/26] tests: ipv4_reassembly - added splitting result in tcpdump_command Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 09/26] tests: Modified tests to take cavium nics into account Angela Czubak
                   ` (19 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Since DPDK binding script is used in a few places and the right one
should be chosen the code doing it has been moved to
get_dpdk_bind_script method

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 framework/dut.py          | 34 ++++++++++++++++------------------
 framework/project_dpdk.py | 33 ++++++---------------------------
 2 files changed, 22 insertions(+), 45 deletions(-)

diff --git a/framework/dut.py b/framework/dut.py
index cd899c8..3e90670 100644
--- a/framework/dut.py
+++ b/framework/dut.py
@@ -359,6 +359,18 @@ class Dut(Crb):
         else:
             return False
 
+    def get_dpdk_bind_script(self):
+        op = self.send_command("ls")
+        if "usertools" in op:
+            res = 'usertools/dpdk-devbind.py'
+        else:
+            op = self.send_command("ls tools")
+            if "dpdk_nic_bind.py" in op:
+                res = 'tools/dpdk_nic_bind.py'
+            else:
+                res = 'tools/dpdk-devbind.py'
+        return res
+
     def bind_interfaces_linux(self, driver='igb_uio', nics_to_bind=None):
         """
         Bind the interfaces to the selected driver. nics_to_bind can be None
@@ -380,15 +392,8 @@ class Dut(Crb):
         if current_nic == 0:
             self.logger.info("Not nic need bind driver: %s" % driver)
             return
-        op = self.send_command("ls")
-        if "usertools" in op:
-            self.send_expect('usertools/dpdk-devbind.py --force %s' % binding_list, '# ')
-        else:
-            op = self.send_command("ls tools")
-            if "dpdk_nic_bind.py" in op:
-                self.send_expect('tools/dpdk_nic_bind.py %s' % binding_list, '# ')
-            else:
-                self.send_expect('tools/dpdk-devbind.py %s' % binding_list, '# ')
+        bind_script_path = self.get_dpdk_bind_script()
+        self.send_expect('%s --force %s' % (bind_script_path, binding_list), '# ')
 
     def unbind_interfaces_linux(self, nics_to_bind=None):
         """
@@ -412,15 +417,8 @@ class Dut(Crb):
             self.logger.info("Not nic need unbind driver")
             return
 
-        op = self.send_command("ls")
-        if "usertools" in op:
-            self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ')
-        else:
-            op = self.send_command("ls tools")
-            if "dpdk_nic_bind.py" in op:
-                self.send_expect('tools/dpdk_nic_bind.py %s' % binding_list, '# ')
-            else:
-                self.send_expect('tools/dpdk-devbind.py %s' % binding_list, '# ')
+        bind_script_path = self.get_dpdk_bind_script()
+        self.send_expect('%s --force %s' % (bind_script_path, binding_list), '# ')
 
     def get_ports(self, nic_type='any', perf=None, socket=None):
         """
diff --git a/framework/project_dpdk.py b/framework/project_dpdk.py
index 2a50e87..c4a00bc 100644
--- a/framework/project_dpdk.py
+++ b/framework/project_dpdk.py
@@ -103,15 +103,8 @@ class DPDKdut(Dut):
             self.send_expect("modprobe vfio", "#", 70)
             self.send_expect("modprobe vfio-pci", "#", 70)
             # check with dpdk binding script instead of lsmod - kernel may have builtin modules
-            op = self.send_command("ls")
-            if "usertools" in op:
-                out = self.send_expect('usertools/dpdk-devbind.py --status', '# ')
-            else:
-                op = self.send_command("ls tools")
-                if "dpdk_nic_bind.py" in op:
-                    out = self.send_expect('tools/dpdk_nic_bind.py --status', '# ')
-                else:
-                    out = self.send_expect('tools/dpdk-devbind.py --status', '# ')
+            bind_script_path = self.get_dpdk_bind_script()
+            out = self.send_expect('%s --status' % bind_script_path, '# ')
             assert ("vfio-pci" in out), "Failed to setup vfio-pci"
         else:
             self.send_expect("modprobe uio", "#", 70)
@@ -323,15 +316,8 @@ class DPDKdut(Dut):
                 binding_list += '%s ' % (port_info['pci'])
             current_nic += 1
 
-        op = self.send_command("ls")
-        if "usertools" in op:
-            self.send_expect('usertools/dpdk-devbind.py --force %s' % binding_list, '# ')
-        else:
-            op = self.send_command("ls tools")
-            if "dpdk_nic_bind.py" in op:
-                self.send_expect('tools/dpdk_nic_bind.py %s' % binding_list, '# ')
-            else:
-                self.send_expect('tools/dpdk-devbind.py %s' % binding_list, '# ')
+        bind_script_path = self.get_dpdk_bind_script()
+        self.send_expect('%s --force %s' % (bind_script_path, binding_list), '# ')
 
     def unbind_interfaces_linux(self, nics_to_bind=None):
         """
@@ -346,15 +332,8 @@ class DPDKdut(Dut):
                 binding_list += '%s ' % (port_info['pci'])
             current_nic += 1
 
-        op = self.send_command("ls")
-        if "usertools" in op:
-            self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ')
-        else:
-            op = self.send_command("ls tools")
-            if "dpdk_nic_bind.py" in op:
-                self.send_expect('tools/dpdk_nic_bind.py %s' % binding_list, '# ')
-            else:
-                self.send_expect('tools/dpdk-devbind.py %s' % binding_list, '# ')
+        bind_script_path = self.get_dpdk_bind_script()
+        self.send_expect('%s --force %s' % (bind_script_path, binding_list), '# ')
 
     def build_dpdk_apps(self, folder, extra_options=''):
         """
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 09/26] tests: Modified tests to take cavium nics into account
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
                   ` (7 preceding siblings ...)
  2017-04-06 17:51 ` [dts] [PATCH 08/26] framework: getting DPDK binding script moved to a method in dut Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-10 17:08   ` Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 10/26] tests: checksum_offload - fixes Angela Czubak
                   ` (18 subsequent siblings)
  27 siblings, 1 reply; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Testpmd should be run with hardware vlan filter disabled for cavium
nics as the driver does not offer this kind of capability and the
application stops at the beginning, so if cavium nic is used the
--disable-hw-vlan-filter flag is added.
Shutdown api test is also modified so as to skip disabling jumbo frames
mixed with vlan if hardware-assisted VLAN filtering not
configured (rte_eth_dev_set_vlan_offload return -ENOTSUP + there is
"failed diag" in the tespmd output).
Tests to be skipped for cavium nics are added to
conf/dpdk_test_case_checklist.xls

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 31232 -> 19968 bytes
 framework/pmd_output.py           |   4 ++++
 tests/TestSuite_pmdpcap.py        |   4 ++++
 tests/TestSuite_short_live.py     |   6 +++---
 tests/TestSuite_shutdown_api.py   |  33 +++++++++++++++++----------------
 5 files changed, 28 insertions(+), 19 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index 67970e9e42cbec51c8bde0c2d7121844cb0cf2f8..0345762f0c894145ac84f35bb41467462f443c6c 100644
GIT binary patch
literal 19968
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
J<@r42{|~TFqW1s*

literal 31232
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

diff --git a/framework/pmd_output.py b/framework/pmd_output.py
index e8e2a2c..f52332b 100644
--- a/framework/pmd_output.py
+++ b/framework/pmd_output.py
@@ -119,6 +119,10 @@ class PmdOutput():
         self.coremask = create_mask(core_list)
         command = "./%s/app/testpmd -c %s -n %d %s -- -i %s" \
             % (self.dut.target, self.coremask, self.dut.get_memory_channels(), eal_param, param)
+        if "cavium" in self.dut.nic_type:
+            # thunder nicvf does not support hw vlan filter, the application crashes
+            # without this option added
+            command += " --disable-hw-vlan-filter"
         out = self.dut.send_expect(command, "testpmd> ", 120)
         self.command = command
         return out
diff --git a/tests/TestSuite_pmdpcap.py b/tests/TestSuite_pmdpcap.py
index a080dd0..0a79e96 100644
--- a/tests/TestSuite_pmdpcap.py
+++ b/tests/TestSuite_pmdpcap.py
@@ -124,6 +124,8 @@ class TestPmdPcap(TestCase):
         command = ("./{}/app/testpmd -c {} -n {} " +
                    "--vdev=eth_pcap0,rx_pcap={},tx_pcap={} " +
                    "-- -i --port-topology=chained")
+        if "cavium" in self.dut.nic_type:
+            command += " --disable-hw-vlan-filter"
 
         self.dut.send_expect(command.format(self.target, core_mask,
                              self.memory_channel,
@@ -158,6 +160,8 @@ class TestPmdPcap(TestCase):
                    "--vdev=eth_pcap0,rx_pcap={},tx_pcap={} " +
                    "--vdev=eth_pcap1,rx_pcap={},tx_pcap={} " +
                    "-- -i")
+        if "cavium" in self.dut.nic_type:
+            command += " --disable-hw-vlan-filter"
 
         self.dut.send_expect(command.format(self.target, core_mask,
                                             self.memory_channel,
diff --git a/tests/TestSuite_short_live.py b/tests/TestSuite_short_live.py
index 320951f..72745a9 100644
--- a/tests/TestSuite_short_live.py
+++ b/tests/TestSuite_short_live.py
@@ -125,7 +125,7 @@ class TestShortLiveApp(TestCase):
         Basic rx/tx forwarding test
         """
         #dpdk start
-        self.dut.send_expect("./x86_64-native-linuxapp-gcc/app/testpmd -c 0xf -n 4 -- -i --portmask=0x3", "testpmd>", 120)
+        self.dut.send_expect("./%s/app/testpmd -c 0xf -n 4 -- -i --portmask=0x3" % self.target, "testpmd>", 120)
         self.dut.send_expect("set fwd mac", "testpmd>")
         self.dut.send_expect("set promisc all off", "testpmd>")
         self.dut.send_expect("start", "testpmd>")
@@ -137,7 +137,7 @@ class TestShortLiveApp(TestCase):
         """
         time = []
         regex = re.compile(".* (\d+:\d{2}\.\d{2}).*")
-        out = self.dut.send_expect("echo quit | time ./x86_64-native-linuxapp-gcc/app/testpmd -c 0x3 -n 4 --no-pci -- -i", "#", 120)
+        out = self.dut.send_expect("echo quit | time ./%s/app/testpmd -c 0x3 -n 4 --no-pci -- -i" % self.target, "#", 120)
         time = regex.findall(out)
 
         if time != []:
@@ -150,7 +150,7 @@ class TestShortLiveApp(TestCase):
         for i in range(repeat_time):
             #dpdk start
             print "clean_up_with_signal_testpmd round %d" % (i + 1)
-            self.dut.send_expect("./x86_64-native-linuxapp-gcc/app/testpmd -c 0xf -n 4 -- -i --portmask=0x3", "testpmd>", 120)
+            self.dut.send_expect("./%s/app/testpmd -c 0xf -n 4 -- -i --portmask=0x3" % self.target, "testpmd>", 120)
             self.dut.send_expect("set fwd mac", "testpmd>")
             self.dut.send_expect("set promisc all off", "testpmd>")
             self.dut.send_expect("start", "testpmd>")
diff --git a/tests/TestSuite_shutdown_api.py b/tests/TestSuite_shutdown_api.py
index 66219f5..b616ed5 100644
--- a/tests/TestSuite_shutdown_api.py
+++ b/tests/TestSuite_shutdown_api.py
@@ -332,25 +332,26 @@ class TestShutdownApi(TestCase):
         jumbo_size = 2048
         self.pmdout.start_testpmd("Default", "--portmask=%s --port-topology=loop" % utils.create_mask(self.ports), socket=self.ports_socket)
         self.dut.send_expect("port stop all", "testpmd> ", 100)
-        self.dut.send_expect("vlan set strip off all", "testpmd> ")
-        self.dut.send_expect("port config all max-pkt-len %d" % jumbo_size, "testpmd> ")
-        for port in self.ports:
-            self.dut.send_expect("rx_vlan add 1 %d" % port, "testpmd> ")
-        self.dut.send_expect("set fwd mac", "testpmd>")
-        self.dut.send_expect("port start all", "testpmd> ", 100)
-        self.dut.send_expect("start", "testpmd> ")
+        out = self.dut.send_expect("vlan set strip off all", "testpmd> ")
+        if "fail" not in out:
+            self.dut.send_expect("port config all max-pkt-len %d" % jumbo_size, "testpmd> ")
+            for port in self.ports:
+                self.dut.send_expect("rx_vlan add 1 %d" % port, "testpmd> ")
+            self.dut.send_expect("set fwd mac", "testpmd>")
+            self.dut.send_expect("port start all", "testpmd> ", 100)
+            self.dut.send_expect("start", "testpmd> ")
 
-        if self.nic in ['magnolia_park', 'niantic', 'twinpond', 'kawela_4', 'ironpond', 'springfountain', 'springville', 'powerville']:
-            # nantic vlan length will not be calculated
-            vlan_jumbo_size = jumbo_size + 4
-        else:
-            vlan_jumbo_size = jumbo_size
+            if self.nic in ['magnolia_park', 'niantic', 'twinpond', 'kawela_4', 'ironpond', 'springfountain', 'springville', 'powerville']:
+                # nantic vlan length will not be calculated
+                vlan_jumbo_size = jumbo_size + 4
+            else:
+                vlan_jumbo_size = jumbo_size
 
-        self.check_forwarding(pktSize=vlan_jumbo_size - 1, vlan=True)
-        self.check_forwarding(pktSize=vlan_jumbo_size, vlan=True)
-        self.check_forwarding(pktSize=vlan_jumbo_size + 1, received=False, vlan=True)
+            self.check_forwarding(pktSize=vlan_jumbo_size - 1, vlan=True)
+            self.check_forwarding(pktSize=vlan_jumbo_size, vlan=True)
+            self.check_forwarding(pktSize=vlan_jumbo_size + 1, received=False, vlan=True)
 
-        self.dut.send_expect("stop", "testpmd> ")
+            self.dut.send_expect("stop", "testpmd> ")
 
         self.dut.send_expect("port stop all", "testpmd> ", 100)
         self.dut.send_expect("port config all hw-vlan off", "testpmd> ")
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 10/26]  tests: checksum_offload - fixes
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
                   ` (8 preceding siblings ...)
  2017-04-06 17:51 ` [dts] [PATCH 09/26] tests: Modified tests to take cavium nics into account Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 11/26] tests: dynamic_config - taking into account cavium NICs Angela Czubak
                   ` (17 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Sniffing packets with scapy seems to fail, switched to tcpdump.
Taken into account capabilities of Cavium nics, created
framework/test_capabilities.py to contain information useful when
skipping not applicable parts of tests.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls   | Bin 19968 -> 19968 bytes
 framework/test_capabilities.py      |   9 +++++++++
 tests/TestSuite_checksum_offload.py |  38 +++++++++++++++++-------------------
 3 files changed, 27 insertions(+), 20 deletions(-)
 create mode 100644 framework/test_capabilities.py

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index 0345762f0c894145ac84f35bb41467462f443c6c..5811198e687c2a63cf326b7ca378849b0a3e2038 100644
GIT binary patch
delta 429
zcmZpe!`Lu~aYH+onyD}Y5U?=>XQZZ<7`8I-F;rV1i5P)IByA?I<(j~LnU{}=fuUft
z3pY0_W94K=UhB!-0{X1+i3Y|dlXnS7Ge&~ML^6x=^9u6wQgo6N%Q8!IA<_zh3XB1h
z9R(es%9{i=7|kcI7Sw?7H(wU~#A+_iz)(~XpPZ4JoLvmmSeBTRnG&CtlbBu%ltD5L
zX0m~Sp`ii;!{h`Bg~>0(pD`9}J};5Q$e6s@N~&Cmm4iuuA!+g=o7uL18MqjdfS%%K
z$O4iO9wU&)4(BledD(CtGqT)d6We5ESD>5&5W|2hPz7@`n8(PF41^2}n|ImnXJpKo
zTxIVHBoEkYGUiTxWiQQ`H<`@=B;o@mCjrU)%{Ls{m^Qf_VdgajYIFeNhHNE$iOCn;
b<=Hk{&HkyfYV$XDCT6DDwwr%>u`vSxrIT*u

delta 303
zcmZpe!`Lu~aYH+o+FKz8AYfw%&PYuyF>GbvW4LLKBw_>-DYu@ymTLlgH!mj>14G_s
z7jAA=#*)d7yw;Pu1@tHH7m#KQ0rSKJ`6p`$DlmG3cx=guWtpY9lP3ylFd9wH6IOx>
zY<@2IiFGrt1Scb7-ez&hEJntp$r1LAo0+A*DNg3K?U{VvHcA=f0tXNQ1+onM49o%y
zK<gP883cfkiD`3;-F`;KtjRJCuKZa*@xKgQV0m!{o5>qwr5Up)p8=9NlUF#n0#&^O
zlO~R?jJcbu9NU;CPw-f@$>j($uQ5=o0}wOZVmrh>`J%f#Tg9}vS&Noz{^ria%=FV{
J^Di$pW&p}<P%8ic

diff --git a/framework/test_capabilities.py b/framework/test_capabilities.py
new file mode 100644
index 0000000..2ad3fae
--- /dev/null
+++ b/framework/test_capabilities.py
@@ -0,0 +1,9 @@
+#this structure will be used to determine which parts of tests should be skipped
+"""
+Dict used to skip parts of tests if NIC is known not to support them
+"""
+DRIVER_TEST_LACK_CAPA = {
+	'sctp_tx_offload' : ['thunder-nicvf', 'fm10k']
+}
+
+
diff --git a/tests/TestSuite_checksum_offload.py b/tests/TestSuite_checksum_offload.py
index 9b9015d..54e5001 100644
--- a/tests/TestSuite_checksum_offload.py
+++ b/tests/TestSuite_checksum_offload.py
@@ -43,7 +43,8 @@ import utils
 
 from test_case import TestCase
 from pmd_output import PmdOutput
-
+from packet import Packet, sniff_packets, load_sniff_packets, strip_pktload
+from test_capabilities import DRIVER_TEST_LACK_CAPA
 
 class TestChecksumOffload(TestCase):
 
@@ -169,21 +170,16 @@ class TestChecksumOffload(TestCase):
 
         self.tester.send_expect("exit()", "#")
 
-        self.tester.scapy_background()
-        self.tester.scapy_append('p = sniff(filter="ether src %s", iface="%s", count=%d)' % (sniff_src, rx_interface, len(packets_sent)))
-        self.tester.scapy_append('nr_packets=len(p)')
-        self.tester.scapy_append('reslist = [p[i].sprintf("%IP.chksum%;%TCP.chksum%;%UDP.chksum%;%SCTP.chksum%") for i in range(nr_packets)]')
-        self.tester.scapy_append('import string')
-        self.tester.scapy_append('RESULT = string.join(reslist, ",")')
-
-        # Send packet.
-        self.tester.scapy_foreground()
+        inst = sniff_packets(intf=rx_interface, count=len(packets_sent), filters=[{'layer':'ether', 'config':{'src': sniff_src}}])
 
         for packet_type in packets_sent.keys():
             self.tester.scapy_append('sendp([%s], iface="%s")' % (packets_sent[packet_type], tx_interface))
 
         self.tester.scapy_execute()
-        out = self.tester.scapy_get_result()
+	p = load_sniff_packets(inst)
+	nr_packets=len(p)
+	reslist = [p[i].pktgen.pkt.sprintf("%IP.chksum%;%TCP.chksum%;%UDP.chksum%;%SCTP.chksum%") for i in range(nr_packets)]
+	out = string.join(reslist, ",")
         packets_received = out.split(',')
         self.verify(len(packets_sent) == len(packets_received), "Unexpected Packets Drop")
 
@@ -223,7 +219,7 @@ class TestChecksumOffload(TestCase):
 
         pktsChkErr = {'IP/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IP(chksum=0x0)/UDP(chksum=0xf)/("X"*46)' % mac,
                       'IP/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IP(chksum=0x0)/TCP(chksum=0xf)/("X"*46)' % mac,
-                      'IP/SCTP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IP(chksum=0x0)/SCTP(chksum=0xf)/("X"*48)' % mac,
+		      'IP/SCTP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IP(chksum=0x0)/SCTP(chksum=0xf)/("X"*48)' % mac,
                       'IPv6/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IPv6(src="::1")/UDP(chksum=0xf)/("X"*46)' % mac,
                       'IPv6/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IPv6(src="::1")/TCP(chksum=0xf)/("X"*46)' % mac}
 
@@ -233,7 +229,7 @@ class TestChecksumOffload(TestCase):
                 'IPv6/UDP': 'Ether(dst="02:00:00:00:00:00", src="%s")/Dot1Q(vlan=1)/IPv6(src="::1")/UDP()/("X"*46)' % mac,
                 'IPv6/TCP': 'Ether(dst="02:00:00:00:00:00", src="%s")/Dot1Q(vlan=1)/IPv6(src="::1")/TCP()/("X"*46)' % mac}
 
-        if self.kdriver == "fm10k":
+        if self.kdriver in DRIVER_TEST_LACK_CAPA['sctp_tx_offload']:
             del pktsChkErr['IP/SCTP']
             del pkts['IP/SCTP']
 
@@ -258,11 +254,8 @@ class TestChecksumOffload(TestCase):
                     'IPv6/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6(src="::1")/TCP()/("X"*46)' % mac}
 
         result = dict()
-        if self.kdriver == "fm10k":
-            del pkts['IP/SCTP']
-            del pkts_ref['IP/SCTP']
-
-        self.checksum_enablehw(self.dut_ports[0])
+        
+	self.checksum_enablehw(self.dut_ports[0])
 
         # get the packet checksum value
         result = self.get_chksum_values(pkts_ref)
@@ -281,6 +274,11 @@ class TestChecksumOffload(TestCase):
                     'IPv6/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6(src="::1")/UDP(chksum=0xf)/("X"*46)' % mac,
                     'IPv6/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6(src="::1")/TCP(chksum=0xf)/("X"*46)' % mac}
 
+	if self.kdriver in DRIVER_TEST_LACK_CAPA['sctp_tx_offload']:
+            del pkts_good['IP/SCTP']
+            del pkts_bad['IP/SCTP']
+            del pkts_ref['IP/SCTP']
+
         # send the packet checksum value same with the expected value
         self.checksum_valid_flags(pkts_good, 1)
         # send the packet checksum value different from the expected value
@@ -307,7 +305,7 @@ class TestChecksumOffload(TestCase):
                     'IPv6/UDP': 'Ether(dst="02:00:00:00:00:00", src="%s")/IPv6(src="::1")/UDP()/("X"*46)' % mac,
                     'IPv6/TCP': 'Ether(dst="02:00:00:00:00:00", src="%s")/IPv6(src="::1")/TCP()/("X"*46)' % mac}
 
-        if self.kdriver == "fm10k":
+        if self.kdriver in DRIVER_TEST_LACK_CAPA['sctp_tx_offload']:
             del pkts['IP/SCTP']
             del pkts_ref['IP/SCTP']
 
@@ -396,7 +394,7 @@ class TestChecksumOffload(TestCase):
                 'IPv6/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6()/UDP()/("X"* (lambda x: x - 66 if x > 66 else 0)(%d))',
                 'IPv6/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6()/TCP()/("X"* (lambda x: x - 78 if x > 78 else 0)(%d))'}
 
-        if self.kdriver == "fm10k":
+        if self.kdriver in DRIVER_TEST_LACK_CAPA['sctp_tx_offload']:
             del pkts['IP/SCTP']
 
         lcore = "1S/2C/1T"
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 11/26] tests: dynamic_config - taking into account cavium NICs
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
                   ` (9 preceding siblings ...)
  2017-04-06 17:51 ` [dts] [PATCH 10/26] tests: checksum_offload - fixes Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 12/26] tests: fdir - skipping fdir tests for Cavium NICs Angela Czubak
                   ` (16 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Testpmd must be run with hardware VLAN filter disabled as thunder
driver does not support this feature.
Since disabling promiscuous and allmulticast is not supported for
thunder driver following test cases are set to be skipped:
dynamic_config_broadcast, dynamic_config_disable_promiscuous,
dynamic_config_allmulticast

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 19968 -> 20480 bytes
 tests/TestSuite_dynamic_config.py |  10 ++++++++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index 5811198e687c2a63cf326b7ca378849b0a3e2038..7e42bbeba1c9414cf3cde5f0220c9b3e049c57cc 100644
GIT binary patch
delta 634
zcmZvZF)Ra77{|YNM@y-bh^SP9q7w-sq)DqMG^DGAMRV@naeD31YX_EAq^y-^V=!7I
zc#Byq#A30VY&MI8dUvX>;U(Y8`~Sc1`@Qew6;Dv{6qQH4Lr`7q0Kv=XEZ5o3jL%A?
zV#Q$f9HNI@3SBiExI(1EYH-2gI>x!N612ff*x`&@PAN*xJ!SV;TYv*F>0HZQ>xvIR
z+0IC5O-{;2M%C7mt64)*WXa40|D+VnlvZ_|+{_wj&6M*--t_+|l5{<t*K?YMpk7}y
zLMH9%-atqtOR-(b`#r&tCaxW1d){GWO$kT<%TxaGF!_u;7e2sacL<=fns0?b0C!Ds
zOr>gyugf(u)l$t_cL<QKDJMk%Cq;o8CBd#&z=^>&CR4>=aAI&B2LECh1(T<!+?QZ|
zB8#6DU?cIWtq`c7(&gzJgbdOn#s!1f)`QunK^H{GMZk|X$phQB$e9>tRj>9wF%w5w
zx-+xSk@CXP)!Z%bonkE_i{gD)8YGYNy^Y7u*Wx67n=f!^faDW<oI6I}6E6M>dj^mz

delta 264
zcmZozz}PT{ae@J_3Ih}fFfb@?v~^|@{P+L=e-Ks%N`Pq9&5CaMjGI{6+0;yhL5kTJ
zf-_Q6OAK2X_!z1!kVK3?B9b<f*K$o@zs$?W#K2In*@gQg&*p3iPDaLp&83oAjEu>f
zA4qj8O<rz$X|lI{l!7ZzzXQk&D3E2~XJAeSa~K(t8Im_2wLiqjm@~P<(G^IZbJS$a
zovbA%&6qb?#0ex41tu2&$^6aFoZ6T+xgBBVH3jN-0OE#hC4Gs>7d_=!H(SmAsj~U2
WXFU_6(&SQ~W~SM;n}7MRF#`ax(o2W{

diff --git a/tests/TestSuite_dynamic_config.py b/tests/TestSuite_dynamic_config.py
index 1ba6dd4..b4ddede 100644
--- a/tests/TestSuite_dynamic_config.py
+++ b/tests/TestSuite_dynamic_config.py
@@ -74,9 +74,12 @@ class TestDynamicConfig(TestCase):
         self.portMask = utils.create_mask(self.dut_ports[:2])
 
         # launch app
-        cmd = "./%s/build/app/test-pmd/testpmd -c %s -n 3 -- -i --rxpt=0 \
+        cmd = "./%s/app/testpmd -c %s -n 3 -- -i --rxpt=0 \
         --rxht=0 --rxwt=0 --txpt=39 --txht=0 --txwt=0 --portmask=%s" % (self.target, self.coreMask, self.portMask)
 
+	if "cavium" in self.dut.nic_type:
+            cmd += " --disable-hw-vlan-filter"
+
         self.dut.send_expect("%s" % cmd, "testpmd> ", 120)
 
         # get dest address from self.target port
@@ -112,9 +115,12 @@ class TestDynamicConfig(TestCase):
         """
         Run before each test case.
         """
-        cmd = "./%s/build/app/test-pmd/testpmd -c %s -n 3 -- -i --rxpt=0 \
+        cmd = "./%s/app/testpmd -c %s -n 3 -- -i --rxpt=0 \
         --rxht=0 --rxwt=0 --txpt=39 --txht=0 --txwt=0 --portmask=%s" % (self.target, self.coreMask, self.portMask)
 
+	if "cavium" in self.dut.nic_type:
+            cmd += " --disable-hw-vlan-filter"
+
         self.dut.send_expect("%s" % cmd, "testpmd> ", 120)
         self.dut.send_expect("start", "testpmd> ", 120)
 
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 12/26] tests: fdir - skipping fdir tests for Cavium NICs
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
                   ` (10 preceding siblings ...)
  2017-04-06 17:51 ` [dts] [PATCH 11/26] tests: dynamic_config - taking into account cavium NICs Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 13/26] tests: ieee1588 - skipping ieee1588_enable test " Angela Czubak
                   ` (15 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Cavium NICs do not support dlow director, therefore they are added to
following tests in conf/dpdk_test_case_checklist.xls:
-fdir_flexword_drop_ipv4
-fdir_flexword_drop_ipv6
-fdir_flexword_fwd_ipv4
-fdir_flexword_fwd_ipv6
-fdir_noflexword_drop_ipv4
-fdir_noflexword_drop_ipv6
-fdir_noflexword_fwd_ipv4
-fdir_noflexword_fwd_ipv6

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 20480 -> 20480 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index 7e42bbeba1c9414cf3cde5f0220c9b3e049c57cc..338d7c61a93ba64ee6dea91a6af126f5c2be851f 100644
GIT binary patch
delta 2029
zcmY+FOK%%h6oAjQn*`j-69}3lxQ=Kjg2}UKl8&AD{YdO!62}f9&7)14hKACVl9)v|
zRU}k(14#5pQN=1^#iFVrjJkvc5h?{Cen5q~s=7ifPz4Jl&OIH^+&k91zWbds_i<*t
zyDxV4#lfw>8-KO|ZOu^K+}NlM-Gm@y#uRc|lE-*A@MX(q!LSdYR?i)^UJwg-wJn47
z){fv&fNNV9w|92VZ*SDraH}m_|Gw>hlc?1{>8!jYqWGZ43d@xLK>*$Y0S2_VcRsp{
zVzAc|;~43+jhNHYLuUixctc^m%o2F0us&u<4D@-i{mfEWR@eZuH0~*EkXZ&FDeM%p
zEOz&M`G%O~a8qHYndR|bzunvD^Dr?JCg><fI;@R!801JNv30-_1sod)i6YL^^%U+7
z*v8vV%o#ejLkWK(_Kw4BI(NV{9vig6GcId_PAEHf5jJMAq8JfSjVK!xyfc^=Rs4gF
zb9nNUmv3CN<#-Ip;AO>#vGK0+#5fySJW!0dW+d3i;WNcZXhxEaJjRABqcN`JbE94x
z`rIex(Kq6CF~v=dA*U(WgaQ^u@*;&_j9BZ96dBFSlGgzhI?5%<YD<#kC3(+n^V6Uk
zS+ZJ|9A~NGtD~WC!_R^0=brmm8MWV(IfSnn@^FOuD4(0BRudMSC&>aaVGIvOE!UlJ
z-3iT|WcTdtGoCu>s*{>pV0978id%5qg60<4UBZ3EExK+|bEnu{#=jJI%5|qSSJtr!
zOPI1lVg;9NE4)lZPC-eV`Vvq53Vv-{ViA93`zc+Y!<Qr8l223aPB`ymkkcxcd?Dh^
z#f;mJ8Sclb<H|BIVI03v+_LMIHFuWXIR2x!v#vX<xw4Q<NMj-D^`YXr70s=(o5DMa
zTXo&4=FYL3#HWfo=el#6E8jsA)-W>WeWB)w8E^q_C`=Zr3F~;MFj;~oT*Sb*7kif3
z29_1J$n1UGQ`i!-X?&zGxw<A?!tR)tZ-tlvo4Bd4bL>^{p2Fn1noz~RW44H4U;JkH
z10u3kR<&AL<ywj2Z*ePp*)i5MW6d#MNm$}TOe8|$3N9wB@Rnn*YxX+ZS8$)~tN4)Z
zCv^Q0wkBm{U-J6vFH&TR_Qn>b5&2J0Aiddef_^?<{Xz1Upig-@Z5!8!%Z>{=w^P~e
zDNM$+(;r!|D<nR~p01Fw?bv>9Nn>}$%W#BQ62IyS;isA7ZssQDm+&$1pEJkBPW?&d
r2j907hyG*o>z|?>e!2Z4{$6~o`MZbLOO?CzXGNc1T&VwBYVrRM=}}n^

delta 1897
zcmY+FOKclO9LE1+H%Svi7L;n!$aTU~XmMl5CC%E7-|I)5)Jc<2XzPU5G<KVYv}w`{
zhlpINUf_Vf1E5|idLvXkEFL!wfeR9%*9s8ygg8c(kWf{Lndy3W){-@|-}jquJoBF&
z@7!iPx7n9B`(DNX@lQ7`UTQY4$8JzR{hd&hV?w!s&-*^?iS>tkL|g4*z&OZqxH3@a
z4-jpvuWW8@o!e|)Z?uOFecQ#h+V_SQo@FLp3>z$gS~$r2tGu5C!lpLK!yi*0y~<mS
zQn;^ZVX37ta@6IHN-cw?qK!%|i(N&FNG*qbMT<%;4|CMb8<ScA+lm&GnuR?@J0`Uv
zdL!=G*SMxr33HJkD`PEUgeqJSs~IQ8SJUG>`S{ZmzKR&Eir;v`wCzmrc93T9eALuV
z*qX`P!&Jk?s1cfVv@RN=Ir}LtiIcdi5OGooQL@7{kB89`TR>v0#1`@1n4350p;MgJ
zD36~MA|;8}?HSXOC?F7XGtwR+BMA%h3X$;;SxFS}QOwXf>&iYM+P}s=@Uc@^9(Ut&
z(&{WZ&j;&N!JY9E%i<q}D|k4Ib7JAq<G~AW@V+R9MSi}#&XksiFG_yFCX1f36-kt>
zlT!4g6rZHv?s4-Kk<5JERH6g?H;Nfc+|}t#JGIPPoe~I47!F%@*s_Ne2S}&Ws4Hy6
zVJjYXO0s9LtFTiJJLO@kl0Az@3R`v9s)rSaQ>Qv+O!xOrJM6TFow0LonL)OM?@WW$
z@j&(;n?~picg23xJo{Rc`?>@xZm?yn$K9IG^6Vjc%N`|aFKXWA+${cx4{GOZ=cII!
z@F#>bnsA+Y>7=kIoo&StHP$JIJJR_@aTcYM#Y5?Yl5Uzf{yJq~CB;1JigQXj=Ygbq
z9f*^nQ3LlCO`HLp-p0tJ%bk|m1vC{+?37L`*j2Q%Qfp#g(dtsG!A!Y%OHylLThW%e
zrqM<0DVo?<oxdBsX?LvHQJoermo|IFReaF*44ucd-~c{NUuKu^bVgj)M#c!Oa#z%{
z;i+Xq*3!h)jKMDB6Hc$;8{U5hf6D$NK62e2x#AhQB1f(vpEcMOtYyW>o7s2SG+6FX
zpvA}Vw~AWSLay`z{<40@aQ=N(!EWBvuG)!=w}X_#zM}E}B(9~fIvfmd*ql$kyPfOU
z$4{9?*KE%(`5e9&4&vj&5hweA)HB#Cxbt;Mt%b>vAYQVLu+4Vf`oV{dQvK`lkN&5`
j&7I@lou3m8+^as<ee1#Zxrxu(|5kl|*3<s)M34V}$<<l>

-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 13/26] tests: ieee1588 - skipping ieee1588_enable test for Cavium NICs
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
                   ` (11 preceding siblings ...)
  2017-04-06 17:51 ` [dts] [PATCH 12/26] tests: fdir - skipping fdir tests for Cavium NICs Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 14/26] tests: jumboframes - skipping jumboframes tests testing bigger than allowed frames " Angela Czubak
                   ` (14 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Cavium NICs do not filter PTP packets, so ieee1588 enable test case is
not applicable, modified conf/dpdk_test_case_checklist.xls

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 20480 -> 20480 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index 338d7c61a93ba64ee6dea91a6af126f5c2be851f..ca5e3b0da53b00463d9e8ebf0121c4514ec1a2e7 100644
GIT binary patch
delta 134
zcmZozz}T>WaYH+oDw_xc5U?=>XQZZ<7`8I-F+^D*i5P)IeoS7&HIZ@2W;^azoXpA$
z43jSiDsMIuJ*CB{HJQ;tgxi#X38;mU!IZ&tvx373)=h3ln0YOMLJlC4^2E2BO}^+U
Y&${R{hiTg8ub#}zj8&U|`mi$t0J_d1#{d8T

delta 160
zcmZozz}T>WaYH+o>N{ZuAYfw%&PYuyF>GbvV{o!U5-|daJea(OYa(OMW;^azoP692
z48;XSnR)4DnK?PBoBc#jX(@05bvS@@L4hm-KLfKO0~3(T$e_rexY@$t1ncApEE1dC
pjxh6D0EHbuDo;;3tTOqcr#$PHQ<XkJo4<N8GczV_{^`Tc3;<UPC^P^7

-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 14/26] tests: jumboframes - skipping jumboframes tests testing bigger than allowed frames for Cavium NICs
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
                   ` (12 preceding siblings ...)
  2017-04-06 17:51 ` [dts] [PATCH 13/26] tests: ieee1588 - skipping ieee1588_enable test " Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 15/26] tests: l2fwd - fixes to run on two cards (same NIC) and expecting "L2FWD: entering main loop" instead of "memory mapped" Angela Czubak
                   ` (13 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

When configuring a Cavium device the max_rx_pkt_len parameter is
ignored (and the device uses its maximum MTU). Therefore, test cases
which assume that bigger than allowed frames should be dropped fail.
Modified conf/dpdk_test_case_checklist.xls to skip
jumboframes_jumbo_nojumbo and jumboframes_bigger_jumbo tests.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 20480 -> 20992 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index ca5e3b0da53b00463d9e8ebf0121c4514ec1a2e7..46983d6f829fdbae8ac4df603ee6cc914d8a8be7 100644
GIT binary patch
delta 490
zcmZozz}T>aae@J_8UqvvFfb@@v~_0^RRRk9`~Uwx2&+Qb>YEka(iu0gw6m$%ihwk*
zF$8C%rj{7CGVn3DS|f=VfkYnLO<v12f&Dh0Iuip!*=85+S-j>F3=CPNxk>qHMTxno
z#qmj*>FKFO@n9iIR4K4nd|p17-h5AjlaaA(^9#u=M#hZE=8lb%3#3^#-;j1v0x=lV
zCMQY@Gp29mw%g2D|CfP_Ar0sleue@d3E?pUdF*f=6Ofk!=P{$mu>yJAP`Pv<&CgH>
z=OLSt&VX!6Is@Dk7NGU%legL@EBi4pGB^M=!+<Q%Fy;)PN(P`r1`skcZ?<;W&&XIb
z`M0AhkaTp?WGtRMS5BI-WOBO`NaQS-6n1uHEZrRGyqszC1TRs>O>PI61wp158Zdw@
oXsDd4;5_-Fr#$O-u5Oo>&0jt1nHW_jm-;j_r8;c><-^7d0J*AqlK=n!

delta 301
zcmZoz!q~8Yae@J_DgzV<Ffb@>v~_0^{P+L=e-KsyN`Pp!&59n`jGI{6+0@uXK#JKI
zf-_Q6OAK2X_!y$BkVK3?B0p>=ujQJ+zJyPfiGiVHvkUhuUS<UbhRGWw6((CqK4UD|
zEH9PC$e6adOZvFd=1RLIjFVS7L@8?l&2a#k1qHGU{0z*d3_vp&7#U1~kcnxtn&W;(
z#)8SuoLqsVj<cq0AyD=&0~b&gGf+7@oW}~}6-_R32C3TtCjSA+;>|8D%b7NL9AFj%
u8EXl|4nWM1C%)Zm@<nfX)<vH=Ow%@h^{!`PRGwVw*UVI9zxkIR8#4ew8%_%V

-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 15/26] tests: l2fwd - fixes to run on two cards (same NIC) and expecting "L2FWD: entering main loop" instead of "memory mapped"
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
                   ` (13 preceding siblings ...)
  2017-04-06 17:51 ` [dts] [PATCH 14/26] tests: jumboframes - skipping jumboframes tests testing bigger than allowed frames " Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 16/26] tests: link_status_interrupt - skipping test_link_status_interrupt_port_available for Cavium NICs Angela Czubak
                   ` (12 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Previously integrity test assumed that there should be "memory mapped"
in the output of l2fwd after start up, even though it does not appear.
Test can also be run when 2 same NICs are used now.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_l2fwd.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/TestSuite_l2fwd.py b/tests/TestSuite_l2fwd.py
index 23815cd..659d5f7 100644
--- a/tests/TestSuite_l2fwd.py
+++ b/tests/TestSuite_l2fwd.py
@@ -60,7 +60,7 @@ class TestL2fwd(TestCase):
         self.headers_size = HEADER_SIZE['eth'] + HEADER_SIZE['ip'] + \
             HEADER_SIZE['udp']
 
-        self.dut_ports = self.dut.get_ports_performance()
+        self.dut_ports = self.dut.get_ports_performance(force_different_nic=False)
 
         self.verify(len(self.dut_ports) >= self.number_of_ports,
                     "Not enough ports for " + self.nic)
@@ -134,7 +134,7 @@ class TestL2fwd(TestCase):
                 (self.dut.get_memory_channels(), core_mask,
                  str(queues['queues']), port_mask)
 
-            self.dut.send_expect(command_line, "memory mapped", 60)
+            self.dut.send_expect(command_line, "L2FWD: entering main loop", 60)
 
             tgen_input = []
             tx_port = self.tester.get_local_port(self.dut_ports[0])
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 16/26] tests: link_status_interrupt - skipping test_link_status_interrupt_port_available for Cavium NICs
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
                   ` (14 preceding siblings ...)
  2017-04-06 17:51 ` [dts] [PATCH 15/26] tests: l2fwd - fixes to run on two cards (same NIC) and expecting "L2FWD: entering main loop" instead of "memory mapped" Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 17/26] tests: link_status_interrupt - skipping tests verifying adding MAC addresses " Angela Czubak
                   ` (11 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

The test is skipped right now as link_status_interrupt assumes CPU
frequency which makes the test fail (for Cavium NICs and thunderx
platform)

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 20992 -> 20992 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index 46983d6f829fdbae8ac4df603ee6cc914d8a8be7..ef22942905f40d54c260d30eb2e99e7bee24ac2f 100644
GIT binary patch
delta 494
zcmZ{f&r1S96vyApl7?1x=wcEM6+xg-5m6-l(nt^@h>juCI_lKAZnLwdr#u)zr(kcL
zqgx>DrLIALK>vi-ZXJT6Su5+(gL&}ze&2gvrg@E;*Qk9Sn(B;zssQYk8I!YTFa+7u
zA7##0I;-w&=rY)fBrrh3%Y>f?PbUEkZXV@rNu^`wxha_tjwSO}RmeQ8QEt!!gT(--
zs4UDUW!W(cOw^NV%c)b#N|tn;{&R#V-{3lxylN6^+fIeqq-rvvGa)HANjkZ+M~Z?S
zJIvG@2_l&-Nl|6`W8^!F98{?&*aX0BM~S-_?VyGiA3a2fdl#{n@o+yLhI04!DbHG2
z!s&Mib%h8BC4Uiu2n2hC6&XF!6xluMQzYG+wSAIP+M0SlHKrVmgQge(2kuR*KO*F~
zosCV^6Y1%(nzH;ntcHH`F!(o5T#@$Y?z{a%^}3hIJm9<RlQuB>oy4yuw%q4jJWyI)
TZq3|!uQ{yY^1Ao79nd}jDX)hT

delta 228
zcmZoz!q~8caYH+onym-}5U?=>XQZZ<7`8I-F}PYIi5P)I9@|Y`%Qb=hHlI2Z14G$n
z7w(I^oA*g_GBTEJJ|UIG$e1x%)wywUfDFs#9Wq%;o6YPEm?p1rj8gDpU}SIr83qNi
z4Ezkt84S!oE+az*L&jz`r$da4MU!7Ty8=ml7fr_E$+hy*j3tvxT|gqc!6c)rD`V+q
zch{Xvn<w}%Gj8%Y%FJWH05-Uxa;}2&<cr?&Y~Q)MU0T*`{^rfZ%#`Y|`IjFXGXN$2
BJ`ex^

-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 17/26] tests: link_status_interrupt - skipping tests verifying adding MAC addresses for Cavium NICs
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
                   ` (15 preceding siblings ...)
  2017-04-06 17:51 ` [dts] [PATCH 16/26] tests: link_status_interrupt - skipping test_link_status_interrupt_port_available for Cavium NICs Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 18/26] tests: pmdpcap - modifying the right config file + importing utils after scapy Angela Czubak
                   ` (10 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Following tests are skipped for Cavium NICs, since this functionality
is not implemented:
- test_add_remove_mac_address
- test_invalid_addresses

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 20992 -> 21504 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index ef22942905f40d54c260d30eb2e99e7bee24ac2f..e051b626528d7ec86b26365076c35899d95dd833 100644
GIT binary patch
delta 472
zcmZoz!q~8aae@J_Is+64FfgcWwDo2ZRR#+D`~Uwx2&+Na8k-e8k{LI#w6m!Ri-I(;
zF$8C%rj{7CGVn1-+aie=fkbvXOkT@1fqf&tDH8)j^=23DDn1=C28P6xl=!05-2AfC
z_}s+gcp$eZwYXT2fgv-mEHNiD1tyZZd9NfFBV+aE6H-}>jM<Y_of{_y$gphQAycQs
z%E2VSkU7~=Mwm4VXf4ZTZTm*1`o9cZ44FVKKSL>ygzy-FJa#yb3CPQV^O#ZOSb;ol
zs2s>peugqQ580F~24qvR7+|KnnY`99QrQEj#{r08Ko)2Ya~1<Dkk81F1%#}un>C&G
zGcuM>e(CHAB=uc187n5&%1bj=PA+u;iR=cGjIOSXRh!*icQS3B;G@g9$>S(9w=u-*
mh6sVllP`EHuwK$}6*t-Z)w`aFQFU^uUo(@n)8=1(Y|H>e8F5(v

delta 266
zcmZoz!Pu~bae@J_8UqvvFfb@@wDo2Z{P+L=e-Ks$N`Pqf&5B;>jGI{6+0>qifE2Sa
z1ZSkCmKe4&@G*GUAc+`(M4s7CUduIsy@g+giGiVVvkP|>-{#knoQ#Z>o4-nBF*0Uu
zPLN?%-rQ|p#x%L!DN5NJXn+IA5Gask;AddYWMBqz85uHxkePY&AE*6{jHQ$JxVQpI
zCRa_yvdKEG(v0PkJzPN|ePHqmkgV7&<+hV)lh;vZZbPWCnX{B9U+`66O}DphG1&ao
Vx1NbnWpZgiGgF4+=3fD9%mA|mOIZK_

-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 18/26] tests: pmdpcap - modifying the right config file + importing utils after scapy
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
                   ` (16 preceding siblings ...)
  2017-04-06 17:51 ` [dts] [PATCH 17/26] tests: link_status_interrupt - skipping tests verifying adding MAC addresses " Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 19/26] tests: pmdrssreta - skipping tests for Cavium NICs Angela Czubak
                   ` (9 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

This test used to modify config/common_linuxapp or config/common_bsdapp
to compile DPDK with PCAP, however, this config may lie as well in
config/common_base. If the PCAP variable is not found in OS specific
files, then it is assumed that config/common_base should be modified.
Scapy may contain utils itself, therefore importing dts utils is moved
after importing from scapy (so as to override utils).

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_pmdpcap.py | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/tests/TestSuite_pmdpcap.py b/tests/TestSuite_pmdpcap.py
index 0a79e96..a51eb31 100644
--- a/tests/TestSuite_pmdpcap.py
+++ b/tests/TestSuite_pmdpcap.py
@@ -32,10 +32,10 @@
 '''
 '''
 from test_case import TestCase
-import utils
 
 from time import sleep
 from scapy.all import *
+import utils
 
 
 #
@@ -73,8 +73,11 @@ class TestPmdPcap(TestCase):
         else:
             raise Exception(
                 "Unknow os type, please check to make sure pcap can work in OS [ %s ]" % os_type)
-
-        return config_head + config_tail
+	out = self.dut.send_command("cat config/%s" % (config_head + config_tail))
+	if "CONFIG_RTE_LIBRTE_PMD_PCAP" in out:
+        	return config_head + config_tail
+	else:
+		return config_head + "base"
 
     def create_pcap_file(self, filename, number_of_packets):
         flow = []
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 19/26] tests: pmdrssreta - skipping tests for Cavium NICs
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
                   ` (17 preceding siblings ...)
  2017-04-06 17:51 ` [dts] [PATCH 18/26] tests: pmdpcap - modifying the right config file + importing utils after scapy Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 20/26] tests: queue_start_stop - taking into account cavium NICs Angela Czubak
                   ` (8 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Following tests are skipped since the NIC does not support them
- test_pmdrss_reta
- test_rss_key_size

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 21504 -> 21504 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index e051b626528d7ec86b26365076c35899d95dd833..52bbf9dbea61debbd4989c8ae6a67a60eb827ac7 100644
GIT binary patch
delta 1753
zcmY+FOH30%7=UNWD~houkhP>~Lhv9fr7cCeEq&5<`+x$a1>{k%f+Adu2V*>VAjZUm
zs4@JWj9!Qb4jzoX5aYpkBAyx!#Df=a=vfmFLi}gg?#{I7O!u2_{+*eBc6M`@Ztl|e
zhaI)9&YotPfIA(@TG(-}lWLH2tF90s<d~c#y@V1wX)~{Ec%{K}w@Qa$&#l?RM#~kf
z?IZ#x0_)=}3h92!b8{AhErIoO7KggPJe(y!@mPJmoQ*(5U_Q>0up_Vm&QfqBFh6H$
z@OZVp#+V0@DMZJT&2&(j=^$Y<&A<z<O0)3M>!dk2#Q*tipJpF5x&*MkNX8(8tY9z=
zYX=#Jr#{s+VX_v|MJA1_AUBF|AQ(X+8f@_$WC|PuIxWF6mSuQ5V8shdb_8uZ8G&Dd
z5#h$PamOe(lHl`OF`|+Y<3<YZ3r0*b;@n8XC%<ZM%qxCs)PDP)+2{;B8nVJCcvEA_
zBiLCXS=b-aX&lZ6)YV3aq~xX0!--?bGLn)qlHwVeHQSnS(v2u7DN340DZ#6N)79|P
zMD)|AJ{$zJ%Pa=9wc<W##xb({>e#A~YsQ^2SSut1K20^<jOk`1H_P2Q*c9BX>1HK2
z$K83T3vSMIbCR3q?gDfNtuf?HH!rztb1GyJ?h5Xx>5fY7m=X7L&`B%sJ*c`Ck+3x=
zNNZo<YhQt$kV@yF5MuT^{$GOakd^ZZjNL_+jR-9FEa%@s)|e;FaZK`YTsPbzcZZ>O
z*m8@eTa;Y3I}|)=9tiG~=}t**iMt8d7u=HRmL#{#-8eYH))>mBTb5k*U@0U9>w-IN
zy3>+7!`&+Eg{_l}?Mgej0Ve`u`%NJ$kd9d19A~SrC9rwUZbDsP3!L2oC2I9$nN;u~
zstByY*&6H!Yzdj2+=e58u^cLR0C{3oJeDhkl;B=WqhWX#`{`Oo!uCp4+ACGQS2o~7
zT&EkgzwsZoOJ`6_;IHv<;SHNq^zg|eDt>LY+P~xziYM*kw2p6<uUJOlg0AC>X%@>E
myvA}3s@=}ovA*Bde$@!L@@5a}<J~O}UlzZVYk$VuTmJ)fWF!m#

delta 1753
zcmY+FOH30%7=ZsN6cRC(1hbShO$Z)jrO*OGyY&6ozU0{=@)kt}IT#Pdcx;S`2~lJC
zZ^jexz`=vD7h*hkB%T@$#Df=a=vfmFLi}fFcW2skcK4fa{(1d7t?aSN9{X_A!4mkO
zBUL@>=xMHo-RCbd1M@!JI|cwJa1MHbfeTu#CkH(l_{yiVFz)+;u1LM+3SC_g#Z!s(
z2^PalzwP-1i{rM$`UOj1O=1IrB~cr&+xi7d;j+X6f~9d+VuONZ@K|C)f|)qr5B4?2
zJWNc3ER}qw!^%vDfzLFDul+j9<0rp|74V4ei#vg!>sr0ZC|x^Y9J9nG>MTfCH%#J-
zfbN~Lm=n5Sy8aXr#ta@xMhIlX5Jm~zgC;BEDwVVNZqSYwR%|{U7o_l)WJH8<z20L~
z7-<X)*)gJu5ferRA4^6|G2+57@$-=GYRoHsW>kL<y>zfSd^%!>Pl&3<l#|q0gFGIL
zn3Qi9M)mbZh?L@`$#X-AO1>j$Wk=FtM{ZbkO*H97l(Z5hBchb?&8WxQ@G~I$nKK^`
zM}wDn4CZJ76Pjs^ykC=QHJGpW#PdUgF$@HC%gtJDR&jH}UBHUu<}5d-xOw3&Voh@M
zmYY}Hf^e6xJ7kZcV7UdwEedxTA4+b~a*K+~6Ip{L{1Wo875pC3y~{-S8jLGzKQ7jO
z1$zvgE#kPr?M=F0#T~=m^GS-`1vl#v_`32v|7O@@p0dU<CC0H<cX^&@5XRmy+nu)D
zX~mrpZWNzL?u_NmC@#+=4U%{uxh2ajDQ;P~33P|;F_bO0thlqnjpL@|&RXuQ;_{bJ
zgIl;CwokG-VlKFirxN3ts=+#DBDTkKP=h<TEwKf`?qW@1i-O%lEo!%25^NHeCB}DG
zgALr3*a|ThY~r!RR)tr>ftVeS@2du7d=v|^2)>W~^xh}Jb7f7*l{Jwo27Zj2%&7j2
z|8QL5sh*%;<Kv|co3?0`=*@#I`Z}G}f2rq;PTFS~lm1!0QW?c|(_~4UqcV<fsocP|
iZcp{ZJZNpBqdP&ZEA#D$wTW)$q0j8RTKzN8*76^sY$V?R

-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 20/26] tests: queue_start_stop - taking into account cavium NICs
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
                   ` (18 preceding siblings ...)
  2017-04-06 17:51 ` [dts] [PATCH 19/26] tests: pmdrssreta - skipping tests for Cavium NICs Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 21/26] tests: quota_watermark - skipping tests for Cavium NICs Angela Czubak
                   ` (7 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Testpmd must be run with hardware VLAN filter disabled as thunder
driver does not support this feature - --disable-hw-vlan-filter is
appended if NIC is Cavium device.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_queue_start_stop.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/tests/TestSuite_queue_start_stop.py b/tests/TestSuite_queue_start_stop.py
index d1df66b..a83d174 100644
--- a/tests/TestSuite_queue_start_stop.py
+++ b/tests/TestSuite_queue_start_stop.py
@@ -130,7 +130,10 @@ class TestQueueStartStop(TestCase):
         """
         #dpdk start
         try:
-            self.dut.send_expect("./app/test-pmd/testpmd -c 0xf -n 4 -- -i --portmask=0x1 --port-topology=loop", "testpmd>", 120)
+	    cmd = "./app/test-pmd/testpmd -c 0xf -n 4 -- -i --portmask=0x1 --port-topology=loop"
+	    if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
+            self.dut.send_expect(cmd, "testpmd>", 120)
             self.dut.send_expect("set fwd mac", "testpmd>")
             self.dut.send_expect("start", "testpmd>")
             self.check_forwarding([0, 0], self.nic)
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 21/26] tests: quota_watermark - skipping tests for Cavium NICs
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
                   ` (19 preceding siblings ...)
  2017-04-06 17:51 ` [dts] [PATCH 20/26] tests: queue_start_stop - taking into account cavium NICs Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 22/26] tests: short_live - taking into account cavium NICs + fixes Angela Czubak
                   ` (6 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Skipping quota_watermark test for Cavium NICs by modifying
conf/dpdk_test_case_checklist.xls

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 21504 -> 21504 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index 52bbf9dbea61debbd4989c8ae6a67a60eb827ac7..4579ed4753787f2247868fe205e2df60f939cbc9 100644
GIT binary patch
delta 340
zcmZoz!Pu~ZaYH+onyM%R5U?=>XQZZ<7`8I-F-)~Z5-|da7&}g0%Qb=hFuyeu14GSb
z7w+YJLi`L2g{Ao=iSgx$C8<TZiAC9)UrTZ_GS+PVDwV~^n6o)SMqXK*jlqTyWEuk_
zKLZDo07EvA$;P0wxyk-7Q{Z0)E`}@yRtA0sZlExT2a@JzD2MYHfjo9Nj|s@jf%BMA
z<iMs(u5pT04rE|tZ~&@;0a>6r<{SnVAfFMa9mrzY{KsiOBV)znJua?5lF3z*v2wDG
zt2ATPWDi%6NFSKI0wk+9OS$DRZ}K|I%x%U1Hnu^=`1|Awz6z|8pT*}yZ2s!Y%*?oT
J^UnZwW&oI@OS%96

delta 223
zcmZoz!Pu~ZaYH+ony@GX5U?=>XQZZ<7`8I-F-Y4Yi5P)Ib~;R6%Qb<0BflvV14H#@
z7w+YJoBv93GBQ?gW|z)lWX#@NBqOiP%)(%^d4>I7rpZ5@qLev-hB$x>f&y6veg<Yu
z2A}~9j0~DU$i%d{%y~Z}WBFt=S63ie<EqJ6F?o-?G-KuDLtqgOH;}j=kgVD~#Vv<<
r@&%8oO<qTtxlN!(C(Ye4`GT(kYt58^L&2NB`Z6;!T5tXtz|IT+ejqwY

-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 22/26] tests: short_live - taking into account cavium NICs + fixes
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
                   ` (20 preceding siblings ...)
  2017-04-06 17:51 ` [dts] [PATCH 21/26] tests: quota_watermark - skipping tests for Cavium NICs Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 23/26] tests: tso - taking into account cavium NICs Angela Czubak
                   ` (5 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Testpmd must be run with hardware VLAN filter disabled as thunder
driver does not support this feature - --disable-hw-vlan-filter is
appended if NIC is Cavium device.
Additional fixes done: waiting for DPDK application to be finished by
calling `ps` in a loop and checking whether the process is still alive;
sniffing in background scapy process fails at times, using tcpdump
instead; if start_up_time fails it is checked if the problem was that
time command seem not to be found (informing user about it).

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_short_live.py | 42 ++++++++++++++++++++++++++++++++++--------
 1 file changed, 34 insertions(+), 8 deletions(-)

diff --git a/tests/TestSuite_short_live.py b/tests/TestSuite_short_live.py
index 72745a9..45727a1 100644
--- a/tests/TestSuite_short_live.py
+++ b/tests/TestSuite_short_live.py
@@ -45,6 +45,7 @@ from test_case import TestCase
 from pmd_output import PmdOutput
 from settings import FOLDERS
 
+from packet import Packet, sniff_packets, load_sniff_packets, strip_pktload
 #
 #
 # Test class.
@@ -95,17 +96,14 @@ class TestShortLiveApp(TestCase):
         dmac = self.dut.get_mac_address(txPort)
         Dut_tx_mac = self.dut.get_mac_address(rxPort)
 
-        self.tester.scapy_background()
         count = 1
         # if only one port rx/tx, we should check count 2 so that both
         # rx and tx packet are list
         if (txPort == rxPort):
             count = 2
 
-        self.tester.scapy_append('p=sniff(iface="%s",count=%d,timeout=5)' % (rxitf, count))
-        self.tester.scapy_append('RESULT=str(p)')
 
-        self.tester.scapy_foreground()
+        inst = sniff_packets(intf=rxitf, count=count)
 
         pktlen = pktSize - 14
         padding = pktlen - 20
@@ -114,7 +112,11 @@ class TestShortLiveApp(TestCase):
         self.tester.scapy_execute()
         time.sleep(3)
 
-        out = self.tester.scapy_get_result()
+	p = load_sniff_packets(inst)
+	nr_packets=len(p)
+	reslist = [p[i].pktgen.pkt for i in range(nr_packets)]
+	out = str(reslist)
+
         if received:
             self.verify(('PPP' in out) and 'src=%s'% Dut_tx_mac in out, "Receive test failed")
         else:
@@ -125,7 +127,10 @@ class TestShortLiveApp(TestCase):
         Basic rx/tx forwarding test
         """
         #dpdk start
-        self.dut.send_expect("./%s/app/testpmd -c 0xf -n 4 -- -i --portmask=0x3" % self.target, "testpmd>", 120)
+	cmd = "./%s/app/testpmd -c 0xf -n 4 -- -i --portmask=0x3"
+	if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
+        self.dut.send_expect(cmd % self.target, "testpmd>", 120)
         self.dut.send_expect("set fwd mac", "testpmd>")
         self.dut.send_expect("set promisc all off", "testpmd>")
         self.dut.send_expect("start", "testpmd>")
@@ -144,23 +149,33 @@ class TestShortLiveApp(TestCase):
             print "start time: %s s"%time[0]
         else:
             self.verify(0, "start_up_time failed")
+	    if "time: command not found" in out:
+		print "Command time is not installed or is a shell keyword" 
 
     def test_clean_up_with_signal_testpmd(self):
         repeat_time = 5
+	cmd = "./%s/app/testpmd -c 0xf -n 4 -- -i --portmask=0x3"
+	if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
         for i in range(repeat_time):
             #dpdk start
             print "clean_up_with_signal_testpmd round %d" % (i + 1)
-            self.dut.send_expect("./%s/app/testpmd -c 0xf -n 4 -- -i --portmask=0x3" % self.target, "testpmd>", 120)
+            self.dut.send_expect(cmd % self.target, "testpmd>", 120)
             self.dut.send_expect("set fwd mac", "testpmd>")
             self.dut.send_expect("set promisc all off", "testpmd>")
             self.dut.send_expect("start", "testpmd>")
             self.check_forwarding([0, 1], self.nic)
 
+	    pid = self.dut.send_expect("ps -o pid -C testpmd | tail -n +2", "#", 60, True)
             # kill with differen Signal
             if i%2 == 0:
                 self.dut.send_expect("pkill -2 testpmd", "#", 60, True)
             else:
                 self.dut.send_expect("pkill -15 testpmd", "#", 60, True)
+	    # waiting for the process to truly finish
+	    while True:
+	    	no_lines = int(self.dut.send_expect("ps -p %d | wc -l" % int(pid), "#", 60, True))
+	    	if 1 == no_lines: break # only header is printed out
 
     def test_clean_up_with_signal_l2fwd(self):
         repeat_time = 5
@@ -172,10 +187,16 @@ class TestShortLiveApp(TestCase):
             self.check_forwarding([0, 1], self.nic)
 
             # kill with differen Signal
+	    pid = self.dut.send_expect("ps -o pid -C l2fwd | tail -n +2", "#", 60, True)
             if i%2 == 0:
                 self.dut.send_expect("pkill -2 l2fwd", "#", 60, True)
             else:
                 self.dut.send_expect("pkill -15 l2fwd", "#", 60, True)
+	
+	    while True:
+	    	no_lines = int(self.dut.send_expect("ps -p %d | wc -l" % int(pid), "#", 60, True))
+	    	if 1 == no_lines: break
+	    
 
     def test_clean_up_with_signal_l3fwd(self):
         repeat_time = 5
@@ -186,12 +207,17 @@ class TestShortLiveApp(TestCase):
             self.dut.send_expect("./examples/l3fwd/build/app/l3fwd -n 4 -c 0xf -- -p 0x3 --config='(0,0,1),(1,0,2)' &", "L3FWD:", 120)
             self.check_forwarding([0, 0], self.nic)
 
+	    pid = self.dut.send_expect("ps -o pid -C l3fwd | tail -n +2", "#", 60, True)
             # kill with differen Signal
             if i%2 == 0:
                 self.dut.send_expect("pkill -2 l3fwd", "#", 60, True)
             else:
                 self.dut.send_expect("pkill -15 l3fwd", "#", 60, True)
-
+	
+	    while True:
+	    	no_lines = int(self.dut.send_expect("ps -p %d | wc -l" % int(pid), "#", 60, True))
+	    	if 1 == no_lines: break
+	    
     def tear_down(self):
         """
         Run after each test case.
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 23/26]  tests: tso - taking into account cavium NICs
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
                   ` (21 preceding siblings ...)
  2017-04-06 17:51 ` [dts] [PATCH 22/26] tests: short_live - taking into account cavium NICs + fixes Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 24/26] tests: uni_pkt " Angela Czubak
                   ` (4 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Enabling TSO tests for Cavium NICs.
Testpmd must be run with hardware VLAN filter disabled as thunder
driver does not support this feature - --disable-hw-vlan-filter is
appended if NIC is Cavium device.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_tso.py | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/tests/TestSuite_tso.py b/tests/TestSuite_tso.py
index 00f7539..87d8b69 100644
--- a/tests/TestSuite_tso.py
+++ b/tests/TestSuite_tso.py
@@ -55,7 +55,8 @@ class TestTSO(TestCase):
         self.verify(self.nic in ["kawela_2", "niantic", "bartonhills", "82545EM",
                                  "82540EM", "springfountain", "fortville_eagle",
                                  "fortville_spirit", "fortville_spirit_single",
-                                 "redrockcanyou", "atwood", "boulderrapid", "fortpark_TLV"],
+                                 "redrockcanyou", "atwood", "boulderrapid", "fortpark_TLV",
+				 "cavium_0011", "cavium_a034"],
                     "NIC Unsupported: " + str(self.nic))
 
         # Based on h/w type, choose how many ports to use
@@ -158,6 +159,8 @@ class TestTSO(TestCase):
         self.tester.send_expect("ip l set %s up" % tx_interface, "# ")
 
         cmd = "./%s/app/testpmd -c %s -n %d %s -- -i --rxd=512 --txd=512 --burst=32 --rxfreet=64 --mbcache=128 --portmask=%s --txpt=36 --txht=0 --txwt=0 --txfreet=32 --txrst=32 --txqflags=0 " % (self.target, self.coreMask, self.dut.get_memory_channels(), self.blacklist, self.portMask)
+	if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
         self.dut.send_expect(cmd, "testpmd> ", 120)
         self.dut.send_expect("set verbose 1", "testpmd> ", 120)
         self.dut.send_expect("csum set ip hw %d" % self.dut_ports[0], "testpmd> ", 120)
@@ -224,6 +227,9 @@ class TestTSO(TestCase):
         self.tester.send_expect("ip l set %s up" % tx_interface, "# ")
 
         cmd = "./%s/app/testpmd -c %s -n %d %s -- -i --rxd=512 --txd=512 --burst=32 --rxfreet=64 --mbcache=128 --portmask=%s --txpt=36 --txht=0 --txwt=0 --txfreet=32 --txrst=32 --txqflags=0 " % (self.target, self.coreMask, self.dut.get_memory_channels(), self.blacklist, self.portMask)
+	if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
+
         self.dut.send_expect(cmd, "testpmd> ", 120)
         self.dut.send_expect("set verbose 1", "testpmd> ", 120)
         self.dut.send_expect("csum set ip hw %d" % self.dut_ports[0], "testpmd> ", 120)
@@ -288,6 +294,8 @@ class TestTSO(TestCase):
                 queues = 1
 
             command_line = "./%s/app/testpmd -c %s -n %d %s -- -i --coremask=%s --rxd=512 --txd=512 --burst=32 --rxfreet=64 --mbcache=128 --portmask=%s --txpt=36 --txht=0 --txwt=0 --txfreet=32 --txrst=32 --txqflags=0 " % (self.target, self.all_cores_mask, self.dut.get_memory_channels(), self.blacklist, self.coreMask, self.portMask)
+	    if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
 
             info = "Executing PMD using %s\n" % test_cycle['cores']
             self.logger.info(info)
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 24/26] tests: uni_pkt - taking into account cavium NICs
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
                   ` (22 preceding siblings ...)
  2017-04-06 17:51 ` [dts] [PATCH 23/26] tests: tso - taking into account cavium NICs Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 25/26] tests: unit_tests_dump " Angela Czubak
                   ` (3 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Enabling following uni_pkt test cases by modifying
conf/dpdk_support_test_case.xls:
- NVGRE_tunnel
- NVGRE_in_IPv6_tunnel
- NVGRE_tunnel
Testpmd must be run with hardware VLAN filter disabled as thunder
driver does not support this feature - --disable-hw-vlan-filter is
appended if NIC is Cavium device. What is more, Cavium has hardware
packet type detection only for L3 and L4, therefore L2 is never checked
and inner layers are skipped as well.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_support_test_case.xls | Bin 25600 -> 8704 bytes
 tests/TestSuite_uni_pkt.py      | 219 +++++++++++++++++++++++++++-------------
 2 files changed, 147 insertions(+), 72 deletions(-)

diff --git a/conf/dpdk_support_test_case.xls b/conf/dpdk_support_test_case.xls
index 8f38c84ce8ff3338394944fa67c478d711ebe56a..2d8a342baf869d782921ad32e5c11cfa46f06a48 100644
GIT binary patch
literal 8704
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
TE!EoJ`~9uz$wnCPPv-v{JrESQ

literal 25600
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

diff --git a/tests/TestSuite_uni_pkt.py b/tests/TestSuite_uni_pkt.py
index 6975f2d..882b758 100644
--- a/tests/TestSuite_uni_pkt.py
+++ b/tests/TestSuite_uni_pkt.py
@@ -46,9 +46,19 @@ user applications
 import utils
 from test_case import TestCase
 from exception import VerifyFailure
-from packet import Packet
 import time
 
+# so as to bind GRE for GRE testing
+from scapy.packet import *
+from scapy.fields import *
+from scapy.layers.inet import UDP,IP
+from scapy.layers.inet6 import IPv6
+from scapy.layers.l2 import Ether
+from scapy.layers.l2 import GRE
+IPPROTO_GRE=47
+
+# to override the one from scapy
+from packet import Packet
 
 class TestUniPacket(TestCase):
 
@@ -63,8 +73,10 @@ class TestUniPacket(TestCase):
         self.dut_port = valports[0]
         tester_port = self.tester.get_local_port(self.dut_port)
         self.tester_iface = self.tester.get_interface(tester_port)
-        self.dut.send_expect(
-            "./%s/app/testpmd -c f -n 4 -- -i --txqflags=0x0" % self.target, "testpmd>", 20)
+	cmd = "./%s/app/testpmd -c f -n 4 -- -i --txqflags=0x0" 
+	if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
+        self.dut.send_expect(cmd % self.target, "testpmd>", 20)
         self.dut.send_expect("set fwd rxonly", "testpmd>")
         self.dut.send_expect("set verbose 1", "testpmd>")
         self.dut.send_expect("start", "testpmd>")
@@ -121,6 +133,9 @@ class TestUniPacket(TestCase):
         elif "niantic" in self.nic.lower() or "i350" in self.nic.lower():
             outerL4Type = ""
             ipv4_default_packet_type = ["L2_ETHER", "L3_IPV4"]
+	elif "cavium" in self.dut.nic_type:
+            outerL4Type = ""
+            ipv4_default_packet_type = ["L3_IPV4"]
         pktType = {
             "MAC_IP_PKT":                ipv4_default_packet_type + [outerL4Type],
             "MAC_IP_UDP_PKT":            ipv4_default_packet_type + ["L4_UDP"],
@@ -139,6 +154,8 @@ class TestUniPacket(TestCase):
         elif "niantic" in self.nic.lower() or "i350" in self.nic.lower():
             pktType.pop("MAC_IP_ICMP_PKT")
             pktType.pop("MAC_IPFRAG_TCP_PKT")
+	elif "cavium" in self.dut.nic_type:
+            pktType.pop("MAC_IP_ICMP_PKT")
 
         self.run_test(pktType)
 
@@ -152,6 +169,9 @@ class TestUniPacket(TestCase):
         elif "niantic" in self.nic.lower() or "i350" in self.nic.lower():
             outerL4Type = ""
             ipv6_default_packet_type = ["L2_ETHER", "L3_IPV6"]
+        elif "cavium" in self.dut.nic_type:
+            outerL4Type = ""
+            ipv6_default_packet_type = ["L3_IPV6"]
 
         pktType = {
             "MAC_IPv6_PKT":          ipv6_default_packet_type + [outerL4Type],
@@ -245,36 +265,55 @@ class TestUniPacket(TestCase):
         checked that whether NVGRE tunnel packet can be normally detected
         by Fortville.
         """
-        self.verify(("fortville" in self.nic or "fortpark_TLV" in self.nic),
+        self.verify(("fortville" in self.nic or "fortpark_TLV" in self.nic or "cavium" in self.dut.nic_type),
                     "NVGRE tunnel packet type detect only support by Fortville")
-        nvgre_base_packet_type = ["L2_ETHER", "L3_IPV4_EXT_UNKNOWN", "TUNNEL_GRENAT"]
-        # INNER IPV4 not with vlan
-        nvgre_ipv4_default_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER", "INNER_L3_IPV4_EXT_UNKNOWN"]
-        # INNER IPV6 not with vlan
-        nvgre_ipv6_default_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER", "INNER_L3_IPV6_EXT_UNKNOWN"]
-        # INNER IPV4 with vlan
-        nvgre_ipv4_vlan_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER_VLAN", "INNER_L3_IPV4_EXT_UNKNOWN"]
-        # INNER IPV6 with vlan
-        nvgre_ipv6_vlan_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER_VLAN", "INNER_L3_IPV6_EXT_UNKNOWN"]
-
-
-        pktType = {
-            "MAC_IP_NVGRE_MAC_IPFRAG_PKT":              nvgre_ipv4_default_packet_type + ["INNER_L4_FRAG"],
-            "MAC_IP_NVGRE_MAC_IP_PKT":                  nvgre_ipv4_default_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IP_NVGRE_MAC_VLAN_PKT":                nvgre_base_packet_type + ["INNER_L2_ETHER"],
-            "MAC_IP_NVGRE_MAC_VLAN_IPFRAG_PKT":         nvgre_ipv4_vlan_packet_type + ["INNER_L4_FRAG"],
-            "MAC_IP_NVGRE_MAC_VLAN_IP_PKT":             nvgre_ipv4_vlan_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IP_NVGRE_MAC_VLAN_IP_UDP_PKT":         nvgre_ipv4_vlan_packet_type + ["INNER_L4_UDP"],
-            "MAC_IP_NVGRE_MAC_VLAN_IP_TCP_PKT":         nvgre_ipv4_vlan_packet_type + ["INNER_L4_TCP"],
-            "MAC_IP_NVGRE_MAC_VLAN_IP_SCTP_PKT":        nvgre_ipv4_vlan_packet_type + ["INNER_L4_SCTP"],
-            "MAC_IP_NVGRE_MAC_VLAN_IP_ICMP_PKT":        nvgre_ipv4_vlan_packet_type + ["INNER_L4_ICMP"],
-            "MAC_IP_NVGRE_MAC_VLAN_IPv6FRAG_PKT":       nvgre_ipv6_vlan_packet_type + ["INNER_L4_FRAG"],
-            "MAC_IP_NVGRE_MAC_VLAN_IPv6_PKT":           nvgre_ipv6_vlan_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IP_NVGRE_MAC_VLAN_IPv6_UDP_PKT":       nvgre_ipv6_vlan_packet_type + ["INNER_L4_UDP"],
-            "MAC_IP_NVGRE_MAC_VLAN_IPv6_TCP_PKT":       nvgre_ipv6_vlan_packet_type + ["INNER_L4_TCP"],
-            "MAC_IP_NVGRE_MAC_VLAN_IPv6_SCTP_PKT":      nvgre_ipv6_vlan_packet_type + ["INNER_L4_SCTP"],
-            "MAC_IP_NVGRE_MAC_VLAN_IPv6_ICMP_PKT":      nvgre_ipv6_vlan_packet_type + ["INNER_L4_ICMP"]
-        }
+	if "cavium" in self.dut.nic_type:
+        	nvgre_base_packet_type = ["L3_IPV4", "TUNNEL_NVGRE"]
+		pktType = {
+       		    "MAC_IP_NVGRE_MAC_IPFRAG_PKT":              nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_IP_PKT":                  nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_PKT":                nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPFRAG_PKT":         nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_PKT":             nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_UDP_PKT":         nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_TCP_PKT":         nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_SCTP_PKT":        nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_ICMP_PKT":        nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6FRAG_PKT":       nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_PKT":           nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_UDP_PKT":       nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_TCP_PKT":       nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_SCTP_PKT":      nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_ICMP_PKT":      nvgre_base_packet_type
+       		}
+	else:
+        	nvgre_base_packet_type = ["L2_ETHER", "L3_IPV4_EXT_UNKNOWN", "TUNNEL_GRENAT"]
+        	# INNER IPV4 not with vlan
+       		nvgre_ipv4_default_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER", "INNER_L3_IPV4"]
+       		# INNER IPV6 not with vlan
+       		nvgre_ipv6_default_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER", "INNER_L3_IPV6"]
+       		# INNER IPV4 with vlan
+       		nvgre_ipv4_vlan_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER_VLAN", "INNER_L3_IPV4"]
+       		# INNER IPV6 with vlan
+       		nvgre_ipv6_vlan_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER_VLAN", "INNER_L3_IPV6"]
+
+       		pktType = {
+       		    "MAC_IP_NVGRE_MAC_IPFRAG_PKT":              nvgre_ipv4_default_packet_type + ["INNER_L4_FRAG"],
+       		    "MAC_IP_NVGRE_MAC_IP_PKT":                  nvgre_ipv4_default_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_PKT":                nvgre_base_packet_type + ["INNER_L2_ETHER"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPFRAG_PKT":         nvgre_ipv4_vlan_packet_type + ["INNER_L4_FRAG"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_PKT":             nvgre_ipv4_vlan_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_UDP_PKT":         nvgre_ipv4_vlan_packet_type + ["INNER_L4_UDP"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_TCP_PKT":         nvgre_ipv4_vlan_packet_type + ["INNER_L4_TCP"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_SCTP_PKT":        nvgre_ipv4_vlan_packet_type + ["INNER_L4_SCTP"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_ICMP_PKT":        nvgre_ipv4_vlan_packet_type + ["INNER_L4_ICMP"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6FRAG_PKT":       nvgre_ipv6_vlan_packet_type + ["INNER_L4_FRAG"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_PKT":           nvgre_ipv6_vlan_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_UDP_PKT":       nvgre_ipv6_vlan_packet_type + ["INNER_L4_UDP"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_TCP_PKT":       nvgre_ipv6_vlan_packet_type + ["INNER_L4_TCP"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_SCTP_PKT":      nvgre_ipv6_vlan_packet_type + ["INNER_L4_SCTP"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_ICMP_PKT":      nvgre_ipv6_vlan_packet_type + ["INNER_L4_ICMP"]
+       		}
         self.run_test(pktType)
 
     def test_NVGRE_in_IPv6_tunnel(self):
@@ -282,45 +321,76 @@ class TestUniPacket(TestCase):
         checked that whether NVGRE in IPv6 tunnel packet can be normally
         detected by Fortville.
         """
-        self.verify(("fortville" in self.nic or "fortpark_TLV" in self.nic),
+        self.verify(("fortville" in self.nic or "fortpark_TLV" in self.nic or "cavium" in self.dut.nic_type),
                     "NVGRE in IPv6 detect only support by Fortville")
-        nvgre_base_packet_type = ["L2_ETHER", "L3_IPV6_EXT_UNKNOWN", "TUNNEL_GRENAT"]
-        # INNER IPV4 not with vlan
-	nvgre_ipv4_default_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER", "INNER_L3_IPV4_EXT_UNKNOWN"]
-        # INNER IPV6 not with vlan
-        nvgre_ipv6_default_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER", "INNER_L3_IPV6_EXT_UNKNOWN"]
-        # INNER IPV4 with vlan
-	nvgre_ipv4_vlan_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER_VLAN", "INNER_L3_IPV4_EXT_UNKNOWN"]
-        # INNER IPV6 with vlan
-        nvgre_ipv6_vlan_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER_VLAN", "INNER_L3_IPV6_EXT_UNKNOWN"]
-
-        pkt_types = {
-            "MAC_IPv6_NVGRE_MAC_PKT":               nvgre_base_packet_type + ["INNER_L2_ETHER"],
-            "MAC_IPv6_NVGRE_MAC_IPFRAG_PKT":        nvgre_ipv4_default_packet_type + ["INNER_L4_FRAG"],
-            "MAC_IPv6_NVGRE_MAC_IP_PKT":            nvgre_ipv4_default_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IPv6_NVGRE_MAC_IP_UDP_PKT":        nvgre_ipv4_default_packet_type + ["INNER_L4_UDP"],
-            "MAC_IPv6_NVGRE_MAC_IP_TCP_PKT":        nvgre_ipv4_default_packet_type + ["INNER_L4_TCP"],
-            "MAC_IPv6_NVGRE_MAC_IP_SCTP_PKT":       nvgre_ipv4_default_packet_type + ["INNER_L4_SCTP"],
-            "MAC_IPv6_NVGRE_MAC_IP_ICMP_PKT":       nvgre_ipv4_default_packet_type + ["INNER_L4_ICMP"],
-            "MAC_IPv6_NVGRE_MAC_IPv6FRAG_PKT":      nvgre_ipv6_default_packet_type + ["INNER_L4_FRAG"],
-            "MAC_IPv6_NVGRE_MAC_IPv6_PKT":          nvgre_ipv6_default_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IPv6_NVGRE_MAC_IPv6_UDP_PKT":      nvgre_ipv6_default_packet_type + ["INNER_L4_UDP"],
-            "MAC_IPv6_NVGRE_MAC_IPv6_TCP_PKT":      nvgre_ipv6_default_packet_type + ["INNER_L4_TCP"], 
-            "MAC_IPv6_NVGRE_MAC_IPv6_SCTP_PKT":     nvgre_ipv6_default_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IPv6_NVGRE_MAC_IPv6_ICMP_PKT":     nvgre_ipv6_default_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IPFRAG_PKT":   nvgre_ipv4_vlan_packet_type + ["INNER_L4_FRAG"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IP_PKT":       nvgre_ipv4_vlan_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IP_UDP_PKT":   nvgre_ipv4_vlan_packet_type + ["INNER_L4_UDP"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IP_TCP_PKT":   nvgre_ipv4_vlan_packet_type + ["INNER_L4_TCP"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IP_SCTP_PKT":  nvgre_ipv4_vlan_packet_type + ["INNER_L4_SCTP"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IP_ICMP_PKT":  nvgre_ipv4_vlan_packet_type + ["INNER_L4_ICMP"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IPv6FRAG_PKT": nvgre_ipv6_vlan_packet_type + ["INNER_L4_FRAG"], 
-            "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_PKT":     nvgre_ipv6_vlan_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_UDP_PKT": nvgre_ipv6_vlan_packet_type + ["INNER_L4_UDP"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_TCP_PKT": nvgre_ipv6_vlan_packet_type + ["INNER_L4_TCP"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_SCTP_PKT":nvgre_ipv6_vlan_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_ICMP_PKT":nvgre_ipv6_vlan_packet_type + ["INNER_L4_NONFRAG"]
-        }
+	if "cavium" in self.dut.nic_type:
+		#cavium recognizes only L3 and L4 by hardware
+       		nvgre_base_packet_type = ["L3_IPV6", "TUNNEL_NVGRE"]
+       		pkt_types = {
+       		    "MAC_IPv6_NVGRE_MAC_PKT":               nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IPFRAG_PKT":        nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IP_PKT":            nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IP_UDP_PKT":        nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IP_TCP_PKT":        nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IP_SCTP_PKT":       nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IP_ICMP_PKT":       nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IPv6FRAG_PKT":      nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_PKT":          nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_UDP_PKT":      nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_TCP_PKT":      nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_SCTP_PKT":     nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_ICMP_PKT":     nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPFRAG_PKT":   nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_PKT":       nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_UDP_PKT":   nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_TCP_PKT":   nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_SCTP_PKT":  nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_ICMP_PKT":  nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6FRAG_PKT": nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_PKT":     nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_UDP_PKT": nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_TCP_PKT": nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_SCTP_PKT":nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_ICMP_PKT":nvgre_base_packet_type
+       		}
+	else:
+       		nvgre_base_packet_type = ["L2_ETHER", "L3_IPV6_EXT_UNKNOWN", "TUNNEL_GRENAT"]
+       		# INNER IPV4 not with vlan
+       		nvgre_ipv4_default_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER", "INNER_L3_IPV4_EXT_UNKNOWN"]
+       		# INNER IPV6 not with vlan
+       		nvgre_ipv6_default_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER", "INNER_L3_IPV6_EXT_UNKNOWN"]
+       		# INNER IPV4 with vlan
+       		nvgre_ipv4_vlan_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER_VLAN", "INNER_L3_IPV4_EXT_UNKNOWN"]
+       		# INNER IPV6 with vlan
+       		nvgre_ipv6_vlan_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER_VLAN", "INNER_L3_IPV6_EXT_UNKNOWN"]
+
+       		pkt_types = {
+       		    "MAC_IPv6_NVGRE_MAC_PKT":               nvgre_base_packet_type + ["INNER_L2_ETHER"],
+       		    "MAC_IPv6_NVGRE_MAC_IPFRAG_PKT":        nvgre_ipv4_default_packet_type + ["INNER_L4_FRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_IP_PKT":            nvgre_ipv4_default_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_IP_UDP_PKT":        nvgre_ipv4_default_packet_type + ["INNER_L4_UDP"],
+       		    "MAC_IPv6_NVGRE_MAC_IP_TCP_PKT":        nvgre_ipv4_default_packet_type + ["INNER_L4_TCP"],
+       		    "MAC_IPv6_NVGRE_MAC_IP_SCTP_PKT":       nvgre_ipv4_default_packet_type + ["INNER_L4_SCTP"],
+       		    "MAC_IPv6_NVGRE_MAC_IP_ICMP_PKT":       nvgre_ipv4_default_packet_type + ["INNER_L4_ICMP"],
+       		    "MAC_IPv6_NVGRE_MAC_IPv6FRAG_PKT":      nvgre_ipv6_default_packet_type + ["INNER_L4_FRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_PKT":          nvgre_ipv6_default_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_UDP_PKT":      nvgre_ipv6_default_packet_type + ["INNER_L4_UDP"],
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_TCP_PKT":      nvgre_ipv6_default_packet_type + ["INNER_L4_TCP"], 
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_SCTP_PKT":     nvgre_ipv6_default_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_ICMP_PKT":     nvgre_ipv6_default_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPFRAG_PKT":   nvgre_ipv4_vlan_packet_type + ["INNER_L4_FRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_PKT":       nvgre_ipv4_vlan_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_UDP_PKT":   nvgre_ipv4_vlan_packet_type + ["INNER_L4_UDP"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_TCP_PKT":   nvgre_ipv4_vlan_packet_type + ["INNER_L4_TCP"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_SCTP_PKT":  nvgre_ipv4_vlan_packet_type + ["INNER_L4_SCTP"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_ICMP_PKT":  nvgre_ipv4_vlan_packet_type + ["INNER_L4_ICMP"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6FRAG_PKT": nvgre_ipv6_vlan_packet_type + ["INNER_L4_FRAG"], 
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_PKT":     nvgre_ipv6_vlan_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_UDP_PKT": nvgre_ipv6_vlan_packet_type + ["INNER_L4_UDP"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_TCP_PKT": nvgre_ipv6_vlan_packet_type + ["INNER_L4_TCP"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_SCTP_PKT":nvgre_ipv6_vlan_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_ICMP_PKT":nvgre_ipv6_vlan_packet_type + ["INNER_L4_NONFRAG"]
+       		}
 
         self.run_test(pkt_types)
 
@@ -328,9 +398,13 @@ class TestUniPacket(TestCase):
         """
         checked that whether GRE tunnel packet can be normally detected by Fortville.
         """
-        self.verify(("fortville" in self.nic or "fortpark_TLV" in self.nic),
+	bind_layers(IP, GRE, frag=0, proto=IPPROTO_GRE)
+        self.verify(("fortville" in self.nic or "fortpark_TLV" in self.nic or "cavium" in self.dut.nic_type),
                     "GRE tunnel packet type detect only support by Fortville")
-        IPv4_packet_type = [" L2_ETHER", " L3_IPV4_EXT_UNKNOWN", "L4_NONFRAG"]
+	if "cavium" in self.dut.nic_type:
+        	IPv4_packet_type = ["L3_IPV4", "TUNNEL_GRE"]
+	else:
+        	IPv4_packet_type = [" L2_ETHER", " L3_IPV4_EXT_UNKNOWN", "L4_NONFRAG"]
 
         pktType = {
             "MAC_IP_GRE_IPFRAG_PKT":          IPv4_packet_type,
@@ -342,6 +416,7 @@ class TestUniPacket(TestCase):
             "MAC_IP_GRE_PKT":                 IPv4_packet_type
         }
         self.run_test(pktType)
+	split_layers(IP, GRE, frag=0, proto=IPPROTO_GRE)
 
     def test_Vxlan_tunnel(self):
         """
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 25/26] tests: unit_tests_dump - taking into account cavium NICs
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
                   ` (23 preceding siblings ...)
  2017-04-06 17:51 ` [dts] [PATCH 24/26] tests: uni_pkt " Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-06 17:51 ` [dts] [PATCH 26/26] tests: unit_tests_lpm - asking for lesser amount of hugepages if they are 524288kB Angela Czubak
                   ` (2 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Testpmd must be run with hardware VLAN filter disabled as thunder
driver does not support this feature - --disable-hw-vlan-filter is
appended if NIC is Cavium device.
In test_ring_dump, matching the mbuf_pool is done against the first
element of group (instead of the last one), since it is the first group
matched.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_unit_tests_dump.py | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/tests/TestSuite_unit_tests_dump.py b/tests/TestSuite_unit_tests_dump.py
index 0ec8d78..fa09894 100644
--- a/tests/TestSuite_unit_tests_dump.py
+++ b/tests/TestSuite_unit_tests_dump.py
@@ -85,7 +85,10 @@ class TestUnitTestsDump(TestCase):
         """
         Run history log dump test case.
         """
-        self.dut.send_expect("./%s/app/testpmd -n 1 -c f -- -i" % (self.target), "testpmd>", self.start_test_time)
+	cmd = "./%s/app/testpmd -n 1 -c f -- -i"
+	if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
+        self.dut.send_expect(cmd % (self.target), "testpmd>", self.start_test_time)
         out = self.dut.send_expect("dump_ring", "testpmd>", self.run_cmd_time)
         self.dut.send_expect("quit", "# ")
         match_regex = "ring <(.*?)>@0x(.*)\r\n"
@@ -94,13 +97,16 @@ class TestUnitTestsDump(TestCase):
         
         # Nic driver will create multiple rings.
         # Only check the last one to make sure ring_dump function work.
-        self.verify( 'MP_mbuf_pool_socket_0' in result[0][-1], "dump ring name failed")
+        self.verify( 'MP_mbuf_pool_socket_0' in result[0][0], "dump ring name failed")
 
     def test_mempool_dump(self):
         """
         Run mempool dump test case.
         """
-        self.dut.send_expect("./%s/app/testpmd -n 1 -c f -- -i" % (self.target), "testpmd>", self.start_test_time)
+	cmd = "./%s/app/testpmd -n 1 -c f -- -i"
+	if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
+        self.dut.send_expect(cmd % (self.target), "testpmd>", self.start_test_time)
         out = self.dut.send_expect("dump_mempool", "testpmd>", self.run_cmd_time * 2)
         self.dut.send_expect("quit", "# ")
         match_regex = "mempool <(.*?)>@0x(.*?)\r\n"
@@ -133,7 +139,10 @@ class TestUnitTestsDump(TestCase):
         """
         Run memzone dump test case.
         """
-        self.dut.send_expect("./%s/app/testpmd -n 1 -c f -- -i" % (self.target), "testpmd>", self.start_test_time)
+	cmd = "./%s/app/testpmd -n 1 -c f -- -i"
+	if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
+        self.dut.send_expect(cmd % (self.target), "testpmd>", self.start_test_time)
         out = self.dut.send_expect("dump_memzone", "testpmd>", self.run_cmd_time * 2)
         self.dut.send_expect("quit", "# ")
 
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH 26/26] tests: unit_tests_lpm - asking for lesser amount of hugepages if they are 524288kB
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
                   ` (24 preceding siblings ...)
  2017-04-06 17:51 ` [dts] [PATCH 25/26] tests: unit_tests_dump " Angela Czubak
@ 2017-04-06 17:51 ` Angela Czubak
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-06 17:51 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Test case test_lpm_ipv6 first checks what is the hugepages size on the
DUT and then requests only 16 if the size is 524288

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_unit_tests_lpm.py | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/tests/TestSuite_unit_tests_lpm.py b/tests/TestSuite_unit_tests_lpm.py
index e8149ff..68fa3bd 100644
--- a/tests/TestSuite_unit_tests_lpm.py
+++ b/tests/TestSuite_unit_tests_lpm.py
@@ -85,9 +85,14 @@ class TestUnitTestsLpmIpv6(TestCase):
             pass
         else:
             hugepage_ori = self.dut.get_total_huge_pages()
-            self.dut.set_huge_pages(4096)
+            hugepages_size = self.dut.send_expect("awk '/Hugepagesize/ {print $2}' /proc/meminfo", "# ")
+	    if "524288" == hugepages_size:
+            	nr_hugepages = 16
+	    else:
+            	nr_hugepags = 4096
+            self.dut.set_huge_pages(nr_hugepages)
             hugepage_num = self.dut.get_total_huge_pages()
-            self.verify(hugepage_num >= 4096, "failed to request huge memory")
+            self.verify(hugepage_num >= nr_hugepages, "failed to request huge memory")
 
         self.dut.send_expect("./%s/app/test -n 1 -c f" % self.target, "R.*T.*E.*>.*>", 60)
         out = self.dut.send_expect("lpm6_autotest", "RTE>>", 3600)
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* Re: [dts] [PATCH 09/26] tests: Modified tests to take cavium nics into account
  2017-04-06 17:51 ` [dts] [PATCH 09/26] tests: Modified tests to take cavium nics into account Angela Czubak
@ 2017-04-10 17:08   ` Angela Czubak
  0 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:08 UTC (permalink / raw)
  To: dts

On 06.04.2017 19:51, Angela Czubak wrote:
> diff --git a/tests/TestSuite_shutdown_api.py b/tests/TestSuite_shutdown_api.py
> index 66219f5..b616ed5 100644
> --- a/tests/TestSuite_shutdown_api.py
> +++ b/tests/TestSuite_shutdown_api.py
> @@ -332,25 +332,26 @@ class TestShutdownApi(TestCase):
>           jumbo_size = 2048
>           self.pmdout.start_testpmd("Default", "--portmask=%s --port-topology=loop" % utils.create_mask(self.ports), socket=self.ports_socket)
>           self.dut.send_expect("port stop all", "testpmd> ", 100)
> -        self.dut.send_expect("vlan set strip off all", "testpmd> ")
> -        self.dut.send_expect("port config all max-pkt-len %d" % jumbo_size, "testpmd> ")
> -        for port in self.ports:
> -            self.dut.send_expect("rx_vlan add 1 %d" % port, "testpmd> ")
> -        self.dut.send_expect("set fwd mac", "testpmd>")
> -        self.dut.send_expect("port start all", "testpmd> ", 100)
> -        self.dut.send_expect("start", "testpmd> ")
> +        out = self.dut.send_expect("vlan set strip off all", "testpmd> ")
> +        if "fail" not in out:
> +            self.dut.send_expect("port config all max-pkt-len %d" % jumbo_size, "testpmd> ")
> +            for port in self.ports:
> +                self.dut.send_expect("rx_vlan add 1 %d" % port, "testpmd> ")
> +            self.dut.send_expect("set fwd mac", "testpmd>")
> +            self.dut.send_expect("port start all", "testpmd> ", 100)
> +            self.dut.send_expect("start", "testpmd> ")
>   
> -        if self.nic in ['magnolia_park', 'niantic', 'twinpond', 'kawela_4', 'ironpond', 'springfountain', 'springville', 'powerville']:
> -            # nantic vlan length will not be calculated
> -            vlan_jumbo_size = jumbo_size + 4
> -        else:
> -            vlan_jumbo_size = jumbo_size
> +            if self.nic in ['magnolia_park', 'niantic', 'twinpond', 'kawela_4', 'ironpond', 'springfountain', 'springville', 'powerville']:
> +                # nantic vlan length will not be calculated
> +                vlan_jumbo_size = jumbo_size + 4
> +            else:
> +                vlan_jumbo_size = jumbo_size
>   
> -        self.check_forwarding(pktSize=vlan_jumbo_size - 1, vlan=True)
> -        self.check_forwarding(pktSize=vlan_jumbo_size, vlan=True)
> -        self.check_forwarding(pktSize=vlan_jumbo_size + 1, received=False, vlan=True)
> +            self.check_forwarding(pktSize=vlan_jumbo_size - 1, vlan=True)
> +            self.check_forwarding(pktSize=vlan_jumbo_size, vlan=True)
> +            self.check_forwarding(pktSize=vlan_jumbo_size + 1, received=False, vlan=True)
>   
> -        self.dut.send_expect("stop", "testpmd> ")
> +            self.dut.send_expect("stop", "testpmd> ")
>   
>           self.dut.send_expect("port stop all", "testpmd> ", 100)
>           self.dut.send_expect("port config all hw-vlan off", "testpmd> ")
Actually, found a bug: setting MTU should be done outside the 'if "fail" 
not in out' clause, so that if NIC does not support setting VLAN 
stripping off, it still is tested with the desired max-pkt-len. It will 
be fixed in v2.

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 00/28]  DTS support for Cavium NICs
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
                   ` (25 preceding siblings ...)
  2017-04-06 17:51 ` [dts] [PATCH 26/26] tests: unit_tests_lpm - asking for lesser amount of hugepages if they are 524288kB Angela Czubak
@ 2017-04-10 17:08 ` Angela Czubak
  2017-04-10 17:08   ` [dts] [PATCH v2 01/28] framework settings: Adding cavium PCI IDs and drivers Angela Czubak
                     ` (28 more replies)
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
  27 siblings, 29 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:08 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Changes done to run DTS for Cavium NICs

1) Cavium devices with 177d:a034 and 177d:0011 PCI IDs are added to NICs list, both of which are supported by thunder-nicvf driver
2) When appending pci devices info, the only Cavium NICs appended are the ones with 10Gb/s linkspeed
3) For arm64 architecture the hugepage size is detected and if it is 524288, then lesser amount of hugepages is acquired
4) Created a method in Dut class for getting the right binding script (if someone chooses to use older DPDK version)
5) Checking link is done via IPv4 ping alternately, so that DUT can be a system without IPv6 (previously link was detected solely by checking if an interface obtained an IPv6 address and then by using ping6). This also makes force binding necessary, as those interfaces are detected as active.
6) Checking whether vfio-pci was loaded using lsmod can be deceptive. If someone decides to use DPDK on a system with modules built into the kernel, then this approach will fail. Instead, DPDK binding script can be used and if it shows that vfio-pci can be used, DTS proceeds, otherwise it send with an error due to a failed assertion.
7) Modifying tests and config for Cavium NICs
8) Added support for Cavium NICs to choose only cards with specified linkspeed
9) Skipping recompling DPDK in TestSuite_pmd.py if the driver is not meant for FVL

Changes since initial version:
- Added support for Cavium NICs to choose only cards with specified linkspeed
- Skipping recompling DPDK in TestSuite_pmd.py if the driver is not meant for FVL
- Setting max-pkt-len before setting vlan stripping off in TestSuite_shutdown_api.py when testing jumbo frames


Angela Czubak (28):
  framework settings: Adding cavium PCI IDs and drivers
  framework dut and project_dpdk: using correct available binding
    scripts
  framework dut and project_dpdk: binding smaller number of hugepages
    for     arm64
  framework crb: Appending only 10G devices for cavium
  framework project_dpdk: asserting loading vfio-pci by using DPDK    
    binding script
  framework: checking link with IPv4 ping
  tests: ipv4_reassembly - added splitting result in tcpdump_command
  framework: getting DPDK binding script moved to a method in dut
  tests: Modified tests to take cavium nics into account
  tests: checksum_offload - fixes
  tests: dynamic_config - taking into account cavium NICs
  tests: fdir - skipping fdir tests for Cavium NICs
  tests: ieee1588 - skipping ieee1588_enable test for Cavium NICs
  tests: jumboframes - skipping jumboframes tests testing bigger than   
     allowed frames for Cavium NICs
  tests: l2fwd - fixes to run on two cards (same NIC) and expecting    
    "L2FWD: entering main loop" instead of "memory mapped"
  tests: link_status_interrupt - skipping    
    test_link_status_interrupt_port_available for Cavium NICs
  tests: link_status_interrupt - skipping tests verifying adding MAC    
    addresses for Cavium NICs
  tests: pmdpcap - modifying the right config file + importing utils    
    after scapy
  tests: pmdrssreta - skipping tests for Cavium NICs
  tests: queue_start_stop - taking into account cavium NICs
  tests: quota_watermark - skipping tests for Cavium NICs
  tests: short_live - taking into account cavium NICs + fixes
  tests: tso - taking into account cavium NICs
  tests: uni_pkt - taking into account cavium NICs
  tests: unit_tests_dump - taking into account cavium NICs
  tests: unit_tests_lpm - asking for lesser amount of hugepages if they 
       are 524288kB
  framework: Adding linkspeed parameter for Cavium NICs
  tests: pmd - Recompiling DPDK only if that is relevant

 conf/dpdk_support_test_case.xls     | Bin 25600 -> 8704 bytes
 conf/dpdk_test_case_checklist.xls   | Bin 31232 -> 21504 bytes
 doc/dts_gsg/config.rst              |   4 +
 framework/crb.py                    |  12 +-
 framework/dts.py                    |   5 +
 framework/dut.py                    |  52 ++++++---
 framework/pmd_output.py             |   4 +
 framework/project_dpdk.py           |  18 ++-
 framework/settings.py               |   5 +
 framework/test_capabilities.py      |   9 ++
 framework/test_case.py              |   7 +-
 framework/tester.py                 |  11 ++
 nics/net_device.py                  |   8 +-
 tests/TestSuite_checksum_offload.py |  38 +++----
 tests/TestSuite_dynamic_config.py   |  10 +-
 tests/TestSuite_ipv4_reassembly.py  |   2 +-
 tests/TestSuite_l2fwd.py            |   4 +-
 tests/TestSuite_pmd.py              |   5 +-
 tests/TestSuite_pmdpcap.py          |  13 ++-
 tests/TestSuite_queue_start_stop.py |   5 +-
 tests/TestSuite_short_live.py       |  44 ++++++--
 tests/TestSuite_shutdown_api.py     |  31 ++---
 tests/TestSuite_tso.py              |  10 +-
 tests/TestSuite_uni_pkt.py          | 219 ++++++++++++++++++++++++------------
 tests/TestSuite_unit_tests_dump.py  |  17 ++-
 tests/TestSuite_unit_tests_lpm.py   |   9 +-
 26 files changed, 383 insertions(+), 159 deletions(-)
 create mode 100644 framework/test_capabilities.py

-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 01/28] framework settings: Adding cavium PCI IDs and drivers
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
@ 2017-04-10 17:08   ` Angela Czubak
  2017-04-10 17:08   ` [dts] [PATCH v2 02/28] framework dut and project_dpdk: using correct available binding scripts Angela Czubak
                     ` (27 subsequent siblings)
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:08 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Below patch adds preliminary settings to support Cavium NICs.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 framework/settings.py  | 4 ++++
 framework/test_case.py | 2 ++
 2 files changed, 6 insertions(+)

diff --git a/framework/settings.py b/framework/settings.py
index 44743f9..342314d 100644
--- a/framework/settings.py
+++ b/framework/settings.py
@@ -91,6 +91,8 @@ NICS = {
     'ConnectX4': '15b3:1013',
     'boulderrapid': '8086:15d0',
     'fortville_25g': '8086:158b',
+    'cavium_a034': '177d:a034',
+    'cavium_0011': '177d:0011',
 }
 
 DRIVERS = {
@@ -136,6 +138,8 @@ DRIVERS = {
     'ConnectX4': 'mlx5_core',
     'boulderrapid': 'fm10k',
     'fortville_25g': 'i40e',
+    'cavium_a034': 'thunder-nicvf',
+    'cavium_0011': 'thunder-nicvf',
 }
 
 """
diff --git a/framework/test_case.py b/framework/test_case.py
index 270f7b9..d97d898 100644
--- a/framework/test_case.py
+++ b/framework/test_case.py
@@ -365,5 +365,7 @@ class TestCase(object):
             bitrate *= 10
         elif nic == 'redrockcanyou':
             bitrate *= 40
+        elif driver == 'thunder-nicvf':
+            bitrate *= 10
 
         return bitrate * num_ports / 8 / (frame_size + 20)
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 02/28] framework dut and project_dpdk: using correct available binding scripts
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
  2017-04-10 17:08   ` [dts] [PATCH v2 01/28] framework settings: Adding cavium PCI IDs and drivers Angela Czubak
@ 2017-04-10 17:08   ` Angela Czubak
  2017-04-17  6:35     ` Liu, Yong
  2017-04-10 17:08   ` [dts] [PATCH v2 03/28] framework dut and project_dpdk: binding smaller number of hugepages for arm64 Angela Czubak
                     ` (26 subsequent siblings)
  28 siblings, 1 reply; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:08 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Below patch makes scripts look for correct DPDK binding script,
checking whether 'usertools' or 'tools' directory is present and which
script exist in 'tools' directory ('dpdk-devbind.py' or
'dpdk_nic_bind.py')

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 framework/dut.py          | 21 ++++++++++++++++++---
 framework/project_dpdk.py | 20 ++++++++++++++++++--
 2 files changed, 36 insertions(+), 5 deletions(-)

diff --git a/framework/dut.py b/framework/dut.py
index 9cbdaf7..4ce5c3a 100644
--- a/framework/dut.py
+++ b/framework/dut.py
@@ -377,8 +377,15 @@ class Dut(Crb):
         if current_nic == 0:
             self.logger.info("Not nic need bind driver: %s" % driver)
             return
-
-        self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ')
+        op = self.send_command("ls")
+        if "usertools" in op:
+            self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ')
+        else:
+            op = self.send_command("ls tools")
+            if "dpdk_nic_bind.py" in op:
+                self.send_expect('tools/dpdk_nic_bind.py %s' % binding_list, '# ')
+            else:
+                self.send_expect('tools/dpdk-devbind.py %s' % binding_list, '# ')
 
     def unbind_interfaces_linux(self, nics_to_bind=None):
         """
@@ -402,7 +409,15 @@ class Dut(Crb):
             self.logger.info("Not nic need unbind driver")
             return
 
-        self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ', 30)
+        op = self.send_command("ls")
+        if "usertools" in op:
+            self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ')
+        else:
+            op = self.send_command("ls tools")
+            if "dpdk_nic_bind.py" in op:
+                self.send_expect('tools/dpdk_nic_bind.py %s' % binding_list, '# ')
+            else:
+                self.send_expect('tools/dpdk-devbind.py %s' % binding_list, '# ')
 
     def get_ports(self, nic_type='any', perf=None, socket=None):
         """
diff --git a/framework/project_dpdk.py b/framework/project_dpdk.py
index a0cb4c2..50740f8 100644
--- a/framework/project_dpdk.py
+++ b/framework/project_dpdk.py
@@ -314,7 +314,15 @@ class DPDKdut(Dut):
                 binding_list += '%s ' % (port_info['pci'])
             current_nic += 1
 
-        self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ')
+        op = self.send_command("ls")
+        if "usertools" in op:
+            self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ')
+        else:
+            op = self.send_command("ls tools")
+            if "dpdk_nic_bind.py" in op:
+                self.send_expect('tools/dpdk_nic_bind.py %s' % binding_list, '# ')
+            else:
+                self.send_expect('tools/dpdk-devbind.py %s' % binding_list, '# ')
 
     def unbind_interfaces_linux(self, nics_to_bind=None):
         """
@@ -329,7 +337,15 @@ class DPDKdut(Dut):
                 binding_list += '%s ' % (port_info['pci'])
             current_nic += 1
 
-        self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ', 30)
+        op = self.send_command("ls")
+        if "usertools" in op:
+            self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ')
+        else:
+            op = self.send_command("ls tools")
+            if "dpdk_nic_bind.py" in op:
+                self.send_expect('tools/dpdk_nic_bind.py %s' % binding_list, '# ')
+            else:
+                self.send_expect('tools/dpdk-devbind.py %s' % binding_list, '# ')
 
     def build_dpdk_apps(self, folder, extra_options=''):
         """
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 03/28] framework dut and project_dpdk: binding smaller number of hugepages for arm64
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
  2017-04-10 17:08   ` [dts] [PATCH v2 01/28] framework settings: Adding cavium PCI IDs and drivers Angela Czubak
  2017-04-10 17:08   ` [dts] [PATCH v2 02/28] framework dut and project_dpdk: using correct available binding scripts Angela Czubak
@ 2017-04-10 17:08   ` Angela Czubak
  2017-04-10 17:08   ` [dts] [PATCH v2 04/28] framework crb: Appending only 10G devices for cavium Angela Czubak
                     ` (25 subsequent siblings)
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:08 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Changed default number of set hugepages from 1024 to 8 if architecture
is arm64 and huge pages size is 524288 kB.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 framework/dut.py          | 5 ++++-
 framework/project_dpdk.py | 6 +++++-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/framework/dut.py b/framework/dut.py
index 4ce5c3a..b5a21ce 100644
--- a/framework/dut.py
+++ b/framework/dut.py
@@ -308,7 +308,10 @@ class Dut(Crb):
             elif self.architecture == "ppc_64":
                 arch_huge_pages = hugepages if hugepages > 0 else 512
             elif self.architecture == "arm64":
-                arch_huge_pages = hugepages if hugepages > 0 else 2048
+                if hugepages_size == "524288":
+                    arch_huge_pages = hugepages if hugepages > 0 else 8
+                else:
+                    arch_huge_pages = hugepages if hugepages > 0 else 2048
 
             if total_huge_pages != arch_huge_pages:
                 # before all hugepage average distribution  by all socket,
diff --git a/framework/project_dpdk.py b/framework/project_dpdk.py
index 50740f8..97491c7 100644
--- a/framework/project_dpdk.py
+++ b/framework/project_dpdk.py
@@ -428,9 +428,13 @@ class DPDKtester(Tester):
 
         if not self.skip_setup:
             total_huge_pages = self.get_total_huge_pages()
+            hugepages_size = self.send_expect("awk '/Hugepagesize/ {print $2}' /proc/meminfo", "# ")
             if total_huge_pages == 0:
                 self.mount_huge_pages()
-                self.set_huge_pages(1024)
+                if hugepages_size == "524288":
+                    self.set_huge_pages(8)
+                else:
+                    self.set_huge_pages(1024)
 
             self.session.copy_file_to("dep/tgen.tgz")
             self.session.copy_file_to("dep/tclclient.tgz")
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 04/28] framework crb: Appending only 10G devices for cavium
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (2 preceding siblings ...)
  2017-04-10 17:08   ` [dts] [PATCH v2 03/28] framework dut and project_dpdk: binding smaller number of hugepages for arm64 Angela Czubak
@ 2017-04-10 17:08   ` Angela Czubak
  2017-04-10 17:08   ` [dts] [PATCH v2 05/28] framework project_dpdk: asserting loading vfio-pci by using DPDK binding script Angela Czubak
                     ` (24 subsequent siblings)
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:08 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

When collecting pci devices info in
pci_devices_information_uncached_linux devices are checked if they are
from cavium and if so linkspeed is detected to append only 10Gb
interfaces

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 framework/crb.py | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/framework/crb.py b/framework/crb.py
index 9b41a0f..63c8093 100644
--- a/framework/crb.py
+++ b/framework/crb.py
@@ -268,7 +268,14 @@ class Crb(object):
         match = pattern.findall(out)
         self.pci_devices_info = []
         for i in range(len(match)):
-            self.pci_devices_info.append((match[i][0], match[i][1]))
+            #check if device is cavium and check its linkspeed, append only if it is 10G
+            if "177d:" in match[i][1]:
+                linkspeed = "10000"
+                nic_linkspeed = self.send_command("cat /sys/bus/pci/devices/%s/net/*/speed" % match[i][0])
+                if nic_linkspeed == linkspeed:
+                    self.pci_devices_info.append((match[i][0], match[i][1]))
+            else:
+                self.pci_devices_info.append((match[i][0], match[i][1]))
 
     def pci_devices_information_uncached_freebsd(self):
         """
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 05/28] framework project_dpdk: asserting loading vfio-pci by using DPDK binding script
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (3 preceding siblings ...)
  2017-04-10 17:08   ` [dts] [PATCH v2 04/28] framework crb: Appending only 10G devices for cavium Angela Czubak
@ 2017-04-10 17:08   ` Angela Czubak
  2017-04-10 17:09   ` [dts] [PATCH v2 06/28] framework: checking link with IPv4 ping Angela Czubak
                     ` (23 subsequent siblings)
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:08 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

If one uses kernel with builtin modules lsmod does not print modules
even though they may be used. Thus, it is better to check if vfio-pci
can be bound by checking status with DPDK binding script (it appears in
unused drivers).

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 framework/project_dpdk.py | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/framework/project_dpdk.py b/framework/project_dpdk.py
index 97491c7..f3d3701 100644
--- a/framework/project_dpdk.py
+++ b/framework/project_dpdk.py
@@ -102,8 +102,17 @@ class DPDKdut(Dut):
             self.send_expect("rmmod vfio", "#", 70)
             self.send_expect("modprobe vfio", "#", 70)
             self.send_expect("modprobe vfio-pci", "#", 70)
-            out = self.send_expect("lsmod | grep vfio_iommu_type1", "#")
-            assert ("vfio_iommu_type1" in out), "Failed to setup vfio-pci"
+            # check with dpdk binding script instead of lsmod - kernel may have builtin modules
+            op = self.send_command("ls")
+            if "usertools" in op:
+                out = self.send_expect('usertools/dpdk-devbind.py --status', '# ')
+            else:
+                op = self.send_command("ls tools")
+                if "dpdk_nic_bind.py" in op:
+                    out = self.send_expect('tools/dpdk_nic_bind.py --status', '# ')
+                else:
+                    out = self.send_expect('tools/dpdk-devbind.py --status', '# ')
+            assert ("vfio-pci" in out), "Failed to setup vfio-pci"
         else:
             self.send_expect("modprobe uio", "#", 70)
             out = self.send_expect("lsmod | grep igb_uio", "#")
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 06/28]  framework: checking link with IPv4 ping
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (4 preceding siblings ...)
  2017-04-10 17:08   ` [dts] [PATCH v2 05/28] framework project_dpdk: asserting loading vfio-pci by using DPDK binding script Angela Czubak
@ 2017-04-10 17:09   ` Angela Czubak
  2017-04-10 17:09   ` [dts] [PATCH v2 07/28] tests: ipv4_reassembly - added splitting result in tcpdump_command Angela Czubak
                     ` (22 subsequent siblings)
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:09 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Some kernels may not use IPv6 and hence there is no point using ping6.
If lack of link by IPv6 is detected then IPv4 pings are sent
(previously ports where skipped if they had no IPv6 connectivity).
DPDK binding script uses "--force" argument, since interfaces are
detected as active.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 framework/dut.py          | 30 ++++++++++++++++++++----------
 framework/project_dpdk.py |  2 +-
 framework/tester.py       | 11 +++++++++++
 nics/net_device.py        |  8 ++++----
 4 files changed, 36 insertions(+), 15 deletions(-)

diff --git a/framework/dut.py b/framework/dut.py
index b5a21ce..cd899c8 100644
--- a/framework/dut.py
+++ b/framework/dut.py
@@ -382,7 +382,7 @@ class Dut(Crb):
             return
         op = self.send_command("ls")
         if "usertools" in op:
-            self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ')
+            self.send_expect('usertools/dpdk-devbind.py --force %s' % binding_list, '# ')
         else:
             op = self.send_command("ls tools")
             if "dpdk_nic_bind.py" in op:
@@ -602,7 +602,12 @@ class Dut(Crb):
             if ":" not in ipv6:
                 ipv6 = "Not connected"
 
+            out = self.send_expect("ip -family inet address show dev %s | awk '/inet/ { print $2 }'"
+                    % intf, "# ")
+            ipv4 = out.split('/')[0]
+
             port_info['ipv6'] = ipv6
+            port_info['ipv4'] = ipv4
 
     def rescan_ports_uncached_freebsd(self):
         unknow_interface = RED('Skipped: unknow_interface')
@@ -922,15 +927,20 @@ class Dut(Crb):
                 # skip ping those not connected port
                 ipv6 = self.get_ipv6_address(dutPort)
                 if ipv6 == "Not connected":
-                    continue
-
-                if getattr(self, 'send_ping6', None):
-                    out = self.send_ping6(
-                        dutPort, self.tester.ports_info[remotePort]['ipv6'],
-                        self.get_mac_address(dutPort))
-                else:
-                    out = self.tester.send_ping6(
-                        remotePort, ipv6, self.get_mac_address(dutPort))
+                    if self.tester.ports_info[remotePort].has_key('ipv4'):
+			out = self.tester.send_ping(
+				dutPort, self.tester.ports_info[remotePort]['ipv4'],
+				self.get_mac_address(dutPort))
+		    else:
+                    	continue
+		else:
+                    if getattr(self, 'send_ping6', None):
+                    	out = self.send_ping6(
+                        	dutPort, self.tester.ports_info[remotePort]['ipv6'],
+                        	self.get_mac_address(dutPort))
+                    else:
+                    	out = self.tester.send_ping6(
+				remotePort, ipv6, self.get_mac_address(dutPort))
 
                 if ('64 bytes from' in out):
                     self.logger.info("PORT MAP: [dut %d: tester %d]" % (dutPort, remotePort))
diff --git a/framework/project_dpdk.py b/framework/project_dpdk.py
index f3d3701..2a50e87 100644
--- a/framework/project_dpdk.py
+++ b/framework/project_dpdk.py
@@ -325,7 +325,7 @@ class DPDKdut(Dut):
 
         op = self.send_command("ls")
         if "usertools" in op:
-            self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ')
+            self.send_expect('usertools/dpdk-devbind.py --force %s' % binding_list, '# ')
         else:
             op = self.send_command("ls tools")
             if "dpdk_nic_bind.py" in op:
diff --git a/framework/tester.py b/framework/tester.py
index d793e91..5cf5e00 100644
--- a/framework/tester.py
+++ b/framework/tester.py
@@ -336,6 +336,7 @@ class Tester(Crb):
             macaddr = port.get_mac_addr()
 
             ipv6 = port.get_ipv6_addr()
+            ipv4 = port.get_ipv4_addr()
 
             # store the port info to port mapping
             self.ports_info.append({'port': port,
@@ -343,6 +344,7 @@ class Tester(Crb):
                                     'type': pci_id,
                                     'intf': intf,
                                     'mac': macaddr,
+				    'ipv4': ipv4,
                                     'ipv6': ipv6})
 
             # return if port is not connect x3
@@ -364,6 +366,15 @@ class Tester(Crb):
                                     'mac': macaddr,
                                     'ipv6': ipv6})
 
+    def send_ping(self, localPort, ipv4, mac):
+        """
+        Send ping6 packet from local port with destination ipv4 address.
+        """
+        if self.ports_info[localPort]['type'] == 'ixia':
+            return "Not implemented yet"
+        else:
+            return self.send_expect("ping -w 5 -c 5 -A -I %s %s" % (self.ports_info[localPort]['intf'], ipv4), "# ", 10)
+
     def send_ping6(self, localPort, ipv6, mac):
         """
         Send ping6 packet from local port with destination ipv6 address.
diff --git a/nics/net_device.py b/nics/net_device.py
index 0af4ad5..4861145 100644
--- a/nics/net_device.py
+++ b/nics/net_device.py
@@ -343,21 +343,21 @@ class NetDevice(object):
         """
         get_ipv4_addr = getattr(
             self, 'get_ipv4_addr_%s' % self.__get_os_type())
-        return get_ipv4_addr(self.intf_name, self.currenct_driver)
+        return get_ipv4_addr(self.intf_name, self.current_driver)
 
     def get_ipv4_addr_linux(self, intf, driver):
         """
         Get ipv4 address of specified pci device on linux.
         """
         try:
-            get_ipv4_addr_linux = getattr(self, 'get_ipv4_linux_%s' % driver)
+            get_ipv4_addr_linux = getattr(self, 'get_ipv4_addr_linux_%s' % driver)
         except Exception as e:
             generic_driver = 'generic'
             get_ipv4_addr_linux = getattr(
-                self, 'get_ipv4_linux_%s' %
+                self, 'get_ipv4_addr_linux_%s' %
                 generic_driver)
 
-        return get_ipv4_addr_linux(intf, domain_id, bus_id, devfun_id, driver)
+        return get_ipv4_addr_linux(intf)
 
     def get_ipv4_addr_linux_generic(self, intf):
         """
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 07/28] tests: ipv4_reassembly - added splitting result in tcpdump_command
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (5 preceding siblings ...)
  2017-04-10 17:09   ` [dts] [PATCH v2 06/28] framework: checking link with IPv4 ping Angela Czubak
@ 2017-04-10 17:09   ` Angela Czubak
  2017-04-10 17:09   ` [dts] [PATCH v2 08/28] framework: getting DPDK binding script moved to a method in dut Angela Czubak
                     ` (21 subsequent siblings)
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:09 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Result from tcpdump_command may contain something more than only number,
added splitting and taking first element of this operation so that
casting to int proceeds

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_ipv4_reassembly.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/TestSuite_ipv4_reassembly.py b/tests/TestSuite_ipv4_reassembly.py
index 3f0e725..8f28823 100644
--- a/tests/TestSuite_ipv4_reassembly.py
+++ b/tests/TestSuite_ipv4_reassembly.py
@@ -257,7 +257,7 @@ class TestIpReassembly(TestCase):
         """
 
         result = self.tester.send_expect(command, '#')
-        return int(result.strip())
+        return int(result.strip().split()[0])
 
     def number_of_received_packets(self, tcp_port):
         """
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 08/28] framework: getting DPDK binding script moved to a method in dut
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (6 preceding siblings ...)
  2017-04-10 17:09   ` [dts] [PATCH v2 07/28] tests: ipv4_reassembly - added splitting result in tcpdump_command Angela Czubak
@ 2017-04-10 17:09   ` Angela Czubak
  2017-04-10 17:09   ` [dts] [PATCH v2 09/28] tests: Modified tests to take cavium nics into account Angela Czubak
                     ` (20 subsequent siblings)
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:09 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Since DPDK binding script is used in a few places and the right one
should be chosen the code doing it has been moved to
get_dpdk_bind_script method

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 framework/dut.py          | 34 ++++++++++++++++------------------
 framework/project_dpdk.py | 33 ++++++---------------------------
 2 files changed, 22 insertions(+), 45 deletions(-)

diff --git a/framework/dut.py b/framework/dut.py
index cd899c8..3e90670 100644
--- a/framework/dut.py
+++ b/framework/dut.py
@@ -359,6 +359,18 @@ class Dut(Crb):
         else:
             return False
 
+    def get_dpdk_bind_script(self):
+        op = self.send_command("ls")
+        if "usertools" in op:
+            res = 'usertools/dpdk-devbind.py'
+        else:
+            op = self.send_command("ls tools")
+            if "dpdk_nic_bind.py" in op:
+                res = 'tools/dpdk_nic_bind.py'
+            else:
+                res = 'tools/dpdk-devbind.py'
+        return res
+
     def bind_interfaces_linux(self, driver='igb_uio', nics_to_bind=None):
         """
         Bind the interfaces to the selected driver. nics_to_bind can be None
@@ -380,15 +392,8 @@ class Dut(Crb):
         if current_nic == 0:
             self.logger.info("Not nic need bind driver: %s" % driver)
             return
-        op = self.send_command("ls")
-        if "usertools" in op:
-            self.send_expect('usertools/dpdk-devbind.py --force %s' % binding_list, '# ')
-        else:
-            op = self.send_command("ls tools")
-            if "dpdk_nic_bind.py" in op:
-                self.send_expect('tools/dpdk_nic_bind.py %s' % binding_list, '# ')
-            else:
-                self.send_expect('tools/dpdk-devbind.py %s' % binding_list, '# ')
+        bind_script_path = self.get_dpdk_bind_script()
+        self.send_expect('%s --force %s' % (bind_script_path, binding_list), '# ')
 
     def unbind_interfaces_linux(self, nics_to_bind=None):
         """
@@ -412,15 +417,8 @@ class Dut(Crb):
             self.logger.info("Not nic need unbind driver")
             return
 
-        op = self.send_command("ls")
-        if "usertools" in op:
-            self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ')
-        else:
-            op = self.send_command("ls tools")
-            if "dpdk_nic_bind.py" in op:
-                self.send_expect('tools/dpdk_nic_bind.py %s' % binding_list, '# ')
-            else:
-                self.send_expect('tools/dpdk-devbind.py %s' % binding_list, '# ')
+        bind_script_path = self.get_dpdk_bind_script()
+        self.send_expect('%s --force %s' % (bind_script_path, binding_list), '# ')
 
     def get_ports(self, nic_type='any', perf=None, socket=None):
         """
diff --git a/framework/project_dpdk.py b/framework/project_dpdk.py
index 2a50e87..c4a00bc 100644
--- a/framework/project_dpdk.py
+++ b/framework/project_dpdk.py
@@ -103,15 +103,8 @@ class DPDKdut(Dut):
             self.send_expect("modprobe vfio", "#", 70)
             self.send_expect("modprobe vfio-pci", "#", 70)
             # check with dpdk binding script instead of lsmod - kernel may have builtin modules
-            op = self.send_command("ls")
-            if "usertools" in op:
-                out = self.send_expect('usertools/dpdk-devbind.py --status', '# ')
-            else:
-                op = self.send_command("ls tools")
-                if "dpdk_nic_bind.py" in op:
-                    out = self.send_expect('tools/dpdk_nic_bind.py --status', '# ')
-                else:
-                    out = self.send_expect('tools/dpdk-devbind.py --status', '# ')
+            bind_script_path = self.get_dpdk_bind_script()
+            out = self.send_expect('%s --status' % bind_script_path, '# ')
             assert ("vfio-pci" in out), "Failed to setup vfio-pci"
         else:
             self.send_expect("modprobe uio", "#", 70)
@@ -323,15 +316,8 @@ class DPDKdut(Dut):
                 binding_list += '%s ' % (port_info['pci'])
             current_nic += 1
 
-        op = self.send_command("ls")
-        if "usertools" in op:
-            self.send_expect('usertools/dpdk-devbind.py --force %s' % binding_list, '# ')
-        else:
-            op = self.send_command("ls tools")
-            if "dpdk_nic_bind.py" in op:
-                self.send_expect('tools/dpdk_nic_bind.py %s' % binding_list, '# ')
-            else:
-                self.send_expect('tools/dpdk-devbind.py %s' % binding_list, '# ')
+        bind_script_path = self.get_dpdk_bind_script()
+        self.send_expect('%s --force %s' % (bind_script_path, binding_list), '# ')
 
     def unbind_interfaces_linux(self, nics_to_bind=None):
         """
@@ -346,15 +332,8 @@ class DPDKdut(Dut):
                 binding_list += '%s ' % (port_info['pci'])
             current_nic += 1
 
-        op = self.send_command("ls")
-        if "usertools" in op:
-            self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ')
-        else:
-            op = self.send_command("ls tools")
-            if "dpdk_nic_bind.py" in op:
-                self.send_expect('tools/dpdk_nic_bind.py %s' % binding_list, '# ')
-            else:
-                self.send_expect('tools/dpdk-devbind.py %s' % binding_list, '# ')
+        bind_script_path = self.get_dpdk_bind_script()
+        self.send_expect('%s --force %s' % (bind_script_path, binding_list), '# ')
 
     def build_dpdk_apps(self, folder, extra_options=''):
         """
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 09/28] tests: Modified tests to take cavium nics into account
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (7 preceding siblings ...)
  2017-04-10 17:09   ` [dts] [PATCH v2 08/28] framework: getting DPDK binding script moved to a method in dut Angela Czubak
@ 2017-04-10 17:09   ` Angela Czubak
  2017-04-10 17:09   ` [dts] [PATCH v2 10/28] tests: checksum_offload - fixes Angela Czubak
                     ` (19 subsequent siblings)
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:09 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Testpmd should be run with hardware vlan filter disabled for cavium
nics as the driver does not offer this kind of capability and the
application stops at the beginning, so if cavium nic is used the
--disable-hw-vlan-filter flag is added.
Shutdown api test is also modified so as to skip disabling jumbo frames
mixed with vlan if hardware-assisted VLAN filtering not
configured (rte_eth_dev_set_vlan_offload return -ENOTSUP + there is
"failed diag" in the tespmd output).
Tests to be skipped for cavium nics are added to
conf/dpdk_test_case_checklist.xls

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 31232 -> 19968 bytes
 framework/pmd_output.py           |   4 ++++
 tests/TestSuite_pmdpcap.py        |   4 ++++
 tests/TestSuite_short_live.py     |   6 +++---
 tests/TestSuite_shutdown_api.py   |  31 ++++++++++++++++---------------
 5 files changed, 27 insertions(+), 18 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index 67970e9e42cbec51c8bde0c2d7121844cb0cf2f8..0345762f0c894145ac84f35bb41467462f443c6c 100644
GIT binary patch
literal 19968
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
J<@r42{|~TFqW1s*

literal 31232
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

diff --git a/framework/pmd_output.py b/framework/pmd_output.py
index e8e2a2c..f52332b 100644
--- a/framework/pmd_output.py
+++ b/framework/pmd_output.py
@@ -119,6 +119,10 @@ class PmdOutput():
         self.coremask = create_mask(core_list)
         command = "./%s/app/testpmd -c %s -n %d %s -- -i %s" \
             % (self.dut.target, self.coremask, self.dut.get_memory_channels(), eal_param, param)
+        if "cavium" in self.dut.nic_type:
+            # thunder nicvf does not support hw vlan filter, the application crashes
+            # without this option added
+            command += " --disable-hw-vlan-filter"
         out = self.dut.send_expect(command, "testpmd> ", 120)
         self.command = command
         return out
diff --git a/tests/TestSuite_pmdpcap.py b/tests/TestSuite_pmdpcap.py
index a080dd0..0a79e96 100644
--- a/tests/TestSuite_pmdpcap.py
+++ b/tests/TestSuite_pmdpcap.py
@@ -124,6 +124,8 @@ class TestPmdPcap(TestCase):
         command = ("./{}/app/testpmd -c {} -n {} " +
                    "--vdev=eth_pcap0,rx_pcap={},tx_pcap={} " +
                    "-- -i --port-topology=chained")
+        if "cavium" in self.dut.nic_type:
+            command += " --disable-hw-vlan-filter"
 
         self.dut.send_expect(command.format(self.target, core_mask,
                              self.memory_channel,
@@ -158,6 +160,8 @@ class TestPmdPcap(TestCase):
                    "--vdev=eth_pcap0,rx_pcap={},tx_pcap={} " +
                    "--vdev=eth_pcap1,rx_pcap={},tx_pcap={} " +
                    "-- -i")
+        if "cavium" in self.dut.nic_type:
+            command += " --disable-hw-vlan-filter"
 
         self.dut.send_expect(command.format(self.target, core_mask,
                                             self.memory_channel,
diff --git a/tests/TestSuite_short_live.py b/tests/TestSuite_short_live.py
index 320951f..72745a9 100644
--- a/tests/TestSuite_short_live.py
+++ b/tests/TestSuite_short_live.py
@@ -125,7 +125,7 @@ class TestShortLiveApp(TestCase):
         Basic rx/tx forwarding test
         """
         #dpdk start
-        self.dut.send_expect("./x86_64-native-linuxapp-gcc/app/testpmd -c 0xf -n 4 -- -i --portmask=0x3", "testpmd>", 120)
+        self.dut.send_expect("./%s/app/testpmd -c 0xf -n 4 -- -i --portmask=0x3" % self.target, "testpmd>", 120)
         self.dut.send_expect("set fwd mac", "testpmd>")
         self.dut.send_expect("set promisc all off", "testpmd>")
         self.dut.send_expect("start", "testpmd>")
@@ -137,7 +137,7 @@ class TestShortLiveApp(TestCase):
         """
         time = []
         regex = re.compile(".* (\d+:\d{2}\.\d{2}).*")
-        out = self.dut.send_expect("echo quit | time ./x86_64-native-linuxapp-gcc/app/testpmd -c 0x3 -n 4 --no-pci -- -i", "#", 120)
+        out = self.dut.send_expect("echo quit | time ./%s/app/testpmd -c 0x3 -n 4 --no-pci -- -i" % self.target, "#", 120)
         time = regex.findall(out)
 
         if time != []:
@@ -150,7 +150,7 @@ class TestShortLiveApp(TestCase):
         for i in range(repeat_time):
             #dpdk start
             print "clean_up_with_signal_testpmd round %d" % (i + 1)
-            self.dut.send_expect("./x86_64-native-linuxapp-gcc/app/testpmd -c 0xf -n 4 -- -i --portmask=0x3", "testpmd>", 120)
+            self.dut.send_expect("./%s/app/testpmd -c 0xf -n 4 -- -i --portmask=0x3" % self.target, "testpmd>", 120)
             self.dut.send_expect("set fwd mac", "testpmd>")
             self.dut.send_expect("set promisc all off", "testpmd>")
             self.dut.send_expect("start", "testpmd>")
diff --git a/tests/TestSuite_shutdown_api.py b/tests/TestSuite_shutdown_api.py
index 66219f5..c497652 100644
--- a/tests/TestSuite_shutdown_api.py
+++ b/tests/TestSuite_shutdown_api.py
@@ -332,25 +332,26 @@ class TestShutdownApi(TestCase):
         jumbo_size = 2048
         self.pmdout.start_testpmd("Default", "--portmask=%s --port-topology=loop" % utils.create_mask(self.ports), socket=self.ports_socket)
         self.dut.send_expect("port stop all", "testpmd> ", 100)
-        self.dut.send_expect("vlan set strip off all", "testpmd> ")
         self.dut.send_expect("port config all max-pkt-len %d" % jumbo_size, "testpmd> ")
-        for port in self.ports:
-            self.dut.send_expect("rx_vlan add 1 %d" % port, "testpmd> ")
-        self.dut.send_expect("set fwd mac", "testpmd>")
-        self.dut.send_expect("port start all", "testpmd> ", 100)
-        self.dut.send_expect("start", "testpmd> ")
+        out = self.dut.send_expect("vlan set strip off all", "testpmd> ")
+        if "fail" not in out:
+            for port in self.ports:
+                self.dut.send_expect("rx_vlan add 1 %d" % port, "testpmd> ")
+            self.dut.send_expect("set fwd mac", "testpmd>")
+            self.dut.send_expect("port start all", "testpmd> ", 100)
+            self.dut.send_expect("start", "testpmd> ")
 
-        if self.nic in ['magnolia_park', 'niantic', 'twinpond', 'kawela_4', 'ironpond', 'springfountain', 'springville', 'powerville']:
-            # nantic vlan length will not be calculated
-            vlan_jumbo_size = jumbo_size + 4
-        else:
-            vlan_jumbo_size = jumbo_size
+            if self.nic in ['magnolia_park', 'niantic', 'twinpond', 'kawela_4', 'ironpond', 'springfountain', 'springville', 'powerville']:
+                # nantic vlan length will not be calculated
+                vlan_jumbo_size = jumbo_size + 4
+            else:
+                vlan_jumbo_size = jumbo_size
 
-        self.check_forwarding(pktSize=vlan_jumbo_size - 1, vlan=True)
-        self.check_forwarding(pktSize=vlan_jumbo_size, vlan=True)
-        self.check_forwarding(pktSize=vlan_jumbo_size + 1, received=False, vlan=True)
+            self.check_forwarding(pktSize=vlan_jumbo_size - 1, vlan=True)
+            self.check_forwarding(pktSize=vlan_jumbo_size, vlan=True)
+            self.check_forwarding(pktSize=vlan_jumbo_size + 1, received=False, vlan=True)
 
-        self.dut.send_expect("stop", "testpmd> ")
+            self.dut.send_expect("stop", "testpmd> ")
 
         self.dut.send_expect("port stop all", "testpmd> ", 100)
         self.dut.send_expect("port config all hw-vlan off", "testpmd> ")
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 10/28]  tests: checksum_offload - fixes
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (8 preceding siblings ...)
  2017-04-10 17:09   ` [dts] [PATCH v2 09/28] tests: Modified tests to take cavium nics into account Angela Czubak
@ 2017-04-10 17:09   ` Angela Czubak
  2017-04-10 17:09   ` [dts] [PATCH v2 11/28] tests: dynamic_config - taking into account cavium NICs Angela Czubak
                     ` (18 subsequent siblings)
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:09 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Sniffing packets with scapy seems to fail, switched to tcpdump.
Taken into account capabilities of Cavium nics, created
framework/test_capabilities.py to contain information useful when
skipping not applicable parts of tests.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls   | Bin 19968 -> 19968 bytes
 framework/test_capabilities.py      |   9 +++++++++
 tests/TestSuite_checksum_offload.py |  38 +++++++++++++++++-------------------
 3 files changed, 27 insertions(+), 20 deletions(-)
 create mode 100644 framework/test_capabilities.py

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index 0345762f0c894145ac84f35bb41467462f443c6c..5811198e687c2a63cf326b7ca378849b0a3e2038 100644
GIT binary patch
delta 429
zcmZpe!`Lu~aYH+onyD}Y5U?=>XQZZ<7`8I-F;rV1i5P)IByA?I<(j~LnU{}=fuUft
z3pY0_W94K=UhB!-0{X1+i3Y|dlXnS7Ge&~ML^6x=^9u6wQgo6N%Q8!IA<_zh3XB1h
z9R(es%9{i=7|kcI7Sw?7H(wU~#A+_iz)(~XpPZ4JoLvmmSeBTRnG&CtlbBu%ltD5L
zX0m~Sp`ii;!{h`Bg~>0(pD`9}J};5Q$e6s@N~&Cmm4iuuA!+g=o7uL18MqjdfS%%K
z$O4iO9wU&)4(BledD(CtGqT)d6We5ESD>5&5W|2hPz7@`n8(PF41^2}n|ImnXJpKo
zTxIVHBoEkYGUiTxWiQQ`H<`@=B;o@mCjrU)%{Ls{m^Qf_VdgajYIFeNhHNE$iOCn;
b<=Hk{&HkyfYV$XDCT6DDwwr%>u`vSxrIT*u

delta 303
zcmZpe!`Lu~aYH+o+FKz8AYfw%&PYuyF>GbvW4LLKBw_>-DYu@ymTLlgH!mj>14G_s
z7jAA=#*)d7yw;Pu1@tHH7m#KQ0rSKJ`6p`$DlmG3cx=guWtpY9lP3ylFd9wH6IOx>
zY<@2IiFGrt1Scb7-ez&hEJntp$r1LAo0+A*DNg3K?U{VvHcA=f0tXNQ1+onM49o%y
zK<gP883cfkiD`3;-F`;KtjRJCuKZa*@xKgQV0m!{o5>qwr5Up)p8=9NlUF#n0#&^O
zlO~R?jJcbu9NU;CPw-f@$>j($uQ5=o0}wOZVmrh>`J%f#Tg9}vS&Noz{^ria%=FV{
J^Di$pW&p}<P%8ic

diff --git a/framework/test_capabilities.py b/framework/test_capabilities.py
new file mode 100644
index 0000000..2ad3fae
--- /dev/null
+++ b/framework/test_capabilities.py
@@ -0,0 +1,9 @@
+#this structure will be used to determine which parts of tests should be skipped
+"""
+Dict used to skip parts of tests if NIC is known not to support them
+"""
+DRIVER_TEST_LACK_CAPA = {
+	'sctp_tx_offload' : ['thunder-nicvf', 'fm10k']
+}
+
+
diff --git a/tests/TestSuite_checksum_offload.py b/tests/TestSuite_checksum_offload.py
index 9b9015d..54e5001 100644
--- a/tests/TestSuite_checksum_offload.py
+++ b/tests/TestSuite_checksum_offload.py
@@ -43,7 +43,8 @@ import utils
 
 from test_case import TestCase
 from pmd_output import PmdOutput
-
+from packet import Packet, sniff_packets, load_sniff_packets, strip_pktload
+from test_capabilities import DRIVER_TEST_LACK_CAPA
 
 class TestChecksumOffload(TestCase):
 
@@ -169,21 +170,16 @@ class TestChecksumOffload(TestCase):
 
         self.tester.send_expect("exit()", "#")
 
-        self.tester.scapy_background()
-        self.tester.scapy_append('p = sniff(filter="ether src %s", iface="%s", count=%d)' % (sniff_src, rx_interface, len(packets_sent)))
-        self.tester.scapy_append('nr_packets=len(p)')
-        self.tester.scapy_append('reslist = [p[i].sprintf("%IP.chksum%;%TCP.chksum%;%UDP.chksum%;%SCTP.chksum%") for i in range(nr_packets)]')
-        self.tester.scapy_append('import string')
-        self.tester.scapy_append('RESULT = string.join(reslist, ",")')
-
-        # Send packet.
-        self.tester.scapy_foreground()
+        inst = sniff_packets(intf=rx_interface, count=len(packets_sent), filters=[{'layer':'ether', 'config':{'src': sniff_src}}])
 
         for packet_type in packets_sent.keys():
             self.tester.scapy_append('sendp([%s], iface="%s")' % (packets_sent[packet_type], tx_interface))
 
         self.tester.scapy_execute()
-        out = self.tester.scapy_get_result()
+	p = load_sniff_packets(inst)
+	nr_packets=len(p)
+	reslist = [p[i].pktgen.pkt.sprintf("%IP.chksum%;%TCP.chksum%;%UDP.chksum%;%SCTP.chksum%") for i in range(nr_packets)]
+	out = string.join(reslist, ",")
         packets_received = out.split(',')
         self.verify(len(packets_sent) == len(packets_received), "Unexpected Packets Drop")
 
@@ -223,7 +219,7 @@ class TestChecksumOffload(TestCase):
 
         pktsChkErr = {'IP/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IP(chksum=0x0)/UDP(chksum=0xf)/("X"*46)' % mac,
                       'IP/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IP(chksum=0x0)/TCP(chksum=0xf)/("X"*46)' % mac,
-                      'IP/SCTP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IP(chksum=0x0)/SCTP(chksum=0xf)/("X"*48)' % mac,
+		      'IP/SCTP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IP(chksum=0x0)/SCTP(chksum=0xf)/("X"*48)' % mac,
                       'IPv6/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IPv6(src="::1")/UDP(chksum=0xf)/("X"*46)' % mac,
                       'IPv6/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IPv6(src="::1")/TCP(chksum=0xf)/("X"*46)' % mac}
 
@@ -233,7 +229,7 @@ class TestChecksumOffload(TestCase):
                 'IPv6/UDP': 'Ether(dst="02:00:00:00:00:00", src="%s")/Dot1Q(vlan=1)/IPv6(src="::1")/UDP()/("X"*46)' % mac,
                 'IPv6/TCP': 'Ether(dst="02:00:00:00:00:00", src="%s")/Dot1Q(vlan=1)/IPv6(src="::1")/TCP()/("X"*46)' % mac}
 
-        if self.kdriver == "fm10k":
+        if self.kdriver in DRIVER_TEST_LACK_CAPA['sctp_tx_offload']:
             del pktsChkErr['IP/SCTP']
             del pkts['IP/SCTP']
 
@@ -258,11 +254,8 @@ class TestChecksumOffload(TestCase):
                     'IPv6/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6(src="::1")/TCP()/("X"*46)' % mac}
 
         result = dict()
-        if self.kdriver == "fm10k":
-            del pkts['IP/SCTP']
-            del pkts_ref['IP/SCTP']
-
-        self.checksum_enablehw(self.dut_ports[0])
+        
+	self.checksum_enablehw(self.dut_ports[0])
 
         # get the packet checksum value
         result = self.get_chksum_values(pkts_ref)
@@ -281,6 +274,11 @@ class TestChecksumOffload(TestCase):
                     'IPv6/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6(src="::1")/UDP(chksum=0xf)/("X"*46)' % mac,
                     'IPv6/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6(src="::1")/TCP(chksum=0xf)/("X"*46)' % mac}
 
+	if self.kdriver in DRIVER_TEST_LACK_CAPA['sctp_tx_offload']:
+            del pkts_good['IP/SCTP']
+            del pkts_bad['IP/SCTP']
+            del pkts_ref['IP/SCTP']
+
         # send the packet checksum value same with the expected value
         self.checksum_valid_flags(pkts_good, 1)
         # send the packet checksum value different from the expected value
@@ -307,7 +305,7 @@ class TestChecksumOffload(TestCase):
                     'IPv6/UDP': 'Ether(dst="02:00:00:00:00:00", src="%s")/IPv6(src="::1")/UDP()/("X"*46)' % mac,
                     'IPv6/TCP': 'Ether(dst="02:00:00:00:00:00", src="%s")/IPv6(src="::1")/TCP()/("X"*46)' % mac}
 
-        if self.kdriver == "fm10k":
+        if self.kdriver in DRIVER_TEST_LACK_CAPA['sctp_tx_offload']:
             del pkts['IP/SCTP']
             del pkts_ref['IP/SCTP']
 
@@ -396,7 +394,7 @@ class TestChecksumOffload(TestCase):
                 'IPv6/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6()/UDP()/("X"* (lambda x: x - 66 if x > 66 else 0)(%d))',
                 'IPv6/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6()/TCP()/("X"* (lambda x: x - 78 if x > 78 else 0)(%d))'}
 
-        if self.kdriver == "fm10k":
+        if self.kdriver in DRIVER_TEST_LACK_CAPA['sctp_tx_offload']:
             del pkts['IP/SCTP']
 
         lcore = "1S/2C/1T"
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 11/28] tests: dynamic_config - taking into account cavium NICs
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (9 preceding siblings ...)
  2017-04-10 17:09   ` [dts] [PATCH v2 10/28] tests: checksum_offload - fixes Angela Czubak
@ 2017-04-10 17:09   ` Angela Czubak
  2017-04-10 17:09   ` [dts] [PATCH v2 12/28] tests: fdir - skipping fdir tests for Cavium NICs Angela Czubak
                     ` (17 subsequent siblings)
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:09 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Testpmd must be run with hardware VLAN filter disabled as thunder
driver does not support this feature.
Since disabling promiscuous and allmulticast is not supported for
thunder driver following test cases are set to be skipped:
dynamic_config_broadcast, dynamic_config_disable_promiscuous,
dynamic_config_allmulticast

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 19968 -> 20480 bytes
 tests/TestSuite_dynamic_config.py |  10 ++++++++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index 5811198e687c2a63cf326b7ca378849b0a3e2038..7e42bbeba1c9414cf3cde5f0220c9b3e049c57cc 100644
GIT binary patch
delta 634
zcmZvZF)Ra77{|YNM@y-bh^SP9q7w-sq)DqMG^DGAMRV@naeD31YX_EAq^y-^V=!7I
zc#Byq#A30VY&MI8dUvX>;U(Y8`~Sc1`@Qew6;Dv{6qQH4Lr`7q0Kv=XEZ5o3jL%A?
zV#Q$f9HNI@3SBiExI(1EYH-2gI>x!N612ff*x`&@PAN*xJ!SV;TYv*F>0HZQ>xvIR
z+0IC5O-{;2M%C7mt64)*WXa40|D+VnlvZ_|+{_wj&6M*--t_+|l5{<t*K?YMpk7}y
zLMH9%-atqtOR-(b`#r&tCaxW1d){GWO$kT<%TxaGF!_u;7e2sacL<=fns0?b0C!Ds
zOr>gyugf(u)l$t_cL<QKDJMk%Cq;o8CBd#&z=^>&CR4>=aAI&B2LECh1(T<!+?QZ|
zB8#6DU?cIWtq`c7(&gzJgbdOn#s!1f)`QunK^H{GMZk|X$phQB$e9>tRj>9wF%w5w
zx-+xSk@CXP)!Z%bonkE_i{gD)8YGYNy^Y7u*Wx67n=f!^faDW<oI6I}6E6M>dj^mz

delta 264
zcmZozz}PT{ae@J_3Ih}fFfb@?v~^|@{P+L=e-Ks%N`Pq9&5CaMjGI{6+0;yhL5kTJ
zf-_Q6OAK2X_!z1!kVK3?B9b<f*K$o@zs$?W#K2In*@gQg&*p3iPDaLp&83oAjEu>f
zA4qj8O<rz$X|lI{l!7ZzzXQk&D3E2~XJAeSa~K(t8Im_2wLiqjm@~P<(G^IZbJS$a
zovbA%&6qb?#0ex41tu2&$^6aFoZ6T+xgBBVH3jN-0OE#hC4Gs>7d_=!H(SmAsj~U2
WXFU_6(&SQ~W~SM;n}7MRF#`ax(o2W{

diff --git a/tests/TestSuite_dynamic_config.py b/tests/TestSuite_dynamic_config.py
index 1ba6dd4..b4ddede 100644
--- a/tests/TestSuite_dynamic_config.py
+++ b/tests/TestSuite_dynamic_config.py
@@ -74,9 +74,12 @@ class TestDynamicConfig(TestCase):
         self.portMask = utils.create_mask(self.dut_ports[:2])
 
         # launch app
-        cmd = "./%s/build/app/test-pmd/testpmd -c %s -n 3 -- -i --rxpt=0 \
+        cmd = "./%s/app/testpmd -c %s -n 3 -- -i --rxpt=0 \
         --rxht=0 --rxwt=0 --txpt=39 --txht=0 --txwt=0 --portmask=%s" % (self.target, self.coreMask, self.portMask)
 
+	if "cavium" in self.dut.nic_type:
+            cmd += " --disable-hw-vlan-filter"
+
         self.dut.send_expect("%s" % cmd, "testpmd> ", 120)
 
         # get dest address from self.target port
@@ -112,9 +115,12 @@ class TestDynamicConfig(TestCase):
         """
         Run before each test case.
         """
-        cmd = "./%s/build/app/test-pmd/testpmd -c %s -n 3 -- -i --rxpt=0 \
+        cmd = "./%s/app/testpmd -c %s -n 3 -- -i --rxpt=0 \
         --rxht=0 --rxwt=0 --txpt=39 --txht=0 --txwt=0 --portmask=%s" % (self.target, self.coreMask, self.portMask)
 
+	if "cavium" in self.dut.nic_type:
+            cmd += " --disable-hw-vlan-filter"
+
         self.dut.send_expect("%s" % cmd, "testpmd> ", 120)
         self.dut.send_expect("start", "testpmd> ", 120)
 
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 12/28] tests: fdir - skipping fdir tests for Cavium NICs
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (10 preceding siblings ...)
  2017-04-10 17:09   ` [dts] [PATCH v2 11/28] tests: dynamic_config - taking into account cavium NICs Angela Czubak
@ 2017-04-10 17:09   ` Angela Czubak
  2017-04-10 17:09   ` [dts] [PATCH v2 13/28] tests: ieee1588 - skipping ieee1588_enable test " Angela Czubak
                     ` (16 subsequent siblings)
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:09 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Cavium NICs do not support dlow director, therefore they are added to
following tests in conf/dpdk_test_case_checklist.xls:
-fdir_flexword_drop_ipv4
-fdir_flexword_drop_ipv6
-fdir_flexword_fwd_ipv4
-fdir_flexword_fwd_ipv6
-fdir_noflexword_drop_ipv4
-fdir_noflexword_drop_ipv6
-fdir_noflexword_fwd_ipv4
-fdir_noflexword_fwd_ipv6

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 20480 -> 20480 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index 7e42bbeba1c9414cf3cde5f0220c9b3e049c57cc..338d7c61a93ba64ee6dea91a6af126f5c2be851f 100644
GIT binary patch
delta 2029
zcmY+FOK%%h6oAjQn*`j-69}3lxQ=Kjg2}UKl8&AD{YdO!62}f9&7)14hKACVl9)v|
zRU}k(14#5pQN=1^#iFVrjJkvc5h?{Cen5q~s=7ifPz4Jl&OIH^+&k91zWbds_i<*t
zyDxV4#lfw>8-KO|ZOu^K+}NlM-Gm@y#uRc|lE-*A@MX(q!LSdYR?i)^UJwg-wJn47
z){fv&fNNV9w|92VZ*SDraH}m_|Gw>hlc?1{>8!jYqWGZ43d@xLK>*$Y0S2_VcRsp{
zVzAc|;~43+jhNHYLuUixctc^m%o2F0us&u<4D@-i{mfEWR@eZuH0~*EkXZ&FDeM%p
zEOz&M`G%O~a8qHYndR|bzunvD^Dr?JCg><fI;@R!801JNv30-_1sod)i6YL^^%U+7
z*v8vV%o#ejLkWK(_Kw4BI(NV{9vig6GcId_PAEHf5jJMAq8JfSjVK!xyfc^=Rs4gF
zb9nNUmv3CN<#-Ip;AO>#vGK0+#5fySJW!0dW+d3i;WNcZXhxEaJjRABqcN`JbE94x
z`rIex(Kq6CF~v=dA*U(WgaQ^u@*;&_j9BZ96dBFSlGgzhI?5%<YD<#kC3(+n^V6Uk
zS+ZJ|9A~NGtD~WC!_R^0=brmm8MWV(IfSnn@^FOuD4(0BRudMSC&>aaVGIvOE!UlJ
z-3iT|WcTdtGoCu>s*{>pV0978id%5qg60<4UBZ3EExK+|bEnu{#=jJI%5|qSSJtr!
zOPI1lVg;9NE4)lZPC-eV`Vvq53Vv-{ViA93`zc+Y!<Qr8l223aPB`ymkkcxcd?Dh^
z#f;mJ8Sclb<H|BIVI03v+_LMIHFuWXIR2x!v#vX<xw4Q<NMj-D^`YXr70s=(o5DMa
zTXo&4=FYL3#HWfo=el#6E8jsA)-W>WeWB)w8E^q_C`=Zr3F~;MFj;~oT*Sb*7kif3
z29_1J$n1UGQ`i!-X?&zGxw<A?!tR)tZ-tlvo4Bd4bL>^{p2Fn1noz~RW44H4U;JkH
z10u3kR<&AL<ywj2Z*ePp*)i5MW6d#MNm$}TOe8|$3N9wB@Rnn*YxX+ZS8$)~tN4)Z
zCv^Q0wkBm{U-J6vFH&TR_Qn>b5&2J0Aiddef_^?<{Xz1Upig-@Z5!8!%Z>{=w^P~e
zDNM$+(;r!|D<nR~p01Fw?bv>9Nn>}$%W#BQ62IyS;isA7ZssQDm+&$1pEJkBPW?&d
r2j907hyG*o>z|?>e!2Z4{$6~o`MZbLOO?CzXGNc1T&VwBYVrRM=}}n^

delta 1897
zcmY+FOKclO9LE1+H%Svi7L;n!$aTU~XmMl5CC%E7-|I)5)Jc<2XzPU5G<KVYv}w`{
zhlpINUf_Vf1E5|idLvXkEFL!wfeR9%*9s8ygg8c(kWf{Lndy3W){-@|-}jquJoBF&
z@7!iPx7n9B`(DNX@lQ7`UTQY4$8JzR{hd&hV?w!s&-*^?iS>tkL|g4*z&OZqxH3@a
z4-jpvuWW8@o!e|)Z?uOFecQ#h+V_SQo@FLp3>z$gS~$r2tGu5C!lpLK!yi*0y~<mS
zQn;^ZVX37ta@6IHN-cw?qK!%|i(N&FNG*qbMT<%;4|CMb8<ScA+lm&GnuR?@J0`Uv
zdL!=G*SMxr33HJkD`PEUgeqJSs~IQ8SJUG>`S{ZmzKR&Eir;v`wCzmrc93T9eALuV
z*qX`P!&Jk?s1cfVv@RN=Ir}LtiIcdi5OGooQL@7{kB89`TR>v0#1`@1n4350p;MgJ
zD36~MA|;8}?HSXOC?F7XGtwR+BMA%h3X$;;SxFS}QOwXf>&iYM+P}s=@Uc@^9(Ut&
z(&{WZ&j;&N!JY9E%i<q}D|k4Ib7JAq<G~AW@V+R9MSi}#&XksiFG_yFCX1f36-kt>
zlT!4g6rZHv?s4-Kk<5JERH6g?H;Nfc+|}t#JGIPPoe~I47!F%@*s_Ne2S}&Ws4Hy6
zVJjYXO0s9LtFTiJJLO@kl0Az@3R`v9s)rSaQ>Qv+O!xOrJM6TFow0LonL)OM?@WW$
z@j&(;n?~picg23xJo{Rc`?>@xZm?yn$K9IG^6Vjc%N`|aFKXWA+${cx4{GOZ=cII!
z@F#>bnsA+Y>7=kIoo&StHP$JIJJR_@aTcYM#Y5?Yl5Uzf{yJq~CB;1JigQXj=Ygbq
z9f*^nQ3LlCO`HLp-p0tJ%bk|m1vC{+?37L`*j2Q%Qfp#g(dtsG!A!Y%OHylLThW%e
zrqM<0DVo?<oxdBsX?LvHQJoermo|IFReaF*44ucd-~c{NUuKu^bVgj)M#c!Oa#z%{
z;i+Xq*3!h)jKMDB6Hc$;8{U5hf6D$NK62e2x#AhQB1f(vpEcMOtYyW>o7s2SG+6FX
zpvA}Vw~AWSLay`z{<40@aQ=N(!EWBvuG)!=w}X_#zM}E}B(9~fIvfmd*ql$kyPfOU
z$4{9?*KE%(`5e9&4&vj&5hweA)HB#Cxbt;Mt%b>vAYQVLu+4Vf`oV{dQvK`lkN&5`
j&7I@lou3m8+^as<ee1#Zxrxu(|5kl|*3<s)M34V}$<<l>

-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 13/28] tests: ieee1588 - skipping ieee1588_enable test for Cavium NICs
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (11 preceding siblings ...)
  2017-04-10 17:09   ` [dts] [PATCH v2 12/28] tests: fdir - skipping fdir tests for Cavium NICs Angela Czubak
@ 2017-04-10 17:09   ` Angela Czubak
  2017-04-10 17:09   ` [dts] [PATCH v2 14/28] tests: jumboframes - skipping jumboframes tests testing bigger than allowed frames " Angela Czubak
                     ` (15 subsequent siblings)
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:09 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Cavium NICs do not filter PTP packets, so ieee1588 enable test case is
not applicable, modified conf/dpdk_test_case_checklist.xls

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 20480 -> 20480 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index 338d7c61a93ba64ee6dea91a6af126f5c2be851f..ca5e3b0da53b00463d9e8ebf0121c4514ec1a2e7 100644
GIT binary patch
delta 134
zcmZozz}T>WaYH+oDw_xc5U?=>XQZZ<7`8I-F+^D*i5P)IeoS7&HIZ@2W;^azoXpA$
z43jSiDsMIuJ*CB{HJQ;tgxi#X38;mU!IZ&tvx373)=h3ln0YOMLJlC4^2E2BO}^+U
Y&${R{hiTg8ub#}zj8&U|`mi$t0J_d1#{d8T

delta 160
zcmZozz}T>WaYH+o>N{ZuAYfw%&PYuyF>GbvV{o!U5-|daJea(OYa(OMW;^azoP692
z48;XSnR)4DnK?PBoBc#jX(@05bvS@@L4hm-KLfKO0~3(T$e_rexY@$t1ncApEE1dC
pjxh6D0EHbuDo;;3tTOqcr#$PHQ<XkJo4<N8GczV_{^`Tc3;<UPC^P^7

-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 14/28] tests: jumboframes - skipping jumboframes tests testing bigger than allowed frames for Cavium NICs
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (12 preceding siblings ...)
  2017-04-10 17:09   ` [dts] [PATCH v2 13/28] tests: ieee1588 - skipping ieee1588_enable test " Angela Czubak
@ 2017-04-10 17:09   ` Angela Czubak
  2017-04-10 17:09   ` [dts] [PATCH v2 15/28] tests: l2fwd - fixes to run on two cards (same NIC) and expecting "L2FWD: entering main loop" instead of "memory mapped" Angela Czubak
                     ` (14 subsequent siblings)
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:09 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

When configuring a Cavium device the max_rx_pkt_len parameter is
ignored (and the device uses its maximum MTU). Therefore, test cases
which assume that bigger than allowed frames should be dropped fail.
Modified conf/dpdk_test_case_checklist.xls to skip
jumboframes_jumbo_nojumbo and jumboframes_bigger_jumbo tests.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 20480 -> 20992 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index ca5e3b0da53b00463d9e8ebf0121c4514ec1a2e7..46983d6f829fdbae8ac4df603ee6cc914d8a8be7 100644
GIT binary patch
delta 490
zcmZozz}T>aae@J_8UqvvFfb@@v~_0^RRRk9`~Uwx2&+Qb>YEka(iu0gw6m$%ihwk*
zF$8C%rj{7CGVn3DS|f=VfkYnLO<v12f&Dh0Iuip!*=85+S-j>F3=CPNxk>qHMTxno
z#qmj*>FKFO@n9iIR4K4nd|p17-h5AjlaaA(^9#u=M#hZE=8lb%3#3^#-;j1v0x=lV
zCMQY@Gp29mw%g2D|CfP_Ar0sleue@d3E?pUdF*f=6Ofk!=P{$mu>yJAP`Pv<&CgH>
z=OLSt&VX!6Is@Dk7NGU%legL@EBi4pGB^M=!+<Q%Fy;)PN(P`r1`skcZ?<;W&&XIb
z`M0AhkaTp?WGtRMS5BI-WOBO`NaQS-6n1uHEZrRGyqszC1TRs>O>PI61wp158Zdw@
oXsDd4;5_-Fr#$O-u5Oo>&0jt1nHW_jm-;j_r8;c><-^7d0J*AqlK=n!

delta 301
zcmZoz!q~8Yae@J_DgzV<Ffb@>v~_0^{P+L=e-KsyN`Pp!&59n`jGI{6+0@uXK#JKI
zf-_Q6OAK2X_!y$BkVK3?B0p>=ujQJ+zJyPfiGiVHvkUhuUS<UbhRGWw6((CqK4UD|
zEH9PC$e6adOZvFd=1RLIjFVS7L@8?l&2a#k1qHGU{0z*d3_vp&7#U1~kcnxtn&W;(
z#)8SuoLqsVj<cq0AyD=&0~b&gGf+7@oW}~}6-_R32C3TtCjSA+;>|8D%b7NL9AFj%
u8EXl|4nWM1C%)Zm@<nfX)<vH=Ow%@h^{!`PRGwVw*UVI9zxkIR8#4ew8%_%V

-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 15/28] tests: l2fwd - fixes to run on two cards (same NIC) and expecting "L2FWD: entering main loop" instead of "memory mapped"
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (13 preceding siblings ...)
  2017-04-10 17:09   ` [dts] [PATCH v2 14/28] tests: jumboframes - skipping jumboframes tests testing bigger than allowed frames " Angela Czubak
@ 2017-04-10 17:09   ` Angela Czubak
  2017-04-10 17:09   ` [dts] [PATCH v2 16/28] tests: link_status_interrupt - skipping test_link_status_interrupt_port_available for Cavium NICs Angela Czubak
                     ` (13 subsequent siblings)
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:09 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Previously integrity test assumed that there should be "memory mapped"
in the output of l2fwd after start up, even though it does not appear.
Test can also be run when 2 same NICs are used now.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_l2fwd.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/TestSuite_l2fwd.py b/tests/TestSuite_l2fwd.py
index 23815cd..659d5f7 100644
--- a/tests/TestSuite_l2fwd.py
+++ b/tests/TestSuite_l2fwd.py
@@ -60,7 +60,7 @@ class TestL2fwd(TestCase):
         self.headers_size = HEADER_SIZE['eth'] + HEADER_SIZE['ip'] + \
             HEADER_SIZE['udp']
 
-        self.dut_ports = self.dut.get_ports_performance()
+        self.dut_ports = self.dut.get_ports_performance(force_different_nic=False)
 
         self.verify(len(self.dut_ports) >= self.number_of_ports,
                     "Not enough ports for " + self.nic)
@@ -134,7 +134,7 @@ class TestL2fwd(TestCase):
                 (self.dut.get_memory_channels(), core_mask,
                  str(queues['queues']), port_mask)
 
-            self.dut.send_expect(command_line, "memory mapped", 60)
+            self.dut.send_expect(command_line, "L2FWD: entering main loop", 60)
 
             tgen_input = []
             tx_port = self.tester.get_local_port(self.dut_ports[0])
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 16/28] tests: link_status_interrupt - skipping test_link_status_interrupt_port_available for Cavium NICs
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (14 preceding siblings ...)
  2017-04-10 17:09   ` [dts] [PATCH v2 15/28] tests: l2fwd - fixes to run on two cards (same NIC) and expecting "L2FWD: entering main loop" instead of "memory mapped" Angela Czubak
@ 2017-04-10 17:09   ` Angela Czubak
  2017-04-10 17:09   ` [dts] [PATCH v2 17/28] tests: link_status_interrupt - skipping tests verifying adding MAC addresses " Angela Czubak
                     ` (12 subsequent siblings)
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:09 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

The test is skipped right now as link_status_interrupt assumes CPU
frequency which makes the test fail (for Cavium NICs and thunderx
platform)

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 20992 -> 20992 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index 46983d6f829fdbae8ac4df603ee6cc914d8a8be7..ef22942905f40d54c260d30eb2e99e7bee24ac2f 100644
GIT binary patch
delta 494
zcmZ{f&r1S96vyApl7?1x=wcEM6+xg-5m6-l(nt^@h>juCI_lKAZnLwdr#u)zr(kcL
zqgx>DrLIALK>vi-ZXJT6Su5+(gL&}ze&2gvrg@E;*Qk9Sn(B;zssQYk8I!YTFa+7u
zA7##0I;-w&=rY)fBrrh3%Y>f?PbUEkZXV@rNu^`wxha_tjwSO}RmeQ8QEt!!gT(--
zs4UDUW!W(cOw^NV%c)b#N|tn;{&R#V-{3lxylN6^+fIeqq-rvvGa)HANjkZ+M~Z?S
zJIvG@2_l&-Nl|6`W8^!F98{?&*aX0BM~S-_?VyGiA3a2fdl#{n@o+yLhI04!DbHG2
z!s&Mib%h8BC4Uiu2n2hC6&XF!6xluMQzYG+wSAIP+M0SlHKrVmgQge(2kuR*KO*F~
zosCV^6Y1%(nzH;ntcHH`F!(o5T#@$Y?z{a%^}3hIJm9<RlQuB>oy4yuw%q4jJWyI)
TZq3|!uQ{yY^1Ao79nd}jDX)hT

delta 228
zcmZoz!q~8caYH+onym-}5U?=>XQZZ<7`8I-F}PYIi5P)I9@|Y`%Qb=hHlI2Z14G$n
z7w(I^oA*g_GBTEJJ|UIG$e1x%)wywUfDFs#9Wq%;o6YPEm?p1rj8gDpU}SIr83qNi
z4Ezkt84S!oE+az*L&jz`r$da4MU!7Ty8=ml7fr_E$+hy*j3tvxT|gqc!6c)rD`V+q
zch{Xvn<w}%Gj8%Y%FJWH05-Uxa;}2&<cr?&Y~Q)MU0T*`{^rfZ%#`Y|`IjFXGXN$2
BJ`ex^

-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 17/28] tests: link_status_interrupt - skipping tests verifying adding MAC addresses for Cavium NICs
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (15 preceding siblings ...)
  2017-04-10 17:09   ` [dts] [PATCH v2 16/28] tests: link_status_interrupt - skipping test_link_status_interrupt_port_available for Cavium NICs Angela Czubak
@ 2017-04-10 17:09   ` Angela Czubak
  2017-04-10 17:09   ` [dts] [PATCH v2 18/28] tests: pmdpcap - modifying the right config file + importing utils after scapy Angela Czubak
                     ` (11 subsequent siblings)
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:09 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Following tests are skipped for Cavium NICs, since this functionality
is not implemented:
- test_add_remove_mac_address
- test_invalid_addresses

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 20992 -> 21504 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index ef22942905f40d54c260d30eb2e99e7bee24ac2f..e051b626528d7ec86b26365076c35899d95dd833 100644
GIT binary patch
delta 472
zcmZoz!q~8aae@J_Is+64FfgcWwDo2ZRR#+D`~Uwx2&+Na8k-e8k{LI#w6m!Ri-I(;
zF$8C%rj{7CGVn1-+aie=fkbvXOkT@1fqf&tDH8)j^=23DDn1=C28P6xl=!05-2AfC
z_}s+gcp$eZwYXT2fgv-mEHNiD1tyZZd9NfFBV+aE6H-}>jM<Y_of{_y$gphQAycQs
z%E2VSkU7~=Mwm4VXf4ZTZTm*1`o9cZ44FVKKSL>ygzy-FJa#yb3CPQV^O#ZOSb;ol
zs2s>peugqQ580F~24qvR7+|KnnY`99QrQEj#{r08Ko)2Ya~1<Dkk81F1%#}un>C&G
zGcuM>e(CHAB=uc187n5&%1bj=PA+u;iR=cGjIOSXRh!*icQS3B;G@g9$>S(9w=u-*
mh6sVllP`EHuwK$}6*t-Z)w`aFQFU^uUo(@n)8=1(Y|H>e8F5(v

delta 266
zcmZoz!Pu~bae@J_8UqvvFfb@@wDo2Z{P+L=e-Ks$N`Pqf&5B;>jGI{6+0>qifE2Sa
z1ZSkCmKe4&@G*GUAc+`(M4s7CUduIsy@g+giGiVVvkP|>-{#knoQ#Z>o4-nBF*0Uu
zPLN?%-rQ|p#x%L!DN5NJXn+IA5Gask;AddYWMBqz85uHxkePY&AE*6{jHQ$JxVQpI
zCRa_yvdKEG(v0PkJzPN|ePHqmkgV7&<+hV)lh;vZZbPWCnX{B9U+`66O}DphG1&ao
Vx1NbnWpZgiGgF4+=3fD9%mA|mOIZK_

-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 18/28] tests: pmdpcap - modifying the right config file + importing utils after scapy
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (16 preceding siblings ...)
  2017-04-10 17:09   ` [dts] [PATCH v2 17/28] tests: link_status_interrupt - skipping tests verifying adding MAC addresses " Angela Czubak
@ 2017-04-10 17:09   ` Angela Czubak
  2017-04-10 17:09   ` [dts] [PATCH v2 19/28] tests: pmdrssreta - skipping tests for Cavium NICs Angela Czubak
                     ` (10 subsequent siblings)
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:09 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

This test used to modify config/common_linuxapp or config/common_bsdapp
to compile DPDK with PCAP, however, this config may lie as well in
config/common_base. If the PCAP variable is not found in OS specific
files, then it is assumed that config/common_base should be modified.
Scapy may contain utils itself, therefore importing dts utils is moved
after importing from scapy (so as to override utils).

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_pmdpcap.py | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/tests/TestSuite_pmdpcap.py b/tests/TestSuite_pmdpcap.py
index 0a79e96..a51eb31 100644
--- a/tests/TestSuite_pmdpcap.py
+++ b/tests/TestSuite_pmdpcap.py
@@ -32,10 +32,10 @@
 '''
 '''
 from test_case import TestCase
-import utils
 
 from time import sleep
 from scapy.all import *
+import utils
 
 
 #
@@ -73,8 +73,11 @@ class TestPmdPcap(TestCase):
         else:
             raise Exception(
                 "Unknow os type, please check to make sure pcap can work in OS [ %s ]" % os_type)
-
-        return config_head + config_tail
+	out = self.dut.send_command("cat config/%s" % (config_head + config_tail))
+	if "CONFIG_RTE_LIBRTE_PMD_PCAP" in out:
+        	return config_head + config_tail
+	else:
+		return config_head + "base"
 
     def create_pcap_file(self, filename, number_of_packets):
         flow = []
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 19/28] tests: pmdrssreta - skipping tests for Cavium NICs
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (17 preceding siblings ...)
  2017-04-10 17:09   ` [dts] [PATCH v2 18/28] tests: pmdpcap - modifying the right config file + importing utils after scapy Angela Czubak
@ 2017-04-10 17:09   ` Angela Czubak
  2017-04-10 17:09   ` [dts] [PATCH v2 20/28] tests: queue_start_stop - taking into account cavium NICs Angela Czubak
                     ` (9 subsequent siblings)
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:09 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Following tests are skipped since the NIC does not support them
- test_pmdrss_reta
- test_rss_key_size

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 21504 -> 21504 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index e051b626528d7ec86b26365076c35899d95dd833..52bbf9dbea61debbd4989c8ae6a67a60eb827ac7 100644
GIT binary patch
delta 1753
zcmY+FOH30%7=UNWD~houkhP>~Lhv9fr7cCeEq&5<`+x$a1>{k%f+Adu2V*>VAjZUm
zs4@JWj9!Qb4jzoX5aYpkBAyx!#Df=a=vfmFLi}gg?#{I7O!u2_{+*eBc6M`@Ztl|e
zhaI)9&YotPfIA(@TG(-}lWLH2tF90s<d~c#y@V1wX)~{Ec%{K}w@Qa$&#l?RM#~kf
z?IZ#x0_)=}3h92!b8{AhErIoO7KggPJe(y!@mPJmoQ*(5U_Q>0up_Vm&QfqBFh6H$
z@OZVp#+V0@DMZJT&2&(j=^$Y<&A<z<O0)3M>!dk2#Q*tipJpF5x&*MkNX8(8tY9z=
zYX=#Jr#{s+VX_v|MJA1_AUBF|AQ(X+8f@_$WC|PuIxWF6mSuQ5V8shdb_8uZ8G&Dd
z5#h$PamOe(lHl`OF`|+Y<3<YZ3r0*b;@n8XC%<ZM%qxCs)PDP)+2{;B8nVJCcvEA_
zBiLCXS=b-aX&lZ6)YV3aq~xX0!--?bGLn)qlHwVeHQSnS(v2u7DN340DZ#6N)79|P
zMD)|AJ{$zJ%Pa=9wc<W##xb({>e#A~YsQ^2SSut1K20^<jOk`1H_P2Q*c9BX>1HK2
z$K83T3vSMIbCR3q?gDfNtuf?HH!rztb1GyJ?h5Xx>5fY7m=X7L&`B%sJ*c`Ck+3x=
zNNZo<YhQt$kV@yF5MuT^{$GOakd^ZZjNL_+jR-9FEa%@s)|e;FaZK`YTsPbzcZZ>O
z*m8@eTa;Y3I}|)=9tiG~=}t**iMt8d7u=HRmL#{#-8eYH))>mBTb5k*U@0U9>w-IN
zy3>+7!`&+Eg{_l}?Mgej0Ve`u`%NJ$kd9d19A~SrC9rwUZbDsP3!L2oC2I9$nN;u~
zstByY*&6H!Yzdj2+=e58u^cLR0C{3oJeDhkl;B=WqhWX#`{`Oo!uCp4+ACGQS2o~7
zT&EkgzwsZoOJ`6_;IHv<;SHNq^zg|eDt>LY+P~xziYM*kw2p6<uUJOlg0AC>X%@>E
myvA}3s@=}ovA*Bde$@!L@@5a}<J~O}UlzZVYk$VuTmJ)fWF!m#

delta 1753
zcmY+FOH30%7=ZsN6cRC(1hbShO$Z)jrO*OGyY&6ozU0{=@)kt}IT#Pdcx;S`2~lJC
zZ^jexz`=vD7h*hkB%T@$#Df=a=vfmFLi}fFcW2skcK4fa{(1d7t?aSN9{X_A!4mkO
zBUL@>=xMHo-RCbd1M@!JI|cwJa1MHbfeTu#CkH(l_{yiVFz)+;u1LM+3SC_g#Z!s(
z2^PalzwP-1i{rM$`UOj1O=1IrB~cr&+xi7d;j+X6f~9d+VuONZ@K|C)f|)qr5B4?2
zJWNc3ER}qw!^%vDfzLFDul+j9<0rp|74V4ei#vg!>sr0ZC|x^Y9J9nG>MTfCH%#J-
zfbN~Lm=n5Sy8aXr#ta@xMhIlX5Jm~zgC;BEDwVVNZqSYwR%|{U7o_l)WJH8<z20L~
z7-<X)*)gJu5ferRA4^6|G2+57@$-=GYRoHsW>kL<y>zfSd^%!>Pl&3<l#|q0gFGIL
zn3Qi9M)mbZh?L@`$#X-AO1>j$Wk=FtM{ZbkO*H97l(Z5hBchb?&8WxQ@G~I$nKK^`
zM}wDn4CZJ76Pjs^ykC=QHJGpW#PdUgF$@HC%gtJDR&jH}UBHUu<}5d-xOw3&Voh@M
zmYY}Hf^e6xJ7kZcV7UdwEedxTA4+b~a*K+~6Ip{L{1Wo875pC3y~{-S8jLGzKQ7jO
z1$zvgE#kPr?M=F0#T~=m^GS-`1vl#v_`32v|7O@@p0dU<CC0H<cX^&@5XRmy+nu)D
zX~mrpZWNzL?u_NmC@#+=4U%{uxh2ajDQ;P~33P|;F_bO0thlqnjpL@|&RXuQ;_{bJ
zgIl;CwokG-VlKFirxN3ts=+#DBDTkKP=h<TEwKf`?qW@1i-O%lEo!%25^NHeCB}DG
zgALr3*a|ThY~r!RR)tr>ftVeS@2du7d=v|^2)>W~^xh}Jb7f7*l{Jwo27Zj2%&7j2
z|8QL5sh*%;<Kv|co3?0`=*@#I`Z}G}f2rq;PTFS~lm1!0QW?c|(_~4UqcV<fsocP|
iZcp{ZJZNpBqdP&ZEA#D$wTW)$q0j8RTKzN8*76^sY$V?R

-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 20/28] tests: queue_start_stop - taking into account cavium NICs
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (18 preceding siblings ...)
  2017-04-10 17:09   ` [dts] [PATCH v2 19/28] tests: pmdrssreta - skipping tests for Cavium NICs Angela Czubak
@ 2017-04-10 17:09   ` Angela Czubak
  2017-04-10 17:09   ` [dts] [PATCH v2 21/28] tests: quota_watermark - skipping tests for Cavium NICs Angela Czubak
                     ` (8 subsequent siblings)
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:09 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Testpmd must be run with hardware VLAN filter disabled as thunder
driver does not support this feature - --disable-hw-vlan-filter is
appended if NIC is Cavium device.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_queue_start_stop.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/tests/TestSuite_queue_start_stop.py b/tests/TestSuite_queue_start_stop.py
index d1df66b..a83d174 100644
--- a/tests/TestSuite_queue_start_stop.py
+++ b/tests/TestSuite_queue_start_stop.py
@@ -130,7 +130,10 @@ class TestQueueStartStop(TestCase):
         """
         #dpdk start
         try:
-            self.dut.send_expect("./app/test-pmd/testpmd -c 0xf -n 4 -- -i --portmask=0x1 --port-topology=loop", "testpmd>", 120)
+	    cmd = "./app/test-pmd/testpmd -c 0xf -n 4 -- -i --portmask=0x1 --port-topology=loop"
+	    if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
+            self.dut.send_expect(cmd, "testpmd>", 120)
             self.dut.send_expect("set fwd mac", "testpmd>")
             self.dut.send_expect("start", "testpmd>")
             self.check_forwarding([0, 0], self.nic)
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 21/28] tests: quota_watermark - skipping tests for Cavium NICs
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (19 preceding siblings ...)
  2017-04-10 17:09   ` [dts] [PATCH v2 20/28] tests: queue_start_stop - taking into account cavium NICs Angela Czubak
@ 2017-04-10 17:09   ` Angela Czubak
  2017-04-10 17:09   ` [dts] [PATCH v2 22/28] tests: short_live - taking into account cavium NICs + fixes Angela Czubak
                     ` (7 subsequent siblings)
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:09 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Skipping quota_watermark test for Cavium NICs by modifying
conf/dpdk_test_case_checklist.xls

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 21504 -> 21504 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index 52bbf9dbea61debbd4989c8ae6a67a60eb827ac7..4579ed4753787f2247868fe205e2df60f939cbc9 100644
GIT binary patch
delta 340
zcmZoz!Pu~ZaYH+onyM%R5U?=>XQZZ<7`8I-F-)~Z5-|da7&}g0%Qb=hFuyeu14GSb
z7w+YJLi`L2g{Ao=iSgx$C8<TZiAC9)UrTZ_GS+PVDwV~^n6o)SMqXK*jlqTyWEuk_
zKLZDo07EvA$;P0wxyk-7Q{Z0)E`}@yRtA0sZlExT2a@JzD2MYHfjo9Nj|s@jf%BMA
z<iMs(u5pT04rE|tZ~&@;0a>6r<{SnVAfFMa9mrzY{KsiOBV)znJua?5lF3z*v2wDG
zt2ATPWDi%6NFSKI0wk+9OS$DRZ}K|I%x%U1Hnu^=`1|Awz6z|8pT*}yZ2s!Y%*?oT
J^UnZwW&oI@OS%96

delta 223
zcmZoz!Pu~ZaYH+ony@GX5U?=>XQZZ<7`8I-F-Y4Yi5P)Ib~;R6%Qb<0BflvV14H#@
z7w+YJoBv93GBQ?gW|z)lWX#@NBqOiP%)(%^d4>I7rpZ5@qLev-hB$x>f&y6veg<Yu
z2A}~9j0~DU$i%d{%y~Z}WBFt=S63ie<EqJ6F?o-?G-KuDLtqgOH;}j=kgVD~#Vv<<
r@&%8oO<qTtxlN!(C(Ye4`GT(kYt58^L&2NB`Z6;!T5tXtz|IT+ejqwY

-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 22/28] tests: short_live - taking into account cavium NICs + fixes
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (20 preceding siblings ...)
  2017-04-10 17:09   ` [dts] [PATCH v2 21/28] tests: quota_watermark - skipping tests for Cavium NICs Angela Czubak
@ 2017-04-10 17:09   ` Angela Czubak
  2017-04-10 17:09   ` [dts] [PATCH v2 23/28] tests: tso - taking into account cavium NICs Angela Czubak
                     ` (6 subsequent siblings)
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:09 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Testpmd must be run with hardware VLAN filter disabled as thunder
driver does not support this feature - --disable-hw-vlan-filter is
appended if NIC is Cavium device.
Additional fixes done: waiting for DPDK application to be finished by
calling `ps` in a loop and checking whether the process is still alive;
sniffing in background scapy process fails at times, using tcpdump
instead; if start_up_time fails it is checked if the problem was that
time command seem not to be found (informing user about it).

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_short_live.py | 42 ++++++++++++++++++++++++++++++++++--------
 1 file changed, 34 insertions(+), 8 deletions(-)

diff --git a/tests/TestSuite_short_live.py b/tests/TestSuite_short_live.py
index 72745a9..45727a1 100644
--- a/tests/TestSuite_short_live.py
+++ b/tests/TestSuite_short_live.py
@@ -45,6 +45,7 @@ from test_case import TestCase
 from pmd_output import PmdOutput
 from settings import FOLDERS
 
+from packet import Packet, sniff_packets, load_sniff_packets, strip_pktload
 #
 #
 # Test class.
@@ -95,17 +96,14 @@ class TestShortLiveApp(TestCase):
         dmac = self.dut.get_mac_address(txPort)
         Dut_tx_mac = self.dut.get_mac_address(rxPort)
 
-        self.tester.scapy_background()
         count = 1
         # if only one port rx/tx, we should check count 2 so that both
         # rx and tx packet are list
         if (txPort == rxPort):
             count = 2
 
-        self.tester.scapy_append('p=sniff(iface="%s",count=%d,timeout=5)' % (rxitf, count))
-        self.tester.scapy_append('RESULT=str(p)')
 
-        self.tester.scapy_foreground()
+        inst = sniff_packets(intf=rxitf, count=count)
 
         pktlen = pktSize - 14
         padding = pktlen - 20
@@ -114,7 +112,11 @@ class TestShortLiveApp(TestCase):
         self.tester.scapy_execute()
         time.sleep(3)
 
-        out = self.tester.scapy_get_result()
+	p = load_sniff_packets(inst)
+	nr_packets=len(p)
+	reslist = [p[i].pktgen.pkt for i in range(nr_packets)]
+	out = str(reslist)
+
         if received:
             self.verify(('PPP' in out) and 'src=%s'% Dut_tx_mac in out, "Receive test failed")
         else:
@@ -125,7 +127,10 @@ class TestShortLiveApp(TestCase):
         Basic rx/tx forwarding test
         """
         #dpdk start
-        self.dut.send_expect("./%s/app/testpmd -c 0xf -n 4 -- -i --portmask=0x3" % self.target, "testpmd>", 120)
+	cmd = "./%s/app/testpmd -c 0xf -n 4 -- -i --portmask=0x3"
+	if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
+        self.dut.send_expect(cmd % self.target, "testpmd>", 120)
         self.dut.send_expect("set fwd mac", "testpmd>")
         self.dut.send_expect("set promisc all off", "testpmd>")
         self.dut.send_expect("start", "testpmd>")
@@ -144,23 +149,33 @@ class TestShortLiveApp(TestCase):
             print "start time: %s s"%time[0]
         else:
             self.verify(0, "start_up_time failed")
+	    if "time: command not found" in out:
+		print "Command time is not installed or is a shell keyword" 
 
     def test_clean_up_with_signal_testpmd(self):
         repeat_time = 5
+	cmd = "./%s/app/testpmd -c 0xf -n 4 -- -i --portmask=0x3"
+	if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
         for i in range(repeat_time):
             #dpdk start
             print "clean_up_with_signal_testpmd round %d" % (i + 1)
-            self.dut.send_expect("./%s/app/testpmd -c 0xf -n 4 -- -i --portmask=0x3" % self.target, "testpmd>", 120)
+            self.dut.send_expect(cmd % self.target, "testpmd>", 120)
             self.dut.send_expect("set fwd mac", "testpmd>")
             self.dut.send_expect("set promisc all off", "testpmd>")
             self.dut.send_expect("start", "testpmd>")
             self.check_forwarding([0, 1], self.nic)
 
+	    pid = self.dut.send_expect("ps -o pid -C testpmd | tail -n +2", "#", 60, True)
             # kill with differen Signal
             if i%2 == 0:
                 self.dut.send_expect("pkill -2 testpmd", "#", 60, True)
             else:
                 self.dut.send_expect("pkill -15 testpmd", "#", 60, True)
+	    # waiting for the process to truly finish
+	    while True:
+	    	no_lines = int(self.dut.send_expect("ps -p %d | wc -l" % int(pid), "#", 60, True))
+	    	if 1 == no_lines: break # only header is printed out
 
     def test_clean_up_with_signal_l2fwd(self):
         repeat_time = 5
@@ -172,10 +187,16 @@ class TestShortLiveApp(TestCase):
             self.check_forwarding([0, 1], self.nic)
 
             # kill with differen Signal
+	    pid = self.dut.send_expect("ps -o pid -C l2fwd | tail -n +2", "#", 60, True)
             if i%2 == 0:
                 self.dut.send_expect("pkill -2 l2fwd", "#", 60, True)
             else:
                 self.dut.send_expect("pkill -15 l2fwd", "#", 60, True)
+	
+	    while True:
+	    	no_lines = int(self.dut.send_expect("ps -p %d | wc -l" % int(pid), "#", 60, True))
+	    	if 1 == no_lines: break
+	    
 
     def test_clean_up_with_signal_l3fwd(self):
         repeat_time = 5
@@ -186,12 +207,17 @@ class TestShortLiveApp(TestCase):
             self.dut.send_expect("./examples/l3fwd/build/app/l3fwd -n 4 -c 0xf -- -p 0x3 --config='(0,0,1),(1,0,2)' &", "L3FWD:", 120)
             self.check_forwarding([0, 0], self.nic)
 
+	    pid = self.dut.send_expect("ps -o pid -C l3fwd | tail -n +2", "#", 60, True)
             # kill with differen Signal
             if i%2 == 0:
                 self.dut.send_expect("pkill -2 l3fwd", "#", 60, True)
             else:
                 self.dut.send_expect("pkill -15 l3fwd", "#", 60, True)
-
+	
+	    while True:
+	    	no_lines = int(self.dut.send_expect("ps -p %d | wc -l" % int(pid), "#", 60, True))
+	    	if 1 == no_lines: break
+	    
     def tear_down(self):
         """
         Run after each test case.
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 23/28] tests: tso - taking into account cavium NICs
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (21 preceding siblings ...)
  2017-04-10 17:09   ` [dts] [PATCH v2 22/28] tests: short_live - taking into account cavium NICs + fixes Angela Czubak
@ 2017-04-10 17:09   ` Angela Czubak
  2017-04-10 17:09   ` [dts] [PATCH v2 24/28] tests: uni_pkt " Angela Czubak
                     ` (5 subsequent siblings)
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:09 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Enabling TSO tests for Cavium NICs.
Testpmd must be run with hardware VLAN filter disabled as thunder
driver does not support this feature - --disable-hw-vlan-filter is
appended if NIC is Cavium device.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_tso.py | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/tests/TestSuite_tso.py b/tests/TestSuite_tso.py
index 00f7539..87d8b69 100644
--- a/tests/TestSuite_tso.py
+++ b/tests/TestSuite_tso.py
@@ -55,7 +55,8 @@ class TestTSO(TestCase):
         self.verify(self.nic in ["kawela_2", "niantic", "bartonhills", "82545EM",
                                  "82540EM", "springfountain", "fortville_eagle",
                                  "fortville_spirit", "fortville_spirit_single",
-                                 "redrockcanyou", "atwood", "boulderrapid", "fortpark_TLV"],
+                                 "redrockcanyou", "atwood", "boulderrapid", "fortpark_TLV",
+				 "cavium_0011", "cavium_a034"],
                     "NIC Unsupported: " + str(self.nic))
 
         # Based on h/w type, choose how many ports to use
@@ -158,6 +159,8 @@ class TestTSO(TestCase):
         self.tester.send_expect("ip l set %s up" % tx_interface, "# ")
 
         cmd = "./%s/app/testpmd -c %s -n %d %s -- -i --rxd=512 --txd=512 --burst=32 --rxfreet=64 --mbcache=128 --portmask=%s --txpt=36 --txht=0 --txwt=0 --txfreet=32 --txrst=32 --txqflags=0 " % (self.target, self.coreMask, self.dut.get_memory_channels(), self.blacklist, self.portMask)
+	if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
         self.dut.send_expect(cmd, "testpmd> ", 120)
         self.dut.send_expect("set verbose 1", "testpmd> ", 120)
         self.dut.send_expect("csum set ip hw %d" % self.dut_ports[0], "testpmd> ", 120)
@@ -224,6 +227,9 @@ class TestTSO(TestCase):
         self.tester.send_expect("ip l set %s up" % tx_interface, "# ")
 
         cmd = "./%s/app/testpmd -c %s -n %d %s -- -i --rxd=512 --txd=512 --burst=32 --rxfreet=64 --mbcache=128 --portmask=%s --txpt=36 --txht=0 --txwt=0 --txfreet=32 --txrst=32 --txqflags=0 " % (self.target, self.coreMask, self.dut.get_memory_channels(), self.blacklist, self.portMask)
+	if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
+
         self.dut.send_expect(cmd, "testpmd> ", 120)
         self.dut.send_expect("set verbose 1", "testpmd> ", 120)
         self.dut.send_expect("csum set ip hw %d" % self.dut_ports[0], "testpmd> ", 120)
@@ -288,6 +294,8 @@ class TestTSO(TestCase):
                 queues = 1
 
             command_line = "./%s/app/testpmd -c %s -n %d %s -- -i --coremask=%s --rxd=512 --txd=512 --burst=32 --rxfreet=64 --mbcache=128 --portmask=%s --txpt=36 --txht=0 --txwt=0 --txfreet=32 --txrst=32 --txqflags=0 " % (self.target, self.all_cores_mask, self.dut.get_memory_channels(), self.blacklist, self.coreMask, self.portMask)
+	    if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
 
             info = "Executing PMD using %s\n" % test_cycle['cores']
             self.logger.info(info)
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 24/28] tests: uni_pkt - taking into account cavium NICs
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (22 preceding siblings ...)
  2017-04-10 17:09   ` [dts] [PATCH v2 23/28] tests: tso - taking into account cavium NICs Angela Czubak
@ 2017-04-10 17:09   ` Angela Czubak
  2017-04-10 17:09   ` [dts] [PATCH v2 25/28] tests: unit_tests_dump " Angela Czubak
                     ` (4 subsequent siblings)
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:09 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Enabling following uni_pkt test cases by modifying
conf/dpdk_support_test_case.xls:
- NVGRE_tunnel
- NVGRE_in_IPv6_tunnel
- NVGRE_tunnel
Testpmd must be run with hardware VLAN filter disabled as thunder
driver does not support this feature - --disable-hw-vlan-filter is
appended if NIC is Cavium device. What is more, Cavium has hardware
packet type detection only for L3 and L4, therefore L2 is never checked
and inner layers are skipped as well.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_support_test_case.xls | Bin 25600 -> 8704 bytes
 tests/TestSuite_uni_pkt.py      | 219 +++++++++++++++++++++++++++-------------
 2 files changed, 147 insertions(+), 72 deletions(-)

diff --git a/conf/dpdk_support_test_case.xls b/conf/dpdk_support_test_case.xls
index 8f38c84ce8ff3338394944fa67c478d711ebe56a..2d8a342baf869d782921ad32e5c11cfa46f06a48 100644
GIT binary patch
literal 8704
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
TE!EoJ`~9uz$wnCPPv-v{JrESQ

literal 25600
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

diff --git a/tests/TestSuite_uni_pkt.py b/tests/TestSuite_uni_pkt.py
index 6975f2d..882b758 100644
--- a/tests/TestSuite_uni_pkt.py
+++ b/tests/TestSuite_uni_pkt.py
@@ -46,9 +46,19 @@ user applications
 import utils
 from test_case import TestCase
 from exception import VerifyFailure
-from packet import Packet
 import time
 
+# so as to bind GRE for GRE testing
+from scapy.packet import *
+from scapy.fields import *
+from scapy.layers.inet import UDP,IP
+from scapy.layers.inet6 import IPv6
+from scapy.layers.l2 import Ether
+from scapy.layers.l2 import GRE
+IPPROTO_GRE=47
+
+# to override the one from scapy
+from packet import Packet
 
 class TestUniPacket(TestCase):
 
@@ -63,8 +73,10 @@ class TestUniPacket(TestCase):
         self.dut_port = valports[0]
         tester_port = self.tester.get_local_port(self.dut_port)
         self.tester_iface = self.tester.get_interface(tester_port)
-        self.dut.send_expect(
-            "./%s/app/testpmd -c f -n 4 -- -i --txqflags=0x0" % self.target, "testpmd>", 20)
+	cmd = "./%s/app/testpmd -c f -n 4 -- -i --txqflags=0x0" 
+	if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
+        self.dut.send_expect(cmd % self.target, "testpmd>", 20)
         self.dut.send_expect("set fwd rxonly", "testpmd>")
         self.dut.send_expect("set verbose 1", "testpmd>")
         self.dut.send_expect("start", "testpmd>")
@@ -121,6 +133,9 @@ class TestUniPacket(TestCase):
         elif "niantic" in self.nic.lower() or "i350" in self.nic.lower():
             outerL4Type = ""
             ipv4_default_packet_type = ["L2_ETHER", "L3_IPV4"]
+	elif "cavium" in self.dut.nic_type:
+            outerL4Type = ""
+            ipv4_default_packet_type = ["L3_IPV4"]
         pktType = {
             "MAC_IP_PKT":                ipv4_default_packet_type + [outerL4Type],
             "MAC_IP_UDP_PKT":            ipv4_default_packet_type + ["L4_UDP"],
@@ -139,6 +154,8 @@ class TestUniPacket(TestCase):
         elif "niantic" in self.nic.lower() or "i350" in self.nic.lower():
             pktType.pop("MAC_IP_ICMP_PKT")
             pktType.pop("MAC_IPFRAG_TCP_PKT")
+	elif "cavium" in self.dut.nic_type:
+            pktType.pop("MAC_IP_ICMP_PKT")
 
         self.run_test(pktType)
 
@@ -152,6 +169,9 @@ class TestUniPacket(TestCase):
         elif "niantic" in self.nic.lower() or "i350" in self.nic.lower():
             outerL4Type = ""
             ipv6_default_packet_type = ["L2_ETHER", "L3_IPV6"]
+        elif "cavium" in self.dut.nic_type:
+            outerL4Type = ""
+            ipv6_default_packet_type = ["L3_IPV6"]
 
         pktType = {
             "MAC_IPv6_PKT":          ipv6_default_packet_type + [outerL4Type],
@@ -245,36 +265,55 @@ class TestUniPacket(TestCase):
         checked that whether NVGRE tunnel packet can be normally detected
         by Fortville.
         """
-        self.verify(("fortville" in self.nic or "fortpark_TLV" in self.nic),
+        self.verify(("fortville" in self.nic or "fortpark_TLV" in self.nic or "cavium" in self.dut.nic_type),
                     "NVGRE tunnel packet type detect only support by Fortville")
-        nvgre_base_packet_type = ["L2_ETHER", "L3_IPV4_EXT_UNKNOWN", "TUNNEL_GRENAT"]
-        # INNER IPV4 not with vlan
-        nvgre_ipv4_default_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER", "INNER_L3_IPV4_EXT_UNKNOWN"]
-        # INNER IPV6 not with vlan
-        nvgre_ipv6_default_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER", "INNER_L3_IPV6_EXT_UNKNOWN"]
-        # INNER IPV4 with vlan
-        nvgre_ipv4_vlan_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER_VLAN", "INNER_L3_IPV4_EXT_UNKNOWN"]
-        # INNER IPV6 with vlan
-        nvgre_ipv6_vlan_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER_VLAN", "INNER_L3_IPV6_EXT_UNKNOWN"]
-
-
-        pktType = {
-            "MAC_IP_NVGRE_MAC_IPFRAG_PKT":              nvgre_ipv4_default_packet_type + ["INNER_L4_FRAG"],
-            "MAC_IP_NVGRE_MAC_IP_PKT":                  nvgre_ipv4_default_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IP_NVGRE_MAC_VLAN_PKT":                nvgre_base_packet_type + ["INNER_L2_ETHER"],
-            "MAC_IP_NVGRE_MAC_VLAN_IPFRAG_PKT":         nvgre_ipv4_vlan_packet_type + ["INNER_L4_FRAG"],
-            "MAC_IP_NVGRE_MAC_VLAN_IP_PKT":             nvgre_ipv4_vlan_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IP_NVGRE_MAC_VLAN_IP_UDP_PKT":         nvgre_ipv4_vlan_packet_type + ["INNER_L4_UDP"],
-            "MAC_IP_NVGRE_MAC_VLAN_IP_TCP_PKT":         nvgre_ipv4_vlan_packet_type + ["INNER_L4_TCP"],
-            "MAC_IP_NVGRE_MAC_VLAN_IP_SCTP_PKT":        nvgre_ipv4_vlan_packet_type + ["INNER_L4_SCTP"],
-            "MAC_IP_NVGRE_MAC_VLAN_IP_ICMP_PKT":        nvgre_ipv4_vlan_packet_type + ["INNER_L4_ICMP"],
-            "MAC_IP_NVGRE_MAC_VLAN_IPv6FRAG_PKT":       nvgre_ipv6_vlan_packet_type + ["INNER_L4_FRAG"],
-            "MAC_IP_NVGRE_MAC_VLAN_IPv6_PKT":           nvgre_ipv6_vlan_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IP_NVGRE_MAC_VLAN_IPv6_UDP_PKT":       nvgre_ipv6_vlan_packet_type + ["INNER_L4_UDP"],
-            "MAC_IP_NVGRE_MAC_VLAN_IPv6_TCP_PKT":       nvgre_ipv6_vlan_packet_type + ["INNER_L4_TCP"],
-            "MAC_IP_NVGRE_MAC_VLAN_IPv6_SCTP_PKT":      nvgre_ipv6_vlan_packet_type + ["INNER_L4_SCTP"],
-            "MAC_IP_NVGRE_MAC_VLAN_IPv6_ICMP_PKT":      nvgre_ipv6_vlan_packet_type + ["INNER_L4_ICMP"]
-        }
+	if "cavium" in self.dut.nic_type:
+        	nvgre_base_packet_type = ["L3_IPV4", "TUNNEL_NVGRE"]
+		pktType = {
+       		    "MAC_IP_NVGRE_MAC_IPFRAG_PKT":              nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_IP_PKT":                  nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_PKT":                nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPFRAG_PKT":         nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_PKT":             nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_UDP_PKT":         nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_TCP_PKT":         nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_SCTP_PKT":        nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_ICMP_PKT":        nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6FRAG_PKT":       nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_PKT":           nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_UDP_PKT":       nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_TCP_PKT":       nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_SCTP_PKT":      nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_ICMP_PKT":      nvgre_base_packet_type
+       		}
+	else:
+        	nvgre_base_packet_type = ["L2_ETHER", "L3_IPV4_EXT_UNKNOWN", "TUNNEL_GRENAT"]
+        	# INNER IPV4 not with vlan
+       		nvgre_ipv4_default_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER", "INNER_L3_IPV4"]
+       		# INNER IPV6 not with vlan
+       		nvgre_ipv6_default_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER", "INNER_L3_IPV6"]
+       		# INNER IPV4 with vlan
+       		nvgre_ipv4_vlan_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER_VLAN", "INNER_L3_IPV4"]
+       		# INNER IPV6 with vlan
+       		nvgre_ipv6_vlan_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER_VLAN", "INNER_L3_IPV6"]
+
+       		pktType = {
+       		    "MAC_IP_NVGRE_MAC_IPFRAG_PKT":              nvgre_ipv4_default_packet_type + ["INNER_L4_FRAG"],
+       		    "MAC_IP_NVGRE_MAC_IP_PKT":                  nvgre_ipv4_default_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_PKT":                nvgre_base_packet_type + ["INNER_L2_ETHER"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPFRAG_PKT":         nvgre_ipv4_vlan_packet_type + ["INNER_L4_FRAG"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_PKT":             nvgre_ipv4_vlan_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_UDP_PKT":         nvgre_ipv4_vlan_packet_type + ["INNER_L4_UDP"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_TCP_PKT":         nvgre_ipv4_vlan_packet_type + ["INNER_L4_TCP"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_SCTP_PKT":        nvgre_ipv4_vlan_packet_type + ["INNER_L4_SCTP"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_ICMP_PKT":        nvgre_ipv4_vlan_packet_type + ["INNER_L4_ICMP"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6FRAG_PKT":       nvgre_ipv6_vlan_packet_type + ["INNER_L4_FRAG"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_PKT":           nvgre_ipv6_vlan_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_UDP_PKT":       nvgre_ipv6_vlan_packet_type + ["INNER_L4_UDP"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_TCP_PKT":       nvgre_ipv6_vlan_packet_type + ["INNER_L4_TCP"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_SCTP_PKT":      nvgre_ipv6_vlan_packet_type + ["INNER_L4_SCTP"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_ICMP_PKT":      nvgre_ipv6_vlan_packet_type + ["INNER_L4_ICMP"]
+       		}
         self.run_test(pktType)
 
     def test_NVGRE_in_IPv6_tunnel(self):
@@ -282,45 +321,76 @@ class TestUniPacket(TestCase):
         checked that whether NVGRE in IPv6 tunnel packet can be normally
         detected by Fortville.
         """
-        self.verify(("fortville" in self.nic or "fortpark_TLV" in self.nic),
+        self.verify(("fortville" in self.nic or "fortpark_TLV" in self.nic or "cavium" in self.dut.nic_type),
                     "NVGRE in IPv6 detect only support by Fortville")
-        nvgre_base_packet_type = ["L2_ETHER", "L3_IPV6_EXT_UNKNOWN", "TUNNEL_GRENAT"]
-        # INNER IPV4 not with vlan
-	nvgre_ipv4_default_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER", "INNER_L3_IPV4_EXT_UNKNOWN"]
-        # INNER IPV6 not with vlan
-        nvgre_ipv6_default_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER", "INNER_L3_IPV6_EXT_UNKNOWN"]
-        # INNER IPV4 with vlan
-	nvgre_ipv4_vlan_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER_VLAN", "INNER_L3_IPV4_EXT_UNKNOWN"]
-        # INNER IPV6 with vlan
-        nvgre_ipv6_vlan_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER_VLAN", "INNER_L3_IPV6_EXT_UNKNOWN"]
-
-        pkt_types = {
-            "MAC_IPv6_NVGRE_MAC_PKT":               nvgre_base_packet_type + ["INNER_L2_ETHER"],
-            "MAC_IPv6_NVGRE_MAC_IPFRAG_PKT":        nvgre_ipv4_default_packet_type + ["INNER_L4_FRAG"],
-            "MAC_IPv6_NVGRE_MAC_IP_PKT":            nvgre_ipv4_default_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IPv6_NVGRE_MAC_IP_UDP_PKT":        nvgre_ipv4_default_packet_type + ["INNER_L4_UDP"],
-            "MAC_IPv6_NVGRE_MAC_IP_TCP_PKT":        nvgre_ipv4_default_packet_type + ["INNER_L4_TCP"],
-            "MAC_IPv6_NVGRE_MAC_IP_SCTP_PKT":       nvgre_ipv4_default_packet_type + ["INNER_L4_SCTP"],
-            "MAC_IPv6_NVGRE_MAC_IP_ICMP_PKT":       nvgre_ipv4_default_packet_type + ["INNER_L4_ICMP"],
-            "MAC_IPv6_NVGRE_MAC_IPv6FRAG_PKT":      nvgre_ipv6_default_packet_type + ["INNER_L4_FRAG"],
-            "MAC_IPv6_NVGRE_MAC_IPv6_PKT":          nvgre_ipv6_default_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IPv6_NVGRE_MAC_IPv6_UDP_PKT":      nvgre_ipv6_default_packet_type + ["INNER_L4_UDP"],
-            "MAC_IPv6_NVGRE_MAC_IPv6_TCP_PKT":      nvgre_ipv6_default_packet_type + ["INNER_L4_TCP"], 
-            "MAC_IPv6_NVGRE_MAC_IPv6_SCTP_PKT":     nvgre_ipv6_default_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IPv6_NVGRE_MAC_IPv6_ICMP_PKT":     nvgre_ipv6_default_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IPFRAG_PKT":   nvgre_ipv4_vlan_packet_type + ["INNER_L4_FRAG"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IP_PKT":       nvgre_ipv4_vlan_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IP_UDP_PKT":   nvgre_ipv4_vlan_packet_type + ["INNER_L4_UDP"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IP_TCP_PKT":   nvgre_ipv4_vlan_packet_type + ["INNER_L4_TCP"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IP_SCTP_PKT":  nvgre_ipv4_vlan_packet_type + ["INNER_L4_SCTP"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IP_ICMP_PKT":  nvgre_ipv4_vlan_packet_type + ["INNER_L4_ICMP"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IPv6FRAG_PKT": nvgre_ipv6_vlan_packet_type + ["INNER_L4_FRAG"], 
-            "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_PKT":     nvgre_ipv6_vlan_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_UDP_PKT": nvgre_ipv6_vlan_packet_type + ["INNER_L4_UDP"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_TCP_PKT": nvgre_ipv6_vlan_packet_type + ["INNER_L4_TCP"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_SCTP_PKT":nvgre_ipv6_vlan_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_ICMP_PKT":nvgre_ipv6_vlan_packet_type + ["INNER_L4_NONFRAG"]
-        }
+	if "cavium" in self.dut.nic_type:
+		#cavium recognizes only L3 and L4 by hardware
+       		nvgre_base_packet_type = ["L3_IPV6", "TUNNEL_NVGRE"]
+       		pkt_types = {
+       		    "MAC_IPv6_NVGRE_MAC_PKT":               nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IPFRAG_PKT":        nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IP_PKT":            nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IP_UDP_PKT":        nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IP_TCP_PKT":        nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IP_SCTP_PKT":       nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IP_ICMP_PKT":       nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IPv6FRAG_PKT":      nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_PKT":          nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_UDP_PKT":      nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_TCP_PKT":      nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_SCTP_PKT":     nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_ICMP_PKT":     nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPFRAG_PKT":   nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_PKT":       nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_UDP_PKT":   nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_TCP_PKT":   nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_SCTP_PKT":  nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_ICMP_PKT":  nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6FRAG_PKT": nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_PKT":     nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_UDP_PKT": nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_TCP_PKT": nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_SCTP_PKT":nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_ICMP_PKT":nvgre_base_packet_type
+       		}
+	else:
+       		nvgre_base_packet_type = ["L2_ETHER", "L3_IPV6_EXT_UNKNOWN", "TUNNEL_GRENAT"]
+       		# INNER IPV4 not with vlan
+       		nvgre_ipv4_default_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER", "INNER_L3_IPV4_EXT_UNKNOWN"]
+       		# INNER IPV6 not with vlan
+       		nvgre_ipv6_default_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER", "INNER_L3_IPV6_EXT_UNKNOWN"]
+       		# INNER IPV4 with vlan
+       		nvgre_ipv4_vlan_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER_VLAN", "INNER_L3_IPV4_EXT_UNKNOWN"]
+       		# INNER IPV6 with vlan
+       		nvgre_ipv6_vlan_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER_VLAN", "INNER_L3_IPV6_EXT_UNKNOWN"]
+
+       		pkt_types = {
+       		    "MAC_IPv6_NVGRE_MAC_PKT":               nvgre_base_packet_type + ["INNER_L2_ETHER"],
+       		    "MAC_IPv6_NVGRE_MAC_IPFRAG_PKT":        nvgre_ipv4_default_packet_type + ["INNER_L4_FRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_IP_PKT":            nvgre_ipv4_default_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_IP_UDP_PKT":        nvgre_ipv4_default_packet_type + ["INNER_L4_UDP"],
+       		    "MAC_IPv6_NVGRE_MAC_IP_TCP_PKT":        nvgre_ipv4_default_packet_type + ["INNER_L4_TCP"],
+       		    "MAC_IPv6_NVGRE_MAC_IP_SCTP_PKT":       nvgre_ipv4_default_packet_type + ["INNER_L4_SCTP"],
+       		    "MAC_IPv6_NVGRE_MAC_IP_ICMP_PKT":       nvgre_ipv4_default_packet_type + ["INNER_L4_ICMP"],
+       		    "MAC_IPv6_NVGRE_MAC_IPv6FRAG_PKT":      nvgre_ipv6_default_packet_type + ["INNER_L4_FRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_PKT":          nvgre_ipv6_default_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_UDP_PKT":      nvgre_ipv6_default_packet_type + ["INNER_L4_UDP"],
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_TCP_PKT":      nvgre_ipv6_default_packet_type + ["INNER_L4_TCP"], 
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_SCTP_PKT":     nvgre_ipv6_default_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_ICMP_PKT":     nvgre_ipv6_default_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPFRAG_PKT":   nvgre_ipv4_vlan_packet_type + ["INNER_L4_FRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_PKT":       nvgre_ipv4_vlan_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_UDP_PKT":   nvgre_ipv4_vlan_packet_type + ["INNER_L4_UDP"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_TCP_PKT":   nvgre_ipv4_vlan_packet_type + ["INNER_L4_TCP"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_SCTP_PKT":  nvgre_ipv4_vlan_packet_type + ["INNER_L4_SCTP"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_ICMP_PKT":  nvgre_ipv4_vlan_packet_type + ["INNER_L4_ICMP"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6FRAG_PKT": nvgre_ipv6_vlan_packet_type + ["INNER_L4_FRAG"], 
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_PKT":     nvgre_ipv6_vlan_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_UDP_PKT": nvgre_ipv6_vlan_packet_type + ["INNER_L4_UDP"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_TCP_PKT": nvgre_ipv6_vlan_packet_type + ["INNER_L4_TCP"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_SCTP_PKT":nvgre_ipv6_vlan_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_ICMP_PKT":nvgre_ipv6_vlan_packet_type + ["INNER_L4_NONFRAG"]
+       		}
 
         self.run_test(pkt_types)
 
@@ -328,9 +398,13 @@ class TestUniPacket(TestCase):
         """
         checked that whether GRE tunnel packet can be normally detected by Fortville.
         """
-        self.verify(("fortville" in self.nic or "fortpark_TLV" in self.nic),
+	bind_layers(IP, GRE, frag=0, proto=IPPROTO_GRE)
+        self.verify(("fortville" in self.nic or "fortpark_TLV" in self.nic or "cavium" in self.dut.nic_type),
                     "GRE tunnel packet type detect only support by Fortville")
-        IPv4_packet_type = [" L2_ETHER", " L3_IPV4_EXT_UNKNOWN", "L4_NONFRAG"]
+	if "cavium" in self.dut.nic_type:
+        	IPv4_packet_type = ["L3_IPV4", "TUNNEL_GRE"]
+	else:
+        	IPv4_packet_type = [" L2_ETHER", " L3_IPV4_EXT_UNKNOWN", "L4_NONFRAG"]
 
         pktType = {
             "MAC_IP_GRE_IPFRAG_PKT":          IPv4_packet_type,
@@ -342,6 +416,7 @@ class TestUniPacket(TestCase):
             "MAC_IP_GRE_PKT":                 IPv4_packet_type
         }
         self.run_test(pktType)
+	split_layers(IP, GRE, frag=0, proto=IPPROTO_GRE)
 
     def test_Vxlan_tunnel(self):
         """
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 25/28] tests: unit_tests_dump - taking into account cavium NICs
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (23 preceding siblings ...)
  2017-04-10 17:09   ` [dts] [PATCH v2 24/28] tests: uni_pkt " Angela Czubak
@ 2017-04-10 17:09   ` Angela Czubak
  2017-04-10 17:09   ` [dts] [PATCH v2 26/28] tests: unit_tests_lpm - asking for lesser amount of hugepages if they are 524288kB Angela Czubak
                     ` (3 subsequent siblings)
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:09 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Testpmd must be run with hardware VLAN filter disabled as thunder
driver does not support this feature - --disable-hw-vlan-filter is
appended if NIC is Cavium device.
In test_ring_dump, matching the mbuf_pool is done against the first
element of group (instead of the last one), since it is the first group
matched.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_unit_tests_dump.py | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/tests/TestSuite_unit_tests_dump.py b/tests/TestSuite_unit_tests_dump.py
index 0ec8d78..fa09894 100644
--- a/tests/TestSuite_unit_tests_dump.py
+++ b/tests/TestSuite_unit_tests_dump.py
@@ -85,7 +85,10 @@ class TestUnitTestsDump(TestCase):
         """
         Run history log dump test case.
         """
-        self.dut.send_expect("./%s/app/testpmd -n 1 -c f -- -i" % (self.target), "testpmd>", self.start_test_time)
+	cmd = "./%s/app/testpmd -n 1 -c f -- -i"
+	if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
+        self.dut.send_expect(cmd % (self.target), "testpmd>", self.start_test_time)
         out = self.dut.send_expect("dump_ring", "testpmd>", self.run_cmd_time)
         self.dut.send_expect("quit", "# ")
         match_regex = "ring <(.*?)>@0x(.*)\r\n"
@@ -94,13 +97,16 @@ class TestUnitTestsDump(TestCase):
         
         # Nic driver will create multiple rings.
         # Only check the last one to make sure ring_dump function work.
-        self.verify( 'MP_mbuf_pool_socket_0' in result[0][-1], "dump ring name failed")
+        self.verify( 'MP_mbuf_pool_socket_0' in result[0][0], "dump ring name failed")
 
     def test_mempool_dump(self):
         """
         Run mempool dump test case.
         """
-        self.dut.send_expect("./%s/app/testpmd -n 1 -c f -- -i" % (self.target), "testpmd>", self.start_test_time)
+	cmd = "./%s/app/testpmd -n 1 -c f -- -i"
+	if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
+        self.dut.send_expect(cmd % (self.target), "testpmd>", self.start_test_time)
         out = self.dut.send_expect("dump_mempool", "testpmd>", self.run_cmd_time * 2)
         self.dut.send_expect("quit", "# ")
         match_regex = "mempool <(.*?)>@0x(.*?)\r\n"
@@ -133,7 +139,10 @@ class TestUnitTestsDump(TestCase):
         """
         Run memzone dump test case.
         """
-        self.dut.send_expect("./%s/app/testpmd -n 1 -c f -- -i" % (self.target), "testpmd>", self.start_test_time)
+	cmd = "./%s/app/testpmd -n 1 -c f -- -i"
+	if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
+        self.dut.send_expect(cmd % (self.target), "testpmd>", self.start_test_time)
         out = self.dut.send_expect("dump_memzone", "testpmd>", self.run_cmd_time * 2)
         self.dut.send_expect("quit", "# ")
 
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 26/28] tests: unit_tests_lpm - asking for lesser amount of hugepages if they are 524288kB
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (24 preceding siblings ...)
  2017-04-10 17:09   ` [dts] [PATCH v2 25/28] tests: unit_tests_dump " Angela Czubak
@ 2017-04-10 17:09   ` Angela Czubak
  2017-04-10 17:09   ` [dts] [PATCH v2 27/28] framework: Adding linkspeed parameter for Cavium NICs Angela Czubak
                     ` (2 subsequent siblings)
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:09 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Test case test_lpm_ipv6 first checks what is the hugepages size on the
DUT and then requests only 16 if the size is 524288

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_unit_tests_lpm.py | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/tests/TestSuite_unit_tests_lpm.py b/tests/TestSuite_unit_tests_lpm.py
index e8149ff..68fa3bd 100644
--- a/tests/TestSuite_unit_tests_lpm.py
+++ b/tests/TestSuite_unit_tests_lpm.py
@@ -85,9 +85,14 @@ class TestUnitTestsLpmIpv6(TestCase):
             pass
         else:
             hugepage_ori = self.dut.get_total_huge_pages()
-            self.dut.set_huge_pages(4096)
+            hugepages_size = self.dut.send_expect("awk '/Hugepagesize/ {print $2}' /proc/meminfo", "# ")
+	    if "524288" == hugepages_size:
+            	nr_hugepages = 16
+	    else:
+            	nr_hugepags = 4096
+            self.dut.set_huge_pages(nr_hugepages)
             hugepage_num = self.dut.get_total_huge_pages()
-            self.verify(hugepage_num >= 4096, "failed to request huge memory")
+            self.verify(hugepage_num >= nr_hugepages, "failed to request huge memory")
 
         self.dut.send_expect("./%s/app/test -n 1 -c f" % self.target, "R.*T.*E.*>.*>", 60)
         out = self.dut.send_expect("lpm6_autotest", "RTE>>", 3600)
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 27/28] framework: Adding linkspeed parameter for Cavium NICs
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (25 preceding siblings ...)
  2017-04-10 17:09   ` [dts] [PATCH v2 26/28] tests: unit_tests_lpm - asking for lesser amount of hugepages if they are 524288kB Angela Czubak
@ 2017-04-10 17:09   ` Angela Czubak
  2017-04-10 17:09   ` [dts] [PATCH v2 28/28] tests: pmd - Recompiling DPDK only if that is relevant Angela Czubak
  2017-04-17  8:02   ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Liu, Yong
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:09 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

If a user wants to use Cavium NICs with only one certain linkspeed,
this parameter mya be now specified in execution.cfg file (Cavium NICs
can be 10Gb/s or 40Gb/s) by typing "linkspeed=<linkspeed of the
NIC>Mb/s", for instance "linkspeed=10000Mb/s". This parameter is
optional, if skipped, DTS does try to use every Cavium NIC whose
linkspeed could be read.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 doc/dts_gsg/config.rst | 4 ++++
 framework/crb.py       | 7 ++++---
 framework/dts.py       | 5 +++++
 framework/settings.py  | 1 +
 framework/test_case.py | 7 +++++--
 5 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/doc/dts_gsg/config.rst b/doc/dts_gsg/config.rst
index abd8da7..4700421 100644
--- a/doc/dts_gsg/config.rst
+++ b/doc/dts_gsg/config.rst
@@ -181,6 +181,10 @@ First of all, you must create a file named execution.cfg as below.
 
     – perf=true run only performance test
 
+Cavium NICs may use optional parameter named linkspeed, the format is as follows: "linkspeed=<Link Speed of NIC>Mb/s"
+(for instance, "linkspeed=40000Mb/s" for 40Gb/s).
+It may be skipped if the user does not want to bind only to NICs with that specific speed.
+
 Then please add the detail information about your CRB in **conf/crbs.conf** as follows:
 
 .. code-block:: console
diff --git a/framework/crb.py b/framework/crb.py
index 63c8093..afc30ed 100644
--- a/framework/crb.py
+++ b/framework/crb.py
@@ -32,7 +32,7 @@
 import time
 import re
 import os
-from settings import TIMEOUT, IXIA
+from settings import TIMEOUT, IXIA, HOST_NIC_LINKSPEED, load_global_setting
 from ssh_connection import SSHConnection
 from logger import getLogger
 
@@ -270,9 +270,10 @@ class Crb(object):
         for i in range(len(match)):
             #check if device is cavium and check its linkspeed, append only if it is 10G
             if "177d:" in match[i][1]:
-                linkspeed = "10000"
+                linkspeed = load_global_setting(HOST_NIC_LINKSPEED)
                 nic_linkspeed = self.send_command("cat /sys/bus/pci/devices/%s/net/*/speed" % match[i][0])
-                if nic_linkspeed == linkspeed:
+		# if a user wants to bind NICs with a certain linkspeed (and checking linkspeed does not end in an error)
+                if (linkspeed == "0" and "cat" not in nic_linkspeed) or nic_linkspeed == linkspeed:
                     self.pci_devices_info.append((match[i][0], match[i][1]))
             else:
                 self.pci_devices_info.append((match[i][0], match[i][1]))
diff --git a/framework/dts.py b/framework/dts.py
index 369599d..d2e5c24 100644
--- a/framework/dts.py
+++ b/framework/dts.py
@@ -80,8 +80,13 @@ def dts_parse_param(config, section):
     # Set parameters
     parameters = config.get(section, 'parameters').split(':')
     drivername = config.get(section, 'drivername').split('=')[-1]
+    if config.has_option(section, 'linkspeed'):
+    	linkspeed = config.get(section, 'linkspeed').split('=')[-1]
+    	linkspeed = re.sub('[^0-9]+',"",linkspeed) # change '+' to '*'? so that empty is good as well
+    else: linkspeed = '0' # default
 
     settings.save_global_setting(settings.HOST_DRIVER_SETTING, drivername)
+    settings.save_global_setting(settings.HOST_NIC_LINKSPEED, linkspeed)
 
     paramDict = dict()
     for param in parameters:
diff --git a/framework/settings.py b/framework/settings.py
index 342314d..aae03a5 100644
--- a/framework/settings.py
+++ b/framework/settings.py
@@ -205,6 +205,7 @@ PERF_SETTING = "DTS_PERF_ONLY"
 FUNC_SETTING = "DTS_FUNC_ONLY"
 HOST_DRIVER_SETTING = "DTS_HOST_DRIVER"
 HOST_NIC_SETTING = "DTS_HOST_NIC"
+HOST_NIC_LINKSPEED = "DTS_HOST_NIC_LINKSPEED"
 DEBUG_SETTING = "DTS_DEBUG_ENABLE"
 DEBUG_CASE_SETTING = "DTS_DEBUGCASE_ENABLE"
 DPDK_RXMODE_SETTING = "DTS_DPDK_RXMODE"
diff --git a/framework/test_case.py b/framework/test_case.py
index d97d898..2ab1d68 100644
--- a/framework/test_case.py
+++ b/framework/test_case.py
@@ -38,7 +38,7 @@ import traceback
 import signal
 
 from exception import VerifyFailure, TimeoutException
-from settings import DRIVERS, NICS, get_nic_name, load_global_setting
+from settings import DRIVERS, NICS, get_nic_name, load_global_setting, HOST_NIC_LINKSPEED
 from settings import PERF_SETTING, FUNC_SETTING, DEBUG_SETTING, DEBUG_CASE_SETTING, HOST_DRIVER_SETTING
 from rst import RstReport
 from test_result import ResultTable, Result
@@ -366,6 +366,9 @@ class TestCase(object):
         elif nic == 'redrockcanyou':
             bitrate *= 40
         elif driver == 'thunder-nicvf':
-            bitrate *= 10
+	    if load_global_setting(HOST_NIC_LINKSPEED) == "40000":
+            	bitrate *= 40
+	    else:
+            	bitrate *= 10 # assuming it is 10 Gb
 
         return bitrate * num_ports / 8 / (frame_size + 20)
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v2 28/28] tests: pmd - Recompiling DPDK only if that is relevant
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (26 preceding siblings ...)
  2017-04-10 17:09   ` [dts] [PATCH v2 27/28] framework: Adding linkspeed parameter for Cavium NICs Angela Czubak
@ 2017-04-10 17:09   ` Angela Czubak
  2017-04-17  8:02   ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Liu, Yong
  28 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-10 17:09 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Earlier, DPDK was rebuilt everytime to achieve the maximum performance
for FVL, even though FVL might not have been used.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_pmd.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/tests/TestSuite_pmd.py b/tests/TestSuite_pmd.py
index 2d5b485..82f1e30 100644
--- a/tests/TestSuite_pmd.py
+++ b/tests/TestSuite_pmd.py
@@ -69,8 +69,9 @@ class TestPmd(TestCase,IxiaPacketGenerator):
         self.blacklist = ""
 
         # Update config file and rebuild to get best perf on FVL
-        self.dut.send_expect("sed -i -e 's/CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n/CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=y/' ./config/common_base", "#", 20)
-        self.dut.build_install_dpdk(self.target)
+	if "i40e" in self._get_nic_driver(self.dut.nic_type):
+	    self.dut.send_expect("sed -i -e 's/CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n/CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=y/' ./config/common_base", "#", 20)
+            self.dut.build_install_dpdk(self.target)
 
         # Based on h/w type, choose how many ports to use
         self.dut_ports = self.dut.get_ports()
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* Re: [dts] [PATCH v2 02/28] framework dut and project_dpdk: using correct available binding scripts
  2017-04-10 17:08   ` [dts] [PATCH v2 02/28] framework dut and project_dpdk: using correct available binding scripts Angela Czubak
@ 2017-04-17  6:35     ` Liu, Yong
  0 siblings, 0 replies; 88+ messages in thread
From: Liu, Yong @ 2017-04-17  6:35 UTC (permalink / raw)
  To: Angela Czubak, dts

Hi Angela,
I guess you're trying to make DTS compact with different versions of DPDK. Normally we handle that by creating tag on DTS code. 
There's alternative way to do that. We can get dpdk version from rte_version.h and then tools name will be explicit. 

Thanks,
Marvin


> -----Original Message-----
> From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of Angela Czubak
> Sent: Tuesday, April 11, 2017 1:09 AM
> To: dts@dpdk.org
> Cc: Angela Czubak <aczubak@caviumnetworks.com>
> Subject: [dts] [PATCH v2 02/28] framework dut and project_dpdk: using
> correct available binding scripts
> 
> Below patch makes scripts look for correct DPDK binding script,
> checking whether 'usertools' or 'tools' directory is present and which
> script exist in 'tools' directory ('dpdk-devbind.py' or
> 'dpdk_nic_bind.py')
> 
> Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
> ---
>  framework/dut.py          | 21 ++++++++++++++++++---
>  framework/project_dpdk.py | 20 ++++++++++++++++++--
>  2 files changed, 36 insertions(+), 5 deletions(-)
> 
> diff --git a/framework/dut.py b/framework/dut.py
> index 9cbdaf7..4ce5c3a 100644
> --- a/framework/dut.py
> +++ b/framework/dut.py
> @@ -377,8 +377,15 @@ class Dut(Crb):
>          if current_nic == 0:
>              self.logger.info("Not nic need bind driver: %s" % driver)
>              return
> -
> -        self.send_expect('usertools/dpdk-devbind.py %s' % binding_list,
> '# ')
> +        op = self.send_command("ls")
> +        if "usertools" in op:
> +            self.send_expect('usertools/dpdk-devbind.py %s' %
> binding_list, '# ')
> +        else:
> +            op = self.send_command("ls tools")
> +            if "dpdk_nic_bind.py" in op:
> +                self.send_expect('tools/dpdk_nic_bind.py %s' %
> binding_list, '# ')
> +            else:
> +                self.send_expect('tools/dpdk-devbind.py %s' %
> binding_list, '# ')	
> 
>      def unbind_interfaces_linux(self, nics_to_bind=None):
>          """
> @@ -402,7 +409,15 @@ class Dut(Crb):
>              self.logger.info("Not nic need unbind driver")
>              return
> 
> -        self.send_expect('usertools/dpdk-devbind.py %s' % binding_list,
> '# ', 30)
> +        op = self.send_command("ls")
> +        if "usertools" in op:
> +            self.send_expect('usertools/dpdk-devbind.py %s' %
> binding_list, '# ')
> +        else:
> +            op = self.send_command("ls tools")
> +            if "dpdk_nic_bind.py" in op:
> +                self.send_expect('tools/dpdk_nic_bind.py %s' %
> binding_list, '# ')
> +            else:
> +                self.send_expect('tools/dpdk-devbind.py %s' %
> binding_list, '# ')
> 
>      def get_ports(self, nic_type='any', perf=None, socket=None):
>          """
> diff --git a/framework/project_dpdk.py b/framework/project_dpdk.py
> index a0cb4c2..50740f8 100644
> --- a/framework/project_dpdk.py
> +++ b/framework/project_dpdk.py
> @@ -314,7 +314,15 @@ class DPDKdut(Dut):
>                  binding_list += '%s ' % (port_info['pci'])
>              current_nic += 1
> 
> -        self.send_expect('usertools/dpdk-devbind.py %s' % binding_list,
> '# ')
> +        op = self.send_command("ls")
> +        if "usertools" in op:
> +            self.send_expect('usertools/dpdk-devbind.py %s' %
> binding_list, '# ')
> +        else:
> +            op = self.send_command("ls tools")
> +            if "dpdk_nic_bind.py" in op:
> +                self.send_expect('tools/dpdk_nic_bind.py %s' %
> binding_list, '# ')
> +            else:
> +                self.send_expect('tools/dpdk-devbind.py %s' %
> binding_list, '# ')
> 
>      def unbind_interfaces_linux(self, nics_to_bind=None):
>          """
> @@ -329,7 +337,15 @@ class DPDKdut(Dut):
>                  binding_list += '%s ' % (port_info['pci'])
>              current_nic += 1
> 
> -        self.send_expect('usertools/dpdk-devbind.py %s' % binding_list,
> '# ', 30)
> +        op = self.send_command("ls")
> +        if "usertools" in op:
> +            self.send_expect('usertools/dpdk-devbind.py %s' %
> binding_list, '# ')
> +        else:
> +            op = self.send_command("ls tools")
> +            if "dpdk_nic_bind.py" in op:
> +                self.send_expect('tools/dpdk_nic_bind.py %s' %
> binding_list, '# ')
> +            else:
> +                self.send_expect('tools/dpdk-devbind.py %s' %
> binding_list, '# ')
> 
>      def build_dpdk_apps(self, folder, extra_options=''):
>          """
> --
> 2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* Re: [dts] [PATCH v2 00/28]  DTS support for Cavium NICs
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
                     ` (27 preceding siblings ...)
  2017-04-10 17:09   ` [dts] [PATCH v2 28/28] tests: pmd - Recompiling DPDK only if that is relevant Angela Czubak
@ 2017-04-17  8:02   ` Liu, Yong
  28 siblings, 0 replies; 88+ messages in thread
From: Liu, Yong @ 2017-04-17  8:02 UTC (permalink / raw)
  To: Angela Czubak, dts

Angela,
I would like to merge your patches. There're two patches look like the latter one will replace the previous one.
I can merge others first or waiting for next version with these two patches combined to one. Which choice is your preferred?

[dts] [PATCH v2 02/28] framework dut and project_dpdk: using correct available binding scripts
[dts] [PATCH v2 08/28] framework: getting DPDK binding script moved to a method in dut


Thanks,
Marvin

> -----Original Message-----
> From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of Angela Czubak
> Sent: Tuesday, April 11, 2017 1:09 AM
> To: dts@dpdk.org
> Cc: Angela Czubak <aczubak@caviumnetworks.com>
> Subject: [dts] [PATCH v2 00/28] DTS support for Cavium NICs
> 
> Changes done to run DTS for Cavium NICs
> 
> 1) Cavium devices with 177d:a034 and 177d:0011 PCI IDs are added to NICs
> list, both of which are supported by thunder-nicvf driver
> 2) When appending pci devices info, the only Cavium NICs appended are the
> ones with 10Gb/s linkspeed
> 3) For arm64 architecture the hugepage size is detected and if it is
> 524288, then lesser amount of hugepages is acquired
> 4) Created a method in Dut class for getting the right binding script (if
> someone chooses to use older DPDK version)
> 5) Checking link is done via IPv4 ping alternately, so that DUT can be a
> system without IPv6 (previously link was detected solely by checking if an
> interface obtained an IPv6 address and then by using ping6). This also
> makes force binding necessary, as those interfaces are detected as active.
> 6) Checking whether vfio-pci was loaded using lsmod can be deceptive. If
> someone decides to use DPDK on a system with modules built into the kernel,
> then this approach will fail. Instead, DPDK binding script can be used and
> if it shows that vfio-pci can be used, DTS proceeds, otherwise it send
> with an error due to a failed assertion.
> 7) Modifying tests and config for Cavium NICs
> 8) Added support for Cavium NICs to choose only cards with specified
> linkspeed
> 9) Skipping recompling DPDK in TestSuite_pmd.py if the driver is not meant
> for FVL
> 
> Changes since initial version:
> - Added support for Cavium NICs to choose only cards with specified
> linkspeed
> - Skipping recompling DPDK in TestSuite_pmd.py if the driver is not meant
> for FVL
> - Setting max-pkt-len before setting vlan stripping off in
> TestSuite_shutdown_api.py when testing jumbo frames
> 
> 
> Angela Czubak (28):
>   framework settings: Adding cavium PCI IDs and drivers
>   framework dut and project_dpdk: using correct available binding
>     scripts
>   framework dut and project_dpdk: binding smaller number of hugepages
>     for     arm64
>   framework crb: Appending only 10G devices for cavium
>   framework project_dpdk: asserting loading vfio-pci by using DPDK
>     binding script
>   framework: checking link with IPv4 ping
>   tests: ipv4_reassembly - added splitting result in tcpdump_command
>   framework: getting DPDK binding script moved to a method in dut
>   tests: Modified tests to take cavium nics into account
>   tests: checksum_offload - fixes
>   tests: dynamic_config - taking into account cavium NICs
>   tests: fdir - skipping fdir tests for Cavium NICs
>   tests: ieee1588 - skipping ieee1588_enable test for Cavium NICs
>   tests: jumboframes - skipping jumboframes tests testing bigger than
>      allowed frames for Cavium NICs
>   tests: l2fwd - fixes to run on two cards (same NIC) and expecting
>     "L2FWD: entering main loop" instead of "memory mapped"
>   tests: link_status_interrupt - skipping
>     test_link_status_interrupt_port_available for Cavium NICs
>   tests: link_status_interrupt - skipping tests verifying adding MAC
>     addresses for Cavium NICs
>   tests: pmdpcap - modifying the right config file + importing utils
>     after scapy
>   tests: pmdrssreta - skipping tests for Cavium NICs
>   tests: queue_start_stop - taking into account cavium NICs
>   tests: quota_watermark - skipping tests for Cavium NICs
>   tests: short_live - taking into account cavium NICs + fixes
>   tests: tso - taking into account cavium NICs
>   tests: uni_pkt - taking into account cavium NICs
>   tests: unit_tests_dump - taking into account cavium NICs
>   tests: unit_tests_lpm - asking for lesser amount of hugepages if they
>        are 524288kB
>   framework: Adding linkspeed parameter for Cavium NICs
>   tests: pmd - Recompiling DPDK only if that is relevant
> 
>  conf/dpdk_support_test_case.xls     | Bin 25600 -> 8704 bytes
>  conf/dpdk_test_case_checklist.xls   | Bin 31232 -> 21504 bytes
>  doc/dts_gsg/config.rst              |   4 +
>  framework/crb.py                    |  12 +-
>  framework/dts.py                    |   5 +
>  framework/dut.py                    |  52 ++++++---
>  framework/pmd_output.py             |   4 +
>  framework/project_dpdk.py           |  18 ++-
>  framework/settings.py               |   5 +
>  framework/test_capabilities.py      |   9 ++
>  framework/test_case.py              |   7 +-
>  framework/tester.py                 |  11 ++
>  nics/net_device.py                  |   8 +-
>  tests/TestSuite_checksum_offload.py |  38 +++----
>  tests/TestSuite_dynamic_config.py   |  10 +-
>  tests/TestSuite_ipv4_reassembly.py  |   2 +-
>  tests/TestSuite_l2fwd.py            |   4 +-
>  tests/TestSuite_pmd.py              |   5 +-
>  tests/TestSuite_pmdpcap.py          |  13 ++-
>  tests/TestSuite_queue_start_stop.py |   5 +-
>  tests/TestSuite_short_live.py       |  44 ++++++--
>  tests/TestSuite_shutdown_api.py     |  31 ++---
>  tests/TestSuite_tso.py              |  10 +-
>  tests/TestSuite_uni_pkt.py          | 219 ++++++++++++++++++++++++-------
> -----
>  tests/TestSuite_unit_tests_dump.py  |  17 ++-
>  tests/TestSuite_unit_tests_lpm.py   |   9 +-
>  26 files changed, 383 insertions(+), 159 deletions(-)
>  create mode 100644 framework/test_capabilities.py
> 
> --
> 2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 00/27]  DTS support for Cavium NICs
  2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
                   ` (26 preceding siblings ...)
  2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
@ 2017-04-19 12:21 ` Angela Czubak
  2017-04-19 12:21   ` [dts] [PATCH v3 01/27] framework settings: Adding cavium PCI IDs and drivers Angela Czubak
                     ` (27 more replies)
  27 siblings, 28 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:21 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Changes done to run DTS for Cavium NICs

1) Cavium devices with 177d:a034 and 177d:0011 PCI IDs are added to NICs
list, both of which are supported by thunder-nicvf driver
2) When appending pci devices info, the only Cavium NICs appended are the
ones with 10Gb/s linkspeed
3) For arm64 architecture the hugepage size is detected and if it is
524288, then lesser amount of hugepages is acquired
4) Created a method in Dut class for getting the right binding script (if
someone chooses to use older DPDK version)
5) Checking link is done via IPv4 ping alternately, so that DUT can be a
system without IPv6 (previously link was detected solely by checking if an
interface obtained an IPv6 address and then by using ping6). This also
makes force binding necessary, as those interfaces are detected as active.
6) Checking whether vfio-pci was loaded using lsmod can be deceptive. If
someone decides to use DPDK on a system with modules built into the kernel,
then this approach will fail. Instead, DPDK binding script can be used and 
if it shows that vfio-pci can be used, DTS proceeds, otherwise it send
with an error due to a failed assertion.
7) Modifying tests and config for Cavium NICs
8) Added support for Cavium NICs to choose only cards with specified
linkspeed
9) Skipping recompling DPDK in TestSuite_pmd.py if the driver is not meant
for FVL 

Changes since initial version:
- Added support for Cavium NICs to choose only cards with specified
linkspeed
- Skipping recompling DPDK in TestSuite_pmd.py if the driver is not meant
for FVL 
- Setting max-pkt-len before setting vlan stripping off in
TestSuite_shutdown_api.py when testing jumbo frames

Changes since V2: 
Merged two commits connected with binding scripts

Angela Czubak (27):
  framework settings: Adding cavium PCI IDs and drivers
  framework dut and project_dpdk: using correct available binding
    scripts
  framework dut and project_dpdk: binding smaller number of hugepages
    for     arm64
  framework crb: Appending only 10G devices for cavium
  framework project_dpdk: asserting loading vfio-pci by using DPDK    
    binding script
  framework: checking link with IPv4 ping
  tests: ipv4_reassembly - added splitting result in tcpdump_command
  tests: Modified tests to take cavium nics into account
  tests: checksum_offload - fixes
  tests: dynamic_config - taking into account cavium NICs
  tests: fdir - skipping fdir tests for Cavium NICs
  tests: ieee1588 - skipping ieee1588_enable test for Cavium NICs
  tests: jumboframes - skipping jumboframes tests testing bigger than   
     allowed frames for Cavium NICs
  tests: l2fwd - fixes to run on two cards (same NIC) and expecting    
    "L2FWD: entering main loop" instead of "memory mapped"
  tests: link_status_interrupt - skipping    
    test_link_status_interrupt_port_available for Cavium NICs
  tests: link_status_interrupt - skipping tests verifying adding MAC    
    addresses for Cavium NICs
  tests: pmdpcap - modifying the right config file + importing utils    
    after scapy
  tests: pmdrssreta - skipping tests for Cavium NICs
  tests: queue_start_stop - taking into account cavium NICs
  tests: quota_watermark - skipping tests for Cavium NICs
  tests: short_live - taking into account cavium NICs + fixes
  tests: tso - taking into account cavium NICs
  tests: uni_pkt - taking into account cavium NICs
  tests: unit_tests_dump - taking into account cavium NICs
  tests: unit_tests_lpm - asking for lesser amount of hugepages if they 
       are 524288kB
  framework: Adding linkspeed parameter for Cavium NICs
  tests: pmd - Recompiling DPDK only if that is relevant

 conf/dpdk_support_test_case.xls     | Bin 25600 -> 8704 bytes
 conf/dpdk_test_case_checklist.xls   | Bin 31232 -> 21504 bytes
 doc/dts_gsg/config.rst              |   4 +
 framework/crb.py                    |  12 +-
 framework/dts.py                    |   5 +
 framework/dut.py                    |  52 ++++++---
 framework/pmd_output.py             |   4 +
 framework/project_dpdk.py           |  25 +++-
 framework/settings.py               |   5 +
 framework/test_capabilities.py      |   9 ++
 framework/test_case.py              |   7 +-
 framework/tester.py                 |  11 ++
 nics/net_device.py                  |   8 +-
 tests/TestSuite_checksum_offload.py |  38 +++----
 tests/TestSuite_dynamic_config.py   |  10 +-
 tests/TestSuite_ipv4_reassembly.py  |   2 +-
 tests/TestSuite_l2fwd.py            |   4 +-
 tests/TestSuite_pmd.py              |   5 +-
 tests/TestSuite_pmdpcap.py          |  13 ++-
 tests/TestSuite_queue_start_stop.py |   5 +-
 tests/TestSuite_short_live.py       |  44 ++++++--
 tests/TestSuite_shutdown_api.py     |  31 ++---
 tests/TestSuite_tso.py              |  10 +-
 tests/TestSuite_uni_pkt.py          | 219 ++++++++++++++++++++++++------------
 tests/TestSuite_unit_tests_dump.py  |  17 ++-
 tests/TestSuite_unit_tests_lpm.py   |   9 +-
 26 files changed, 390 insertions(+), 159 deletions(-)
 create mode 100644 framework/test_capabilities.py

-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 01/27] framework settings: Adding cavium PCI IDs and drivers
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
@ 2017-04-19 12:21   ` Angela Czubak
  2017-04-19 12:21   ` [dts] [PATCH v3 02/27] framework dut and project_dpdk: using correct available binding scripts Angela Czubak
                     ` (26 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:21 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Below patch adds preliminary settings to support Cavium NICs.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 framework/settings.py  | 4 ++++
 framework/test_case.py | 2 ++
 2 files changed, 6 insertions(+)

diff --git a/framework/settings.py b/framework/settings.py
index 44743f9..342314d 100644
--- a/framework/settings.py
+++ b/framework/settings.py
@@ -91,6 +91,8 @@ NICS = {
     'ConnectX4': '15b3:1013',
     'boulderrapid': '8086:15d0',
     'fortville_25g': '8086:158b',
+    'cavium_a034': '177d:a034',
+    'cavium_0011': '177d:0011',
 }
 
 DRIVERS = {
@@ -136,6 +138,8 @@ DRIVERS = {
     'ConnectX4': 'mlx5_core',
     'boulderrapid': 'fm10k',
     'fortville_25g': 'i40e',
+    'cavium_a034': 'thunder-nicvf',
+    'cavium_0011': 'thunder-nicvf',
 }
 
 """
diff --git a/framework/test_case.py b/framework/test_case.py
index 270f7b9..d97d898 100644
--- a/framework/test_case.py
+++ b/framework/test_case.py
@@ -365,5 +365,7 @@ class TestCase(object):
             bitrate *= 10
         elif nic == 'redrockcanyou':
             bitrate *= 40
+        elif driver == 'thunder-nicvf':
+            bitrate *= 10
 
         return bitrate * num_ports / 8 / (frame_size + 20)
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 02/27] framework dut and project_dpdk: using correct available binding scripts
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
  2017-04-19 12:21   ` [dts] [PATCH v3 01/27] framework settings: Adding cavium PCI IDs and drivers Angela Czubak
@ 2017-04-19 12:21   ` Angela Czubak
  2017-04-19 12:21   ` [dts] [PATCH v3 03/27] framework dut and project_dpdk: binding smaller number of hugepages for arm64 Angela Czubak
                     ` (25 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:21 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Below patch makes scripts look for correct DPDK binding script,
checking whether 'usertools' or 'tools' directory is present and which
script exist in 'tools' directory ('dpdk-devbind.py' or
'dpdk_nic_bind.py'). Looking for correct pathc is done in get_dpdk_bind_script method.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 framework/dut.py          | 19 ++++++++++++++++---
 framework/project_dpdk.py |  6 ++++--
 2 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/framework/dut.py b/framework/dut.py
index 9cbdaf7..deffa1d 100644
--- a/framework/dut.py
+++ b/framework/dut.py
@@ -356,6 +356,18 @@ class Dut(Crb):
         else:
             return False
 
+    def get_dpdk_bind_script(self):
+        op = self.send_command("ls")
+        if "usertools" in op:
+            res = 'usertools/dpdk-devbind.py'
+        else:
+            op = self.send_command("ls tools")
+            if "dpdk_nic_bind.py" in op:
+                res = 'tools/dpdk_nic_bind.py'
+            else:
+                res = 'tools/dpdk-devbind.py'
+        return res
+
     def bind_interfaces_linux(self, driver='igb_uio', nics_to_bind=None):
         """
         Bind the interfaces to the selected driver. nics_to_bind can be None
@@ -377,8 +389,8 @@ class Dut(Crb):
         if current_nic == 0:
             self.logger.info("Not nic need bind driver: %s" % driver)
             return
-
-        self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ')
+        bind_script_path = self.get_dpdk_bind_script()
+        self.send_expect('%s --force %s' % (bind_script_path, binding_list), '# ')
 
     def unbind_interfaces_linux(self, nics_to_bind=None):
         """
@@ -402,7 +414,8 @@ class Dut(Crb):
             self.logger.info("Not nic need unbind driver")
             return
 
-        self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ', 30)
+        bind_script_path = self.get_dpdk_bind_script()
+        self.send_expect('%s --force %s' % (bind_script_path, binding_list), '# ')
 
     def get_ports(self, nic_type='any', perf=None, socket=None):
         """
diff --git a/framework/project_dpdk.py b/framework/project_dpdk.py
index a0cb4c2..4dc6a8c 100644
--- a/framework/project_dpdk.py
+++ b/framework/project_dpdk.py
@@ -314,7 +314,8 @@ class DPDKdut(Dut):
                 binding_list += '%s ' % (port_info['pci'])
             current_nic += 1
 
-        self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ')
+        bind_script_path = self.get_dpdk_bind_script()
+        self.send_expect('%s --force %s' % (bind_script_path, binding_list), '# ')
 
     def unbind_interfaces_linux(self, nics_to_bind=None):
         """
@@ -329,7 +330,8 @@ class DPDKdut(Dut):
                 binding_list += '%s ' % (port_info['pci'])
             current_nic += 1
 
-        self.send_expect('usertools/dpdk-devbind.py %s' % binding_list, '# ', 30)
+        bind_script_path = self.get_dpdk_bind_script()
+        self.send_expect('%s --force %s' % (bind_script_path, binding_list), '# ')
 
     def build_dpdk_apps(self, folder, extra_options=''):
         """
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 03/27] framework dut and project_dpdk: binding smaller number of hugepages for arm64
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
  2017-04-19 12:21   ` [dts] [PATCH v3 01/27] framework settings: Adding cavium PCI IDs and drivers Angela Czubak
  2017-04-19 12:21   ` [dts] [PATCH v3 02/27] framework dut and project_dpdk: using correct available binding scripts Angela Czubak
@ 2017-04-19 12:21   ` Angela Czubak
  2017-04-19 12:21   ` [dts] [PATCH v3 04/27] framework crb: Appending only 10G devices for cavium Angela Czubak
                     ` (24 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:21 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Changed default number of set hugepages from 1024 to 8 if architecture
is arm64 and huge pages size is 524288 kB.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 framework/dut.py          | 5 ++++-
 framework/project_dpdk.py | 6 +++++-
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/framework/dut.py b/framework/dut.py
index deffa1d..4a2afa2 100644
--- a/framework/dut.py
+++ b/framework/dut.py
@@ -308,7 +308,10 @@ class Dut(Crb):
             elif self.architecture == "ppc_64":
                 arch_huge_pages = hugepages if hugepages > 0 else 512
             elif self.architecture == "arm64":
-                arch_huge_pages = hugepages if hugepages > 0 else 2048
+                if hugepages_size == "524288":
+                    arch_huge_pages = hugepages if hugepages > 0 else 8
+                else:
+                    arch_huge_pages = hugepages if hugepages > 0 else 2048
 
             if total_huge_pages != arch_huge_pages:
                 # before all hugepage average distribution  by all socket,
diff --git a/framework/project_dpdk.py b/framework/project_dpdk.py
index 4dc6a8c..b9a6d4a 100644
--- a/framework/project_dpdk.py
+++ b/framework/project_dpdk.py
@@ -414,9 +414,13 @@ class DPDKtester(Tester):
 
         if not self.skip_setup:
             total_huge_pages = self.get_total_huge_pages()
+            hugepages_size = self.send_expect("awk '/Hugepagesize/ {print $2}' /proc/meminfo", "# ")
             if total_huge_pages == 0:
                 self.mount_huge_pages()
-                self.set_huge_pages(1024)
+                if hugepages_size == "524288":
+                    self.set_huge_pages(8)
+                else:
+                    self.set_huge_pages(1024)
 
             self.session.copy_file_to("dep/tgen.tgz")
             self.session.copy_file_to("dep/tclclient.tgz")
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 04/27] framework crb: Appending only 10G devices for cavium
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
                     ` (2 preceding siblings ...)
  2017-04-19 12:21   ` [dts] [PATCH v3 03/27] framework dut and project_dpdk: binding smaller number of hugepages for arm64 Angela Czubak
@ 2017-04-19 12:21   ` Angela Czubak
  2017-04-19 12:21   ` [dts] [PATCH v3 05/27] framework project_dpdk: asserting loading vfio-pci by using DPDK binding script Angela Czubak
                     ` (23 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:21 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

When collecting pci devices info in
pci_devices_information_uncached_linux devices are checked if they are
from cavium and if so linkspeed is detected to append only 10Gb
interfaces

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 framework/crb.py | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/framework/crb.py b/framework/crb.py
index 9b41a0f..63c8093 100644
--- a/framework/crb.py
+++ b/framework/crb.py
@@ -268,7 +268,14 @@ class Crb(object):
         match = pattern.findall(out)
         self.pci_devices_info = []
         for i in range(len(match)):
-            self.pci_devices_info.append((match[i][0], match[i][1]))
+            #check if device is cavium and check its linkspeed, append only if it is 10G
+            if "177d:" in match[i][1]:
+                linkspeed = "10000"
+                nic_linkspeed = self.send_command("cat /sys/bus/pci/devices/%s/net/*/speed" % match[i][0])
+                if nic_linkspeed == linkspeed:
+                    self.pci_devices_info.append((match[i][0], match[i][1]))
+            else:
+                self.pci_devices_info.append((match[i][0], match[i][1]))
 
     def pci_devices_information_uncached_freebsd(self):
         """
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 05/27] framework project_dpdk: asserting loading vfio-pci by using DPDK binding script
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
                     ` (3 preceding siblings ...)
  2017-04-19 12:21   ` [dts] [PATCH v3 04/27] framework crb: Appending only 10G devices for cavium Angela Czubak
@ 2017-04-19 12:21   ` Angela Czubak
  2017-04-19 12:21   ` [dts] [PATCH v3 06/27] framework: checking link with IPv4 ping Angela Czubak
                     ` (22 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:21 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

If one uses kernel with builtin modules lsmod does not print modules
even though they may be used. Thus, it is better to check if vfio-pci
can be bound by checking status with DPDK binding script (it appears in
unused drivers).

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 framework/project_dpdk.py | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/framework/project_dpdk.py b/framework/project_dpdk.py
index b9a6d4a..0cf8192 100644
--- a/framework/project_dpdk.py
+++ b/framework/project_dpdk.py
@@ -102,8 +102,17 @@ class DPDKdut(Dut):
             self.send_expect("rmmod vfio", "#", 70)
             self.send_expect("modprobe vfio", "#", 70)
             self.send_expect("modprobe vfio-pci", "#", 70)
-            out = self.send_expect("lsmod | grep vfio_iommu_type1", "#")
-            assert ("vfio_iommu_type1" in out), "Failed to setup vfio-pci"
+            # check with dpdk binding script instead of lsmod - kernel may have builtin modules
+            op = self.send_command("ls")
+            if "usertools" in op:
+                out = self.send_expect('usertools/dpdk-devbind.py --status', '# ')
+            else:
+                op = self.send_command("ls tools")
+                if "dpdk_nic_bind.py" in op:
+                    out = self.send_expect('tools/dpdk_nic_bind.py --status', '# ')
+                else:
+                    out = self.send_expect('tools/dpdk-devbind.py --status', '# ')
+            assert ("vfio-pci" in out), "Failed to setup vfio-pci"
         else:
             self.send_expect("modprobe uio", "#", 70)
             out = self.send_expect("lsmod | grep igb_uio", "#")
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 06/27]  framework: checking link with IPv4 ping
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
                     ` (4 preceding siblings ...)
  2017-04-19 12:21   ` [dts] [PATCH v3 05/27] framework project_dpdk: asserting loading vfio-pci by using DPDK binding script Angela Czubak
@ 2017-04-19 12:21   ` Angela Czubak
  2017-04-19 12:22   ` [dts] [PATCH v3 07/27] tests: ipv4_reassembly - added splitting result in tcpdump_command Angela Czubak
                     ` (21 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:21 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Some kernels may not use IPv6 and hence there is no point using ping6.
If lack of link by IPv6 is detected then IPv4 pings are sent
(previously ports where skipped if they had no IPv6 connectivity).
DPDK binding script uses "--force" argument, since interfaces are
detected as active.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 framework/dut.py    | 28 +++++++++++++++++++---------
 framework/tester.py | 11 +++++++++++
 nics/net_device.py  |  8 ++++----
 3 files changed, 34 insertions(+), 13 deletions(-)

diff --git a/framework/dut.py b/framework/dut.py
index 4a2afa2..3e90670 100644
--- a/framework/dut.py
+++ b/framework/dut.py
@@ -600,7 +600,12 @@ class Dut(Crb):
             if ":" not in ipv6:
                 ipv6 = "Not connected"
 
+            out = self.send_expect("ip -family inet address show dev %s | awk '/inet/ { print $2 }'"
+                    % intf, "# ")
+            ipv4 = out.split('/')[0]
+
             port_info['ipv6'] = ipv6
+            port_info['ipv4'] = ipv4
 
     def rescan_ports_uncached_freebsd(self):
         unknow_interface = RED('Skipped: unknow_interface')
@@ -920,15 +925,20 @@ class Dut(Crb):
                 # skip ping those not connected port
                 ipv6 = self.get_ipv6_address(dutPort)
                 if ipv6 == "Not connected":
-                    continue
-
-                if getattr(self, 'send_ping6', None):
-                    out = self.send_ping6(
-                        dutPort, self.tester.ports_info[remotePort]['ipv6'],
-                        self.get_mac_address(dutPort))
-                else:
-                    out = self.tester.send_ping6(
-                        remotePort, ipv6, self.get_mac_address(dutPort))
+                    if self.tester.ports_info[remotePort].has_key('ipv4'):
+			out = self.tester.send_ping(
+				dutPort, self.tester.ports_info[remotePort]['ipv4'],
+				self.get_mac_address(dutPort))
+		    else:
+                    	continue
+		else:
+                    if getattr(self, 'send_ping6', None):
+                    	out = self.send_ping6(
+                        	dutPort, self.tester.ports_info[remotePort]['ipv6'],
+                        	self.get_mac_address(dutPort))
+                    else:
+                    	out = self.tester.send_ping6(
+				remotePort, ipv6, self.get_mac_address(dutPort))
 
                 if ('64 bytes from' in out):
                     self.logger.info("PORT MAP: [dut %d: tester %d]" % (dutPort, remotePort))
diff --git a/framework/tester.py b/framework/tester.py
index d793e91..5cf5e00 100644
--- a/framework/tester.py
+++ b/framework/tester.py
@@ -336,6 +336,7 @@ class Tester(Crb):
             macaddr = port.get_mac_addr()
 
             ipv6 = port.get_ipv6_addr()
+            ipv4 = port.get_ipv4_addr()
 
             # store the port info to port mapping
             self.ports_info.append({'port': port,
@@ -343,6 +344,7 @@ class Tester(Crb):
                                     'type': pci_id,
                                     'intf': intf,
                                     'mac': macaddr,
+				    'ipv4': ipv4,
                                     'ipv6': ipv6})
 
             # return if port is not connect x3
@@ -364,6 +366,15 @@ class Tester(Crb):
                                     'mac': macaddr,
                                     'ipv6': ipv6})
 
+    def send_ping(self, localPort, ipv4, mac):
+        """
+        Send ping6 packet from local port with destination ipv4 address.
+        """
+        if self.ports_info[localPort]['type'] == 'ixia':
+            return "Not implemented yet"
+        else:
+            return self.send_expect("ping -w 5 -c 5 -A -I %s %s" % (self.ports_info[localPort]['intf'], ipv4), "# ", 10)
+
     def send_ping6(self, localPort, ipv6, mac):
         """
         Send ping6 packet from local port with destination ipv6 address.
diff --git a/nics/net_device.py b/nics/net_device.py
index 0af4ad5..4861145 100644
--- a/nics/net_device.py
+++ b/nics/net_device.py
@@ -343,21 +343,21 @@ class NetDevice(object):
         """
         get_ipv4_addr = getattr(
             self, 'get_ipv4_addr_%s' % self.__get_os_type())
-        return get_ipv4_addr(self.intf_name, self.currenct_driver)
+        return get_ipv4_addr(self.intf_name, self.current_driver)
 
     def get_ipv4_addr_linux(self, intf, driver):
         """
         Get ipv4 address of specified pci device on linux.
         """
         try:
-            get_ipv4_addr_linux = getattr(self, 'get_ipv4_linux_%s' % driver)
+            get_ipv4_addr_linux = getattr(self, 'get_ipv4_addr_linux_%s' % driver)
         except Exception as e:
             generic_driver = 'generic'
             get_ipv4_addr_linux = getattr(
-                self, 'get_ipv4_linux_%s' %
+                self, 'get_ipv4_addr_linux_%s' %
                 generic_driver)
 
-        return get_ipv4_addr_linux(intf, domain_id, bus_id, devfun_id, driver)
+        return get_ipv4_addr_linux(intf)
 
     def get_ipv4_addr_linux_generic(self, intf):
         """
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 07/27] tests: ipv4_reassembly - added splitting result in tcpdump_command
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
                     ` (5 preceding siblings ...)
  2017-04-19 12:21   ` [dts] [PATCH v3 06/27] framework: checking link with IPv4 ping Angela Czubak
@ 2017-04-19 12:22   ` Angela Czubak
  2017-04-19 12:22   ` [dts] [PATCH v3 08/27] tests: Modified tests to take cavium nics into account Angela Czubak
                     ` (20 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:22 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Result from tcpdump_command may contain something more than only number,
added splitting and taking first element of this operation so that
casting to int proceeds

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_ipv4_reassembly.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/TestSuite_ipv4_reassembly.py b/tests/TestSuite_ipv4_reassembly.py
index 3f0e725..8f28823 100644
--- a/tests/TestSuite_ipv4_reassembly.py
+++ b/tests/TestSuite_ipv4_reassembly.py
@@ -257,7 +257,7 @@ class TestIpReassembly(TestCase):
         """
 
         result = self.tester.send_expect(command, '#')
-        return int(result.strip())
+        return int(result.strip().split()[0])
 
     def number_of_received_packets(self, tcp_port):
         """
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 08/27] tests: Modified tests to take cavium nics into account
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
                     ` (6 preceding siblings ...)
  2017-04-19 12:22   ` [dts] [PATCH v3 07/27] tests: ipv4_reassembly - added splitting result in tcpdump_command Angela Czubak
@ 2017-04-19 12:22   ` Angela Czubak
  2017-04-19 12:22   ` [dts] [PATCH v3 09/27] tests: checksum_offload - fixes Angela Czubak
                     ` (19 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:22 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Testpmd should be run with hardware vlan filter disabled for cavium
nics as the driver does not offer this kind of capability and the
application stops at the beginning, so if cavium nic is used the
--disable-hw-vlan-filter flag is added.
Shutdown api test is also modified so as to skip disabling jumbo frames
mixed with vlan if hardware-assisted VLAN filtering not
configured (rte_eth_dev_set_vlan_offload return -ENOTSUP + there is
"failed diag" in the tespmd output).
Tests to be skipped for cavium nics are added to
conf/dpdk_test_case_checklist.xls

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 31232 -> 19968 bytes
 framework/pmd_output.py           |   4 ++++
 tests/TestSuite_pmdpcap.py        |   4 ++++
 tests/TestSuite_short_live.py     |   6 +++---
 tests/TestSuite_shutdown_api.py   |  31 ++++++++++++++++---------------
 5 files changed, 27 insertions(+), 18 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index 67970e9e42cbec51c8bde0c2d7121844cb0cf2f8..0345762f0c894145ac84f35bb41467462f443c6c 100644
GIT binary patch
literal 19968
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
J<@r42{|~TFqW1s*

literal 31232
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

diff --git a/framework/pmd_output.py b/framework/pmd_output.py
index e8e2a2c..f52332b 100644
--- a/framework/pmd_output.py
+++ b/framework/pmd_output.py
@@ -119,6 +119,10 @@ class PmdOutput():
         self.coremask = create_mask(core_list)
         command = "./%s/app/testpmd -c %s -n %d %s -- -i %s" \
             % (self.dut.target, self.coremask, self.dut.get_memory_channels(), eal_param, param)
+        if "cavium" in self.dut.nic_type:
+            # thunder nicvf does not support hw vlan filter, the application crashes
+            # without this option added
+            command += " --disable-hw-vlan-filter"
         out = self.dut.send_expect(command, "testpmd> ", 120)
         self.command = command
         return out
diff --git a/tests/TestSuite_pmdpcap.py b/tests/TestSuite_pmdpcap.py
index a080dd0..0a79e96 100644
--- a/tests/TestSuite_pmdpcap.py
+++ b/tests/TestSuite_pmdpcap.py
@@ -124,6 +124,8 @@ class TestPmdPcap(TestCase):
         command = ("./{}/app/testpmd -c {} -n {} " +
                    "--vdev=eth_pcap0,rx_pcap={},tx_pcap={} " +
                    "-- -i --port-topology=chained")
+        if "cavium" in self.dut.nic_type:
+            command += " --disable-hw-vlan-filter"
 
         self.dut.send_expect(command.format(self.target, core_mask,
                              self.memory_channel,
@@ -158,6 +160,8 @@ class TestPmdPcap(TestCase):
                    "--vdev=eth_pcap0,rx_pcap={},tx_pcap={} " +
                    "--vdev=eth_pcap1,rx_pcap={},tx_pcap={} " +
                    "-- -i")
+        if "cavium" in self.dut.nic_type:
+            command += " --disable-hw-vlan-filter"
 
         self.dut.send_expect(command.format(self.target, core_mask,
                                             self.memory_channel,
diff --git a/tests/TestSuite_short_live.py b/tests/TestSuite_short_live.py
index 320951f..72745a9 100644
--- a/tests/TestSuite_short_live.py
+++ b/tests/TestSuite_short_live.py
@@ -125,7 +125,7 @@ class TestShortLiveApp(TestCase):
         Basic rx/tx forwarding test
         """
         #dpdk start
-        self.dut.send_expect("./x86_64-native-linuxapp-gcc/app/testpmd -c 0xf -n 4 -- -i --portmask=0x3", "testpmd>", 120)
+        self.dut.send_expect("./%s/app/testpmd -c 0xf -n 4 -- -i --portmask=0x3" % self.target, "testpmd>", 120)
         self.dut.send_expect("set fwd mac", "testpmd>")
         self.dut.send_expect("set promisc all off", "testpmd>")
         self.dut.send_expect("start", "testpmd>")
@@ -137,7 +137,7 @@ class TestShortLiveApp(TestCase):
         """
         time = []
         regex = re.compile(".* (\d+:\d{2}\.\d{2}).*")
-        out = self.dut.send_expect("echo quit | time ./x86_64-native-linuxapp-gcc/app/testpmd -c 0x3 -n 4 --no-pci -- -i", "#", 120)
+        out = self.dut.send_expect("echo quit | time ./%s/app/testpmd -c 0x3 -n 4 --no-pci -- -i" % self.target, "#", 120)
         time = regex.findall(out)
 
         if time != []:
@@ -150,7 +150,7 @@ class TestShortLiveApp(TestCase):
         for i in range(repeat_time):
             #dpdk start
             print "clean_up_with_signal_testpmd round %d" % (i + 1)
-            self.dut.send_expect("./x86_64-native-linuxapp-gcc/app/testpmd -c 0xf -n 4 -- -i --portmask=0x3", "testpmd>", 120)
+            self.dut.send_expect("./%s/app/testpmd -c 0xf -n 4 -- -i --portmask=0x3" % self.target, "testpmd>", 120)
             self.dut.send_expect("set fwd mac", "testpmd>")
             self.dut.send_expect("set promisc all off", "testpmd>")
             self.dut.send_expect("start", "testpmd>")
diff --git a/tests/TestSuite_shutdown_api.py b/tests/TestSuite_shutdown_api.py
index 66219f5..c497652 100644
--- a/tests/TestSuite_shutdown_api.py
+++ b/tests/TestSuite_shutdown_api.py
@@ -332,25 +332,26 @@ class TestShutdownApi(TestCase):
         jumbo_size = 2048
         self.pmdout.start_testpmd("Default", "--portmask=%s --port-topology=loop" % utils.create_mask(self.ports), socket=self.ports_socket)
         self.dut.send_expect("port stop all", "testpmd> ", 100)
-        self.dut.send_expect("vlan set strip off all", "testpmd> ")
         self.dut.send_expect("port config all max-pkt-len %d" % jumbo_size, "testpmd> ")
-        for port in self.ports:
-            self.dut.send_expect("rx_vlan add 1 %d" % port, "testpmd> ")
-        self.dut.send_expect("set fwd mac", "testpmd>")
-        self.dut.send_expect("port start all", "testpmd> ", 100)
-        self.dut.send_expect("start", "testpmd> ")
+        out = self.dut.send_expect("vlan set strip off all", "testpmd> ")
+        if "fail" not in out:
+            for port in self.ports:
+                self.dut.send_expect("rx_vlan add 1 %d" % port, "testpmd> ")
+            self.dut.send_expect("set fwd mac", "testpmd>")
+            self.dut.send_expect("port start all", "testpmd> ", 100)
+            self.dut.send_expect("start", "testpmd> ")
 
-        if self.nic in ['magnolia_park', 'niantic', 'twinpond', 'kawela_4', 'ironpond', 'springfountain', 'springville', 'powerville']:
-            # nantic vlan length will not be calculated
-            vlan_jumbo_size = jumbo_size + 4
-        else:
-            vlan_jumbo_size = jumbo_size
+            if self.nic in ['magnolia_park', 'niantic', 'twinpond', 'kawela_4', 'ironpond', 'springfountain', 'springville', 'powerville']:
+                # nantic vlan length will not be calculated
+                vlan_jumbo_size = jumbo_size + 4
+            else:
+                vlan_jumbo_size = jumbo_size
 
-        self.check_forwarding(pktSize=vlan_jumbo_size - 1, vlan=True)
-        self.check_forwarding(pktSize=vlan_jumbo_size, vlan=True)
-        self.check_forwarding(pktSize=vlan_jumbo_size + 1, received=False, vlan=True)
+            self.check_forwarding(pktSize=vlan_jumbo_size - 1, vlan=True)
+            self.check_forwarding(pktSize=vlan_jumbo_size, vlan=True)
+            self.check_forwarding(pktSize=vlan_jumbo_size + 1, received=False, vlan=True)
 
-        self.dut.send_expect("stop", "testpmd> ")
+            self.dut.send_expect("stop", "testpmd> ")
 
         self.dut.send_expect("port stop all", "testpmd> ", 100)
         self.dut.send_expect("port config all hw-vlan off", "testpmd> ")
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 09/27]  tests: checksum_offload - fixes
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
                     ` (7 preceding siblings ...)
  2017-04-19 12:22   ` [dts] [PATCH v3 08/27] tests: Modified tests to take cavium nics into account Angela Czubak
@ 2017-04-19 12:22   ` Angela Czubak
  2017-04-19 12:22   ` [dts] [PATCH v3 10/27] tests: dynamic_config - taking into account cavium NICs Angela Czubak
                     ` (18 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:22 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Sniffing packets with scapy seems to fail, switched to tcpdump.
Taken into account capabilities of Cavium nics, created
framework/test_capabilities.py to contain information useful when
skipping not applicable parts of tests.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls   | Bin 19968 -> 19968 bytes
 framework/test_capabilities.py      |   9 +++++++++
 tests/TestSuite_checksum_offload.py |  38 +++++++++++++++++-------------------
 3 files changed, 27 insertions(+), 20 deletions(-)
 create mode 100644 framework/test_capabilities.py

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index 0345762f0c894145ac84f35bb41467462f443c6c..5811198e687c2a63cf326b7ca378849b0a3e2038 100644
GIT binary patch
delta 429
zcmZpe!`Lu~aYH+onyD}Y5U?=>XQZZ<7`8I-F;rV1i5P)IByA?I<(j~LnU{}=fuUft
z3pY0_W94K=UhB!-0{X1+i3Y|dlXnS7Ge&~ML^6x=^9u6wQgo6N%Q8!IA<_zh3XB1h
z9R(es%9{i=7|kcI7Sw?7H(wU~#A+_iz)(~XpPZ4JoLvmmSeBTRnG&CtlbBu%ltD5L
zX0m~Sp`ii;!{h`Bg~>0(pD`9}J};5Q$e6s@N~&Cmm4iuuA!+g=o7uL18MqjdfS%%K
z$O4iO9wU&)4(BledD(CtGqT)d6We5ESD>5&5W|2hPz7@`n8(PF41^2}n|ImnXJpKo
zTxIVHBoEkYGUiTxWiQQ`H<`@=B;o@mCjrU)%{Ls{m^Qf_VdgajYIFeNhHNE$iOCn;
b<=Hk{&HkyfYV$XDCT6DDwwr%>u`vSxrIT*u

delta 303
zcmZpe!`Lu~aYH+o+FKz8AYfw%&PYuyF>GbvW4LLKBw_>-DYu@ymTLlgH!mj>14G_s
z7jAA=#*)d7yw;Pu1@tHH7m#KQ0rSKJ`6p`$DlmG3cx=guWtpY9lP3ylFd9wH6IOx>
zY<@2IiFGrt1Scb7-ez&hEJntp$r1LAo0+A*DNg3K?U{VvHcA=f0tXNQ1+onM49o%y
zK<gP883cfkiD`3;-F`;KtjRJCuKZa*@xKgQV0m!{o5>qwr5Up)p8=9NlUF#n0#&^O
zlO~R?jJcbu9NU;CPw-f@$>j($uQ5=o0}wOZVmrh>`J%f#Tg9}vS&Noz{^ria%=FV{
J^Di$pW&p}<P%8ic

diff --git a/framework/test_capabilities.py b/framework/test_capabilities.py
new file mode 100644
index 0000000..2ad3fae
--- /dev/null
+++ b/framework/test_capabilities.py
@@ -0,0 +1,9 @@
+#this structure will be used to determine which parts of tests should be skipped
+"""
+Dict used to skip parts of tests if NIC is known not to support them
+"""
+DRIVER_TEST_LACK_CAPA = {
+	'sctp_tx_offload' : ['thunder-nicvf', 'fm10k']
+}
+
+
diff --git a/tests/TestSuite_checksum_offload.py b/tests/TestSuite_checksum_offload.py
index 9b9015d..54e5001 100644
--- a/tests/TestSuite_checksum_offload.py
+++ b/tests/TestSuite_checksum_offload.py
@@ -43,7 +43,8 @@ import utils
 
 from test_case import TestCase
 from pmd_output import PmdOutput
-
+from packet import Packet, sniff_packets, load_sniff_packets, strip_pktload
+from test_capabilities import DRIVER_TEST_LACK_CAPA
 
 class TestChecksumOffload(TestCase):
 
@@ -169,21 +170,16 @@ class TestChecksumOffload(TestCase):
 
         self.tester.send_expect("exit()", "#")
 
-        self.tester.scapy_background()
-        self.tester.scapy_append('p = sniff(filter="ether src %s", iface="%s", count=%d)' % (sniff_src, rx_interface, len(packets_sent)))
-        self.tester.scapy_append('nr_packets=len(p)')
-        self.tester.scapy_append('reslist = [p[i].sprintf("%IP.chksum%;%TCP.chksum%;%UDP.chksum%;%SCTP.chksum%") for i in range(nr_packets)]')
-        self.tester.scapy_append('import string')
-        self.tester.scapy_append('RESULT = string.join(reslist, ",")')
-
-        # Send packet.
-        self.tester.scapy_foreground()
+        inst = sniff_packets(intf=rx_interface, count=len(packets_sent), filters=[{'layer':'ether', 'config':{'src': sniff_src}}])
 
         for packet_type in packets_sent.keys():
             self.tester.scapy_append('sendp([%s], iface="%s")' % (packets_sent[packet_type], tx_interface))
 
         self.tester.scapy_execute()
-        out = self.tester.scapy_get_result()
+	p = load_sniff_packets(inst)
+	nr_packets=len(p)
+	reslist = [p[i].pktgen.pkt.sprintf("%IP.chksum%;%TCP.chksum%;%UDP.chksum%;%SCTP.chksum%") for i in range(nr_packets)]
+	out = string.join(reslist, ",")
         packets_received = out.split(',')
         self.verify(len(packets_sent) == len(packets_received), "Unexpected Packets Drop")
 
@@ -223,7 +219,7 @@ class TestChecksumOffload(TestCase):
 
         pktsChkErr = {'IP/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IP(chksum=0x0)/UDP(chksum=0xf)/("X"*46)' % mac,
                       'IP/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IP(chksum=0x0)/TCP(chksum=0xf)/("X"*46)' % mac,
-                      'IP/SCTP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IP(chksum=0x0)/SCTP(chksum=0xf)/("X"*48)' % mac,
+		      'IP/SCTP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IP(chksum=0x0)/SCTP(chksum=0xf)/("X"*48)' % mac,
                       'IPv6/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IPv6(src="::1")/UDP(chksum=0xf)/("X"*46)' % mac,
                       'IPv6/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/Dot1Q(vlan=1)/IPv6(src="::1")/TCP(chksum=0xf)/("X"*46)' % mac}
 
@@ -233,7 +229,7 @@ class TestChecksumOffload(TestCase):
                 'IPv6/UDP': 'Ether(dst="02:00:00:00:00:00", src="%s")/Dot1Q(vlan=1)/IPv6(src="::1")/UDP()/("X"*46)' % mac,
                 'IPv6/TCP': 'Ether(dst="02:00:00:00:00:00", src="%s")/Dot1Q(vlan=1)/IPv6(src="::1")/TCP()/("X"*46)' % mac}
 
-        if self.kdriver == "fm10k":
+        if self.kdriver in DRIVER_TEST_LACK_CAPA['sctp_tx_offload']:
             del pktsChkErr['IP/SCTP']
             del pkts['IP/SCTP']
 
@@ -258,11 +254,8 @@ class TestChecksumOffload(TestCase):
                     'IPv6/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6(src="::1")/TCP()/("X"*46)' % mac}
 
         result = dict()
-        if self.kdriver == "fm10k":
-            del pkts['IP/SCTP']
-            del pkts_ref['IP/SCTP']
-
-        self.checksum_enablehw(self.dut_ports[0])
+        
+	self.checksum_enablehw(self.dut_ports[0])
 
         # get the packet checksum value
         result = self.get_chksum_values(pkts_ref)
@@ -281,6 +274,11 @@ class TestChecksumOffload(TestCase):
                     'IPv6/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6(src="::1")/UDP(chksum=0xf)/("X"*46)' % mac,
                     'IPv6/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6(src="::1")/TCP(chksum=0xf)/("X"*46)' % mac}
 
+	if self.kdriver in DRIVER_TEST_LACK_CAPA['sctp_tx_offload']:
+            del pkts_good['IP/SCTP']
+            del pkts_bad['IP/SCTP']
+            del pkts_ref['IP/SCTP']
+
         # send the packet checksum value same with the expected value
         self.checksum_valid_flags(pkts_good, 1)
         # send the packet checksum value different from the expected value
@@ -307,7 +305,7 @@ class TestChecksumOffload(TestCase):
                     'IPv6/UDP': 'Ether(dst="02:00:00:00:00:00", src="%s")/IPv6(src="::1")/UDP()/("X"*46)' % mac,
                     'IPv6/TCP': 'Ether(dst="02:00:00:00:00:00", src="%s")/IPv6(src="::1")/TCP()/("X"*46)' % mac}
 
-        if self.kdriver == "fm10k":
+        if self.kdriver in DRIVER_TEST_LACK_CAPA['sctp_tx_offload']:
             del pkts['IP/SCTP']
             del pkts_ref['IP/SCTP']
 
@@ -396,7 +394,7 @@ class TestChecksumOffload(TestCase):
                 'IPv6/UDP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6()/UDP()/("X"* (lambda x: x - 66 if x > 66 else 0)(%d))',
                 'IPv6/TCP': 'Ether(dst="%s", src="52:00:00:00:00:00")/IPv6()/TCP()/("X"* (lambda x: x - 78 if x > 78 else 0)(%d))'}
 
-        if self.kdriver == "fm10k":
+        if self.kdriver in DRIVER_TEST_LACK_CAPA['sctp_tx_offload']:
             del pkts['IP/SCTP']
 
         lcore = "1S/2C/1T"
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 10/27] tests: dynamic_config - taking into account cavium NICs
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
                     ` (8 preceding siblings ...)
  2017-04-19 12:22   ` [dts] [PATCH v3 09/27] tests: checksum_offload - fixes Angela Czubak
@ 2017-04-19 12:22   ` Angela Czubak
  2017-04-19 12:22   ` [dts] [PATCH v3 11/27] tests: fdir - skipping fdir tests for Cavium NICs Angela Czubak
                     ` (17 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:22 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Testpmd must be run with hardware VLAN filter disabled as thunder
driver does not support this feature.
Since disabling promiscuous and allmulticast is not supported for
thunder driver following test cases are set to be skipped:
dynamic_config_broadcast, dynamic_config_disable_promiscuous,
dynamic_config_allmulticast

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 19968 -> 20480 bytes
 tests/TestSuite_dynamic_config.py |  10 ++++++++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index 5811198e687c2a63cf326b7ca378849b0a3e2038..7e42bbeba1c9414cf3cde5f0220c9b3e049c57cc 100644
GIT binary patch
delta 634
zcmZvZF)Ra77{|YNM@y-bh^SP9q7w-sq)DqMG^DGAMRV@naeD31YX_EAq^y-^V=!7I
zc#Byq#A30VY&MI8dUvX>;U(Y8`~Sc1`@Qew6;Dv{6qQH4Lr`7q0Kv=XEZ5o3jL%A?
zV#Q$f9HNI@3SBiExI(1EYH-2gI>x!N612ff*x`&@PAN*xJ!SV;TYv*F>0HZQ>xvIR
z+0IC5O-{;2M%C7mt64)*WXa40|D+VnlvZ_|+{_wj&6M*--t_+|l5{<t*K?YMpk7}y
zLMH9%-atqtOR-(b`#r&tCaxW1d){GWO$kT<%TxaGF!_u;7e2sacL<=fns0?b0C!Ds
zOr>gyugf(u)l$t_cL<QKDJMk%Cq;o8CBd#&z=^>&CR4>=aAI&B2LECh1(T<!+?QZ|
zB8#6DU?cIWtq`c7(&gzJgbdOn#s!1f)`QunK^H{GMZk|X$phQB$e9>tRj>9wF%w5w
zx-+xSk@CXP)!Z%bonkE_i{gD)8YGYNy^Y7u*Wx67n=f!^faDW<oI6I}6E6M>dj^mz

delta 264
zcmZozz}PT{ae@J_3Ih}fFfb@?v~^|@{P+L=e-Ks%N`Pq9&5CaMjGI{6+0;yhL5kTJ
zf-_Q6OAK2X_!z1!kVK3?B9b<f*K$o@zs$?W#K2In*@gQg&*p3iPDaLp&83oAjEu>f
zA4qj8O<rz$X|lI{l!7ZzzXQk&D3E2~XJAeSa~K(t8Im_2wLiqjm@~P<(G^IZbJS$a
zovbA%&6qb?#0ex41tu2&$^6aFoZ6T+xgBBVH3jN-0OE#hC4Gs>7d_=!H(SmAsj~U2
WXFU_6(&SQ~W~SM;n}7MRF#`ax(o2W{

diff --git a/tests/TestSuite_dynamic_config.py b/tests/TestSuite_dynamic_config.py
index 1ba6dd4..b4ddede 100644
--- a/tests/TestSuite_dynamic_config.py
+++ b/tests/TestSuite_dynamic_config.py
@@ -74,9 +74,12 @@ class TestDynamicConfig(TestCase):
         self.portMask = utils.create_mask(self.dut_ports[:2])
 
         # launch app
-        cmd = "./%s/build/app/test-pmd/testpmd -c %s -n 3 -- -i --rxpt=0 \
+        cmd = "./%s/app/testpmd -c %s -n 3 -- -i --rxpt=0 \
         --rxht=0 --rxwt=0 --txpt=39 --txht=0 --txwt=0 --portmask=%s" % (self.target, self.coreMask, self.portMask)
 
+	if "cavium" in self.dut.nic_type:
+            cmd += " --disable-hw-vlan-filter"
+
         self.dut.send_expect("%s" % cmd, "testpmd> ", 120)
 
         # get dest address from self.target port
@@ -112,9 +115,12 @@ class TestDynamicConfig(TestCase):
         """
         Run before each test case.
         """
-        cmd = "./%s/build/app/test-pmd/testpmd -c %s -n 3 -- -i --rxpt=0 \
+        cmd = "./%s/app/testpmd -c %s -n 3 -- -i --rxpt=0 \
         --rxht=0 --rxwt=0 --txpt=39 --txht=0 --txwt=0 --portmask=%s" % (self.target, self.coreMask, self.portMask)
 
+	if "cavium" in self.dut.nic_type:
+            cmd += " --disable-hw-vlan-filter"
+
         self.dut.send_expect("%s" % cmd, "testpmd> ", 120)
         self.dut.send_expect("start", "testpmd> ", 120)
 
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 11/27] tests: fdir - skipping fdir tests for Cavium NICs
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
                     ` (9 preceding siblings ...)
  2017-04-19 12:22   ` [dts] [PATCH v3 10/27] tests: dynamic_config - taking into account cavium NICs Angela Czubak
@ 2017-04-19 12:22   ` Angela Czubak
  2017-04-19 12:22   ` [dts] [PATCH v3 12/27] tests: ieee1588 - skipping ieee1588_enable test " Angela Czubak
                     ` (16 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:22 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Cavium NICs do not support dlow director, therefore they are added to
following tests in conf/dpdk_test_case_checklist.xls:
-fdir_flexword_drop_ipv4
-fdir_flexword_drop_ipv6
-fdir_flexword_fwd_ipv4
-fdir_flexword_fwd_ipv6
-fdir_noflexword_drop_ipv4
-fdir_noflexword_drop_ipv6
-fdir_noflexword_fwd_ipv4
-fdir_noflexword_fwd_ipv6

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 20480 -> 20480 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index 7e42bbeba1c9414cf3cde5f0220c9b3e049c57cc..338d7c61a93ba64ee6dea91a6af126f5c2be851f 100644
GIT binary patch
delta 2029
zcmY+FOK%%h6oAjQn*`j-69}3lxQ=Kjg2}UKl8&AD{YdO!62}f9&7)14hKACVl9)v|
zRU}k(14#5pQN=1^#iFVrjJkvc5h?{Cen5q~s=7ifPz4Jl&OIH^+&k91zWbds_i<*t
zyDxV4#lfw>8-KO|ZOu^K+}NlM-Gm@y#uRc|lE-*A@MX(q!LSdYR?i)^UJwg-wJn47
z){fv&fNNV9w|92VZ*SDraH}m_|Gw>hlc?1{>8!jYqWGZ43d@xLK>*$Y0S2_VcRsp{
zVzAc|;~43+jhNHYLuUixctc^m%o2F0us&u<4D@-i{mfEWR@eZuH0~*EkXZ&FDeM%p
zEOz&M`G%O~a8qHYndR|bzunvD^Dr?JCg><fI;@R!801JNv30-_1sod)i6YL^^%U+7
z*v8vV%o#ejLkWK(_Kw4BI(NV{9vig6GcId_PAEHf5jJMAq8JfSjVK!xyfc^=Rs4gF
zb9nNUmv3CN<#-Ip;AO>#vGK0+#5fySJW!0dW+d3i;WNcZXhxEaJjRABqcN`JbE94x
z`rIex(Kq6CF~v=dA*U(WgaQ^u@*;&_j9BZ96dBFSlGgzhI?5%<YD<#kC3(+n^V6Uk
zS+ZJ|9A~NGtD~WC!_R^0=brmm8MWV(IfSnn@^FOuD4(0BRudMSC&>aaVGIvOE!UlJ
z-3iT|WcTdtGoCu>s*{>pV0978id%5qg60<4UBZ3EExK+|bEnu{#=jJI%5|qSSJtr!
zOPI1lVg;9NE4)lZPC-eV`Vvq53Vv-{ViA93`zc+Y!<Qr8l223aPB`ymkkcxcd?Dh^
z#f;mJ8Sclb<H|BIVI03v+_LMIHFuWXIR2x!v#vX<xw4Q<NMj-D^`YXr70s=(o5DMa
zTXo&4=FYL3#HWfo=el#6E8jsA)-W>WeWB)w8E^q_C`=Zr3F~;MFj;~oT*Sb*7kif3
z29_1J$n1UGQ`i!-X?&zGxw<A?!tR)tZ-tlvo4Bd4bL>^{p2Fn1noz~RW44H4U;JkH
z10u3kR<&AL<ywj2Z*ePp*)i5MW6d#MNm$}TOe8|$3N9wB@Rnn*YxX+ZS8$)~tN4)Z
zCv^Q0wkBm{U-J6vFH&TR_Qn>b5&2J0Aiddef_^?<{Xz1Upig-@Z5!8!%Z>{=w^P~e
zDNM$+(;r!|D<nR~p01Fw?bv>9Nn>}$%W#BQ62IyS;isA7ZssQDm+&$1pEJkBPW?&d
r2j907hyG*o>z|?>e!2Z4{$6~o`MZbLOO?CzXGNc1T&VwBYVrRM=}}n^

delta 1897
zcmY+FOKclO9LE1+H%Svi7L;n!$aTU~XmMl5CC%E7-|I)5)Jc<2XzPU5G<KVYv}w`{
zhlpINUf_Vf1E5|idLvXkEFL!wfeR9%*9s8ygg8c(kWf{Lndy3W){-@|-}jquJoBF&
z@7!iPx7n9B`(DNX@lQ7`UTQY4$8JzR{hd&hV?w!s&-*^?iS>tkL|g4*z&OZqxH3@a
z4-jpvuWW8@o!e|)Z?uOFecQ#h+V_SQo@FLp3>z$gS~$r2tGu5C!lpLK!yi*0y~<mS
zQn;^ZVX37ta@6IHN-cw?qK!%|i(N&FNG*qbMT<%;4|CMb8<ScA+lm&GnuR?@J0`Uv
zdL!=G*SMxr33HJkD`PEUgeqJSs~IQ8SJUG>`S{ZmzKR&Eir;v`wCzmrc93T9eALuV
z*qX`P!&Jk?s1cfVv@RN=Ir}LtiIcdi5OGooQL@7{kB89`TR>v0#1`@1n4350p;MgJ
zD36~MA|;8}?HSXOC?F7XGtwR+BMA%h3X$;;SxFS}QOwXf>&iYM+P}s=@Uc@^9(Ut&
z(&{WZ&j;&N!JY9E%i<q}D|k4Ib7JAq<G~AW@V+R9MSi}#&XksiFG_yFCX1f36-kt>
zlT!4g6rZHv?s4-Kk<5JERH6g?H;Nfc+|}t#JGIPPoe~I47!F%@*s_Ne2S}&Ws4Hy6
zVJjYXO0s9LtFTiJJLO@kl0Az@3R`v9s)rSaQ>Qv+O!xOrJM6TFow0LonL)OM?@WW$
z@j&(;n?~picg23xJo{Rc`?>@xZm?yn$K9IG^6Vjc%N`|aFKXWA+${cx4{GOZ=cII!
z@F#>bnsA+Y>7=kIoo&StHP$JIJJR_@aTcYM#Y5?Yl5Uzf{yJq~CB;1JigQXj=Ygbq
z9f*^nQ3LlCO`HLp-p0tJ%bk|m1vC{+?37L`*j2Q%Qfp#g(dtsG!A!Y%OHylLThW%e
zrqM<0DVo?<oxdBsX?LvHQJoermo|IFReaF*44ucd-~c{NUuKu^bVgj)M#c!Oa#z%{
z;i+Xq*3!h)jKMDB6Hc$;8{U5hf6D$NK62e2x#AhQB1f(vpEcMOtYyW>o7s2SG+6FX
zpvA}Vw~AWSLay`z{<40@aQ=N(!EWBvuG)!=w}X_#zM}E}B(9~fIvfmd*ql$kyPfOU
z$4{9?*KE%(`5e9&4&vj&5hweA)HB#Cxbt;Mt%b>vAYQVLu+4Vf`oV{dQvK`lkN&5`
j&7I@lou3m8+^as<ee1#Zxrxu(|5kl|*3<s)M34V}$<<l>

-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 12/27] tests: ieee1588 - skipping ieee1588_enable test for Cavium NICs
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
                     ` (10 preceding siblings ...)
  2017-04-19 12:22   ` [dts] [PATCH v3 11/27] tests: fdir - skipping fdir tests for Cavium NICs Angela Czubak
@ 2017-04-19 12:22   ` Angela Czubak
  2017-04-19 12:22   ` [dts] [PATCH v3 13/27] tests: jumboframes - skipping jumboframes tests testing bigger than allowed frames " Angela Czubak
                     ` (15 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:22 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Cavium NICs do not filter PTP packets, so ieee1588 enable test case is
not applicable, modified conf/dpdk_test_case_checklist.xls

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 20480 -> 20480 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index 338d7c61a93ba64ee6dea91a6af126f5c2be851f..ca5e3b0da53b00463d9e8ebf0121c4514ec1a2e7 100644
GIT binary patch
delta 134
zcmZozz}T>WaYH+oDw_xc5U?=>XQZZ<7`8I-F+^D*i5P)IeoS7&HIZ@2W;^azoXpA$
z43jSiDsMIuJ*CB{HJQ;tgxi#X38;mU!IZ&tvx373)=h3ln0YOMLJlC4^2E2BO}^+U
Y&${R{hiTg8ub#}zj8&U|`mi$t0J_d1#{d8T

delta 160
zcmZozz}T>WaYH+o>N{ZuAYfw%&PYuyF>GbvV{o!U5-|daJea(OYa(OMW;^azoP692
z48;XSnR)4DnK?PBoBc#jX(@05bvS@@L4hm-KLfKO0~3(T$e_rexY@$t1ncApEE1dC
pjxh6D0EHbuDo;;3tTOqcr#$PHQ<XkJo4<N8GczV_{^`Tc3;<UPC^P^7

-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 13/27] tests: jumboframes - skipping jumboframes tests testing bigger than allowed frames for Cavium NICs
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
                     ` (11 preceding siblings ...)
  2017-04-19 12:22   ` [dts] [PATCH v3 12/27] tests: ieee1588 - skipping ieee1588_enable test " Angela Czubak
@ 2017-04-19 12:22   ` Angela Czubak
  2017-04-19 12:22   ` [dts] [PATCH v3 14/27] tests: l2fwd - fixes to run on two cards (same NIC) and expecting "L2FWD: entering main loop" instead of "memory mapped" Angela Czubak
                     ` (14 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:22 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

When configuring a Cavium device the max_rx_pkt_len parameter is
ignored (and the device uses its maximum MTU). Therefore, test cases
which assume that bigger than allowed frames should be dropped fail.
Modified conf/dpdk_test_case_checklist.xls to skip
jumboframes_jumbo_nojumbo and jumboframes_bigger_jumbo tests.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 20480 -> 20992 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index ca5e3b0da53b00463d9e8ebf0121c4514ec1a2e7..46983d6f829fdbae8ac4df603ee6cc914d8a8be7 100644
GIT binary patch
delta 490
zcmZozz}T>aae@J_8UqvvFfb@@v~_0^RRRk9`~Uwx2&+Qb>YEka(iu0gw6m$%ihwk*
zF$8C%rj{7CGVn3DS|f=VfkYnLO<v12f&Dh0Iuip!*=85+S-j>F3=CPNxk>qHMTxno
z#qmj*>FKFO@n9iIR4K4nd|p17-h5AjlaaA(^9#u=M#hZE=8lb%3#3^#-;j1v0x=lV
zCMQY@Gp29mw%g2D|CfP_Ar0sleue@d3E?pUdF*f=6Ofk!=P{$mu>yJAP`Pv<&CgH>
z=OLSt&VX!6Is@Dk7NGU%legL@EBi4pGB^M=!+<Q%Fy;)PN(P`r1`skcZ?<;W&&XIb
z`M0AhkaTp?WGtRMS5BI-WOBO`NaQS-6n1uHEZrRGyqszC1TRs>O>PI61wp158Zdw@
oXsDd4;5_-Fr#$O-u5Oo>&0jt1nHW_jm-;j_r8;c><-^7d0J*AqlK=n!

delta 301
zcmZoz!q~8Yae@J_DgzV<Ffb@>v~_0^{P+L=e-KsyN`Pp!&59n`jGI{6+0@uXK#JKI
zf-_Q6OAK2X_!y$BkVK3?B0p>=ujQJ+zJyPfiGiVHvkUhuUS<UbhRGWw6((CqK4UD|
zEH9PC$e6adOZvFd=1RLIjFVS7L@8?l&2a#k1qHGU{0z*d3_vp&7#U1~kcnxtn&W;(
z#)8SuoLqsVj<cq0AyD=&0~b&gGf+7@oW}~}6-_R32C3TtCjSA+;>|8D%b7NL9AFj%
u8EXl|4nWM1C%)Zm@<nfX)<vH=Ow%@h^{!`PRGwVw*UVI9zxkIR8#4ew8%_%V

-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 14/27] tests: l2fwd - fixes to run on two cards (same NIC) and expecting "L2FWD: entering main loop" instead of "memory mapped"
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
                     ` (12 preceding siblings ...)
  2017-04-19 12:22   ` [dts] [PATCH v3 13/27] tests: jumboframes - skipping jumboframes tests testing bigger than allowed frames " Angela Czubak
@ 2017-04-19 12:22   ` Angela Czubak
  2017-04-19 12:22   ` [dts] [PATCH v3 15/27] tests: link_status_interrupt - skipping test_link_status_interrupt_port_available for Cavium NICs Angela Czubak
                     ` (13 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:22 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Previously integrity test assumed that there should be "memory mapped"
in the output of l2fwd after start up, even though it does not appear.
Test can also be run when 2 same NICs are used now.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_l2fwd.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/TestSuite_l2fwd.py b/tests/TestSuite_l2fwd.py
index 23815cd..659d5f7 100644
--- a/tests/TestSuite_l2fwd.py
+++ b/tests/TestSuite_l2fwd.py
@@ -60,7 +60,7 @@ class TestL2fwd(TestCase):
         self.headers_size = HEADER_SIZE['eth'] + HEADER_SIZE['ip'] + \
             HEADER_SIZE['udp']
 
-        self.dut_ports = self.dut.get_ports_performance()
+        self.dut_ports = self.dut.get_ports_performance(force_different_nic=False)
 
         self.verify(len(self.dut_ports) >= self.number_of_ports,
                     "Not enough ports for " + self.nic)
@@ -134,7 +134,7 @@ class TestL2fwd(TestCase):
                 (self.dut.get_memory_channels(), core_mask,
                  str(queues['queues']), port_mask)
 
-            self.dut.send_expect(command_line, "memory mapped", 60)
+            self.dut.send_expect(command_line, "L2FWD: entering main loop", 60)
 
             tgen_input = []
             tx_port = self.tester.get_local_port(self.dut_ports[0])
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 15/27] tests: link_status_interrupt - skipping test_link_status_interrupt_port_available for Cavium NICs
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
                     ` (13 preceding siblings ...)
  2017-04-19 12:22   ` [dts] [PATCH v3 14/27] tests: l2fwd - fixes to run on two cards (same NIC) and expecting "L2FWD: entering main loop" instead of "memory mapped" Angela Czubak
@ 2017-04-19 12:22   ` Angela Czubak
  2017-04-19 12:22   ` [dts] [PATCH v3 16/27] tests: link_status_interrupt - skipping tests verifying adding MAC addresses " Angela Czubak
                     ` (12 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:22 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

The test is skipped right now as link_status_interrupt assumes CPU
frequency which makes the test fail (for Cavium NICs and thunderx
platform)

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 20992 -> 20992 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index 46983d6f829fdbae8ac4df603ee6cc914d8a8be7..ef22942905f40d54c260d30eb2e99e7bee24ac2f 100644
GIT binary patch
delta 494
zcmZ{f&r1S96vyApl7?1x=wcEM6+xg-5m6-l(nt^@h>juCI_lKAZnLwdr#u)zr(kcL
zqgx>DrLIALK>vi-ZXJT6Su5+(gL&}ze&2gvrg@E;*Qk9Sn(B;zssQYk8I!YTFa+7u
zA7##0I;-w&=rY)fBrrh3%Y>f?PbUEkZXV@rNu^`wxha_tjwSO}RmeQ8QEt!!gT(--
zs4UDUW!W(cOw^NV%c)b#N|tn;{&R#V-{3lxylN6^+fIeqq-rvvGa)HANjkZ+M~Z?S
zJIvG@2_l&-Nl|6`W8^!F98{?&*aX0BM~S-_?VyGiA3a2fdl#{n@o+yLhI04!DbHG2
z!s&Mib%h8BC4Uiu2n2hC6&XF!6xluMQzYG+wSAIP+M0SlHKrVmgQge(2kuR*KO*F~
zosCV^6Y1%(nzH;ntcHH`F!(o5T#@$Y?z{a%^}3hIJm9<RlQuB>oy4yuw%q4jJWyI)
TZq3|!uQ{yY^1Ao79nd}jDX)hT

delta 228
zcmZoz!q~8caYH+onym-}5U?=>XQZZ<7`8I-F}PYIi5P)I9@|Y`%Qb=hHlI2Z14G$n
z7w(I^oA*g_GBTEJJ|UIG$e1x%)wywUfDFs#9Wq%;o6YPEm?p1rj8gDpU}SIr83qNi
z4Ezkt84S!oE+az*L&jz`r$da4MU!7Ty8=ml7fr_E$+hy*j3tvxT|gqc!6c)rD`V+q
zch{Xvn<w}%Gj8%Y%FJWH05-Uxa;}2&<cr?&Y~Q)MU0T*`{^rfZ%#`Y|`IjFXGXN$2
BJ`ex^

-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 16/27] tests: link_status_interrupt - skipping tests verifying adding MAC addresses for Cavium NICs
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
                     ` (14 preceding siblings ...)
  2017-04-19 12:22   ` [dts] [PATCH v3 15/27] tests: link_status_interrupt - skipping test_link_status_interrupt_port_available for Cavium NICs Angela Czubak
@ 2017-04-19 12:22   ` Angela Czubak
  2017-04-19 12:22   ` [dts] [PATCH v3 17/27] tests: pmdpcap - modifying the right config file + importing utils after scapy Angela Czubak
                     ` (11 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:22 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Following tests are skipped for Cavium NICs, since this functionality
is not implemented:
- test_add_remove_mac_address
- test_invalid_addresses

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 20992 -> 21504 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index ef22942905f40d54c260d30eb2e99e7bee24ac2f..e051b626528d7ec86b26365076c35899d95dd833 100644
GIT binary patch
delta 472
zcmZoz!q~8aae@J_Is+64FfgcWwDo2ZRR#+D`~Uwx2&+Na8k-e8k{LI#w6m!Ri-I(;
zF$8C%rj{7CGVn1-+aie=fkbvXOkT@1fqf&tDH8)j^=23DDn1=C28P6xl=!05-2AfC
z_}s+gcp$eZwYXT2fgv-mEHNiD1tyZZd9NfFBV+aE6H-}>jM<Y_of{_y$gphQAycQs
z%E2VSkU7~=Mwm4VXf4ZTZTm*1`o9cZ44FVKKSL>ygzy-FJa#yb3CPQV^O#ZOSb;ol
zs2s>peugqQ580F~24qvR7+|KnnY`99QrQEj#{r08Ko)2Ya~1<Dkk81F1%#}un>C&G
zGcuM>e(CHAB=uc187n5&%1bj=PA+u;iR=cGjIOSXRh!*icQS3B;G@g9$>S(9w=u-*
mh6sVllP`EHuwK$}6*t-Z)w`aFQFU^uUo(@n)8=1(Y|H>e8F5(v

delta 266
zcmZoz!Pu~bae@J_8UqvvFfb@@wDo2Z{P+L=e-Ks$N`Pqf&5B;>jGI{6+0>qifE2Sa
z1ZSkCmKe4&@G*GUAc+`(M4s7CUduIsy@g+giGiVVvkP|>-{#knoQ#Z>o4-nBF*0Uu
zPLN?%-rQ|p#x%L!DN5NJXn+IA5Gask;AddYWMBqz85uHxkePY&AE*6{jHQ$JxVQpI
zCRa_yvdKEG(v0PkJzPN|ePHqmkgV7&<+hV)lh;vZZbPWCnX{B9U+`66O}DphG1&ao
Vx1NbnWpZgiGgF4+=3fD9%mA|mOIZK_

-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 17/27] tests: pmdpcap - modifying the right config file + importing utils after scapy
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
                     ` (15 preceding siblings ...)
  2017-04-19 12:22   ` [dts] [PATCH v3 16/27] tests: link_status_interrupt - skipping tests verifying adding MAC addresses " Angela Czubak
@ 2017-04-19 12:22   ` Angela Czubak
  2017-04-19 12:22   ` [dts] [PATCH v3 18/27] tests: pmdrssreta - skipping tests for Cavium NICs Angela Czubak
                     ` (10 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:22 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

This test used to modify config/common_linuxapp or config/common_bsdapp
to compile DPDK with PCAP, however, this config may lie as well in
config/common_base. If the PCAP variable is not found in OS specific
files, then it is assumed that config/common_base should be modified.
Scapy may contain utils itself, therefore importing dts utils is moved
after importing from scapy (so as to override utils).

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_pmdpcap.py | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/tests/TestSuite_pmdpcap.py b/tests/TestSuite_pmdpcap.py
index 0a79e96..a51eb31 100644
--- a/tests/TestSuite_pmdpcap.py
+++ b/tests/TestSuite_pmdpcap.py
@@ -32,10 +32,10 @@
 '''
 '''
 from test_case import TestCase
-import utils
 
 from time import sleep
 from scapy.all import *
+import utils
 
 
 #
@@ -73,8 +73,11 @@ class TestPmdPcap(TestCase):
         else:
             raise Exception(
                 "Unknow os type, please check to make sure pcap can work in OS [ %s ]" % os_type)
-
-        return config_head + config_tail
+	out = self.dut.send_command("cat config/%s" % (config_head + config_tail))
+	if "CONFIG_RTE_LIBRTE_PMD_PCAP" in out:
+        	return config_head + config_tail
+	else:
+		return config_head + "base"
 
     def create_pcap_file(self, filename, number_of_packets):
         flow = []
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 18/27] tests: pmdrssreta - skipping tests for Cavium NICs
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
                     ` (16 preceding siblings ...)
  2017-04-19 12:22   ` [dts] [PATCH v3 17/27] tests: pmdpcap - modifying the right config file + importing utils after scapy Angela Czubak
@ 2017-04-19 12:22   ` Angela Czubak
  2017-04-19 12:22   ` [dts] [PATCH v3 19/27] tests: queue_start_stop - taking into account cavium NICs Angela Czubak
                     ` (9 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:22 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Following tests are skipped since the NIC does not support them
- test_pmdrss_reta
- test_rss_key_size

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 21504 -> 21504 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index e051b626528d7ec86b26365076c35899d95dd833..52bbf9dbea61debbd4989c8ae6a67a60eb827ac7 100644
GIT binary patch
delta 1753
zcmY+FOH30%7=UNWD~houkhP>~Lhv9fr7cCeEq&5<`+x$a1>{k%f+Adu2V*>VAjZUm
zs4@JWj9!Qb4jzoX5aYpkBAyx!#Df=a=vfmFLi}gg?#{I7O!u2_{+*eBc6M`@Ztl|e
zhaI)9&YotPfIA(@TG(-}lWLH2tF90s<d~c#y@V1wX)~{Ec%{K}w@Qa$&#l?RM#~kf
z?IZ#x0_)=}3h92!b8{AhErIoO7KggPJe(y!@mPJmoQ*(5U_Q>0up_Vm&QfqBFh6H$
z@OZVp#+V0@DMZJT&2&(j=^$Y<&A<z<O0)3M>!dk2#Q*tipJpF5x&*MkNX8(8tY9z=
zYX=#Jr#{s+VX_v|MJA1_AUBF|AQ(X+8f@_$WC|PuIxWF6mSuQ5V8shdb_8uZ8G&Dd
z5#h$PamOe(lHl`OF`|+Y<3<YZ3r0*b;@n8XC%<ZM%qxCs)PDP)+2{;B8nVJCcvEA_
zBiLCXS=b-aX&lZ6)YV3aq~xX0!--?bGLn)qlHwVeHQSnS(v2u7DN340DZ#6N)79|P
zMD)|AJ{$zJ%Pa=9wc<W##xb({>e#A~YsQ^2SSut1K20^<jOk`1H_P2Q*c9BX>1HK2
z$K83T3vSMIbCR3q?gDfNtuf?HH!rztb1GyJ?h5Xx>5fY7m=X7L&`B%sJ*c`Ck+3x=
zNNZo<YhQt$kV@yF5MuT^{$GOakd^ZZjNL_+jR-9FEa%@s)|e;FaZK`YTsPbzcZZ>O
z*m8@eTa;Y3I}|)=9tiG~=}t**iMt8d7u=HRmL#{#-8eYH))>mBTb5k*U@0U9>w-IN
zy3>+7!`&+Eg{_l}?Mgej0Ve`u`%NJ$kd9d19A~SrC9rwUZbDsP3!L2oC2I9$nN;u~
zstByY*&6H!Yzdj2+=e58u^cLR0C{3oJeDhkl;B=WqhWX#`{`Oo!uCp4+ACGQS2o~7
zT&EkgzwsZoOJ`6_;IHv<;SHNq^zg|eDt>LY+P~xziYM*kw2p6<uUJOlg0AC>X%@>E
myvA}3s@=}ovA*Bde$@!L@@5a}<J~O}UlzZVYk$VuTmJ)fWF!m#

delta 1753
zcmY+FOH30%7=ZsN6cRC(1hbShO$Z)jrO*OGyY&6ozU0{=@)kt}IT#Pdcx;S`2~lJC
zZ^jexz`=vD7h*hkB%T@$#Df=a=vfmFLi}fFcW2skcK4fa{(1d7t?aSN9{X_A!4mkO
zBUL@>=xMHo-RCbd1M@!JI|cwJa1MHbfeTu#CkH(l_{yiVFz)+;u1LM+3SC_g#Z!s(
z2^PalzwP-1i{rM$`UOj1O=1IrB~cr&+xi7d;j+X6f~9d+VuONZ@K|C)f|)qr5B4?2
zJWNc3ER}qw!^%vDfzLFDul+j9<0rp|74V4ei#vg!>sr0ZC|x^Y9J9nG>MTfCH%#J-
zfbN~Lm=n5Sy8aXr#ta@xMhIlX5Jm~zgC;BEDwVVNZqSYwR%|{U7o_l)WJH8<z20L~
z7-<X)*)gJu5ferRA4^6|G2+57@$-=GYRoHsW>kL<y>zfSd^%!>Pl&3<l#|q0gFGIL
zn3Qi9M)mbZh?L@`$#X-AO1>j$Wk=FtM{ZbkO*H97l(Z5hBchb?&8WxQ@G~I$nKK^`
zM}wDn4CZJ76Pjs^ykC=QHJGpW#PdUgF$@HC%gtJDR&jH}UBHUu<}5d-xOw3&Voh@M
zmYY}Hf^e6xJ7kZcV7UdwEedxTA4+b~a*K+~6Ip{L{1Wo875pC3y~{-S8jLGzKQ7jO
z1$zvgE#kPr?M=F0#T~=m^GS-`1vl#v_`32v|7O@@p0dU<CC0H<cX^&@5XRmy+nu)D
zX~mrpZWNzL?u_NmC@#+=4U%{uxh2ajDQ;P~33P|;F_bO0thlqnjpL@|&RXuQ;_{bJ
zgIl;CwokG-VlKFirxN3ts=+#DBDTkKP=h<TEwKf`?qW@1i-O%lEo!%25^NHeCB}DG
zgALr3*a|ThY~r!RR)tr>ftVeS@2du7d=v|^2)>W~^xh}Jb7f7*l{Jwo27Zj2%&7j2
z|8QL5sh*%;<Kv|co3?0`=*@#I`Z}G}f2rq;PTFS~lm1!0QW?c|(_~4UqcV<fsocP|
iZcp{ZJZNpBqdP&ZEA#D$wTW)$q0j8RTKzN8*76^sY$V?R

-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 19/27] tests: queue_start_stop - taking into account cavium NICs
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
                     ` (17 preceding siblings ...)
  2017-04-19 12:22   ` [dts] [PATCH v3 18/27] tests: pmdrssreta - skipping tests for Cavium NICs Angela Czubak
@ 2017-04-19 12:22   ` Angela Czubak
  2017-04-19 12:22   ` [dts] [PATCH v3 20/27] tests: quota_watermark - skipping tests for Cavium NICs Angela Czubak
                     ` (8 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:22 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Testpmd must be run with hardware VLAN filter disabled as thunder
driver does not support this feature - --disable-hw-vlan-filter is
appended if NIC is Cavium device.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_queue_start_stop.py | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/tests/TestSuite_queue_start_stop.py b/tests/TestSuite_queue_start_stop.py
index d1df66b..a83d174 100644
--- a/tests/TestSuite_queue_start_stop.py
+++ b/tests/TestSuite_queue_start_stop.py
@@ -130,7 +130,10 @@ class TestQueueStartStop(TestCase):
         """
         #dpdk start
         try:
-            self.dut.send_expect("./app/test-pmd/testpmd -c 0xf -n 4 -- -i --portmask=0x1 --port-topology=loop", "testpmd>", 120)
+	    cmd = "./app/test-pmd/testpmd -c 0xf -n 4 -- -i --portmask=0x1 --port-topology=loop"
+	    if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
+            self.dut.send_expect(cmd, "testpmd>", 120)
             self.dut.send_expect("set fwd mac", "testpmd>")
             self.dut.send_expect("start", "testpmd>")
             self.check_forwarding([0, 0], self.nic)
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 20/27] tests: quota_watermark - skipping tests for Cavium NICs
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
                     ` (18 preceding siblings ...)
  2017-04-19 12:22   ` [dts] [PATCH v3 19/27] tests: queue_start_stop - taking into account cavium NICs Angela Czubak
@ 2017-04-19 12:22   ` Angela Czubak
  2017-04-19 12:22   ` [dts] [PATCH v3 21/27] tests: short_live - taking into account cavium NICs + fixes Angela Czubak
                     ` (7 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:22 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Skipping quota_watermark test for Cavium NICs by modifying
conf/dpdk_test_case_checklist.xls

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_test_case_checklist.xls | Bin 21504 -> 21504 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/conf/dpdk_test_case_checklist.xls b/conf/dpdk_test_case_checklist.xls
index 52bbf9dbea61debbd4989c8ae6a67a60eb827ac7..4579ed4753787f2247868fe205e2df60f939cbc9 100644
GIT binary patch
delta 340
zcmZoz!Pu~ZaYH+onyM%R5U?=>XQZZ<7`8I-F-)~Z5-|da7&}g0%Qb=hFuyeu14GSb
z7w+YJLi`L2g{Ao=iSgx$C8<TZiAC9)UrTZ_GS+PVDwV~^n6o)SMqXK*jlqTyWEuk_
zKLZDo07EvA$;P0wxyk-7Q{Z0)E`}@yRtA0sZlExT2a@JzD2MYHfjo9Nj|s@jf%BMA
z<iMs(u5pT04rE|tZ~&@;0a>6r<{SnVAfFMa9mrzY{KsiOBV)znJua?5lF3z*v2wDG
zt2ATPWDi%6NFSKI0wk+9OS$DRZ}K|I%x%U1Hnu^=`1|Awz6z|8pT*}yZ2s!Y%*?oT
J^UnZwW&oI@OS%96

delta 223
zcmZoz!Pu~ZaYH+ony@GX5U?=>XQZZ<7`8I-F-Y4Yi5P)Ib~;R6%Qb<0BflvV14H#@
z7w+YJoBv93GBQ?gW|z)lWX#@NBqOiP%)(%^d4>I7rpZ5@qLev-hB$x>f&y6veg<Yu
z2A}~9j0~DU$i%d{%y~Z}WBFt=S63ie<EqJ6F?o-?G-KuDLtqgOH;}j=kgVD~#Vv<<
r@&%8oO<qTtxlN!(C(Ye4`GT(kYt58^L&2NB`Z6;!T5tXtz|IT+ejqwY

-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 21/27] tests: short_live - taking into account cavium NICs + fixes
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
                     ` (19 preceding siblings ...)
  2017-04-19 12:22   ` [dts] [PATCH v3 20/27] tests: quota_watermark - skipping tests for Cavium NICs Angela Czubak
@ 2017-04-19 12:22   ` Angela Czubak
  2017-04-19 12:22   ` [dts] [PATCH v3 22/27] tests: tso - taking into account cavium NICs Angela Czubak
                     ` (6 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:22 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Testpmd must be run with hardware VLAN filter disabled as thunder
driver does not support this feature - --disable-hw-vlan-filter is
appended if NIC is Cavium device.
Additional fixes done: waiting for DPDK application to be finished by
calling `ps` in a loop and checking whether the process is still alive;
sniffing in background scapy process fails at times, using tcpdump
instead; if start_up_time fails it is checked if the problem was that
time command seem not to be found (informing user about it).

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_short_live.py | 42 ++++++++++++++++++++++++++++++++++--------
 1 file changed, 34 insertions(+), 8 deletions(-)

diff --git a/tests/TestSuite_short_live.py b/tests/TestSuite_short_live.py
index 72745a9..45727a1 100644
--- a/tests/TestSuite_short_live.py
+++ b/tests/TestSuite_short_live.py
@@ -45,6 +45,7 @@ from test_case import TestCase
 from pmd_output import PmdOutput
 from settings import FOLDERS
 
+from packet import Packet, sniff_packets, load_sniff_packets, strip_pktload
 #
 #
 # Test class.
@@ -95,17 +96,14 @@ class TestShortLiveApp(TestCase):
         dmac = self.dut.get_mac_address(txPort)
         Dut_tx_mac = self.dut.get_mac_address(rxPort)
 
-        self.tester.scapy_background()
         count = 1
         # if only one port rx/tx, we should check count 2 so that both
         # rx and tx packet are list
         if (txPort == rxPort):
             count = 2
 
-        self.tester.scapy_append('p=sniff(iface="%s",count=%d,timeout=5)' % (rxitf, count))
-        self.tester.scapy_append('RESULT=str(p)')
 
-        self.tester.scapy_foreground()
+        inst = sniff_packets(intf=rxitf, count=count)
 
         pktlen = pktSize - 14
         padding = pktlen - 20
@@ -114,7 +112,11 @@ class TestShortLiveApp(TestCase):
         self.tester.scapy_execute()
         time.sleep(3)
 
-        out = self.tester.scapy_get_result()
+	p = load_sniff_packets(inst)
+	nr_packets=len(p)
+	reslist = [p[i].pktgen.pkt for i in range(nr_packets)]
+	out = str(reslist)
+
         if received:
             self.verify(('PPP' in out) and 'src=%s'% Dut_tx_mac in out, "Receive test failed")
         else:
@@ -125,7 +127,10 @@ class TestShortLiveApp(TestCase):
         Basic rx/tx forwarding test
         """
         #dpdk start
-        self.dut.send_expect("./%s/app/testpmd -c 0xf -n 4 -- -i --portmask=0x3" % self.target, "testpmd>", 120)
+	cmd = "./%s/app/testpmd -c 0xf -n 4 -- -i --portmask=0x3"
+	if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
+        self.dut.send_expect(cmd % self.target, "testpmd>", 120)
         self.dut.send_expect("set fwd mac", "testpmd>")
         self.dut.send_expect("set promisc all off", "testpmd>")
         self.dut.send_expect("start", "testpmd>")
@@ -144,23 +149,33 @@ class TestShortLiveApp(TestCase):
             print "start time: %s s"%time[0]
         else:
             self.verify(0, "start_up_time failed")
+	    if "time: command not found" in out:
+		print "Command time is not installed or is a shell keyword" 
 
     def test_clean_up_with_signal_testpmd(self):
         repeat_time = 5
+	cmd = "./%s/app/testpmd -c 0xf -n 4 -- -i --portmask=0x3"
+	if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
         for i in range(repeat_time):
             #dpdk start
             print "clean_up_with_signal_testpmd round %d" % (i + 1)
-            self.dut.send_expect("./%s/app/testpmd -c 0xf -n 4 -- -i --portmask=0x3" % self.target, "testpmd>", 120)
+            self.dut.send_expect(cmd % self.target, "testpmd>", 120)
             self.dut.send_expect("set fwd mac", "testpmd>")
             self.dut.send_expect("set promisc all off", "testpmd>")
             self.dut.send_expect("start", "testpmd>")
             self.check_forwarding([0, 1], self.nic)
 
+	    pid = self.dut.send_expect("ps -o pid -C testpmd | tail -n +2", "#", 60, True)
             # kill with differen Signal
             if i%2 == 0:
                 self.dut.send_expect("pkill -2 testpmd", "#", 60, True)
             else:
                 self.dut.send_expect("pkill -15 testpmd", "#", 60, True)
+	    # waiting for the process to truly finish
+	    while True:
+	    	no_lines = int(self.dut.send_expect("ps -p %d | wc -l" % int(pid), "#", 60, True))
+	    	if 1 == no_lines: break # only header is printed out
 
     def test_clean_up_with_signal_l2fwd(self):
         repeat_time = 5
@@ -172,10 +187,16 @@ class TestShortLiveApp(TestCase):
             self.check_forwarding([0, 1], self.nic)
 
             # kill with differen Signal
+	    pid = self.dut.send_expect("ps -o pid -C l2fwd | tail -n +2", "#", 60, True)
             if i%2 == 0:
                 self.dut.send_expect("pkill -2 l2fwd", "#", 60, True)
             else:
                 self.dut.send_expect("pkill -15 l2fwd", "#", 60, True)
+	
+	    while True:
+	    	no_lines = int(self.dut.send_expect("ps -p %d | wc -l" % int(pid), "#", 60, True))
+	    	if 1 == no_lines: break
+	    
 
     def test_clean_up_with_signal_l3fwd(self):
         repeat_time = 5
@@ -186,12 +207,17 @@ class TestShortLiveApp(TestCase):
             self.dut.send_expect("./examples/l3fwd/build/app/l3fwd -n 4 -c 0xf -- -p 0x3 --config='(0,0,1),(1,0,2)' &", "L3FWD:", 120)
             self.check_forwarding([0, 0], self.nic)
 
+	    pid = self.dut.send_expect("ps -o pid -C l3fwd | tail -n +2", "#", 60, True)
             # kill with differen Signal
             if i%2 == 0:
                 self.dut.send_expect("pkill -2 l3fwd", "#", 60, True)
             else:
                 self.dut.send_expect("pkill -15 l3fwd", "#", 60, True)
-
+	
+	    while True:
+	    	no_lines = int(self.dut.send_expect("ps -p %d | wc -l" % int(pid), "#", 60, True))
+	    	if 1 == no_lines: break
+	    
     def tear_down(self):
         """
         Run after each test case.
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 22/27] tests: tso - taking into account cavium NICs
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
                     ` (20 preceding siblings ...)
  2017-04-19 12:22   ` [dts] [PATCH v3 21/27] tests: short_live - taking into account cavium NICs + fixes Angela Czubak
@ 2017-04-19 12:22   ` Angela Czubak
  2017-04-19 12:22   ` [dts] [PATCH v3 23/27] tests: uni_pkt " Angela Czubak
                     ` (5 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:22 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Enabling TSO tests for Cavium NICs.
Testpmd must be run with hardware VLAN filter disabled as thunder
driver does not support this feature - --disable-hw-vlan-filter is
appended if NIC is Cavium device.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_tso.py | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/tests/TestSuite_tso.py b/tests/TestSuite_tso.py
index 00f7539..87d8b69 100644
--- a/tests/TestSuite_tso.py
+++ b/tests/TestSuite_tso.py
@@ -55,7 +55,8 @@ class TestTSO(TestCase):
         self.verify(self.nic in ["kawela_2", "niantic", "bartonhills", "82545EM",
                                  "82540EM", "springfountain", "fortville_eagle",
                                  "fortville_spirit", "fortville_spirit_single",
-                                 "redrockcanyou", "atwood", "boulderrapid", "fortpark_TLV"],
+                                 "redrockcanyou", "atwood", "boulderrapid", "fortpark_TLV",
+				 "cavium_0011", "cavium_a034"],
                     "NIC Unsupported: " + str(self.nic))
 
         # Based on h/w type, choose how many ports to use
@@ -158,6 +159,8 @@ class TestTSO(TestCase):
         self.tester.send_expect("ip l set %s up" % tx_interface, "# ")
 
         cmd = "./%s/app/testpmd -c %s -n %d %s -- -i --rxd=512 --txd=512 --burst=32 --rxfreet=64 --mbcache=128 --portmask=%s --txpt=36 --txht=0 --txwt=0 --txfreet=32 --txrst=32 --txqflags=0 " % (self.target, self.coreMask, self.dut.get_memory_channels(), self.blacklist, self.portMask)
+	if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
         self.dut.send_expect(cmd, "testpmd> ", 120)
         self.dut.send_expect("set verbose 1", "testpmd> ", 120)
         self.dut.send_expect("csum set ip hw %d" % self.dut_ports[0], "testpmd> ", 120)
@@ -224,6 +227,9 @@ class TestTSO(TestCase):
         self.tester.send_expect("ip l set %s up" % tx_interface, "# ")
 
         cmd = "./%s/app/testpmd -c %s -n %d %s -- -i --rxd=512 --txd=512 --burst=32 --rxfreet=64 --mbcache=128 --portmask=%s --txpt=36 --txht=0 --txwt=0 --txfreet=32 --txrst=32 --txqflags=0 " % (self.target, self.coreMask, self.dut.get_memory_channels(), self.blacklist, self.portMask)
+	if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
+
         self.dut.send_expect(cmd, "testpmd> ", 120)
         self.dut.send_expect("set verbose 1", "testpmd> ", 120)
         self.dut.send_expect("csum set ip hw %d" % self.dut_ports[0], "testpmd> ", 120)
@@ -288,6 +294,8 @@ class TestTSO(TestCase):
                 queues = 1
 
             command_line = "./%s/app/testpmd -c %s -n %d %s -- -i --coremask=%s --rxd=512 --txd=512 --burst=32 --rxfreet=64 --mbcache=128 --portmask=%s --txpt=36 --txht=0 --txwt=0 --txfreet=32 --txrst=32 --txqflags=0 " % (self.target, self.all_cores_mask, self.dut.get_memory_channels(), self.blacklist, self.coreMask, self.portMask)
+	    if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
 
             info = "Executing PMD using %s\n" % test_cycle['cores']
             self.logger.info(info)
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 23/27] tests: uni_pkt - taking into account cavium NICs
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
                     ` (21 preceding siblings ...)
  2017-04-19 12:22   ` [dts] [PATCH v3 22/27] tests: tso - taking into account cavium NICs Angela Czubak
@ 2017-04-19 12:22   ` Angela Czubak
  2017-04-19 12:22   ` [dts] [PATCH v3 24/27] tests: unit_tests_dump " Angela Czubak
                     ` (4 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:22 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Enabling following uni_pkt test cases by modifying
conf/dpdk_support_test_case.xls:
- NVGRE_tunnel
- NVGRE_in_IPv6_tunnel
- NVGRE_tunnel
Testpmd must be run with hardware VLAN filter disabled as thunder
driver does not support this feature - --disable-hw-vlan-filter is
appended if NIC is Cavium device. What is more, Cavium has hardware
packet type detection only for L3 and L4, therefore L2 is never checked
and inner layers are skipped as well.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 conf/dpdk_support_test_case.xls | Bin 25600 -> 8704 bytes
 tests/TestSuite_uni_pkt.py      | 219 +++++++++++++++++++++++++++-------------
 2 files changed, 147 insertions(+), 72 deletions(-)

diff --git a/conf/dpdk_support_test_case.xls b/conf/dpdk_support_test_case.xls
index 8f38c84ce8ff3338394944fa67c478d711ebe56a..2d8a342baf869d782921ad32e5c11cfa46f06a48 100644
GIT binary patch
literal 8704
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
TE!EoJ`~9uz$wnCPPv-v{JrESQ

literal 25600
zcmeHQeQ;FQbw6*lE3L$b5MRb%;34rLKwu$(48=x##Mn%Ppf)jNj7Kce6R1eLn$-%!
zj2YzC=^wS5I*{Vp&?au;W}3K3{n0v|x;38h*lkB{Gj15y4&yo<*ON4zw5E02c<gL{
zzkB!XzIXTS({7w(+R471_x9cM?){x}&pG$pkG)U&*55U~{rFQ0zbnSEO={%F*?Ot<
z&@J4zyXjei=h-Zi?)Qzj2dR4eKhi*b9EPlo$+3=C>;8Jel3E!2yAqK<j=qSi$Uosc
zETg=)f1bxqB}2lZ442_}w^+4efmS1zaBY(7DUr-p*E#C?4VCwKb-e{o{vGwWvgNfU
zn~_gY_E2QI%J-Y<+N`cKakb<*Rpw1a*&s{gD)PtWVY+)nj@DVbBq75xBu6EU>(494
zLisBQkUi_l5wmtE{*<MB8S1C3$J{A$Sh7)`r?N}x!jk$aazy01DY!&M%K=lA)Ob@U
zMw?~H=1@7JQ|7n|ZwSY@Dp8rP<Oq{=Td1V;uZ>gYxOs{kmUM^K_IN;TM{+)#$a#<j
zKM%L9NJB|EmPBum7%VHz%bQ!;T3XusR&PDr>Lw1aUJ_k~{^JJU^SkeG2JZ1^YL+@#
zT*$P(-H(Gbp;kfEW;2(8mdkpRtdS0pK8mu&b|uRt54S49;niDngywb4kh`ySdmp&0
zm(}>7sJGl2+goUj?JLnOZSqTgX1WG`eo8bC%kJ(1(=J&HdlZ<u<@0>q!iu%G<UIMZ
zAbvN0+8Jx!n!EO<nwLZu$`djV4-TZq9X!c>?M@7jIe0o({y-Y>bYBwB^kr}m^n2th
zsEu{EESD$kb<p8Gi2b&-fY^dhyR66AE`3nZR=Hd55Jv`7o>rv7%N$0Tx6#IVyq~qz
zx4vAqN#{7DO8@EUfx5L|yZjL`^!#k@N%RYT{paa_RD%B167;W^pkFLO|3(S=lO^cC
zTY~;z33@4cO5s1FaO$8I<%fAa{9XyVmZvzsmZzBh<q|kgm7qUcg8r8!=)X~d{%0lV
zmCExc3MXEqAMGdgF8%XOO^-}_WST@TsQe9i`rzOTOJ7(j(dQJs7BNrh`G1f>9j<?_
zE<tZAL0=O{p9V~Y|DQQ{(fHF#&}X>xyxp~*&vfbEmi@S0iqWW&AK_EuYdY9zI-;>l
zw{eSX2HlXS$<1%jXS?*gK6QJU<I=w^M{v8)#h>fa^YVX9$r*F$27W%?UTSKZKW#qj
z^_a?!PD9HNzS>^ej<p!$1=(x9o8Q34sKC`jLS$QBZwp+yksoAmu=%AA#H;(_bLBod
zT>jW8bH<<f&YAc+Ipd=<LqukvAF08e#bmCdnu!rgq__aHR8&9@fGglYK`P=9t+W75
zTM-A^yrKeil@_2;D&oMfQBeWLlZpy35L8rv5u&033>_5}U`(l~0E10vfgMJBU=*q;
z-5xmEsu5?9F6R#1&csa+hNdz==!T_17{|&0p=*`~VbCiBgzj1zWNvvNbm7t<43A|<
zLbomr!k9TF$Yf8rbr@jF013Aaqj4D^;numnJdkkfpd%|sl5p!RDi0*wI+(9|BtgR8
zm*}?B(HU+X%xB913AfIY@<76^gPyk>Ny4pTmj@DVon_^Lgj)wo08>{-ut*cu09(of
z3AfJj@<76^v!XnZaO<or4<y_=tI7ijw@zywgyW@4Qk(US!`OECAp6SSW((o*b4KU2
z8ae7z=f%7qoRMIVYuB#jLF#hAXV0F^x+@iN56#XU^&T3q)zJ_@I}<mBT7$e=C=Tq@
z;T>VRHGATTCyIpX?(QxUiZoLw(p+p;C@-ye6uTDLL&pW?IJvFT0_!R*u)fj)H|7h_
z+BBfgWr{1^o-aU4aCm1FFvl@iTFZqDa===?pMz_<m;cS{lqLw)6FqT9`GD8{bT$&h
z<4$KeAldG4kd5VlnEjLK2%7*>@SLLR6l=Z9SAe5%L+fUPxd}N6t+>1UWU$t=laCfP
zn4exNHm$fBLh12NU}$keMs~u=3spQW-r@tf<dpEI><=z^Kuq;)&8vsXFPgEsPMOV4
z=0V&b_w>_G7sV6O%y>c?u+`zl6ECee$lZ**UYj8vd7a!9Dk$>)?1J1a5USv+MVcyh
z)os24rf*wk;-4})oNg3|mYyw9?`GTfws*I~DVAh=UJ|++jN#X3ae*EA0)bv}J~A82
z{g`idw6Cz&**p6Con&Uix%gf=$Id->SkWcf8Cbk;mla~mI-EPCA0J1OlHm^xsEvgm
zvFf7E;MI5E%f@)G^eWjETrMG-CX-D^F`MQPHacD^HZf=L+STs_vzcwO=`3cmGK7te
zsESRkGx&q|-U?<j$7Hjyn9Z6HHag}iHg(S6JOB8v!EEN5Y&I3MSs%iNQ8{OuxHI_X
z5C0>W%{-G$S23H85H^hEIX3mq;78woBbd#6ve_8!X-mOoV;P<{+4IfGcY@hmXR-<K
zw3ZMyUQe6sdH0*o1+!UTvI+3CRUvG=o;KO@5AQr5%;tKNO@ODZ4PoQ;w8@^y%Wnp=
zS!l8e@U$C4*myl{vgf(Cz8B19k;x{&(>g=gcs*^h=ff+{2D7<=Y`Vfd%?6vUGCZxL
z^S7UQU9*9kb0<zdrY$zv1bEu=5H?;<>*##*!smn8EHT*xcv@=+8?UEzbiVZZ#b7o|
zO*R3Z))vCX>uDXGPkr%~U^ceNCcx9$L)dsdt)uhYt5<{BEHl{zc-qDgHeOHb==|V?
z-wI+g9XkjxmCpB@JB)sFakj2xUn#Qh{=WzYZ7G1lqfF3c2B_DI@axU~y}_W%3!v~H
z6Lf_E>h&3si+}#<V9*r>P<V?8y4nEsdWgux!0!ixt}KAUH%!oV2B_B`L_YcC%fX<l
z3ZU==6Lf<C>b1Vee_z-g1R9rCj^lPF2F}H|_$_ZO%GStEObrL}U1N;HHLO!`bi{iu
zX5=EtEbL{#ymMD#xPN>&kr_%Q&&BWe14ia&r-|M-)-U7Ov6aBkYe-TUf^mq=kpw|G
zl6Dzzp+hmK75r$0hnxmk$m~tUeW`k1>U^XT8(%Or+jZROKVk23hKJ9^&l+-Fmu-Mt
z$1xb}mlGHo?!w(LK3=J~h@l3B-T>-K#esfpUMih(rP3)^DxEqXiOSlEn(Vo_?H46h
z117tmk`a6oU?sx5Z4<S~+iK*k#a7fpUK@++?bvwYmRUCuMVXaGnP@hSGUM1ZmsVrn
zemR{lv3{ZsCDt1y>ax>|O89xrlN-6==GIfA!--@flS-eq4>+eX=i;~dp(2~Iv*cDe
zg`JbMeNx#!1wl?j=LaCpDfk2DHLmq(?3{Z=rG26v(tXl^tk2Gt-Ov}!m6Ce_G61mK
z0Xd5MG^j&hbRrL12Oph~2^Y2=Lw~F++?Gng|F`<Ft%cdB+y>N?(E_+A;);kmxL7kW
zy}(M~?M`A~D0$4r6vU{1%`6z~c8J9$MX`=SR6X@jo`rU}bk7+LM-Q)qWIDc{kIa-#
zFE~P~3EmU{uES~x@ND;2Uf|S#;2XW*2(2dg>;P~bUQ2-M5l2LUZ}Ng8#2Rs?W=;S&
z!>o3MI<H#T7`i6na0CM+5?3H4&8`+_^2446xd~1tdy=E$aMN+W-6M0Mlsz!dDB1}f
zvJjfMFymUDt2ZArG|j@kO88^XQ1XN`kc&;GgD*hL?8!N?cJ4xSs>!#Me4KP6BUfu`
zq5bKy1@cR;GoDE&5c-Tx!@2>TMlW2FHBG}Y8T9ltNX2?A*SPh)gf*RfV?-N*4Lbdb
zvji-A(Ol9hco8aRLJPO(Ida8kU~eF%=Dn%(NMhLTI3KCU&N=vcZz|)Qiy!raMjFrx
z37UbFf(pCc1XqFF_{$ZXLa(4xZv53LH~#9>`N%Z6S@0{wzVVE5fqM<6^8me1DW%v6
zy!{iyxz7nmC`h7Ht|U6;N}^MA=vyXYQ08*K2(cI}vtPw9ca?%VJRfP0ZS>s(Lz!V{
zYlFX3O(X1e0Pd23C8@9CHe?Z^TS25UbO~djq~>}BL4|8~h$=7hErw9<ZgkSMbyM`Y
zCfSazTn;AENd`jQ7j*jtjZ8zgau6KSXlQOM4C(_o;!qm?Z2XXX*0ZAXFlyI?&jElO
zRkghnBA-@wdr^0W*l{@G7HDxuPAU&7<Y1FJhAy9LKV5PJ`<6vMgIc}Ds0Pot^SI+=
zHjwf|E^WG$4pK5)r*tWukHr_rV;;G*uj}Q@FX2UkFL|D^+(U463!fLQI8Ko(n<Mg}
zyb|G$1pL()T}Xdo%(0V+5eHK3yA$!Rch4?3YbKFC=41fZpBfp#BG(w6?C9yi`t4vU
zojEx)JnZy2iDSb~TOmC*I+PyD6cPHyV3}bDybk`d-8(*V)Jel)!yTh1GJOM1#_7*2
zXVM-`^q+7twkFxB<nU>GY<zSS?2xc`-_?Wt5PSCb4JG^b>_54&FEgG@I>U2FJK1GW
zXN!!c?sd{i&bH)GBAFTLhqepFZC!k7rruIrWtZCN7puH-y;@E?ksPpxIybd@>)Vy9
zFErPC*KK#)noGivDp?)_=y0xEUaQfC#rR$03?=QM(Uav@6n$Mmnl_avTNc#iu2UGs
z<?4bTqEyl@8z776WL(bR2Pr_w`}lqU--|F3`6`^f0j7HtUOg>78>h%BbT&uu{QDo_
zBK`6CIC-a!`S?P=fFO1O4e5gC$<BYa<RWMnJv27Fhd_JCLn98me*H$zEZ-YF(;`rO
z?m$D3zrif*SJ2pJfFC=V2tr7sx^Kc&FvN|^hky9qYkQCG@9tCdHHyAgU4K<kCfKp%
zjui;)B5l_Fc=95)mkT$a%de^252))(<Q`PVyWQN%@7}lOQNGu`+H=2G-pXNroG&XX
zwS3#62F7I|`j>`Od;s5#cpHc{KNR5rpa&r|gAWJMAOG+MMe34iE<>5fkHdQ`=$&%$
z&89<<Ly=B({C&6kZOJ7}Yc3TOZGy<n@G^aT3K;N4<%=TASJIxM(!?KG%uQrE9pRI$
zh37S#7RL)|*wS+I3r5U5=r!yJkTHS@kh*WvRka!wjfq<LfO?ptQ38_&UPUx|kC_i0
ze-VxR&3xP&VbZ8DFYP1MGSqflJkcq70fp76i1L3oRf81e)X$<wk&8~nkfOXyu{>&@
zPZ5)H>t_)xCQ)LYB4*(kQK(Zsqm~+#ggWI#p{)uieE+S0!U0bs*Uc0P<!w~IhZBW<
zUC3Djlt$$l`k5DnBkM+dGzx3h$SJPEWcOV_iTY%T`efnAsSyJPU5@o^#DK+3c~S5K
zlcz>8A4*K2p!-zZsk=s*lTUe3YJDiRK9pL8!YIVr(sGR|9_f@9rOt;^=R>JeD2&T2
zM;kZtU8h{iixT&t#C<4ng~EMyugiSd3?qFJ!?@kP&o=zt_NT0@Z07~fcsz*s{-Cer
zM^HA3`ZVBmDflO$8D8S}#A1&^h>^v|;@8PBPay<3#-5r_g!K)&Ju9ZXV957>w_jk?
zWKW}`COy*1y3x}8#$sKCQPYibc^!zdiAruS5Cd(ZY@ze$*e9^S$F{<+<G1*#6@Hdh
z@R;=%`1Z#bm(;2$p<fAf<+nfcg=;_BcYM~@J{Om@tDboS16=tXoQ$Y^z8xp~i`#KB
z<{ZGu*nI>iN5rRavUhp_C!_eoIN8^|gF@Wf%CbDnd&Z-^L;dO0SZXk1-+HRw8P<{U
z@_jQ}-gw#Cj^`84I{)?3``@zI>s61c2C5pUYM`otss^eWsA{09fvN_o8mMZZs)4Eo
zsu~E_K-m00a^=-4m)0+ub^Z~||J#1_b<Y1^!pXTl=l`7db47GNPVDWFLpV8iKZ29<
z{o^>femaVi>i}F2;JU!$INfysJ%696%7a|;dkKJ<munCD2kXLZN8z?prXwT4xu`&)
z4yMv4#`p{Om?~dgFMv*}M^yt=4OBHy)j(APRSi@%P}M+H162)FHBi;SFPsKAkLPrm
z^J4xU&n-pVio|&~=lR^D#$BbHN^|bcc|3P{alaVn`rPBi-~2h>clUjA&d+s$1vt6Q
zn}6Gjf0~PbS&M%di&Jy{&j1_W%WyX1Y{9u4=L(!Faq@X9zE|U1gL5s;Hk|8lV%M>H
z{t@ypU-kIOHE;)B7U262Hr`g_pNHTZYLy)GC8l<mQ3Cpr9p_c#vbyHBvg!N$)%|}F
zBpd|yG+tUes^mD4&r|LV{sTasKV>Ml+z0$yCpcnqr+RgQuOPDSd>Lv`$wW%wolTv)
s_}U8oY(s26<?>%j7&aapG5G|z@g30->_4UjDwAjPPf-6=WSrywzkQe=82|tP

diff --git a/tests/TestSuite_uni_pkt.py b/tests/TestSuite_uni_pkt.py
index 6975f2d..882b758 100644
--- a/tests/TestSuite_uni_pkt.py
+++ b/tests/TestSuite_uni_pkt.py
@@ -46,9 +46,19 @@ user applications
 import utils
 from test_case import TestCase
 from exception import VerifyFailure
-from packet import Packet
 import time
 
+# so as to bind GRE for GRE testing
+from scapy.packet import *
+from scapy.fields import *
+from scapy.layers.inet import UDP,IP
+from scapy.layers.inet6 import IPv6
+from scapy.layers.l2 import Ether
+from scapy.layers.l2 import GRE
+IPPROTO_GRE=47
+
+# to override the one from scapy
+from packet import Packet
 
 class TestUniPacket(TestCase):
 
@@ -63,8 +73,10 @@ class TestUniPacket(TestCase):
         self.dut_port = valports[0]
         tester_port = self.tester.get_local_port(self.dut_port)
         self.tester_iface = self.tester.get_interface(tester_port)
-        self.dut.send_expect(
-            "./%s/app/testpmd -c f -n 4 -- -i --txqflags=0x0" % self.target, "testpmd>", 20)
+	cmd = "./%s/app/testpmd -c f -n 4 -- -i --txqflags=0x0" 
+	if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
+        self.dut.send_expect(cmd % self.target, "testpmd>", 20)
         self.dut.send_expect("set fwd rxonly", "testpmd>")
         self.dut.send_expect("set verbose 1", "testpmd>")
         self.dut.send_expect("start", "testpmd>")
@@ -121,6 +133,9 @@ class TestUniPacket(TestCase):
         elif "niantic" in self.nic.lower() or "i350" in self.nic.lower():
             outerL4Type = ""
             ipv4_default_packet_type = ["L2_ETHER", "L3_IPV4"]
+	elif "cavium" in self.dut.nic_type:
+            outerL4Type = ""
+            ipv4_default_packet_type = ["L3_IPV4"]
         pktType = {
             "MAC_IP_PKT":                ipv4_default_packet_type + [outerL4Type],
             "MAC_IP_UDP_PKT":            ipv4_default_packet_type + ["L4_UDP"],
@@ -139,6 +154,8 @@ class TestUniPacket(TestCase):
         elif "niantic" in self.nic.lower() or "i350" in self.nic.lower():
             pktType.pop("MAC_IP_ICMP_PKT")
             pktType.pop("MAC_IPFRAG_TCP_PKT")
+	elif "cavium" in self.dut.nic_type:
+            pktType.pop("MAC_IP_ICMP_PKT")
 
         self.run_test(pktType)
 
@@ -152,6 +169,9 @@ class TestUniPacket(TestCase):
         elif "niantic" in self.nic.lower() or "i350" in self.nic.lower():
             outerL4Type = ""
             ipv6_default_packet_type = ["L2_ETHER", "L3_IPV6"]
+        elif "cavium" in self.dut.nic_type:
+            outerL4Type = ""
+            ipv6_default_packet_type = ["L3_IPV6"]
 
         pktType = {
             "MAC_IPv6_PKT":          ipv6_default_packet_type + [outerL4Type],
@@ -245,36 +265,55 @@ class TestUniPacket(TestCase):
         checked that whether NVGRE tunnel packet can be normally detected
         by Fortville.
         """
-        self.verify(("fortville" in self.nic or "fortpark_TLV" in self.nic),
+        self.verify(("fortville" in self.nic or "fortpark_TLV" in self.nic or "cavium" in self.dut.nic_type),
                     "NVGRE tunnel packet type detect only support by Fortville")
-        nvgre_base_packet_type = ["L2_ETHER", "L3_IPV4_EXT_UNKNOWN", "TUNNEL_GRENAT"]
-        # INNER IPV4 not with vlan
-        nvgre_ipv4_default_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER", "INNER_L3_IPV4_EXT_UNKNOWN"]
-        # INNER IPV6 not with vlan
-        nvgre_ipv6_default_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER", "INNER_L3_IPV6_EXT_UNKNOWN"]
-        # INNER IPV4 with vlan
-        nvgre_ipv4_vlan_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER_VLAN", "INNER_L3_IPV4_EXT_UNKNOWN"]
-        # INNER IPV6 with vlan
-        nvgre_ipv6_vlan_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER_VLAN", "INNER_L3_IPV6_EXT_UNKNOWN"]
-
-
-        pktType = {
-            "MAC_IP_NVGRE_MAC_IPFRAG_PKT":              nvgre_ipv4_default_packet_type + ["INNER_L4_FRAG"],
-            "MAC_IP_NVGRE_MAC_IP_PKT":                  nvgre_ipv4_default_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IP_NVGRE_MAC_VLAN_PKT":                nvgre_base_packet_type + ["INNER_L2_ETHER"],
-            "MAC_IP_NVGRE_MAC_VLAN_IPFRAG_PKT":         nvgre_ipv4_vlan_packet_type + ["INNER_L4_FRAG"],
-            "MAC_IP_NVGRE_MAC_VLAN_IP_PKT":             nvgre_ipv4_vlan_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IP_NVGRE_MAC_VLAN_IP_UDP_PKT":         nvgre_ipv4_vlan_packet_type + ["INNER_L4_UDP"],
-            "MAC_IP_NVGRE_MAC_VLAN_IP_TCP_PKT":         nvgre_ipv4_vlan_packet_type + ["INNER_L4_TCP"],
-            "MAC_IP_NVGRE_MAC_VLAN_IP_SCTP_PKT":        nvgre_ipv4_vlan_packet_type + ["INNER_L4_SCTP"],
-            "MAC_IP_NVGRE_MAC_VLAN_IP_ICMP_PKT":        nvgre_ipv4_vlan_packet_type + ["INNER_L4_ICMP"],
-            "MAC_IP_NVGRE_MAC_VLAN_IPv6FRAG_PKT":       nvgre_ipv6_vlan_packet_type + ["INNER_L4_FRAG"],
-            "MAC_IP_NVGRE_MAC_VLAN_IPv6_PKT":           nvgre_ipv6_vlan_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IP_NVGRE_MAC_VLAN_IPv6_UDP_PKT":       nvgre_ipv6_vlan_packet_type + ["INNER_L4_UDP"],
-            "MAC_IP_NVGRE_MAC_VLAN_IPv6_TCP_PKT":       nvgre_ipv6_vlan_packet_type + ["INNER_L4_TCP"],
-            "MAC_IP_NVGRE_MAC_VLAN_IPv6_SCTP_PKT":      nvgre_ipv6_vlan_packet_type + ["INNER_L4_SCTP"],
-            "MAC_IP_NVGRE_MAC_VLAN_IPv6_ICMP_PKT":      nvgre_ipv6_vlan_packet_type + ["INNER_L4_ICMP"]
-        }
+	if "cavium" in self.dut.nic_type:
+        	nvgre_base_packet_type = ["L3_IPV4", "TUNNEL_NVGRE"]
+		pktType = {
+       		    "MAC_IP_NVGRE_MAC_IPFRAG_PKT":              nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_IP_PKT":                  nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_PKT":                nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPFRAG_PKT":         nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_PKT":             nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_UDP_PKT":         nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_TCP_PKT":         nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_SCTP_PKT":        nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_ICMP_PKT":        nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6FRAG_PKT":       nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_PKT":           nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_UDP_PKT":       nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_TCP_PKT":       nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_SCTP_PKT":      nvgre_base_packet_type,
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_ICMP_PKT":      nvgre_base_packet_type
+       		}
+	else:
+        	nvgre_base_packet_type = ["L2_ETHER", "L3_IPV4_EXT_UNKNOWN", "TUNNEL_GRENAT"]
+        	# INNER IPV4 not with vlan
+       		nvgre_ipv4_default_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER", "INNER_L3_IPV4"]
+       		# INNER IPV6 not with vlan
+       		nvgre_ipv6_default_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER", "INNER_L3_IPV6"]
+       		# INNER IPV4 with vlan
+       		nvgre_ipv4_vlan_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER_VLAN", "INNER_L3_IPV4"]
+       		# INNER IPV6 with vlan
+       		nvgre_ipv6_vlan_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER_VLAN", "INNER_L3_IPV6"]
+
+       		pktType = {
+       		    "MAC_IP_NVGRE_MAC_IPFRAG_PKT":              nvgre_ipv4_default_packet_type + ["INNER_L4_FRAG"],
+       		    "MAC_IP_NVGRE_MAC_IP_PKT":                  nvgre_ipv4_default_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_PKT":                nvgre_base_packet_type + ["INNER_L2_ETHER"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPFRAG_PKT":         nvgre_ipv4_vlan_packet_type + ["INNER_L4_FRAG"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_PKT":             nvgre_ipv4_vlan_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_UDP_PKT":         nvgre_ipv4_vlan_packet_type + ["INNER_L4_UDP"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_TCP_PKT":         nvgre_ipv4_vlan_packet_type + ["INNER_L4_TCP"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_SCTP_PKT":        nvgre_ipv4_vlan_packet_type + ["INNER_L4_SCTP"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IP_ICMP_PKT":        nvgre_ipv4_vlan_packet_type + ["INNER_L4_ICMP"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6FRAG_PKT":       nvgre_ipv6_vlan_packet_type + ["INNER_L4_FRAG"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_PKT":           nvgre_ipv6_vlan_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_UDP_PKT":       nvgre_ipv6_vlan_packet_type + ["INNER_L4_UDP"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_TCP_PKT":       nvgre_ipv6_vlan_packet_type + ["INNER_L4_TCP"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_SCTP_PKT":      nvgre_ipv6_vlan_packet_type + ["INNER_L4_SCTP"],
+       		    "MAC_IP_NVGRE_MAC_VLAN_IPv6_ICMP_PKT":      nvgre_ipv6_vlan_packet_type + ["INNER_L4_ICMP"]
+       		}
         self.run_test(pktType)
 
     def test_NVGRE_in_IPv6_tunnel(self):
@@ -282,45 +321,76 @@ class TestUniPacket(TestCase):
         checked that whether NVGRE in IPv6 tunnel packet can be normally
         detected by Fortville.
         """
-        self.verify(("fortville" in self.nic or "fortpark_TLV" in self.nic),
+        self.verify(("fortville" in self.nic or "fortpark_TLV" in self.nic or "cavium" in self.dut.nic_type),
                     "NVGRE in IPv6 detect only support by Fortville")
-        nvgre_base_packet_type = ["L2_ETHER", "L3_IPV6_EXT_UNKNOWN", "TUNNEL_GRENAT"]
-        # INNER IPV4 not with vlan
-	nvgre_ipv4_default_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER", "INNER_L3_IPV4_EXT_UNKNOWN"]
-        # INNER IPV6 not with vlan
-        nvgre_ipv6_default_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER", "INNER_L3_IPV6_EXT_UNKNOWN"]
-        # INNER IPV4 with vlan
-	nvgre_ipv4_vlan_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER_VLAN", "INNER_L3_IPV4_EXT_UNKNOWN"]
-        # INNER IPV6 with vlan
-        nvgre_ipv6_vlan_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER_VLAN", "INNER_L3_IPV6_EXT_UNKNOWN"]
-
-        pkt_types = {
-            "MAC_IPv6_NVGRE_MAC_PKT":               nvgre_base_packet_type + ["INNER_L2_ETHER"],
-            "MAC_IPv6_NVGRE_MAC_IPFRAG_PKT":        nvgre_ipv4_default_packet_type + ["INNER_L4_FRAG"],
-            "MAC_IPv6_NVGRE_MAC_IP_PKT":            nvgre_ipv4_default_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IPv6_NVGRE_MAC_IP_UDP_PKT":        nvgre_ipv4_default_packet_type + ["INNER_L4_UDP"],
-            "MAC_IPv6_NVGRE_MAC_IP_TCP_PKT":        nvgre_ipv4_default_packet_type + ["INNER_L4_TCP"],
-            "MAC_IPv6_NVGRE_MAC_IP_SCTP_PKT":       nvgre_ipv4_default_packet_type + ["INNER_L4_SCTP"],
-            "MAC_IPv6_NVGRE_MAC_IP_ICMP_PKT":       nvgre_ipv4_default_packet_type + ["INNER_L4_ICMP"],
-            "MAC_IPv6_NVGRE_MAC_IPv6FRAG_PKT":      nvgre_ipv6_default_packet_type + ["INNER_L4_FRAG"],
-            "MAC_IPv6_NVGRE_MAC_IPv6_PKT":          nvgre_ipv6_default_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IPv6_NVGRE_MAC_IPv6_UDP_PKT":      nvgre_ipv6_default_packet_type + ["INNER_L4_UDP"],
-            "MAC_IPv6_NVGRE_MAC_IPv6_TCP_PKT":      nvgre_ipv6_default_packet_type + ["INNER_L4_TCP"], 
-            "MAC_IPv6_NVGRE_MAC_IPv6_SCTP_PKT":     nvgre_ipv6_default_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IPv6_NVGRE_MAC_IPv6_ICMP_PKT":     nvgre_ipv6_default_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IPFRAG_PKT":   nvgre_ipv4_vlan_packet_type + ["INNER_L4_FRAG"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IP_PKT":       nvgre_ipv4_vlan_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IP_UDP_PKT":   nvgre_ipv4_vlan_packet_type + ["INNER_L4_UDP"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IP_TCP_PKT":   nvgre_ipv4_vlan_packet_type + ["INNER_L4_TCP"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IP_SCTP_PKT":  nvgre_ipv4_vlan_packet_type + ["INNER_L4_SCTP"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IP_ICMP_PKT":  nvgre_ipv4_vlan_packet_type + ["INNER_L4_ICMP"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IPv6FRAG_PKT": nvgre_ipv6_vlan_packet_type + ["INNER_L4_FRAG"], 
-            "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_PKT":     nvgre_ipv6_vlan_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_UDP_PKT": nvgre_ipv6_vlan_packet_type + ["INNER_L4_UDP"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_TCP_PKT": nvgre_ipv6_vlan_packet_type + ["INNER_L4_TCP"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_SCTP_PKT":nvgre_ipv6_vlan_packet_type + ["INNER_L4_NONFRAG"],
-            "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_ICMP_PKT":nvgre_ipv6_vlan_packet_type + ["INNER_L4_NONFRAG"]
-        }
+	if "cavium" in self.dut.nic_type:
+		#cavium recognizes only L3 and L4 by hardware
+       		nvgre_base_packet_type = ["L3_IPV6", "TUNNEL_NVGRE"]
+       		pkt_types = {
+       		    "MAC_IPv6_NVGRE_MAC_PKT":               nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IPFRAG_PKT":        nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IP_PKT":            nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IP_UDP_PKT":        nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IP_TCP_PKT":        nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IP_SCTP_PKT":       nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IP_ICMP_PKT":       nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IPv6FRAG_PKT":      nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_PKT":          nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_UDP_PKT":      nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_TCP_PKT":      nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_SCTP_PKT":     nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_ICMP_PKT":     nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPFRAG_PKT":   nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_PKT":       nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_UDP_PKT":   nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_TCP_PKT":   nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_SCTP_PKT":  nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_ICMP_PKT":  nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6FRAG_PKT": nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_PKT":     nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_UDP_PKT": nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_TCP_PKT": nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_SCTP_PKT":nvgre_base_packet_type,
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_ICMP_PKT":nvgre_base_packet_type
+       		}
+	else:
+       		nvgre_base_packet_type = ["L2_ETHER", "L3_IPV6_EXT_UNKNOWN", "TUNNEL_GRENAT"]
+       		# INNER IPV4 not with vlan
+       		nvgre_ipv4_default_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER", "INNER_L3_IPV4_EXT_UNKNOWN"]
+       		# INNER IPV6 not with vlan
+       		nvgre_ipv6_default_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER", "INNER_L3_IPV6_EXT_UNKNOWN"]
+       		# INNER IPV4 with vlan
+       		nvgre_ipv4_vlan_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER_VLAN", "INNER_L3_IPV4_EXT_UNKNOWN"]
+       		# INNER IPV6 with vlan
+       		nvgre_ipv6_vlan_packet_type = nvgre_base_packet_type + ["INNER_L2_ETHER_VLAN", "INNER_L3_IPV6_EXT_UNKNOWN"]
+
+       		pkt_types = {
+       		    "MAC_IPv6_NVGRE_MAC_PKT":               nvgre_base_packet_type + ["INNER_L2_ETHER"],
+       		    "MAC_IPv6_NVGRE_MAC_IPFRAG_PKT":        nvgre_ipv4_default_packet_type + ["INNER_L4_FRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_IP_PKT":            nvgre_ipv4_default_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_IP_UDP_PKT":        nvgre_ipv4_default_packet_type + ["INNER_L4_UDP"],
+       		    "MAC_IPv6_NVGRE_MAC_IP_TCP_PKT":        nvgre_ipv4_default_packet_type + ["INNER_L4_TCP"],
+       		    "MAC_IPv6_NVGRE_MAC_IP_SCTP_PKT":       nvgre_ipv4_default_packet_type + ["INNER_L4_SCTP"],
+       		    "MAC_IPv6_NVGRE_MAC_IP_ICMP_PKT":       nvgre_ipv4_default_packet_type + ["INNER_L4_ICMP"],
+       		    "MAC_IPv6_NVGRE_MAC_IPv6FRAG_PKT":      nvgre_ipv6_default_packet_type + ["INNER_L4_FRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_PKT":          nvgre_ipv6_default_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_UDP_PKT":      nvgre_ipv6_default_packet_type + ["INNER_L4_UDP"],
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_TCP_PKT":      nvgre_ipv6_default_packet_type + ["INNER_L4_TCP"], 
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_SCTP_PKT":     nvgre_ipv6_default_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_IPv6_ICMP_PKT":     nvgre_ipv6_default_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPFRAG_PKT":   nvgre_ipv4_vlan_packet_type + ["INNER_L4_FRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_PKT":       nvgre_ipv4_vlan_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_UDP_PKT":   nvgre_ipv4_vlan_packet_type + ["INNER_L4_UDP"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_TCP_PKT":   nvgre_ipv4_vlan_packet_type + ["INNER_L4_TCP"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_SCTP_PKT":  nvgre_ipv4_vlan_packet_type + ["INNER_L4_SCTP"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IP_ICMP_PKT":  nvgre_ipv4_vlan_packet_type + ["INNER_L4_ICMP"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6FRAG_PKT": nvgre_ipv6_vlan_packet_type + ["INNER_L4_FRAG"], 
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_PKT":     nvgre_ipv6_vlan_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_UDP_PKT": nvgre_ipv6_vlan_packet_type + ["INNER_L4_UDP"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_TCP_PKT": nvgre_ipv6_vlan_packet_type + ["INNER_L4_TCP"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_SCTP_PKT":nvgre_ipv6_vlan_packet_type + ["INNER_L4_NONFRAG"],
+       		    "MAC_IPv6_NVGRE_MAC_VLAN_IPv6_ICMP_PKT":nvgre_ipv6_vlan_packet_type + ["INNER_L4_NONFRAG"]
+       		}
 
         self.run_test(pkt_types)
 
@@ -328,9 +398,13 @@ class TestUniPacket(TestCase):
         """
         checked that whether GRE tunnel packet can be normally detected by Fortville.
         """
-        self.verify(("fortville" in self.nic or "fortpark_TLV" in self.nic),
+	bind_layers(IP, GRE, frag=0, proto=IPPROTO_GRE)
+        self.verify(("fortville" in self.nic or "fortpark_TLV" in self.nic or "cavium" in self.dut.nic_type),
                     "GRE tunnel packet type detect only support by Fortville")
-        IPv4_packet_type = [" L2_ETHER", " L3_IPV4_EXT_UNKNOWN", "L4_NONFRAG"]
+	if "cavium" in self.dut.nic_type:
+        	IPv4_packet_type = ["L3_IPV4", "TUNNEL_GRE"]
+	else:
+        	IPv4_packet_type = [" L2_ETHER", " L3_IPV4_EXT_UNKNOWN", "L4_NONFRAG"]
 
         pktType = {
             "MAC_IP_GRE_IPFRAG_PKT":          IPv4_packet_type,
@@ -342,6 +416,7 @@ class TestUniPacket(TestCase):
             "MAC_IP_GRE_PKT":                 IPv4_packet_type
         }
         self.run_test(pktType)
+	split_layers(IP, GRE, frag=0, proto=IPPROTO_GRE)
 
     def test_Vxlan_tunnel(self):
         """
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 24/27] tests: unit_tests_dump - taking into account cavium NICs
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
                     ` (22 preceding siblings ...)
  2017-04-19 12:22   ` [dts] [PATCH v3 23/27] tests: uni_pkt " Angela Czubak
@ 2017-04-19 12:22   ` Angela Czubak
  2017-04-19 12:22   ` [dts] [PATCH v3 25/27] tests: unit_tests_lpm - asking for lesser amount of hugepages if they are 524288kB Angela Czubak
                     ` (3 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:22 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Testpmd must be run with hardware VLAN filter disabled as thunder
driver does not support this feature - --disable-hw-vlan-filter is
appended if NIC is Cavium device.
In test_ring_dump, matching the mbuf_pool is done against the first
element of group (instead of the last one), since it is the first group
matched.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_unit_tests_dump.py | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/tests/TestSuite_unit_tests_dump.py b/tests/TestSuite_unit_tests_dump.py
index 0ec8d78..fa09894 100644
--- a/tests/TestSuite_unit_tests_dump.py
+++ b/tests/TestSuite_unit_tests_dump.py
@@ -85,7 +85,10 @@ class TestUnitTestsDump(TestCase):
         """
         Run history log dump test case.
         """
-        self.dut.send_expect("./%s/app/testpmd -n 1 -c f -- -i" % (self.target), "testpmd>", self.start_test_time)
+	cmd = "./%s/app/testpmd -n 1 -c f -- -i"
+	if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
+        self.dut.send_expect(cmd % (self.target), "testpmd>", self.start_test_time)
         out = self.dut.send_expect("dump_ring", "testpmd>", self.run_cmd_time)
         self.dut.send_expect("quit", "# ")
         match_regex = "ring <(.*?)>@0x(.*)\r\n"
@@ -94,13 +97,16 @@ class TestUnitTestsDump(TestCase):
         
         # Nic driver will create multiple rings.
         # Only check the last one to make sure ring_dump function work.
-        self.verify( 'MP_mbuf_pool_socket_0' in result[0][-1], "dump ring name failed")
+        self.verify( 'MP_mbuf_pool_socket_0' in result[0][0], "dump ring name failed")
 
     def test_mempool_dump(self):
         """
         Run mempool dump test case.
         """
-        self.dut.send_expect("./%s/app/testpmd -n 1 -c f -- -i" % (self.target), "testpmd>", self.start_test_time)
+	cmd = "./%s/app/testpmd -n 1 -c f -- -i"
+	if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
+        self.dut.send_expect(cmd % (self.target), "testpmd>", self.start_test_time)
         out = self.dut.send_expect("dump_mempool", "testpmd>", self.run_cmd_time * 2)
         self.dut.send_expect("quit", "# ")
         match_regex = "mempool <(.*?)>@0x(.*?)\r\n"
@@ -133,7 +139,10 @@ class TestUnitTestsDump(TestCase):
         """
         Run memzone dump test case.
         """
-        self.dut.send_expect("./%s/app/testpmd -n 1 -c f -- -i" % (self.target), "testpmd>", self.start_test_time)
+	cmd = "./%s/app/testpmd -n 1 -c f -- -i"
+	if "cavium" in self.dut.nic_type:
+		cmd += " --disable-hw-vlan-filter"
+        self.dut.send_expect(cmd % (self.target), "testpmd>", self.start_test_time)
         out = self.dut.send_expect("dump_memzone", "testpmd>", self.run_cmd_time * 2)
         self.dut.send_expect("quit", "# ")
 
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 25/27] tests: unit_tests_lpm - asking for lesser amount of hugepages if they are 524288kB
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
                     ` (23 preceding siblings ...)
  2017-04-19 12:22   ` [dts] [PATCH v3 24/27] tests: unit_tests_dump " Angela Czubak
@ 2017-04-19 12:22   ` Angela Czubak
  2017-04-19 12:22   ` [dts] [PATCH v3 26/27] framework: Adding linkspeed parameter for Cavium NICs Angela Czubak
                     ` (2 subsequent siblings)
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:22 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Test case test_lpm_ipv6 first checks what is the hugepages size on the
DUT and then requests only 16 if the size is 524288

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_unit_tests_lpm.py | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/tests/TestSuite_unit_tests_lpm.py b/tests/TestSuite_unit_tests_lpm.py
index e8149ff..68fa3bd 100644
--- a/tests/TestSuite_unit_tests_lpm.py
+++ b/tests/TestSuite_unit_tests_lpm.py
@@ -85,9 +85,14 @@ class TestUnitTestsLpmIpv6(TestCase):
             pass
         else:
             hugepage_ori = self.dut.get_total_huge_pages()
-            self.dut.set_huge_pages(4096)
+            hugepages_size = self.dut.send_expect("awk '/Hugepagesize/ {print $2}' /proc/meminfo", "# ")
+	    if "524288" == hugepages_size:
+            	nr_hugepages = 16
+	    else:
+            	nr_hugepags = 4096
+            self.dut.set_huge_pages(nr_hugepages)
             hugepage_num = self.dut.get_total_huge_pages()
-            self.verify(hugepage_num >= 4096, "failed to request huge memory")
+            self.verify(hugepage_num >= nr_hugepages, "failed to request huge memory")
 
         self.dut.send_expect("./%s/app/test -n 1 -c f" % self.target, "R.*T.*E.*>.*>", 60)
         out = self.dut.send_expect("lpm6_autotest", "RTE>>", 3600)
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 26/27] framework: Adding linkspeed parameter for Cavium NICs
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
                     ` (24 preceding siblings ...)
  2017-04-19 12:22   ` [dts] [PATCH v3 25/27] tests: unit_tests_lpm - asking for lesser amount of hugepages if they are 524288kB Angela Czubak
@ 2017-04-19 12:22   ` Angela Czubak
  2017-04-19 12:22   ` [dts] [PATCH v3 27/27] tests: pmd - Recompiling DPDK only if that is relevant Angela Czubak
  2017-04-20  5:55   ` [dts] [PATCH v3 00/27] DTS support for Cavium NICs Liu, Yong
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:22 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

If a user wants to use Cavium NICs with only one certain linkspeed,
this parameter mya be now specified in execution.cfg file (Cavium NICs
can be 10Gb/s or 40Gb/s) by typing "linkspeed=<linkspeed of the
NIC>Mb/s", for instance "linkspeed=10000Mb/s". This parameter is
optional, if skipped, DTS does try to use every Cavium NIC whose
linkspeed could be read.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 doc/dts_gsg/config.rst | 4 ++++
 framework/crb.py       | 7 ++++---
 framework/dts.py       | 5 +++++
 framework/settings.py  | 1 +
 framework/test_case.py | 7 +++++--
 5 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/doc/dts_gsg/config.rst b/doc/dts_gsg/config.rst
index abd8da7..4700421 100644
--- a/doc/dts_gsg/config.rst
+++ b/doc/dts_gsg/config.rst
@@ -181,6 +181,10 @@ First of all, you must create a file named execution.cfg as below.
 
     – perf=true run only performance test
 
+Cavium NICs may use optional parameter named linkspeed, the format is as follows: "linkspeed=<Link Speed of NIC>Mb/s"
+(for instance, "linkspeed=40000Mb/s" for 40Gb/s).
+It may be skipped if the user does not want to bind only to NICs with that specific speed.
+
 Then please add the detail information about your CRB in **conf/crbs.conf** as follows:
 
 .. code-block:: console
diff --git a/framework/crb.py b/framework/crb.py
index 63c8093..afc30ed 100644
--- a/framework/crb.py
+++ b/framework/crb.py
@@ -32,7 +32,7 @@
 import time
 import re
 import os
-from settings import TIMEOUT, IXIA
+from settings import TIMEOUT, IXIA, HOST_NIC_LINKSPEED, load_global_setting
 from ssh_connection import SSHConnection
 from logger import getLogger
 
@@ -270,9 +270,10 @@ class Crb(object):
         for i in range(len(match)):
             #check if device is cavium and check its linkspeed, append only if it is 10G
             if "177d:" in match[i][1]:
-                linkspeed = "10000"
+                linkspeed = load_global_setting(HOST_NIC_LINKSPEED)
                 nic_linkspeed = self.send_command("cat /sys/bus/pci/devices/%s/net/*/speed" % match[i][0])
-                if nic_linkspeed == linkspeed:
+		# if a user wants to bind NICs with a certain linkspeed (and checking linkspeed does not end in an error)
+                if (linkspeed == "0" and "cat" not in nic_linkspeed) or nic_linkspeed == linkspeed:
                     self.pci_devices_info.append((match[i][0], match[i][1]))
             else:
                 self.pci_devices_info.append((match[i][0], match[i][1]))
diff --git a/framework/dts.py b/framework/dts.py
index 369599d..d2e5c24 100644
--- a/framework/dts.py
+++ b/framework/dts.py
@@ -80,8 +80,13 @@ def dts_parse_param(config, section):
     # Set parameters
     parameters = config.get(section, 'parameters').split(':')
     drivername = config.get(section, 'drivername').split('=')[-1]
+    if config.has_option(section, 'linkspeed'):
+    	linkspeed = config.get(section, 'linkspeed').split('=')[-1]
+    	linkspeed = re.sub('[^0-9]+',"",linkspeed) # change '+' to '*'? so that empty is good as well
+    else: linkspeed = '0' # default
 
     settings.save_global_setting(settings.HOST_DRIVER_SETTING, drivername)
+    settings.save_global_setting(settings.HOST_NIC_LINKSPEED, linkspeed)
 
     paramDict = dict()
     for param in parameters:
diff --git a/framework/settings.py b/framework/settings.py
index 342314d..aae03a5 100644
--- a/framework/settings.py
+++ b/framework/settings.py
@@ -205,6 +205,7 @@ PERF_SETTING = "DTS_PERF_ONLY"
 FUNC_SETTING = "DTS_FUNC_ONLY"
 HOST_DRIVER_SETTING = "DTS_HOST_DRIVER"
 HOST_NIC_SETTING = "DTS_HOST_NIC"
+HOST_NIC_LINKSPEED = "DTS_HOST_NIC_LINKSPEED"
 DEBUG_SETTING = "DTS_DEBUG_ENABLE"
 DEBUG_CASE_SETTING = "DTS_DEBUGCASE_ENABLE"
 DPDK_RXMODE_SETTING = "DTS_DPDK_RXMODE"
diff --git a/framework/test_case.py b/framework/test_case.py
index d97d898..2ab1d68 100644
--- a/framework/test_case.py
+++ b/framework/test_case.py
@@ -38,7 +38,7 @@ import traceback
 import signal
 
 from exception import VerifyFailure, TimeoutException
-from settings import DRIVERS, NICS, get_nic_name, load_global_setting
+from settings import DRIVERS, NICS, get_nic_name, load_global_setting, HOST_NIC_LINKSPEED
 from settings import PERF_SETTING, FUNC_SETTING, DEBUG_SETTING, DEBUG_CASE_SETTING, HOST_DRIVER_SETTING
 from rst import RstReport
 from test_result import ResultTable, Result
@@ -366,6 +366,9 @@ class TestCase(object):
         elif nic == 'redrockcanyou':
             bitrate *= 40
         elif driver == 'thunder-nicvf':
-            bitrate *= 10
+	    if load_global_setting(HOST_NIC_LINKSPEED) == "40000":
+            	bitrate *= 40
+	    else:
+            	bitrate *= 10 # assuming it is 10 Gb
 
         return bitrate * num_ports / 8 / (frame_size + 20)
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* [dts] [PATCH v3 27/27] tests: pmd - Recompiling DPDK only if that is relevant
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
                     ` (25 preceding siblings ...)
  2017-04-19 12:22   ` [dts] [PATCH v3 26/27] framework: Adding linkspeed parameter for Cavium NICs Angela Czubak
@ 2017-04-19 12:22   ` Angela Czubak
  2017-04-20  5:55   ` [dts] [PATCH v3 00/27] DTS support for Cavium NICs Liu, Yong
  27 siblings, 0 replies; 88+ messages in thread
From: Angela Czubak @ 2017-04-19 12:22 UTC (permalink / raw)
  To: dts; +Cc: Angela Czubak

Earlier, DPDK was rebuilt everytime to achieve the maximum performance
for FVL, even though FVL might not have been used.

Signed-off-by: Angela Czubak <aczubak at caviumnetworks.com>
---
 tests/TestSuite_pmd.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/tests/TestSuite_pmd.py b/tests/TestSuite_pmd.py
index 2d5b485..82f1e30 100644
--- a/tests/TestSuite_pmd.py
+++ b/tests/TestSuite_pmd.py
@@ -69,8 +69,9 @@ class TestPmd(TestCase,IxiaPacketGenerator):
         self.blacklist = ""
 
         # Update config file and rebuild to get best perf on FVL
-        self.dut.send_expect("sed -i -e 's/CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n/CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=y/' ./config/common_base", "#", 20)
-        self.dut.build_install_dpdk(self.target)
+	if "i40e" in self._get_nic_driver(self.dut.nic_type):
+	    self.dut.send_expect("sed -i -e 's/CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=n/CONFIG_RTE_LIBRTE_I40E_16BYTE_RX_DESC=y/' ./config/common_base", "#", 20)
+            self.dut.build_install_dpdk(self.target)
 
         # Based on h/w type, choose how many ports to use
         self.dut_ports = self.dut.get_ports()
-- 
2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

* Re: [dts] [PATCH v3 00/27]  DTS support for Cavium NICs
  2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
                     ` (26 preceding siblings ...)
  2017-04-19 12:22   ` [dts] [PATCH v3 27/27] tests: pmd - Recompiling DPDK only if that is relevant Angela Czubak
@ 2017-04-20  5:55   ` Liu, Yong
  27 siblings, 0 replies; 88+ messages in thread
From: Liu, Yong @ 2017-04-20  5:55 UTC (permalink / raw)
  To: Angela Czubak, dts

Thanks Czubak. Applied into master branch without below one. 
[PATCH v3 05/27] framework project_dpdk: asserting loading	vfio-pci by using DPDK binding script

It will be easier to check module existing by just scan system filesystem.

> -----Original Message-----
> From: dts [mailto:dts-bounces@dpdk.org] On Behalf Of Angela Czubak
> Sent: Wednesday, April 19, 2017 8:22 PM
> To: dts@dpdk.org
> Cc: Angela Czubak <aczubak@caviumnetworks.com>
> Subject: [dts] [PATCH v3 00/27] DTS support for Cavium NICs
> 
> Changes done to run DTS for Cavium NICs
> 
> 1) Cavium devices with 177d:a034 and 177d:0011 PCI IDs are added to NICs
> list, both of which are supported by thunder-nicvf driver
> 2) When appending pci devices info, the only Cavium NICs appended are the
> ones with 10Gb/s linkspeed
> 3) For arm64 architecture the hugepage size is detected and if it is
> 524288, then lesser amount of hugepages is acquired
> 4) Created a method in Dut class for getting the right binding script (if
> someone chooses to use older DPDK version)
> 5) Checking link is done via IPv4 ping alternately, so that DUT can be a
> system without IPv6 (previously link was detected solely by checking if an
> interface obtained an IPv6 address and then by using ping6). This also
> makes force binding necessary, as those interfaces are detected as active.
> 6) Checking whether vfio-pci was loaded using lsmod can be deceptive. If
> someone decides to use DPDK on a system with modules built into the kernel,
> then this approach will fail. Instead, DPDK binding script can be used and
> if it shows that vfio-pci can be used, DTS proceeds, otherwise it send
> with an error due to a failed assertion.
> 7) Modifying tests and config for Cavium NICs
> 8) Added support for Cavium NICs to choose only cards with specified
> linkspeed
> 9) Skipping recompling DPDK in TestSuite_pmd.py if the driver is not meant
> for FVL
> 
> Changes since initial version:
> - Added support for Cavium NICs to choose only cards with specified
> linkspeed
> - Skipping recompling DPDK in TestSuite_pmd.py if the driver is not meant
> for FVL
> - Setting max-pkt-len before setting vlan stripping off in
> TestSuite_shutdown_api.py when testing jumbo frames
> 
> Changes since V2:
> Merged two commits connected with binding scripts
> 
> Angela Czubak (27):
>   framework settings: Adding cavium PCI IDs and drivers
>   framework dut and project_dpdk: using correct available binding
>     scripts
>   framework dut and project_dpdk: binding smaller number of hugepages
>     for     arm64
>   framework crb: Appending only 10G devices for cavium
>   framework project_dpdk: asserting loading vfio-pci by using DPDK
>     binding script
>   framework: checking link with IPv4 ping
>   tests: ipv4_reassembly - added splitting result in tcpdump_command
>   tests: Modified tests to take cavium nics into account
>   tests: checksum_offload - fixes
>   tests: dynamic_config - taking into account cavium NICs
>   tests: fdir - skipping fdir tests for Cavium NICs
>   tests: ieee1588 - skipping ieee1588_enable test for Cavium NICs
>   tests: jumboframes - skipping jumboframes tests testing bigger than
>      allowed frames for Cavium NICs
>   tests: l2fwd - fixes to run on two cards (same NIC) and expecting
>     "L2FWD: entering main loop" instead of "memory mapped"
>   tests: link_status_interrupt - skipping
>     test_link_status_interrupt_port_available for Cavium NICs
>   tests: link_status_interrupt - skipping tests verifying adding MAC
>     addresses for Cavium NICs
>   tests: pmdpcap - modifying the right config file + importing utils
>     after scapy
>   tests: pmdrssreta - skipping tests for Cavium NICs
>   tests: queue_start_stop - taking into account cavium NICs
>   tests: quota_watermark - skipping tests for Cavium NICs
>   tests: short_live - taking into account cavium NICs + fixes
>   tests: tso - taking into account cavium NICs
>   tests: uni_pkt - taking into account cavium NICs
>   tests: unit_tests_dump - taking into account cavium NICs
>   tests: unit_tests_lpm - asking for lesser amount of hugepages if they
>        are 524288kB
>   framework: Adding linkspeed parameter for Cavium NICs
>   tests: pmd - Recompiling DPDK only if that is relevant
> 
>  conf/dpdk_support_test_case.xls     | Bin 25600 -> 8704 bytes
>  conf/dpdk_test_case_checklist.xls   | Bin 31232 -> 21504 bytes
>  doc/dts_gsg/config.rst              |   4 +
>  framework/crb.py                    |  12 +-
>  framework/dts.py                    |   5 +
>  framework/dut.py                    |  52 ++++++---
>  framework/pmd_output.py             |   4 +
>  framework/project_dpdk.py           |  25 +++-
>  framework/settings.py               |   5 +
>  framework/test_capabilities.py      |   9 ++
>  framework/test_case.py              |   7 +-
>  framework/tester.py                 |  11 ++
>  nics/net_device.py                  |   8 +-
>  tests/TestSuite_checksum_offload.py |  38 +++----
>  tests/TestSuite_dynamic_config.py   |  10 +-
>  tests/TestSuite_ipv4_reassembly.py  |   2 +-
>  tests/TestSuite_l2fwd.py            |   4 +-
>  tests/TestSuite_pmd.py              |   5 +-
>  tests/TestSuite_pmdpcap.py          |  13 ++-
>  tests/TestSuite_queue_start_stop.py |   5 +-
>  tests/TestSuite_short_live.py       |  44 ++++++--
>  tests/TestSuite_shutdown_api.py     |  31 ++---
>  tests/TestSuite_tso.py              |  10 +-
>  tests/TestSuite_uni_pkt.py          | 219 ++++++++++++++++++++++++-------
> -----
>  tests/TestSuite_unit_tests_dump.py  |  17 ++-
>  tests/TestSuite_unit_tests_lpm.py   |   9 +-
>  26 files changed, 390 insertions(+), 159 deletions(-)
>  create mode 100644 framework/test_capabilities.py
> 
> --
> 2.7.4

^ permalink raw reply	[flat|nested] 88+ messages in thread

end of thread, other threads:[~2017-04-20  5:55 UTC | newest]

Thread overview: 88+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-06 17:51 [dts] [PATCH 00/26] DTS support for Cavium NICs Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 01/26] framework settings: Adding cavium PCI IDs and drivers Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 02/26] framework dut and project_dpdk: using correct available binding scripts Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 03/26] framework dut and project_dpdk: binding smaller number of hugepages for arm64 Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 04/26] framework crb: Appending only 10G devices for cavium Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 05/26] framework project_dpdk: asserting loading vfio-pci by using DPDK binding script Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 06/26] framework: checking link with IPv4 ping Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 07/26] tests: ipv4_reassembly - added splitting result in tcpdump_command Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 08/26] framework: getting DPDK binding script moved to a method in dut Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 09/26] tests: Modified tests to take cavium nics into account Angela Czubak
2017-04-10 17:08   ` Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 10/26] tests: checksum_offload - fixes Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 11/26] tests: dynamic_config - taking into account cavium NICs Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 12/26] tests: fdir - skipping fdir tests for Cavium NICs Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 13/26] tests: ieee1588 - skipping ieee1588_enable test " Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 14/26] tests: jumboframes - skipping jumboframes tests testing bigger than allowed frames " Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 15/26] tests: l2fwd - fixes to run on two cards (same NIC) and expecting "L2FWD: entering main loop" instead of "memory mapped" Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 16/26] tests: link_status_interrupt - skipping test_link_status_interrupt_port_available for Cavium NICs Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 17/26] tests: link_status_interrupt - skipping tests verifying adding MAC addresses " Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 18/26] tests: pmdpcap - modifying the right config file + importing utils after scapy Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 19/26] tests: pmdrssreta - skipping tests for Cavium NICs Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 20/26] tests: queue_start_stop - taking into account cavium NICs Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 21/26] tests: quota_watermark - skipping tests for Cavium NICs Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 22/26] tests: short_live - taking into account cavium NICs + fixes Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 23/26] tests: tso - taking into account cavium NICs Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 24/26] tests: uni_pkt " Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 25/26] tests: unit_tests_dump " Angela Czubak
2017-04-06 17:51 ` [dts] [PATCH 26/26] tests: unit_tests_lpm - asking for lesser amount of hugepages if they are 524288kB Angela Czubak
2017-04-10 17:08 ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Angela Czubak
2017-04-10 17:08   ` [dts] [PATCH v2 01/28] framework settings: Adding cavium PCI IDs and drivers Angela Czubak
2017-04-10 17:08   ` [dts] [PATCH v2 02/28] framework dut and project_dpdk: using correct available binding scripts Angela Czubak
2017-04-17  6:35     ` Liu, Yong
2017-04-10 17:08   ` [dts] [PATCH v2 03/28] framework dut and project_dpdk: binding smaller number of hugepages for arm64 Angela Czubak
2017-04-10 17:08   ` [dts] [PATCH v2 04/28] framework crb: Appending only 10G devices for cavium Angela Czubak
2017-04-10 17:08   ` [dts] [PATCH v2 05/28] framework project_dpdk: asserting loading vfio-pci by using DPDK binding script Angela Czubak
2017-04-10 17:09   ` [dts] [PATCH v2 06/28] framework: checking link with IPv4 ping Angela Czubak
2017-04-10 17:09   ` [dts] [PATCH v2 07/28] tests: ipv4_reassembly - added splitting result in tcpdump_command Angela Czubak
2017-04-10 17:09   ` [dts] [PATCH v2 08/28] framework: getting DPDK binding script moved to a method in dut Angela Czubak
2017-04-10 17:09   ` [dts] [PATCH v2 09/28] tests: Modified tests to take cavium nics into account Angela Czubak
2017-04-10 17:09   ` [dts] [PATCH v2 10/28] tests: checksum_offload - fixes Angela Czubak
2017-04-10 17:09   ` [dts] [PATCH v2 11/28] tests: dynamic_config - taking into account cavium NICs Angela Czubak
2017-04-10 17:09   ` [dts] [PATCH v2 12/28] tests: fdir - skipping fdir tests for Cavium NICs Angela Czubak
2017-04-10 17:09   ` [dts] [PATCH v2 13/28] tests: ieee1588 - skipping ieee1588_enable test " Angela Czubak
2017-04-10 17:09   ` [dts] [PATCH v2 14/28] tests: jumboframes - skipping jumboframes tests testing bigger than allowed frames " Angela Czubak
2017-04-10 17:09   ` [dts] [PATCH v2 15/28] tests: l2fwd - fixes to run on two cards (same NIC) and expecting "L2FWD: entering main loop" instead of "memory mapped" Angela Czubak
2017-04-10 17:09   ` [dts] [PATCH v2 16/28] tests: link_status_interrupt - skipping test_link_status_interrupt_port_available for Cavium NICs Angela Czubak
2017-04-10 17:09   ` [dts] [PATCH v2 17/28] tests: link_status_interrupt - skipping tests verifying adding MAC addresses " Angela Czubak
2017-04-10 17:09   ` [dts] [PATCH v2 18/28] tests: pmdpcap - modifying the right config file + importing utils after scapy Angela Czubak
2017-04-10 17:09   ` [dts] [PATCH v2 19/28] tests: pmdrssreta - skipping tests for Cavium NICs Angela Czubak
2017-04-10 17:09   ` [dts] [PATCH v2 20/28] tests: queue_start_stop - taking into account cavium NICs Angela Czubak
2017-04-10 17:09   ` [dts] [PATCH v2 21/28] tests: quota_watermark - skipping tests for Cavium NICs Angela Czubak
2017-04-10 17:09   ` [dts] [PATCH v2 22/28] tests: short_live - taking into account cavium NICs + fixes Angela Czubak
2017-04-10 17:09   ` [dts] [PATCH v2 23/28] tests: tso - taking into account cavium NICs Angela Czubak
2017-04-10 17:09   ` [dts] [PATCH v2 24/28] tests: uni_pkt " Angela Czubak
2017-04-10 17:09   ` [dts] [PATCH v2 25/28] tests: unit_tests_dump " Angela Czubak
2017-04-10 17:09   ` [dts] [PATCH v2 26/28] tests: unit_tests_lpm - asking for lesser amount of hugepages if they are 524288kB Angela Czubak
2017-04-10 17:09   ` [dts] [PATCH v2 27/28] framework: Adding linkspeed parameter for Cavium NICs Angela Czubak
2017-04-10 17:09   ` [dts] [PATCH v2 28/28] tests: pmd - Recompiling DPDK only if that is relevant Angela Czubak
2017-04-17  8:02   ` [dts] [PATCH v2 00/28] DTS support for Cavium NICs Liu, Yong
2017-04-19 12:21 ` [dts] [PATCH v3 00/27] " Angela Czubak
2017-04-19 12:21   ` [dts] [PATCH v3 01/27] framework settings: Adding cavium PCI IDs and drivers Angela Czubak
2017-04-19 12:21   ` [dts] [PATCH v3 02/27] framework dut and project_dpdk: using correct available binding scripts Angela Czubak
2017-04-19 12:21   ` [dts] [PATCH v3 03/27] framework dut and project_dpdk: binding smaller number of hugepages for arm64 Angela Czubak
2017-04-19 12:21   ` [dts] [PATCH v3 04/27] framework crb: Appending only 10G devices for cavium Angela Czubak
2017-04-19 12:21   ` [dts] [PATCH v3 05/27] framework project_dpdk: asserting loading vfio-pci by using DPDK binding script Angela Czubak
2017-04-19 12:21   ` [dts] [PATCH v3 06/27] framework: checking link with IPv4 ping Angela Czubak
2017-04-19 12:22   ` [dts] [PATCH v3 07/27] tests: ipv4_reassembly - added splitting result in tcpdump_command Angela Czubak
2017-04-19 12:22   ` [dts] [PATCH v3 08/27] tests: Modified tests to take cavium nics into account Angela Czubak
2017-04-19 12:22   ` [dts] [PATCH v3 09/27] tests: checksum_offload - fixes Angela Czubak
2017-04-19 12:22   ` [dts] [PATCH v3 10/27] tests: dynamic_config - taking into account cavium NICs Angela Czubak
2017-04-19 12:22   ` [dts] [PATCH v3 11/27] tests: fdir - skipping fdir tests for Cavium NICs Angela Czubak
2017-04-19 12:22   ` [dts] [PATCH v3 12/27] tests: ieee1588 - skipping ieee1588_enable test " Angela Czubak
2017-04-19 12:22   ` [dts] [PATCH v3 13/27] tests: jumboframes - skipping jumboframes tests testing bigger than allowed frames " Angela Czubak
2017-04-19 12:22   ` [dts] [PATCH v3 14/27] tests: l2fwd - fixes to run on two cards (same NIC) and expecting "L2FWD: entering main loop" instead of "memory mapped" Angela Czubak
2017-04-19 12:22   ` [dts] [PATCH v3 15/27] tests: link_status_interrupt - skipping test_link_status_interrupt_port_available for Cavium NICs Angela Czubak
2017-04-19 12:22   ` [dts] [PATCH v3 16/27] tests: link_status_interrupt - skipping tests verifying adding MAC addresses " Angela Czubak
2017-04-19 12:22   ` [dts] [PATCH v3 17/27] tests: pmdpcap - modifying the right config file + importing utils after scapy Angela Czubak
2017-04-19 12:22   ` [dts] [PATCH v3 18/27] tests: pmdrssreta - skipping tests for Cavium NICs Angela Czubak
2017-04-19 12:22   ` [dts] [PATCH v3 19/27] tests: queue_start_stop - taking into account cavium NICs Angela Czubak
2017-04-19 12:22   ` [dts] [PATCH v3 20/27] tests: quota_watermark - skipping tests for Cavium NICs Angela Czubak
2017-04-19 12:22   ` [dts] [PATCH v3 21/27] tests: short_live - taking into account cavium NICs + fixes Angela Czubak
2017-04-19 12:22   ` [dts] [PATCH v3 22/27] tests: tso - taking into account cavium NICs Angela Czubak
2017-04-19 12:22   ` [dts] [PATCH v3 23/27] tests: uni_pkt " Angela Czubak
2017-04-19 12:22   ` [dts] [PATCH v3 24/27] tests: unit_tests_dump " Angela Czubak
2017-04-19 12:22   ` [dts] [PATCH v3 25/27] tests: unit_tests_lpm - asking for lesser amount of hugepages if they are 524288kB Angela Czubak
2017-04-19 12:22   ` [dts] [PATCH v3 26/27] framework: Adding linkspeed parameter for Cavium NICs Angela Czubak
2017-04-19 12:22   ` [dts] [PATCH v3 27/27] tests: pmd - Recompiling DPDK only if that is relevant Angela Czubak
2017-04-20  5:55   ` [dts] [PATCH v3 00/27] DTS support for Cavium NICs Liu, Yong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).