2703 ips_freescb(ha, scb);
2704 break;
2705 case IPS_SUCCESS_IMM:
2706 ips_freescb(ha, scb);
2707 break;
2708 default:
2709 break;
2710 }
2711
2712 }
2713
2714
2715
2716
2717
2718 p = ha->scb_waitlist.head;
2719 while ((p) && (scb = ips_getscb(ha))) {
2720 if ((scmd_channel(p) > 0)
2721 && (ha->
2722 dcdb_active[scmd_channel(p) -
2723 1] & (1 << scmd_id(p)))) {
2724 ips_freescb(ha, scb);
2725 p = (struct scsi_cmnd *) p->host_scribble;
2726 continue;
2727 }
2728
2729 q = p;
2730 SC = ips_removeq_wait(&ha->scb_waitlist, q);
2731
2732 if (intr == IPS_INTR_ON)
2733 spin_unlock(host->host_lock);
2734
2735 SC->result = DID_OK;
2736 SC->host_scribble = NULL;
2737
2738 scb->target_id = SC->device->id;
2739 scb->lun = SC->device->lun;
2740 scb->bus = SC->device->channel;
2741 scb->scsi_cmd = SC;
2742 scb->breakup = 0;
2743 scb->data_len = 0;