aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/hyperv
diff options
context:
space:
mode:
authorSepherosa Ziehau <sephe@FreeBSD.org>2016-09-28 04:25:25 +0000
committerSepherosa Ziehau <sephe@FreeBSD.org>2016-09-28 04:25:25 +0000
commitc8e8d13398eef7cf113f121c41c77905c5d4ed3e (patch)
tree61b9767c7e8ea35a214db34019f9aff6d6c9d7b8 /sys/dev/hyperv
parent5de11ef9510d0129c9a756b008a633ba3113f094 (diff)
downloadsrc-c8e8d13398eef7cf113f121c41c77905c5d4ed3e.tar.gz
src-c8e8d13398eef7cf113f121c41c77905c5d4ed3e.zip
hyperv/vmbus: Add function to drain channel interrupt task.
MFC after: 1 week Sponsored by: Microsoft Differential Revision: https://reviews.freebsd.org/D8045
Notes
Notes: svn path=/head/; revision=306389
Diffstat (limited to 'sys/dev/hyperv')
-rw-r--r--sys/dev/hyperv/include/vmbus.h1
-rw-r--r--sys/dev/hyperv/vmbus/vmbus_chan.c7
2 files changed, 8 insertions, 0 deletions
diff --git a/sys/dev/hyperv/include/vmbus.h b/sys/dev/hyperv/include/vmbus.h
index 50f3148d35d7..43831eb4b955 100644
--- a/sys/dev/hyperv/include/vmbus.h
+++ b/sys/dev/hyperv/include/vmbus.h
@@ -133,6 +133,7 @@ int vmbus_chan_open_br(struct vmbus_channel *chan,
const struct vmbus_chan_br *cbr, const void *udata,
int udlen, vmbus_chan_callback_t cb, void *cbarg);
void vmbus_chan_close(struct vmbus_channel *chan);
+void vmbus_chan_intr_drain(struct vmbus_channel *chan);
int vmbus_chan_gpadl_connect(struct vmbus_channel *chan,
bus_addr_t paddr, int size, uint32_t *gpadl);
diff --git a/sys/dev/hyperv/vmbus/vmbus_chan.c b/sys/dev/hyperv/vmbus/vmbus_chan.c
index 68a80d38790e..e7e194715273 100644
--- a/sys/dev/hyperv/vmbus/vmbus_chan.c
+++ b/sys/dev/hyperv/vmbus/vmbus_chan.c
@@ -756,6 +756,13 @@ vmbus_chan_close(struct vmbus_channel *chan)
vmbus_chan_close_internal(chan);
}
+void
+vmbus_chan_intr_drain(struct vmbus_channel *chan)
+{
+
+ taskqueue_drain(chan->ch_tq, &chan->ch_task);
+}
+
int
vmbus_chan_send(struct vmbus_channel *chan, uint16_t type, uint16_t flags,
void *data, int dlen, uint64_t xactid)