summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brown2014-12-20 13:40:17 +0100
committerMichael Brown2014-12-20 13:40:17 +0100
commit4e6821662c33926a979ecc6fb99698b8b0b9e271 (patch)
tree3e12c2afe604dd41cb4981adc70632e86422f985
parent[rndis] Clear receive filter when closing the device (diff)
downloadipxe-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.c4
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 );
}
/**