aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/hyperv.h
diff options
context:
space:
mode:
authorK. Y. Srinivasan <kys@microsoft.com>2012-12-01 06:46:39 -0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-01-17 11:34:36 -0800
commit2416603ef1e12955850ade0d0cdecbef1fc59fa3 (patch)
treec290dcfc4d40a824fe40a8b2d8e3283674b43372 /include/linux/hyperv.h
parentDrivers: hv: Support handling multiple VMBUS versions (diff)
downloadlinux-dev-2416603ef1e12955850ade0d0cdecbef1fc59fa3.tar.xz
linux-dev-2416603ef1e12955850ade0d0cdecbef1fc59fa3.zip
Drivers: hv: Update the ring buffer structure to match win8 functionality
Update the ringbuffer structure to support win8 functionality. Signed-off-by: K. Y. Srinivasan <kys@microsoft.com> Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include/linux/hyperv.h')
-rw-r--r--include/linux/hyperv.h28
1 files changed, 21 insertions, 7 deletions
diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h
index b097bf9d9328..2b5480126394 100644
--- a/include/linux/hyperv.h
+++ b/include/linux/hyperv.h
@@ -325,14 +325,28 @@ struct hv_ring_buffer {
u32 interrupt_mask;
- /* Pad it to PAGE_SIZE so that data starts on page boundary */
- u8 reserved[4084];
-
- /* NOTE:
- * The interrupt_mask field is used only for channels but since our
- * vmbus connection also uses this data structure and its data starts
- * here, we commented out this field.
+ /*
+ * Win8 uses some of the reserved bits to implement
+ * interrupt driven flow management. On the send side
+ * we can request that the receiver interrupt the sender
+ * when the ring transitions from being full to being able
+ * to handle a message of size "pending_send_sz".
+ *
+ * Add necessary state for this enhancement.
*/
+ u32 pending_send_sz;
+
+ u32 reserved1[12];
+
+ union {
+ struct {
+ u32 feat_pending_send_sz:1;
+ };
+ u32 value;
+ } feature_bits;
+
+ /* Pad it to PAGE_SIZE so that data starts on page boundary */
+ u8 reserved2[4028];
/*
* Ring data starts here + RingDataStartOffset