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