diff options
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_fw.h')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_fw.h | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/drivers/scsi/qla2xxx/qla_fw.h b/drivers/scsi/qla2xxx/qla_fw.h index a77a2471eaff..93f833960147 100644 --- a/drivers/scsi/qla2xxx/qla_fw.h +++ b/drivers/scsi/qla2xxx/qla_fw.h | |||
@@ -400,6 +400,7 @@ struct cmd_type_6 { | |||
400 | struct scsi_lun lun; /* FCP LUN (BE). */ | 400 | struct scsi_lun lun; /* FCP LUN (BE). */ |
401 | 401 | ||
402 | uint16_t control_flags; /* Control flags. */ | 402 | uint16_t control_flags; /* Control flags. */ |
403 | #define CF_DIF_SEG_DESCR_ENABLE BIT_3 | ||
403 | #define CF_DATA_SEG_DESCR_ENABLE BIT_2 | 404 | #define CF_DATA_SEG_DESCR_ENABLE BIT_2 |
404 | #define CF_READ_DATA BIT_1 | 405 | #define CF_READ_DATA BIT_1 |
405 | #define CF_WRITE_DATA BIT_0 | 406 | #define CF_WRITE_DATA BIT_0 |
@@ -466,6 +467,43 @@ struct cmd_type_7 { | |||
466 | uint32_t dseg_0_len; /* Data segment 0 length. */ | 467 | uint32_t dseg_0_len; /* Data segment 0 length. */ |
467 | }; | 468 | }; |
468 | 469 | ||
470 | #define COMMAND_TYPE_CRC_2 0x6A /* Command Type CRC_2 (Type 6) | ||
471 | * (T10-DIF) */ | ||
472 | struct cmd_type_crc_2 { | ||
473 | uint8_t entry_type; /* Entry type. */ | ||
474 | uint8_t entry_count; /* Entry count. */ | ||
475 | uint8_t sys_define; /* System defined. */ | ||
476 | uint8_t entry_status; /* Entry Status. */ | ||
477 | |||
478 | uint32_t handle; /* System handle. */ | ||
479 | |||
480 | uint16_t nport_handle; /* N_PORT handle. */ | ||
481 | uint16_t timeout; /* Command timeout. */ | ||
482 | |||
483 | uint16_t dseg_count; /* Data segment count. */ | ||
484 | |||
485 | uint16_t fcp_rsp_dseg_len; /* FCP_RSP DSD length. */ | ||
486 | |||
487 | struct scsi_lun lun; /* FCP LUN (BE). */ | ||
488 | |||
489 | uint16_t control_flags; /* Control flags. */ | ||
490 | |||
491 | uint16_t fcp_cmnd_dseg_len; /* Data segment length. */ | ||
492 | uint32_t fcp_cmnd_dseg_address[2]; /* Data segment address. */ | ||
493 | |||
494 | uint32_t fcp_rsp_dseg_address[2]; /* Data segment address. */ | ||
495 | |||
496 | uint32_t byte_count; /* Total byte count. */ | ||
497 | |||
498 | uint8_t port_id[3]; /* PortID of destination port. */ | ||
499 | uint8_t vp_index; | ||
500 | |||
501 | uint32_t crc_context_address[2]; /* Data segment address. */ | ||
502 | uint16_t crc_context_len; /* Data segment length. */ | ||
503 | uint16_t reserved_1; /* MUST be set to 0. */ | ||
504 | }; | ||
505 | |||
506 | |||
469 | /* | 507 | /* |
470 | * ISP queue - status entry structure definition. | 508 | * ISP queue - status entry structure definition. |
471 | */ | 509 | */ |
@@ -496,10 +534,17 @@ struct sts_entry_24xx { | |||
496 | 534 | ||
497 | uint32_t sense_len; /* FCP SENSE length. */ | 535 | uint32_t sense_len; /* FCP SENSE length. */ |
498 | uint32_t rsp_data_len; /* FCP response data length. */ | 536 | uint32_t rsp_data_len; /* FCP response data length. */ |
499 | |||
500 | uint8_t data[28]; /* FCP response/sense information. */ | 537 | uint8_t data[28]; /* FCP response/sense information. */ |
538 | /* | ||
539 | * If DIF Error is set in comp_status, these additional fields are | ||
540 | * defined: | ||
541 | * &data[10] : uint8_t report_runt_bg[2]; - computed guard | ||
542 | * &data[12] : uint8_t actual_dif[8]; - DIF Data recieved | ||
543 | * &data[20] : uint8_t expected_dif[8]; - DIF Data computed | ||
544 | */ | ||
501 | }; | 545 | }; |
502 | 546 | ||
547 | |||
503 | /* | 548 | /* |
504 | * Status entry completion status | 549 | * Status entry completion status |
505 | */ | 550 | */ |