From: stephen hemminger Date: Fri, 28 Jul 2017 15:59:47 +0000 (-0700) Subject: netvsc: signal host if receive ring is emptied X-Git-Tag: v4.14-rc1~130^2~425^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f4e403633bcd290a4db2568364657d07b42ff890;p=platform%2Fkernel%2Flinux-rpi3.git netvsc: signal host if receive ring is emptied Latency improvement related to NAPI conversion. If all packets are processed from receive ring then need to signal host. Signed-off-by: Stephen Hemminger Signed-off-by: David S. Miller --- diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c index db95487..c64934c 100644 --- a/drivers/net/hyperv/netvsc.c +++ b/drivers/net/hyperv/netvsc.c @@ -1195,10 +1195,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(nvchan) == 0 && work_done < budget &&