unsigned int i, eop, count = 0;
        unsigned int total_bytes = 0, total_packets = 0;
  
+       if (test_bit(__IXGBEVF_DOWN, &adapter->state))
+               return true;
+ 
        i = tx_ring->next_to_clean;
        eop = tx_ring->tx_buffer_info[i].next_to_watch;
 -      eop_desc = IXGBE_TX_DESC_ADV(*tx_ring, eop);
 +      eop_desc = IXGBEVF_TX_DESC(tx_ring, eop);
  
        while ((eop_desc->wb.status & cpu_to_le32(IXGBE_TXD_STAT_DD)) &&
 -             (count < tx_ring->work_limit)) {
 +             (count < tx_ring->count)) {
                bool cleaned = false;
                rmb(); /* read buffer_info after eop_desc */
                /* eop could change between read and DD-check */