Lines Matching refs:ccb

107 static void arcmsr_ccb_complete(struct CCB *ccb, int flag);
120 static void arcmsr_free_ccb(struct CCB *ccb);
122 static void arcmsr_report_sense_info(struct CCB *ccb);
131 static int arcmsr_post_ccb(struct ACB *acb, struct CCB *ccb);
151 static void arcmsr_build_ccb(struct CCB *ccb);
947 struct CCB *ccb; in arcmsr_tran_init_pkt() local
961 ccb = arcmsr_get_freeccb(acb); in arcmsr_tran_init_pkt()
962 if (ccb == (struct CCB *)NULL) { in arcmsr_tran_init_pkt()
973 arcmsr_free_ccb(ccb); in arcmsr_tran_init_pkt()
977 ccb->pkt = pkt; in arcmsr_tran_init_pkt()
978 ccb->pkt_dma_handle = NULL; in arcmsr_tran_init_pkt()
980 ccb->pkt_ncookies = 0; in arcmsr_tran_init_pkt()
982 ccb->pkt_cookie = 0; in arcmsr_tran_init_pkt()
984 ccb->pkt_nwin = 0; in arcmsr_tran_init_pkt()
986 ccb->pkt_curwin = 0; in arcmsr_tran_init_pkt()
987 ccb->pkt_dma_len = 0; in arcmsr_tran_init_pkt()
988 ccb->pkt_dma_offset = 0; in arcmsr_tran_init_pkt()
989 ccb->resid_dmacookie.dmac_size = 0; in arcmsr_tran_init_pkt()
995 ccb->bp = bp; in arcmsr_tran_init_pkt()
998 arcmsr_cdb = &ccb->arcmsr_cdb; in arcmsr_tran_init_pkt()
1008 pkt->pkt_ha_private = ccb; in arcmsr_tran_init_pkt()
1018 ccb = pkt->pkt_ha_private; in arcmsr_tran_init_pkt()
1019 if (ccb->ccb_state & ARCMSR_ABNORMAL_MASK) { in arcmsr_tran_init_pkt()
1020 if (!(ccb->ccb_state & ARCMSR_CCB_BACK)) { in arcmsr_tran_init_pkt()
1029 ccb->ccb_state = ARCMSR_CCB_UNBUILD; in arcmsr_tran_init_pkt()
1051 if (ccb->pkt_dma_handle == NULL) { in arcmsr_tran_init_pkt()
1064 arcmsr_free_ccb(ccb); in arcmsr_tran_init_pkt()
1098 struct CCB *ccb; in arcmsr_tran_start() local
1103 ccb = pkt->pkt_ha_private; in arcmsr_tran_start()
1106 if ((ccb->ccb_flags & CCB_FLAG_DMAVALID) && in arcmsr_tran_start()
1107 (ccb->ccb_flags & DDI_DMA_CONSISTENT)) in arcmsr_tran_start()
1108 (void) ddi_dma_sync(ccb->pkt_dma_handle, 0, 0, in arcmsr_tran_start()
1111 if (ccb->ccb_state == ARCMSR_CCB_UNBUILD) in arcmsr_tran_start()
1112 arcmsr_build_ccb(ccb); in arcmsr_tran_start()
1119 if ((ccb->ccb_flags & CCB_FLAG_DMACONSISTENT) && in arcmsr_tran_start()
1121 (void) ddi_dma_sync(ccb->pkt_dma_handle, in arcmsr_tran_start()
1131 struct buf *bp = ccb->bp; in arcmsr_tran_start()
1137 ccb->pkt->pkt_reason = CMD_TIMEOUT; in arcmsr_tran_start()
1138 ccb->pkt->pkt_statistics |= STAT_TIMEOUT; in arcmsr_tran_start()
1139 arcmsr_ccb_complete(ccb, 0); in arcmsr_tran_start()
1173 ccb->pkt->pkt_state |= STATE_XFERRED_DATA; in arcmsr_tran_start()
1175 arcmsr_ccb_complete(ccb, 0); in arcmsr_tran_start()
1182 ccb->pkt->pkt_reason = CMD_TRAN_ERR; in arcmsr_tran_start()
1183 ccb->pkt->pkt_statistics |= STAT_TERMINATED; in arcmsr_tran_start()
1185 ccb->pkt->pkt_state |= STATE_XFERRED_DATA; in arcmsr_tran_start()
1186 arcmsr_ccb_complete(ccb, 0); in arcmsr_tran_start()
1190 ccb->pkt->pkt_state |= STATE_XFERRED_DATA; in arcmsr_tran_start()
1191 arcmsr_ccb_complete(ccb, 0); in arcmsr_tran_start()
1205 if ((ccb->ccb_flags & CCB_FLAG_DMACONSISTENT) && in arcmsr_tran_start()
1207 (void) ddi_dma_sync(ccb->pkt_dma_handle, in arcmsr_tran_start()
1208 ccb->pkt_dma_offset, in arcmsr_tran_start()
1209 ccb->pkt_dma_len, DDI_DMA_SYNC_FORCPU); in arcmsr_tran_start()
1217 ccb->ccb_state = ARCMSR_CCB_RETRY; in arcmsr_tran_start()
1220 } else if (arcmsr_post_ccb(acb, ccb) == DDI_FAILURE) { in arcmsr_tran_start()
1242 struct CCB *ccb = pkt->pkt_ha_private; in arcmsr_tran_destroy_pkt() local
1243 ddi_dma_handle_t pkt_dma_handle = ccb->pkt_dma_handle; in arcmsr_tran_destroy_pkt()
1245 if (ccb == NULL) { in arcmsr_tran_destroy_pkt()
1248 if (ccb->pkt != pkt) { in arcmsr_tran_destroy_pkt()
1251 if (ccb->ccb_flags & CCB_FLAG_DMAVALID) { in arcmsr_tran_destroy_pkt()
1252 ccb->ccb_flags &= ~CCB_FLAG_DMAVALID; in arcmsr_tran_destroy_pkt()
1254 (void) ddi_dma_unbind_handle(ccb->pkt_dma_handle); in arcmsr_tran_destroy_pkt()
1261 if (ccb) { in arcmsr_tran_destroy_pkt()
1262 if (ccb->ccb_state & ARCMSR_ABNORMAL_MASK) { in arcmsr_tran_destroy_pkt()
1263 if (ccb->ccb_state & ARCMSR_CCB_BACK) { in arcmsr_tran_destroy_pkt()
1264 arcmsr_free_ccb(ccb); in arcmsr_tran_destroy_pkt()
1266 ccb->ccb_state |= ARCMSR_CCB_WAIT4_FREE; in arcmsr_tran_destroy_pkt()
1269 arcmsr_free_ccb(ccb); in arcmsr_tran_destroy_pkt()
1285 struct CCB *ccb = pkt->pkt_ha_private; in arcmsr_tran_dmafree() local
1287 if ((ccb == NULL) || (ccb->pkt != pkt)) { in arcmsr_tran_dmafree()
1290 if (ccb->ccb_flags & CCB_FLAG_DMAVALID) { in arcmsr_tran_dmafree()
1291 ccb->ccb_flags &= ~CCB_FLAG_DMAVALID; in arcmsr_tran_dmafree()
1292 if (ddi_dma_unbind_handle(ccb->pkt_dma_handle) != DDI_SUCCESS) { in arcmsr_tran_dmafree()
1293 arcmsr_warn(ccb->acb, "ddi_dma_unbind_handle() failed " in arcmsr_tran_dmafree()
1296 ddi_dma_free_handle(&ccb->pkt_dma_handle); in arcmsr_tran_dmafree()
1297 ccb->pkt_dma_handle = NULL; in arcmsr_tran_dmafree()
1311 struct CCB *ccb; in arcmsr_tran_sync_pkt() local
1313 ccb = pkt->pkt_ha_private; in arcmsr_tran_sync_pkt()
1314 if ((ccb == NULL) || (ccb->pkt != pkt)) { in arcmsr_tran_sync_pkt()
1317 if (ccb->ccb_flags & CCB_FLAG_DMAVALID) { in arcmsr_tran_sync_pkt()
1318 if (ddi_dma_sync(ccb->pkt_dma_handle, 0, 0, in arcmsr_tran_sync_pkt()
1319 (ccb->ccb_flags & CCB_FLAG_DMAWRITE) ? in arcmsr_tran_sync_pkt()
1322 arcmsr_warn(ccb->acb, in arcmsr_tran_sync_pkt()
1467 struct CCB *ccb = pkt->pkt_ha_private; in arcmsr_dma_alloc() local
1480 ccb->ccb_flags &= ~CCB_FLAG_DMAWRITE; in arcmsr_dma_alloc()
1483 ccb->ccb_flags |= CCB_FLAG_DMAWRITE; in arcmsr_dma_alloc()
1488 ccb->ccb_flags |= CCB_FLAG_DMACONSISTENT; in arcmsr_dma_alloc()
1499 cb, 0, &ccb->pkt_dma_handle); in arcmsr_dma_alloc()
1505 map_method = ddi_dma_buf_bind_handle(ccb->pkt_dma_handle, in arcmsr_dma_alloc()
1507 &ccb->pkt_dmacookies[0], /* SG List pointer */ in arcmsr_dma_alloc()
1508 &ccb->pkt_ncookies); /* number of sgl cookies */ in arcmsr_dma_alloc()
1525 if (ddi_dma_numwin(ccb->pkt_dma_handle, &ccb->pkt_nwin) == in arcmsr_dma_alloc()
1530 if (ddi_dma_getwin(ccb->pkt_dma_handle, ccb->pkt_curwin, in arcmsr_dma_alloc()
1531 &ccb->pkt_dma_offset, &ccb->pkt_dma_len, in arcmsr_dma_alloc()
1532 &ccb->pkt_dmacookies[0], &ccb->pkt_ncookies) == in arcmsr_dma_alloc()
1539 total_ccb_xferlen = ccb->pkt_dmacookies[0].dmac_size; in arcmsr_dma_alloc()
1543 (i == ccb->pkt_ncookies) || in arcmsr_dma_alloc()
1551 ddi_dma_nextcookie(ccb->pkt_dma_handle, in arcmsr_dma_alloc()
1552 &ccb->pkt_dmacookies[i]); in arcmsr_dma_alloc()
1553 total_ccb_xferlen += ccb->pkt_dmacookies[i].dmac_size; in arcmsr_dma_alloc()
1555 ccb->pkt_cookie = i; in arcmsr_dma_alloc()
1556 ccb->arcmsr_cdb.sgcount = i; in arcmsr_dma_alloc()
1563 ccb->pkt_dmacookies[i].dmac_size = in arcmsr_dma_alloc()
1564 ccb->pkt_dmacookies[i].dmac_size - resid; in arcmsr_dma_alloc()
1565 ccb->resid_dmacookie.dmac_size = resid; in arcmsr_dma_alloc()
1566 ccb->resid_dmacookie.dmac_laddress = in arcmsr_dma_alloc()
1567 ccb->pkt_dmacookies[i].dmac_laddress + in arcmsr_dma_alloc()
1568 ccb->pkt_dmacookies[i].dmac_size; in arcmsr_dma_alloc()
1571 ccb->total_dmac_size = total_ccb_xferlen; in arcmsr_dma_alloc()
1572 ccb->ccb_flags |= CCB_FLAG_DMAVALID; in arcmsr_dma_alloc()
1573 pkt->pkt_resid = bp->b_bcount - ccb->total_dmac_size; in arcmsr_dma_alloc()
1578 ccb->pkt_nwin = 1; /* all mapped, so only one window */ in arcmsr_dma_alloc()
1579 ccb->pkt_dma_len = 0; in arcmsr_dma_alloc()
1580 ccb->pkt_dma_offset = 0; in arcmsr_dma_alloc()
1583 total_ccb_xferlen = ccb->pkt_dmacookies[0].dmac_size; in arcmsr_dma_alloc()
1587 (i == ccb->pkt_ncookies) || in arcmsr_dma_alloc()
1595 ddi_dma_nextcookie(ccb->pkt_dma_handle, in arcmsr_dma_alloc()
1596 &ccb->pkt_dmacookies[i]); in arcmsr_dma_alloc()
1597 total_ccb_xferlen += ccb->pkt_dmacookies[i].dmac_size; in arcmsr_dma_alloc()
1599 ccb->pkt_cookie = i; in arcmsr_dma_alloc()
1600 ccb->arcmsr_cdb.sgcount = i; in arcmsr_dma_alloc()
1607 ccb->pkt_dmacookies[i].dmac_size = in arcmsr_dma_alloc()
1608 ccb->pkt_dmacookies[i].dmac_size - resid; in arcmsr_dma_alloc()
1609 ccb->resid_dmacookie.dmac_size = resid; in arcmsr_dma_alloc()
1610 ccb->resid_dmacookie.dmac_laddress = in arcmsr_dma_alloc()
1611 ccb->pkt_dmacookies[i].dmac_laddress + in arcmsr_dma_alloc()
1612 ccb->pkt_dmacookies[i].dmac_size; in arcmsr_dma_alloc()
1615 ccb->total_dmac_size = total_ccb_xferlen; in arcmsr_dma_alloc()
1616 ccb->ccb_flags |= CCB_FLAG_DMAVALID; in arcmsr_dma_alloc()
1617 pkt->pkt_resid = bp->b_bcount - ccb->total_dmac_size; in arcmsr_dma_alloc()
1644 ddi_dma_free_handle(&ccb->pkt_dma_handle); in arcmsr_dma_alloc()
1645 ccb->pkt_dma_handle = NULL; in arcmsr_dma_alloc()
1646 ccb->ccb_flags &= ~CCB_FLAG_DMAVALID; in arcmsr_dma_alloc()
1660 struct CCB *ccb = pkt->pkt_ha_private; in arcmsr_dma_move() local
1665 if (ccb->resid_dmacookie.dmac_size != 0) { in arcmsr_dma_move()
1666 total_ccb_xferlen += ccb->resid_dmacookie.dmac_size; in arcmsr_dma_move()
1667 ccb->pkt_dmacookies[i].dmac_size = in arcmsr_dma_move()
1668 ccb->resid_dmacookie.dmac_size; in arcmsr_dma_move()
1669 ccb->pkt_dmacookies[i].dmac_laddress = in arcmsr_dma_move()
1670 ccb->resid_dmacookie.dmac_laddress; in arcmsr_dma_move()
1672 ccb->resid_dmacookie.dmac_size = 0; in arcmsr_dma_move()
1678 if (ccb->pkt_cookie == ccb->pkt_ncookies) { in arcmsr_dma_move()
1682 if ((ccb->pkt_curwin == ccb->pkt_nwin) && in arcmsr_dma_move()
1683 (ccb->pkt_nwin == 1)) { in arcmsr_dma_move()
1688 if (++ccb->pkt_curwin >= ccb->pkt_nwin) { in arcmsr_dma_move()
1692 if (ddi_dma_getwin(ccb->pkt_dma_handle, ccb->pkt_curwin, in arcmsr_dma_move()
1693 &ccb->pkt_dma_offset, &ccb->pkt_dma_len, in arcmsr_dma_move()
1694 &ccb->pkt_dmacookies[i], &ccb->pkt_ncookies) == in arcmsr_dma_move()
1700 ccb->pkt_cookie = 0; in arcmsr_dma_move()
1709 ddi_dma_nextcookie(ccb->pkt_dma_handle, in arcmsr_dma_move()
1710 &ccb->pkt_dmacookies[i]); in arcmsr_dma_move()
1714 total_ccb_xferlen += ccb->pkt_dmacookies[i].dmac_size; in arcmsr_dma_move()
1720 ccb->pkt_cookie++; in arcmsr_dma_move()
1722 (ccb->pkt_cookie == ccb->pkt_ncookies) || in arcmsr_dma_move()
1726 ddi_dma_nextcookie(ccb->pkt_dma_handle, in arcmsr_dma_move()
1727 &ccb->pkt_dmacookies[i]); in arcmsr_dma_move()
1728 total_ccb_xferlen += ccb->pkt_dmacookies[i].dmac_size; in arcmsr_dma_move()
1731 ccb->arcmsr_cdb.sgcount = i; in arcmsr_dma_move()
1738 ccb->pkt_dmacookies[i].dmac_size = in arcmsr_dma_move()
1739 ccb->pkt_dmacookies[i].dmac_size - resid; in arcmsr_dma_move()
1740 ccb->resid_dmacookie.dmac_size = resid; in arcmsr_dma_move()
1741 ccb->resid_dmacookie.dmac_laddress = in arcmsr_dma_move()
1742 ccb->pkt_dmacookies[i].dmac_laddress + in arcmsr_dma_move()
1743 ccb->pkt_dmacookies[i].dmac_size; in arcmsr_dma_move()
1746 ccb->total_dmac_size += total_ccb_xferlen; in arcmsr_dma_move()
1747 pkt->pkt_resid = bp->b_bcount - ccb->total_dmac_size; in arcmsr_dma_move()
1755 arcmsr_build_ccb(struct CCB *ccb) in arcmsr_build_ccb() argument
1757 struct scsi_pkt *pkt = ccb->pkt; in arcmsr_build_ccb()
1764 arcmsr_cdb = (struct ARCMSR_CDB *)&ccb->arcmsr_cdb; in arcmsr_build_ccb()
1768 sgcount = ccb->arcmsr_cdb.sgcount; in arcmsr_build_ccb()
1778 length = ccb->pkt_dmacookies[i].dmac_size; in arcmsr_build_ccb()
1781 dma_addr_lo32(ccb->pkt_dmacookies[i].dmac_laddress); in arcmsr_build_ccb()
1783 dma_addr_hi32(ccb->pkt_dmacookies[i].dmac_laddress); in arcmsr_build_ccb()
1814 if (ccb->ccb_flags & CCB_FLAG_DMAWRITE) in arcmsr_build_ccb()
1816 ccb->arc_cdb_size = arccdbsize; in arcmsr_build_ccb()
1830 arcmsr_post_ccb(struct ACB *acb, struct CCB *ccb) in arcmsr_post_ccb() argument
1832 uint32_t cdb_phyaddr_pattern = ccb->cdb_phyaddr_pattern; in arcmsr_post_ccb()
1833 struct scsi_pkt *pkt = ccb->pkt; in arcmsr_post_ccb()
1837 arcmsr_cdb = &ccb->arcmsr_cdb; in arcmsr_post_ccb()
1845 ccb->ccb_time = (time_t)(ddi_get_time() + pkt->pkt_time); in arcmsr_post_ccb()
1847 ccb->ccb_state = ARCMSR_CCB_START; in arcmsr_post_ccb()
1864 arcmsr_polling_hba_ccbdone(acb, ccb); in arcmsr_post_ccb()
1892 arcmsr_polling_hbb_ccbdone(acb, ccb); in arcmsr_post_ccb()
1902 arc_cdb_size = (ccb->arc_cdb_size > 0x300) ? 0x300 : in arcmsr_post_ccb()
1903 ccb->arc_cdb_size; in arcmsr_post_ccb()
1917 arcmsr_polling_hbc_ccbdone(acb, ccb); in arcmsr_post_ccb()
1927 arcmsr_ccb_complete(struct CCB *ccb, int flag) in arcmsr_ccb_complete() argument
1929 struct ACB *acb = ccb->acb; in arcmsr_ccb_complete()
1930 struct scsi_pkt *pkt = ccb->pkt; in arcmsr_ccb_complete()
1935 ccb->ccb_state |= ARCMSR_CCB_DONE; in arcmsr_ccb_complete()
1939 if ((ccb->ccb_flags & CCB_FLAG_DMACONSISTENT) && in arcmsr_ccb_complete()
1941 (void) ddi_dma_sync(ccb->pkt_dma_handle, 0, 0, in arcmsr_ccb_complete()
1962 arcmsr_report_ccb_state(struct ACB *acb, struct CCB *ccb, boolean_t error) in arcmsr_report_ccb_state() argument
1966 ccb->ccb_state |= ARCMSR_CCB_DONE; in arcmsr_report_ccb_state()
1967 id = ccb->pkt->pkt_address.a_target; in arcmsr_report_ccb_state()
1968 lun = ccb->pkt->pkt_address.a_lun; in arcmsr_report_ccb_state()
1974 ccb->pkt->pkt_reason = CMD_CMPLT; in arcmsr_report_ccb_state()
1975 ccb->pkt->pkt_state |= STATE_XFERRED_DATA; in arcmsr_report_ccb_state()
1977 &ccb->complete_queue_pointer, &acb->ccb_complete_list); in arcmsr_report_ccb_state()
1980 switch (ccb->arcmsr_cdb.DeviceStatus) { in arcmsr_report_ccb_state()
1988 ccb->pkt->pkt_reason = CMD_TIMEOUT; /* CMD_DEV_GONE; */ in arcmsr_report_ccb_state()
1989 ccb->pkt->pkt_statistics |= STAT_TIMEOUT; in arcmsr_report_ccb_state()
1991 &ccb->complete_queue_pointer, in arcmsr_report_ccb_state()
2000 ccb->pkt->pkt_reason = CMD_DEV_GONE; in arcmsr_report_ccb_state()
2001 ccb->pkt->pkt_statistics |= STAT_TERMINATED; in arcmsr_report_ccb_state()
2003 &ccb->complete_queue_pointer, in arcmsr_report_ccb_state()
2008 arcmsr_report_sense_info(ccb); in arcmsr_report_ccb_state()
2010 &ccb->complete_queue_pointer, in arcmsr_report_ccb_state()
2017 id, lun, ccb->arcmsr_cdb.DeviceStatus); in arcmsr_report_ccb_state()
2021 ccb->pkt->pkt_reason = CMD_TRAN_ERR; in arcmsr_report_ccb_state()
2022 ccb->pkt->pkt_statistics |= STAT_TERMINATED; in arcmsr_report_ccb_state()
2024 &ccb->complete_queue_pointer, in arcmsr_report_ccb_state()
2033 arcmsr_drain_donequeue(struct ACB *acb, struct CCB *ccb, boolean_t error) in arcmsr_drain_donequeue() argument
2037 if (ccb->acb != acb) { in arcmsr_drain_donequeue()
2040 if (ccb->ccb_state != ARCMSR_CCB_START) { in arcmsr_drain_donequeue()
2041 switch (ccb->ccb_state & ARCMSR_ABNORMAL_MASK) { in arcmsr_drain_donequeue()
2043 ccb_state = ccb->ccb_state; in arcmsr_drain_donequeue()
2045 arcmsr_free_ccb(ccb); in arcmsr_drain_donequeue()
2047 ccb->ccb_state |= ARCMSR_CCB_BACK; in arcmsr_drain_donequeue()
2051 ccb_state = ccb->ccb_state; in arcmsr_drain_donequeue()
2053 arcmsr_free_ccb(ccb); in arcmsr_drain_donequeue()
2055 ccb->ccb_state |= ARCMSR_CCB_BACK; in arcmsr_drain_donequeue()
2058 ccb_state = ccb->ccb_state; in arcmsr_drain_donequeue()
2060 arcmsr_free_ccb(ccb); in arcmsr_drain_donequeue()
2062 ccb->ccb_state |= ARCMSR_CCB_BACK; in arcmsr_drain_donequeue()
2068 arcmsr_report_ccb_state(acb, ccb, error); in arcmsr_drain_donequeue()
2072 arcmsr_report_sense_info(struct CCB *ccb) in arcmsr_report_sense_info() argument
2075 struct scsi_pkt *pkt = ccb->pkt; in arcmsr_report_sense_info()
2081 err_blkno = ARCMSR_GETGXADDR(ccb->arcmsr_cdb.CdbLength, cdbp); in arcmsr_report_sense_info()
2096 cdb_sensedata = (struct SENSE_DATA *)ccb->arcmsr_cdb.SenseData; in arcmsr_report_sense_info()
2163 struct CCB *ccb; in arcmsr_seek_cmd2abort() local
2192 ccb = acb->pccb_pool[i]; in arcmsr_seek_cmd2abort()
2193 if (ccb->ccb_state == ARCMSR_CCB_START) { in arcmsr_seek_cmd2abort()
2199 ccb->pkt->pkt_reason = CMD_ABORTED; in arcmsr_seek_cmd2abort()
2200 ccb->pkt->pkt_statistics |= STAT_ABORTED; in arcmsr_seek_cmd2abort()
2201 arcmsr_ccb_complete(ccb, 1); in arcmsr_seek_cmd2abort()
3082 struct CCB *ccb; in arcmsr_get_complete_ccb_from_list() local
3090 ccb = (void *)((caddr_t)(first_complete_ccb_list) - in arcmsr_get_complete_ccb_from_list()
3092 return (ccb); in arcmsr_get_complete_ccb_from_list()
3098 struct CCB *ccb; in arcmsr_get_freeccb() local
3104 ccb = acb->ccbworkingQ[ccb_get_index]; in arcmsr_get_freeccb()
3110 arcmsr_init_list_head(&ccb->complete_queue_pointer); in arcmsr_get_freeccb()
3111 ccb->ccb_state = ARCMSR_CCB_UNBUILD; in arcmsr_get_freeccb()
3113 ccb = NULL; in arcmsr_get_freeccb()
3116 return (ccb); in arcmsr_get_freeccb()
3121 arcmsr_free_ccb(struct CCB *ccb) in arcmsr_free_ccb() argument
3123 struct ACB *acb = ccb->acb; in arcmsr_free_ccb()
3125 if (ccb->ccb_state == ARCMSR_CCB_FREE) { in arcmsr_free_ccb()
3129 ccb->ccb_state = ARCMSR_CCB_FREE; in arcmsr_free_ccb()
3130 ccb->pkt = NULL; in arcmsr_free_ccb()
3131 ccb->pkt_dma_handle = NULL; in arcmsr_free_ccb()
3132 ccb->ccb_flags = 0; in arcmsr_free_ccb()
3133 acb->ccbworkingQ[acb->ccb_put_index] = ccb; in arcmsr_free_ccb()
3146 struct CCB *ccb; in arcmsr_ccbs_timeout() local
3171 ccb = acb->pccb_pool[i]; in arcmsr_ccbs_timeout()
3172 if (ccb->acb != acb) { in arcmsr_ccbs_timeout()
3175 if (ccb->ccb_state == ARCMSR_CCB_FREE) { in arcmsr_ccbs_timeout()
3178 if (ccb->pkt == NULL) { in arcmsr_ccbs_timeout()
3181 if (ccb->pkt->pkt_time == 0) { in arcmsr_ccbs_timeout()
3184 if (ccb->ccb_time >= current_time) { in arcmsr_ccbs_timeout()
3187 int id = ccb->pkt->pkt_address.a_target; in arcmsr_ccbs_timeout()
3188 int lun = ccb->pkt->pkt_address.a_lun; in arcmsr_ccbs_timeout()
3189 if (ccb->ccb_state == ARCMSR_CCB_START) { in arcmsr_ccbs_timeout()
3190 uint8_t *cdb = (uint8_t *)&ccb->arcmsr_cdb.Cdb; in arcmsr_ccbs_timeout()
3196 instance, id, lun, *cdb, (void *)ccb); in arcmsr_ccbs_timeout()
3197 ccb->ccb_state = ARCMSR_CCB_TIMEOUT; in arcmsr_ccbs_timeout()
3198 ccb->pkt->pkt_reason = CMD_TIMEOUT; in arcmsr_ccbs_timeout()
3199 ccb->pkt->pkt_statistics = STAT_TIMEOUT; in arcmsr_ccbs_timeout()
3201 arcmsr_ccb_complete(ccb, 1); in arcmsr_ccbs_timeout()
3203 } else if ((ccb->ccb_state & ARCMSR_CCB_CAN_BE_FREE) == in arcmsr_ccbs_timeout()
3205 arcmsr_free_ccb(ccb); in arcmsr_ccbs_timeout()
3222 struct CCB *ccb; in arcmsr_abort_dr_ccbs() local
3229 ccb = acb->pccb_pool[i]; in arcmsr_abort_dr_ccbs()
3230 if (ccb->ccb_state == ARCMSR_CCB_START) { in arcmsr_abort_dr_ccbs()
3231 if ((target == ccb->pkt->pkt_address.a_target) && in arcmsr_abort_dr_ccbs()
3232 (lun == ccb->pkt->pkt_address.a_lun)) { in arcmsr_abort_dr_ccbs()
3233 ccb->ccb_state = ARCMSR_CCB_ABORTED; in arcmsr_abort_dr_ccbs()
3234 ccb->pkt->pkt_reason = CMD_ABORTED; in arcmsr_abort_dr_ccbs()
3235 ccb->pkt->pkt_statistics |= STAT_ABORTED; in arcmsr_abort_dr_ccbs()
3236 arcmsr_ccb_complete(ccb, 1); in arcmsr_abort_dr_ccbs()
3821 struct CCB *ccb; in arcmsr_done4abort_postqueue() local
3844 ccb = NumToPtr((acb->vir2phy_offset + (flag_ccb << 5))); in arcmsr_done4abort_postqueue()
3848 arcmsr_drain_donequeue(acb, ccb, error); in arcmsr_done4abort_postqueue()
3867 ccb = NumToPtr((acb->vir2phy_offset + in arcmsr_done4abort_postqueue()
3874 arcmsr_drain_donequeue(acb, ccb, error); in arcmsr_done4abort_postqueue()
3898 ccb = NumToPtr((acb->vir2phy_offset + ccb_cdb_phy)); in arcmsr_done4abort_postqueue()
3901 arcmsr_drain_donequeue(acb, ccb, error); in arcmsr_done4abort_postqueue()
3947 struct CCB *ccb; in arcmsr_iop_reset() local
3962 ccb = acb->pccb_pool[i]; in arcmsr_iop_reset()
3963 if (ccb->ccb_state == ARCMSR_CCB_START) { in arcmsr_iop_reset()
3965 ccb->pkt->pkt_reason = CMD_RESET; in arcmsr_iop_reset()
3966 ccb->pkt->pkt_statistics |= STAT_BUS_RESET; in arcmsr_iop_reset()
3967 arcmsr_ccb_complete(ccb, 1); in arcmsr_iop_reset()
4245 struct CCB *ccb = pkt->pkt_ha_private; in arcmsr_iop_message_xfer() local
4246 struct buf *bp = ccb->bp; in arcmsr_iop_message_xfer()
4511 struct CCB *ccb; in arcmsr_pcidev_disattach() local
4542 ccb = acb->pccb_pool[i]; in arcmsr_pcidev_disattach()
4543 if (ccb->ccb_state == ARCMSR_CCB_START) { in arcmsr_pcidev_disattach()
4545 ccb->pkt->pkt_reason = CMD_ABORTED; in arcmsr_pcidev_disattach()
4546 ccb->pkt->pkt_statistics |= STAT_ABORTED; in arcmsr_pcidev_disattach()
4547 arcmsr_ccb_complete(ccb, 1); in arcmsr_pcidev_disattach()
4853 struct CCB *ccb; in arcmsr_polling_hba_ccbdone() local
4896 ccb = NumToPtr((acb->vir2phy_offset + (flag_ccb << 5))); in arcmsr_polling_hba_ccbdone()
4902 poll_ccb_done = (ccb == poll_ccb) ? B_TRUE : B_FALSE; in arcmsr_polling_hba_ccbdone()
4904 if (ccb->acb != acb) { in arcmsr_polling_hba_ccbdone()
4908 if (ccb->ccb_state != ARCMSR_CCB_START) { in arcmsr_polling_hba_ccbdone()
4909 if (ccb->ccb_state & ARCMSR_ABNORMAL_MASK) { in arcmsr_polling_hba_ccbdone()
4910 ccb->ccb_state |= ARCMSR_CCB_BACK; in arcmsr_polling_hba_ccbdone()
4911 ccb->pkt->pkt_reason = CMD_ABORTED; in arcmsr_polling_hba_ccbdone()
4912 ccb->pkt->pkt_statistics |= STAT_ABORTED; in arcmsr_polling_hba_ccbdone()
4913 arcmsr_ccb_complete(ccb, 1); in arcmsr_polling_hba_ccbdone()
4916 arcmsr_report_ccb_state(acb, ccb, error); in arcmsr_polling_hba_ccbdone()
4921 arcmsr_report_ccb_state(acb, ccb, error); in arcmsr_polling_hba_ccbdone()
4931 struct CCB *ccb; in arcmsr_polling_hbb_ccbdone() local
4977 ccb = NumToPtr((acb->vir2phy_offset + (flag_ccb << 5))); in arcmsr_polling_hbb_ccbdone()
4984 poll_ccb_done = (ccb == poll_ccb) ? B_TRUE : B_FALSE; in arcmsr_polling_hbb_ccbdone()
4985 if (ccb->acb != acb) { in arcmsr_polling_hbb_ccbdone()
4989 if (ccb->ccb_state != ARCMSR_CCB_START) { in arcmsr_polling_hbb_ccbdone()
4990 if (ccb->ccb_state & ARCMSR_ABNORMAL_MASK) { in arcmsr_polling_hbb_ccbdone()
4991 ccb->ccb_state |= ARCMSR_CCB_BACK; in arcmsr_polling_hbb_ccbdone()
4992 ccb->pkt->pkt_reason = CMD_ABORTED; in arcmsr_polling_hbb_ccbdone()
4993 ccb->pkt->pkt_statistics |= STAT_ABORTED; in arcmsr_polling_hbb_ccbdone()
4994 arcmsr_ccb_complete(ccb, 1); in arcmsr_polling_hbb_ccbdone()
4997 arcmsr_report_ccb_state(acb, ccb, error); in arcmsr_polling_hbb_ccbdone()
5002 arcmsr_report_ccb_state(acb, ccb, error); in arcmsr_polling_hbb_ccbdone()
5013 struct CCB *ccb; in arcmsr_polling_hbc_ccbdone() local
5056 ccb = NumToPtr((acb->vir2phy_offset + ccb_cdb_phy)); in arcmsr_polling_hbc_ccbdone()
5062 poll_ccb_done = (ccb == poll_ccb) ? B_TRUE : B_FALSE; in arcmsr_polling_hbc_ccbdone()
5064 if (ccb->acb != acb) { in arcmsr_polling_hbc_ccbdone()
5068 if (ccb->ccb_state != ARCMSR_CCB_START) { in arcmsr_polling_hbc_ccbdone()
5069 if (ccb->ccb_state & ARCMSR_ABNORMAL_MASK) { in arcmsr_polling_hbc_ccbdone()
5070 ccb->ccb_state |= ARCMSR_CCB_BACK; in arcmsr_polling_hbc_ccbdone()
5071 ccb->pkt->pkt_reason = CMD_ABORTED; in arcmsr_polling_hbc_ccbdone()
5072 ccb->pkt->pkt_statistics |= STAT_ABORTED; in arcmsr_polling_hbc_ccbdone()
5073 arcmsr_ccb_complete(ccb, 1); in arcmsr_polling_hbc_ccbdone()
5076 arcmsr_report_ccb_state(acb, ccb, error); in arcmsr_polling_hbc_ccbdone()
5081 arcmsr_report_ccb_state(acb, ccb, error); in arcmsr_polling_hbc_ccbdone()
5392 struct CCB *ccb; in arcmsr_hba_postqueue_isr() local
5406 ccb = NumToPtr((acb->vir2phy_offset+(flag_ccb << 5))); in arcmsr_hba_postqueue_isr()
5410 arcmsr_drain_donequeue(acb, ccb, error); in arcmsr_hba_postqueue_isr()
5419 struct CCB *ccb; in arcmsr_hbb_postqueue_isr() local
5436 ccb = NumToPtr((acb->vir2phy_offset + (flag_ccb << 5))); in arcmsr_hbb_postqueue_isr()
5441 arcmsr_drain_donequeue(acb, ccb, error); in arcmsr_hbb_postqueue_isr()
5455 struct CCB *ccb; in arcmsr_hbc_postqueue_isr() local
5475 ccb = NumToPtr((acb->vir2phy_offset + ccb_cdb_phy)); in arcmsr_hbc_postqueue_isr()
5480 arcmsr_drain_donequeue(acb, ccb, error); in arcmsr_hbc_postqueue_isr()
5600 struct CCB *ccb; in arcmsr_intr_handler() local
5624 while ((ccb = arcmsr_get_complete_ccb_from_list(acb)) != NULL) { in arcmsr_intr_handler()
5625 arcmsr_ccb_complete(ccb, 1); in arcmsr_intr_handler()