Lines Matching refs:scmd
1256 static int myrb_host_reset(struct scsi_cmnd *scmd) in myrb_host_reset() argument
1258 struct Scsi_Host *shost = scmd->device->host; in myrb_host_reset()
1266 struct scsi_cmnd *scmd) in myrb_pthru_queuecommand() argument
1269 struct myrb_cmdblk *cmd_blk = scsi_cmd_priv(scmd); in myrb_pthru_queuecommand()
1273 struct scsi_device *sdev = scmd->device; in myrb_pthru_queuecommand()
1282 nsge = scsi_dma_map(scmd); in myrb_pthru_queuecommand()
1285 scmd->result = (DID_ERROR << 16); in myrb_pthru_queuecommand()
1286 scmd->scsi_done(scmd); in myrb_pthru_queuecommand()
1291 mbox->type3.id = scmd->request->tag + 3; in myrb_pthru_queuecommand()
1295 switch (scmd->sc_data_direction) { in myrb_pthru_queuecommand()
1310 if (scmd->request->timeout <= 10) in myrb_pthru_queuecommand()
1312 else if (scmd->request->timeout <= 60) in myrb_pthru_queuecommand()
1314 else if (scmd->request->timeout <= 600) in myrb_pthru_queuecommand()
1320 sgl = scsi_sglist(scmd); in myrb_pthru_queuecommand()
1329 dcdb->cdb_len = scmd->cmd_len; in myrb_pthru_queuecommand()
1331 memcpy(&dcdb->cdb, scmd->cmnd, scmd->cmd_len); in myrb_pthru_queuecommand()
1340 struct scsi_cmnd *scmd) in myrb_inquiry() argument
1359 scsi_sg_copy_from_buffer(scmd, (void *)inq, 36); in myrb_inquiry()
1363 myrb_mode_sense(struct myrb_hba *cb, struct scsi_cmnd *scmd, in myrb_mode_sense() argument
1370 dbd = (scmd->cmnd[1] & 0x08) == 0x08; in myrb_mode_sense()
1396 scsi_sg_copy_from_buffer(scmd, modes, mode_len); in myrb_mode_sense()
1400 struct scsi_cmnd *scmd) in myrb_request_sense() argument
1402 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_request_sense()
1404 scsi_sg_copy_from_buffer(scmd, scmd->sense_buffer, in myrb_request_sense()
1408 static void myrb_read_capacity(struct myrb_hba *cb, struct scsi_cmnd *scmd, in myrb_read_capacity() argument
1413 dev_dbg(&scmd->device->sdev_gendev, in myrb_read_capacity()
1418 scsi_sg_copy_from_buffer(scmd, data, 8); in myrb_read_capacity()
1422 struct scsi_cmnd *scmd) in myrb_ldev_queuecommand() argument
1425 struct myrb_cmdblk *cmd_blk = scsi_cmd_priv(scmd); in myrb_ldev_queuecommand()
1428 struct scsi_device *sdev = scmd->device; in myrb_ldev_queuecommand()
1440 scmd->result = (DID_BAD_TARGET << 16); in myrb_ldev_queuecommand()
1441 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1444 switch (scmd->cmnd[0]) { in myrb_ldev_queuecommand()
1446 scmd->result = (DID_OK << 16); in myrb_ldev_queuecommand()
1447 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1450 if (scmd->cmnd[1] & 1) { in myrb_ldev_queuecommand()
1452 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_ldev_queuecommand()
1454 scmd->result = (DRIVER_SENSE << 24) | in myrb_ldev_queuecommand()
1457 myrb_inquiry(cb, scmd); in myrb_ldev_queuecommand()
1458 scmd->result = (DID_OK << 16); in myrb_ldev_queuecommand()
1460 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1463 scmd->result = (DID_OK << 16); in myrb_ldev_queuecommand()
1464 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1467 if ((scmd->cmnd[2] & 0x3F) != 0x3F && in myrb_ldev_queuecommand()
1468 (scmd->cmnd[2] & 0x3F) != 0x08) { in myrb_ldev_queuecommand()
1470 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_ldev_queuecommand()
1472 scmd->result = (DRIVER_SENSE << 24) | in myrb_ldev_queuecommand()
1475 myrb_mode_sense(cb, scmd, ldev_info); in myrb_ldev_queuecommand()
1476 scmd->result = (DID_OK << 16); in myrb_ldev_queuecommand()
1478 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1481 if ((scmd->cmnd[1] & 1) || in myrb_ldev_queuecommand()
1482 (scmd->cmnd[8] & 1)) { in myrb_ldev_queuecommand()
1484 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_ldev_queuecommand()
1486 scmd->result = (DRIVER_SENSE << 24) | in myrb_ldev_queuecommand()
1488 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1491 lba = get_unaligned_be32(&scmd->cmnd[2]); in myrb_ldev_queuecommand()
1494 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_ldev_queuecommand()
1496 scmd->result = (DRIVER_SENSE << 24) | in myrb_ldev_queuecommand()
1498 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1501 myrb_read_capacity(cb, scmd, ldev_info); in myrb_ldev_queuecommand()
1502 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1505 myrb_request_sense(cb, scmd); in myrb_ldev_queuecommand()
1506 scmd->result = (DID_OK << 16); in myrb_ldev_queuecommand()
1509 if (scmd->cmnd[1] != 0x04) { in myrb_ldev_queuecommand()
1511 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_ldev_queuecommand()
1513 scmd->result = (DRIVER_SENSE << 24) | in myrb_ldev_queuecommand()
1517 scmd->result = (DID_OK << 16); in myrb_ldev_queuecommand()
1519 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1524 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_ldev_queuecommand()
1526 scmd->result = (DRIVER_SENSE << 24) | in myrb_ldev_queuecommand()
1528 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1533 lba = (((scmd->cmnd[1] & 0x1F) << 16) | in myrb_ldev_queuecommand()
1534 (scmd->cmnd[2] << 8) | in myrb_ldev_queuecommand()
1535 scmd->cmnd[3]); in myrb_ldev_queuecommand()
1536 block_cnt = scmd->cmnd[4]; in myrb_ldev_queuecommand()
1541 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_ldev_queuecommand()
1543 scmd->result = (DRIVER_SENSE << 24) | in myrb_ldev_queuecommand()
1545 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1552 lba = get_unaligned_be32(&scmd->cmnd[2]); in myrb_ldev_queuecommand()
1553 block_cnt = get_unaligned_be16(&scmd->cmnd[7]); in myrb_ldev_queuecommand()
1558 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_ldev_queuecommand()
1560 scmd->result = (DRIVER_SENSE << 24) | in myrb_ldev_queuecommand()
1562 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1569 lba = get_unaligned_be32(&scmd->cmnd[2]); in myrb_ldev_queuecommand()
1570 block_cnt = get_unaligned_be32(&scmd->cmnd[6]); in myrb_ldev_queuecommand()
1574 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_ldev_queuecommand()
1576 scmd->result = (DRIVER_SENSE << 24) | SAM_STAT_CHECK_CONDITION; in myrb_ldev_queuecommand()
1577 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1582 mbox->type5.id = scmd->request->tag + 3; in myrb_ldev_queuecommand()
1583 if (scmd->sc_data_direction == DMA_NONE) in myrb_ldev_queuecommand()
1585 nsge = scsi_dma_map(scmd); in myrb_ldev_queuecommand()
1587 sgl = scsi_sglist(scmd); in myrb_ldev_queuecommand()
1588 if (scmd->sc_data_direction == DMA_FROM_DEVICE) in myrb_ldev_queuecommand()
1609 if (scmd->sc_data_direction == DMA_FROM_DEVICE) in myrb_ldev_queuecommand()
1620 scsi_for_each_sg(scmd, sgl, nsge, i) { in myrb_ldev_queuecommand()
1635 struct scsi_cmnd *scmd) in myrb_queuecommand() argument
1637 struct scsi_device *sdev = scmd->device; in myrb_queuecommand()
1640 scmd->result = (DID_BAD_TARGET << 16); in myrb_queuecommand()
1641 scmd->scsi_done(scmd); in myrb_queuecommand()
1645 return myrb_ldev_queuecommand(shost, scmd); in myrb_queuecommand()
1647 return myrb_pthru_queuecommand(shost, scmd); in myrb_queuecommand()
2326 struct scsi_cmnd *scmd) in myrb_handle_scsi() argument
2333 scsi_dma_unmap(scmd); in myrb_handle_scsi()
2336 memcpy(scmd->sense_buffer, &cmd_blk->dcdb->sense, 64); in myrb_handle_scsi()
2350 scmd->result = (DID_OK << 16) | status; in myrb_handle_scsi()
2353 dev_dbg(&scmd->device->sdev_gendev, in myrb_handle_scsi()
2355 if (scmd->sc_data_direction == DMA_FROM_DEVICE) in myrb_handle_scsi()
2357 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_handle_scsi()
2361 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_handle_scsi()
2363 scmd->result = (DID_OK << 16) | SAM_STAT_CHECK_CONDITION; in myrb_handle_scsi()
2366 scmd_printk(KERN_ERR, scmd, "Irrecoverable Data Error\n"); in myrb_handle_scsi()
2367 if (scmd->sc_data_direction == DMA_FROM_DEVICE) in myrb_handle_scsi()
2369 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_handle_scsi()
2373 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_handle_scsi()
2375 scmd->result = (DID_OK << 16) | SAM_STAT_CHECK_CONDITION; in myrb_handle_scsi()
2378 dev_dbg(&scmd->device->sdev_gendev, in myrb_handle_scsi()
2380 scmd->result = (DID_BAD_TARGET << 16); in myrb_handle_scsi()
2383 dev_dbg(&scmd->device->sdev_gendev, in myrb_handle_scsi()
2386 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_handle_scsi()
2390 dev_dbg(&scmd->device->sdev_gendev, "Device nonresponsive\n"); in myrb_handle_scsi()
2391 scmd->result = (DID_BAD_TARGET << 16); in myrb_handle_scsi()
2394 scmd_printk(KERN_ERR, scmd, in myrb_handle_scsi()
2396 scmd->result = (DID_ERROR << 16); in myrb_handle_scsi()
2399 scmd->scsi_done(scmd); in myrb_handle_scsi()
2780 struct scsi_cmnd *scmd = NULL; in DAC960_LA_intr_handler() local
2788 scmd = scsi_host_find_tag(cb->host, id - 3); in DAC960_LA_intr_handler()
2789 if (scmd) in DAC960_LA_intr_handler()
2790 cmd_blk = scsi_cmd_priv(scmd); in DAC960_LA_intr_handler()
2806 myrb_handle_scsi(cb, cmd_blk, scmd); in DAC960_LA_intr_handler()
3058 struct scsi_cmnd *scmd = NULL; in DAC960_PG_intr_handler() local
3066 scmd = scsi_host_find_tag(cb->host, id - 3); in DAC960_PG_intr_handler()
3067 if (scmd) in DAC960_PG_intr_handler()
3068 cmd_blk = scsi_cmd_priv(scmd); in DAC960_PG_intr_handler()
3083 myrb_handle_scsi(cb, cmd_blk, scmd); in DAC960_PG_intr_handler()
3263 struct scsi_cmnd *scmd = NULL; in DAC960_PD_intr_handler() local
3271 scmd = scsi_host_find_tag(cb->host, id - 3); in DAC960_PD_intr_handler()
3272 if (scmd) in DAC960_PD_intr_handler()
3273 cmd_blk = scsi_cmd_priv(scmd); in DAC960_PD_intr_handler()
3287 myrb_handle_scsi(cb, cmd_blk, scmd); in DAC960_PD_intr_handler()
3429 struct scsi_cmnd *scmd = NULL; in DAC960_P_intr_handler() local
3440 scmd = scsi_host_find_tag(cb->host, id - 3); in DAC960_P_intr_handler()
3441 if (scmd) in DAC960_P_intr_handler()
3442 cmd_blk = scsi_cmd_priv(scmd); in DAC960_P_intr_handler()
3485 myrb_handle_scsi(cb, cmd_blk, scmd); in DAC960_P_intr_handler()