+/* Per netvsc channel-specific */
+struct NETVSC_DEVICE {
+ struct hv_device *Device;
+
+ atomic_t RefCount;
+ atomic_t NumOutstandingSends;
+ /*
+ * List of free preallocated hv_netvsc_packet to represent receive
+ * packet
+ */
+ LIST_ENTRY ReceivePacketList;
+ spinlock_t receive_packet_list_lock;
+
+ /* Send buffer allocated by us but manages by NetVSP */
+ void *SendBuffer;
+ u32 SendBufferSize;
+ u32 SendBufferGpadlHandle;
+ u32 SendSectionSize;
+
+ /* Receive buffer allocated by us but manages by NetVSP */
+ void *ReceiveBuffer;
+ u32 ReceiveBufferSize;
+ u32 ReceiveBufferGpadlHandle;
+ u32 ReceiveSectionCount;
+ PNVSP_1_RECEIVE_BUFFER_SECTION ReceiveSections;
+
+ /* Used for NetVSP initialization protocol */
+ struct osd_waitevent *ChannelInitEvent;
+ NVSP_MESSAGE ChannelInitPacket;
+
+ NVSP_MESSAGE RevokePacket;
+ /* unsigned char HwMacAddr[HW_MACADDR_LEN]; */
+
+ /* Holds rndis device info */
+ void *Extension;
+};
+
+#endif /* _NETVSC_H_ */