From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 7FB43A0540; Thu, 16 Jul 2020 21:42:46 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 364954F9A; Thu, 16 Jul 2020 21:42:46 +0200 (CEST) Received: from mail-qk1-f174.google.com (mail-qk1-f174.google.com [209.85.222.174]) by dpdk.org (Postfix) with ESMTP id 10A6F3421 for ; Thu, 16 Jul 2020 21:42:45 +0200 (CEST) Received: by mail-qk1-f174.google.com with SMTP id c30so6678739qka.10 for ; Thu, 16 Jul 2020 12:42:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iol.unh.edu; s=unh-iol; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=kFJmjySVoN03qDHKFZVVNbcURpZlLItj7Hl0OskDZa4=; b=EyVeEpQ9RiWtNDzL+7xXh8OTIbn+efpCVttiUVn8tTDrPpyI/St0MRaCxUUsydli8I GwBalUaCeNiTbZ0zaT9t1e75hyr+K042l/ALVm8ijDw4yM5fxyFfX0vlGYjajBwQHGms FhqnGTqrNaCwgaEXubYpfycshwpoU5cKR9yAY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=kFJmjySVoN03qDHKFZVVNbcURpZlLItj7Hl0OskDZa4=; b=ohE1T+z8hF577a4/bqH9nNk7iwUurubY1E63nO5OXsnUtuvFMAmq2J+xp26KN+JRZK iTl5bwjih3gMBXNmEbcYP20gFhIuTehQDM7NQUmfa4l316E9G39tFROjXH9etGmzY2GX ClWrfq1t3WF4k94McaiUNBu22Q2KyifgDJsrv8GDTwXYbBLlkgPTC/0weQ1plRM6y+zB /tStsSyPMJV7jJqqnRGRt9nyZro1FOV6j3Qx+1KRL9826CK4P1n+eq52YqhctWoLxEkJ xdKn0lZEup5Dw1vIWK3Ne6csB+V0xXI9643QvAF1/HkGI2tS0BI61w46KfQovUMRx8Ps /HEw== X-Gm-Message-State: AOAM530xsVGlB6y1XNyrMI7H2+9hCM3ATm6Ehqzkl4bRAePxtlvtZrRH r086HhyjR4rGkg6ft2zPRdqOhFIfagCNxUxHh3o4XqYezWFOKfMq4UEOYMPCEIBerjgACLP5EU6 rQhudOLMC3tgqGKVWEPvHiznkMJBl+tbF9wpi7AcTM1YWcUYIGWu/7rXo9g== X-Google-Smtp-Source: ABdhPJxrGewGGlSaOUugM1wtx2E9KoAJHqSS3TcBv2AHdnEBXKVLCQF2heTgKEplvuxXbKPAMVQMxw== X-Received: by 2002:a37:a316:: with SMTP id m22mr5792756qke.378.1594928563789; Thu, 16 Jul 2020 12:42:43 -0700 (PDT) Received: from ohilyard-Alienware-m17.iol.unh.edu ([2606:4100:3880:1254::1033]) by smtp.gmail.com with ESMTPSA id b22sm7690059qka.43.2020.07.16.12.42.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Jul 2020 12:42:43 -0700 (PDT) From: Owen Hilyard To: dts@dpdk.org Cc: qi.z.zhang@intel.com, matan@mellanox.com, stephen@networkplumber.org, jerinj@marvell.com, suanmingm@mellanox.com, ohilyard@iol.unh.edu, thomas@monjalon.net, lylavoie@iol.unh.edu Date: Thu, 16 Jul 2020 15:42:36 -0400 Message-Id: <20200716194237.137641-1-ohilyard@iol.unh.edu> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dts] [PATCH] mac_filter: Add multicast filtering test case X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 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 Sender: "dts" Sorry about sending this twice, I noticed after todays meeting that this was caught in the moderator queue and I want to get it out to the mailing list at large asap. add multicast filtering test case add multicast test case test plan Signed-off-by: Owen Hilyard --- test_plans/mac_filter_test_plan.rst | 27 ++++++++++++++++++++ tests/TestSuite_mac_filter.py | 39 ++++++++++++++++++++++++++--- 2 files changed, 62 insertions(+), 4 deletions(-) diff --git a/test_plans/mac_filter_test_plan.rst b/test_plans/mac_filter_test_plan.rst index 1335e9f..e8a4f66 100644 --- a/test_plans/mac_filter_test_plan.rst +++ b/test_plans/mac_filter_test_plan.rst @@ -172,3 +172,30 @@ Add one more different address:: testpmd> mac_addr add 0 Verify that the response is "No space left on device" (-ENOSPC) + +Test Case: Multicast Filter +=========================== + +Initialize first port without ``promiscuous mode``:: + + testpmd> set promisc 0 off + + +Add the multicast MAC address to the multicast filter:: + + testpmd> mcast_addr add 0 01:00:5E:00:00:00 + +Send a packet with multicast destination MAC address to port 0:: + + port 0/queue 0: received 1 packets + src=52:00:00:00:00:00 - dst=01:00:5E:00:00:00 - type=0x0800 - length=60 - nb_segs=1 - hw ptype: L2_ETHER L3_IPV4_EXT_UNKNOWN L4_UDP - sw ptype: L2_ETHER L3_IPV4 L4_UDP - l2_len=14 - l3_len=20 - l4_len=8 - Receive queue=0x0 + ol_flags: PKT_RX_L4_CKSUM_GOOD PKT_RX_IP_CKSUM_GOOD PKT_RX_OUTER_L4_CKSUM_UNKNOWN + + +Remove the multicast MAC address from the multicast filter:: + + testpmd> mcast_addr remove 0 01:00:5E:00:00:00 + +Send a packet with multicast destination MAC address to port 0 + +Verify that the packet was not received (Check for "received" in the output). There will be no output if the nic responds properly. \ No newline at end of file diff --git a/tests/TestSuite_mac_filter.py b/tests/TestSuite_mac_filter.py index 9912d23..b762c91 100644 --- a/tests/TestSuite_mac_filter.py +++ b/tests/TestSuite_mac_filter.py @@ -82,14 +82,18 @@ class TestMacFilter(TestCase): """ pass - def whitelist_send_packet(self, portid, destMac="00:11:22:33:44:55"): + def whitelist_send_packet(self, portid, destMac="00:11:22:33:44:55", count=-1): """ Send 1 packet to portid. """ + # You can't have an optional parameter use a class attribute as it's default value + if count == -1: + count = self.frames_to_send + itf = self.tester.get_interface(self.tester.get_local_port(portid)) pkt = Packet(pkt_type='UDP') pkt.config_layer('ether', {'src': '52:00:00:00:00:00', 'dst': destMac}) - pkt.send_pkt(self.tester, tx_port=itf, count=4) + pkt.send_pkt(self.tester, tx_port=itf, count=count) def test_add_remove_mac_address(self): """ @@ -119,7 +123,7 @@ class TestMacFilter(TestCase): out = self.dut.get_session_output() # check the packet DO NOT increase self.verify("received" not in out, - "Packet has been received on a new MAC address that has not been added yet") + "Packet has been received on a new MAC address that has been removed from the port") # add the different MAC address self.dut.send_expect("mac_addr add %d" % portid + " %s" % fake_mac_addr, "testpmd>") @@ -128,7 +132,7 @@ class TestMacFilter(TestCase): out = self.dut.get_session_output() cur_rxpkt = utils.regexp(out, "received ([0-9]+) packets") # check the packet increase - self.verify(int(cur_rxpkt)*self.frames_to_send == self.frames_to_send, + self.verify(int(cur_rxpkt) * self.frames_to_send == self.frames_to_send, "Packet has not been received on a new MAC address that has been added to the port") # remove the fake MAC address @@ -176,6 +180,33 @@ class TestMacFilter(TestCase): self.verify("No space left on device" in out, "added 1 address more than max MAC addresses") + def test_multicast_filter(self): + """ + Add mac address and check packet can received + Remove mac address and check packet can't received + """ + # initialise first port without promiscuous mode + mcast_addr = "01:00:5E:00:00:00" + portid = self.dutPorts[0] + self.dut.send_expect(f"set promisc {portid:d} off", "testpmd> ") + self.dut.send_expect("clear port stats all", "testpmd> ") + + self.dut.send_expect(f"mcast_addr add {portid:d} {mcast_addr}", "testpmd>") + self.whitelist_send_packet(portid, mcast_addr, count=1) + time.sleep(1) + out = self.dut.get_session_output() + self.verify("received" in out, + "Packet has not been received when it should have on a broadcast address") + + self.dut.send_expect(f"mcast_addr remove {portid:d} {mcast_addr}", "testpmd>") + self.whitelist_send_packet(portid, mcast_addr, count=1) + time.sleep(1) + out = self.dut.get_session_output() + self.verify("received" not in out, + "Packet has been received when it should have ignored the broadcast") + + self.dut.send_expect("stop", "testpmd> ") + def tear_down(self): """ Run after each test case. -- 2.25.1