mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] hv: do not lose pending heartbeat vmbus packets
@ 2016-09-13  3:31 Long Li
  2016-09-19 17:15 ` Haiyang Zhang
  2016-09-29  9:22 ` Vitaly Kuznetsov
  0 siblings, 2 replies; 4+ messages in thread
From: Long Li @ 2016-09-13  3:31 UTC (permalink / raw)
  To: K. Y. Srinivasan, Haiyang Zhang; +Cc: devel, linux-kernel, Long Li

From: Long Li <longli@microsoft.com>

The host keeps sending heartbeat packets independent of guest responding to them. In some situations, there might be multiple heartbeat packets pending in the ring buffer. Don't lose them, read them all.

Signed-off-by: Long Li <longli@microsoft.com>
---
 drivers/hv/hv_util.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/hv/hv_util.c b/drivers/hv/hv_util.c
index d5acaa2..9dc6372 100644
--- a/drivers/hv/hv_util.c
+++ b/drivers/hv/hv_util.c
@@ -283,10 +283,14 @@ static void heartbeat_onchannelcallback(void *context)
 	u8 *hbeat_txf_buf = util_heartbeat.recv_buffer;
 	struct icmsg_negotiate *negop = NULL;
 
-	vmbus_recvpacket(channel, hbeat_txf_buf,
-			 PAGE_SIZE, &recvlen, &requestid);
+	while (1) {
+
+		vmbus_recvpacket(channel, hbeat_txf_buf,
+				 PAGE_SIZE, &recvlen, &requestid);
+
+		if (!recvlen)
+			break;
 
-	if (recvlen > 0) {
 		icmsghdrp = (struct icmsg_hdr *)&hbeat_txf_buf[
 				sizeof(struct vmbuspipe_hdr)];
 
-- 
1.8.5.6

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-09-30 21:04 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-09-13  3:31 [PATCH] hv: do not lose pending heartbeat vmbus packets Long Li
2016-09-19 17:15 ` Haiyang Zhang
2016-09-29  9:22 ` Vitaly Kuznetsov
2016-09-30 18:31   ` Long Li

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®