Make ntb_set_ctx() always generate fake link event.

It allows application driver get initial link state without racing with
hardware interrupts, thanks to the context rmlock held here.

MFC after:	1 week
Sponsored by:	iXsystems, Inc.
This commit is contained in:
mav 2017-08-31 10:59:39 +00:00
parent 3882782295
commit 837f8a853f

View File

@ -264,6 +264,13 @@ ntb_set_ctx(device_t ntb, void *ctx, const struct ntb_ctx_ops *ctx_ops)
}
nc->ctx = ctx;
nc->ctx_ops = ctx_ops;
/*
* If applicaiton driver asks for link events, generate fake one now
* to let it update link state without races while we hold the lock.
*/
if (ctx_ops->link_event != NULL)
ctx_ops->link_event(ctx);
rm_wunlock(&nc->ctx_lock);
return (0);