[RFC 00/12] barebox picotcp integration (2015.07.15)
Antony Pavlov
antonynpavlov at gmail.com
Wed Jul 15 13:13:38 PDT 2015
I have just published latest picotcp-enabled barebox.
Please see my 20150715.picotcp branch in my github barebox repo
(https://github.com/frantony/barebox/tree/20150715.picotcp).
This version is based on the latest barebox-next and picotcp v1.5.0
(there is also picotcp v1.5.1, but is has no interested
for barebox changes since v1.5.0).
Changes since 2015.06.14 (see http://lists.infradead.org/pipermail/barebox/2015-June/023749.html):
* drop picotcp tftp support;
make it possible to use some barebox' network applications
on top of picotcp udp packet ip:
* use barebox' tftp support on top of picotcp;
* use barebox' nfs support on top of picotcp;
* use barebox' dns support on top of picotcp;
Anyway new 'picoping' command uses picotcp ICMP support
because it makes possible to realize traditional *NIX 'ping'
program behaviour in barebox.
* drop all unused picotcp files;
* import picotcp dhcp stuff temporary skipped
we can revive it in any moment but
it's better to adapt barebox' dhcp implementation;
Here is note/todo list:
1. with picotcp we can't easely use 'tftp' command with old syntax
(no $<current network interface>.serverip anymore);
2. just now picotcp-based tftp/nfs file transfer is slower than
old realisation (partialy it is my bad, e.g. extra memory copy operation
is used for code simplification); see Very Simple Benchmarks below for details;
3. rework barebox dhcp, ifup and netconsole realization for working on top of picotcp.
Very Simple Benchmarks
======================
I have sandbox barebox (192.168.1.2) and nfs- and tftp- servers on the same host (192.168.1.1).
I copy 16MiB (16777216 bytes) file from server to sandbox barebox over network several times.
I use time command inside sandox barebox for computing transfer time.
barebox at barebox sandbox:/ eth0.ipaddr=192.168.1.2
barebox at barebox sandbox:/ mount -t tftp 192.168.1.1 /mnt
...
barebox at barebox sandbox:/ time cp /mnt/16M .
time: 546ms
Here is typical transfer time values:
+--------+--------------+--------------+
| | U-boot | picotcp |
| | stack | stack |
+--------+--------------+--------------+
| | | |
| tftp | 546ms | 859ms |
| | | |
+--------+--------------+--------------+
| | | |
| nfs | 1037ms | 1393ms |
| | | |
+--------+--------------+--------------+
There are some rather simple possibilities to slighly improve picotcp-barebox performance:
* drop extra memory copy;
* drop extra pico_tick() calls (is_timeout() calls poller_call(), so there is no need
to call poller_call() explicitly in nfs/tftp code);
* there is an issue with sustained tftp small file copy. E.g.
barebox at barebox sandbox:/ ifconfig eth 192.168.1.2 255.255.255.0
Assigned ipv4 192.168.1.2 to device eth
barebox at barebox sandbox:/ mount -t tftp 192.168.1.1 /mnt
barebox at barebox sandbox:/ while true; do time cp /mnt/1M . ; done
...
Warning: I have 122 timers
Warning: I have 121 timers
time: 48ms
Warning: I have 122 timers
Warning: I have 121 timers
time: 53ms
Warning: I have 122 timers
Warning: I have 121 timers
time: 54ms
Antony Pavlov (12):
picotcp: add barebox target support
picotcp: switch to Kbuild
net: add initial picotcp support
WIP: fs/nfs.c: convert to picotcp
WIP: fs/tftp.c: convert to picotcp
WIP: net/dns: convert to picotcp
net: picotcp: add test_picotcp command
net: picotcp: add ifconfig command
net: picotcp: add ping command
net: picotcp: add route command
sandbox_defconfig: switch to picotcp
WIP: sandbox_defconfig: enable network testing-related stuff
Makefile | 1 +
arch/sandbox/configs/sandbox_defconfig | 12 ++
commands/Kconfig | 4 +
fs/nfs.c | 150 +++++++++++++++++++++---
fs/tftp.c | 199 ++++++++++++++++++++++++++++----
include/net.h | 3 +
include/pico_defines.h | 0
include/stdint.h | 1 +
net/Kconfig | 17 +++
net/Makefile | 8 ++
net/dns.c | 101 ++++++++++++++--
net/eth.c | 71 ++++++++++++
net/net.c | 10 ++
net/picotcp.c | 20 ++++
net/picotcp/.gitignore | 1 +
net/picotcp/Kconfig | 56 +++++++++
net/picotcp/Makefile | 30 +++++
net/picotcp/include/arch/pico_barebox.h | 76 ++++++++++++
net/picotcp/include/pico_config.h | 2 +
net/picotcp/modules/Makefile | 8 ++
net/picotcp/stack/Makefile | 7 ++
net/picotcp_ifconfig.c | 116 +++++++++++++++++++
net/picotcp_ping.c | 85 ++++++++++++++
net/picotcp_route.c | 37 ++++++
net/picotcp_test_ipv4.c | 96 +++++++++++++++
25 files changed, 1063 insertions(+), 48 deletions(-)
create mode 100644 include/pico_defines.h
create mode 100644 include/stdint.h
create mode 100644 net/picotcp.c
create mode 100644 net/picotcp/Kconfig
create mode 100644 net/picotcp/Makefile
create mode 100644 net/picotcp/include/arch/pico_barebox.h
create mode 100644 net/picotcp/modules/Makefile
create mode 100644 net/picotcp/stack/Makefile
create mode 100644 net/picotcp_ifconfig.c
create mode 100644 net/picotcp_ping.c
create mode 100644 net/picotcp_route.c
create mode 100644 net/picotcp_test_ipv4.c
--
2.1.4
More information about the barebox
mailing list