1# Copyright (c) 2022 Nordic Semiconductor ASA
2# Copyright (c) 2023 Arm Limited (or its affiliates). All rights reserved.
3# SPDX-License-Identifier: Apache-2.0
4
5menuconfig NET_ZPERF
6	bool "zperf library"
7	select NET_CONTEXT_RCVTIMEO if NET_NATIVE_UDP
8	select NET_SOCKETS
9	help
10	  This option enables zperf library, which allows to generate
11	  network traffic and evaluate network bandwidth in conjunction
12	  with other devices running zperf or a desktop running the
13	  iperf2 utility.
14
15if NET_ZPERF
16
17config NET_ZPERF_LEGACY_HEADER_COMPAT
18	bool "Legacy iperf UDP header format"
19	help
20	  iperf 2.0.10 (2017) updated the UDP header format in a
21	  backwards incompatible manner that cannot be automatically
22	  detected. This option reverts the header format for use with
23	  iperf version 2.0.9 and earlier.
24
25config ZPERF_SESSION_PER_THREAD
26	bool "Run each session in a separate thread"
27	select EVENTS
28	help
29	  Each session is started in its own thread. This means
30	  that the system will use more memory because multiple
31	  stack frames are needed, so this is not enabled by default.
32	  User is also able to set each thread priority separately and
33	  the ZPERF_WORK_Q_THREAD_PRIORITY is a default value if thread
34	  priority is not set when starting the session.
35
36config ZPERF_WORK_Q_THREAD_PRIORITY
37	int "zperf work queue thread priority"
38	default NUM_PREEMPT_PRIORITIES
39	help
40	  Priority of the thread that handles zperf work queue.
41
42config ZPERF_WORK_Q_STACK_SIZE
43	int "zperf work queue thread stack size"
44	default 2048
45	help
46	  Stack size of the thread that handles zperf work queue.
47
48module = NET_ZPERF
49module-dep = NET_LOG
50module-str = Log level for zperf
51module-help = Enable debug message of zperf library.
52source "subsys/net/Kconfig.template.log_config.net"
53
54config NET_ZPERF_MAX_PACKET_SIZE
55	int "Maximum packet size"
56	default 1064
57	help
58	  Upper size limit for packets sent by zperf. Default allows for a 1kB
59	  payload with the 40 byte iperf UDP client header.
60
61config NET_ZPERF_SERVER
62	bool "zperf server support"
63	select NET_SOCKETS_SERVICE
64	help
65	  Support running a zperf server for testing downloads from the application
66
67config NET_ZPERF_MAX_SESSIONS
68	int "Maximum number of zperf sessions"
69	depends on NET_ZPERF_SERVER
70	default 4
71	help
72	  Upper size limit for connections handled by zperf.
73
74config NET_ZPERF_UDP_REPORT_RETANSMISSION_COUNT
75	int "Maximum number of UDP upload report retransmissions"
76	depends on NET_UDP
77	range 0 16
78	default 4
79	help
80	  Maximum number of retries zperf will take to retrieve the UDP upload
81	  report from the server. `0` means the report will not be requested
82	  at all, which is useful for testing purposes.
83
84
85endif
86