Lines Matching refs:ccb

164 	struct blogic_ccb *ccb = (struct blogic_ccb *) blk_pointer;  in blogic_init_ccbs()  local
167 ccb->allocgrp_head = blkp; in blogic_init_ccbs()
168 ccb->allocgrp_size = blk_size; in blogic_init_ccbs()
170 ccb->status = BLOGIC_CCB_FREE; in blogic_init_ccbs()
171 ccb->adapter = adapter; in blogic_init_ccbs()
172 ccb->dma_handle = (u32) blkp + offset; in blogic_init_ccbs()
174 ccb->callback = blogic_qcompleted_ccb; in blogic_init_ccbs()
175 ccb->base_addr = adapter->fpinfo.base_addr; in blogic_init_ccbs()
177 ccb->next = adapter->free_ccbs; in blogic_init_ccbs()
178 ccb->next_all = adapter->all_ccbs; in blogic_init_ccbs()
179 adapter->free_ccbs = ccb; in blogic_init_ccbs()
180 adapter->all_ccbs = ccb; in blogic_init_ccbs()
182 ccb++; in blogic_init_ccbs()
218 struct blogic_ccb *next_ccb = adapter->all_ccbs, *ccb, *lastccb = NULL; in blogic_destroy_ccbs() local
221 while ((ccb = next_ccb) != NULL) { in blogic_destroy_ccbs()
222 next_ccb = ccb->next_all; in blogic_destroy_ccbs()
223 if (ccb->allocgrp_head) { in blogic_destroy_ccbs()
228 lastccb = ccb; in blogic_destroy_ccbs()
282 struct blogic_ccb *ccb; in blogic_alloc_ccb() local
283 ccb = adapter->free_ccbs; in blogic_alloc_ccb()
284 if (ccb != NULL) { in blogic_alloc_ccb()
285 ccb->serial = ++serial; in blogic_alloc_ccb()
286 adapter->free_ccbs = ccb->next; in blogic_alloc_ccb()
287 ccb->next = NULL; in blogic_alloc_ccb()
291 return ccb; in blogic_alloc_ccb()
294 ccb = adapter->free_ccbs; in blogic_alloc_ccb()
295 if (ccb == NULL) in blogic_alloc_ccb()
297 ccb->serial = ++serial; in blogic_alloc_ccb()
298 adapter->free_ccbs = ccb->next; in blogic_alloc_ccb()
299 ccb->next = NULL; in blogic_alloc_ccb()
300 return ccb; in blogic_alloc_ccb()
310 static void blogic_dealloc_ccb(struct blogic_ccb *ccb, int dma_unmap) in blogic_dealloc_ccb() argument
312 struct blogic_adapter *adapter = ccb->adapter; in blogic_dealloc_ccb()
314 if (ccb->command != NULL) in blogic_dealloc_ccb()
315 scsi_dma_unmap(ccb->command); in blogic_dealloc_ccb()
317 dma_unmap_single(&adapter->pci_device->dev, ccb->sensedata, in blogic_dealloc_ccb()
318 ccb->sense_datalen, DMA_FROM_DEVICE); in blogic_dealloc_ccb()
320 ccb->command = NULL; in blogic_dealloc_ccb()
321 ccb->status = BLOGIC_CCB_FREE; in blogic_dealloc_ccb()
322 ccb->next = adapter->free_ccbs; in blogic_dealloc_ccb()
323 adapter->free_ccbs = ccb; in blogic_dealloc_ccb()
2443 static void blogic_qcompleted_ccb(struct blogic_ccb *ccb) in blogic_qcompleted_ccb() argument
2445 struct blogic_adapter *adapter = ccb->adapter; in blogic_qcompleted_ccb()
2447 ccb->status = BLOGIC_CCB_COMPLETE; in blogic_qcompleted_ccb()
2448 ccb->next = NULL; in blogic_qcompleted_ccb()
2450 adapter->firstccb = ccb; in blogic_qcompleted_ccb()
2451 adapter->lastccb = ccb; in blogic_qcompleted_ccb()
2453 adapter->lastccb->next = ccb; in blogic_qcompleted_ccb()
2454 adapter->lastccb = ccb; in blogic_qcompleted_ccb()
2456 adapter->active_cmds[ccb->tgt_id]--; in blogic_qcompleted_ccb()
2524 struct blogic_ccb *ccb; in blogic_inbox_to_ccb() local
2526 for (ccb = adapter->all_ccbs; ccb; ccb = ccb->next_all) in blogic_inbox_to_ccb()
2527 if (inbox->ccb == ccb->dma_handle) in blogic_inbox_to_ccb()
2530 return ccb; in blogic_inbox_to_ccb()
2556 struct blogic_ccb *ccb = blogic_inbox_to_ccb(adapter, next_inbox); in blogic_scan_inbox() local
2557 if (!ccb) { in blogic_scan_inbox()
2562 blogic_warn("Could not find CCB for dma address %x\n", adapter, next_inbox->ccb); in blogic_scan_inbox()
2564 if (ccb->status == BLOGIC_CCB_ACTIVE || in blogic_scan_inbox()
2565 ccb->status == BLOGIC_CCB_RESET) { in blogic_scan_inbox()
2570 ccb->comp_code = comp_code; in blogic_scan_inbox()
2571 blogic_qcompleted_ccb(ccb); in blogic_scan_inbox()
2579 …blogic_warn("Illegal CCB #%ld status %d in Incoming Mailbox\n", adapter, ccb->serial, ccb->status); in blogic_scan_inbox()
2603 struct blogic_ccb *ccb = adapter->firstccb; in blogic_process_ccbs() local
2604 struct scsi_cmnd *command = ccb->command; in blogic_process_ccbs()
2605 adapter->firstccb = ccb->next; in blogic_process_ccbs()
2611 if (ccb->opcode == BLOGIC_BDR) { in blogic_process_ccbs()
2612 int tgt_id = ccb->tgt_id; in blogic_process_ccbs()
2614 blogic_warn("Bus Device Reset CCB #%ld to Target %d Completed\n", adapter, ccb->serial, tgt_id); in blogic_process_ccbs()
2622 blogic_dealloc_ccb(ccb, 1); in blogic_process_ccbs()
2646 for (ccb = adapter->all_ccbs; ccb != NULL; in blogic_process_ccbs()
2647 ccb = ccb->next_all) in blogic_process_ccbs()
2648 if (ccb->status == BLOGIC_CCB_RESET && in blogic_process_ccbs()
2649 ccb->tgt_id == tgt_id) { in blogic_process_ccbs()
2650 command = ccb->command; in blogic_process_ccbs()
2651 blogic_dealloc_ccb(ccb, 1); in blogic_process_ccbs()
2663 switch (ccb->comp_code) { in blogic_process_ccbs()
2667 blogic_warn("CCB #%ld to Target %d Impossible State\n", adapter, ccb->serial, ccb->tgt_id); in blogic_process_ccbs()
2670 adapter->tgt_stats[ccb->tgt_id] in blogic_process_ccbs()
2672 adapter->tgt_flags[ccb->tgt_id] in blogic_process_ccbs()
2678 adapter, ccb->serial, ccb->tgt_id); in blogic_process_ccbs()
2679 blogic_inc_count(&adapter->tgt_stats[ccb->tgt_id].aborts_done); in blogic_process_ccbs()
2684 ccb->adapter_status, ccb->tgt_status); in blogic_process_ccbs()
2685 if (ccb->adapter_status != BLOGIC_SELECT_TIMEOUT) { in blogic_process_ccbs()
2686 adapter->tgt_stats[ccb->tgt_id] in blogic_process_ccbs()
2691 …tatus %02X Target Status %02X\n", adapter, ccb->serial, ccb->tgt_id, command->result, ccb->adapter… in blogic_process_ccbs()
2693 for (i = 0; i < ccb->cdblen; i++) in blogic_process_ccbs()
2694 blogic_notice(" %02X", adapter, ccb->cdb[i]); in blogic_process_ccbs()
2697 for (i = 0; i < ccb->sense_datalen; i++) in blogic_process_ccbs()
2709 if (ccb->cdb[0] == INQUIRY && ccb->cdb[1] == 0 && in blogic_process_ccbs()
2710 ccb->adapter_status == BLOGIC_CMD_CMPLT_NORMAL) { in blogic_process_ccbs()
2712 &adapter->tgt_flags[ccb->tgt_id]; in blogic_process_ccbs()
2722 blogic_dealloc_ccb(ccb, 1); in blogic_process_ccbs()
2825 enum blogic_action action, struct blogic_ccb *ccb) in blogic_write_outbox() argument
2831 ccb->status = BLOGIC_CCB_ACTIVE; in blogic_write_outbox()
2838 next_outbox->ccb = ccb->dma_handle; in blogic_write_outbox()
2845 adapter->active_cmds[ccb->tgt_id]++; in blogic_write_outbox()
2846 if (ccb->opcode != BLOGIC_BDR) in blogic_write_outbox()
2847 adapter->tgt_stats[ccb->tgt_id].cmds_tried++; in blogic_write_outbox()
2893 struct blogic_ccb *ccb; in blogic_qcmd_lck() local
2914 ccb = blogic_alloc_ccb(adapter); in blogic_qcmd_lck()
2915 if (ccb == NULL) { in blogic_qcmd_lck()
2919 ccb = blogic_alloc_ccb(adapter); in blogic_qcmd_lck()
2920 if (ccb == NULL) { in blogic_qcmd_lck()
2936 ccb->opcode = BLOGIC_INITIATOR_CCB_SG; in blogic_qcmd_lck()
2937 ccb->datalen = count * sizeof(struct blogic_sg_seg); in blogic_qcmd_lck()
2939 ccb->data = (unsigned int) ccb->dma_handle + in blogic_qcmd_lck()
2940 ((unsigned long) &ccb->sglist - in blogic_qcmd_lck()
2941 (unsigned long) ccb); in blogic_qcmd_lck()
2943 ccb->data = virt_to_32bit_virt(ccb->sglist); in blogic_qcmd_lck()
2946 ccb->sglist[i].segbytes = sg_dma_len(sg); in blogic_qcmd_lck()
2947 ccb->sglist[i].segdata = sg_dma_address(sg); in blogic_qcmd_lck()
2950 ccb->opcode = BLOGIC_INITIATOR_CCB; in blogic_qcmd_lck()
2951 ccb->datalen = buflen; in blogic_qcmd_lck()
2952 ccb->data = 0; in blogic_qcmd_lck()
2958 ccb->datadir = BLOGIC_DATAIN_CHECKED; in blogic_qcmd_lck()
2965 ccb->datadir = BLOGIC_DATAOUT_CHECKED; in blogic_qcmd_lck()
2971 ccb->datadir = BLOGIC_UNCHECKED_TX; in blogic_qcmd_lck()
2974 ccb->cdblen = cdblen; in blogic_qcmd_lck()
2975 ccb->adapter_status = 0; in blogic_qcmd_lck()
2976 ccb->tgt_status = 0; in blogic_qcmd_lck()
2977 ccb->tgt_id = tgt_id; in blogic_qcmd_lck()
2978 ccb->lun = lun; in blogic_qcmd_lck()
2979 ccb->tag_enable = false; in blogic_qcmd_lck()
2980 ccb->legacytag_enable = false; in blogic_qcmd_lck()
3031 ccb->tag_enable = true; in blogic_qcmd_lck()
3032 ccb->queuetag = queuetag; in blogic_qcmd_lck()
3034 ccb->legacytag_enable = true; in blogic_qcmd_lck()
3035 ccb->legacy_tag = queuetag; in blogic_qcmd_lck()
3038 memcpy(ccb->cdb, cdb, cdblen); in blogic_qcmd_lck()
3039 ccb->sense_datalen = SCSI_SENSE_BUFFERSIZE; in blogic_qcmd_lck()
3040 ccb->command = command; in blogic_qcmd_lck()
3042 command->sense_buffer, ccb->sense_datalen, in blogic_qcmd_lck()
3047 blogic_dealloc_ccb(ccb, 0); in blogic_qcmd_lck()
3050 ccb->sensedata = sense_buf; in blogic_qcmd_lck()
3062 if (!blogic_write_outbox(adapter, BLOGIC_MBOX_START, ccb)) { in blogic_qcmd_lck()
3068 ccb)) { in blogic_qcmd_lck()
3070 blogic_dealloc_ccb(ccb, 1); in blogic_qcmd_lck()
3080 ccb->status = BLOGIC_CCB_ACTIVE; in blogic_qcmd_lck()
3083 FlashPoint_StartCCB(adapter->cardhandle, ccb); in blogic_qcmd_lck()
3089 if (ccb->status == BLOGIC_CCB_COMPLETE) in blogic_qcmd_lck()
3108 struct blogic_ccb *ccb; in DEF_SCSI_QCMD()
3115 for (ccb = adapter->all_ccbs; ccb != NULL; ccb = ccb->next_all) in DEF_SCSI_QCMD()
3116 if (ccb->command == command) in DEF_SCSI_QCMD()
3118 if (ccb == NULL) { in DEF_SCSI_QCMD()
3121 } else if (ccb->status == BLOGIC_CCB_COMPLETE) { in DEF_SCSI_QCMD()
3124 } else if (ccb->status == BLOGIC_CCB_RESET) { in DEF_SCSI_QCMD()
3143 …blogic_warn("Unable to Abort CCB #%ld to Target %d - Abort Tag Not Supported\n", adapter, ccb->ser… in DEF_SCSI_QCMD()
3146 ccb)) { in DEF_SCSI_QCMD()
3148 adapter, ccb->serial, tgt_id); in DEF_SCSI_QCMD()
3152 …blogic_warn("Unable to Abort CCB #%ld to Target %d - No Outgoing Mailboxes\n", adapter, ccb->seria… in DEF_SCSI_QCMD()
3161 ccb->serial, tgt_id); in DEF_SCSI_QCMD()
3163 FlashPoint_AbortCCB(adapter->cardhandle, ccb); in DEF_SCSI_QCMD()
3169 if (ccb->status == BLOGIC_CCB_COMPLETE) in DEF_SCSI_QCMD()
3184 struct blogic_ccb *ccb; local
3202 for (ccb = adapter->all_ccbs; ccb != NULL; ccb = ccb->next_all)
3203 if (ccb->status == BLOGIC_CCB_ACTIVE)
3204 blogic_dealloc_ccb(ccb, 1);