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 <sthemmin@microsoft.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
493933472d
commit
f4e403633b
@ -1195,10 +1195,15 @@ int netvsc_poll(struct napi_struct *napi, int budget)
|
|||||||
nvchan->desc = hv_pkt_iter_next(channel, nvchan->desc);
|
nvchan->desc = hv_pkt_iter_next(channel, nvchan->desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If send of pending receive completions suceeded
|
/* if ring is empty, signal host */
|
||||||
* and did not exhaust NAPI budget
|
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
|
* 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 &&
|
if (send_recv_completions(nvchan) == 0 &&
|
||||||
work_done < budget &&
|
work_done < budget &&
|
||||||
|
Reference in New Issue
Block a user