ice: Fix return value from NAPI poll
authorDave Ertman <david.m.ertman@intel.com>
Fri, 26 Oct 2018 18:44:43 +0000 (11:44 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Tue, 20 Nov 2018 19:39:04 +0000 (11:39 -0800)
ice_napi_poll is hard-coded to return zero when it's done. It should
instead return the work done (if any work was done). The only time it
should return zero is if an interrupt or poll is handled and no work
is performed. So change the return value to be the minimum of work
done or budget-1.

Signed-off-by: Dave Ertman <david.m.ertman@intel.com>
Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ice/ice_txrx.c

index fe5bbabbb41eacdac1bcd0466196ee835b35b97f..99954089a7fb2744151b680874ae86691b20c0fe 100644 (file)
@@ -1107,7 +1107,8 @@ int ice_napi_poll(struct napi_struct *napi, int budget)
        napi_complete_done(napi, work_done);
        if (test_bit(ICE_FLAG_MSIX_ENA, pf->flags))
                ice_irq_dynamic_ena(&vsi->back->hw, vsi, q_vector);
-       return 0;
+
+       return min(work_done, budget - 1);
 }
 
 /* helper function for building cmd/type/offset */