aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/ibmvscsi/viosrp.h
diff options
context:
space:
mode:
authorBrian King <brking@linux.vnet.ibm.com>2009-06-08 17:19:08 -0400
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2009-06-08 19:05:21 -0400
commit126c5cc37e682e7c5ae96754994b1cb50c2d0cb5 (patch)
tree054781df1e5f7fb4d34eaed7e5674eff92cf63c1 /drivers/scsi/ibmvscsi/viosrp.h
parentc1988e3123751fd425fbae99d5c1776608e965a9 (diff)
[SCSI] ibmvscsi: Add support for capabilities MAD
Add support to ibmvscsi for the capabilities MAD. This command gets sent to the Virtual I/O server prior to login in order to communicate client capabilities. Additionally it returns information regarding capabilities that the server supports. The two main capabilities communicated in this MAD are related to partition migration and client reserve. Client reserve allows for SCSI-2 reservations to be sent to virtual disks which are backed by physical LUNs and will result in the reservation being sent to the physical LUN. Signed-off-by: Brian King <brking@linux.vnet.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/ibmvscsi/viosrp.h')
-rw-r--r--drivers/scsi/ibmvscsi/viosrp.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/drivers/scsi/ibmvscsi/viosrp.h b/drivers/scsi/ibmvscsi/viosrp.h
index f5a9c26d1da8..2cd735d1d196 100644
--- a/drivers/scsi/ibmvscsi/viosrp.h
+++ b/drivers/scsi/ibmvscsi/viosrp.h
@@ -37,6 +37,7 @@
37 37
38#define SRP_VERSION "16.a" 38#define SRP_VERSION "16.a"
39#define SRP_MAX_IU_LEN 256 39#define SRP_MAX_IU_LEN 256
40#define SRP_MAX_LOC_LEN 32
40 41
41union srp_iu { 42union srp_iu {
42 struct srp_login_req login_req; 43 struct srp_login_req login_req;
@@ -87,6 +88,7 @@ enum viosrp_mad_types {
87 VIOSRP_ERROR_LOG_TYPE = 0x02, 88 VIOSRP_ERROR_LOG_TYPE = 0x02,
88 VIOSRP_ADAPTER_INFO_TYPE = 0x03, 89 VIOSRP_ADAPTER_INFO_TYPE = 0x03,
89 VIOSRP_HOST_CONFIG_TYPE = 0x04, 90 VIOSRP_HOST_CONFIG_TYPE = 0x04,
91 VIOSRP_CAPABILITIES_TYPE = 0x05,
90 VIOSRP_ENABLE_FAST_FAIL = 0x08, 92 VIOSRP_ENABLE_FAST_FAIL = 0x08,
91}; 93};
92 94
@@ -96,6 +98,28 @@ enum viosrp_mad_status {
96 VIOSRP_MAD_FAILED = 0xF7, 98 VIOSRP_MAD_FAILED = 0xF7,
97}; 99};
98 100
101enum viosrp_capability_type {
102 MIGRATION_CAPABILITIES = 0x01,
103 RESERVATION_CAPABILITIES = 0x02,
104};
105
106enum viosrp_capability_support {
107 SERVER_DOES_NOT_SUPPORTS_CAP = 0x0,
108 SERVER_SUPPORTS_CAP = 0x01,
109 SERVER_CAP_DATA = 0x02,
110};
111
112enum viosrp_reserve_type {
113 CLIENT_RESERVE_SCSI_2 = 0x01,
114};
115
116enum viosrp_capability_flag {
117 CLIENT_MIGRATED = 0x01,
118 CLIENT_RECONNECT = 0x02,
119 CAP_LIST_SUPPORTED = 0x04,
120 CAP_LIST_DATA = 0x08,
121};
122
99/* 123/*
100 * Common MAD header 124 * Common MAD header
101 */ 125 */
@@ -138,12 +162,42 @@ struct viosrp_fast_fail {
138 struct mad_common common; 162 struct mad_common common;
139}; 163};
140 164
165struct viosrp_capabilities {
166 struct mad_common common;
167 u64 buffer;
168};
169
170struct mad_capability_common {
171 u32 cap_type;
172 u16 length;
173 u16 server_support;
174};
175
176struct mad_reserve_cap {
177 struct mad_capability_common common;
178 u32 type;
179};
180
181struct mad_migration_cap {
182 struct mad_capability_common common;
183 u32 ecl;
184};
185
186struct capabilities{
187 u32 flags;
188 char name[SRP_MAX_LOC_LEN];
189 char loc[SRP_MAX_LOC_LEN];
190 struct mad_migration_cap migration;
191 struct mad_reserve_cap reserve;
192};
193
141union mad_iu { 194union mad_iu {
142 struct viosrp_empty_iu empty_iu; 195 struct viosrp_empty_iu empty_iu;
143 struct viosrp_error_log error_log; 196 struct viosrp_error_log error_log;
144 struct viosrp_adapter_info adapter_info; 197 struct viosrp_adapter_info adapter_info;
145 struct viosrp_host_config host_config; 198 struct viosrp_host_config host_config;
146 struct viosrp_fast_fail fast_fail; 199 struct viosrp_fast_fail fast_fail;
200 struct viosrp_capabilities capabilities;
147}; 201};
148 202
149union viosrp_iu { 203union viosrp_iu {