Lines Matching refs:scmd
1255 static int myrb_host_reset(struct scsi_cmnd *scmd)
1257 struct Scsi_Host *shost = scmd->device->host;
1265 struct scsi_cmnd *scmd)
1267 struct request *rq = scsi_cmd_to_rq(scmd);
1269 struct myrb_cmdblk *cmd_blk = scsi_cmd_priv(scmd);
1273 struct scsi_device *sdev = scmd->device;
1282 nsge = scsi_dma_map(scmd);
1285 scmd->result = (DID_ERROR << 16);
1286 scsi_done(scmd);
1295 switch (scmd->sc_data_direction) {
1320 sgl = scsi_sglist(scmd);
1329 dcdb->cdb_len = scmd->cmd_len;
1331 memcpy(&dcdb->cdb, scmd->cmnd, scmd->cmd_len);
1340 struct scsi_cmnd *scmd)
1359 scsi_sg_copy_from_buffer(scmd, (void *)inq, 36);
1363 myrb_mode_sense(struct myrb_hba *cb, struct scsi_cmnd *scmd,
1370 dbd = (scmd->cmnd[1] & 0x08) == 0x08;
1396 scsi_sg_copy_from_buffer(scmd, modes, mode_len);
1400 struct scsi_cmnd *scmd)
1402 scsi_build_sense(scmd, 0, NO_SENSE, 0, 0);
1403 scsi_sg_copy_from_buffer(scmd, scmd->sense_buffer,
1407 static void myrb_read_capacity(struct myrb_hba *cb, struct scsi_cmnd *scmd,
1412 dev_dbg(&scmd->device->sdev_gendev,
1417 scsi_sg_copy_from_buffer(scmd, data, 8);
1421 struct scsi_cmnd *scmd)
1424 struct myrb_cmdblk *cmd_blk = scsi_cmd_priv(scmd);
1427 struct scsi_device *sdev = scmd->device;
1439 scmd->result = (DID_BAD_TARGET << 16);
1440 scsi_done(scmd);
1443 switch (scmd->cmnd[0]) {
1445 scmd->result = (DID_OK << 16);
1446 scsi_done(scmd);
1449 if (scmd->cmnd[1] & 1) {
1451 scsi_build_sense(scmd, 0, ILLEGAL_REQUEST, 0x24, 0);
1453 myrb_inquiry(cb, scmd);
1454 scmd->result = (DID_OK << 16);
1456 scsi_done(scmd);
1459 scmd->result = (DID_OK << 16);
1460 scsi_done(scmd);
1463 if ((scmd->cmnd[2] & 0x3F) != 0x3F &&
1464 (scmd->cmnd[2] & 0x3F) != 0x08) {
1466 scsi_build_sense(scmd, 0, ILLEGAL_REQUEST, 0x24, 0);
1468 myrb_mode_sense(cb, scmd, ldev_info);
1469 scmd->result = (DID_OK << 16);
1471 scsi_done(scmd);
1474 if ((scmd->cmnd[1] & 1) ||
1475 (scmd->cmnd[8] & 1)) {
1477 scsi_build_sense(scmd, 0, ILLEGAL_REQUEST, 0x24, 0);
1478 scsi_done(scmd);
1481 lba = get_unaligned_be32(&scmd->cmnd[2]);
1484 scsi_build_sense(scmd, 0, ILLEGAL_REQUEST, 0x24, 0);
1485 scsi_done(scmd);
1488 myrb_read_capacity(cb, scmd, ldev_info);
1489 scsi_done(scmd);
1492 myrb_request_sense(cb, scmd);
1493 scmd->result = (DID_OK << 16);
1496 if (scmd->cmnd[1] != 0x04) {
1498 scsi_build_sense(scmd, 0, ILLEGAL_REQUEST, 0x24, 0);
1501 scmd->result = (DID_OK << 16);
1503 scsi_done(scmd);
1508 scsi_build_sense(scmd, 0, DATA_PROTECT, 0x21, 0x06);
1509 scsi_done(scmd);
1514 lba = (((scmd->cmnd[1] & 0x1F) << 16) |
1515 (scmd->cmnd[2] << 8) |
1516 scmd->cmnd[3]);
1517 block_cnt = scmd->cmnd[4];
1522 scsi_build_sense(scmd, 0, DATA_PROTECT, 0x21, 0x06);
1523 scsi_done(scmd);
1530 lba = get_unaligned_be32(&scmd->cmnd[2]);
1531 block_cnt = get_unaligned_be16(&scmd->cmnd[7]);
1536 scsi_build_sense(scmd, 0, DATA_PROTECT, 0x21, 0x06);
1537 scsi_done(scmd);
1544 lba = get_unaligned_be32(&scmd->cmnd[2]);
1545 block_cnt = get_unaligned_be32(&scmd->cmnd[6]);
1549 scsi_build_sense(scmd, 0, ILLEGAL_REQUEST, 0x20, 0);
1550 scsi_done(scmd);
1555 mbox->type5.id = scsi_cmd_to_rq(scmd)->tag + 3;
1556 if (scmd->sc_data_direction == DMA_NONE)
1558 nsge = scsi_dma_map(scmd);
1560 sgl = scsi_sglist(scmd);
1561 if (scmd->sc_data_direction == DMA_FROM_DEVICE)
1582 if (scmd->sc_data_direction == DMA_FROM_DEVICE)
1593 scsi_for_each_sg(scmd, sgl, nsge, i) {
1608 struct scsi_cmnd *scmd)
1610 struct scsi_device *sdev = scmd->device;
1613 scmd->result = (DID_BAD_TARGET << 16);
1614 scsi_done(scmd);
1618 return myrb_ldev_queuecommand(shost, scmd);
1620 return myrb_pthru_queuecommand(shost, scmd);
2303 struct scsi_cmnd *scmd)
2310 scsi_dma_unmap(scmd);
2313 memcpy(scmd->sense_buffer, &cmd_blk->dcdb->sense, 64);
2327 scmd->result = (DID_OK << 16) | status;
2330 dev_dbg(&scmd->device->sdev_gendev,
2332 if (scmd->sc_data_direction == DMA_FROM_DEVICE)
2334 scsi_build_sense(scmd, 0, MEDIUM_ERROR, 0x11, 0);
2337 scsi_build_sense(scmd, 0, MEDIUM_ERROR, 0x0C, 0);
2340 scmd_printk(KERN_ERR, scmd, "Irrecoverable Data Error\n");
2341 if (scmd->sc_data_direction == DMA_FROM_DEVICE)
2343 scsi_build_sense(scmd, 0, MEDIUM_ERROR, 0x11, 0x04);
2346 scsi_build_sense(scmd, 0, MEDIUM_ERROR, 0x0C, 0x02);
2349 dev_dbg(&scmd->device->sdev_gendev,
2351 scmd->result = (DID_BAD_TARGET << 16);
2354 dev_dbg(&scmd->device->sdev_gendev,
2357 scsi_build_sense(scmd, 0, NOT_READY, 0x21, 0);
2360 dev_dbg(&scmd->device->sdev_gendev, "Device nonresponsive\n");
2361 scmd->result = (DID_BAD_TARGET << 16);
2364 scmd_printk(KERN_ERR, scmd,
2366 scmd->result = (DID_ERROR << 16);
2369 scsi_done(scmd);
2721 struct scsi_cmnd *scmd = NULL;
2729 scmd = scsi_host_find_tag(cb->host, id - 3);
2730 if (scmd)
2731 cmd_blk = scsi_cmd_priv(scmd);
2747 myrb_handle_scsi(cb, cmd_blk, scmd);
2969 struct scsi_cmnd *scmd = NULL;
2977 scmd = scsi_host_find_tag(cb->host, id - 3);
2978 if (scmd)
2979 cmd_blk = scsi_cmd_priv(scmd);
2994 myrb_handle_scsi(cb, cmd_blk, scmd);
3162 struct scsi_cmnd *scmd = NULL;
3170 scmd = scsi_host_find_tag(cb->host, id - 3);
3171 if (scmd)
3172 cmd_blk = scsi_cmd_priv(scmd);
3186 myrb_handle_scsi(cb, cmd_blk, scmd);
3328 struct scsi_cmnd *scmd = NULL;
3339 scmd = scsi_host_find_tag(cb->host, id - 3);
3340 if (scmd)
3341 cmd_blk = scsi_cmd_priv(scmd);
3384 myrb_handle_scsi(cb, cmd_blk, scmd);