aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/hv/NetVsc.h
diff options
context:
space:
mode:
authorHank Janssen <hjanssen@microsoft.com>2009-07-13 15:34:54 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2009-09-15 12:01:43 -0700
commitfceaf24a943d8d50391f409ac7fb888cd1f36f32 (patch)
treebbde5063f0208adcb283e29a922774b6ae85a604 /drivers/staging/hv/NetVsc.h
parentStaging: hv: add the Hyper-V virtual block driver (diff)
downloadlinux-dev-fceaf24a943d8d50391f409ac7fb888cd1f36f32.tar.xz
linux-dev-fceaf24a943d8d50391f409ac7fb888cd1f36f32.zip
Staging: hv: add the Hyper-V virtual network driver
This is the virtual network driver when running Linux on top of Hyper-V. Signed-off-by: Hank Janssen <hjanssen@microsoft.com> Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/hv/NetVsc.h')
-rw-r--r--drivers/staging/hv/NetVsc.h91
1 files changed, 91 insertions, 0 deletions
diff --git a/drivers/staging/hv/NetVsc.h b/drivers/staging/hv/NetVsc.h
new file mode 100644
index 000000000000..37d07449849a
--- /dev/null
+++ b/drivers/staging/hv/NetVsc.h
@@ -0,0 +1,91 @@
+/*
+ *
+ * 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:
+ * Hank Janssen <hjanssen@microsoft.com>
+ *
+ */
+
+
+#ifndef _NETVSC_H_
+#define _NETVSC_H_
+
+#include "VmbusPacketFormat.h"
+#include "nvspprotocol.h"
+
+#include "List.h"
+
+#include "NetVscApi.h"
+//
+// #defines
+//
+//#define NVSC_MIN_PROTOCOL_VERSION 1
+//#define NVSC_MAX_PROTOCOL_VERSION 1
+
+#define NETVSC_SEND_BUFFER_SIZE 64*1024 // 64K
+#define NETVSC_SEND_BUFFER_ID 0xface
+
+
+#define NETVSC_RECEIVE_BUFFER_SIZE 1024*1024 // 1MB
+
+#define NETVSC_RECEIVE_BUFFER_ID 0xcafe
+
+#define NETVSC_RECEIVE_SG_COUNT 1
+
+// Preallocated receive packets
+#define NETVSC_RECEIVE_PACKETLIST_COUNT 256
+
+//
+// Data types
+//
+
+// Per netvsc channel-specific
+typedef struct _NETVSC_DEVICE {
+ DEVICE_OBJECT *Device;
+
+ int RefCount;
+
+ int NumOutstandingSends;
+ // List of free preallocated NETVSC_PACKET to represent receive packet
+ LIST_ENTRY ReceivePacketList;
+ HANDLE ReceivePacketListLock;
+
+ // Send buffer allocated by us but manages by NetVSP
+ PVOID SendBuffer;
+ UINT32 SendBufferSize;
+ UINT32 SendBufferGpadlHandle;
+ UINT32 SendSectionSize;
+
+ // Receive buffer allocated by us but manages by NetVSP
+ PVOID ReceiveBuffer;
+ UINT32 ReceiveBufferSize;
+ UINT32 ReceiveBufferGpadlHandle;
+ UINT32 ReceiveSectionCount;
+ PNVSP_1_RECEIVE_BUFFER_SECTION ReceiveSections;
+
+ // Used for NetVSP initialization protocol
+ HANDLE ChannelInitEvent;
+ NVSP_MESSAGE ChannelInitPacket;
+
+ NVSP_MESSAGE RevokePacket;
+ //UCHAR HwMacAddr[HW_MACADDR_LEN];
+
+ // Holds rndis device info
+ void *Extension;
+} NETVSC_DEVICE;
+
+#endif // _NETVSC_H_