Author: sephe
Date: Wed Jul 13 04:31:08 2016
New Revision: 302695
URL: https://svnweb.freebsd.org/changeset/base/302695

Log:
  hyperv/vmbus: Add flags field into hv_vmbus_channel for MNF indication
  
  This prepares to remove the unnecessary offer message embedding in
  hv_vmbus_channel.
  
  MFC after:    1 week
  Sponsored by: Microsoft OSTC
  Differential Revision:        https://reviews.freebsd.org/D7019

Modified:
  head/sys/dev/hyperv/include/hyperv.h
  head/sys/dev/hyperv/vmbus/hv_channel.c
  head/sys/dev/hyperv/vmbus/hv_channel_mgmt.c

Modified: head/sys/dev/hyperv/include/hyperv.h
==============================================================================
--- head/sys/dev/hyperv/include/hyperv.h        Wed Jul 13 03:35:22 2016        
(r302694)
+++ head/sys/dev/hyperv/include/hyperv.h        Wed Jul 13 04:31:08 2016        
(r302695)
@@ -538,6 +538,7 @@ typedef struct hv_vmbus_channel {
        struct vmbus_softc              *vmbus_sc;
        hv_vmbus_channel_state          state;
        hv_vmbus_channel_offer_channel  offer_msg;
+       uint32_t                        ch_flags;       /* VMBUS_CHAN_FLAG_ */
        uint32_t                        ch_id;          /* channel id */
        /*
         * These are based on the offer_msg.monitor_id.
@@ -636,6 +637,8 @@ typedef struct hv_vmbus_channel {
 
 #define HV_VMBUS_CHAN_ISPRIMARY(chan)  ((chan)->primary_channel == NULL)
 
+#define VMBUS_CHAN_FLAG_HASMNF         0x0001
+
 static inline void
 hv_set_channel_read_state(hv_vmbus_channel* channel, boolean_t state)
 {

Modified: head/sys/dev/hyperv/vmbus/hv_channel.c
==============================================================================
--- head/sys/dev/hyperv/vmbus/hv_channel.c      Wed Jul 13 03:35:22 2016        
(r302694)
+++ head/sys/dev/hyperv/vmbus/hv_channel.c      Wed Jul 13 04:31:08 2016        
(r302695)
@@ -67,7 +67,7 @@ vmbus_channel_set_event(hv_vmbus_channel
        atomic_set_long(&sc->vmbus_tx_evtflags[chanid >> VMBUS_EVTFLAG_SHIFT],
            1UL << (chanid & VMBUS_EVTFLAG_MASK));
 
-       if (channel->offer_msg.monitor_allocated) {
+       if (channel->ch_flags & VMBUS_CHAN_FLAG_HASMNF) {
                hv_vmbus_monitor_page *monitor_page;
 
                monitor_page = sc->vmbus_mnf2;
@@ -86,7 +86,7 @@ vmbus_channel_sysctl_monalloc(SYSCTL_HAN
        struct hv_vmbus_channel *chan = arg1;
        int alloc = 0;
 
-       if (chan->offer_msg.monitor_allocated)
+       if (chan->ch_flags & VMBUS_CHAN_FLAG_HASMNF)
                alloc = 1;
        return sysctl_handle_int(oidp, &alloc, 0, req);
 }

Modified: head/sys/dev/hyperv/vmbus/hv_channel_mgmt.c
==============================================================================
--- head/sys/dev/hyperv/vmbus/hv_channel_mgmt.c Wed Jul 13 03:35:22 2016        
(r302694)
+++ head/sys/dev/hyperv/vmbus/hv_channel_mgmt.c Wed Jul 13 04:31:08 2016        
(r302695)
@@ -294,6 +294,8 @@ vmbus_channel_on_offer_internal(struct v
        new_channel = hv_vmbus_allocate_channel(sc);
        new_channel->ch_id = offer->child_rel_id;
        new_channel->ch_subidx = offer->offer.sub_channel_index;
+       if (offer->monitor_allocated)
+               new_channel->ch_flags |= VMBUS_CHAN_FLAG_HASMNF;
 
        /*
         * By default we setup state to enable batched
_______________________________________________
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