Changeset 45cae6b in mainline for uspace/drv/bus/usb/usbmast/scsi_ms.c
- Timestamp:
- 2011-07-24T16:05:37Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 582fe388
- Parents:
- 4022513
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/bus/usb/usbmast/scsi_ms.c
r4022513 r45cae6b 61 61 } 62 62 63 static void usbmast_dump_sense(usbmast_fun_t *mfun) 64 { 65 scsi_sense_data_t sense_buf; 66 int rc; 67 68 rc = usbmast_request_sense(mfun, &sense_buf, sizeof(sense_buf)); 69 if (rc == EOK) { 70 printf("Got sense data (sense_key=0x%x, asc=0x%02x, " 71 "ascq=0x%02x.\n", sense_buf.flags_key & 0x0f, 72 sense_buf.additional_code, 73 sense_buf.additional_cqual); 74 } else { 75 printf("Failed to read sense data.\n"); 76 } 77 } 78 63 79 /** Perform SCSI Inquiry command on USB mass storage device. 64 80 * … … 72 88 size_t response_len; 73 89 scsi_cdb_inquiry_t cdb; 90 cmd_status_t status; 74 91 int rc; 75 92 … … 79 96 80 97 rc = usb_massstor_data_in(mfun, 0xDEADBEEF, (uint8_t *) &cdb, 81 sizeof(cdb), &inq_data, sizeof(inq_data), &response_len );98 sizeof(cdb), &inq_data, sizeof(inq_data), &response_len, &status); 82 99 83 100 if (rc != EOK) { 84 usb_log_error("Inquiry failed, device %s: %s.\n", 85 mfun->mdev->ddf_dev->name, str_error(rc)); 86 return rc; 101 usb_log_error("Inquiry transport failed, device %s: %s.\n", 102 mfun->mdev->ddf_dev->name, str_error(rc)); 103 return rc; 104 } 105 106 if (status != CMDS_GOOD) { 107 usb_log_error("Inquiry command failed, device %s.\n", 108 mfun->mdev->ddf_dev->name); 109 usbmast_dump_sense(mfun); 110 return EIO; 87 111 } 88 112 … … 129 153 scsi_cdb_request_sense_t cdb; 130 154 size_t data_len; 155 cmd_status_t status; 131 156 int rc; 132 157 … … 136 161 137 162 rc = usb_massstor_data_in(mfun, 0xDEADBEEF, (uint8_t *) &cdb, 138 sizeof(cdb), buf, size, &data_len );139 140 if (rc != EOK ) {163 sizeof(cdb), buf, size, &data_len, &status); 164 165 if (rc != EOK || status != CMDS_GOOD) { 141 166 usb_log_error("Request Sense failed, device %s: %s.\n", 142 167 mfun->mdev->ddf_dev->name, str_error(rc)); … … 167 192 scsi_read_capacity_10_data_t data; 168 193 size_t data_len; 194 cmd_status_t status; 169 195 int rc; 170 196 … … 173 199 174 200 rc = usb_massstor_data_in(mfun, 0xDEADBEEF, (uint8_t *) &cdb, 175 sizeof(cdb), &data, sizeof(data), &data_len );201 sizeof(cdb), &data, sizeof(data), &data_len, &status); 176 202 177 203 if (rc != EOK) { 178 usb_log_error("Read Capacity (10) failed, device %s: %s.\n", 179 mfun->mdev->ddf_dev->name, str_error(rc)); 180 return rc; 204 usb_log_error("Read Capacity (10) transport failed, device %s: %s.\n", 205 mfun->mdev->ddf_dev->name, str_error(rc)); 206 return rc; 207 } 208 209 if (status != CMDS_GOOD) { 210 usb_log_error("Read Capacity (10) command failed, device %s.\n", 211 mfun->mdev->ddf_dev->name); 212 usbmast_dump_sense(mfun); 213 return EIO; 181 214 } 182 215 … … 205 238 scsi_cdb_read_12_t cdb; 206 239 size_t data_len; 240 cmd_status_t status; 207 241 int rc; 208 242 … … 221 255 222 256 rc = usb_massstor_data_in(mfun, 0xDEADBEEF, (uint8_t *) &cdb, 223 sizeof(cdb), buf, nblocks * mfun->block_size, &data_len );257 sizeof(cdb), buf, nblocks * mfun->block_size, &data_len, &status); 224 258 225 259 if (rc != EOK) { 226 usb_log_error("Read (12) failed, device %s: %s.\n", 227 mfun->mdev->ddf_dev->name, str_error(rc)); 228 return rc; 260 usb_log_error("Read (12) transport failed, device %s: %s.\n", 261 mfun->mdev->ddf_dev->name, str_error(rc)); 262 return rc; 263 } 264 265 if (status != CMDS_GOOD) { 266 usb_log_error("Read (12) command failed, device %s.\n", 267 mfun->mdev->ddf_dev->name); 268 usbmast_dump_sense(mfun); 269 return EIO; 229 270 } 230 271 … … 252 293 scsi_cdb_write_12_t cdb; 253 294 size_t sent_len; 295 cmd_status_t status; 254 296 int rc; 255 297 … … 266 308 267 309 rc = usb_massstor_data_out(mfun, 0xDEADBEEF, (uint8_t *) &cdb, 268 sizeof(cdb), data, nblocks * mfun->block_size, &sent_len );310 sizeof(cdb), data, nblocks * mfun->block_size, &sent_len, &status); 269 311 270 312 if (rc != EOK) { 271 usb_log_error("Write (12) failed, device %s: %s.\n", 272 mfun->mdev->ddf_dev->name, str_error(rc)); 273 return rc; 313 usb_log_error("Write (12) transport failed, device %s: %s.\n", 314 mfun->mdev->ddf_dev->name, str_error(rc)); 315 return rc; 316 } 317 318 if (status != CMDS_GOOD) { 319 usb_log_error("Write (12) command failed, device %s.\n", 320 mfun->mdev->ddf_dev->name); 321 usbmast_dump_sense(mfun); 322 return EIO; 274 323 } 275 324
Note:
See TracChangeset
for help on using the changeset viewer.