Lines Matching refs:iod

103 	struct nvmet_fc_ls_iod		*iod;
180 return (iodptr - iodptr->tgtport->iod);
265 struct nvmet_fc_ls_iod *iod);
546 struct nvmet_fc_ls_iod *iod;
549 iod = kcalloc(NVMET_LS_CTX_COUNT, sizeof(struct nvmet_fc_ls_iod),
551 if (!iod)
554 tgtport->iod = iod;
556 for (i = 0; i < NVMET_LS_CTX_COUNT; iod++, i++) {
557 INIT_WORK(&iod->work, nvmet_fc_handle_ls_rqst_work);
558 iod->tgtport = tgtport;
559 list_add_tail(&iod->ls_rcv_list, &tgtport->ls_rcv_list);
561 iod->rqstbuf = kzalloc(sizeof(union nvmefc_ls_requests) +
564 if (!iod->rqstbuf)
567 iod->rspbuf = (union nvmefc_ls_responses *)&iod->rqstbuf[1];
569 iod->rspdma = fc_dma_map_single(tgtport->dev, iod->rspbuf,
570 sizeof(*iod->rspbuf),
572 if (fc_dma_mapping_error(tgtport->dev, iod->rspdma))
579 kfree(iod->rqstbuf);
580 list_del(&iod->ls_rcv_list);
581 for (iod--, i--; i >= 0; iod--, i--) {
582 fc_dma_unmap_single(tgtport->dev, iod->rspdma,
583 sizeof(*iod->rspbuf), DMA_TO_DEVICE);
584 kfree(iod->rqstbuf);
585 list_del(&iod->ls_rcv_list);
588 kfree(iod);
596 struct nvmet_fc_ls_iod *iod = tgtport->iod;
599 for (i = 0; i < NVMET_LS_CTX_COUNT; iod++, i++) {
601 iod->rspdma, sizeof(*iod->rspbuf),
603 kfree(iod->rqstbuf);
604 list_del(&iod->ls_rcv_list);
606 kfree(tgtport->iod);
612 struct nvmet_fc_ls_iod *iod;
616 iod = list_first_entry_or_null(&tgtport->ls_rcv_list,
618 if (iod)
619 list_move_tail(&iod->ls_rcv_list, &tgtport->ls_busylist);
621 return iod;
627 struct nvmet_fc_ls_iod *iod)
632 list_move(&iod->ls_rcv_list, &tgtport->ls_rcv_list);
699 * queue lookup just prior to the allocation. The iod
1660 struct nvmet_fc_ls_iod *iod)
1662 struct fcnvme_ls_cr_assoc_rqst *rqst = &iod->rqstbuf->rq_cr_assoc;
1663 struct fcnvme_ls_cr_assoc_acc *acc = &iod->rspbuf->rsp_cr_assoc;
1677 if (iod->rqstdatalen < FCNVME_LSDESC_CRA_RQST_MINLEN)
1695 iod->assoc = nvmet_fc_alloc_target_assoc(
1696 tgtport, iod->hosthandle);
1697 if (!iod->assoc)
1700 queue = nvmet_fc_alloc_target_queue(iod->assoc, 0,
1704 nvmet_fc_tgt_a_put(iod->assoc);
1713 iod->lsrsp->rsplen = nvme_fc_format_rjt(acc,
1726 tgtport->fc_target_port.port_num, iod->assoc->a_id);
1730 iod->lsrsp->rsplen = sizeof(*acc);
1741 cpu_to_be64(nvmet_fc_makeconnid(iod->assoc, 0));
1751 struct nvmet_fc_ls_iod *iod)
1753 struct fcnvme_ls_cr_conn_rqst *rqst = &iod->rqstbuf->rq_cr_conn;
1754 struct fcnvme_ls_cr_conn_acc *acc = &iod->rspbuf->rsp_cr_conn;
1760 if (iod->rqstdatalen < sizeof(struct fcnvme_ls_cr_conn_rqst))
1786 iod->assoc = nvmet_fc_find_target_assoc(tgtport,
1788 if (!iod->assoc)
1791 queue = nvmet_fc_alloc_target_queue(iod->assoc,
1798 nvmet_fc_tgt_a_put(iod->assoc);
1806 iod->lsrsp->rsplen = nvme_fc_format_rjt(acc,
1821 iod->lsrsp->rsplen = sizeof(*acc);
1831 cpu_to_be64(nvmet_fc_makeconnid(iod->assoc,
1841 struct nvmet_fc_ls_iod *iod)
1844 &iod->rqstbuf->rq_dis_assoc;
1846 &iod->rspbuf->rsp_dis_assoc;
1854 ret = nvmefc_vldt_lsreq_discon_assoc(iod->rqstdatalen, rqst);
1859 iod->assoc = assoc;
1868 iod->lsrsp->rsplen = nvme_fc_format_rjt(acc,
1879 iod->lsrsp->rsplen = sizeof(*acc);
1897 assoc->rcv_disconn = iod;
1907 sizeof(*iod->rspbuf),
1932 struct nvmet_fc_ls_iod *iod = lsrsp->nvme_fc_private;
1933 struct nvmet_fc_tgtport *tgtport = iod->tgtport;
1935 fc_dma_sync_single_for_cpu(tgtport->dev, iod->rspdma,
1936 sizeof(*iod->rspbuf), DMA_TO_DEVICE);
1937 nvmet_fc_free_ls_iod(tgtport, iod);
1943 struct nvmet_fc_ls_iod *iod)
1947 fc_dma_sync_single_for_device(tgtport->dev, iod->rspdma,
1948 sizeof(*iod->rspbuf), DMA_TO_DEVICE);
1950 ret = tgtport->ops->xmt_ls_rsp(&tgtport->fc_target_port, iod->lsrsp);
1952 nvmet_fc_xmt_ls_rsp_done(iod->lsrsp);
1960 struct nvmet_fc_ls_iod *iod)
1962 struct fcnvme_ls_rqst_w0 *w0 = &iod->rqstbuf->rq_cr_assoc.w0;
1965 iod->lsrsp->nvme_fc_private = iod;
1966 iod->lsrsp->rspbuf = iod->rspbuf;
1967 iod->lsrsp->rspdma = iod->rspdma;
1968 iod->lsrsp->done = nvmet_fc_xmt_ls_rsp_done;
1970 iod->lsrsp->rsplen = 0;
1972 iod->assoc = NULL;
1982 nvmet_fc_ls_create_association(tgtport, iod);
1986 nvmet_fc_ls_create_connection(tgtport, iod);
1990 sendrsp = nvmet_fc_ls_disconnect(tgtport, iod);
1993 iod->lsrsp->rsplen = nvme_fc_format_rjt(iod->rspbuf,
1994 sizeof(*iod->rspbuf), w0->ls_cmd,
1999 nvmet_fc_xmt_ls_rsp(tgtport, iod);
2008 struct nvmet_fc_ls_iod *iod =
2010 struct nvmet_fc_tgtport *tgtport = iod->tgtport;
2012 nvmet_fc_handle_ls_rqst(tgtport, iod);
2028 * @hosthandle: pointer to the host specific data, gets stored in iod.
2041 struct nvmet_fc_ls_iod *iod;
2061 iod = nvmet_fc_alloc_ls_iod(tgtport);
2062 if (!iod) {
2071 iod->lsrsp = lsrsp;
2072 iod->fcpreq = NULL;
2073 memcpy(iod->rqstbuf, lsreqbuf, lsreqbuf_len);
2074 iod->rqstdatalen = lsreqbuf_len;
2075 iod->hosthandle = hosthandle;
2077 queue_work(nvmet_wq, &iod->work);