diff --git a/repos/ports/run/netperf.inc b/repos/ports/run/netperf.inc
index ca3deed09d..e2220ade6a 100644
--- a/repos/ports/run/netperf.inc
+++ b/repos/ports/run/netperf.inc
@@ -1,6 +1,7 @@
#
# \brief Test for using netperf
# \author Alexander Boettcher
+# \author Martin Stein
# \date 2013-04-18
#
@@ -8,6 +9,11 @@ proc gpio_drv { } { if {[have_spec rpi] && [have_spec hw]} { return hw_gpio_drv
if {[have_spec rpi] && [have_spec foc]} { return foc_gpio_drv }
return gpio_drv }
+if {[expr $use_nic_bridge && $use_nic_router]} {
+ puts "Cannot test with both NIC bridge and NIC router.";
+ exit 0
+}
+
if {[get_cmd_switch --autopilot] && [have_include "power_on/qemu"]} {
puts "\nRunning netperf in autopilot on Qemu is not recommended.\n"
exit
@@ -86,6 +92,7 @@ append build_components " $netperf_target "
lappend_if $use_nic_driver build_components drivers/nic
lappend_if $use_usb_driver build_components drivers/usb
lappend_if $use_nic_bridge build_components server/nic_bridge
+lappend_if $use_nic_router build_components server/nic_router
lappend_if [have_spec gpio] build_components drivers/gpio
append_if $use_wifi_driver build_components {
@@ -138,6 +145,42 @@ append_if [have_spec gpio] config "
"
+append_if $use_nic_router config {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ }
+append_if $use_nic_router config "
+ "
+append_if $use_nic_router config {
+
+
+
+
+}
+
append_if $use_nic_bridge config {
@@ -252,7 +295,7 @@ append config {
@@ -266,6 +309,11 @@ append_if $use_nic_bridge config {
}
+append_if $use_nic_router config {
+
+
+
+ }
append config {
@@ -286,6 +334,7 @@ set boot_modules {
append boot_modules " $netperf_app "
append boot_modules " $netperf_stack "
lappend_if $use_nic_bridge boot_modules nic_bridge
+lappend_if $use_nic_router boot_modules nic_router
# platform-specific modules
lappend_if [have_spec gpio] boot_modules [gpio_drv]
@@ -324,6 +373,12 @@ append_if [have_spec lan9118] qemu_args " -net nic,model=lan9118 "
append qemu_args " -net user -redir tcp:12865::12865 -redir tcp:49153::49153 "
+set force_ports ""
+if $use_nic_router {
+ set ip_match_string "nic_router\\\] \\\[uplink\\\] IP config: interface (\[0-9]{1,3}.\[0-9]{1,3}.\[0-9]{1,3}.\[0-9]{1,3}).*\n"
+ set force_ports "-P 12864,12864"
+}
+
if {[have_spec linux]} {
run_genode_until {.*family AF_INET.*\n} 60
} else {
@@ -332,7 +387,6 @@ if {[have_spec linux]} {
set serial_id [output_spawn_id]
-set force_ports ""
if {[have_include "power_on/qemu"]} {
set ip_addr "localhost"
set force_ports "-P 49153,49153"
@@ -378,6 +432,7 @@ foreach netperf_test $netperf_tests {
# format output parseable for post proccessing scripts
puts -nonewline "! PERF: $netperf_test"
if {$use_nic_bridge} { puts -nonewline "_bridge" }
+ if {$use_nic_router} { puts -nonewline "_router" }
if {$use_usb_driver} {
if {![string compare $use_usb_11 "yes"]} { puts -nonewline "_uhci" }
if {![string compare $use_usb_20 "yes"]} { puts -nonewline "_ohci" }
diff --git a/repos/ports/run/netperf_lwip.run b/repos/ports/run/netperf_lwip.run
index 7cbd903f7f..7e573bc56b 100644
--- a/repos/ports/run/netperf_lwip.run
+++ b/repos/ports/run/netperf_lwip.run
@@ -7,6 +7,7 @@
# network configuration
set use_nic_bridge 0
+set use_nic_router 0
set use_wifi_driver 0
set use_usb_11 "no"
set use_usb_20 "yes"
diff --git a/repos/ports/run/netperf_lwip_bridge.run b/repos/ports/run/netperf_lwip_bridge.run
index df3d753352..2baec396a0 100644
--- a/repos/ports/run/netperf_lwip_bridge.run
+++ b/repos/ports/run/netperf_lwip_bridge.run
@@ -17,6 +17,7 @@ if {[have_spec omap4]} {
# network configuration
set use_nic_bridge 1
+set use_nic_router 0
set use_wifi_driver 0
set use_usb_11 "no"
set use_usb_20 "no"
diff --git a/repos/ports/run/netperf_lwip_router.run b/repos/ports/run/netperf_lwip_router.run
new file mode 100644
index 0000000000..f7db8da680
--- /dev/null
+++ b/repos/ports/run/netperf_lwip_router.run
@@ -0,0 +1,27 @@
+#
+# \brief Test using netperf with a NIC router and with a native driver or
+# if not available for the platform using usb 3.0 by default
+# \author Martin Stein
+# \date 2017-12-19
+#
+
+if {[have_include "power_on/qemu"]} {
+ puts "\nNetperf running on Qemu with a router is not supported.\n"
+ exit
+}
+
+if {[have_spec omap4]} {
+ puts stderr "\nTest requires 1 Gbit network interface - not supported for omap4\n"
+ exit 0
+}
+
+# network configuration
+set use_nic_bridge 0
+set use_nic_router 1
+set use_wifi_driver 0
+set use_usb_11 "no"
+set use_usb_20 "no"
+set use_usb_30 "yes"
+
+source ${genode_dir}/repos/ports/run/netperf_lwip.inc
+source ${genode_dir}/repos/ports/run/netperf.inc
diff --git a/repos/ports/run/netperf_lwip_usb30.run b/repos/ports/run/netperf_lwip_usb30.run
index 9a11512c9a..3aa43783af 100644
--- a/repos/ports/run/netperf_lwip_usb30.run
+++ b/repos/ports/run/netperf_lwip_usb30.run
@@ -12,6 +12,7 @@ if {[have_spec omap4]} {
# network configuration
set use_nic_bridge 0
+set use_nic_router 0
set use_wifi_driver 0
# force usage of usb for nova, known to work with usb30 network adapter
diff --git a/repos/ports/run/netperf_lwip_wifi.run b/repos/ports/run/netperf_lwip_wifi.run
index d5091dec3f..e74d492341 100644
--- a/repos/ports/run/netperf_lwip_wifi.run
+++ b/repos/ports/run/netperf_lwip_wifi.run
@@ -23,6 +23,7 @@ if {[get_cmd_switch --autopilot] && [have_spec x86_32] && ![have_spec acpi]} {
# network configuration
set use_nic_bridge 0
+set use_nic_router 0
set use_wifi_driver 1
set use_usb_11 "no"
set use_usb_20 "no"
diff --git a/repos/ports/run/netperf_lxip.run b/repos/ports/run/netperf_lxip.run
index cbfaaaa0c3..50481fde64 100644
--- a/repos/ports/run/netperf_lxip.run
+++ b/repos/ports/run/netperf_lxip.run
@@ -7,6 +7,7 @@
# network configuration
set use_nic_bridge 0
+set use_nic_router 0
set use_wifi_driver 0
set use_usb_11 "no"
set use_usb_20 "yes"
diff --git a/repos/ports/run/netperf_lxip_bridge.run b/repos/ports/run/netperf_lxip_bridge.run
index 85096c2eff..6d2fbb48dc 100644
--- a/repos/ports/run/netperf_lxip_bridge.run
+++ b/repos/ports/run/netperf_lxip_bridge.run
@@ -17,6 +17,7 @@ if {[have_spec omap4]} {
# network configuration
set use_nic_bridge 1
+set use_nic_router 0
set use_wifi_driver 0
set use_usb_11 "no"
set use_usb_20 "no"
diff --git a/repos/ports/run/netperf_lxip_router.run b/repos/ports/run/netperf_lxip_router.run
new file mode 100644
index 0000000000..235e4e6a3e
--- /dev/null
+++ b/repos/ports/run/netperf_lxip_router.run
@@ -0,0 +1,27 @@
+#
+# \brief Test using netperf with a NIC router and with a native driver or
+# if not available for the platform using usb 3.0 by default
+# \author Martin Stein
+# \date 2017-12-19
+#
+
+if {[have_include "power_on/qemu"]} {
+ puts "\nNetperf running on Qemu with a router is not supported.\n"
+ exit
+}
+
+if {[have_spec omap4]} {
+ puts stderr "\nTest requires 1 Gbit network interface - not supported for omap4\n"
+ exit 0
+}
+
+# network configuration
+set use_nic_bridge 0
+set use_nic_router 1
+set use_wifi_driver 0
+set use_usb_11 "no"
+set use_usb_20 "no"
+set use_usb_30 "yes"
+
+source ${genode_dir}/repos/ports/run/netperf_lxip.inc
+source ${genode_dir}/repos/ports/run/netperf.inc
diff --git a/repos/ports/run/netperf_lxip_usb30.run b/repos/ports/run/netperf_lxip_usb30.run
index ec5ff0bba1..d9cb9f5806 100644
--- a/repos/ports/run/netperf_lxip_usb30.run
+++ b/repos/ports/run/netperf_lxip_usb30.run
@@ -12,6 +12,7 @@ if {[have_spec omap4]} {
# network configuration
set use_nic_bridge 0
+set use_nic_router 0
set use_wifi_driver 0
# force usage of usb for nova, known to work with usb30 network adapter
diff --git a/repos/ports/run/netperf_lxip_wifi.run b/repos/ports/run/netperf_lxip_wifi.run
index 6e242c29e7..809893db81 100644
--- a/repos/ports/run/netperf_lxip_wifi.run
+++ b/repos/ports/run/netperf_lxip_wifi.run
@@ -23,6 +23,7 @@ if {[get_cmd_switch --autopilot] && [have_spec x86_32] && ![have_spec acpi]} {
# network configuration
set use_nic_bridge 0
+set use_nic_router 0
set use_wifi_driver 1
set use_usb_11 "no"
set use_usb_20 "no"