From: Mohan Prasad J <mohan.prasad@microchip.com>
To: <netdev@vger.kernel.org>, <davem@davemloft.net>, <kuba@kernel.org>
Cc: <shuah@kernel.org>, <bryan.whitehead@microchip.com>,
<mohan.prasad@microchip.com>, <UNGLinuxDriver@microchip.com>,
<edumazet@google.com>, <pabeni@redhat.com>,
<linux-kernel@vger.kernel.org>, <linux-kselftest@vger.kernel.org>,
<horms@kernel.org>, <brett.creeley@amd.com>, <rosenp@gmail.com>
Subject: [PATCH net-next 3/3] selftests: lan743x: Add testcase to check throughput of lan743x
Date: Wed, 4 Sep 2024 03:45:49 +0530 [thread overview]
Message-ID: <20240903221549.1215842-4-mohan.prasad@microchip.com> (raw)
In-Reply-To: <20240903221549.1215842-1-mohan.prasad@microchip.com>
Add testcase to check TCP throughput of lan743x network driver.
Test uses iperf3 to do performance testing of the driver.
TCP data at different speeds is sent, received and verified.
Signed-off-by: Mohan Prasad J <mohan.prasad@microchip.com>
---
.../net/hw/microchip/lan743x/lan743x.py | 33 +++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/tools/testing/selftests/drivers/net/hw/microchip/lan743x/lan743x.py b/tools/testing/selftests/drivers/net/hw/microchip/lan743x/lan743x.py
index 59f0be2a7..a3dcf7896 100755
--- a/tools/testing/selftests/drivers/net/hw/microchip/lan743x/lan743x.py
+++ b/tools/testing/selftests/drivers/net/hw/microchip/lan743x/lan743x.py
@@ -3,6 +3,7 @@
import time
import re
+import json
from lib.py import ksft_run, ksft_exit, ksft_pr, ksft_eq
from lib.py import KsftFailEx, KsftSkipEx
from lib.py import NetDrvEpEnv
@@ -75,6 +76,38 @@ def test_network_speed(cfg) -> None:
time.sleep(5)
verify_speed_and_duplex(cfg.ifname, speed, duplex)
+def test_tcp_throughput(cfg) -> None:
+ speeds = ["10", "100", "1000"]
+ """Test duration in seconds"""
+ test_duration = 5
+ target_ip = cfg.remote_addr
+
+ for speed in speeds:
+ set_speed_and_duplex(cfg.ifname, speed, 'full')
+ time.sleep(5)
+ verify_link_up(cfg.ifname)
+ send_command=f"iperf3 -c {target_ip} -t {test_duration} --json"
+ receive_command=f"iperf3 -c {target_ip} -t {test_duration} --reverse --json"
+ send_result = cmd(send_command)
+ receive_result = cmd(receive_command)
+ if send_result.ret != 0 or receive_result.ret != 0:
+ raise KsftSkipEx("No server is running")
+
+ send_output = send_result.stdout
+ receive_output = receive_result.stdout
+
+ send_data = json.loads(send_output)
+ receive_data = json.loads(receive_output)
+ """Convert throughput to Mbps"""
+ send_throughput = round(send_data['end']['sum_sent']['bits_per_second'] / 1e6, 2)
+ receive_throughput = round(receive_data['end']['sum_received']['bits_per_second'] / 1e6, 2)
+
+ ksft_pr(f"Send throughput: {send_throughput} Mbps, Receive throughput: {receive_throughput} Mbps")
+ """Check whether throughput is not below 0.9 times the set speed"""
+ threshold = float(speed) * 0.9
+ if send_throughput < threshold or receive_throughput < threshold:
+ raise KsftFailEx("Throughput is below threshold")
+
def main() -> None:
with NetDrvEpEnv(__file__) as cfg:
ksft_run(globs=globals(), case_pfx={"test_"}, args=(cfg,))
--
2.43.0
next prev parent reply other threads:[~2024-09-04 5:14 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-03 22:15 [PATCH net-next 0/3] lan743x: This series of patches are for lan743x driver testing Mohan Prasad J
2024-09-03 22:15 ` [PATCH net-next 1/3] selftests: lan743x: Add testfile for lan743x network driver Mohan Prasad J
2024-09-04 16:10 ` Brett Creeley
2024-09-06 6:54 ` Mohan.Prasad
2024-09-03 22:15 ` [PATCH net-next 2/3] selftests: lan743x: Add testcase to check speed and duplex state of lan743x Mohan Prasad J
2024-09-04 16:05 ` Brett Creeley
2024-09-06 6:52 ` Mohan.Prasad
2024-09-03 22:15 ` Mohan Prasad J [this message]
2024-09-04 16:15 ` [PATCH net-next 3/3] selftests: lan743x: Add testcase to check throughput " Brett Creeley
2024-09-06 6:56 ` Mohan.Prasad
2024-09-04 5:30 ` [PATCH net-next 0/3] lan743x: This series of patches are for lan743x driver testing Andrew Lunn
2024-09-06 6:45 ` Mohan.Prasad
2024-09-06 12:08 ` Andrew Lunn
2024-09-09 6:42 ` Mohan.Prasad
2024-09-09 13:24 ` Andrew Lunn
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=20240903221549.1215842-4-mohan.prasad@microchip.com \
--to=mohan.prasad@microchip.com \
--cc=UNGLinuxDriver@microchip.com \
--cc=brett.creeley@amd.com \
--cc=bryan.whitehead@microchip.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=rosenp@gmail.com \
--cc=shuah@kernel.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