svn commit: r302814 - in head/sys/dev/hyperv: include netvsc vmbus

Sepherosa Ziehau sephe at FreeBSD.org
Thu Jul 14 07:24:05 UTC 2016


Author: sephe
Date: Thu Jul 14 07:24:03 2016
New Revision: 302814
URL: https://svnweb.freebsd.org/changeset/base/302814

Log:
  hyperv/vmbus: Use sub-channel index to detect primary channel
  
  In case that VMBUS_CHAN_ISPRIMARY is needed in the early place of
  channel setup.
  
  MFC after:	1 week
  Sponsored by:	Microsoft OSTC
  Differential Revision:	https://reviews.freebsd.org/D7108

Modified:
  head/sys/dev/hyperv/include/hyperv.h
  head/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.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	Thu Jul 14 07:08:59 2016	(r302813)
+++ head/sys/dev/hyperv/include/hyperv.h	Thu Jul 14 07:24:03 2016	(r302814)
@@ -336,7 +336,7 @@ typedef struct hv_vmbus_channel {
 	struct sysctl_ctx_list		ch_sysctl_ctx;
 } hv_vmbus_channel;
 
-#define HV_VMBUS_CHAN_ISPRIMARY(chan)	((chan)->primary_channel == NULL)
+#define VMBUS_CHAN_ISPRIMARY(chan)	((chan)->ch_subidx == 0)
 
 #define VMBUS_CHAN_FLAG_HASMNF		0x0001
 /*

Modified: head/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c
==============================================================================
--- head/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c	Thu Jul 14 07:08:59 2016	(r302813)
+++ head/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c	Thu Jul 14 07:24:03 2016	(r302814)
@@ -2957,7 +2957,7 @@ static void
 hn_subchan_attach(struct hn_softc *sc, struct hv_vmbus_channel *chan)
 {
 
-	KASSERT(!HV_VMBUS_CHAN_ISPRIMARY(chan),
+	KASSERT(!VMBUS_CHAN_ISPRIMARY(chan),
 	    ("subchannel callback on primary channel"));
 	KASSERT(chan->ch_subidx > 0,
 	    ("invalid channel subidx %u",

Modified: head/sys/dev/hyperv/vmbus/hv_channel_mgmt.c
==============================================================================
--- head/sys/dev/hyperv/vmbus/hv_channel_mgmt.c	Thu Jul 14 07:08:59 2016	(r302813)
+++ head/sys/dev/hyperv/vmbus/hv_channel_mgmt.c	Thu Jul 14 07:24:03 2016	(r302814)
@@ -285,7 +285,7 @@ vmbus_chan_msgproc_choffer(struct vmbus_
 		return;
 	}
 
-	if (HV_VMBUS_CHAN_ISPRIMARY(chan)) {
+	if (VMBUS_CHAN_ISPRIMARY(chan)) {
 		/*
 		 * Add device for this primary channel.
 		 *
@@ -332,7 +332,7 @@ vmbus_chan_detach_task(void *xchan, int 
 {
 	struct hv_vmbus_channel *chan = xchan;
 
-	if (HV_VMBUS_CHAN_ISPRIMARY(chan)) {
+	if (VMBUS_CHAN_ISPRIMARY(chan)) {
 		/* Only primary channel owns the device */
 		hv_vmbus_child_device_unregister(chan);
 		/* NOTE: DO NOT free primary channel for now */
@@ -413,7 +413,7 @@ hv_vmbus_release_unattached_channels(str
 	    channel = TAILQ_FIRST(&sc->vmbus_chlist);
 	    TAILQ_REMOVE(&sc->vmbus_chlist, channel, ch_link);
 
-	    if (HV_VMBUS_CHAN_ISPRIMARY(channel)) {
+	    if (VMBUS_CHAN_ISPRIMARY(channel)) {
 		/* Only primary channel owns the device */
 		hv_vmbus_child_device_unregister(channel);
 	    }


More information about the svn-src-all mailing list