Staging: hv: storvsc: Consolidate all the wire protocol definitions
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>
This commit is contained in:
parent
61eaffc91d
commit
af9584b82d
|
@ -42,33 +42,13 @@
|
||||||
#include <scsi/scsi_devinfo.h>
|
#include <scsi/scsi_devinfo.h>
|
||||||
#include <scsi/scsi_dbg.h>
|
#include <scsi/scsi_dbg.h>
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We setup a mempool to allocate request structures for this driver
|
* All wire protocol details (storage protocol between the guest and the host)
|
||||||
* on a per-lun basis. The following define specifies the number of
|
* are consolidated here.
|
||||||
* elements in the pool.
|
*
|
||||||
|
* Begin protocol definitions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#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).
|
|
||||||
*/
|
|
||||||
|
|
||||||
static inline u16 storvsc_get_version(u8 major, u8 minor)
|
|
||||||
{
|
|
||||||
u16 version;
|
|
||||||
|
|
||||||
version = ((major << 8) | minor);
|
|
||||||
return version;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Version history:
|
* Version history:
|
||||||
* V1 Beta: 0.1
|
* V1 Beta: 0.1
|
||||||
|
@ -207,18 +187,6 @@ struct vstor_packet {
|
||||||
|
|
||||||
#define REQUEST_COMPLETION_FLAG 0x1
|
#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 */
|
/* Matches Windows-end */
|
||||||
enum storvsc_request_type {
|
enum storvsc_request_type {
|
||||||
WRITE_TYPE = 0,
|
WRITE_TYPE = 0,
|
||||||
|
@ -235,6 +203,36 @@ enum storvsc_request_type {
|
||||||
#define SRB_STATUS_SUCCESS 0x01
|
#define SRB_STATUS_SUCCESS 0x01
|
||||||
#define SRB_STATUS_ERROR 0x04
|
#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 storvsc_cmd_request {
|
||||||
struct list_head entry;
|
struct list_head entry;
|
||||||
|
@ -336,6 +334,19 @@ done:
|
||||||
kfree(wrk);
|
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
|
* 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
|
* messages that we have sent out. An example of this would be messages
|
||||||
|
|
Loading…
Reference in New Issue