Lines Matching defs:ccb

1309 static void arcmsr_ccb_complete(struct CommandControlBlock *ccb)
1311 struct AdapterControlBlock *acb = ccb->acb;
1312 struct scsi_cmnd *pcmd = ccb->pcmd;
1315 scsi_dma_unmap(ccb->pcmd);
1316 ccb->startdone = ARCMSR_CCB_DONE;
1318 list_add_tail(&ccb->list, &acb->ccb_free_list);
1323 static void arcmsr_report_sense_info(struct CommandControlBlock *ccb)
1325 struct scsi_cmnd *pcmd = ccb->pcmd;
1333 ccb->arcmsr_cdb.SenseData,
1334 sizeof(ccb->arcmsr_cdb.SenseData),
1386 struct CommandControlBlock *ccb, bool error)
1389 id = ccb->pcmd->device->id;
1390 lun = ccb->pcmd->device->lun;
1394 ccb->pcmd->result = DID_OK << 16;
1395 arcmsr_ccb_complete(ccb);
1397 switch (ccb->arcmsr_cdb.DeviceStatus) {
1400 ccb->pcmd->result = DID_NO_CONNECT << 16;
1401 arcmsr_ccb_complete(ccb);
1409 ccb->pcmd->result = DID_BAD_TARGET << 16;
1410 arcmsr_ccb_complete(ccb);
1416 arcmsr_report_sense_info(ccb);
1417 arcmsr_ccb_complete(ccb);
1428 , ccb->arcmsr_cdb.DeviceStatus);
1430 ccb->pcmd->result = DID_NO_CONNECT << 16;
1431 arcmsr_ccb_complete(ccb);
1450 printk(KERN_NOTICE "arcmsr%d: isr get an illegal ccb command \
1452 "ccb = '0x%p' ccbacb = '0x%p' startdone = 0x%x"
1592 struct CommandControlBlock *ccb;
1596 ccb = acb->pccb_pool[i];
1597 if (ccb->startdone == ARCMSR_CCB_START) {
1598 ccb->pcmd->result = DID_NO_CONNECT << 16;
1599 scsi_dma_unmap(ccb->pcmd);
1600 scsi_done(ccb->pcmd);
1687 struct CommandControlBlock *ccb = acb->pccb_pool[i];
1688 if (ccb->startdone == ARCMSR_CCB_START) {
1689 ccb->startdone = ARCMSR_CCB_ABORTED;
1690 ccb->pcmd->result = DID_ABORT << 16;
1691 arcmsr_ccb_complete(ccb);
1788 struct CommandControlBlock *ccb, struct scsi_cmnd *pcmd)
1790 struct ARCMSR_CDB *arcmsr_cdb = (struct ARCMSR_CDB *)&ccb->arcmsr_cdb;
1798 ccb->pcmd = pcmd;
1838 ccb->arc_cdb_size = arccdbsize;
1842 static void arcmsr_post_ccb(struct AdapterControlBlock *acb, struct CommandControlBlock *ccb)
1844 uint32_t cdb_phyaddr = ccb->cdb_phyaddr;
1845 struct ARCMSR_CDB *arcmsr_cdb = (struct ARCMSR_CDB *)&ccb->arcmsr_cdb;
1847 ccb->startdone = ARCMSR_CCB_START;
1882 arc_cdb_size = (ccb->arc_cdb_size > 0x300) ? 0x300 : ccb->arc_cdb_size;
1884 writel(upper_32_bits(ccb->cdb_phyaddr), &phbcmu->inbound_queueport_high);
1898 pinbound_srb->addressHigh = upper_32_bits(ccb->cdb_phyaddr);
1900 pinbound_srb->length = ccb->arc_cdb_size >> 2;
1915 arc_cdb_size = (ccb->arc_cdb_size > 0x300) ? 0x300 : ccb->arc_cdb_size;
1916 ccb_post_stamp = (ccb->smid | ((arc_cdb_size - 1) >> 6));
1925 if (ccb->arc_cdb_size <= 0x300)
1926 arc_cdb_size = (ccb->arc_cdb_size - 1) >> 6 | 1;
1928 arc_cdb_size = ((ccb->arc_cdb_size + 0xff) >> 8) + 2;
1933 ccb_post_stamp = (ccb->smid | arc_cdb_size);
2507 struct CommandControlBlock *ccb;
2523 ccb = container_of(arcmsr_cdb, struct CommandControlBlock,
2528 arcmsr_drain_donequeue(acb, ccb, error);
2545 struct CommandControlBlock *ccb;
2567 ccb = container_of(arcmsr_cdb,
2571 arcmsr_drain_donequeue(acb, ccb, error);
2588 struct CommandControlBlock *ccb;
2596 ccb = acb->pccb_pool[cmdSMID];
2599 arcmsr_drain_donequeue(acb, ccb, error);
2615 struct CommandControlBlock *ccb;
2625 ccb = acb->pccb_pool[cmdSMID];
2628 arcmsr_drain_donequeue(acb, ccb, error);
3170 struct CommandControlBlock *ccb = NULL;
3176 ccb = list_entry(head->next, struct CommandControlBlock, list);
3177 list_del_init(&ccb->list);
3183 return ccb;
3240 struct CommandControlBlock *ccb;
3255 ccb = arcmsr_get_freeccb(acb);
3256 if (!ccb)
3258 if (arcmsr_build_ccb( acb, ccb, cmd ) == FAILED) {
3263 arcmsr_post_ccb(acb, ccb);
3493 struct CommandControlBlock *ccb;
3522 ccb = container_of(arcmsr_cdb, struct CommandControlBlock, arcmsr_cdb);
3523 poll_ccb_done |= (ccb == poll_ccb) ? 1 : 0;
3524 if ((ccb->acb != acb) || (ccb->startdone != ARCMSR_CCB_START)) {
3525 if ((ccb->startdone == ARCMSR_CCB_ABORTED) || (ccb == poll_ccb)) {
3526 printk(KERN_NOTICE "arcmsr%d: scsi id = %d lun = %d ccb = '0x%p'"
3529 , ccb->pcmd->device->id
3530 , (u32)ccb->pcmd->device->lun
3531 , ccb);
3532 ccb->pcmd->result = DID_ABORT << 16;
3533 arcmsr_ccb_complete(ccb);
3536 printk(KERN_NOTICE "arcmsr%d: polling get an illegal ccb"
3537 " command done ccb = '0x%p'"
3540 , ccb
3545 arcmsr_report_ccb_state(acb, ccb, error);
3555 struct CommandControlBlock *ccb;
3591 ccb = container_of(arcmsr_cdb, struct CommandControlBlock, arcmsr_cdb);
3592 poll_ccb_done |= (ccb == poll_ccb) ? 1 : 0;
3593 if ((ccb->acb != acb) || (ccb->startdone != ARCMSR_CCB_START)) {
3594 if ((ccb->startdone == ARCMSR_CCB_ABORTED) || (ccb == poll_ccb)) {
3595 printk(KERN_NOTICE "arcmsr%d: scsi id = %d lun = %d ccb = '0x%p'"
3598 ,ccb->pcmd->device->id
3599 ,(u32)ccb->pcmd->device->lun
3600 ,ccb);
3601 ccb->pcmd->result = DID_ABORT << 16;
3602 arcmsr_ccb_complete(ccb);
3605 printk(KERN_NOTICE "arcmsr%d: polling get an illegal ccb"
3606 " command done ccb = '0x%p'"
3609 , ccb
3614 arcmsr_report_ccb_state(acb, ccb, error);
3657 printk(KERN_NOTICE "arcmsr%d: scsi id = %d lun = %d ccb = '0x%p'"
3667 printk(KERN_NOTICE "arcmsr%d: polling get an illegal ccb"
3668 " command done ccb = '0x%p'"
3732 "lun = %d ccb = '0x%p' poll command "
3743 "ccb command done ccb = '0x%p' "
3800 "lun = %d ccb = '0x%p' poll command "
3811 "ccb command done ccb = '0x%p' "
3989 printk(KERN_NOTICE "arcmsr%d: ""set ccb high \
4019 /* ccb maxQ size must be --> [(256 + 8)*4]*/
4546 struct CommandControlBlock *ccb;
4560 ccb = acb->pccb_pool[i];
4561 if (ccb->startdone == ARCMSR_CCB_START) {
4562 scsi_dma_unmap(ccb->pcmd);
4563 ccb->startdone = ARCMSR_CCB_DONE;
4564 ccb->ccb_flags = 0;
4566 list_add_tail(&ccb->list, &acb->ccb_free_list);
4633 struct CommandControlBlock *ccb)
4636 rtn = arcmsr_polling_ccbdone(acb, ccb);
4668 struct CommandControlBlock *ccb = acb->pccb_pool[i];
4669 if (ccb->startdone == ARCMSR_CCB_START && ccb->pcmd == cmd) {
4670 ccb->startdone = ARCMSR_CCB_ABORTED;
4671 rtn = arcmsr_abort_one_cmd(acb, ccb);