In the case when: - Board has multiple network interfaces - Two ore more of those interfaces are statically configured to be on the same network - Only one of those interfaces is up and it is preceeded (as far as for_each_netdev is concerned) by interface in the same network that isn't net_route() will choose "non-up" device as a route for traffic resulting in no network connectivity. Change the routing logic to also consider if interface is "up", so that only such interfaces would be considered for sending network traffic out. Signed-off-by: Andrey Smirnov <andrew.smirnov@xxxxxxxxx> --- net/net.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/net.c b/net/net.c index d21855415..63f42fa5c 100644 --- a/net/net.c +++ b/net/net.c @@ -149,7 +149,7 @@ struct eth_device *net_route(IPaddr_t dest) struct eth_device *edev; for_each_netdev(edev) { - if (!edev->ipaddr) + if (!edev->ipaddr || !edev->ifup) continue; if ((dest & edev->netmask) == (edev->ipaddr & edev->netmask)) { -- 2.17.1 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox