* [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 zcmeI4TZ|l6TE|b%%`<WA8sB=xcI=enyWO^D#`gGbk1z4~e!t(^HQm*oio3gdyQ@9+ zY7t)8Ji$tfR$`@9B(x|GAS5mVg$IyGctAWX0<E+X+3=7cgg}7gMIeZj#QguKu3vS} z`VzyE-IRT*>U`(a@7%ucJEtx^fAiOKKK$MvEc!^Lwq2@IefGFd^(5pOoUaJu{Yovv zIc1+ce*8ET<Mhkz3)BOj26gSk0CpjCBXG=TAoL>iA-sez6X9iqSqQTc3<Rivnu9PG zVIIPKgars$gaL#>goOx;5Edi6g0KW(DZ;A=CIWSbVR>-AGB|#Ly6_8K)pN?lKM!N^ zx~k$>R}U}(PrqfMG06^ink$q3;%V|fDbJVX$35_*zG8Z^|NDAj#Xa5XPiB3eCa-P( zBh{gPzw15hmHK;x8>&X%aL_6j%>S$HfUbj;VIAJZB(o>egSn;yv(j7G&sM*uQ~p%% z_h=7<jAP2&jss_<k2=SYPpNO}{cCzZ8~cp<V|~q!v}72*=<krLSA7d*P&6ZRP+6+1 z95n%3aMUoo*Iy#(@h|EeIP1>r*D1{P0#i}8B%8Y2xMsbX^U79tV68T+^`bhemUg|Y z-lnG>x2tyDDu1Xw@Z0J?ADgIWxV>vq&gN<Pe>|O>eb+AkbaGPL<^S20zl}aM*}Py2 z`+2?J50BFFwbRIR)5zCNBkyY~?}jF{>wn61J^x$Qhw`%-Q>jm+yeG`h$zN}NyOfr% z@h9~_{_PHUg@@`fkNpoj^>NO_9(|nquuC83J)EJB^B;EOI1B3ofKR#gid8m8ZfjF~ z6XyJHTtmS5oS(F9Z<vzzw<RPaluYePNH+f}Tv7)A-plkND0ShR8TBvf4K7R`O)#VC zd4%ffRSOq3T;MR!5E!V)JchE(YUU$W;?GdQUiI}17Cyc2X2!4|Q%ir$r4E)py;uVE zVrkR+Us(NoqJCvoA23y<A$P%Q*k;wL*btpQ5A3O<2eFd!toj|>L;B^j=BZ|7!mgtO z3T~xhSG@*SR>LFP^IvJ&O}l|h_MbR`1(IhsyjrDbR$b3*G;1}t?wQ`C(=eHUn%Lf? zUH2Z;?0m^7dv-miRHIgRs(0==<+7b~>Tb2>R*N}bSaO?H&vL3cZ_3efmN1E`I)&B} z*a$4?O3pny?=@@Xu!yfIHDT2~w>pU;8o8P~W!L@EN~oPa%iGo+lpe<$HK*=)ErNUl zHATi}sWMidrLuiLXzxArxnos5r;xjAP1$8Dza>%1|6(=J_itbb-F&HzaYjSFY9B() zUO*3E*<5LsJtyw*Mt*o`{J@(^MNRx^4gi++t@Rr}P>Dz4MfAcGRTst$MR%cA4+34V zUrhf$v1C|k<3Tkj6xHyi+@yWLbKEOi)qKONJGHOm3vRXK+_~~O>XxvuNC6TS15MQB zc{QgPl!leh^NvACJL^=>22ETYk8D(adj&+#l%48bG~MzV-t$)?=~SX36HShXs9@c5 znw6Y?$PWz-55p}tJhzsw!$HDLUHBZeh`eWODR7L1NxN{j(X8b42^`t+&rwus3AkG> zmEEa=S1;$?QYl}vnhm(%sbb!(jzITgx7)UdT7iQ}U{&yNS3X@?rIM(KxUN(RwWV%V zi*6;)NeOrVzWP6?Vrqe7)>2HArJ_^M({)d|^<utQ#~3-adt0z(E!Ay%qEW;%0ZvA4 zqy1boEn*Z886=#&MD}zEqihqaQ*~P_^b^uX*@vm?!m_4M8pX=tNy8PX+B6e2W<4we z>Wv2U+OweJJiTi_&=U_<5l+eXGeIAoKHt6%vHGb&Q*i+n4xa0l8|Z$oP%AboH7roz zvg`&|A~ay9fx&BF-Q;`wx?4aR%Byf<s?@Ant?U$#&8=!fYt~jwmvzEwI0d(c`x55H zBcJxfvTGHoL1;t!3>+=%4m_@7+xGC*?c4Kq)tV^V=$wReK#PLLjfe7R-SfO&5nZB3 zFmDxV4xV2X?V4RJnr@Za3f(s+r^4kKY$@^#uv<1NKjnCnd0GYLhN4}v3*OG7SN0DL zZQikEcw`h6cJ4JMD|TfVXQSIkH&oG4_v{VurOo^3=M8rXg<RVNr%*s|Z5}Zv9IyR| zW2nou3aw!j3s2}!exg}#cv!&l97^M%5W9hAeGOE*2rUk2wp}zUR<&uB%MZ+Yv$_^p z(CGY@<Nlflx&RIE@=i6sEss86LdCjIM?$R%mSr1aV0sD51?DC$Z0)MsyfbO)r7yKm zs~B8Mplgi>SRrFFEubx)YqQX=q9eo8e3ZTnW?{pz6z&$R>I1i#voJNg#oUD3EEny1 z-NFos3(+7n9Gb586{~R<Bbum(PBWn@rr#A?e{vIY+VbiZbQj0jEZX<%GPNCjYL%^e z1<K=8u{N(aYhDAUOJmC;7w!fc93J;ho+6|`1!^!#9mQyI9k0)EJ8-w^fTxuZDfciR zXm^0;uhF@74W?347L<Y2r#B5MXO`-2#XRA>(X^_#NqJs7h!@!jgNtY5X`I(7r4C;@ zVLqu|x#4l%iNO6+^`J&}-7MB&2z3*o0oP%AuDNyN&{o{Gpg+*IO3f+TCc4(G#}+j_ z`WUx#RaNL+fPg!)VB_;>ZXFm9<v;A|7Z1B$#$`p^HS*EW9DP^VkNdw*e*4EiI5}}< zUtY@}@}@P|R`RA-<uYGK%6nbw^cCy%{+D!Ktd#Xb@L$%lZ|MChTwl`LKki$dIA0TS z|7qXa#QFEsYp6{TB;Mh6ptM|O<~z6X|HFOZF@r}y9eAYv3;MCVQtzyVkHp3}uR1n6 zj&~sEJ166KC+>Pb*cHdSa4-EqR~+xgL){NX<2dXyQ(of7RR`1$TX2t!v)&GvEw&!i zQ=eoEEn_4t<6U=J21Rd?v5(XFU<xfV)T~7YKhz@Q_@#L;sTLWvB%Kd4O^Xb6+aiN| zZIQ9B(meKKTE-qs%dp&Rk-?L-$oT3deJ!;xEu$%<WqehWmSN4+BEuBXBEy=gMaEY> zX&ztwq-B`ET4a1Rl+MRjMQIsd9VKO->K9c0D=DS?SOykN{qtiT+P=eBCt}n&KdlQf zYMUSHMvQvK7_T=_QWztXy5*;l8OO+sW28{yn3Ecx)vwX~Sdv1!G<5C#v?Qei^)U2n zH>R<^hPHG+mZWrQ3boHqOHw)oh3z!(B+bvs=Vx)PyEKKmNlF(=Or|C4!u~Pz%RlDq z7L;yHq2~H&NeaD6+#>d?pcCm-&|<@IO^_1aHMQhEf1eQxN--pn~eP-bWfwcbxl zQf3GW$I8&JEt#`dP<l0mHsPlwDZPS1e`4sDp3K=ND1Cy`CwjL}Q0RdS{o0fiYGK?j z)FuP}{JKypl4;4_rOz_-i&s)+3d&4Pp;h{6Ny<!77kW8EzqVyg&MR?woHq^qI@eE2 zQeGAmYNnxI`ZDJ%L7Al~v}ivqNtq=m)LKKCLC)EN!WTP+S{9`xDYFHIeP>{H^~<A= zh+D)pfT5O0X-NvbLae*=)`tERg0=1!lzvTF8BqGg81)MZt;A5Pf}C>%g)0$5t&Y-? zb(te5oDmGQCdfHgQ05BCTv3;~f<jx%s<i=So}kPVlzD<OPf$4PWYxNW!k12Q@6H#L z`GPWEP-wA+S|3mr2+9IY;Y`7vUmz$81cfu3p>jdate|8CB`YX=p&gGj?S4Svenyu! zpeY-p7{@5|`U8S8pedVzoSZ!e)KC;-zl4-QU6+tDC@6!1!ufUpuN?ilEEIKFC@2dB zWuc&Oh8|EO0cDY(EE1GOg0e_Z=sgD1=76$TP!<cyVnJCfC|m^$s4W5I6+wALP+k#~ zR|JLHFrc;ulqG_)L{OFp$`V20N@GBc29%|OvQ$u(3d&MJp(l&=<yB1y$M#iC*%p-W zs-V28DfHT0O`A9-S2&c>yQO9HV`&-vS6a5Bjf@^DosYgKEu#-g%jj*=GWw3RjGiDZ zqg|(Ew9>SUHkX#sX3{d+SXxF)OUr0CX&J2`Eu&7SWz^8LjQW<AQG3!dj(1wNy^U-~ z8`;h_vR!RtyW7b2w2|#?Biomf(XX12#s10^T5Jj}HiZ_OkrtCejg9@)GC^4;D9Z$8 znV?X|V}Hf_;@Ic%vkpUr7WJB-ye25Lir8N*7nJ3KvRqJ>3kvNh_E#$eWrd)u5R?^y zLd%Q&)k;BGDJUxiWu>6dR%3s)N>Ek_$|^xwB`CD+tfD@0#8wN+YC%~oD60j9{vfNU z!KADalr@5~Mo`uW3O$ISsPm+()s%3ST&pReCtWKjYc+*-!RzRA3`L9ZW68OePitcB zStls#1chG8P_!XZ){DCEX-`a9FDUB;g?`OYv^r99f|3)IoS@_cg`Ut*v{O<x2+9UQ z*&rwz1cg0msIh>uQBXDt%0@xiC@A!{hT0!cHVMimLD?iIn*@da*-!@p%8;N83CfV5 z3<(N7x}gpRlwm;`7L;K@85R`I0fsshP(}o0L{LTqWkgUoYh>{Wr9VcSH6_&6&6;vJ zN=vTgH){&#eU2^XnXDR*Vo6`OMN^JMX-Uc!LE+4l#phu@bE~M!R?(uZqD5OZ<ydeX z=duBHJc=djGO8)zDtuH>Mm6O`a2<W~pgI}Fl9X+tF55KaRFtzD_rRxv82!_rIupf` zl<k7DT~M~8E-{7vX;7UFC_6;I><}&5AzHLU^e+9=pgI>&b_&W)LD?xNI|YT_YEYdI zD7yq@muL|`#5YvfFS|sG=;dN-+$|`(1!cFO?ADYELFx2zu{G`yls$s7M^N?%3cXxx zje7-Uub}J|l)ZvNFBe<mK0(<hDEkCuUqs<rc?^{Fnu|UwEu#lY%ji$iGJ1!!jJBSZ z(Z<s<T60=PD^AO3uW1==F)gD-re(CYw2U^FmQjn+GTK;LMoUY}Xg6sYtspI<PN!wm zw6yGE8`-5cvde8`SK7#~wvk<HBfH*4cB75#W*gb9HnMz5Mn66V*#O?p_#SvnXz`fP z;xVDcV_J(tuSboIXM_EMvR_j|54>Mf!ue*uri60}bvzrb9u5e~0a2F&qAmwSU1$}t z?>s0d2Q`Ib$F?67l!JmoJBoehAwfALD2D{)kf6}=;x+5*pk$+`Ft3A>jCCSLt<QAy zV0P|8jCFh+ysV;TF-EJ6SFeW!@37z<My+Dr;fQxw@M!T_MI9x5T=2#PZ(Q)kBi^{+ z(OYB{^_#pSf_FsljtJh7h<8Nr=xMTwwn5%e!8<B=M+NU_#5*c@^io+xyCUzH;2jgZ zV}f@q;vEw_dbqfL$H9wN+sDB(@Ph=utmEJ%(~?i_=o8~woe-20f^tGoPM|LF^FMmg zxbII2%1J>vDJUleg&H`Z=uy~1rv&Acri8Y8N>jqw{uC$+6}=9xqhE;q!D&!pO+O7v zGM3cS(@{U4*8NP6MIOC;HoD(BBY0;7?+j`c>;0LCcSi6yLu8{nud{-8R`AXW-r0zE zR`58xWVJ74ZO;kbIl((8c;_PCIl<%16nnz+f_Gl<&I{i8h<9G_IICr&ySod5cR}zj z2;PN=cR}ztUu4y7?AhLn;Kfgg`K~`6-;3bIdVdiVLxuOh^uq>z!s1gd3Cblwxg;o; z1ckmatKadnE|&%6vY=cRl*@ubADC5zpe|Pg<%*zO5tJ)}LeH1gUqi4iR|Vy&pj;J{ ztAav*m&H$K{C>G6DAxq#nxI@06neRAbU$-lP_7HgbwRl<DD+=hRSN2ILr`uA$_+ue zAt>}G27VCax9Fyz+!U0Xf^t((=v}hWUC}K;xg{vK1m%{X(5GahyP~|H@Ee*~ck_ah zk0@NX-v%YUPNXI$Wz+%Y%c@E2{aA8_xQ)`{XM(pyX}5K0;mU~QEPmqUQ!HKQ&<|UJ zVhM^BQT`P^6mJb5afZfMLyvlK%pkzPA@6+TKj-MuzeCBWzDNB`OKlzMC4C*Q=|<Y# zj=Acc9%dTjF4&fk$5)FipdbG_I_}_yDEz21-0%Ste+J0tO9)@2Z=L#{>RTtYHTd>O zcMr7Ur}ym<^^V&>^t6Tp6Z>RT6|r!A&R-cN)9A0?z}2KsUk0LCm|t$iIr;5ZOvwmJ zMr&b6p<)a~b1zgOLGiybxf_(npHRjn_+OcngS1Xf8H-{`ivN{K*dl&G7E}DMOv1WA zkx>^u4`BP+ePt3-+I?jbQfLbUk&kTml}Tu;-J&l3S0)u)owQCfX`N7{XSPmU6ImzN zZLHH*$_&(!XFtc*sk=w-k|Qvb9D$dgV+3%`6Gp%<SUcb+k3d|@pX)RBR`@p<Xt?ZR z>MxCp^1k30|HAysv!A6N$Y7K^U&8O(vGw<I8d2(9y;p}9<9O03)ZK<#^32!o7wodR zW7~!c)`X4UnQApT;FL;yI{(}o^v^H!ISHR(!NX}Xy-}|}eDgQ{{o~V<{lD{Ty=wjH zKYX9dv0fz1!jb7U1YUU`fm7c%5NHG6LZBVIg+N>QEd<)bA0c2K(EUTZ_&x%<PW>$c z7nT2j057E;A+U^35Xk@MPyN4n!ZNunMR-x?<n!gz7=rpy&!4lN`kZlWW8A&_wOPyG z|BDRI@BjL(@BZf7KM0G*=(q1bayx$bS3i7f<Kq5re+T`S`}lVcLDrp;@m6LKfk1|S z1YXNFPbWw6m)rl79(a*||3!~~%7?UT=4%i>q>^B}jK615S9kHKfq#dFi_~Y^_=zJ? zv|IYHr@5N>Ki=)<%;15wt19pXr%?wkKA&x4`Scwuo7>Y~&4;kuGAOsKA4~Z0XWjFY zV83L4|1{UL{quv2-FOMvMEfgvWW>Mya}>X!Dd{nx#KY~etN*~kbX<Pk!IJ4Od7Lg^ zQqKO`9(bT`yn1)>h=_HtQIhwJ_2KJZmK$!#a;7_{5BH`^d=7b7HjhtpdGhb?JWc*5 J<@r42{|~TFqW1s* literal 31232 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�wZ_eYvRP0z3(96e;n>1!javj|i=glg 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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
* 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 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
* [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
* 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
* [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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�wZ_eYvRP0z3(96e;n>1!javj|i=glg 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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 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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�wZ_eYvRP0z3(96e;n>1!javj|i=glg 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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 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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 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).