diff options
Diffstat (limited to 'src/network/netdev')
-rw-r--r-- | src/network/netdev/netdev.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/network/netdev/netdev.c b/src/network/netdev/netdev.c index 7882cbc364..e9fadfddde 100644 --- a/src/network/netdev/netdev.c +++ b/src/network/netdev/netdev.c @@ -31,6 +31,7 @@ #include "networkd-manager.h" #include "networkd-queue.h" #include "networkd-setlink.h" +#include "networkd-sriov.h" #include "nlmon.h" #include "path-lookup.h" #include "siphash24.h" @@ -604,12 +605,15 @@ static int stacked_netdev_create(NetDev *netdev, Link *link, Request *req) { return 0; } -static bool link_is_ready_to_create_stacked_netdev(Link *link) { +static bool link_is_ready_to_create_stacked_netdev_one(Link *link, bool allow_unmanaged) { assert(link); - if (!IN_SET(link->state, LINK_STATE_CONFIGURING, LINK_STATE_CONFIGURED)) + if (!IN_SET(link->state, LINK_STATE_CONFIGURING, LINK_STATE_CONFIGURED, LINK_STATE_UNMANAGED)) return false; + if (!link->network) + return allow_unmanaged; + if (link->set_link_messages > 0) return false; @@ -621,6 +625,11 @@ static bool link_is_ready_to_create_stacked_netdev(Link *link) { return true; } +static bool link_is_ready_to_create_stacked_netdev(Link *link) { + return check_ready_for_all_sr_iov_ports(link, /* allow_unmanaged = */ false, + link_is_ready_to_create_stacked_netdev_one); +} + static int netdev_is_ready_to_create(NetDev *netdev, Link *link) { assert(netdev); |