zephyr/samples/net/zperf
Michael Scott ca6a686495 net: correct in*_addr parameter of net_addr_pton()
Currently, the function accepts a struct sockaddr * but the code
immediately type casts this to either in_addr or in6_addr.  This is
incorrect behavior as the first field in a sockaddr is sa_family_t
and not address data.

So without special knowledge, a developer will use a sockaddr structure
as the parameter and then wonder why the address information isn't being
set correctly.

Let's change this parameter to void * which makes this function similar
to inet_pton().

Jira: ZEP-1616

Change-Id: I1fc9368da999d90feb07c03fac55dcc749d4eba6
Signed-off-by: Michael Scott <michael.scott@linaro.org>
2017-02-03 15:59:13 +02:00
..
src net: correct in*_addr parameter of net_addr_pton() 2017-02-03 15:59:13 +02:00
Makefile net: zperf: Add bluetooth support 2017-01-20 16:23:20 +02:00
README.rst doc: fix .rst files canonical heading order 2017-01-20 16:06:36 -08:00
prj_bt.conf net: zperf: Add bluetooth support 2017-01-20 16:23:20 +02:00
prj_frdm_k64f.conf samples: net: Remove unnecessary eth_ksdk project settings 2017-01-12 09:46:26 -06:00
prj_frdm_k64f_prof.conf samples: net: Remove unnecessary eth_ksdk project settings 2017-01-12 09:46:26 -06:00
prj_galileo.conf samples/net: Rename prj conf files to avoid breaking the build 2017-01-13 10:29:00 +01:00
prj_galileo_prof.conf samples/net: Rename prj conf files to avoid breaking the build 2017-01-13 10:29:00 +01:00
prj_qemu_x86.conf net: Remove NET_SLIP choice from Kconfig 2017-01-13 10:29:02 +01:00
prj_quark_se_c1000_devboard.conf kernel: remove dependency on CONFIG_NANO_TIMERS/TIMEOUTS 2017-01-08 18:09:52 +00:00
testcase.ini net: do not skip sanitycheck on samples 2017-01-06 22:08:14 +00:00

README.rst

zperf: Network Traffic Generator
################################

Description
***********

zperf is a network traffic generator for Zephyr that may be used to
evaluate network bandwidth.

Features
*********

- Compatible with iPerf_2.0.5.
- Client or server mode allowed without need to modify the source code.
- Working with task profiler (PROFILER=1 to be set when building zperf)

Supported Boards
****************

zperf is board-agnostic. However, to run the zperf sample application,
the target platform must provide a network interface supported by Zephyr.

This sample application has been tested on the following platforms:

- Freedom Board (FRDM K64F)
- Quark SE C1000 Development Board
- QEMU x86

Requirements
************

- iPerf 2.0.5 installed on the host machine
- Supported board

Depending on the network technology chosen, extra steps may be required
to setup the network environment.

Usage
*****

If Zephyr acts as a client, iPerf must be executed in server mode.
For example, the following command line must be used for UDP testing:

.. code-block:: console

   $ iperf -s -l 1K -u -V -B 2001:db8::2


In the Zephyr console, zperf can be executed as follows:

.. code-block:: console

   zperf> udp.upload 2001:db8::2 5001 10 1K 1M


If the IP addresses of Zephyr and the host machine are specified in the
config file, zperf can be started as follows:

.. code-block:: console

   zperf> udp.upload2 v6 10 1K 1M


If Zephyr is acting as a server, set the download mode as follows:

.. code-block:: console

   zperf> udp.download 5001


and in the host side, iPerf must be executed with the following
command line:

.. code-block:: console

   $ iperf -l 1K -u -V -c 2001:db8::1 -p 5001


iPerf output can be limited by using the -b option if Zephyr is not
able to receive all the packets in orderly manner.