diff options
-rw-r--r-- | drivers/net/ethernet/ibm/ibmvnic.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c index 1b6268ce7b0d..4f2d329dba99 100644 --- a/drivers/net/ethernet/ibm/ibmvnic.c +++ b/drivers/net/ethernet/ibm/ibmvnic.c | |||
@@ -1809,19 +1809,8 @@ restart_loop: | |||
1809 | } | 1809 | } |
1810 | 1810 | ||
1811 | if (txbuff->last_frag) { | 1811 | if (txbuff->last_frag) { |
1812 | if (atomic_sub_return(next->tx_comp.num_comps, | ||
1813 | &scrq->used) <= | ||
1814 | (adapter->req_tx_entries_per_subcrq / 2) && | ||
1815 | netif_subqueue_stopped(adapter->netdev, | ||
1816 | txbuff->skb)) { | ||
1817 | netif_wake_subqueue(adapter->netdev, | ||
1818 | scrq->pool_index); | ||
1819 | netdev_dbg(adapter->netdev, | ||
1820 | "Started queue %d\n", | ||
1821 | scrq->pool_index); | ||
1822 | } | ||
1823 | |||
1824 | dev_kfree_skb_any(txbuff->skb); | 1812 | dev_kfree_skb_any(txbuff->skb); |
1813 | txbuff->skb = NULL; | ||
1825 | } | 1814 | } |
1826 | 1815 | ||
1827 | adapter->tx_pool[pool].free_map[adapter->tx_pool[pool]. | 1816 | adapter->tx_pool[pool].free_map[adapter->tx_pool[pool]. |
@@ -1832,6 +1821,15 @@ restart_loop: | |||
1832 | } | 1821 | } |
1833 | /* remove tx_comp scrq*/ | 1822 | /* remove tx_comp scrq*/ |
1834 | next->tx_comp.first = 0; | 1823 | next->tx_comp.first = 0; |
1824 | |||
1825 | if (atomic_sub_return(next->tx_comp.num_comps, &scrq->used) <= | ||
1826 | (adapter->req_tx_entries_per_subcrq / 2) && | ||
1827 | __netif_subqueue_stopped(adapter->netdev, | ||
1828 | scrq->pool_index)) { | ||
1829 | netif_wake_subqueue(adapter->netdev, scrq->pool_index); | ||
1830 | netdev_info(adapter->netdev, "Started queue %d\n", | ||
1831 | scrq->pool_index); | ||
1832 | } | ||
1835 | } | 1833 | } |
1836 | 1834 | ||
1837 | enable_scrq_irq(adapter, scrq); | 1835 | enable_scrq_irq(adapter, scrq); |