Index: sys/dev/ixl/ixl_pf_main.c =================================================================== --- sys/dev/ixl/ixl_pf_main.c +++ sys/dev/ixl/ixl_pf_main.c @@ -309,17 +309,19 @@ * by user before bringing interface up */ ixl_set_promisc(vsi); - /* And now turn on interrupts */ - ixl_enable_intr(vsi); - /* Get link info */ hw->phy.get_link_info = TRUE; i40e_get_link_status(hw, &pf->link_up); ixl_update_link_status(pf); - /* Now inform the stack we're ready */ + /* Inform the stack we're ready */ ifp->if_drv_flags |= IFF_DRV_RUNNING; + /* Turn on interrupts after setting the running flag + * to avoid missing those asserted immediately after + * enabling them */ + ixl_enable_intr(vsi); + #ifdef IXL_IW if (ixl_enable_iwarp && pf->iw_enabled) { int ret = ixl_iw_pf_init(pf); Index: sys/dev/ixl/ixl_txrx.c =================================================================== --- sys/dev/ixl/ixl_txrx.c +++ sys/dev/ixl/ixl_txrx.c @@ -1504,6 +1504,10 @@ /* ** Now set up the LRO interface: */ + if (lro->ifp != NULL) { + tcp_lro_free(lro); + lro->ifp = NULL; + } if (ifp->if_capenable & IFCAP_LRO) { int err = tcp_lro_init(lro); if (err) { @@ -1559,6 +1563,11 @@ bus_dma_tag_destroy(rxr->ptag); rxr->ptag = NULL; } + + if (rxr->lro.ifp != NULL) { + tcp_lro_free(&rxr->lro); + rxr->lro.ifp = NULL; + } } static inline void