Commit b3715ee4 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

Staging: hv: fix typedefs in vstorage.h



It's all clean now.

Cc: Hank Janssen <hjanssen@microsoft.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent f3c7c96c
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -61,9 +61,9 @@ BlkVscInitialize(

	storDriver->RequestExtSize			= sizeof(STORVSC_REQUEST_EXTENSION);
	/* 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) */
	/* by the max request size (which is 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(BLKVSC, "max io outstd %u", storDriver->MaxOutstandingRequestsPerChannel);

+34 −34
Original line number Diff line number Diff line
@@ -49,7 +49,7 @@ typedef struct _STORVSC_REQUEST_EXTENSION {
	/* Synchronize the request/response if needed */
	struct osd_waitevent *WaitEvent;

	VSTOR_PACKET					VStorPacket;
	struct vstor_packet VStorPacket;
} STORVSC_REQUEST_EXTENSION;


@@ -132,14 +132,14 @@ StorVscOnChannelCallback(
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
	);

@@ -266,8 +266,8 @@ StorVscInitialize(

	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));
@@ -281,10 +281,10 @@ StorVscInitialize(
	 * 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);

@@ -318,7 +318,7 @@ StorVscOnDeviceAdd(
{
	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);
@@ -331,7 +331,7 @@ StorVscOnDeviceAdd(
	}

	/* 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: */
	/*
@@ -365,7 +365,7 @@ static int StorVscChannelInit(struct hv_device *Device)
	int ret=0;
	STORVSC_DEVICE *storDevice;
	STORVSC_REQUEST_EXTENSION *request;
	VSTOR_PACKET *vstorPacket;
	struct vstor_packet *vstorPacket;

	storDevice = GetStorDevice(Device);
	if (!storDevice)
@@ -394,7 +394,7 @@ static int StorVscChannelInit(struct hv_device *Device)

	ret = Device->Driver->VmbusChannelInterface.SendPacket(Device,
															vstorPacket,
															sizeof(VSTOR_PACKET),
															sizeof(struct vstor_packet),
															(unsigned long)request,
															VmbusPacketTypeDataInBand,
															VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
@@ -415,7 +415,7 @@ static int StorVscChannelInit(struct hv_device *Device)
	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;

@@ -424,7 +424,7 @@ static int StorVscChannelInit(struct hv_device *Device)

	ret = Device->Driver->VmbusChannelInterface.SendPacket(Device,
															vstorPacket,
															sizeof(VSTOR_PACKET),
															sizeof(struct vstor_packet),
															(unsigned long)request,
															VmbusPacketTypeDataInBand,
															VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
@@ -446,14 +446,14 @@ static int StorVscChannelInit(struct hv_device *Device)
	/* 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);
@@ -481,13 +481,13 @@ static int StorVscChannelInit(struct hv_device *Device)

	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);
@@ -528,18 +528,18 @@ StorVscConnectToVsp(
	)
{
	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
		);
@@ -635,7 +635,7 @@ StorVscOnHostReset(

	STORVSC_DEVICE *storDevice;
	STORVSC_REQUEST_EXTENSION *request;
	VSTOR_PACKET *vstorPacket;
	struct vstor_packet *vstorPacket;

	DPRINT_ENTER(STORVSC);

@@ -660,7 +660,7 @@ StorVscOnHostReset(

	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);
@@ -704,7 +704,7 @@ StorVscOnIORequest(
{
	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);
@@ -729,11 +729,11 @@ StorVscOnIORequest(
	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;
@@ -765,14 +765,14 @@ StorVscOnIORequest(
		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);
@@ -813,7 +813,7 @@ StorVscOnCleanup(
static void
StorVscOnIOCompletion(
	struct hv_device *Device,
	VSTOR_PACKET	*VStorPacket,
	struct vstor_packet *VStorPacket,
	STORVSC_REQUEST_EXTENSION *RequestExt
	)
{
@@ -883,7 +883,7 @@ StorVscOnIOCompletion(
static void
StorVscOnReceive(
	struct hv_device *Device,
	VSTOR_PACKET	*VStorPacket,
	struct vstor_packet *VStorPacket,
	STORVSC_REQUEST_EXTENSION *RequestExt
	)
{
@@ -924,7 +924,7 @@ StorVscOnChannelCallback(
	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);
@@ -943,14 +943,14 @@ StorVscOnChannelCallback(
	{
		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);
@@ -960,13 +960,13 @@ StorVscOnChannelCallback(
			{
				/* 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
+16 −28
Original line number Diff line number Diff line
@@ -21,8 +21,6 @@
 *
 */



/* 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. */
@@ -61,12 +59,12 @@
/*  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,
@@ -78,16 +76,13 @@ typedef enum {
	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
@@ -96,8 +91,7 @@ typedef enum {

#define MAX_DATA_BUFFER_LENGTH_WITH_PADDING	0x14


typedef struct {
struct vmscsi_request {
	unsigned short Length;
	unsigned char SrbStatus;
	unsigned char ScsiStatus;
@@ -121,14 +115,14 @@ typedef struct {

	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;
@@ -141,10 +135,10 @@ typedef struct {
	/*  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;

@@ -155,16 +149,15 @@ typedef struct {
	 * 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;
@@ -178,22 +171,17 @@ typedef struct _VSTOR_PACKET {
		 * 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.