diff options
author | 2012-12-01 06:46:40 -0800 | |
---|---|---|
committer | 2013-01-17 11:34:36 -0800 | |
commit | 29423b7e51a8ea4d687cf98c3a50f33c554be194 (patch) | |
tree | 199f5f23e0f1ed56fce1a8488782d7258c266f02 /include | |
parent | Drivers: hv: Update the ring buffer structure to match win8 functionality (diff) | |
download | linux-29423b7e51a8ea4d687cf98c3a50f33c554be194.tar.gz linux-29423b7e51a8ea4d687cf98c3a50f33c554be194.tar.bz2 linux-29423b7e51a8ea4d687cf98c3a50f33c554be194.zip |
Drivers: hv: Extend/modify vmbus_channel_offer_channel for win7 and beyond
The "offfer" message sent by the host has been extended in win7 (ws2008 R2).
Add/modify state to reflect this extension. All these changes are backward
compatible.
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')
-rw-r--r-- | include/linux/hyperv.h | 36 |
1 files changed, 31 insertions, 5 deletions
diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h index 2b5480126394..bee559ada3bb 100644 --- a/include/linux/hyperv.h +++ b/include/linux/hyperv.h @@ -440,9 +440,13 @@ hv_get_ringbuffer_availbytes(struct hv_ring_buffer_info *rbi, struct vmbus_channel_offer { uuid_le if_type; uuid_le if_instance; - u64 int_latency; /* in 100ns units */ - u32 if_revision; - u32 server_ctx_size; /* in bytes */ + + /* + * These two fields are not currently used. + */ + u64 reserved1; + u64 reserved2; + u16 chn_flags; u16 mmio_megabytes; /* in bytes * 1024 * 1024 */ @@ -464,7 +468,11 @@ struct vmbus_channel_offer { unsigned char user_def[MAX_PIPE_USER_DEFINED_BYTES]; } pipe; } u; - u32 padding; + /* + * The sub_channel_index is defined in win8. + */ + u16 sub_channel_index; + u16 reserved3; } __packed; /* Server Flags */ @@ -660,7 +668,25 @@ struct vmbus_channel_offer_channel { struct vmbus_channel_offer offer; u32 child_relid; u8 monitorid; - u8 monitor_allocated; + /* + * win7 and beyond splits this field into a bit field. + */ + u8 monitor_allocated:1; + u8 reserved:7; + /* + * These are new fields added in win7 and later. + * Do not access these fields without checking the + * negotiated protocol. + * + * If "is_dedicated_interrupt" is set, we must not set the + * associated bit in the channel bitmap while sending the + * interrupt to the host. + * + * connection_id is to be used in signaling the host. + */ + u16 is_dedicated_interrupt:1; + u16 reserved1:15; + u32 connection_id; } __packed; /* Rescind Offer parameters */ |