* [DTS][PATCH V1 1/3] test_plan/ice_config_port_speed: add new test plan
2023-07-17 6:52 [DTS][PATCH V1 0/3] add new test suite ice_config_port_speed Jin Ling
@ 2023-07-17 6:52 ` Jin Ling
2023-07-17 6:52 ` [DTS][PATCH V1 2/3] tests/ice_config_port_speed: add new test cases Jin Ling
2023-07-17 6:52 ` [DTS][PATCH V1 3/3] test_plans/index: add new test_suite Jin Ling
2 siblings, 0 replies; 4+ messages in thread
From: Jin Ling @ 2023-07-17 6:52 UTC (permalink / raw)
To: dts; +Cc: Jin Ling
Signed-off-by: Jin Ling <jin.ling@intel.com>
---
.../ice_config_port_speed_test_plan.rst | 141 ++++++++++++++++++
1 file changed, 141 insertions(+)
create mode 100644 test_plans/ice_config_port_speed_test_plan.rst
diff --git a/test_plans/ice_config_port_speed_test_plan.rst b/test_plans/ice_config_port_speed_test_plan.rst
new file mode 100644
index 00000000..afb13896
--- /dev/null
+++ b/test_plans/ice_config_port_speed_test_plan.rst
@@ -0,0 +1,141 @@
+.. Copyright (c) <2022-2023>, Intel Corporation
+ All rights reserved.
+
+===========================
+ICE Config Port Speed Tests
+===========================
+
+Description
+===========
+
+This document provides the testplan for configuring the port speed function in testpmd
+You can get the link speed supported of the NIC by executing `ethtool <iface>`, only the supported speed can be configured,
+if its' link partner also supports this speed, then once the speed of the dut is reconfigured, the link partner's speed will also be configured
+
+
+Prerequisites
+=============
+
+topology
+--------
+
+dut_port_0 <-----------> tester_port_0
+
+
+Hardware
+--------
+
+Supported NICs: columbiaville_25g/columbiaville_100g
+
+Software
+--------
+
+dpdk: http://dpdk.org/git/dpdk
+scapy: http://www.secdev.org/projects/scapy/
+
+General set up
+--------------
+
+1. Compile DPDK::
+
+ CC=gcc meson --werror -Denable_kmods=True -Dlibdir=lib --default-library=static x86_64-native-linuxapp-gcc
+ ninja -C x86_64-native-linuxapp-gcc -j 110
+
+2. Get the pci device id of DUT, for example::
+
+ ./usertools/dpdk-devbind.py -s
+
+ 0000:31:00.0 'Device 159b' if=ens4 drv=ice unused=vfio-pci
+
+3. Get the supported speed of dut and tester::
+
+ Dut::
+ ethtool ens785f0:
+ Settings for ens785f0:
+ Supported ports: [ FIBRE ]
+ Supported link modes: 1000baseT/Full
+ 10000baseT/Full
+ 25000baseCR/Full
+ 25000baseSR/Full
+ 1000baseX/Full
+ 10000baseSR/Full
+ 10000baseLR/Full
+ Supported pause frame use: Symmetric
+ Supports auto-negotiation: Yes
+ Supported FEC modes: None
+ Advertised link modes: 1000baseX/Full
+ 10000baseSR/Full
+
+ tester::
+ ethtool ens260f0
+ Settings for ens260f0:
+ Supported ports: [ FIBRE ]
+ Supported link modes: 1000baseX/Full
+ 10000baseSR/Full
+ Supported pause frame use: Symmetric Receive-only
+ Supports auto-negotiation: Yes
+ Supported FEC modes: Not reported
+ Advertised link modes: 1000baseX/Full
+ 10000baseSR/Full
+ Advertised pause frame use: No
+ Advertised auto-negotiation: Yes
+
+ Notice that the link speed of dut cannot be configured when dut is `link down`,
+ so if dut is `link up` , only `Advertised link modes` can be cofigured.
+
+
+Test case 1: port config link speed
+-------------------------------------
+
+In this test case, use `port config <port_id> speed 10|100|1000|10000|25000|40000|50000|100000|200000|400000|auto duplex half|full|auto`
+to set port speed, then use `show port info <port_id>` can see the new speed and duplex.
+
+test steps
+~~~~~~~~~~
+1. launch testpmd::
+
+ ./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c f -n 4 -a 31:00.0 -- -i
+
+2. make sure that the link status of dut is up::
+
+ testpmd> show port info 0
+ ********************* Infos for port 0 *********************
+ MAC address: B4:96:91:BB:64:D8
+ Device name: 31:00.0
+ Driver name: net_ice
+ Firmware-version: 4.20 0x8001642c 1.3341.0
+ Devargs:
+ Connect to socket: 0
+ memory allocation on the socket: 0
+ *Link status: up
+ Link speed: 100 Gbps*
+ Link duplex: full-duplex
+ Autoneg status: On
+
+3. stop all ports and set new speed::
+
+ testpmd> port stop all
+ testpmd> port config 0 speed 1000|100000 duplex full
+ testpmd> port start all
+
+Expected result
+~~~~~~~~~~~~~~~
+
+ 1. Check that the speed has been changed::
+
+ testpmd> show port info all
+
+ ********************* Infos for port 0 *********************
+ ...
+ Link speed: 10 Gbps
+ Link duplex: full-duplex
+ ...
+
+ 2. check tester's has been changed if it supports this spped::
+
+ ethtool ens10:
+ Settings for ens10:
+ ...
+ Speed: 10000Mb/s
+ Duplex: Full
+ ...
--
2.25.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* [DTS][PATCH V1 2/3] tests/ice_config_port_speed: add new test cases
2023-07-17 6:52 [DTS][PATCH V1 0/3] add new test suite ice_config_port_speed Jin Ling
2023-07-17 6:52 ` [DTS][PATCH V1 1/3] test_plan/ice_config_port_speed: add new test plan Jin Ling
@ 2023-07-17 6:52 ` Jin Ling
2023-07-17 6:52 ` [DTS][PATCH V1 3/3] test_plans/index: add new test_suite Jin Ling
2 siblings, 0 replies; 4+ messages in thread
From: Jin Ling @ 2023-07-17 6:52 UTC (permalink / raw)
To: dts; +Cc: Jin Ling
Signed-off-by: Jin Ling <jin.ling@intel.com>
---
tests/TestSuite_ice_config_port_speed.py | 63 ++++++++++++++++++++++++
1 file changed, 63 insertions(+)
create mode 100644 tests/TestSuite_ice_config_port_speed.py
diff --git a/tests/TestSuite_ice_config_port_speed.py b/tests/TestSuite_ice_config_port_speed.py
new file mode 100644
index 00000000..bc7b38de
--- /dev/null
+++ b/tests/TestSuite_ice_config_port_speed.py
@@ -0,0 +1,63 @@
+import copy
+import os
+import re
+import time
+from framework.settings import *
+import framework.utils as utils
+import tests.rte_flow_common as rfc
+from framework.packet import Packet
+from framework.pmd_output import PmdOutput
+from framework.test_case import TestCase, skip_unsupported_pkg
+from framework.utils import GREEN, RED
+
+class ConfigPortSpeed(TestCase):
+ def set_up_all(self):
+ """
+ Run at the start of each test suite.
+ """
+ self.dut_ports = self.dut.get_ports(self.nic)
+ self.pmdout = PmdOutput(self.dut)
+ # Get the Supported Speed list.
+ def set_up(args):
+ pass
+ def tear_down(args):
+ pass
+ def tear_down_all(self):
+ self.dut.kill_all()
+
+ def test_ice_config_port_speed(self):
+ # bind ice driver
+
+ # self.tester_kdriver = get_nic_driver(self.tester.ports_info[0]["type"])
+ self.pmdout.execute_cmd(f"./usertools/dpdk-devbind.py --force -b={self.kdriver} {self.dut.ports_info[0]['pci']}","#")
+ # self.pmdout.execute_cmd(f"./usertools/dpdk-devbind.py --force -b={self.drivername} {self.dut.ports_info[0]['peer']}","#")
+ link_speed = []
+ out = self.pmdout.execute_cmd(f"ethtool {self.dut.ports_info[0]['intf']}","#")
+ link_modes= re.findall('Advertised link modes: (.*)Advertised pause frame use',repr(out))
+ for line in link_modes[0].split(r"\r\n\t"):
+ if line !="":
+ line = line.strip().split("/")
+ speed = re.findall("(\w*)base",line[0])[0]
+ duplex= line[1]
+ link_speed.append((speed,duplex))
+
+ link_speed = list(set(link_speed))
+ # launch testpmd
+ self.pmdout.execute_cmd(f"./usertools/dpdk-devbind.py --force -b={self.drivername} {self.dut.ports_info[0]['pci']}","#")
+ # self.pmdout.execute_cmd(f"./usertools/dpdk-devbind.py --force -b={self.kdriver} {self.dut.ports_info[0]['peer']}","#")
+ self.pmdout.start_testpmd("Default")
+
+ # make sure link speed is up
+ self.verify(self.pmdout.get_port_link_status(self.dut_ports[0])=="up","link is down, cannot set link speed")
+ for item in link_speed:
+ self.pmdout.execute_cmd("port stop all")
+ self.pmdout.execute_cmd(f"port config {self.dut_ports[0]} speed {item[0]} duplex {item[1].lower()}")
+ self.pmdout.execute_cmd("port start all")
+ self.pmdout.wait_link_status_up(self.dut_ports[0],timeout=30)
+ # port_info = self.pmdout.execute_cmd(f"show port info {self.dut_ports[0]}")
+ changed_link_speed = self.pmdout.get_port_link_speed(self.dut_ports[0])
+ change_link_duplex = self.pmdout.get_port_link_duplex(self.dut_ports[0])
+
+ self.verify(int(changed_link_speed) == eval(item[0])//1000
+ and item[1].lower() in change_link_duplex,
+ "link speed mode not changed")
--
2.25.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* [DTS][PATCH V1 3/3] test_plans/index: add new test_suite
2023-07-17 6:52 [DTS][PATCH V1 0/3] add new test suite ice_config_port_speed Jin Ling
2023-07-17 6:52 ` [DTS][PATCH V1 1/3] test_plan/ice_config_port_speed: add new test plan Jin Ling
2023-07-17 6:52 ` [DTS][PATCH V1 2/3] tests/ice_config_port_speed: add new test cases Jin Ling
@ 2023-07-17 6:52 ` Jin Ling
2 siblings, 0 replies; 4+ messages in thread
From: Jin Ling @ 2023-07-17 6:52 UTC (permalink / raw)
To: dts; +Cc: Jin Ling
Signed-off-by: Jin Ling <jin.ling@intel.com>
---
test_plans/index.rst | 1 +
1 file changed, 1 insertion(+)
diff --git a/test_plans/index.rst b/test_plans/index.rst
index 2ac4850d..beb1657e 100644
--- a/test_plans/index.rst
+++ b/test_plans/index.rst
@@ -57,6 +57,7 @@ The following are the test plans for the DPDK DTS automated test system.
ice_vf_support_multicast_address_test_plan
ice_rss_protocol_agnostic_flow_test_plan
ice_fdir_protocol_agnostic_flow_test_plan
+ ice_config_port_speed_test_plan
cloud_filter_with_l4_port_test_plan
dcf_lifecycle_test_plan
crypto_perf_cryptodev_perf_test_plan
--
2.25.1
^ permalink raw reply [flat|nested] 4+ messages in thread