From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 30448A00C4; Thu, 5 Jan 2023 04:14:07 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2632640DFF; Thu, 5 Jan 2023 04:14:07 +0100 (CET) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mails.dpdk.org (Postfix) with ESMTP id 8C17F40041 for ; Thu, 5 Jan 2023 04:14:05 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1672888445; x=1704424445; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=EfhxsGnIdgPAX5Q7te2NzS+kA+PwVCbRJLZhCLEEchs=; b=RMUe/dDwuz6jhZUSO7XsmdcEXNUP3j73kyFI8q0akMZrByekoQGASIij lPoXNA/1N1XkwKVBDJyX5TeyctVBpZ6NrSGkUeu+lCqng3B82OwRYbpvB gRNmfncWTOGi14bIvA1r4Ai3k4s9HwQKxwFp3C8VoF4vWqfXBQUxhwUec qI1YFuAsuUfXLDeKNRuVPQ+SbbblBBBDQPLrOByj/DHHeQbp2CQArhsvZ Ocgyp+JuisRdF+9L3sGOu5ougmpBOtiFKegvF7qLcl7XrhT9wNfCoUDqj NLRu994T7/25TDjxhbBi45en8S+hLw34+pu89Sj3TlqZuHQlc0lvAu+/6 A==; X-IronPort-AV: E=McAfee;i="6500,9779,10580"; a="349325213" X-IronPort-AV: E=Sophos;i="5.96,301,1665471600"; d="scan'208";a="349325213" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Jan 2023 19:14:05 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10580"; a="829389471" X-IronPort-AV: E=Sophos;i="5.96,301,1665471600"; d="scan'208";a="829389471" Received: from unknown (HELO localhost.localdomain) ([10.239.252.93]) by orsmga005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Jan 2023 19:14:03 -0800 From: Hongbo Li To: dts@dpdk.org Cc: Hongbo Li Subject: [dts][PATCH V1 2/2] tests/vf_pf_reset: add new cases according to testplan Date: Thu, 5 Jan 2023 19:34:24 +0800 Message-Id: <20230105113424.22730-2-hongbox.li@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230105113424.22730-1-hongbox.li@intel.com> References: <20230105113424.22730-1-hongbox.li@intel.com> X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dts-bounces@dpdk.org 1.add case to test pf reset trigger vf reset 2.optimize the logic of finding the tester port in the script Signed-off-by: Hongbo Li --- tests/TestSuite_vf_pf_reset.py | 111 +++++++++++++++++++++++++++++++-- 1 file changed, 106 insertions(+), 5 deletions(-) diff --git a/tests/TestSuite_vf_pf_reset.py b/tests/TestSuite_vf_pf_reset.py index 6a9b5969..31cdbb39 100644 --- a/tests/TestSuite_vf_pf_reset.py +++ b/tests/TestSuite_vf_pf_reset.py @@ -61,12 +61,12 @@ class TestVfPfReset(TestCase): self.host_intf_1 = self.dut.ports_info[self.used_dut_port_1]["intf"] tester_port_0 = self.tester.get_local_port(self.used_dut_port_0) - self.tester_intf_0 = self.tester.get_interface(self.used_dut_port_0) - self.tester_mac_0 = self.tester.get_mac(self.used_dut_port_0) + self.tester_intf_0 = self.tester.get_interface(tester_port_0) + self.tester_mac_0 = self.tester.get_mac(tester_port_0) tester_port_1 = self.tester.get_local_port(self.used_dut_port_1) - self.tester_intf_1 = self.tester.get_interface(self.used_dut_port_1) - self.tester_mac_1 = self.tester.get_mac(self.used_dut_port_1) + self.tester_intf_1 = self.tester.get_interface(tester_port_1) + self.tester_mac_1 = self.tester.get_mac(tester_port_1) self.vf_mac1 = "00:11:22:33:44:11" self.vf_mac2 = "00:11:22:33:44:12" @@ -251,7 +251,8 @@ class TestVfPfReset(TestCase): pmd_output.execute_cmd(f"port reset {port}") pmd_output.execute_cmd(f"port start {port}") pmd_output.execute_cmd("start") - pmd_output.execute_cmd(f"show port info {port}") + port_info = pmd_output.execute_cmd(f"show port info {port}") + return port_info def setup_vm_env(self): """ @@ -1305,6 +1306,106 @@ class TestVfPfReset(TestCase): self.vm0_testpmd.quit() self.vm1_testpmd.quit() + def test_pf_reset_trigger_vf_reset(self): + """ + check pf reset and trigger vf reset + """ + # Set mac + self.ip_link_set( + host_intf=self.host_intf_0, + cmd="vf", + port=0, + types="mac", + value=self.vf_mac1, + ) + self.ip_link_set( + host_intf=self.host_intf_0, + cmd="vf", + port=1, + types="mac", + value=self.vf_mac2, + ) + + # Set the VLAN id of VF0 and VF1 + self.ip_link_set( + host_intf=self.host_intf_0, cmd="vf", port=0, types="vlan", value="1" + ) + self.ip_link_set( + host_intf=self.host_intf_0, cmd="vf", port=1, types="vlan", value="1" + ) + + # Launch pmd + param = "--portmask=0x3" + " --port-topology=paired" + self.pmd_output.start_testpmd( + cores="1S/4C/1T", + ports=[self.sriov_vfs_port[0].pci, self.sriov_vfs_port[1].pci], + param=param, + ) + + # Input pmd command + self.pmd_output.execute_cmd("set fwd mac") + self.pmd_output.execute_cmd("start") + self.pmd_output.execute_cmd("set allmulti all on") + self.pmd_output.execute_cmd("set promisc all off") + self.pmd_output.execute_cmd("set verbose 1") + out = self.pmd_output.execute_cmd("show port info all") + # Diable Promiscuous mode and enable Allmulticast mode + self.verify( + "Promiscuous mode: enabled" not in out, "disable promiscuous mode failed." + ) + self.verify( + "Allmulticast mode: disabled" not in out, + "enabled allmulticast mode failed.", + ) + + # The packets can be received + # By one VF and can be forward to another VF correctly + self.verify_send_packets( + self.tester_intf_0, + self.vf_mac1, + expect_value=1000, + count=1000, + vlan=1, + tx_port=self.tester_intf_0, + ) + # Pf reset + self.used_dut_port = self.dut_ports[0] + self.domain_id_0 = self.dut.ports_info[self.used_dut_port]["port"].domain_id + self.bus_id_0 = self.dut.ports_info[self.used_dut_port]["port"].bus_id + self.devfun_id_0 = self.dut.ports_info[self.used_dut_port]["port"].devfun_id + reset_cmd = ( + "echo 1 > /sys/bus/pci/devices/" + + self.domain_id_0 + + "\\:" + + self.bus_id_0 + + "\\:" + + self.devfun_id_0 + + "/reset" + ) + self.dut_new_session.send_expect(reset_cmd, "#") + # Check testpmd output "reset event" + out = self.pmd_output.get_output() + self.verify("reset event" in out, "testpmd did not report reset event") + # Send packets and verify again + port_info = self.reset_vf_ports(self.pmd_output) + # Check Diable Promiscuous mode and enable Allmulticast mode + self.verify( + "Promiscuous mode: enabled" not in port_info, + "disable promiscuous mode failed.", + ) + self.verify( + "Allmulticast mode: disabled" not in port_info, + "enabled allmulticast mode failed.", + ) + self.verify_send_packets( + self.tester_intf_0, + self.vf_mac1, + expect_value=1000, + count=1000, + vlan=1, + tx_port=self.tester_intf_0, + ) + def tear_down(self): """ Run after each test case. -- 2.17.1