diff options
author | Sepherosa Ziehau <sephe@FreeBSD.org> | 2016-06-06 06:18:18 +0000 |
---|---|---|
committer | Sepherosa Ziehau <sephe@FreeBSD.org> | 2016-06-06 06:18:18 +0000 |
commit | fa4828b0ab8eb9bf42bb927fd6170687e9090882 (patch) | |
tree | 1434033b1b75f24c8fd0660c470cdc0ce54fc9d7 | |
parent | d8bf51683df44682472147db21b02ba7a831f671 (diff) | |
download | src-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.c | 4 | ||||
-rw-r--r-- | sys/dev/hyperv/vmbus/vmbus.c | 9 | ||||
-rw-r--r-- | sys/dev/hyperv/vmbus/vmbus_reg.h | 1 |
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 |