Switch from napi_complete() to napi_complete_done()
for better GRO support (gro_flush_timeout) and core NAPI
features.

Do not rearm interrupts if we are busy polling,
to reduce bus and interrupts overhead.

Signed-off-by: Eric Dumazet <[email protected]>
Cc: Willem de Bruijn <[email protected]>
Cc: Adam Belay <[email protected]>
Cc: Tariq Toukan <[email protected]>
Cc: Yuval Mintz <[email protected]>
Cc: Ariel Elior <[email protected]>
---
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c 
b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
index ed42c1009685..3fd36b421d51 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
@@ -3248,13 +3248,14 @@ static int bnx2x_poll(struct napi_struct *napi, int 
budget)
                        rmb();
 
                        if (!(bnx2x_has_rx_work(fp) || bnx2x_has_tx_work(fp))) {
-                               napi_complete(napi);
-                               /* Re-enable interrupts */
-                               DP(NETIF_MSG_RX_STATUS,
-                                  "Update index to %d\n", fp->fp_hc_idx);
-                               bnx2x_ack_sb(bp, fp->igu_sb_id, USTORM_ID,
-                                            le16_to_cpu(fp->fp_hc_idx),
-                                            IGU_INT_ENABLE, 1);
+                               if (napi_complete_done(napi, rx_work_done)) {
+                                       /* Re-enable interrupts */
+                                       DP(NETIF_MSG_RX_STATUS,
+                                          "Update index to %d\n", 
fp->fp_hc_idx);
+                                       bnx2x_ack_sb(bp, fp->igu_sb_id, 
USTORM_ID,
+                                                    le16_to_cpu(fp->fp_hc_idx),
+                                                    IGU_INT_ENABLE, 1);
+                               }
                        } else {
                                rx_work_done = budget;
                        }
-- 
2.8.0.rc3.226.g39d4020

Reply via email to