SCSI: READTOC change alloclen to a uint32 and encode it in the CDB

This commit is contained in:
Ronnie Sahlberg
2012-09-25 06:54:01 -07:00
parent b6ac94ed18
commit 85e427ea54
2 changed files with 6 additions and 4 deletions

View File

@@ -110,7 +110,7 @@ enum scsi_xfer_dir {
/*
* READTOC
*/
EXTERN struct scsi_task *scsi_cdb_readtoc(int msf, int format, int track_session, uint32_t xferlen);
EXTERN struct scsi_task *scsi_cdb_readtoc(int msf, int format, int track_session, uint16_t alloc_len);
enum scsi_readtoc_fmt {
SCSI_READ_TOC = 0,

View File

@@ -308,7 +308,7 @@ scsi_cdb_readcapacity10(int lba, int pmi)
* READTOC
*/
struct scsi_task *
scsi_cdb_readtoc(int msf, int format, int track_session, uint32_t xferlen)
scsi_cdb_readtoc(int msf, int format, int track_session, uint16_t alloc_len)
{
struct scsi_task *task;
@@ -335,13 +335,15 @@ scsi_cdb_readtoc(int msf, int format, int track_session, uint32_t xferlen)
task->cdb[6] = 0xff & track_session;
}
*(uint16_t *)&task->cdb[7] = htons(alloc_len);
task->cdb_size = 10;
if (xferlen != 0) {
if (alloc_len != 0) {
task->xfer_dir = SCSI_XFER_READ;
} else {
task->xfer_dir = SCSI_XFER_NONE;
}
task->expxferlen = xferlen;
task->expxferlen = alloc_len;
task->params.readtoc.msf = msf;
task->params.readtoc.format = format;