ProxyChains-3.1 (http://proxychains.sf.net) Index: ixgbe.c =================================================================== --- ixgbe.c (revision 253965) +++ ixgbe.c (working copy) @@ -1073,6 +1073,7 @@ mtx_assert(&adapter->core_mtx, MA_OWNED); INIT_DEBUGOUT("ixgbe_init_locked: begin"); + ixgbe_quiesce_queues(adapter); hw->adapter_stopped = FALSE; ixgbe_stop_adapter(hw); callout_stop(&adapter->timer); @@ -1336,7 +1337,26 @@ return; } +/* +** Make sure all queues have seen IFF_DRV_RUNNING +** is cleared and stop processing. +*/ +static inline void +ixgbe_quiesce_queues(struct adapter *adapter) +{ + struct ifnet *ifp = adapter->ifp; + struct tx_ring *txr = adapter->tx_rings; + struct rx_ring *rxr = adapter->rx_rings; + ifp->if_drv_flags &= ~IFF_DRV_RUNNING; + for (int i = 0; i < adapter->num_queues; i++, rxr++, txr++) { + IXGBE_TX_LOCK(txr); + IXGBE_TX_UNLOCK(txr); + IXGBE_RX_LOCK(rxr); + IXGBE_RX_UNLOCK(rxr); + } +} + /* ** ** MSIX Interrupt Handlers and Tasklets