--- a/drivers/e1000-7.x/src/e1000_main.c
+++ b/drivers/e1000-7.x/src/e1000_main.c
@@ -5669,6 +5669,7 @@
         break;
       /* Fall into the lockup case */
     case E1000_RX_STATE_LOCKUP:
+      DPRINTK(DRV, ERR, "Receive lockup. Recovering...\n");
       /* Receive lockup detected: perform a recovery */
       adapter->rx_lockup_recoveries++;
       /* taken from e1000_down() */
@@ -5770,6 +5771,8 @@
   unsigned int max_txd_pwr = E1000_MAX_TXD_PWR;
 
   if(!netif_carrier_ok(netdev)) {
+    DPRINTK(DRV, ERR, "Status of netdevice is not ok when "
+	    "attempting to transmit\n");
     netif_stop_queue(netdev);
     return -1;
   }
@@ -5778,6 +5781,8 @@
 
   /* make sure there are enough Tx descriptors available in the ring */
   if(E1000_DESC_UNUSED(adapter->tx_ring) <= (txd_needed + 1)) {
+    DPRINTK(DRV, ERR, "Not enough room in tx_ring when "
+	    "attempting to transmit\n");
     adapter->net_stats.tx_dropped++;
     netif_stop_queue(netdev);
     return -1;
@@ -5887,6 +5892,7 @@
 {
   struct e1000_adapter *adapter = dev->priv;
   unsigned long flags;
+  uint32_t tctl;
 
   if (!dev->polling) {
     printk("e1000_poll_on\n");
@@ -5909,6 +5915,12 @@
                           E1000_DESC_UNUSED(adapter->rx_ring));
 
     dev->polling = 2;
+
+    /* Re-enable transmit */
+    tctl = E1000_READ_REG(&adapter->hw, TCTL);
+    tctl |= E1000_TCTL_EN;
+    E1000_WRITE_REG(&adapter->hw, TCTL, tctl);
+
     local_irq_restore(flags);
   }
 
