summaryrefslogtreecommitdiff
path: root/sys/dev/hyperv/include
diff options
context:
space:
mode:
authorWei Hu <whu@FreeBSD.org>2020-05-20 11:03:59 +0000
committerWei Hu <whu@FreeBSD.org>2020-05-20 11:03:59 +0000
commita560f3ebd77733208fa8371a5f2d09523e847c0d (patch)
tree1ef1d17dafc208fa56501a321e958f39b77e2b5d /sys/dev/hyperv/include
parentb5ba8a0f32b1094f172699abf9bf70779a2158d5 (diff)
Notes
Diffstat (limited to 'sys/dev/hyperv/include')
-rw-r--r--sys/dev/hyperv/include/vmbus.h31
1 files changed, 29 insertions, 2 deletions
diff --git a/sys/dev/hyperv/include/vmbus.h b/sys/dev/hyperv/include/vmbus.h
index 6f9cb6459dce..76c1ad632765 100644
--- a/sys/dev/hyperv/include/vmbus.h
+++ b/sys/dev/hyperv/include/vmbus.h
@@ -31,6 +31,7 @@
#include <sys/param.h>
#include <sys/bus.h>
+#include <sys/_iovec.h>
/*
* VMBUS version is 32 bit, upper 16 bit for major_number and lower
@@ -130,6 +131,7 @@ struct task;
struct taskqueue;
typedef void (*vmbus_chan_callback_t)(struct vmbus_channel *, void *);
+typedef int (*vmbus_br_copy_callback_t)(void *, int, void *);
static __inline struct vmbus_channel *
vmbus_get_channel(device_t dev)
@@ -205,6 +207,14 @@ int vmbus_chan_recv(struct vmbus_channel *chan, void *data, int *dlen,
int vmbus_chan_recv_pkt(struct vmbus_channel *chan,
struct vmbus_chanpkt_hdr *pkt, int *pktlen);
+int vmbus_chan_recv_idxadv(struct vmbus_channel *chan,
+ uint32_t advance);
+int vmbus_chan_recv_peek(struct vmbus_channel *chan,
+ void *data, int data_len, uint32_t advance);
+int vmbus_chan_recv_peek_call(struct vmbus_channel *chan,
+ int data_len, uint32_t skip,
+ vmbus_br_copy_callback_t cb, void *cbarg);
+
int vmbus_chan_send(struct vmbus_channel *chan, uint16_t type,
uint16_t flags, void *data, int dlen, uint64_t xactid);
int vmbus_chan_send_sglist(struct vmbus_channel *chan,
@@ -213,13 +223,30 @@ int vmbus_chan_send_sglist(struct vmbus_channel *chan,
int vmbus_chan_send_prplist(struct vmbus_channel *chan,
struct vmbus_gpa_range *prp, int prp_cnt, void *data,
int dlen, uint64_t xactid);
+int vmbus_chan_iov_send(struct vmbus_channel *chan,
+ const struct iovec iov[], int iovlen,
+ vmbus_br_copy_callback_t cb, void *cbarg);
+uint32_t vmbus_chan_write_available(struct vmbus_channel *chan);
+uint32_t vmbus_chan_read_available(struct vmbus_channel *chan);
+bool vmbus_chan_write_signal(struct vmbus_channel *chan,
+ int32_t min_signal_size);
+void vmbus_chan_set_pending_send_size(struct vmbus_channel *chan,
+ uint32_t size);
uint32_t vmbus_chan_id(const struct vmbus_channel *chan);
uint32_t vmbus_chan_subidx(const struct vmbus_channel *chan);
bool vmbus_chan_is_primary(const struct vmbus_channel *chan);
bool vmbus_chan_is_revoked(const struct vmbus_channel *chan);
-const struct hyperv_guid *
- vmbus_chan_guid_inst(const struct vmbus_channel *chan);
+bool vmbus_chan_is_hvs(const struct vmbus_channel *chan);
+bool vmbus_chan_is_hvs_conn_from_host(
+ const struct vmbus_channel *chan);
+int vmbus_req_tl_connect(struct hyperv_guid *,
+ struct hyperv_guid *);
+
+struct hyperv_guid *
+ vmbus_chan_guid_type(struct vmbus_channel *chan);
+struct hyperv_guid *
+ vmbus_chan_guid_inst(struct vmbus_channel *chan);
int vmbus_chan_prplist_nelem(int br_size, int prpcnt_max,
int dlen_max);
bool vmbus_chan_rx_empty(const struct vmbus_channel *chan);