Add support for REPD bit in RSTMF command.
We have no real timeout values to report there, but its better then error. MFC after: 2 weeks
This commit is contained in:
parent
8202971892
commit
2be7cd9bdb
@ -7462,7 +7462,7 @@ int
|
||||
ctl_report_supported_tmf(struct ctl_scsiio *ctsio)
|
||||
{
|
||||
struct scsi_report_supported_tmf *cdb;
|
||||
struct scsi_report_supported_tmf_data *data;
|
||||
struct scsi_report_supported_tmf_ext_data *data;
|
||||
int retval;
|
||||
int alloc_len, total_len;
|
||||
|
||||
@ -7472,7 +7472,10 @@ ctl_report_supported_tmf(struct ctl_scsiio *ctsio)
|
||||
|
||||
retval = CTL_RETVAL_COMPLETE;
|
||||
|
||||
total_len = sizeof(struct scsi_report_supported_tmf_data);
|
||||
if (cdb->options & RST_REPD)
|
||||
total_len = sizeof(struct scsi_report_supported_tmf_ext_data);
|
||||
else
|
||||
total_len = sizeof(struct scsi_report_supported_tmf_data);
|
||||
alloc_len = scsi_4btoul(cdb->length);
|
||||
|
||||
ctsio->kern_data_ptr = malloc(total_len, M_CTL, M_WAITOK | M_ZERO);
|
||||
@ -7491,10 +7494,11 @@ ctl_report_supported_tmf(struct ctl_scsiio *ctsio)
|
||||
ctsio->kern_data_resid = 0;
|
||||
ctsio->kern_rel_offset = 0;
|
||||
|
||||
data = (struct scsi_report_supported_tmf_data *)ctsio->kern_data_ptr;
|
||||
data = (struct scsi_report_supported_tmf_ext_data *)ctsio->kern_data_ptr;
|
||||
data->byte1 |= RST_ATS | RST_ATSS | RST_CTSS | RST_LURS | RST_QTS |
|
||||
RST_TRS;
|
||||
data->byte2 |= RST_QAES | RST_QTSS | RST_ITNRS;
|
||||
data->length = total_len - 4;
|
||||
|
||||
ctl_set_success(ctsio);
|
||||
ctsio->io_hdr.flags |= CTL_FLAG_ALLOCATED;
|
||||
|
@ -824,7 +824,7 @@ const struct ctl_cmd_entry ctl_cmd_table_a3[32] =
|
||||
CTL_FLAG_DATA_IN |
|
||||
CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
|
||||
CTL_LUN_PAT_NONE,
|
||||
12, {0x0d, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
|
||||
12, {0x0d, 0x80, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
|
||||
|
||||
/* 0E */
|
||||
{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
|
||||
|
@ -1482,6 +1482,10 @@ struct scsi_report_supported_opcodes_descr
|
||||
uint8_t flags;
|
||||
#define RSO_SERVACTV 0x01
|
||||
#define RSO_CTDP 0x02
|
||||
#define RSO_CDLP_MASK 0x0c
|
||||
#define RSO_CDLP_NO 0x00
|
||||
#define RSO_CDLP_A 0x04
|
||||
#define RSO_CDLP_B 0x08
|
||||
uint8_t cdb_length[2];
|
||||
struct scsi_report_supported_opcodes_timeout timeout[0];
|
||||
};
|
||||
@ -1497,6 +1501,10 @@ struct scsi_report_supported_opcodes_one
|
||||
uint8_t reserved;
|
||||
uint8_t support;
|
||||
#define RSO_ONE_CTDP 0x80
|
||||
#define RSO_ONE_CDLP_MASK 0x18
|
||||
#define RSO_ONE_CDLP_NO 0x00
|
||||
#define RSO_ONE_CDLP_A 0x08
|
||||
#define RSO_ONE_CDLP_B 0x10
|
||||
#define RSO_ONE_SUP_MASK 0x07
|
||||
#define RSO_ONE_SUP_UNAVAIL 0x00
|
||||
#define RSO_ONE_SUP_NOT_SUP 0x01
|
||||
@ -1510,7 +1518,9 @@ struct scsi_report_supported_tmf
|
||||
{
|
||||
uint8_t opcode;
|
||||
uint8_t service_action;
|
||||
uint8_t reserved[4];
|
||||
uint8_t options;
|
||||
#define RST_REPD 0x80
|
||||
uint8_t reserved[3];
|
||||
uint8_t length[4];
|
||||
uint8_t reserved1;
|
||||
uint8_t control;
|
||||
@ -1531,7 +1541,34 @@ struct scsi_report_supported_tmf_data
|
||||
#define RST_ITNRS 0x01
|
||||
#define RST_QTSS 0x02
|
||||
#define RST_QAES 0x04
|
||||
uint8_t reserved[2];
|
||||
uint8_t reserved;
|
||||
uint8_t length;
|
||||
};
|
||||
|
||||
struct scsi_report_supported_tmf_ext_data
|
||||
{
|
||||
uint8_t byte1;
|
||||
uint8_t byte2;
|
||||
uint8_t reserved;
|
||||
uint8_t length;
|
||||
uint8_t byte5;
|
||||
#define RST_TMFTMOV 0x01
|
||||
uint8_t reserved2;
|
||||
uint8_t byte7;
|
||||
#define RST_WAKETS 0x01
|
||||
#define RST_TRTS 0x02
|
||||
#define RST_QTTS 0x04
|
||||
#define RST_LURTS 0x08
|
||||
#define RST_CTSTS 0x10
|
||||
#define RST_CACATS 0x20
|
||||
#define RST_ATSTS 0x40
|
||||
#define RST_ATTS 0x80
|
||||
uint8_t byte8;
|
||||
#define RST_ITNRTS 0x01
|
||||
#define RST_QTSTS 0x02
|
||||
#define RST_QAETS 0x04
|
||||
uint8_t long_timeout[4];
|
||||
uint8_t short_timeout[4];
|
||||
};
|
||||
|
||||
struct scsi_report_timestamp
|
||||
|
Loading…
Reference in New Issue
Block a user