Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 6 Jun 2016 06:18:19 +0000 (UTC)
From:      Sepherosa Ziehau <sephe@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r301484 - head/sys/dev/hyperv/vmbus
Message-ID:  <201606060618.u566IJVa084323@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: sephe
Date: Mon Jun  6 06:18:18 2016
New Revision: 301484
URL: https://svnweb.freebsd.org/changeset/base/301484

Log:
  hyperv/vmbus: Define type for channel messages.
  
  And fix message processing; only channel messages are supported.
  
  MFC after:	1 week
  Sponsored by:	Microsoft OSTC
  Differential Revision:	https://reviews.freebsd.org/D6706

Modified:
  head/sys/dev/hyperv/vmbus/hv_connection.c
  head/sys/dev/hyperv/vmbus/vmbus.c
  head/sys/dev/hyperv/vmbus/vmbus_reg.h

Modified: head/sys/dev/hyperv/vmbus/hv_connection.c
==============================================================================
--- head/sys/dev/hyperv/vmbus/hv_connection.c	Mon Jun  6 05:55:37 2016	(r301483)
+++ head/sys/dev/hyperv/vmbus/hv_connection.c	Mon Jun  6 06:18:18 2016	(r301484)
@@ -373,8 +373,8 @@ int hv_vmbus_post_message(void *buffer, 
 	 * insufficient resources. 20 times should suffice in practice.
 	 */
 	for (retries = 0; retries < 20; retries++) {
-		ret = hv_vmbus_post_msg_via_msg_ipc(connId, 1, buffer,
-						    bufferLen);
+		ret = hv_vmbus_post_msg_via_msg_ipc(connId,
+		    VMBUS_MSGTYPE_CHANNEL, buffer, bufferLen);
 		if (ret == HV_STATUS_SUCCESS)
 			return (0);
 

Modified: head/sys/dev/hyperv/vmbus/vmbus.c
==============================================================================
--- head/sys/dev/hyperv/vmbus/vmbus.c	Mon Jun  6 05:55:37 2016	(r301483)
+++ head/sys/dev/hyperv/vmbus/vmbus.c	Mon Jun  6 06:18:18 2016	(r301484)
@@ -85,8 +85,13 @@ vmbus_msg_task(void *xsc, int pending __
 		hv_vmbus_channel_msg_header *hdr;
 		hv_vmbus_channel_msg_type msg_type;
 
-		if (msg->msg_type == VMBUS_MSGTYPE_NONE)
-			break; /* no message */
+		if (msg->msg_type == VMBUS_MSGTYPE_NONE) {
+			/* No message */
+			break;
+		} else if (msg->msg_type != VMBUS_MSGTYPE_CHANNEL) {
+			/* Not a channel message */
+			goto handled;
+		}
 
 		/* XXX: update messageHandler interface */
 		hdr = __DEVOLATILE(hv_vmbus_channel_msg_header *,

Modified: head/sys/dev/hyperv/vmbus/vmbus_reg.h
==============================================================================
--- head/sys/dev/hyperv/vmbus/vmbus_reg.h	Mon Jun  6 05:55:37 2016	(r301483)
+++ head/sys/dev/hyperv/vmbus/vmbus_reg.h	Mon Jun  6 06:18:18 2016	(r301484)
@@ -49,6 +49,7 @@ struct vmbus_message {
 CTASSERT(sizeof(struct vmbus_message) == VMBUS_MSG_SIZE);
 
 #define VMBUS_MSGTYPE_NONE		0
+#define VMBUS_MSGTYPE_CHANNEL		1
 #define VMBUS_MSGTYPE_TIMER_EXPIRED	0x80000010
 
 #define VMBUS_MSGFLAG_PENDING		0x01



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201606060618.u566IJVa084323>