diff options
Diffstat (limited to 'drivers/s390/scsi/zfcp_fsf.h')
-rw-r--r-- | drivers/s390/scsi/zfcp_fsf.h | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/drivers/s390/scsi/zfcp_fsf.h b/drivers/s390/scsi/zfcp_fsf.h index 519083fd6e89..db8c85382dca 100644 --- a/drivers/s390/scsi/zfcp_fsf.h +++ b/drivers/s390/scsi/zfcp_fsf.h | |||
@@ -80,11 +80,15 @@ | |||
80 | #define FSF_REQUEST_SIZE_TOO_LARGE 0x00000061 | 80 | #define FSF_REQUEST_SIZE_TOO_LARGE 0x00000061 |
81 | #define FSF_RESPONSE_SIZE_TOO_LARGE 0x00000062 | 81 | #define FSF_RESPONSE_SIZE_TOO_LARGE 0x00000062 |
82 | #define FSF_SBAL_MISMATCH 0x00000063 | 82 | #define FSF_SBAL_MISMATCH 0x00000063 |
83 | #define FSF_INCONSISTENT_PROT_DATA 0x00000070 | ||
84 | #define FSF_INVALID_PROT_PARM 0x00000071 | ||
85 | #define FSF_BLOCK_GUARD_CHECK_FAILURE 0x00000081 | ||
86 | #define FSF_APP_TAG_CHECK_FAILURE 0x00000082 | ||
87 | #define FSF_REF_TAG_CHECK_FAILURE 0x00000083 | ||
83 | #define FSF_ADAPTER_STATUS_AVAILABLE 0x000000AD | 88 | #define FSF_ADAPTER_STATUS_AVAILABLE 0x000000AD |
84 | #define FSF_UNKNOWN_COMMAND 0x000000E2 | 89 | #define FSF_UNKNOWN_COMMAND 0x000000E2 |
85 | #define FSF_UNKNOWN_OP_SUBTYPE 0x000000E3 | 90 | #define FSF_UNKNOWN_OP_SUBTYPE 0x000000E3 |
86 | #define FSF_INVALID_COMMAND_OPTION 0x000000E5 | 91 | #define FSF_INVALID_COMMAND_OPTION 0x000000E5 |
87 | /* #define FSF_ERROR 0x000000FF */ | ||
88 | 92 | ||
89 | #define FSF_PROT_STATUS_QUAL_SIZE 16 | 93 | #define FSF_PROT_STATUS_QUAL_SIZE 16 |
90 | #define FSF_STATUS_QUALIFIER_SIZE 16 | 94 | #define FSF_STATUS_QUALIFIER_SIZE 16 |
@@ -147,18 +151,17 @@ | |||
147 | #define FSF_DATADIR_WRITE 0x00000001 | 151 | #define FSF_DATADIR_WRITE 0x00000001 |
148 | #define FSF_DATADIR_READ 0x00000002 | 152 | #define FSF_DATADIR_READ 0x00000002 |
149 | #define FSF_DATADIR_CMND 0x00000004 | 153 | #define FSF_DATADIR_CMND 0x00000004 |
154 | #define FSF_DATADIR_DIF_WRITE_INSERT 0x00000009 | ||
155 | #define FSF_DATADIR_DIF_READ_STRIP 0x0000000a | ||
156 | #define FSF_DATADIR_DIF_WRITE_CONVERT 0x0000000b | ||
157 | #define FSF_DATADIR_DIF_READ_CONVERT 0X0000000c | ||
158 | |||
159 | /* data protection control flags */ | ||
160 | #define FSF_APP_TAG_CHECK_ENABLE 0x10 | ||
150 | 161 | ||
151 | /* fc service class */ | 162 | /* fc service class */ |
152 | #define FSF_CLASS_3 0x00000003 | 163 | #define FSF_CLASS_3 0x00000003 |
153 | 164 | ||
154 | /* SBAL chaining */ | ||
155 | #define ZFCP_FSF_MAX_SBALS_PER_REQ 36 | ||
156 | |||
157 | /* max. number of (data buffer) SBALEs in largest SBAL chain | ||
158 | * request ID + QTCB in SBALE 0 + 1 of first SBAL in chain */ | ||
159 | #define ZFCP_FSF_MAX_SBALES_PER_REQ \ | ||
160 | (ZFCP_FSF_MAX_SBALS_PER_REQ * ZFCP_QDIO_MAX_SBALES_PER_SBAL - 2) | ||
161 | |||
162 | /* logging space behind QTCB */ | 165 | /* logging space behind QTCB */ |
163 | #define FSF_QTCB_LOG_SIZE 1024 | 166 | #define FSF_QTCB_LOG_SIZE 1024 |
164 | 167 | ||
@@ -170,6 +173,8 @@ | |||
170 | #define FSF_FEATURE_ELS_CT_CHAINED_SBALS 0x00000020 | 173 | #define FSF_FEATURE_ELS_CT_CHAINED_SBALS 0x00000020 |
171 | #define FSF_FEATURE_UPDATE_ALERT 0x00000100 | 174 | #define FSF_FEATURE_UPDATE_ALERT 0x00000100 |
172 | #define FSF_FEATURE_MEASUREMENT_DATA 0x00000200 | 175 | #define FSF_FEATURE_MEASUREMENT_DATA 0x00000200 |
176 | #define FSF_FEATURE_DIF_PROT_TYPE1 0x00010000 | ||
177 | #define FSF_FEATURE_DIX_PROT_TCPIP 0x00020000 | ||
173 | 178 | ||
174 | /* host connection features */ | 179 | /* host connection features */ |
175 | #define FSF_FEATURE_NPIV_MODE 0x00000001 | 180 | #define FSF_FEATURE_NPIV_MODE 0x00000001 |
@@ -324,9 +329,14 @@ struct fsf_qtcb_header { | |||
324 | struct fsf_qtcb_bottom_io { | 329 | struct fsf_qtcb_bottom_io { |
325 | u32 data_direction; | 330 | u32 data_direction; |
326 | u32 service_class; | 331 | u32 service_class; |
327 | u8 res1[8]; | 332 | u8 res1; |
333 | u8 data_prot_flags; | ||
334 | u16 app_tag_value; | ||
335 | u32 ref_tag_value; | ||
328 | u32 fcp_cmnd_length; | 336 | u32 fcp_cmnd_length; |
329 | u8 res2[12]; | 337 | u32 data_block_length; |
338 | u32 prot_data_length; | ||
339 | u8 res2[4]; | ||
330 | u8 fcp_cmnd[FSF_FCP_CMND_SIZE]; | 340 | u8 fcp_cmnd[FSF_FCP_CMND_SIZE]; |
331 | u8 fcp_rsp[FSF_FCP_RSP_SIZE]; | 341 | u8 fcp_rsp[FSF_FCP_RSP_SIZE]; |
332 | u8 res3[64]; | 342 | u8 res3[64]; |
@@ -352,6 +362,8 @@ struct fsf_qtcb_bottom_support { | |||
352 | u8 els[256]; | 362 | u8 els[256]; |
353 | } __attribute__ ((packed)); | 363 | } __attribute__ ((packed)); |
354 | 364 | ||
365 | #define ZFCP_FSF_TIMER_INT_MASK 0x3FFF | ||
366 | |||
355 | struct fsf_qtcb_bottom_config { | 367 | struct fsf_qtcb_bottom_config { |
356 | u32 lic_version; | 368 | u32 lic_version; |
357 | u32 feature_selection; | 369 | u32 feature_selection; |