Lines Matching refs:skreq
635 struct skd_request_context *skreq, uint32_t *sg_byte_count) in skd_blkdev_preop_sg_list() argument
644 ASSERT(skreq->sg_data_dir == SKD_DATA_DIR_HOST_TO_CARD || in skd_blkdev_preop_sg_list()
645 skreq->sg_data_dir == SKD_DATA_DIR_CARD_TO_HOST); in skd_blkdev_preop_sg_list()
647 pbuf = skreq->pbuf; in skd_blkdev_preop_sg_list()
655 skreq->n_sg = n_sg; in skd_blkdev_preop_sg_list()
657 skreq->io_dma_handle = xfer->x_dmah; in skd_blkdev_preop_sg_list()
659 skreq->total_sg_bcount = 0; in skd_blkdev_preop_sg_list()
668 sgd = &skreq->sksg_list[i]; in skd_blkdev_preop_sg_list()
675 skreq->total_sg_bcount += cnt; in skd_blkdev_preop_sg_list()
678 ddi_dma_nextcookie(skreq->io_dma_handle, &xfer->x_dmac); in skd_blkdev_preop_sg_list()
681 skreq->sksg_list[n_sg - 1].next_desc_ptr = 0LL; in skd_blkdev_preop_sg_list()
682 skreq->sksg_list[n_sg - 1].control = FIT_SGD_CONTROL_LAST; in skd_blkdev_preop_sg_list()
684 (void) ddi_dma_sync(skreq->sksg_dma_address.dma_handle, 0, 0, in skd_blkdev_preop_sg_list()
701 struct skd_request_context *skreq) in skd_blkdev_postop_sg_list() argument
707 skreq->sksg_list[skreq->n_sg - 1].next_desc_ptr = in skd_blkdev_postop_sg_list()
708 skreq->sksg_dma_address.cookies->dmac_laddress + in skd_blkdev_postop_sg_list()
709 ((skreq->n_sg) * sizeof (struct fit_sg_descriptor)); in skd_blkdev_postop_sg_list()
729 struct skd_request_context *skreq = NULL; in skd_start() local
764 skreq = skdev->skreq_free_list; in skd_start()
765 if (skreq == NULL) { in skd_start()
770 ASSERT(skreq->state == SKD_REQ_STATE_IDLE); in skd_start()
771 ASSERT((skreq->id & SKD_ID_INCR) == 0); in skd_start()
773 skdev->skreq_free_list = skreq->next; in skd_start()
775 skreq->state = SKD_REQ_STATE_BUSY; in skd_start()
776 skreq->id += SKD_ID_INCR; in skd_start()
811 skreq->pbuf = pbuf; in skd_start()
814 skreq->did_complete = 0; in skd_start()
816 skreq->fitmsg_id = skmsg->id; in skd_start()
829 scsi_req->hdr.tag = skreq->id; in skd_start()
831 cpu_to_be64(skreq->sksg_dma_address.cookies->dmac_laddress); in skd_start()
844 skreq->sg_data_dir = SKD_DATA_DIR_CARD_TO_HOST; in skd_start()
847 skreq->sg_data_dir = SKD_DATA_DIR_HOST_TO_CARD; in skd_start()
850 skd_blkdev_preop_sg_list(skdev, skreq, &sg_byte_count); in skd_start()
860 (void *)pbuf, skreq->id, *scsi_req->cdb); in skd_start()
869 skreq->timeout_stamp = skdev->timeout_stamp; in skd_start()
870 timo_slot = skreq->timeout_stamp & SKD_TIMEOUT_SLOT_MASK; in skd_start()
876 skreq->id, skdev->queue_depth_busy, timo_slot); in skd_start()
884 pbuf->skreq = skreq; in skd_start()
925 struct skd_request_context *skreq, int error) in skd_end_request() argument
928 skd_io_done(skdev, skreq->pbuf, error, SKD_IODONE_WIOC); in skd_end_request()
929 skreq->pbuf = NULL; in skd_end_request()
930 skreq->did_complete = 1; in skd_end_request()
1870 struct skd_request_context *skreq; in skd_isr_completion_posted() local
1947 skreq = &skdev->skreq_table[req_slot]; in skd_isr_completion_posted()
1952 ASSERT(skreq->id == req_id); in skd_isr_completion_posted()
1954 if (SKD_REQ_STATE_ABORTED == skreq->state) { in skd_isr_completion_posted()
1956 (void *)skreq, skreq->id); in skd_isr_completion_posted()
1961 msg_slot = skreq->fitmsg_id & SKD_ID_SLOT_MASK; in skd_isr_completion_posted()
1964 if (skmsg->id == skreq->fitmsg_id) { in skd_isr_completion_posted()
1979 skreq->state = SKD_REQ_STATE_IDLE; in skd_isr_completion_posted()
1980 skreq->id += SKD_ID_INCR; in skd_isr_completion_posted()
1981 skreq->next = skdev->skreq_free_list; in skd_isr_completion_posted()
1982 skdev->skreq_free_list = skreq; in skd_isr_completion_posted()
1987 skreq->completion.status = cmp_status; in skd_isr_completion_posted()
1989 pbuf = skreq->pbuf; in skd_isr_completion_posted()
2007 skd_blkdev_postop_sg_list(skdev, skreq); in skd_isr_completion_posted()
2009 skd_end_request(skdev, skreq, 0); in skd_isr_completion_posted()
2016 skd_end_request(skdev, skreq, 0); in skd_isr_completion_posted()
2021 skd_log_skreq(skdev, skreq, "retry(busy)"); in skd_isr_completion_posted()
2038 skreq->completion = *skcmp; in skd_isr_completion_posted()
2039 skreq->err_info = *skerr; in skd_isr_completion_posted()
2041 skd_end_request(skdev, skreq, -EIO); in skd_isr_completion_posted()
2064 msg_slot = skreq->fitmsg_id & SKD_ID_SLOT_MASK; in skd_isr_completion_posted()
2068 if (skmsg->id == skreq->fitmsg_id) { in skd_isr_completion_posted()
2081 timo_slot = skreq->timeout_stamp & SKD_TIMEOUT_SLOT_MASK; in skd_isr_completion_posted()
2091 skreq->state = SKD_REQ_STATE_IDLE; in skd_isr_completion_posted()
2092 skreq->id += SKD_ID_INCR; in skd_isr_completion_posted()
2093 skreq->next = skdev->skreq_free_list; in skd_isr_completion_posted()
2094 skdev->skreq_free_list = skreq; in skd_isr_completion_posted()
2469 struct skd_request_context *skreq = &skdev->skreq_table[i]; in skd_recover_requests() local
2471 if (skreq->state == SKD_REQ_STATE_BUSY) { in skd_recover_requests()
2472 skd_log_skreq(skdev, skreq, "requeue"); in skd_recover_requests()
2474 ASSERT(0 != (skreq->id & SKD_ID_INCR)); in skd_recover_requests()
2475 ASSERT(skreq->pbuf != NULL); in skd_recover_requests()
2477 skd_blkdev_postop_sg_list(skdev, skreq); in skd_recover_requests()
2479 skd_end_request(skdev, skreq, EAGAIN); in skd_recover_requests()
2480 skreq->pbuf = NULL; in skd_recover_requests()
2481 skreq->state = SKD_REQ_STATE_IDLE; in skd_recover_requests()
2482 skreq->id += SKD_ID_INCR; in skd_recover_requests()
2485 skreq[-1].next = skreq; in skd_recover_requests()
2487 skreq->next = NULL; in skd_recover_requests()
3245 struct skd_request_context *skreq; in skd_cons_skreq() local
3247 skreq = &skdev->skreq_table[i]; in skd_cons_skreq()
3249 skreq->id = (uint16_t)(i + SKD_ID_RW_REQUEST); in skd_cons_skreq()
3250 skreq->state = SKD_REQ_STATE_IDLE; in skd_cons_skreq()
3252 skreq->sksg_list = skd_cons_sg_list(skdev, in skd_cons_skreq()
3254 &skreq->sksg_dma_address); in skd_cons_skreq()
3256 if (NULL == skreq->sksg_list) { in skd_cons_skreq()
3261 skreq->next = &skreq[1]; in skd_cons_skreq()
3506 struct skd_request_context *skreq; in skd_free_skreq() local
3508 skreq = &skdev->skreq_table[i]; in skd_free_skreq()
3510 skd_free_sg_list(skdev, skreq->sksg_list, in skd_free_skreq()
3511 skdev->sgs_per_request, skreq->sksg_dma_address); in skd_free_skreq()
3513 skreq->sksg_list = NULL; in skd_free_skreq()
3624 struct skd_request_context *skreq; in skd_list_skreq() local
3629 skreq = &skdev->skreq_table[0]; in skd_list_skreq()
3630 while (skreq) { in skd_list_skreq()
3635 inx, (void *)skreq, skreq->state, in skd_list_skreq()
3636 skreq->id, skreq->fitmsg_id, in skd_list_skreq()
3637 (void *)skreq->pbuf, in skd_list_skreq()
3638 skreq->sg_data_dir, skreq->did_complete); in skd_list_skreq()
3640 skreq = skreq->next; in skd_list_skreq()
3645 skreq = skdev->skreq_free_list; in skd_list_skreq()
3649 while (skreq) { in skd_list_skreq()
3652 "pbuf=%p dir=%d\n", inx, (void *)skreq, in skd_list_skreq()
3653 skreq->state, skreq->id, skreq->fitmsg_id, in skd_list_skreq()
3654 (void *)skreq->pbuf, skreq->sg_data_dir); in skd_list_skreq()
3656 skreq = skreq->next; in skd_list_skreq()
4011 struct skd_request_context *skreq, const char *event) in skd_log_skreq() argument
4016 skdev->name, (void *)skreq, (void *)skreq->pbuf, event); in skd_log_skreq()
4019 skd_skreq_state_to_str(skreq->state), skreq->state, in skd_log_skreq()
4020 skreq->id, skreq->fitmsg_id); in skd_log_skreq()
4022 skreq->timeout_stamp, skreq->sg_data_dir, skreq->n_sg); in skd_log_skreq()
4024 if ((pbuf = skreq->pbuf) != NULL) { in skd_log_skreq()