From: Weiyuan Li <weiyuanx.li@intel.com>
To: dts@dpdk.org
Cc: Weiyuan Li <weiyuanx.li@intel.com>
Subject: [dts][PATCH V2 1/4] tests/ice_iavf_fdir: add new test suite
Date: Fri, 29 Jul 2022 15:11:11 +0800 [thread overview]
Message-ID: <20220729071114.10788-1-weiyuanx.li@intel.com> (raw)
Add DPDK22.07 new feature test suite.
Signed-off-by: Weiyuan Li <weiyuanx.li@intel.com>
---
v2:
-modify the ice_iavf_fdir scipt tear_down method and destroy
environment first.
tests/TestSuite_ice_iavf_fdir.py | 365 ++++++++++++++++++++++++++++++-
1 file changed, 362 insertions(+), 3 deletions(-)
diff --git a/tests/TestSuite_ice_iavf_fdir.py b/tests/TestSuite_ice_iavf_fdir.py
index a4df6151..6b6ea2df 100644
--- a/tests/TestSuite_ice_iavf_fdir.py
+++ b/tests/TestSuite_ice_iavf_fdir.py
@@ -29,6 +29,20 @@ MAC_IPV4_PAY = {
],
}
+MAC_IPV4_PAY_MULTICAST = {
+ "match": [
+ 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=255, ttl=2, tos=4) / Raw("X" * 80)',
+ 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=255, ttl=2, tos=4)/UDP(sport=22,dport=23)/Raw("x" * 80)',
+ ],
+ "mismatch": [
+ 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.22",dst="224.0.0.1", proto=255, ttl=2, tos=4) / Raw("X" * 80)',
+ 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.2", proto=255, ttl=2, tos=4) / Raw("X" * 80)',
+ 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=1, ttl=2, tos=4) / Raw("X" * 80)',
+ 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=255, ttl=3, tos=4) / Raw("X" * 80)',
+ 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=255, ttl=2, tos=9) / Raw("X" * 80)',
+ ],
+}
+
MAC_IPV4_PAY_protocol = {
"match": [
'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", proto=1)/Raw("x" * 80)',
@@ -46,6 +60,24 @@ MAC_IPV4_PAY_protocol = {
],
}
+MAC_IPV4_PAY_multicast_protocol = {
+ "match": [
+ 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=1)/Raw("x" * 80)',
+ 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.19",dst="224.0.0.1", proto=1)/Raw("x" * 80)',
+ 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", ttl=2, tos=4)/UDP(sport=22,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=17)/TCP(sport=22,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=17, ttl=2, tos=4)/Raw("x" * 80)',
+ 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=17)/Raw("x" * 80)',
+ ],
+ "mismatch": [
+ 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.2", proto=1)/Raw("x" * 80)',
+ 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", proto=6)/UDP(sport=22,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1")/TCP(sport=22,dport=23)/Raw("x" * 80)',
+ 'Ether(dst="11:22:33:44:55:66")/IP(src="192.168.0.20",dst="224.0.0.1", ttl=2, tos=4)/SCTP()/Raw("x" * 80)',
+ ],
+}
+
+
MAC_IPV4_UDP = {
"match": [
'Ether(dst="00:11:22:33:44:55")/IP(src="192.168.0.20",dst="192.168.0.21", ttl=2, tos=4) /UDP(sport=22,dport=23)/Raw("x" * 80)'
@@ -105,6 +137,20 @@ MAC_IPV6_PAY = {
],
}
+MAC_IPV6_PAY_MULTICAST = {
+ "match": [
+ 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::2", nh=0, tc=1, hlim=2)/("X"*480)',
+ 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::2", nh=0, tc=1, hlim=2)/UDP(sport=22,dport=23)/("X"*480)',
+ ],
+ "mismatch": [
+ 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::1", src="2001::2", nh=0, tc=1, hlim=2)/("X"*480)',
+ 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::1", nh=0, tc=1, hlim=2)/("X"*480)',
+ 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::2", nh=2, tc=1, hlim=2)/("X"*480)',
+ 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::2", nh=0, tc=2, hlim=2)/("X"*480)',
+ 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::2", nh=0, tc=1, hlim=5)/("X"*480)',
+ ],
+}
+
MAC_IPV6_PAY_protocol = {
"match": [
'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2", nh=17, tc=1, hlim=2)/("X"*480)',
@@ -121,6 +167,22 @@ MAC_IPV6_PAY_protocol = {
],
}
+MAC_IPV6_PAY_multicast_protocol = {
+ "match": [
+ 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", src="2001::2", nh=17, tc=1, hlim=2)/("X"*480)',
+ 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2")/UDP(sport=22,dport=23)/("X"*480)',
+ 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", nh=17)/TCP(sport=22,dport=23)/("X"*480)',
+ 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2")/UDP(sport=22,dport=23)/TCP(sport=22,dport=23)/("X"*480)',
+ 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", nh=6)/("X"*480)',
+ 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2")/TCP(sport=22,dport=23)/("X"*480)',
+ ],
+ "mismatch": [
+ 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::3", nh=1)/("X"*480)',
+ 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2")/SCTP()/("X"*480)',
+ 'Ether(dst="11:22:33:44:55:66")/IPv6(dst="ff01::2", nh=1)/TCP(sport=22,dport=23)/("X"*480)',
+ ],
+}
+
MAC_IPV6_UDP = {
"match": [
'Ether(dst="00:11:22:33:44:55")/IPv6(dst="CDCD:910A:2222:5498:8475:1111:3900:2020", src="2001::2",tc=1, hlim=2)/UDP(sport=22,dport=23)/("X"*480)'
@@ -7214,6 +7276,94 @@ tv_mac_ipv4_gre_ipv6_tcp_mark = {
"check_param": {"port_id": 0, "passthru": 1, "mark_id": 3},
}
+tv_mac_ipv4_pay_queue_index_multicast = {
+ "name": "test_mac_ipv4_pay_queue_index_multicast",
+ "rule": "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 224.0.0.1 proto is 255 ttl is 2 tos is 4 / end actions queue index 1 / mark / end",
+ "scapy_str": MAC_IPV4_PAY_MULTICAST,
+ "check_param": {"port_id": 0, "queue": 1, "mark_id": 0},
+}
+
+tv_mac_ipv4_pay_rss_multicast = {
+ "name": "test_mac_ipv4_pay_rss_multicast",
+ "rule": "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 224.0.0.1 proto is 255 ttl is 2 tos is 4 / end actions rss queues 2 3 end / mark / end",
+ "scapy_str": MAC_IPV4_PAY_MULTICAST,
+ "check_param": {"port_id": 0, "queue": [2, 3], "mark_id": 0},
+}
+
+tv_mac_ipv4_pay_passthru_multicast = {
+ "name": "test_mac_ipv4_pay_passthru_multicast",
+ "rule": "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 224.0.0.1 proto is 255 ttl is 2 tos is 4 / end actions passthru / mark / end",
+ "scapy_str": MAC_IPV4_PAY_MULTICAST,
+ "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0},
+}
+
+tv_mac_ipv4_pay_drop_multicast = {
+ "name": "test_mac_ipv4_pay_drop_multicast",
+ "rule": "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 224.0.0.1 proto is 255 ttl is 2 tos is 4 / end actions drop / mark / end",
+ "scapy_str": MAC_IPV4_PAY_MULTICAST,
+ "check_param": {"port_id": 0, "drop": 1, "mark_id": 0},
+}
+
+tv_mac_ipv4_pay_mark_rss_multicast = {
+ "name": "test_mac_ipv4_pay_mark_rss_multicast",
+ "rule": "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 224.0.0.1 proto is 255 ttl is 2 tos is 4 / end actions mark / rss / end",
+ "scapy_str": MAC_IPV4_PAY_MULTICAST,
+ "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0},
+}
+
+tv_mac_ipv4_pay_mark_multicast = {
+ "name": "test_mac_ipv4_pay_mark_multicast",
+ "rule": "flow create 0 ingress pattern eth / ipv4 src is 192.168.0.20 dst is 224.0.0.1 proto is 255 ttl is 2 tos is 4 / end actions mark / end",
+ "scapy_str": MAC_IPV4_PAY_MULTICAST,
+ "check_param": {"port_id": 0, "mark_id": 0},
+}
+
+tv_mac_ipv6_pay_queue_index_multicast = {
+ "name": "test_mac_ipv4_pay_queue_index_multicast",
+ "rule": "flow create 0 ingress pattern eth / ipv6 dst is ff01::2 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions queue index 15 / mark / end",
+ "scapy_str": MAC_IPV6_PAY_MULTICAST,
+ "check_param": {"port_id": 0, "queue": 15, "mark_id": 0},
+}
+
+tv_mac_ipv6_pay_rss_multicast = {
+ "name": "test_mac_ipv6_pay_rss_multicast",
+ "rule": "flow create 0 ingress pattern eth / ipv6 dst is ff01::2 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions rss queues 8 9 10 11 12 13 14 15 end / mark / end",
+ "scapy_str": MAC_IPV6_PAY_MULTICAST,
+ "check_param": {
+ "port_id": 0,
+ "queue": [8, 9, 10, 11, 12, 13, 14, 15],
+ "mark_id": 0,
+ },
+}
+
+tv_mac_ipv6_pay_passthru_multicast = {
+ "name": "test_mac_ipv6_pay_passthru_multicast",
+ "rule": "flow create 0 ingress pattern eth / ipv6 dst is ff01::2 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions passthru / mark / end",
+ "scapy_str": MAC_IPV6_PAY_MULTICAST,
+ "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0},
+}
+
+tv_mac_ipv6_pay_drop_multicast = {
+ "name": "test_mac_ipv6_pay_drop_multicast",
+ "rule": "flow create 0 ingress pattern eth / ipv6 dst is ff01::2 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions drop / mark / end",
+ "scapy_str": MAC_IPV6_PAY_MULTICAST,
+ "check_param": {"port_id": 0, "drop": 1, "mark_id": 0},
+}
+
+tv_mac_ipv6_pay_mark_rss_multicast = {
+ "name": "test_mac_ipv6_pay_mark_rss_multicast",
+ "rule": "flow create 0 ingress pattern eth / ipv6 dst is ff01::2 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions mark / rss / end",
+ "scapy_str": MAC_IPV6_PAY_MULTICAST,
+ "check_param": {"port_id": 0, "passthru": 1, "mark_id": 0},
+}
+
+tv_mac_ipv6_pay_mark_multicast = {
+ "name": "test_mac_ipv6_pay_mark_multicast",
+ "rule": "flow create 0 ingress pattern eth / ipv6 dst is ff01::2 src is 2001::2 proto is 0 hop is 2 tc is 1 / end actions mark / end",
+ "scapy_str": MAC_IPV6_PAY_MULTICAST,
+ "check_param": {"port_id": 0, "mark_id": 0},
+}
+
vectors_ipv4_pay = [
tv_mac_ipv4_pay_queue_index,
tv_mac_ipv4_pay_mark_rss,
@@ -7223,6 +7373,15 @@ vectors_ipv4_pay = [
tv_mac_ipv4_pay_mark,
]
+vectors_ipv4_pay_multicast = [
+ tv_mac_ipv4_pay_queue_index_multicast,
+ tv_mac_ipv4_pay_rss_multicast,
+ tv_mac_ipv4_pay_passthru_multicast,
+ tv_mac_ipv4_pay_drop_multicast,
+ tv_mac_ipv4_pay_mark_rss_multicast,
+ tv_mac_ipv4_pay_mark_multicast,
+]
+
vectors_ipv4_udp = [
tv_mac_ipv4_udp_drop,
tv_mac_ipv4_udp_queue_group,
@@ -7259,6 +7418,15 @@ vectors_ipv6_pay = [
tv_mac_ipv6_pay_mark,
]
+vectors_ipv6_pay_multicast = [
+ tv_mac_ipv6_pay_queue_index_multicast,
+ tv_mac_ipv6_pay_rss_multicast,
+ tv_mac_ipv6_pay_passthru_multicast,
+ tv_mac_ipv6_pay_drop_multicast,
+ tv_mac_ipv6_pay_mark_rss_multicast,
+ tv_mac_ipv6_pay_mark_multicast,
+]
+
vectors_ipv6_udp = [
tv_mac_ipv6_udp_drop,
tv_mac_ipv6_udp_queue_group,
@@ -8415,13 +8583,56 @@ class TestICEIAVFFdir(TestCase):
# get PF interface name
self.used_dut_port_0 = self.dut_ports[0]
self.used_dut_port_1 = self.dut_ports[1]
-
+ self.flag = "vf-true-promisc-support"
+ self.default_stats = self.dut.get_priv_flags_state(
+ self.dut.ports_info[self.dut_ports[0]]["intf"], self.flag
+ )
+ if (
+ self.running_case
+ in [
+ "test_mac_ipv4_pay_multicast",
+ "test_mac_ipv4_multicast_protocol",
+ "test_mac_ipv6_pay_multicast",
+ "test_mac_ipv6_multicast_protocol",
+ ]
+ and self.default_stats
+ ):
+ self.dut.send_expect(
+ "ethtool --set-priv-flags %s %s on"
+ % (self.dut.ports_info[self.dut_ports[0]]["intf"], self.flag),
+ "# ",
+ )
+ self.dut.send_expect(
+ "ethtool --show-priv-flags %s"
+ % (self.dut.ports_info[self.dut_ports[0]]["intf"]),
+ "# ",
+ )
# generate 2 VFs on PF
self.dut.generate_sriov_vfs_by_port(self.used_dut_port_0, 2, driver=driver)
self.dut.generate_sriov_vfs_by_port(self.used_dut_port_1, 2, driver=driver)
self.sriov_vfs_pf0 = self.dut.ports_info[self.used_dut_port_0]["vfs_port"]
self.sriov_vfs_pf1 = self.dut.ports_info[self.used_dut_port_1]["vfs_port"]
-
+ if (
+ self.running_case
+ in [
+ "test_mac_ipv4_pay_multicast",
+ "test_mac_ipv4_multicast_protocol",
+ "test_mac_ipv6_pay_multicast",
+ "test_mac_ipv6_multicast_protocol",
+ ]
+ and self.default_stats
+ ):
+ out = self.dut.send_expect(
+ "ip link set %s vf 0 trust on"
+ % (self.dut.ports_info[self.dut_ports[0]]["intf"]),
+ "# ",
+ )
+ if "RTNETLINK answers: Invalid argument" in out:
+ self.dut.send_expect(
+ "ip link set %s vf 0 trust on"
+ % (self.dut.ports_info[self.dut_ports[0]]["intf"]),
+ "# ",
+ )
self.dut.send_expect(
"ip link set %s vf 0 mac 00:11:22:33:44:55" % self.pf0_intf, "#"
)
@@ -8510,6 +8721,13 @@ class TestICEIAVFFdir(TestCase):
self.pmd_output.execute_cmd(
"port config 1 rss-hash-key ipv4 1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd1234abcd"
)
+ if self.running_case in [
+ "test_mac_ipv4_pay_multicast",
+ "test_mac_ipv4_multicast_protocol",
+ "test_mac_ipv6_pay_multicast",
+ "test_mac_ipv6_multicast_protocol",
+ ]:
+ self.pmd_output.execute_cmd("set allmulti all on")
res = self.pmd_output.wait_link_status_up("all", timeout=15)
self.verify(res is True, "there have port link is down")
self.pmd_output.execute_cmd("start")
@@ -8656,6 +8874,9 @@ class TestICEIAVFFdir(TestCase):
def test_mac_ipv4_pay(self):
self.rte_flow_process(vectors_ipv4_pay)
+ def test_mac_ipv4_pay_multicast(self):
+ self.rte_flow_process(vectors_ipv4_pay_multicast)
+
def test_mac_ipv4_udp(self):
self.rte_flow_process(vectors_ipv4_udp)
@@ -8668,6 +8889,9 @@ class TestICEIAVFFdir(TestCase):
def test_mac_ipv6_pay(self):
self.rte_flow_process(vectors_ipv6_pay)
+ def test_mac_ipv6_pay_multicast(self):
+ self.rte_flow_process(vectors_ipv6_pay_multicast)
+
def test_mac_ipv6_udp(self):
self.rte_flow_process(vectors_ipv6_udp)
@@ -8784,6 +9008,53 @@ class TestICEIAVFFdir(TestCase):
out4, pkt_num=6, check_param={"port_id": 0, "passthru": 1}, stats=False
)
+ def test_mac_ipv4_multicast_protocol(self):
+ rules = [
+ "flow create 0 ingress pattern eth / ipv4 dst is 224.0.0.1 proto is 1 / end actions queue index 1 / mark id 1 / end",
+ "flow create 0 ingress pattern eth / ipv4 dst is 224.0.0.1 proto is 17 / end actions passthru / mark id 3 / end",
+ ]
+
+ # validate rules
+ self.validate_fdir_rule(rules, check_stats=True)
+ self.check_fdir_rule(port_id=0, stats=False)
+
+ # create rules
+ rule_li = self.create_fdir_rule(rules, check_stats=True)
+ self.check_fdir_rule(port_id=0, rule_list=rule_li)
+
+ # pkt1 and pkt2 in "match" match rule 0, pkt3-6 match rule 1.
+ out1 = self.send_pkts_getouput(MAC_IPV4_PAY_multicast_protocol["match"][0:2])
+ rfc.check_iavf_fdir_mark(
+ out1,
+ pkt_num=2,
+ check_param={"port_id": 0, "mark_id": 1, "queue": 1},
+ stats=True,
+ )
+
+ out2 = self.send_pkts_getouput(MAC_IPV4_PAY_multicast_protocol["match"][2:6])
+ rfc.check_iavf_fdir_mark(
+ out2,
+ pkt_num=4,
+ check_param={"port_id": 0, "mark_id": 3, "passthru": 1},
+ stats=True,
+ )
+
+ # send mismatched packets:
+ out3 = self.send_pkts_getouput(MAC_IPV4_PAY_multicast_protocol["mismatch"])
+ rfc.check_iavf_fdir_mark(
+ out3, pkt_num=4, check_param={"port_id": 0, "passthru": 1}, stats=False
+ )
+
+ # destroy the rules and check there is no rule listed.
+ self.destroy_fdir_rule(rule_id=rule_li, port_id=0)
+ self.check_fdir_rule(port_id=0, stats=False)
+
+ # send matched packet
+ out4 = self.send_pkts_getouput(MAC_IPV4_PAY_multicast_protocol["match"])
+ rfc.check_iavf_fdir_mark(
+ out4, pkt_num=6, check_param={"port_id": 0, "passthru": 1}, stats=False
+ )
+
def test_mac_ipv6_protocol(self):
rules = [
"flow create 0 ingress pattern eth / ipv6 dst is CDCD:910A:2222:5498:8475:1111:3900:2020 proto is 17 / end actions rss queues 5 6 end / mark id 0 / end",
@@ -8831,6 +9102,53 @@ class TestICEIAVFFdir(TestCase):
out4, pkt_num=6, check_param={"port_id": 0, "passthru": 1}, stats=False
)
+ def test_mac_ipv6_multicast_protocol(self):
+ rules = [
+ "flow create 0 ingress pattern eth / ipv6 dst is ff01::2 proto is 17 / end actions rss queues 5 6 end / mark id 0 / end",
+ "flow create 0 ingress pattern eth / ipv6 dst is ff01::2 proto is 6 / end actions mark id 2 / rss / end",
+ ]
+
+ # validate rules
+ self.validate_fdir_rule(rules, check_stats=True)
+ self.check_fdir_rule(port_id=0, stats=False)
+
+ # create rules
+ rule_li = self.create_fdir_rule(rules, check_stats=True)
+ self.check_fdir_rule(port_id=0, rule_list=rule_li)
+
+ # pkt1-4 in "match" match rule 0, pkt5-6 match rule 1.
+ out1 = self.send_pkts_getouput(MAC_IPV6_PAY_multicast_protocol["match"][0:4])
+ rfc.check_iavf_fdir_mark(
+ out1,
+ pkt_num=4,
+ check_param={"port_id": 0, "mark_id": 0, "queue": [5, 6]},
+ stats=True,
+ )
+
+ out2 = self.send_pkts_getouput(MAC_IPV6_PAY_multicast_protocol["match"][4:6])
+ rfc.check_iavf_fdir_mark(
+ out2,
+ pkt_num=2,
+ check_param={"port_id": 0, "mark_id": 2, "passthru": 1},
+ stats=True,
+ )
+
+ # send mismatched packets:
+ out3 = self.send_pkts_getouput(MAC_IPV6_PAY_multicast_protocol["mismatch"])
+ rfc.check_iavf_fdir_mark(
+ out3, pkt_num=3, check_param={"port_id": 0, "passthru": 1}, stats=False
+ )
+
+ # destroy the rules and check there is no rule listed.
+ self.destroy_fdir_rule(rule_id=rule_li, port_id=0)
+ self.check_fdir_rule(port_id=0, stats=False)
+
+ # send matched packet
+ out4 = self.send_pkts_getouput(MAC_IPV6_PAY_multicast_protocol["match"])
+ rfc.check_iavf_fdir_mark(
+ out4, pkt_num=6, check_param={"port_id": 0, "passthru": 1}, stats=False
+ )
+
@skip_unsupported_pkg("os default")
def test_mac_ipv4_gtpu_eh_without_teid(self):
rules = [
@@ -11603,8 +11921,49 @@ class TestICEIAVFFdir(TestCase):
def tear_down(self):
# destroy all flow rule on port 0
- self.dut.kill_all()
self.destroy_env()
+ self.dut.kill_all()
+ self.flag = "vf-true-promisc-support"
+ self.default_stats = self.dut.get_priv_flags_state(
+ self.dut.ports_info[self.dut_ports[0]]["intf"], self.flag
+ )
+ if (
+ self.running_case
+ in [
+ "test_mac_ipv4_pay_multicast",
+ "test_mac_ipv4_multicast_protocol",
+ "test_mac_ipv6_pay_multicast",
+ "test_mac_ipv6_multicast_protocol",
+ ]
+ and self.default_stats
+ ):
+ self.dut.send_expect(
+ "ethtool --set-priv-flags %s %s off"
+ % (self.dut.ports_info[self.dut_ports[0]]["intf"], self.flag),
+ "# ",
+ )
+ if (
+ self.running_case
+ in [
+ "test_mac_ipv4_pay_multicast",
+ "test_mac_ipv4_multicast_protocol",
+ "test_mac_ipv6_pay_multicast",
+ "test_mac_ipv6_multicast_protocol",
+ ]
+ and self.default_stats
+ ):
+ out = self.dut.send_expect(
+ "ip link set %s vf 0 trust off"
+ % (self.dut.ports_info[self.dut_ports[0]]["intf"]),
+ "# ",
+ )
+ if "RTNETLINK answers: Invalid argument" in out:
+ self.dut.send_expect(
+ "ip link set %s vf 0 trust off"
+ % (self.dut.ports_info[self.dut_ports[0]]["intf"]),
+ "# ",
+ )
+
if getattr(self, "session_secondary", None):
self.dut.close_session(self.session_secondary)
if getattr(self, "session_third", None):
--
2.27.0
next reply other threads:[~2022-07-29 7:11 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-29 7:11 Weiyuan Li [this message]
2022-07-29 7:11 ` [dts][PATCH V2 2/4] tests/ice_advanced_iavf_rss: " Weiyuan Li
2022-07-29 7:11 ` [dts][PATCH V2 3/4] test_plans/ice_iavf_fdir: add new testplan Weiyuan Li
2022-07-29 7:11 ` [dts][PATCH V2 4/4] test_plans/ice_advanced_iavf_rss: " Weiyuan Li
2022-08-01 7:17 ` Jiale, SongX
2022-08-01 10:20 ` [dts][PATCH V2 1/4] tests/ice_iavf_fdir: add new test suite Peng, Yuan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220729071114.10788-1-weiyuanx.li@intel.com \
--to=weiyuanx.li@intel.com \
--cc=dts@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).