From patchwork Mon Jul 20 14:38:03 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Owen Hilyard X-Patchwork-Id: 74505 Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 7129EA0527; Mon, 20 Jul 2020 16:38:09 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 69CC21BFEC; Mon, 20 Jul 2020 16:38:09 +0200 (CEST) Received: from mail-qv1-f46.google.com (mail-qv1-f46.google.com [209.85.219.46]) by dpdk.org (Postfix) with ESMTP id 61EFA1BFC5 for ; Mon, 20 Jul 2020 16:38:08 +0200 (CEST) Received: by mail-qv1-f46.google.com with SMTP id p7so7501951qvl.4 for ; Mon, 20 Jul 2020 07:38:08 -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:in-reply-to:references :mime-version:content-transfer-encoding; bh=kFJmjySVoN03qDHKFZVVNbcURpZlLItj7Hl0OskDZa4=; b=Ct8K2fByVWAnPu221ILgPRFLZMlXvnsb9mjwEGG068x0p7JKnR0ht35Beu0EDD0UM8 ZkAebM/7aZ7YzbDUs7jmGTHAOic4P3A3Teau8oaY84qWdj0YnGQJbf/0T0sxFLwnwP3X W5y93LHAQg6XRBijhmug6WZl9Gmhost5yD3hQ= 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=kFJmjySVoN03qDHKFZVVNbcURpZlLItj7Hl0OskDZa4=; b=mKYn5SdLuSQ7HEGXh7jKqGQfWBQCjgkx/nquvdfue5K/DMUESf7jzD84XgQFBZlz+s RJekhoMQNGvX7aoo/Pe//1QaccfCem1XyBofiPisyUT9Q/rob7Q3xi7fYoLm66FLrUpn nM6EPSo3BAeMh0vxnmyeb3vEBmSA08JJcTBAQV/kwJagS9iPReUNAwdgSGjZW2mUeNJI Q/MAu2pvhSwctnZ0OeeH3jZCEiTKhCiLYiQO10QtK1FSgGkMTBYHZu21kR73OY83TvjM Wbb8pEwXcx5XELdSi/IPz8t+8goFLJXpvCMszXv1wxUJXGiyFrvtguQFzE68BG/wDvX+ S8Hw== X-Gm-Message-State: AOAM531faKO8NnBXKZsag3ZytXRMbIZkgs9ZXHkBcdsGKoPd02wPoz14 VYwRIJ/RBFb2EW3bYds4YJEa/bEOxx2ygVXWENFS+ccbMCtxukmQmgQTtShHeB/oUsplSZyOl4f 3r99RSjlsMiBvPbMvpxh5fF2oaOYG7Q/NZ5oiyCb7oEZQIHIXDF6TzvFNIA== X-Google-Smtp-Source: ABdhPJwKoz32cwPHI8MVq2JqztiLuzuEsDY77lVmFC/9S1hUid0ouStNqEuuYHQC4XjkPzigOuH/lg== X-Received: by 2002:a0c:f385:: with SMTP id i5mr22465714qvk.4.1595255887299; Mon, 20 Jul 2020 07:38:07 -0700 (PDT) Received: from ohilyard-Alienware-m17.iol.unh.edu ([2606:4100:3880:1254::1033]) by smtp.gmail.com with ESMTPSA id f41sm20529145qtk.55.2020.07.20.07.38.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jul 2020 07:38:06 -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: Mon, 20 Jul 2020 10:38:03 -0400 Message-Id: <20200720143803.212272-1-ohilyard@iol.unh.edu> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200716194237.137641-1-ohilyard@iol.unh.edu> References: <20200716194237.137641-1-ohilyard@iol.unh.edu> MIME-Version: 1.0 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.