[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20170204182038.3752-3-edumazet@google.com>
Date: Sat, 4 Feb 2017 10:20:31 -0800
From: Eric Dumazet <edumazet@...gle.com>
To: "David S . Miller" <davem@...emloft.net>
Cc: netdev <netdev@...r.kernel.org>,
Eric Dumazet <edumazet@...gle.com>,
Eric Dumazet <eric.dumazet@...il.com>
Subject: [PATCH net-next 2/9] 8139cp: use napi_complete_done()
Use napi_complete_done() instead of __napi_complete() to :
1) Get support of gro_flush_timeout if opt-in
2) Not rearm interrupts for busy-polling users.
3) use standard NAPI API.
4) Eventually get rid of napi_gro_flush() in the future.
Signed-off-by: Eric Dumazet <edumazet@...gle.com>
---
drivers/net/ethernet/realtek/8139cp.c | 19 +++++++------------
1 file changed, 7 insertions(+), 12 deletions(-)
diff --git a/drivers/net/ethernet/realtek/8139cp.c b/drivers/net/ethernet/realtek/8139cp.c
index 0b3cd58093d5ecf00abef6eda1386f13ac5e..1ca3ff1d36923c09ddcbdc2ba1a36ae67f46 100644
--- a/drivers/net/ethernet/realtek/8139cp.c
+++ b/drivers/net/ethernet/realtek/8139cp.c
@@ -465,10 +465,8 @@ static int cp_rx_poll(struct napi_struct *napi, int budget)
struct cp_private *cp = container_of(napi, struct cp_private, napi);
struct net_device *dev = cp->dev;
unsigned int rx_tail = cp->rx_tail;
- int rx;
+ int rx = 0;
- rx = 0;
-rx_status_loop:
cpw16(IntrStatus, cp_rx_intr_mask);
while (rx < budget) {
@@ -557,16 +555,13 @@ static int cp_rx_poll(struct napi_struct *napi, int budget)
* this round of polling
*/
if (rx < budget) {
- unsigned long flags;
+ if (napi_complete_done(napi, rx)) {
+ unsigned long flags;
- if (cpr16(IntrStatus) & cp_rx_intr_mask)
- goto rx_status_loop;
-
- napi_gro_flush(napi, false);
- spin_lock_irqsave(&cp->lock, flags);
- __napi_complete(napi);
- cpw16_f(IntrMask, cp_intr_mask);
- spin_unlock_irqrestore(&cp->lock, flags);
+ spin_lock_irqsave(&cp->lock, flags);
+ cpw16_f(IntrMask, cp_intr_mask);
+ spin_unlock_irqrestore(&cp->lock, flags);
+ }
}
return rx;
--
2.11.0.483.g087da7b7c-goog
Powered by blists - more mailing lists