Lines Matching defs:scsiq
1543 ASC_QDONE_INFO *scsiq;
1546 scsiq = (ASC_QDONE_INFO *) & scsiq_buf;
1554 sg_queue_cnt = _AscCopyLramScsiDoneQ(iot, ioh, q_addr, scsiq,
1557 (scsiq->q_status & ~(ASC_QS_READY | ASC_QS_ABORTED)));
1558 tid_no = ASC_TIX_TO_TID(scsiq->d2.target_ix);
1559 target_id = ASC_TIX_TO_TARGET_ID(scsiq->d2.target_ix);
1560 if ((scsiq->cntl & ASC_QC_SG_HEAD) != 0) {
1569 scsiq->d3.done_stat = ASC_QD_WITH_ERROR;
1570 scsiq->d3.host_stat = ASC_QHSTA_D_QDONE_SG_LIST_CORRUPTED;
1581 ASC_QADR_BEG + scsiq->d2.target_ix);
1597 scsiq->d3.done_stat = ASC_QD_WITH_ERROR;
1601 if ((adv_ccb_phys_kv(sc, scsiq->d2.ccb_ptr) == 0UL) ||
1602 ((scsiq->q_status & ASC_QS_ABORTED) != 0)) {
1604 } else if (scsiq->q_status == ASC_QS_DONE) {
1605 scsiq->remain_bytes += scsiq->extra_bytes;
1607 if (scsiq->d3.done_stat == ASC_QD_WITH_ERROR) {
1608 if (scsiq->d3.host_stat == ASC_QHSTA_M_DATA_OVER_RUN) {
1609 if ((scsiq->cntl & (ASC_QC_DATA_IN | ASC_QC_DATA_OUT)) == 0) {
1610 scsiq->d3.done_stat = ASC_QD_NO_ERROR;
1611 scsiq->d3.host_stat = ASC_QHSTA_NO_ERROR;
1613 } else if (scsiq->d3.host_stat == ASC_QHSTA_M_HUNG_REQ_SCSI_BUS_RESET) {
1623 (*sc->isr_callback)(sc, scsiq);
1628 panic("AscIsrQDone: completed scsiq with unknown status");
1810 u_int16_t q_addr, ASC_QDONE_INFO *scsiq, u_int32_t max_dma_count)
1815 AscGetQDoneInfo(iot, ioh, q_addr + ASC_SCSIQ_DONE_INFO_BEG, scsiq);
1818 scsiq->q_status = LO_BYTE(_val);
1819 scsiq->q_no = HI_BYTE(_val);
1821 scsiq->cntl = LO_BYTE(_val);
1824 scsiq->sense_len = LO_BYTE(_val);
1825 scsiq->extra_bytes = HI_BYTE(_val);
1826 scsiq->remain_bytes = AscReadLramWord(iot, ioh,
1828 scsiq->remain_bytes &= max_dma_count;
1836 u_int16_t addr, ASC_QDONE_INFO *scsiq)
1843 scsiq->d2.ccb_ptr = MAKELONG(val, ASC_GET_CHIP_LRAM_DATA(iot, ioh));
1845 scsiq->d2.target_ix = LO_BYTE(val);
1846 scsiq->d2.flag = HI_BYTE(val);
1848 scsiq->d2.cdb_len = LO_BYTE(val);
1849 scsiq->d2.tag_code = HI_BYTE(val);
1850 scsiq->d2.vm_id = ASC_GET_CHIP_LRAM_DATA(iot, ioh);
1853 scsiq->d3.done_stat = LO_BYTE(val);
1854 scsiq->d3.host_stat = HI_BYTE(val);
1856 scsiq->d3.scsi_stat = LO_BYTE(val);
1857 scsiq->d3.scsi_msg = HI_BYTE(val);
2248 AscExeScsiQueue(ASC_SOFTC *sc, ASC_SCSI_Q *scsiq)
2252 ASC_SG_HEAD *sg_head = scsiq->sg_head;
2268 scsiq->q1.q_no = 0;
2269 if ((scsiq->q2.tag_code & ASC_TAG_FLAG_EXTRA_BYTES) == 0)
2270 scsiq
2273 target_ix = scsiq->q2.target_ix;
2277 if (scsiq->cdbptr[0] == SCSICMD_RequestSense)
2278 if ((sc->init_sdtr & scsiq->q1.target_id) != 0) {
2279 sc->sdtr_done &= ~scsiq->q1.target_id;
2284 scsiq->q1.cntl |= (ASC_QC_MSG_OUT | ASC_QC_URGENT);
2291 if ((scsiq->q1.cntl & ASC_QC_SG_HEAD) != 0) {
2302 scsiq->q1.data_addr = sg_head->sg_list[0].addr;
2303 scsiq->q1.data_cnt = sg_head->sg_list[0].bytes;
2304 scsiq->q1.cntl &= ~(ASC_QC_SG_HEAD | ASC_QC_SG_SWAP_QUEUE);
2308 scsi_cmd = scsiq->cdbptr[0];
2310 if ((sc->pci_fix_asyn_xfer & scsiq->q1.target_id) &&
2311 !(sc->pci_fix_asyn_xfer_always & scsiq->q1.target_id)) {
2312 if (scsiq->q1.cntl & ASC_QC_SG_HEAD) {
2317 data_cnt = scsiq->q1.data_cnt;
2338 scsiq->q2.tag_code &= ~M2_QTAG_MSG_SIMPLE;
2339 scsiq->q2.tag_code |= (ASC_TAG_FLAG_DISABLE_ASYN_USE_SYN_FIX |
2342 scsiq->q2.tag_code &= 0x23;
2345 if ((scsiq->q1.cntl & ASC_QC_SG_HEAD) != 0) {
2353 ((scsiq->q2.tag_code & ASC_TAG_FLAG_EXTRA_BYTES) == 0)) {
2354 scsiq->q2.tag_code |= ASC_TAG_FLAG_EXTRA_BYTES;
2355 scsiq->q1.extra_bytes = extra_bytes;
2365 || ((scsiq->q1.cntl & ASC_QC_URGENT) != 0)) {
2366 retval = AscSendScsiQueue(sc, scsiq, n_q_required);
2372 addr = scsiq->q1.data_addr + scsiq->q1.data_cnt;
2375 ((scsiq->q2.tag_code & ASC_TAG_FLAG_EXTRA_BYTES) == 0)) {
2376 if ((scsiq->q1.data_cnt & 0x01FF) == 0) {
2377 scsiq->q2.tag_code |= ASC_TAG_FLAG_EXTRA_BYTES;
2378 scsiq->q1.data_cnt -= extra_bytes;
2379 scsiq->q1.extra_bytes = extra_bytes;
2387 ((scsiq->q1.cntl & ASC_QC_URGENT) != 0)) {
2388 retval = AscSendScsiQueue(sc, scsiq, n_q_required);
2397 AscSendScsiQueue(ASC_SOFTC *sc, ASC_SCSI_Q *scsiq, u_int8_t n_q_required)
2408 target_ix = scsiq->q2.target_ix;
2417 scsiq->sg_head->queue_cnt = n_q_required - 1;
2419 scsiq->q1.q_no = free_q_head;
2421 if ((retval = AscPutReadySgListQueue(sc, scsiq, free_q_head)) == ASC_NOERROR) {
2432 AscPutReadySgListQueue(ASC_SOFTC *sc, ASC_SCSI_Q *scsiq, u_int8_t q_no)
2449 saved_data_addr = scsiq->q1.data_addr;
2450 saved_data_cnt = scsiq->q1.data_cnt;
2452 if ((sg_head = scsiq->sg_head) != 0) {
2453 scsiq->q1.data_addr = sg_head->sg_list[0].addr;
2454 scsiq->q1.data_cnt = sg_head->sg_list[0].bytes;
2459 scsiq->q1.sg_queue_cnt = sg_head->queue_cnt;
2509 retval = AscPutReadyQueue(sc, scsiq, q_no);
2510 scsiq->q1.data_addr = saved_data_addr;
2511 scsiq->q1.data_cnt = saved_data_cnt;
2517 AscPutReadyQueue(ASC_SOFTC *sc, ASC_SCSI_Q *scsiq, u_int8_t q_no)
2528 if (((sc->init_sdtr & scsiq->q1.target_id) != 0) &&
2529 ((sc->sdtr_done & scsiq->q1.target_id) == 0)) {
2530 tid_no = ASC_TIX_TO_TID(scsiq->q2.target_ix);
2535 scsiq->q1.cntl |= ASC_QC_MSG_OUT;
2539 if ((scsiq->q1.target_id & sc->use_tagged_qng) == 0) {
2540 scsiq->q2.tag_code &= ~M2_QTAG_MSG_SIMPLE;
2542 scsiq->q1.status = ASC_QS_FREE;
2544 (const u_int16_t *) scsiq->cdbptr, scsiq->q2.cdb_len >> 1);
2546 AscPutSCSIQ(iot, ioh, q_addr + ASC_SCSIQ_CPY_BEG, scsiq);
2552 (scsiq->q1.q_no << 8) | ASC_QS_READY);
2560 u_int16_t addr, ASC_SCSI_Q *scsiq)
2568 val = MAKEWORD(scsiq->q1.cntl, scsiq->q1.sg_queue_cnt);
2570 val = MAKEWORD(scsiq->q1.target_id, scsiq->q1.target_lun);
2572 val = LO_WORD(scsiq->q1.data_addr);
2574 val = HI_WORD(scsiq->q1.data_addr);
2576 val = LO_WORD(scsiq->q1.data_cnt);
2578 val = HI_WORD(scsiq->q1.data_cnt);
2580 val = LO_WORD(scsiq->q1.sense_addr);
2582 val = HI_WORD(scsiq->q1.sense_addr);
2584 val = MAKEWORD(scsiq->q1.sense_len, scsiq->q1.extra_bytes);
2588 val = LO_WORD(scsiq->q2.ccb_ptr);
2590 val = HI_WORD(scsiq->q2.ccb_ptr);
2592 val = MAKEWORD(scsiq->q2.target_ix, scsiq->q2.flag);
2594 val = MAKEWORD(scsiq->q2.cdb_len, scsiq->q2.tag_code);
2596 ASC_SET_CHIP_LRAM_DATA(iot, ioh, scsiq->q2.vm_id);
2725 _AscWaitQDone(bus_space_tag_t iot, bus_space_handle_t ioh, ASC_SCSI_Q *scsiq)
2731 while (scsiq->q1.q_no == 0);
2733 q_addr = ASC_QNO_TO_QADDR(scsiq->q1.q_no);
2809 ASC_QDONE_INFO *scsiq;
2813 scsiq = (ASC_QDONE_INFO *) & scsiq_buf;
2817 scsiq->d2.ccb_ptr = AscReadLramDWord(iot, ioh,
2819 if (adv_ccb_phys_kv(sc, scsiq->d2.ccb_ptr) == ccb) {
2820 _AscCopyLramScsiDoneQ(iot, ioh, q_addr, scsiq, sc->max_dma_count);
2821 if (((scsiq->q_status & ASC_QS_READY) != 0)
2822 && ((scsiq->q_status & ASC_QS_ABORTED) == 0)
2823 && ((scsiq->cntl & ASC_QCSG_SG_XFER_LIST) == 0)) {
2824 scsiq->q_status |= ASC_QS_ABORTED;
2825 scsiq->d3.done_stat = ASC_QD_ABORTED_BY_HOST;
2828 scsiq->q_status);
2829 (*sc->isr_callback)(sc, scsiq);
2848 ASC_QDONE_INFO *scsiq;
2852 scsiq = (ASC_QDONE_INFO *) & scsiq_buf;
2855 _AscCopyLramScsiDoneQ(iot, ioh, q_addr, scsiq, sc->max_dma_count);
2856 if (((scsiq->q_status & ASC_QS_READY) != 0) &&
2857 ((scsiq->q_status & ASC_QS_ABORTED) == 0) &&
2858 ((scsiq->cntl & ASC_QCSG_SG_XFER_LIST) == 0)) {
2859 scsiq->d2.target_ix == target_ix) {
2860 scsiq->q_status |= ASC_QS_ABORTED;
2861 scsiq->d3.done_stat = ASC_QD_ABORTED_BY_HOST;
2864 scsiq->q_status);
2865 (*sc->isr_callback)(sc, scsiq);
2889 ASC_SCSI_REQ_Q *scsiq;
2908 scsiq = (ASC_SCSI_REQ_Q *) & scsiq_buf;
2912 scsiq->q1.status = (u_char) ASC_QS_READY;
2913 scsiq->q2.cdb_len = 6;
2914 scsiq->q2.tag_code = M2_QTAG_MSG_SIMPLE;
2915 scsiq->q1.target_id = target_id;
2916 scsiq->q2.target_ix = ASC_TIDLUN_TO_IX(tid_no, 0);
2917 scsiq->cdbptr = scsiq->cdb;
2918 scsiq->q1.cntl = ASC_QC_NO_CALLBACK | ASC_QC_MSG_OUT | ASC_QC_URGENT;
2922 if (AscExeScsiQueue(sc, (ASC_SCSI_Q *) scsiq) == ASC_NOERROR) {
2925 _AscWaitQDone(iot, ioh, (ASC_SCSI_Q *) scsiq);