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
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to