Lines Matching refs:scmd
1257 static int myrb_host_reset(struct scsi_cmnd *scmd) in myrb_host_reset() argument
1259 struct Scsi_Host *shost = scmd->device->host; in myrb_host_reset()
1267 struct scsi_cmnd *scmd) in myrb_pthru_queuecommand() argument
1270 struct myrb_cmdblk *cmd_blk = scsi_cmd_priv(scmd); in myrb_pthru_queuecommand()
1274 struct scsi_device *sdev = scmd->device; in myrb_pthru_queuecommand()
1283 nsge = scsi_dma_map(scmd); in myrb_pthru_queuecommand()
1286 scmd->result = (DID_ERROR << 16); in myrb_pthru_queuecommand()
1287 scmd->scsi_done(scmd); in myrb_pthru_queuecommand()
1292 mbox->type3.id = scmd->request->tag + 3; in myrb_pthru_queuecommand()
1296 switch (scmd->sc_data_direction) { in myrb_pthru_queuecommand()
1311 if (scmd->request->timeout <= 10) in myrb_pthru_queuecommand()
1313 else if (scmd->request->timeout <= 60) in myrb_pthru_queuecommand()
1315 else if (scmd->request->timeout <= 600) in myrb_pthru_queuecommand()
1321 sgl = scsi_sglist(scmd); in myrb_pthru_queuecommand()
1330 dcdb->cdb_len = scmd->cmd_len; in myrb_pthru_queuecommand()
1332 memcpy(&dcdb->cdb, scmd->cmnd, scmd->cmd_len); in myrb_pthru_queuecommand()
1341 struct scsi_cmnd *scmd) in myrb_inquiry() argument
1360 scsi_sg_copy_from_buffer(scmd, (void *)inq, 36); in myrb_inquiry()
1364 myrb_mode_sense(struct myrb_hba *cb, struct scsi_cmnd *scmd, in myrb_mode_sense() argument
1371 dbd = (scmd->cmnd[1] & 0x08) == 0x08; in myrb_mode_sense()
1397 scsi_sg_copy_from_buffer(scmd, modes, mode_len); in myrb_mode_sense()
1401 struct scsi_cmnd *scmd) in myrb_request_sense() argument
1403 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_request_sense()
1405 scsi_sg_copy_from_buffer(scmd, scmd->sense_buffer, in myrb_request_sense()
1409 static void myrb_read_capacity(struct myrb_hba *cb, struct scsi_cmnd *scmd, in myrb_read_capacity() argument
1414 dev_dbg(&scmd->device->sdev_gendev, in myrb_read_capacity()
1419 scsi_sg_copy_from_buffer(scmd, data, 8); in myrb_read_capacity()
1423 struct scsi_cmnd *scmd) in myrb_ldev_queuecommand() argument
1426 struct myrb_cmdblk *cmd_blk = scsi_cmd_priv(scmd); in myrb_ldev_queuecommand()
1429 struct scsi_device *sdev = scmd->device; in myrb_ldev_queuecommand()
1441 scmd->result = (DID_BAD_TARGET << 16); in myrb_ldev_queuecommand()
1442 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1445 switch (scmd->cmnd[0]) { in myrb_ldev_queuecommand()
1447 scmd->result = (DID_OK << 16); in myrb_ldev_queuecommand()
1448 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1451 if (scmd->cmnd[1] & 1) { in myrb_ldev_queuecommand()
1453 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_ldev_queuecommand()
1455 scmd->result = (DRIVER_SENSE << 24) | in myrb_ldev_queuecommand()
1458 myrb_inquiry(cb, scmd); in myrb_ldev_queuecommand()
1459 scmd->result = (DID_OK << 16); in myrb_ldev_queuecommand()
1461 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1464 scmd->result = (DID_OK << 16); in myrb_ldev_queuecommand()
1465 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1468 if ((scmd->cmnd[2] & 0x3F) != 0x3F && in myrb_ldev_queuecommand()
1469 (scmd->cmnd[2] & 0x3F) != 0x08) { in myrb_ldev_queuecommand()
1471 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_ldev_queuecommand()
1473 scmd->result = (DRIVER_SENSE << 24) | in myrb_ldev_queuecommand()
1476 myrb_mode_sense(cb, scmd, ldev_info); in myrb_ldev_queuecommand()
1477 scmd->result = (DID_OK << 16); in myrb_ldev_queuecommand()
1479 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1482 if ((scmd->cmnd[1] & 1) || in myrb_ldev_queuecommand()
1483 (scmd->cmnd[8] & 1)) { in myrb_ldev_queuecommand()
1485 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_ldev_queuecommand()
1487 scmd->result = (DRIVER_SENSE << 24) | in myrb_ldev_queuecommand()
1489 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1492 lba = get_unaligned_be32(&scmd->cmnd[2]); in myrb_ldev_queuecommand()
1495 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_ldev_queuecommand()
1497 scmd->result = (DRIVER_SENSE << 24) | in myrb_ldev_queuecommand()
1499 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1502 myrb_read_capacity(cb, scmd, ldev_info); in myrb_ldev_queuecommand()
1503 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1506 myrb_request_sense(cb, scmd); in myrb_ldev_queuecommand()
1507 scmd->result = (DID_OK << 16); in myrb_ldev_queuecommand()
1510 if (scmd->cmnd[1] != 0x04) { in myrb_ldev_queuecommand()
1512 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_ldev_queuecommand()
1514 scmd->result = (DRIVER_SENSE << 24) | in myrb_ldev_queuecommand()
1518 scmd->result = (DID_OK << 16); in myrb_ldev_queuecommand()
1520 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1525 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_ldev_queuecommand()
1527 scmd->result = (DRIVER_SENSE << 24) | in myrb_ldev_queuecommand()
1529 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1534 lba = (((scmd->cmnd[1] & 0x1F) << 16) | in myrb_ldev_queuecommand()
1535 (scmd->cmnd[2] << 8) | in myrb_ldev_queuecommand()
1536 scmd->cmnd[3]); in myrb_ldev_queuecommand()
1537 block_cnt = scmd->cmnd[4]; in myrb_ldev_queuecommand()
1542 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_ldev_queuecommand()
1544 scmd->result = (DRIVER_SENSE << 24) | in myrb_ldev_queuecommand()
1546 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1553 lba = get_unaligned_be32(&scmd->cmnd[2]); in myrb_ldev_queuecommand()
1554 block_cnt = get_unaligned_be16(&scmd->cmnd[7]); in myrb_ldev_queuecommand()
1559 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_ldev_queuecommand()
1561 scmd->result = (DRIVER_SENSE << 24) | in myrb_ldev_queuecommand()
1563 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1570 lba = get_unaligned_be32(&scmd->cmnd[2]); in myrb_ldev_queuecommand()
1571 block_cnt = get_unaligned_be32(&scmd->cmnd[6]); in myrb_ldev_queuecommand()
1575 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_ldev_queuecommand()
1577 scmd->result = (DRIVER_SENSE << 24) | SAM_STAT_CHECK_CONDITION; in myrb_ldev_queuecommand()
1578 scmd->scsi_done(scmd); in myrb_ldev_queuecommand()
1583 mbox->type5.id = scmd->request->tag + 3; in myrb_ldev_queuecommand()
1584 if (scmd->sc_data_direction == DMA_NONE) in myrb_ldev_queuecommand()
1586 nsge = scsi_dma_map(scmd); in myrb_ldev_queuecommand()
1588 sgl = scsi_sglist(scmd); in myrb_ldev_queuecommand()
1589 if (scmd->sc_data_direction == DMA_FROM_DEVICE) in myrb_ldev_queuecommand()
1610 if (scmd->sc_data_direction == DMA_FROM_DEVICE) in myrb_ldev_queuecommand()
1621 scsi_for_each_sg(scmd, sgl, nsge, i) { in myrb_ldev_queuecommand()
1636 struct scsi_cmnd *scmd) in myrb_queuecommand() argument
1638 struct scsi_device *sdev = scmd->device; in myrb_queuecommand()
1641 scmd->result = (DID_BAD_TARGET << 16); in myrb_queuecommand()
1642 scmd->scsi_done(scmd); in myrb_queuecommand()
1646 return myrb_ldev_queuecommand(shost, scmd); in myrb_queuecommand()
1648 return myrb_pthru_queuecommand(shost, scmd); in myrb_queuecommand()
2327 struct scsi_cmnd *scmd) in myrb_handle_scsi() argument
2334 scsi_dma_unmap(scmd); in myrb_handle_scsi()
2337 memcpy(scmd->sense_buffer, &cmd_blk->dcdb->sense, 64); in myrb_handle_scsi()
2351 scmd->result = (DID_OK << 16) | status; in myrb_handle_scsi()
2354 dev_dbg(&scmd->device->sdev_gendev, in myrb_handle_scsi()
2356 if (scmd->sc_data_direction == DMA_FROM_DEVICE) in myrb_handle_scsi()
2358 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_handle_scsi()
2362 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_handle_scsi()
2364 scmd->result = (DID_OK << 16) | SAM_STAT_CHECK_CONDITION; in myrb_handle_scsi()
2367 scmd_printk(KERN_ERR, scmd, "Irrecoverable Data Error\n"); in myrb_handle_scsi()
2368 if (scmd->sc_data_direction == DMA_FROM_DEVICE) in myrb_handle_scsi()
2370 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_handle_scsi()
2374 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_handle_scsi()
2376 scmd->result = (DID_OK << 16) | SAM_STAT_CHECK_CONDITION; in myrb_handle_scsi()
2379 dev_dbg(&scmd->device->sdev_gendev, in myrb_handle_scsi()
2381 scmd->result = (DID_BAD_TARGET << 16); in myrb_handle_scsi()
2384 dev_dbg(&scmd->device->sdev_gendev, in myrb_handle_scsi()
2387 scsi_build_sense_buffer(0, scmd->sense_buffer, in myrb_handle_scsi()
2391 dev_dbg(&scmd->device->sdev_gendev, "Device nonresponsive\n"); in myrb_handle_scsi()
2392 scmd->result = (DID_BAD_TARGET << 16); in myrb_handle_scsi()
2395 scmd_printk(KERN_ERR, scmd, in myrb_handle_scsi()
2397 scmd->result = (DID_ERROR << 16); in myrb_handle_scsi()
2400 scmd->scsi_done(scmd); in myrb_handle_scsi()
2781 struct scsi_cmnd *scmd = NULL; in DAC960_LA_intr_handler() local
2789 scmd = scsi_host_find_tag(cb->host, id - 3); in DAC960_LA_intr_handler()
2790 if (scmd) in DAC960_LA_intr_handler()
2791 cmd_blk = scsi_cmd_priv(scmd); in DAC960_LA_intr_handler()
2807 myrb_handle_scsi(cb, cmd_blk, scmd); in DAC960_LA_intr_handler()
3059 struct scsi_cmnd *scmd = NULL; in DAC960_PG_intr_handler() local
3067 scmd = scsi_host_find_tag(cb->host, id - 3); in DAC960_PG_intr_handler()
3068 if (scmd) in DAC960_PG_intr_handler()
3069 cmd_blk = scsi_cmd_priv(scmd); in DAC960_PG_intr_handler()
3084 myrb_handle_scsi(cb, cmd_blk, scmd); in DAC960_PG_intr_handler()
3264 struct scsi_cmnd *scmd = NULL; in DAC960_PD_intr_handler() local
3272 scmd = scsi_host_find_tag(cb->host, id - 3); in DAC960_PD_intr_handler()
3273 if (scmd) in DAC960_PD_intr_handler()
3274 cmd_blk = scsi_cmd_priv(scmd); in DAC960_PD_intr_handler()
3288 myrb_handle_scsi(cb, cmd_blk, scmd); in DAC960_PD_intr_handler()
3430 struct scsi_cmnd *scmd = NULL; in DAC960_P_intr_handler() local
3441 scmd = scsi_host_find_tag(cb->host, id - 3); in DAC960_P_intr_handler()
3442 if (scmd) in DAC960_P_intr_handler()
3443 cmd_blk = scsi_cmd_priv(scmd); in DAC960_P_intr_handler()
3486 myrb_handle_scsi(cb, cmd_blk, scmd); in DAC960_P_intr_handler()