diff options
-rw-r--r-- | sys/net/iflib.c | 3 | ||||
-rw-r--r-- | sys/net/iflib.h | 5 |
2 files changed, 6 insertions, 2 deletions
diff --git a/sys/net/iflib.c b/sys/net/iflib.c index 9cb67fc14afc..4f5744466817 100644 --- a/sys/net/iflib.c +++ b/sys/net/iflib.c @@ -3807,7 +3807,8 @@ _task_fn_admin(void *context) ctx->ifc_flags &= ~(IFC_DO_RESET|IFC_DO_WATCHDOG); STATE_UNLOCK(ctx); - if (!running & !oactive) + if ((!running & !oactive) && + !(ctx->ifc_sctx->isc_flags & IFLIB_ADMIN_ALWAYS_RUN)) return; CTX_LOCK(ctx); diff --git a/sys/net/iflib.h b/sys/net/iflib.h index 57ba40733e31..6fd71fd52c43 100644 --- a/sys/net/iflib.h +++ b/sys/net/iflib.h @@ -358,7 +358,10 @@ typedef enum { * autogenerate a MAC address */ #define IFLIB_GEN_MAC 0x08000 - +/* + * Interface needs admin task to ignore interface up/down status + */ +#define IFLIB_ADMIN_ALWAYS_RUN 0x10000 /* |