Index: sys/net/if_lagg.c =================================================================== --- sys/net/if_lagg.c +++ sys/net/if_lagg.c @@ -691,22 +691,23 @@ * Traverse the queue and set the lladdr on each ifp. It is safe to do * unlocked as we have the only reference to it. */ + for (llq = head; llq != NULL; llq = head) { ifp = llq->llq_ifp; - CURVNET_SET(ifp->if_vnet); - if (llq->llq_primary == 0) { - /* - * Set the link layer address on the laggport interface. - * if_setlladdr() triggers gratuitous ARPs for INET. - */ - error = if_setlladdr(ifp, llq->llq_lladdr, - ETHER_ADDR_LEN); - if (error) - printf("%s: setlladdr failed on %s\n", __func__, - ifp->if_xname); - } else + + /* + * Set the link layer address on the laggport interface. + * if_setlladdr() triggers gratuitous ARPs for INET. + */ + error = if_setlladdr(ifp, llq->llq_lladdr, + ETHER_ADDR_LEN); + if (error) + printf("%s: setlladdr failed on %s\n", __func__, + ifp->if_xname); + if (llq->llq_primary) { EVENTHANDLER_INVOKE(iflladdr_event, ifp); + } CURVNET_RESTORE(); head = SLIST_NEXT(llq, llq_entries); free(llq, M_DEVBUF);