diff mbox series

[net-next,v7,7/8] net: selftests: Add selftests sets with fixed speed

Message ID 20250219194213.10448-8-gerhard@engleder-embedded.com (mailing list archive)
State Changes Requested
Delegated to: Netdev Maintainers
Headers show
Series Support loopback mode speed selection | expand

Checks

Context Check Description
netdev/series_format success Posting correctly formatted
netdev/tree_selection success Clearly marked for net-next
netdev/ynl success Generated files up to date; no warnings/errors; no diff in generated;
netdev/fixes_present success Fixes tag not required for -next series
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 0 this patch: 0
netdev/build_tools success Errors and warnings before: 26 (+1) this patch: 26 (+1)
netdev/cc_maintainers warning 1 maintainers not CCed: horms@kernel.org
netdev/build_clang success Errors and warnings before: 0 this patch: 0
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/deprecated_api success None detected
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success No Fixes tag
netdev/build_allmodconfig_warn success Errors and warnings before: 1 this patch: 1
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 82 lines checked
netdev/build_clang_rust success No Rust files in patch. Skipping build
netdev/kdoc fail Errors and warnings before: 2 this patch: 6
netdev/source_inline success Was 0 now: 0

Commit Message

Gerhard Engleder Feb. 19, 2025, 7:42 p.m. UTC
Add PHY loopback selftest sets with fixed 100 Mbps and 1000 Mbps speed.

Signed-off-by: Gerhard Engleder <gerhard@engleder-embedded.com>
---
 include/net/selftests.h |  4 ++++
 net/core/selftests.c    | 46 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 50 insertions(+)

Comments

Jakub Kicinski Feb. 21, 2025, 2:14 a.m. UTC | #1
On Wed, 19 Feb 2025 20:42:12 +0100 Gerhard Engleder wrote:
> Add PHY loopback selftest sets with fixed 100 Mbps and 1000 Mbps speed.

Maybe an obvious question, maybe I'm missing something - but how 
is this going to scale? We have 120-ish link modes.
diff mbox series

Patch

diff --git a/include/net/selftests.h b/include/net/selftests.h
index a3e9bb959e3d..ba781fa6249a 100644
--- a/include/net/selftests.h
+++ b/include/net/selftests.h
@@ -7,9 +7,13 @@ 
 /**
  * enum net_selftest_set - selftest set ID
  * @NET_SELFTEST_CARRIER: Loopback tests based on carrier speed
+ * @NET_SELFTEST_100: Loopback tests with 100 Mbps
+ * @NET_SELFTEST_1000: Loopback tests with 1000 Mbps
  */
 enum net_selftest_set {
 	NET_TEST_LOOPBACK_CARRIER = 0,
+	NET_TEST_LOOPBACK_100,
+	NET_TEST_LOOPBACK_1000,
 };
 
 #if IS_ENABLED(CONFIG_NET_SELFTESTS)
diff --git a/net/core/selftests.c b/net/core/selftests.c
index 3a597a38566e..3149bd1f15d3 100644
--- a/net/core/selftests.c
+++ b/net/core/selftests.c
@@ -324,6 +324,26 @@  static int net_test_phy_loopback_enable_fn(struct net_device *ndev)
 
 static const NET_TEST(phy_loopback_enable, "PHY loopback enable");
 
+static int net_test_phy_loopback_100_enable_fn(struct net_device *ndev)
+{
+	if (!ndev->phydev)
+		return -EOPNOTSUPP;
+
+	return phy_loopback(ndev->phydev, true, 100);
+}
+
+static const NET_TEST(phy_loopback_100_enable, "PHY loopback 100 Mbps");
+
+static int net_test_phy_loopback_1000_enable_fn(struct net_device *ndev)
+{
+	if (!ndev->phydev)
+		return -EOPNOTSUPP;
+
+	return phy_loopback(ndev->phydev, true, 1000);
+}
+
+static const NET_TEST(phy_loopback_1000_enable, "PHY loopback 1000 Mbps");
+
 static int net_test_phy_loopback_disable_fn(struct net_device *ndev)
 {
 	if (!ndev->phydev)
@@ -376,11 +396,33 @@  static const struct net_test *net_selftests_carrier[] = {
 	&net_test_phy_loopback_disable,
 };
 
+static const struct net_test *net_selftests_100[] = {
+	&net_test_phy_phydev,
+	&net_test_phy_loopback_100_enable,
+	&net_test_phy_loopback_udp,
+	&net_test_phy_loopback_udp_mtu,
+	&net_test_phy_loopback_tcp,
+	&net_test_phy_loopback_disable,
+};
+
+static const struct net_test *net_selftests_1000[] = {
+	&net_test_phy_phydev,
+	&net_test_phy_loopback_1000_enable,
+	&net_test_phy_loopback_udp,
+	&net_test_phy_loopback_udp_mtu,
+	&net_test_phy_loopback_tcp,
+	&net_test_phy_loopback_disable,
+};
+
 static const struct net_test **net_selftests_set_get(int set)
 {
 	switch (set) {
 	case NET_TEST_LOOPBACK_CARRIER:
 		return net_selftests_carrier;
+	case NET_TEST_LOOPBACK_100:
+		return net_selftests_100;
+	case NET_TEST_LOOPBACK_1000:
+		return net_selftests_1000;
 	}
 
 	return NULL;
@@ -415,6 +457,10 @@  int net_selftest_set_get_count(int set)
 	switch (set) {
 	case NET_TEST_LOOPBACK_CARRIER:
 		return ARRAY_SIZE(net_selftests_carrier);
+	case NET_TEST_LOOPBACK_100:
+		return ARRAY_SIZE(net_selftests_100);
+	case NET_TEST_LOOPBACK_1000:
+		return ARRAY_SIZE(net_selftests_1000);
 	default:
 		return -EINVAL;
 	}