Staging: hv: remove VMBUS_MSGINFO typedef
[linux-2.6-block.git] / drivers / staging / hv / NetVsc.h
1 /*
2  *
3  * Copyright (c) 2009, Microsoft Corporation.
4  *
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms and conditions of the GNU General Public License,
7  * version 2, as published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
12  * more details.
13  *
14  * You should have received a copy of the GNU General Public License along with
15  * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
16  * Place - Suite 330, Boston, MA 02111-1307 USA.
17  *
18  * Authors:
19  *   Hank Janssen  <hjanssen@microsoft.com>
20  *
21  */
22
23
24 #ifndef _NETVSC_H_
25 #define _NETVSC_H_
26
27 #include "include/VmbusPacketFormat.h"
28 #include "include/nvspprotocol.h"
29
30 #include "include/List.h"
31
32 #include "include/NetVscApi.h"
33
34 /* #defines */
35
36 /* #define NVSC_MIN_PROTOCOL_VERSION                       1 */
37 /* #define NVSC_MAX_PROTOCOL_VERSION                       1 */
38
39 #define NETVSC_SEND_BUFFER_SIZE                         64*1024 /* 64K */
40 #define NETVSC_SEND_BUFFER_ID                           0xface
41
42
43 #define NETVSC_RECEIVE_BUFFER_SIZE                      1024*1024 /* 1MB */
44
45 #define NETVSC_RECEIVE_BUFFER_ID                        0xcafe
46
47 #define NETVSC_RECEIVE_SG_COUNT                         1
48
49 /* Preallocated receive packets */
50 #define NETVSC_RECEIVE_PACKETLIST_COUNT         256
51
52
53 /* Data types */
54
55
56 /* Per netvsc channel-specific */
57 typedef struct _NETVSC_DEVICE {
58         DEVICE_OBJECT                                   *Device;
59
60         int                                                             RefCount;
61
62         int                                                             NumOutstandingSends;
63         /* List of free preallocated NETVSC_PACKET to represent receive packet */
64         LIST_ENTRY                                              ReceivePacketList;
65         spinlock_t receive_packet_list_lock;
66
67         /* Send buffer allocated by us but manages by NetVSP */
68         void *                                                  SendBuffer;
69         u32                                                     SendBufferSize;
70         u32                                                     SendBufferGpadlHandle;
71         u32                                                     SendSectionSize;
72
73         /* Receive buffer allocated by us but manages by NetVSP */
74         void *                                                  ReceiveBuffer;
75         u32                                                     ReceiveBufferSize;
76         u32                                                     ReceiveBufferGpadlHandle;
77         u32                                                     ReceiveSectionCount;
78         PNVSP_1_RECEIVE_BUFFER_SECTION  ReceiveSections;
79
80         /* Used for NetVSP initialization protocol */
81         HANDLE                                                  ChannelInitEvent;
82         NVSP_MESSAGE                                    ChannelInitPacket;
83
84         NVSP_MESSAGE                                    RevokePacket;
85         /* unsigned char                                                        HwMacAddr[HW_MACADDR_LEN]; */
86
87         /* Holds rndis device info */
88         void                                                    *Extension;
89 } NETVSC_DEVICE;
90
91 #endif /* _NETVSC_H_ */