aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSepherosa Ziehau <sephe@FreeBSD.org>2016-06-06 06:18:18 +0000
committerSepherosa Ziehau <sephe@FreeBSD.org>2016-06-06 06:18:18 +0000
commitfa4828b0ab8eb9bf42bb927fd6170687e9090882 (patch)
tree1434033b1b75f24c8fd0660c470cdc0ce54fc9d7
parentd8bf51683df44682472147db21b02ba7a831f671 (diff)
downloadsrc-fa4828b0ab8eb9bf42bb927fd6170687e9090882.tar.gz
src-fa4828b0ab8eb9bf42bb927fd6170687e9090882.zip
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
Notes
Notes: svn path=/head/; revision=301484
-rw-r--r--sys/dev/hyperv/vmbus/hv_connection.c4
-rw-r--r--sys/dev/hyperv/vmbus/vmbus.c9
-rw-r--r--sys/dev/hyperv/vmbus/vmbus_reg.h1
3 files changed, 10 insertions, 4 deletions
diff --git a/sys/dev/hyperv/vmbus/hv_connection.c b/sys/dev/hyperv/vmbus/hv_connection.c
index 668914c4c649..8a0bb09296a2 100644
--- a/sys/dev/hyperv/vmbus/hv_connection.c
+++ b/sys/dev/hyperv/vmbus/hv_connection.c
@@ -373,8 +373,8 @@ int hv_vmbus_post_message(void *buffer, size_t bufferLen)
* 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);
diff --git a/sys/dev/hyperv/vmbus/vmbus.c b/sys/dev/hyperv/vmbus/vmbus.c
index 6d1445d6bd2a..ea4a5bcce17d 100644
--- a/sys/dev/hyperv/vmbus/vmbus.c
+++ b/sys/dev/hyperv/vmbus/vmbus.c
@@ -85,8 +85,13 @@ vmbus_msg_task(void *xsc, int pending __unused)
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 *,
diff --git a/sys/dev/hyperv/vmbus/vmbus_reg.h b/sys/dev/hyperv/vmbus/vmbus_reg.h
index 465dced54689..4be7f1b75e4a 100644
--- a/sys/dev/hyperv/vmbus/vmbus_reg.h
+++ b/sys/dev/hyperv/vmbus/vmbus_reg.h
@@ -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