Skip to content

Commit

Permalink
Staging: hv: storvsc: Consolidate all the wire protocol definitions
Browse files Browse the repository at this point in the history
Consolidate all definitions that support communication with the host.

Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
K. Y. Srinivasan authored and Greg Kroah-Hartman committed Feb 9, 2012
1 parent 61eaffc commit af9584b
Showing 1 changed file with 47 additions and 36 deletions.
83 changes: 47 additions & 36 deletions drivers/staging/hv/storvsc_drv.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,33 +42,13 @@
#include <scsi/scsi_devinfo.h>
#include <scsi/scsi_dbg.h>


/*
* We setup a mempool to allocate request structures for this driver
* on a per-lun basis. The following define specifies the number of
* elements in the pool.
*/

#define STORVSC_MIN_BUF_NR 64
static int storvsc_ringbuffer_size = (20 * PAGE_SIZE);

module_param(storvsc_ringbuffer_size, int, S_IRUGO);
MODULE_PARM_DESC(storvsc_ringbuffer_size, "Ring buffer size (bytes)");


/*
* Major/minor macros. Minor version is in LSB, meaning that earlier flat
* version numbers will be interpreted as "0.x" (i.e., 1 becomes 0.1).
* All wire protocol details (storage protocol between the guest and the host)
* are consolidated here.
*
* Begin protocol definitions.
*/

static inline u16 storvsc_get_version(u8 major, u8 minor)
{
u16 version;

version = ((major << 8) | minor);
return version;
}

/*
* Version history:
* V1 Beta: 0.1
Expand Down Expand Up @@ -207,18 +187,6 @@ struct vstor_packet {

#define REQUEST_COMPLETION_FLAG 0x1

#define STORVSC_MAX_IO_REQUESTS 128

/*
* In Hyper-V, each port/path/target maps to 1 scsi host adapter. In
* reality, the path/target is not used (ie always set to 0) so our
* scsi host adapter essentially has 1 bus with 1 target that contains
* up to 256 luns.
*/
#define STORVSC_MAX_LUNS_PER_TARGET 64
#define STORVSC_MAX_TARGETS 1
#define STORVSC_MAX_CHANNELS 1

/* Matches Windows-end */
enum storvsc_request_type {
WRITE_TYPE = 0,
Expand All @@ -235,6 +203,36 @@ enum storvsc_request_type {
#define SRB_STATUS_SUCCESS 0x01
#define SRB_STATUS_ERROR 0x04

/*
* This is the end of Protocol specific defines.
*/


/*
* We setup a mempool to allocate request structures for this driver
* on a per-lun basis. The following define specifies the number of
* elements in the pool.
*/

#define STORVSC_MIN_BUF_NR 64
static int storvsc_ringbuffer_size = (20 * PAGE_SIZE);

module_param(storvsc_ringbuffer_size, int, S_IRUGO);
MODULE_PARM_DESC(storvsc_ringbuffer_size, "Ring buffer size (bytes)");

#define STORVSC_MAX_IO_REQUESTS 128

/*
* In Hyper-V, each port/path/target maps to 1 scsi host adapter. In
* reality, the path/target is not used (ie always set to 0) so our
* scsi host adapter essentially has 1 bus with 1 target that contains
* up to 256 luns.
*/
#define STORVSC_MAX_LUNS_PER_TARGET 64
#define STORVSC_MAX_TARGETS 1
#define STORVSC_MAX_CHANNELS 1



struct storvsc_cmd_request {
struct list_head entry;
Expand Down Expand Up @@ -336,6 +334,19 @@ static void storvsc_remove_lun(struct work_struct *work)
kfree(wrk);
}

/*
* Major/minor macros. Minor version is in LSB, meaning that earlier flat
* version numbers will be interpreted as "0.x" (i.e., 1 becomes 0.1).
*/

static inline u16 storvsc_get_version(u8 major, u8 minor)
{
u16 version;

version = ((major << 8) | minor);
return version;
}

/*
* We can get incoming messages from the host that are not in response to
* messages that we have sent out. An example of this would be messages
Expand Down

0 comments on commit af9584b

Please sign in to comment.