]> Pileus Git - ~andy/linux/blob - drivers/staging/hv/NetVsc.h
Staging: hv: remove UINT32 and INT32 typedefs
[~andy/linux] / 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         HANDLE                                                  ReceivePacketListLock;
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         //UCHAR                                                 HwMacAddr[HW_MACADDR_LEN];
86
87         // Holds rndis device info
88         void                                                    *Extension;
89 } NETVSC_DEVICE;
90
91 #endif // _NETVSC_H_