aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/e100.c7
-rw-r--r--drivers/net/e1000/e1000_main.c10
-rw-r--r--drivers/net/e1000e/netdev.c8
-rw-r--r--drivers/net/ixgb/ixgb_main.c7
-rw-r--r--drivers/net/ixgbe/ixgbe_main.c8
5 files changed, 19 insertions, 21 deletions
diff --git a/drivers/net/e100.c b/drivers/net/e100.c
index 68316f15a7cb..b87402bc8308 100644
--- a/drivers/net/e100.c
+++ b/drivers/net/e100.c
@@ -1991,13 +1991,12 @@ static int e100_poll(struct napi_struct *napi, int budget)
1991 struct nic *nic = container_of(napi, struct nic, napi); 1991 struct nic *nic = container_of(napi, struct nic, napi);
1992 struct net_device *netdev = nic->netdev; 1992 struct net_device *netdev = nic->netdev;
1993 unsigned int work_done = 0; 1993 unsigned int work_done = 0;
1994 int tx_cleaned;
1995 1994
1996 e100_rx_clean(nic, &work_done, budget); 1995 e100_rx_clean(nic, &work_done, budget);
1997 tx_cleaned = e100_tx_clean(nic); 1996 e100_tx_clean(nic);
1998 1997
1999 /* If no Rx and Tx cleanup work was done, exit polling mode. */ 1998 /* If budget not fully consumed, exit the polling mode */
2000 if((!tx_cleaned && (work_done == 0))) { 1999 if (work_done < budget) {
2001 netif_rx_complete(netdev, napi); 2000 netif_rx_complete(netdev, napi);
2002 e100_enable_irq(nic); 2001 e100_enable_irq(nic);
2003 } 2002 }
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 9de71443ef89..13d57b0a88fa 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -3919,7 +3919,7 @@ e1000_clean(struct napi_struct *napi, int budget)
3919{ 3919{
3920 struct e1000_adapter *adapter = container_of(napi, struct e1000_adapter, napi); 3920 struct e1000_adapter *adapter = container_of(napi, struct e1000_adapter, napi);
3921 struct net_device *poll_dev = adapter->netdev; 3921 struct net_device *poll_dev = adapter->netdev;
3922 int tx_cleaned = 0, work_done = 0; 3922 int work_done = 0;
3923 3923
3924 /* Must NOT use netdev_priv macro here. */ 3924 /* Must NOT use netdev_priv macro here. */
3925 adapter = poll_dev->priv; 3925 adapter = poll_dev->priv;
@@ -3929,16 +3929,16 @@ e1000_clean(struct napi_struct *napi, int budget)
3929 * simultaneously. A failure obtaining the lock means 3929 * simultaneously. A failure obtaining the lock means
3930 * tx_ring[0] is currently being cleaned anyway. */ 3930 * tx_ring[0] is currently being cleaned anyway. */
3931 if (spin_trylock(&adapter->tx_queue_lock)) { 3931 if (spin_trylock(&adapter->tx_queue_lock)) {
3932 tx_cleaned = e1000_clean_tx_irq(adapter, 3932 e1000_clean_tx_irq(adapter,
3933 &adapter->tx_ring[0]); 3933 &adapter->tx_ring[0]);
3934 spin_unlock(&adapter->tx_queue_lock); 3934 spin_unlock(&adapter->tx_queue_lock);
3935 } 3935 }
3936 3936
3937 adapter->clean_rx(adapter, &adapter->rx_ring[0], 3937 adapter->clean_rx(adapter, &adapter->rx_ring[0],
3938 &work_done, budget); 3938 &work_done, budget);
3939 3939
3940 /* If no Tx and not enough Rx work done, exit the polling mode */ 3940 /* If budget not fully consumed, exit the polling mode */
3941 if ((!tx_cleaned && (work_done == 0))) { 3941 if (work_done < budget) {
3942 if (likely(adapter->itr_setting & 3)) 3942 if (likely(adapter->itr_setting & 3))
3943 e1000_set_itr(adapter); 3943 e1000_set_itr(adapter);
3944 netif_rx_complete(poll_dev, napi); 3944 netif_rx_complete(poll_dev, napi);
diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c
index dd9698cfbb9d..4a6fc7453776 100644
--- a/drivers/net/e1000e/netdev.c
+++ b/drivers/net/e1000e/netdev.c
@@ -1384,7 +1384,7 @@ static int e1000_clean(struct napi_struct *napi, int budget)
1384{ 1384{
1385 struct e1000_adapter *adapter = container_of(napi, struct e1000_adapter, napi); 1385 struct e1000_adapter *adapter = container_of(napi, struct e1000_adapter, napi);
1386 struct net_device *poll_dev = adapter->netdev; 1386 struct net_device *poll_dev = adapter->netdev;
1387 int tx_cleaned = 0, work_done = 0; 1387 int work_done = 0;
1388 1388
1389 /* Must NOT use netdev_priv macro here. */ 1389 /* Must NOT use netdev_priv macro here. */
1390 adapter = poll_dev->priv; 1390 adapter = poll_dev->priv;
@@ -1394,14 +1394,14 @@ static int e1000_clean(struct napi_struct *napi, int budget)
1394 * simultaneously. A failure obtaining the lock means 1394 * simultaneously. A failure obtaining the lock means
1395 * tx_ring is currently being cleaned anyway. */ 1395 * tx_ring is currently being cleaned anyway. */
1396 if (spin_trylock(&adapter->tx_queue_lock)) { 1396 if (spin_trylock(&adapter->tx_queue_lock)) {
1397 tx_cleaned = e1000_clean_tx_irq(adapter); 1397 e1000_clean_tx_irq(adapter);
1398 spin_unlock(&adapter->tx_queue_lock); 1398 spin_unlock(&adapter->tx_queue_lock);
1399 } 1399 }
1400 1400
1401 adapter->clean_rx(adapter, &work_done, budget); 1401 adapter->clean_rx(adapter, &work_done, budget);
1402 1402
1403 /* If no Tx and not enough Rx work done, exit the polling mode */ 1403 /* If budget not fully consumed, exit the polling mode */
1404 if ((!tx_cleaned && (work_done < budget))) { 1404 if (work_done < budget) {
1405 if (adapter->itr_setting & 3) 1405 if (adapter->itr_setting & 3)
1406 e1000_set_itr(adapter); 1406 e1000_set_itr(adapter);
1407 netif_rx_complete(poll_dev, napi); 1407 netif_rx_complete(poll_dev, napi);
diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
index a8bef52870fd..d2fb88d5cda2 100644
--- a/drivers/net/ixgb/ixgb_main.c
+++ b/drivers/net/ixgb/ixgb_main.c
@@ -1787,14 +1787,13 @@ ixgb_clean(struct napi_struct *napi, int budget)
1787{ 1787{
1788 struct ixgb_adapter *adapter = container_of(napi, struct ixgb_adapter, napi); 1788 struct ixgb_adapter *adapter = container_of(napi, struct ixgb_adapter, napi);
1789 struct net_device *netdev = adapter->netdev; 1789 struct net_device *netdev = adapter->netdev;
1790 int tx_cleaned;
1791 int work_done = 0; 1790 int work_done = 0;
1792 1791
1793 tx_cleaned = ixgb_clean_tx_irq(adapter); 1792 ixgb_clean_tx_irq(adapter);
1794 ixgb_clean_rx_irq(adapter, &work_done, budget); 1793 ixgb_clean_rx_irq(adapter, &work_done, budget);
1795 1794
1796 /* if no Tx and not enough Rx work done, exit the polling mode */ 1795 /* If budget not fully consumed, exit the polling mode */
1797 if((!tx_cleaned && (work_done == 0))) { 1796 if (work_done < budget) {
1798 netif_rx_complete(netdev, napi); 1797 netif_rx_complete(netdev, napi);
1799 ixgb_irq_enable(adapter); 1798 ixgb_irq_enable(adapter);
1800 } 1799 }
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c
index 7c319303f0f8..a56491617661 100644
--- a/drivers/net/ixgbe/ixgbe_main.c
+++ b/drivers/net/ixgbe/ixgbe_main.c
@@ -1468,15 +1468,15 @@ static int ixgbe_clean(struct napi_struct *napi, int budget)
1468 struct ixgbe_adapter *adapter = container_of(napi, 1468 struct ixgbe_adapter *adapter = container_of(napi,
1469 struct ixgbe_adapter, napi); 1469 struct ixgbe_adapter, napi);
1470 struct net_device *netdev = adapter->netdev; 1470 struct net_device *netdev = adapter->netdev;
1471 int tx_cleaned = 0, work_done = 0; 1471 int work_done = 0;
1472 1472
1473 /* In non-MSIX case, there is no multi-Tx/Rx queue */ 1473 /* In non-MSIX case, there is no multi-Tx/Rx queue */
1474 tx_cleaned = ixgbe_clean_tx_irq(adapter, adapter->tx_ring); 1474 ixgbe_clean_tx_irq(adapter, adapter->tx_ring);
1475 ixgbe_clean_rx_irq(adapter, &adapter->rx_ring[0], &work_done, 1475 ixgbe_clean_rx_irq(adapter, &adapter->rx_ring[0], &work_done,
1476 budget); 1476 budget);
1477 1477
1478 /* If no Tx and not enough Rx work done, exit the polling mode */ 1478 /* If budget not fully consumed, exit the polling mode */
1479 if ((!tx_cleaned && (work_done < budget))) { 1479 if (work_done < budget) {
1480 netif_rx_complete(netdev, napi); 1480 netif_rx_complete(netdev, napi);
1481 ixgbe_irq_enable(adapter); 1481 ixgbe_irq_enable(adapter);
1482 } 1482 }