Index: head/sys/dev/ixl/ixl_txrx.c =================================================================== --- head/sys/dev/ixl/ixl_txrx.c +++ head/sys/dev/ixl/ixl_txrx.c @@ -1400,9 +1400,7 @@ return; } #endif - IXL_RX_UNLOCK(rxr); (*ifp->if_input)(ifp, m); - IXL_RX_LOCK(rxr); } @@ -1730,7 +1728,9 @@ /* Now send to the stack or do LRO */ if (sendmp != NULL) { rxr->next_check = i; + IXL_RX_UNLOCK(rxr); ixl_rx_input(rxr, ifp, sendmp, ptype); + IXL_RX_LOCK(rxr); i = rxr->next_check; } @@ -1747,6 +1747,8 @@ rxr->next_check = i; + IXL_RX_UNLOCK(rxr); + #if defined(INET6) || defined(INET) /* * Flush any outstanding LRO work @@ -1762,7 +1764,6 @@ #endif #endif /* defined(INET6) || defined(INET) */ - IXL_RX_UNLOCK(rxr); return (FALSE); }