Latency improvement related to NAPI conversion.
If all packets are processed from receive ring then need
to signal host.

Signed-off-by: Stephen Hemminger <sthem...@microsoft.com>
---
 drivers/net/hyperv/netvsc.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
index 03c1fec762c7..f5d7cae6ba70 100644
--- a/drivers/net/hyperv/netvsc.c
+++ b/drivers/net/hyperv/netvsc.c
@@ -1189,10 +1189,15 @@ int netvsc_poll(struct napi_struct *napi, int budget)
                nvchan->desc = hv_pkt_iter_next(channel, nvchan->desc);
        }
 
-       /* If send of  pending receive completions suceeded
-        *   and did not exhaust NAPI budget
+       /* if ring is empty, signal host */
+       if (!nvchan->desc)
+               hv_pkt_iter_close(channel);
+
+       /* If send of pending receive completions suceeded
+        *   and did not exhaust NAPI budget this time
         *   and not doing busy poll
-        * then reschedule if more data has arrived from host
+        * then re-enable host interrupts
+        *     and reschedule if ring is not empty.
         */
        if (send_recv_completions(net_device, channel, q_idx) == 0 &&
            work_done < budget &&
-- 
2.11.0

Reply via email to