Lines Matching refs:skreq
360 struct skd_request_context *skreq);
362 struct skd_request_context *skreq);
376 struct skd_request_context *skreq, const char *event);
423 struct skd_request_context *skreq) in skd_prep_zerosize_flush_cdb() argument
425 skreq->flush_cmd = 1; in skd_prep_zerosize_flush_cdb()
486 struct skd_request_context *const skreq = blk_mq_rq_to_pdu(req); in skd_mq_queue_rq() local
497 skreq->retries = 0; in skd_mq_queue_rq()
506 SKD_ASSERT(skreq->state == SKD_REQ_STATE_IDLE); in skd_mq_queue_rq()
512 skreq->id = tag + SKD_ID_RW_REQUEST; in skd_mq_queue_rq()
513 skreq->flush_cmd = 0; in skd_mq_queue_rq()
514 skreq->n_sg = 0; in skd_mq_queue_rq()
515 skreq->sg_byte_count = 0; in skd_mq_queue_rq()
517 skreq->fitmsg_id = 0; in skd_mq_queue_rq()
519 skreq->data_dir = data_dir == READ ? DMA_FROM_DEVICE : DMA_TO_DEVICE; in skd_mq_queue_rq()
521 if (req->bio && !skd_preop_sg_list(skdev, skreq)) { in skd_mq_queue_rq()
523 skreq->status = BLK_STS_RESOURCE; in skd_mq_queue_rq()
528 dma_sync_single_for_device(&skdev->pdev->dev, skreq->sksg_dma_address, in skd_mq_queue_rq()
529 skreq->n_sg * in skd_mq_queue_rq()
553 skreq->fitmsg_id = skmsg->id; in skd_mq_queue_rq()
558 scsi_req->hdr.tag = skreq->id; in skd_mq_queue_rq()
560 cpu_to_be64(skreq->sksg_dma_address); in skd_mq_queue_rq()
563 skd_prep_zerosize_flush_cdb(scsi_req, skreq); in skd_mq_queue_rq()
564 SKD_ASSERT(skreq->flush_cmd == 1); in skd_mq_queue_rq()
572 scsi_req->hdr.sg_list_len_bytes = cpu_to_be32(skreq->sg_byte_count); in skd_mq_queue_rq()
575 skreq->state = SKD_REQ_STATE_BUSY; in skd_mq_queue_rq()
580 dev_dbg(&skdev->pdev->dev, "req=0x%x busy=%d\n", skreq->id, in skd_mq_queue_rq()
613 struct skd_request_context *skreq = blk_mq_rq_to_pdu(req); in skd_complete_rq() local
615 blk_mq_end_request(req, skreq->status); in skd_complete_rq()
619 struct skd_request_context *skreq) in skd_preop_sg_list() argument
621 struct request *req = blk_mq_rq_from_pdu(skreq); in skd_preop_sg_list()
622 struct scatterlist *sgl = &skreq->sg[0], *sg; in skd_preop_sg_list()
626 skreq->sg_byte_count = 0; in skd_preop_sg_list()
628 WARN_ON_ONCE(skreq->data_dir != DMA_TO_DEVICE && in skd_preop_sg_list()
629 skreq->data_dir != DMA_FROM_DEVICE); in skd_preop_sg_list()
639 n_sg = dma_map_sg(&skdev->pdev->dev, sgl, n_sg, skreq->data_dir); in skd_preop_sg_list()
645 skreq->n_sg = n_sg; in skd_preop_sg_list()
648 struct fit_sg_descriptor *sgd = &skreq->sksg_list[i]; in skd_preop_sg_list()
654 skreq->sg_byte_count += cnt; in skd_preop_sg_list()
659 skreq->sksg_list[n_sg - 1].next_desc_ptr = 0LL; in skd_preop_sg_list()
660 skreq->sksg_list[n_sg - 1].control = FIT_SGD_CONTROL_LAST; in skd_preop_sg_list()
665 skreq->id, skreq->sksg_list, &skreq->sksg_dma_address); in skd_preop_sg_list()
667 struct fit_sg_descriptor *sgd = &skreq->sksg_list[i]; in skd_preop_sg_list()
680 struct skd_request_context *skreq) in skd_postop_sg_list() argument
686 skreq->sksg_list[skreq->n_sg - 1].next_desc_ptr = in skd_postop_sg_list()
687 skreq->sksg_dma_address + in skd_postop_sg_list()
688 ((skreq->n_sg) * sizeof(struct fit_sg_descriptor)); in skd_postop_sg_list()
689 dma_unmap_sg(&skdev->pdev->dev, &skreq->sg[0], skreq->n_sg, in skd_postop_sg_list()
690 skreq->data_dir); in skd_postop_sg_list()
1410 struct skd_request_context *skreq, in skd_resolve_req_exception() argument
1413 u8 cmp_status = skreq->completion.status; in skd_resolve_req_exception()
1415 switch (skd_check_status(skdev, cmp_status, &skreq->err_info)) { in skd_resolve_req_exception()
1418 skreq->status = BLK_STS_OK; in skd_resolve_req_exception()
1424 skd_log_skreq(skdev, skreq, "retry(busy)"); in skd_resolve_req_exception()
1433 if (++skreq->retries < SKD_MAX_RETRIES) { in skd_resolve_req_exception()
1434 skd_log_skreq(skdev, skreq, "retry"); in skd_resolve_req_exception()
1442 skreq->status = BLK_STS_IOERR; in skd_resolve_req_exception()
1450 struct skd_request_context *skreq) in skd_release_skreq() argument
1455 skreq->state = SKD_REQ_STATE_IDLE; in skd_release_skreq()
1467 struct skd_request_context *skreq; in skd_isr_completion_posted() local
1531 skreq = blk_mq_rq_to_pdu(rq); in skd_isr_completion_posted()
1536 if (skreq->id != req_id) { in skd_isr_completion_posted()
1539 req_id, skreq->id, cmp_cntxt); in skd_isr_completion_posted()
1544 SKD_ASSERT(skreq->state == SKD_REQ_STATE_BUSY); in skd_isr_completion_posted()
1546 skreq->completion = *skcmp; in skd_isr_completion_posted()
1548 skreq->err_info = *skerr; in skd_isr_completion_posted()
1554 if (skreq->n_sg > 0) in skd_isr_completion_posted()
1555 skd_postop_sg_list(skdev, skreq); in skd_isr_completion_posted()
1557 skd_release_skreq(skdev, skreq); in skd_isr_completion_posted()
1563 skreq->status = BLK_STS_OK; in skd_isr_completion_posted()
1567 skd_resolve_req_exception(skdev, skreq, rq); in skd_isr_completion_posted()
1900 struct skd_request_context *skreq = blk_mq_rq_to_pdu(req); in skd_recover_request() local
1902 if (skreq->state != SKD_REQ_STATE_BUSY) in skd_recover_request()
1905 skd_log_skreq(skdev, skreq, "recover"); in skd_recover_request()
1908 if (skreq->n_sg > 0) in skd_recover_request()
1909 skd_postop_sg_list(skdev, skreq); in skd_recover_request()
1911 skreq->state = SKD_REQ_STATE_IDLE; in skd_recover_request()
1912 skreq->status = BLK_STS_IOERR; in skd_recover_request()
2745 struct skd_request_context *skreq = blk_mq_rq_to_pdu(rq); in skd_init_request() local
2747 skreq->state = SKD_REQ_STATE_IDLE; in skd_init_request()
2748 skreq->sg = (void *)(skreq + 1); in skd_init_request()
2749 sg_init_table(skreq->sg, skd_sgs_per_request); in skd_init_request()
2750 skreq->sksg_list = skd_cons_sg_list(skdev, skd_sgs_per_request, in skd_init_request()
2751 &skreq->sksg_dma_address); in skd_init_request()
2753 return skreq->sksg_list ? 0 : -ENOMEM; in skd_init_request()
2760 struct skd_request_context *skreq = blk_mq_rq_to_pdu(rq); in skd_exit_request() local
2762 skd_free_sg_list(skdev, skreq->sksg_list, skreq->sksg_dma_address); in skd_exit_request()
3580 struct skd_request_context *skreq, const char *event) in skd_log_skreq() argument
3582 struct request *req = blk_mq_rq_from_pdu(skreq); in skd_log_skreq()
3586 dev_dbg(&skdev->pdev->dev, "skreq=%p event='%s'\n", skreq, event); in skd_log_skreq()
3588 skd_skreq_state_to_str(skreq->state), skreq->state, skreq->id, in skd_log_skreq()
3589 skreq->fitmsg_id); in skd_log_skreq()
3591 skreq->data_dir, skreq->n_sg); in skd_log_skreq()