diff options
author | Michael Brown | 2014-12-20 13:40:17 +0100 |
---|---|---|
committer | Michael Brown | 2014-12-20 13:40:17 +0100 |
commit | 4e6821662c33926a979ecc6fb99698b8b0b9e271 (patch) | |
tree | 3e12c2afe604dd41cb4981adc70632e86422f985 | |
parent | [rndis] Clear receive filter when closing the device (diff) | |
download | ipxe-4e6821662c33926a979ecc6fb99698b8b0b9e271.tar.gz ipxe-4e6821662c33926a979ecc6fb99698b8b0b9e271.tar.xz ipxe-4e6821662c33926a979ecc6fb99698b8b0b9e271.zip |
[hyperv] Receive all VMBus messages in a poll
Allow for elision of transmitted TCP ACKs by handling all received
VMBus messages in each network device poll operation.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
-rw-r--r-- | src/drivers/net/netvsc.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/drivers/net/netvsc.c b/src/drivers/net/netvsc.c index bcab8a9c..8610339d 100644 --- a/src/drivers/net/netvsc.c +++ b/src/drivers/net/netvsc.c @@ -435,9 +435,11 @@ static struct vmbus_channel_operations netvsc_channel_operations = { */ static void netvsc_poll ( struct rndis_device *rndis ) { struct netvsc_device *netvsc = rndis->priv; + struct vmbus_device *vmdev = netvsc->vmdev; /* Poll VMBus device */ - vmbus_poll ( netvsc->vmdev ); + while ( vmbus_has_data ( vmdev ) ) + vmbus_poll ( vmdev ); } /** |