Lines Matching refs:iod

103 	struct nvmet_fc_ls_iod		*iod;
176 return (iodptr - iodptr->tgtport->iod);
254 struct nvmet_fc_ls_iod *iod);
534 struct nvmet_fc_ls_iod *iod;
537 iod = kcalloc(NVMET_LS_CTX_COUNT, sizeof(struct nvmet_fc_ls_iod),
539 if (!iod)
542 tgtport->iod = iod;
544 for (i = 0; i < NVMET_LS_CTX_COUNT; iod++, i++) {
545 INIT_WORK(&iod->work, nvmet_fc_handle_ls_rqst_work);
546 iod->tgtport = tgtport;
547 list_add_tail(&iod->ls_rcv_list, &tgtport->ls_rcv_list);
549 iod->rqstbuf = kzalloc(sizeof(union nvmefc_ls_requests) +
552 if (!iod->rqstbuf)
555 iod->rspbuf = (union nvmefc_ls_responses *)&iod->rqstbuf[1];
557 iod->rspdma = fc_dma_map_single(tgtport->dev, iod->rspbuf,
558 sizeof(*iod->rspbuf),
560 if (fc_dma_mapping_error(tgtport->dev, iod->rspdma))
567 kfree(iod->rqstbuf);
568 list_del(&iod->ls_rcv_list);
569 for (iod--, i--; i >= 0; iod--, i--) {
570 fc_dma_unmap_single(tgtport->dev, iod->rspdma,
571 sizeof(*iod->rspbuf), DMA_TO_DEVICE);
572 kfree(iod->rqstbuf);
573 list_del(&iod->ls_rcv_list);
576 kfree(iod);
584 struct nvmet_fc_ls_iod *iod = tgtport->iod;
587 for (i = 0; i < NVMET_LS_CTX_COUNT; iod++, i++) {
589 iod->rspdma, sizeof(*iod->rspbuf),
591 kfree(iod->rqstbuf);
592 list_del(&iod->ls_rcv_list);
594 kfree(tgtport->iod);
600 struct nvmet_fc_ls_iod *iod;
604 iod = list_first_entry_or_null(&tgtport->ls_rcv_list,
606 if (iod)
607 list_move_tail(&iod->ls_rcv_list, &tgtport->ls_busylist);
609 return iod;
615 struct nvmet_fc_ls_iod *iod)
620 list_move(&iod->ls_rcv_list, &tgtport->ls_rcv_list);
687 * queue lookup just prior to the allocation. The iod
1636 struct nvmet_fc_ls_iod *iod)
1638 struct fcnvme_ls_cr_assoc_rqst *rqst = &iod->rqstbuf->rq_cr_assoc;
1639 struct fcnvme_ls_cr_assoc_acc *acc = &iod->rspbuf->rsp_cr_assoc;
1653 if (iod->rqstdatalen < FCNVME_LSDESC_CRA_RQST_MINLEN)
1671 iod->assoc = nvmet_fc_alloc_target_assoc(
1672 tgtport, iod->hosthandle);
1673 if (!iod->assoc)
1676 queue = nvmet_fc_alloc_target_queue(iod->assoc, 0,
1680 nvmet_fc_tgt_a_put(iod->assoc);
1689 iod->lsrsp->rsplen = nvme_fc_format_rjt(acc,
1702 tgtport->fc_target_port.port_num, iod->assoc->a_id);
1706 iod->lsrsp->rsplen = sizeof(*acc);
1717 cpu_to_be64(nvmet_fc_makeconnid(iod->assoc, 0));
1727 struct nvmet_fc_ls_iod *iod)
1729 struct fcnvme_ls_cr_conn_rqst *rqst = &iod->rqstbuf->rq_cr_conn;
1730 struct fcnvme_ls_cr_conn_acc *acc = &iod->rspbuf->rsp_cr_conn;
1736 if (iod->rqstdatalen < sizeof(struct fcnvme_ls_cr_conn_rqst))
1762 iod->assoc = nvmet_fc_find_target_assoc(tgtport,
1764 if (!iod->assoc)
1767 queue = nvmet_fc_alloc_target_queue(iod->assoc,
1774 nvmet_fc_tgt_a_put(iod->assoc);
1782 iod->lsrsp->rsplen = nvme_fc_format_rjt(acc,
1797 iod->lsrsp->rsplen = sizeof(*acc);
1807 cpu_to_be64(nvmet_fc_makeconnid(iod->assoc,
1817 struct nvmet_fc_ls_iod *iod)
1820 &iod->rqstbuf->rq_dis_assoc;
1822 &iod->rspbuf->rsp_dis_assoc;
1830 ret = nvmefc_vldt_lsreq_discon_assoc(iod->rqstdatalen, rqst);
1835 iod->assoc = assoc;
1844 iod->lsrsp->rsplen = nvme_fc_format_rjt(acc,
1855 iod->lsrsp->rsplen = sizeof(*acc);
1876 assoc->rcv_disconn = iod;
1888 sizeof(*iod->rspbuf),
1910 struct nvmet_fc_ls_iod *iod = lsrsp->nvme_fc_private;
1911 struct nvmet_fc_tgtport *tgtport = iod->tgtport;
1913 fc_dma_sync_single_for_cpu(tgtport->dev, iod->rspdma,
1914 sizeof(*iod->rspbuf), DMA_TO_DEVICE);
1915 nvmet_fc_free_ls_iod(tgtport, iod);
1921 struct nvmet_fc_ls_iod *iod)
1925 fc_dma_sync_single_for_device(tgtport->dev, iod->rspdma,
1926 sizeof(*iod->rspbuf), DMA_TO_DEVICE);
1928 ret = tgtport->ops->xmt_ls_rsp(&tgtport->fc_target_port, iod->lsrsp);
1930 nvmet_fc_xmt_ls_rsp_done(iod->lsrsp);
1938 struct nvmet_fc_ls_iod *iod)
1940 struct fcnvme_ls_rqst_w0 *w0 = &iod->rqstbuf->rq_cr_assoc.w0;
1943 iod->lsrsp->nvme_fc_private = iod;
1944 iod->lsrsp->rspbuf = iod->rspbuf;
1945 iod->lsrsp->rspdma = iod->rspdma;
1946 iod->lsrsp->done = nvmet_fc_xmt_ls_rsp_done;
1948 iod->lsrsp->rsplen = 0;
1950 iod->assoc = NULL;
1960 nvmet_fc_ls_create_association(tgtport, iod);
1964 nvmet_fc_ls_create_connection(tgtport, iod);
1968 sendrsp = nvmet_fc_ls_disconnect(tgtport, iod);
1971 iod->lsrsp->rsplen = nvme_fc_format_rjt(iod->rspbuf,
1972 sizeof(*iod->rspbuf), w0->ls_cmd,
1977 nvmet_fc_xmt_ls_rsp(tgtport, iod);
1986 struct nvmet_fc_ls_iod *iod =
1988 struct nvmet_fc_tgtport *tgtport = iod->tgtport;
1990 nvmet_fc_handle_ls_rqst(tgtport, iod);
2018 struct nvmet_fc_ls_iod *iod;
2038 iod = nvmet_fc_alloc_ls_iod(tgtport);
2039 if (!iod) {
2048 iod->lsrsp = lsrsp;
2049 iod->fcpreq = NULL;
2050 memcpy(iod->rqstbuf, lsreqbuf, lsreqbuf_len);
2051 iod->rqstdatalen = lsreqbuf_len;
2052 iod->hosthandle = hosthandle;
2054 schedule_work(&iod->work);