/* Synchronize the request/response if needed */
struct osd_waitevent *WaitEvent;
- VSTOR_PACKET VStorPacket;
+ struct vstor_packet VStorPacket;
} STORVSC_REQUEST_EXTENSION;
static void
StorVscOnIOCompletion(
struct hv_device *Device,
- VSTOR_PACKET *VStorPacket,
+ struct vstor_packet *VStorPacket,
STORVSC_REQUEST_EXTENSION *RequestExt
);
static void
StorVscOnReceive(
struct hv_device *Device,
- VSTOR_PACKET *VStorPacket,
+ struct vstor_packet *VStorPacket,
STORVSC_REQUEST_EXTENSION *RequestExt
);
DPRINT_ENTER(STORVSC);
- DPRINT_DBG(STORVSC, "sizeof(STORVSC_REQUEST)=%zd sizeof(STORVSC_REQUEST_EXTENSION)=%zd sizeof(VSTOR_PACKET)=%zd, sizeof(VMSCSI_REQUEST)=%zd",
- sizeof(struct hv_storvsc_request), sizeof(STORVSC_REQUEST_EXTENSION), sizeof(VSTOR_PACKET), sizeof(VMSCSI_REQUEST));
+ DPRINT_DBG(STORVSC, "sizeof(STORVSC_REQUEST)=%zd sizeof(STORVSC_REQUEST_EXTENSION)=%zd sizeof(struct vstor_packet)=%zd, sizeof(struct vmscsi_request)=%zd",
+ sizeof(struct hv_storvsc_request), sizeof(STORVSC_REQUEST_EXTENSION), sizeof(struct vstor_packet), sizeof(struct vmscsi_request));
/* Make sure we are at least 2 pages since 1 page is used for control */
ASSERT(storDriver->RingBufferSize >= (PAGE_SIZE << 1));
* Divide the ring buffer data size (which is 1 page less
* than the ring buffer size since that page is reserved for
* the ring buffer indices) by the max request size (which is
- * VMBUS_CHANNEL_PACKET_MULITPAGE_BUFFER + VSTOR_PACKET + u64)
+ * VMBUS_CHANNEL_PACKET_MULITPAGE_BUFFER + struct vstor_packet + u64)
*/
storDriver->MaxOutstandingRequestsPerChannel =
- ((storDriver->RingBufferSize - PAGE_SIZE) / ALIGN_UP(MAX_MULTIPAGE_BUFFER_PACKET + sizeof(VSTOR_PACKET) + sizeof(u64),sizeof(u64)));
+ ((storDriver->RingBufferSize - PAGE_SIZE) / ALIGN_UP(MAX_MULTIPAGE_BUFFER_PACKET + sizeof(struct vstor_packet) + sizeof(u64),sizeof(u64)));
DPRINT_INFO(STORVSC, "max io %u, currently %u\n", storDriver->MaxOutstandingRequestsPerChannel, STORVSC_MAX_IO_REQUESTS);
{
int ret=0;
STORVSC_DEVICE *storDevice;
- /* VMSTORAGE_CHANNEL_PROPERTIES *props; */
+ /* struct vmstorage_channel_properties *props; */
STORVSC_DEVICE_INFO *deviceInfo = (STORVSC_DEVICE_INFO*)AdditionalInfo;
DPRINT_ENTER(STORVSC);
}
/* Save the channel properties to our storvsc channel */
- /* props = (VMSTORAGE_CHANNEL_PROPERTIES*) channel->offerMsg.Offer.u.Standard.UserDefined; */
+ /* props = (struct vmstorage_channel_properties *) channel->offerMsg.Offer.u.Standard.UserDefined; */
/* FIXME: */
/*
int ret=0;
STORVSC_DEVICE *storDevice;
STORVSC_REQUEST_EXTENSION *request;
- VSTOR_PACKET *vstorPacket;
+ struct vstor_packet *vstorPacket;
storDevice = GetStorDevice(Device);
if (!storDevice)
ret = Device->Driver->VmbusChannelInterface.SendPacket(Device,
vstorPacket,
- sizeof(VSTOR_PACKET),
+ sizeof(struct vstor_packet),
(unsigned long)request,
VmbusPacketTypeDataInBand,
VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
DPRINT_INFO(STORVSC, "QUERY_PROTOCOL_VERSION_OPERATION...");
/* reuse the packet for version range supported */
- memset(vstorPacket, sizeof(VSTOR_PACKET), 0);
+ memset(vstorPacket, sizeof(struct vstor_packet), 0);
vstorPacket->Operation = VStorOperationQueryProtocolVersion;
vstorPacket->Flags = REQUEST_COMPLETION_FLAG;
ret = Device->Driver->VmbusChannelInterface.SendPacket(Device,
vstorPacket,
- sizeof(VSTOR_PACKET),
+ sizeof(struct vstor_packet),
(unsigned long)request,
VmbusPacketTypeDataInBand,
VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
/* Query channel properties */
DPRINT_INFO(STORVSC, "QUERY_PROPERTIES_OPERATION...");
- memset(vstorPacket, sizeof(VSTOR_PACKET), 0);
+ memset(vstorPacket, sizeof(struct vstor_packet), 0);
vstorPacket->Operation = VStorOperationQueryProperties;
vstorPacket->Flags = REQUEST_COMPLETION_FLAG;
vstorPacket->StorageChannelProperties.PortNumber = storDevice->PortNumber;
ret = Device->Driver->VmbusChannelInterface.SendPacket(Device,
vstorPacket,
- sizeof(VSTOR_PACKET),
+ sizeof(struct vstor_packet),
(unsigned long)request,
VmbusPacketTypeDataInBand,
VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
DPRINT_INFO(STORVSC, "END_INITIALIZATION_OPERATION...");
- memset(vstorPacket, sizeof(VSTOR_PACKET), 0);
+ memset(vstorPacket, sizeof(struct vstor_packet), 0);
vstorPacket->Operation = VStorOperationEndInitialization;
vstorPacket->Flags = REQUEST_COMPLETION_FLAG;
ret = Device->Driver->VmbusChannelInterface.SendPacket(Device,
vstorPacket,
- sizeof(VSTOR_PACKET),
+ sizeof(struct vstor_packet),
(unsigned long)request,
VmbusPacketTypeDataInBand,
VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
)
{
int ret=0;
- VMSTORAGE_CHANNEL_PROPERTIES props;
+ struct vmstorage_channel_properties props;
STORVSC_DRIVER_OBJECT *storDriver = (STORVSC_DRIVER_OBJECT*) Device->Driver;;
- memset(&props, sizeof(VMSTORAGE_CHANNEL_PROPERTIES), 0);
+ memset(&props, sizeof(struct vmstorage_channel_properties), 0);
/* Open the channel */
ret = Device->Driver->VmbusChannelInterface.Open(Device,
storDriver->RingBufferSize,
storDriver->RingBufferSize,
(void *)&props,
- sizeof(VMSTORAGE_CHANNEL_PROPERTIES),
+ sizeof(struct vmstorage_channel_properties),
StorVscOnChannelCallback,
Device
);
STORVSC_DEVICE *storDevice;
STORVSC_REQUEST_EXTENSION *request;
- VSTOR_PACKET *vstorPacket;
+ struct vstor_packet *vstorPacket;
DPRINT_ENTER(STORVSC);
ret = Device->Driver->VmbusChannelInterface.SendPacket(Device,
vstorPacket,
- sizeof(VSTOR_PACKET),
+ sizeof(struct vstor_packet),
(unsigned long)&storDevice->ResetRequest,
VmbusPacketTypeDataInBand,
VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
{
STORVSC_DEVICE *storDevice;
STORVSC_REQUEST_EXTENSION* requestExtension = (STORVSC_REQUEST_EXTENSION*) Request->Extension;
- VSTOR_PACKET* vstorPacket =&requestExtension->VStorPacket;
+ struct vstor_packet *vstorPacket =&requestExtension->VStorPacket;
int ret=0;
DPRINT_ENTER(STORVSC);
requestExtension->Request = Request;
requestExtension->Device = Device;
- memset(vstorPacket, 0 , sizeof(VSTOR_PACKET));
+ memset(vstorPacket, 0 , sizeof(struct vstor_packet));
vstorPacket->Flags |= REQUEST_COMPLETION_FLAG;
- vstorPacket->VmSrb.Length = sizeof(VMSCSI_REQUEST);
+ vstorPacket->VmSrb.Length = sizeof(struct vmscsi_request);
vstorPacket->VmSrb.PortNumber = Request->Host;
vstorPacket->VmSrb.PathId = Request->Bus;
ret = Device->Driver->VmbusChannelInterface.SendPacketMultiPageBuffer(Device,
&requestExtension->Request->DataBuffer,
vstorPacket,
- sizeof(VSTOR_PACKET),
+ sizeof(struct vstor_packet),
(unsigned long)requestExtension);
}
else
{
ret = Device->Driver->VmbusChannelInterface.SendPacket(Device,
vstorPacket,
- sizeof(VSTOR_PACKET),
+ sizeof(struct vstor_packet),
(unsigned long)requestExtension,
VmbusPacketTypeDataInBand,
VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
static void
StorVscOnIOCompletion(
struct hv_device *Device,
- VSTOR_PACKET *VStorPacket,
+ struct vstor_packet *VStorPacket,
STORVSC_REQUEST_EXTENSION *RequestExt
)
{
static void
StorVscOnReceive(
struct hv_device *Device,
- VSTOR_PACKET *VStorPacket,
+ struct vstor_packet *VStorPacket,
STORVSC_REQUEST_EXTENSION *RequestExt
)
{
STORVSC_DEVICE *storDevice;
u32 bytesRecvd;
u64 requestId;
- unsigned char packet[ALIGN_UP(sizeof(VSTOR_PACKET),8)];
+ unsigned char packet[ALIGN_UP(sizeof(struct vstor_packet),8)];
STORVSC_REQUEST_EXTENSION *request;
DPRINT_ENTER(STORVSC);
{
ret = device->Driver->VmbusChannelInterface.RecvPacket(device,
packet,
- ALIGN_UP(sizeof(VSTOR_PACKET),8),
+ ALIGN_UP(sizeof(struct vstor_packet),8),
&bytesRecvd,
&requestId);
if (ret == 0 && bytesRecvd > 0)
{
DPRINT_DBG(STORVSC, "receive %d bytes - tid %llx", bytesRecvd, requestId);
- /* ASSERT(bytesRecvd == sizeof(VSTOR_PACKET)); */
+ /* ASSERT(bytesRecvd == sizeof(struct vstor_packet)); */
request = (STORVSC_REQUEST_EXTENSION*)(unsigned long)requestId;
ASSERT(request);
{
/* DPRINT_INFO(STORVSC, "reset completion - operation %u status %u", vstorPacket.Operation, vstorPacket.Status); */
- memcpy(&request->VStorPacket, packet, sizeof(VSTOR_PACKET));
+ memcpy(&request->VStorPacket, packet, sizeof(struct vstor_packet));
osd_WaitEventSet(request->WaitEvent);
}
else
{
- StorVscOnReceive(device, (VSTOR_PACKET*)packet, request);
+ StorVscOnReceive(device, (struct vstor_packet *)packet, request);
}
}
else
*
*/
-
-
/* vstorage.w revision number. This is used in the case of a version match, */
/* to alert the user that structure sizes may be mismatched even though the */
/* protocol versions match. */
/* The max transfer length will be published when we offer a vmbus channel. */
#define MAX_TRANSFER_LENGTH 0x40000
#define DEFAULT_PACKET_SIZE (sizeof(VMDATA_GPA_DIRECT) + \
- sizeof(VSTOR_PACKET) + \
- (sizeof(u64) * (MAX_TRANSFER_LENGTH / PAGE_SIZE)))
+ sizeof(struct vstor_packet) + \
+ sizesizeof(u64) * (MAX_TRANSFER_LENGTH / PAGE_SIZE)))
/* Packet structure describing virtual storage requests. */
-typedef enum {
+enum vstor_packet_operation {
VStorOperationCompleteIo = 1,
VStorOperationRemoveDevice = 2,
VStorOperationExecuteSRB = 3,
VStorOperationQueryProtocolVersion = 9,
VStorOperationQueryProperties = 10,
VStorOperationMaximum = 10
-} VSTOR_PACKET_OPERATION;
-
-
+};
/*
* Platform neutral description of a scsi request -
* this remains the same across the write regardless of 32/64 bit
* note: it's patterned off the SCSI_PASS_THROUGH structure
*/
-
#define CDB16GENERIC_LENGTH 0x10
#ifndef SENSE_BUFFER_SIZE
#define MAX_DATA_BUFFER_LENGTH_WITH_PADDING 0x14
-
-typedef struct {
+struct vmscsi_request {
unsigned short Length;
unsigned char SrbStatus;
unsigned char ScsiStatus;
unsigned char ReservedArray[MAX_DATA_BUFFER_LENGTH_WITH_PADDING];
};
-} __attribute((packed)) VMSCSI_REQUEST, *PVMSCSI_REQUEST;
+} __attribute((packed));
/*
* This structure is sent during the intialization phase to get the different
* properties of the channel.
*/
-typedef struct {
+struct vmstorage_channel_properties {
unsigned short ProtocolVersion;
unsigned char PathId;
unsigned char TargetId;
/* This id is unique for each channel and will correspond with */
/* vendor specific data in the inquirydata */
unsigned long long UniqueId;
-} __attribute__((packed)) VMSTORAGE_CHANNEL_PROPERTIES, *PVMSTORAGE_CHANNEL_PROPERTIES;
+} __attribute__((packed));
/* This structure is sent during the storage protocol negotiations. */
-typedef struct {
+struct vmstorage_protocol_version {
/* Major (MSW) and minor (LSW) version numbers. */
unsigned short MajorMinor;
* builds.
*/
unsigned short Revision;
-} __attribute__((packed)) VMSTORAGE_PROTOCOL_VERSION, *PVMSTORAGE_PROTOCOL_VERSION;
-
+} __attribute__((packed));
/* Channel Property Flags */
#define STORAGE_CHANNEL_REMOVABLE_FLAG 0x1
#define STORAGE_CHANNEL_EMULATED_IDE_FLAG 0x2
-typedef struct _VSTOR_PACKET {
+struct vstor_packet {
/* Requested operation type */
- VSTOR_PACKET_OPERATION Operation;
+ enum vstor_packet_operation Operation;
/* Flags - see below for values */
unsigned int Flags;
* Structure used to forward SCSI commands from the
* client to the server.
*/
- VMSCSI_REQUEST VmSrb;
+ struct vmscsi_request VmSrb;
/* Structure used to query channel properties. */
- VMSTORAGE_CHANNEL_PROPERTIES StorageChannelProperties;
+ struct vmstorage_channel_properties StorageChannelProperties;
/* Used during version negotiations. */
- VMSTORAGE_PROTOCOL_VERSION Version;
+ struct vmstorage_protocol_version Version;
};
-
-} __attribute__((packed)) VSTOR_PACKET, *PVSTOR_PACKET;
-
-
+} __attribute__((packed));
/* Packet flags */
-
-
/*
* This flag indicates that the server should send back a completion for this
* packet.