|
@@ -1,89 +0,0 @@
|
|
|
-/*
|
|
|
- *
|
|
|
- * Copyright (c) 2009, Microsoft Corporation.
|
|
|
- *
|
|
|
- * This program is free software; you can redistribute it and/or modify it
|
|
|
- * under the terms and conditions of the GNU General Public License,
|
|
|
- * version 2, as published by the Free Software Foundation.
|
|
|
- *
|
|
|
- * This program is distributed in the hope it will be useful, but WITHOUT
|
|
|
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
|
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
|
- * more details.
|
|
|
- *
|
|
|
- * You should have received a copy of the GNU General Public License along with
|
|
|
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
|
|
- * Place - Suite 330, Boston, MA 02111-1307 USA.
|
|
|
- *
|
|
|
- * Authors:
|
|
|
- * Haiyang Zhang <haiyangz@microsoft.com>
|
|
|
- * Hank Janssen <hjanssen@microsoft.com>
|
|
|
- *
|
|
|
- */
|
|
|
-
|
|
|
-#ifndef __VMBUSCHANNELINTERFACE_H
|
|
|
-#define __VMBUSCHANNELINTERFACE_H
|
|
|
-
|
|
|
-/*
|
|
|
- * A revision number of vmbus that is used for ensuring both ends on a
|
|
|
- * partition are using compatible versions.
|
|
|
- */
|
|
|
-#define VMBUS_REVISION_NUMBER 13
|
|
|
-
|
|
|
-/* Make maximum size of pipe payload of 16K */
|
|
|
-#define MAX_PIPE_DATA_PAYLOAD (sizeof(u8) * 16384)
|
|
|
-
|
|
|
-/* Define PipeMode values. */
|
|
|
-#define VMBUS_PIPE_TYPE_BYTE 0x00000000
|
|
|
-#define VMBUS_PIPE_TYPE_MESSAGE 0x00000004
|
|
|
-
|
|
|
-/* The size of the user defined data buffer for non-pipe offers. */
|
|
|
-#define MAX_USER_DEFINED_BYTES 120
|
|
|
-
|
|
|
-/* The size of the user defined data buffer for pipe offers. */
|
|
|
-#define MAX_PIPE_USER_DEFINED_BYTES 116
|
|
|
-
|
|
|
-/*
|
|
|
- * At the center of the Channel Management library is the Channel Offer. This
|
|
|
- * struct contains the fundamental information about an offer.
|
|
|
- */
|
|
|
-struct vmbus_channel_offer {
|
|
|
- struct hv_guid if_type;
|
|
|
- struct hv_guid if_instance;
|
|
|
- u64 int_latency; /* in 100ns units */
|
|
|
- u32 if_revision;
|
|
|
- u32 server_ctx_size; /* in bytes */
|
|
|
- u16 chn_flags;
|
|
|
- u16 mmio_megabytes; /* in bytes * 1024 * 1024 */
|
|
|
-
|
|
|
- union {
|
|
|
- /* Non-pipes: The user has MAX_USER_DEFINED_BYTES bytes. */
|
|
|
- struct {
|
|
|
- unsigned char user_def[MAX_USER_DEFINED_BYTES];
|
|
|
- } std;
|
|
|
-
|
|
|
- /*
|
|
|
- * Pipes:
|
|
|
- * The following sructure is an integrated pipe protocol, which
|
|
|
- * is implemented on top of standard user-defined data. Pipe
|
|
|
- * clients have MAX_PIPE_USER_DEFINED_BYTES left for their own
|
|
|
- * use.
|
|
|
- */
|
|
|
- struct {
|
|
|
- u32 pipe_mode;
|
|
|
- unsigned char user_def[MAX_PIPE_USER_DEFINED_BYTES];
|
|
|
- } pipe;
|
|
|
- } u;
|
|
|
- u32 padding;
|
|
|
-} __packed;
|
|
|
-
|
|
|
-/* Server Flags */
|
|
|
-#define VMBUS_CHANNEL_ENUMERATE_DEVICE_INTERFACE 1
|
|
|
-#define VMBUS_CHANNEL_SERVER_SUPPORTS_TRANSFER_PAGES 2
|
|
|
-#define VMBUS_CHANNEL_SERVER_SUPPORTS_GPADLS 4
|
|
|
-#define VMBUS_CHANNEL_NAMED_PIPE_MODE 0x10
|
|
|
-#define VMBUS_CHANNEL_LOOPBACK_OFFER 0x100
|
|
|
-#define VMBUS_CHANNEL_PARENT_OFFER 0x200
|
|
|
-#define VMBUS_CHANNEL_REQUEST_MONITORED_NOTIFICATION 0x400
|
|
|
-
|
|
|
-#endif
|