Lines Matching refs:ctxp
219 struct lpfc_async_xchg_ctx *ctxp; in lpfc_nvmet_get_ctx_for_xri() local
224 list_for_each_entry(ctxp, &phba->sli4_hba.t_active_ctx_list, list) { in lpfc_nvmet_get_ctx_for_xri()
225 if (ctxp->ctxbuf->sglq->sli4_xritag != xri) in lpfc_nvmet_get_ctx_for_xri()
233 return ctxp; in lpfc_nvmet_get_ctx_for_xri()
241 struct lpfc_async_xchg_ctx *ctxp; in lpfc_nvmet_get_ctx_for_oxid() local
246 list_for_each_entry(ctxp, &phba->sli4_hba.t_active_ctx_list, list) { in lpfc_nvmet_get_ctx_for_oxid()
247 if (ctxp->oxid != oxid || ctxp->sid != sid) in lpfc_nvmet_get_ctx_for_oxid()
255 return ctxp; in lpfc_nvmet_get_ctx_for_oxid()
263 struct lpfc_async_xchg_ctx *ctxp) in lpfc_nvmet_defer_release() argument
265 lockdep_assert_held(&ctxp->ctxlock); in lpfc_nvmet_defer_release()
269 ctxp->oxid, ctxp->flag); in lpfc_nvmet_defer_release()
271 if (ctxp->flag & LPFC_NVME_CTX_RLS) in lpfc_nvmet_defer_release()
274 ctxp->flag |= LPFC_NVME_CTX_RLS; in lpfc_nvmet_defer_release()
276 list_del(&ctxp->list); in lpfc_nvmet_defer_release()
279 list_add_tail(&ctxp->list, &phba->sli4_hba.lpfc_abts_nvmet_ctx_list); in lpfc_nvmet_defer_release()
388 struct lpfc_async_xchg_ctx *ctxp = ctx_buf->context; in lpfc_nvmet_ctxbuf_post() local
397 if (ctxp->state == LPFC_NVME_STE_FREE) { in lpfc_nvmet_ctxbuf_post()
400 ctxp->oxid, ctxp->state, ctxp->entry_cnt); in lpfc_nvmet_ctxbuf_post()
403 if (ctxp->rqb_buffer) { in lpfc_nvmet_ctxbuf_post()
404 spin_lock_irqsave(&ctxp->ctxlock, iflag); in lpfc_nvmet_ctxbuf_post()
405 nvmebuf = ctxp->rqb_buffer; in lpfc_nvmet_ctxbuf_post()
408 ctxp->rqb_buffer = NULL; in lpfc_nvmet_ctxbuf_post()
409 if (ctxp->flag & LPFC_NVME_CTX_REUSE_WQ) { in lpfc_nvmet_ctxbuf_post()
410 ctxp->flag &= ~LPFC_NVME_CTX_REUSE_WQ; in lpfc_nvmet_ctxbuf_post()
411 spin_unlock_irqrestore(&ctxp->ctxlock, iflag); in lpfc_nvmet_ctxbuf_post()
415 spin_unlock_irqrestore(&ctxp->ctxlock, iflag); in lpfc_nvmet_ctxbuf_post()
420 spin_unlock_irqrestore(&ctxp->ctxlock, iflag); in lpfc_nvmet_ctxbuf_post()
423 ctxp->state = LPFC_NVME_STE_FREE; in lpfc_nvmet_ctxbuf_post()
440 ctxp = (struct lpfc_async_xchg_ctx *)ctx_buf->context; in lpfc_nvmet_ctxbuf_post()
441 ctxp->wqeq = NULL; in lpfc_nvmet_ctxbuf_post()
442 ctxp->offset = 0; in lpfc_nvmet_ctxbuf_post()
443 ctxp->phba = phba; in lpfc_nvmet_ctxbuf_post()
444 ctxp->size = size; in lpfc_nvmet_ctxbuf_post()
445 ctxp->oxid = oxid; in lpfc_nvmet_ctxbuf_post()
446 ctxp->sid = sid; in lpfc_nvmet_ctxbuf_post()
447 ctxp->state = LPFC_NVME_STE_RCV; in lpfc_nvmet_ctxbuf_post()
448 ctxp->entry_cnt = 1; in lpfc_nvmet_ctxbuf_post()
449 ctxp->flag = 0; in lpfc_nvmet_ctxbuf_post()
450 ctxp->ctxbuf = ctx_buf; in lpfc_nvmet_ctxbuf_post()
451 ctxp->rqb_buffer = (void *)nvmebuf; in lpfc_nvmet_ctxbuf_post()
452 spin_lock_init(&ctxp->ctxlock); in lpfc_nvmet_ctxbuf_post()
456 if (ctxp->ts_isr_cmd) { in lpfc_nvmet_ctxbuf_post()
457 ctxp->ts_cmd_nvme = 0; in lpfc_nvmet_ctxbuf_post()
458 ctxp->ts_nvme_data = 0; in lpfc_nvmet_ctxbuf_post()
459 ctxp->ts_data_wqput = 0; in lpfc_nvmet_ctxbuf_post()
460 ctxp->ts_isr_data = 0; in lpfc_nvmet_ctxbuf_post()
461 ctxp->ts_data_nvme = 0; in lpfc_nvmet_ctxbuf_post()
462 ctxp->ts_nvme_status = 0; in lpfc_nvmet_ctxbuf_post()
463 ctxp->ts_status_wqput = 0; in lpfc_nvmet_ctxbuf_post()
464 ctxp->ts_isr_status = 0; in lpfc_nvmet_ctxbuf_post()
465 ctxp->ts_status_nvme = 0; in lpfc_nvmet_ctxbuf_post()
471 spin_lock_irqsave(&ctxp->ctxlock, iflag); in lpfc_nvmet_ctxbuf_post()
472 ctxp->flag |= LPFC_NVME_CTX_REUSE_WQ; in lpfc_nvmet_ctxbuf_post()
473 spin_unlock_irqrestore(&ctxp->ctxlock, iflag); in lpfc_nvmet_ctxbuf_post()
481 ctxp->oxid, in lpfc_nvmet_ctxbuf_post()
486 spin_lock_irqsave(&ctxp->ctxlock, iflag); in lpfc_nvmet_ctxbuf_post()
487 lpfc_nvmet_defer_release(phba, ctxp); in lpfc_nvmet_ctxbuf_post()
488 spin_unlock_irqrestore(&ctxp->ctxlock, iflag); in lpfc_nvmet_ctxbuf_post()
489 lpfc_nvmet_unsol_fcp_issue_abort(phba, ctxp, sid, oxid); in lpfc_nvmet_ctxbuf_post()
500 list_del_init(&ctxp->list); in lpfc_nvmet_ctxbuf_post()
503 infop = lpfc_get_ctx_list(phba, cpu, ctxp->idx); in lpfc_nvmet_ctxbuf_post()
514 struct lpfc_async_xchg_ctx *ctxp) in lpfc_nvmet_ktime() argument
520 if (!ctxp->ts_isr_cmd || !ctxp->ts_cmd_nvme || in lpfc_nvmet_ktime()
521 !ctxp->ts_nvme_data || !ctxp->ts_data_wqput || in lpfc_nvmet_ktime()
522 !ctxp->ts_isr_data || !ctxp->ts_data_nvme || in lpfc_nvmet_ktime()
523 !ctxp->ts_nvme_status || !ctxp->ts_status_wqput || in lpfc_nvmet_ktime()
524 !ctxp->ts_isr_status || !ctxp->ts_status_nvme) in lpfc_nvmet_ktime()
527 if (ctxp->ts_status_nvme < ctxp->ts_isr_cmd) in lpfc_nvmet_ktime()
529 if (ctxp->ts_isr_cmd > ctxp->ts_cmd_nvme) in lpfc_nvmet_ktime()
531 if (ctxp->ts_cmd_nvme > ctxp->ts_nvme_data) in lpfc_nvmet_ktime()
533 if (ctxp->ts_nvme_data > ctxp->ts_data_wqput) in lpfc_nvmet_ktime()
535 if (ctxp->ts_data_wqput > ctxp->ts_isr_data) in lpfc_nvmet_ktime()
537 if (ctxp->ts_isr_data > ctxp->ts_data_nvme) in lpfc_nvmet_ktime()
539 if (ctxp->ts_data_nvme > ctxp->ts_nvme_status) in lpfc_nvmet_ktime()
541 if (ctxp->ts_nvme_status > ctxp->ts_status_wqput) in lpfc_nvmet_ktime()
543 if (ctxp->ts_status_wqput > ctxp->ts_isr_status) in lpfc_nvmet_ktime()
545 if (ctxp->ts_isr_status > ctxp->ts_status_nvme) in lpfc_nvmet_ktime()
572 seg1 = ctxp->ts_cmd_nvme - ctxp->ts_isr_cmd; in lpfc_nvmet_ktime()
575 seg2 = ctxp->ts_nvme_data - ctxp->ts_isr_cmd; in lpfc_nvmet_ktime()
581 seg3 = ctxp->ts_data_wqput - ctxp->ts_isr_cmd; in lpfc_nvmet_ktime()
587 seg4 = ctxp->ts_isr_data - ctxp->ts_isr_cmd; in lpfc_nvmet_ktime()
593 seg5 = ctxp->ts_data_nvme - ctxp->ts_isr_cmd; in lpfc_nvmet_ktime()
601 if (ctxp->ts_nvme_status > ctxp->ts_data_nvme) { in lpfc_nvmet_ktime()
602 seg6 = ctxp->ts_nvme_status - ctxp->ts_isr_cmd; in lpfc_nvmet_ktime()
608 seg7 = ctxp->ts_status_wqput - ctxp->ts_isr_cmd; in lpfc_nvmet_ktime()
614 seg8 = ctxp->ts_isr_status - ctxp->ts_isr_cmd; in lpfc_nvmet_ktime()
620 seg9 = ctxp->ts_status_nvme - ctxp->ts_isr_cmd; in lpfc_nvmet_ktime()
626 if (ctxp->ts_isr_status < ctxp->ts_isr_cmd) in lpfc_nvmet_ktime()
628 seg10 = (ctxp->ts_isr_status - in lpfc_nvmet_ktime()
629 ctxp->ts_isr_cmd); in lpfc_nvmet_ktime()
631 if (ctxp->ts_isr_data < ctxp->ts_isr_cmd) in lpfc_nvmet_ktime()
637 seg10 = (ctxp->ts_isr_data - ctxp->ts_isr_cmd); in lpfc_nvmet_ktime()
723 struct lpfc_async_xchg_ctx *ctxp; in lpfc_nvmet_xmt_fcp_op_cmp() local
729 ctxp = cmdwqe->context2; in lpfc_nvmet_xmt_fcp_op_cmp()
730 ctxp->flag &= ~LPFC_NVME_IO_INP; in lpfc_nvmet_xmt_fcp_op_cmp()
732 rsp = &ctxp->hdlrctx.fcp_req; in lpfc_nvmet_xmt_fcp_op_cmp()
744 ctxp->oxid, op, status); in lpfc_nvmet_xmt_fcp_op_cmp()
759 ctxp->flag |= LPFC_NVME_XBUSY; in lpfc_nvmet_xmt_fcp_op_cmp()
765 ctxp->flag &= ~LPFC_NVME_XBUSY; in lpfc_nvmet_xmt_fcp_op_cmp()
771 ctxp->oxid, ctxp->ctxbuf->sglq->sli4_xritag, in lpfc_nvmet_xmt_fcp_op_cmp()
772 status, result, ctxp->flag); in lpfc_nvmet_xmt_fcp_op_cmp()
787 ctxp->state = LPFC_NVME_STE_DONE; in lpfc_nvmet_xmt_fcp_op_cmp()
788 ctxp->entry_cnt++; in lpfc_nvmet_xmt_fcp_op_cmp()
791 if (ctxp->ts_cmd_nvme) { in lpfc_nvmet_xmt_fcp_op_cmp()
793 ctxp->ts_isr_data = in lpfc_nvmet_xmt_fcp_op_cmp()
795 ctxp->ts_data_nvme = in lpfc_nvmet_xmt_fcp_op_cmp()
797 ctxp->ts_nvme_status = in lpfc_nvmet_xmt_fcp_op_cmp()
798 ctxp->ts_data_nvme; in lpfc_nvmet_xmt_fcp_op_cmp()
799 ctxp->ts_status_wqput = in lpfc_nvmet_xmt_fcp_op_cmp()
800 ctxp->ts_data_nvme; in lpfc_nvmet_xmt_fcp_op_cmp()
801 ctxp->ts_isr_status = in lpfc_nvmet_xmt_fcp_op_cmp()
802 ctxp->ts_data_nvme; in lpfc_nvmet_xmt_fcp_op_cmp()
803 ctxp->ts_status_nvme = in lpfc_nvmet_xmt_fcp_op_cmp()
804 ctxp->ts_data_nvme; in lpfc_nvmet_xmt_fcp_op_cmp()
806 ctxp->ts_isr_status = in lpfc_nvmet_xmt_fcp_op_cmp()
808 ctxp->ts_status_nvme = in lpfc_nvmet_xmt_fcp_op_cmp()
815 if (ctxp->ts_cmd_nvme) in lpfc_nvmet_xmt_fcp_op_cmp()
816 lpfc_nvmet_ktime(phba, ctxp); in lpfc_nvmet_xmt_fcp_op_cmp()
820 ctxp->entry_cnt++; in lpfc_nvmet_xmt_fcp_op_cmp()
825 if (ctxp->ts_cmd_nvme) { in lpfc_nvmet_xmt_fcp_op_cmp()
826 ctxp->ts_isr_data = cmdwqe->isr_timestamp; in lpfc_nvmet_xmt_fcp_op_cmp()
827 ctxp->ts_data_nvme = ktime_get_ns(); in lpfc_nvmet_xmt_fcp_op_cmp()
836 if (ctxp->cpu != id) in lpfc_nvmet_xmt_fcp_op_cmp()
840 id, ctxp->cpu); in lpfc_nvmet_xmt_fcp_op_cmp()
1014 struct lpfc_async_xchg_ctx *ctxp = in lpfc_nvmet_xmt_fcp_op() local
1016 struct lpfc_hba *phba = ctxp->phba; in lpfc_nvmet_xmt_fcp_op()
1032 if (ctxp->ts_cmd_nvme) { in lpfc_nvmet_xmt_fcp_op()
1034 ctxp->ts_nvme_status = ktime_get_ns(); in lpfc_nvmet_xmt_fcp_op()
1036 ctxp->ts_nvme_data = ktime_get_ns(); in lpfc_nvmet_xmt_fcp_op()
1040 if (!ctxp->hdwq) in lpfc_nvmet_xmt_fcp_op()
1041 ctxp->hdwq = &phba->sli4_hba.hdwq[rsp->hwqid]; in lpfc_nvmet_xmt_fcp_op()
1051 ctxp->cpu = id; /* Setup cpu for cmpl check */ in lpfc_nvmet_xmt_fcp_op()
1056 if ((ctxp->flag & LPFC_NVME_ABTS_RCV) || in lpfc_nvmet_xmt_fcp_op()
1057 (ctxp->state == LPFC_NVME_STE_ABORT)) { in lpfc_nvmet_xmt_fcp_op()
1061 ctxp->oxid); in lpfc_nvmet_xmt_fcp_op()
1066 nvmewqeq = lpfc_nvmet_prep_fcp_wqe(phba, ctxp); in lpfc_nvmet_xmt_fcp_op()
1071 ctxp->oxid); in lpfc_nvmet_xmt_fcp_op()
1078 nvmewqeq->context2 = ctxp; in lpfc_nvmet_xmt_fcp_op()
1080 ctxp->wqeq->hba_wqidx = rsp->hwqid; in lpfc_nvmet_xmt_fcp_op()
1083 ctxp->oxid, rsp->op, rsp->rsplen); in lpfc_nvmet_xmt_fcp_op()
1085 ctxp->flag |= LPFC_NVME_IO_INP; in lpfc_nvmet_xmt_fcp_op()
1086 rc = lpfc_sli4_issue_wqe(phba, ctxp->hdwq, nvmewqeq); in lpfc_nvmet_xmt_fcp_op()
1089 if (!ctxp->ts_cmd_nvme) in lpfc_nvmet_xmt_fcp_op()
1092 ctxp->ts_status_wqput = ktime_get_ns(); in lpfc_nvmet_xmt_fcp_op()
1094 ctxp->ts_data_wqput = ktime_get_ns(); in lpfc_nvmet_xmt_fcp_op()
1104 ctxp->flag |= LPFC_NVME_DEFER_WQFULL; in lpfc_nvmet_xmt_fcp_op()
1105 wq = ctxp->hdwq->io_wq; in lpfc_nvmet_xmt_fcp_op()
1119 ctxp->oxid, rc); in lpfc_nvmet_xmt_fcp_op()
1121 ctxp->wqeq->hba_wqidx = 0; in lpfc_nvmet_xmt_fcp_op()
1144 struct lpfc_async_xchg_ctx *ctxp = in lpfc_nvmet_xmt_fcp_abort() local
1146 struct lpfc_hba *phba = ctxp->phba; in lpfc_nvmet_xmt_fcp_abort()
1153 if (!ctxp->hdwq) in lpfc_nvmet_xmt_fcp_abort()
1154 ctxp->hdwq = &phba->sli4_hba.hdwq[0]; in lpfc_nvmet_xmt_fcp_abort()
1158 ctxp->oxid, ctxp->flag, ctxp->state); in lpfc_nvmet_xmt_fcp_abort()
1161 ctxp->oxid, ctxp->flag, ctxp->state); in lpfc_nvmet_xmt_fcp_abort()
1165 spin_lock_irqsave(&ctxp->ctxlock, flags); in lpfc_nvmet_xmt_fcp_abort()
1170 if (ctxp->flag & (LPFC_NVME_XBUSY | LPFC_NVME_ABORT_OP)) { in lpfc_nvmet_xmt_fcp_abort()
1171 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_xmt_fcp_abort()
1174 ctxp->flag |= LPFC_NVME_ABORT_OP; in lpfc_nvmet_xmt_fcp_abort()
1176 if (ctxp->flag & LPFC_NVME_DEFER_WQFULL) { in lpfc_nvmet_xmt_fcp_abort()
1177 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_xmt_fcp_abort()
1178 lpfc_nvmet_unsol_fcp_issue_abort(phba, ctxp, ctxp->sid, in lpfc_nvmet_xmt_fcp_abort()
1179 ctxp->oxid); in lpfc_nvmet_xmt_fcp_abort()
1180 wq = ctxp->hdwq->io_wq; in lpfc_nvmet_xmt_fcp_abort()
1181 lpfc_nvmet_wqfull_flush(phba, wq, ctxp); in lpfc_nvmet_xmt_fcp_abort()
1184 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_xmt_fcp_abort()
1190 if (ctxp->state == LPFC_NVME_STE_RCV) in lpfc_nvmet_xmt_fcp_abort()
1191 lpfc_nvmet_unsol_fcp_issue_abort(phba, ctxp, ctxp->sid, in lpfc_nvmet_xmt_fcp_abort()
1192 ctxp->oxid); in lpfc_nvmet_xmt_fcp_abort()
1194 lpfc_nvmet_sol_fcp_issue_abort(phba, ctxp, ctxp->sid, in lpfc_nvmet_xmt_fcp_abort()
1195 ctxp->oxid); in lpfc_nvmet_xmt_fcp_abort()
1203 struct lpfc_async_xchg_ctx *ctxp = in lpfc_nvmet_xmt_fcp_release() local
1205 struct lpfc_hba *phba = ctxp->phba; in lpfc_nvmet_xmt_fcp_release()
1209 spin_lock_irqsave(&ctxp->ctxlock, flags); in lpfc_nvmet_xmt_fcp_release()
1210 if (ctxp->flag & LPFC_NVME_XBUSY) in lpfc_nvmet_xmt_fcp_release()
1214 ctxp->flag, ctxp->oxid); in lpfc_nvmet_xmt_fcp_release()
1215 else if (ctxp->state != LPFC_NVME_STE_DONE && in lpfc_nvmet_xmt_fcp_release()
1216 ctxp->state != LPFC_NVME_STE_ABORT) in lpfc_nvmet_xmt_fcp_release()
1219 ctxp->state, ctxp->entry_cnt, ctxp->oxid); in lpfc_nvmet_xmt_fcp_release()
1221 if ((ctxp->flag & LPFC_NVME_ABORT_OP) || in lpfc_nvmet_xmt_fcp_release()
1222 (ctxp->flag & LPFC_NVME_XBUSY)) { in lpfc_nvmet_xmt_fcp_release()
1225 lpfc_nvmet_defer_release(phba, ctxp); in lpfc_nvmet_xmt_fcp_release()
1227 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_xmt_fcp_release()
1229 lpfc_nvmeio_data(phba, "NVMET FCP FREE: xri x%x ste %d abt %d\n", ctxp->oxid, in lpfc_nvmet_xmt_fcp_release()
1230 ctxp->state, aborting); in lpfc_nvmet_xmt_fcp_release()
1233 ctxp->flag &= ~LPFC_NVME_TNOTIFY; in lpfc_nvmet_xmt_fcp_release()
1238 lpfc_nvmet_ctxbuf_post(phba, ctxp->ctxbuf); in lpfc_nvmet_xmt_fcp_release()
1246 struct lpfc_async_xchg_ctx *ctxp = in lpfc_nvmet_defer_rcv() local
1248 struct rqb_dmabuf *nvmebuf = ctxp->rqb_buffer; in lpfc_nvmet_defer_rcv()
1249 struct lpfc_hba *phba = ctxp->phba; in lpfc_nvmet_defer_rcv()
1254 ctxp->oxid, ctxp->size, raw_smp_processor_id()); in lpfc_nvmet_defer_rcv()
1260 ctxp->oxid, ctxp->flag, ctxp->state); in lpfc_nvmet_defer_rcv()
1270 spin_lock_irqsave(&ctxp->ctxlock, iflag); in lpfc_nvmet_defer_rcv()
1271 ctxp->rqb_buffer = NULL; in lpfc_nvmet_defer_rcv()
1272 spin_unlock_irqrestore(&ctxp->ctxlock, iflag); in lpfc_nvmet_defer_rcv()
1767 struct lpfc_async_xchg_ctx *ctxp, *next_ctxp; in lpfc_sli4_nvmet_xri_aborted() local
1788 list_for_each_entry_safe(ctxp, next_ctxp, in lpfc_sli4_nvmet_xri_aborted()
1791 if (ctxp->ctxbuf->sglq->sli4_xritag != xri) in lpfc_sli4_nvmet_xri_aborted()
1794 spin_lock(&ctxp->ctxlock); in lpfc_sli4_nvmet_xri_aborted()
1798 if (ctxp->flag & LPFC_NVME_CTX_RLS && in lpfc_sli4_nvmet_xri_aborted()
1799 !(ctxp->flag & LPFC_NVME_ABORT_OP)) { in lpfc_sli4_nvmet_xri_aborted()
1800 list_del_init(&ctxp->list); in lpfc_sli4_nvmet_xri_aborted()
1803 ctxp->flag &= ~LPFC_NVME_XBUSY; in lpfc_sli4_nvmet_xri_aborted()
1804 spin_unlock(&ctxp->ctxlock); in lpfc_sli4_nvmet_xri_aborted()
1809 ndlp = lpfc_findnode_did(phba->pport, ctxp->sid); in lpfc_sli4_nvmet_xri_aborted()
1814 ctxp->ctxbuf->sglq->sli4_lxritag, in lpfc_sli4_nvmet_xri_aborted()
1821 ctxp->oxid, ctxp->flag, released); in lpfc_sli4_nvmet_xri_aborted()
1823 lpfc_nvmet_ctxbuf_post(phba, ctxp->ctxbuf); in lpfc_sli4_nvmet_xri_aborted()
1832 ctxp = lpfc_nvmet_get_ctx_for_xri(phba, xri); in lpfc_sli4_nvmet_xri_aborted()
1833 if (ctxp) { in lpfc_sli4_nvmet_xri_aborted()
1841 xri, ctxp->state, ctxp->flag, ctxp->oxid, in lpfc_sli4_nvmet_xri_aborted()
1844 spin_lock_irqsave(&ctxp->ctxlock, iflag); in lpfc_sli4_nvmet_xri_aborted()
1845 ctxp->flag |= LPFC_NVME_ABTS_RCV; in lpfc_sli4_nvmet_xri_aborted()
1846 ctxp->state = LPFC_NVME_STE_ABORT; in lpfc_sli4_nvmet_xri_aborted()
1847 spin_unlock_irqrestore(&ctxp->ctxlock, iflag); in lpfc_sli4_nvmet_xri_aborted()
1853 req = &ctxp->hdlrctx.fcp_req; in lpfc_sli4_nvmet_xri_aborted()
1866 struct lpfc_async_xchg_ctx *ctxp, *next_ctxp; in lpfc_nvmet_rcv_unsol_abort() local
1877 list_for_each_entry_safe(ctxp, next_ctxp, in lpfc_nvmet_rcv_unsol_abort()
1880 if (ctxp->oxid != oxid || ctxp->sid != sid) in lpfc_nvmet_rcv_unsol_abort()
1883 xri = ctxp->ctxbuf->sglq->sli4_xritag; in lpfc_nvmet_rcv_unsol_abort()
1888 spin_lock_irqsave(&ctxp->ctxlock, iflag); in lpfc_nvmet_rcv_unsol_abort()
1889 ctxp->flag |= LPFC_NVME_ABTS_RCV; in lpfc_nvmet_rcv_unsol_abort()
1890 spin_unlock_irqrestore(&ctxp->ctxlock, iflag); in lpfc_nvmet_rcv_unsol_abort()
1899 rsp = &ctxp->hdlrctx.fcp_req; in lpfc_nvmet_rcv_unsol_abort()
1953 ctxp = lpfc_nvmet_get_ctx_for_oxid(phba, oxid, sid); in lpfc_nvmet_rcv_unsol_abort()
1954 if (ctxp) { in lpfc_nvmet_rcv_unsol_abort()
1955 xri = ctxp->ctxbuf->sglq->sli4_xritag; in lpfc_nvmet_rcv_unsol_abort()
1957 spin_lock_irqsave(&ctxp->ctxlock, iflag); in lpfc_nvmet_rcv_unsol_abort()
1958 ctxp->flag |= (LPFC_NVME_ABTS_RCV | LPFC_NVME_ABORT_OP); in lpfc_nvmet_rcv_unsol_abort()
1959 spin_unlock_irqrestore(&ctxp->ctxlock, iflag); in lpfc_nvmet_rcv_unsol_abort()
1968 ctxp->oxid, xri, ctxp->flag, ctxp->state); in lpfc_nvmet_rcv_unsol_abort()
1970 if (ctxp->flag & LPFC_NVME_TNOTIFY) { in lpfc_nvmet_rcv_unsol_abort()
1973 &ctxp->hdlrctx.fcp_req); in lpfc_nvmet_rcv_unsol_abort()
1975 cancel_work_sync(&ctxp->ctxbuf->defer_work); in lpfc_nvmet_rcv_unsol_abort()
1976 spin_lock_irqsave(&ctxp->ctxlock, iflag); in lpfc_nvmet_rcv_unsol_abort()
1977 lpfc_nvmet_defer_release(phba, ctxp); in lpfc_nvmet_rcv_unsol_abort()
1978 spin_unlock_irqrestore(&ctxp->ctxlock, iflag); in lpfc_nvmet_rcv_unsol_abort()
1980 lpfc_nvmet_sol_fcp_issue_abort(phba, ctxp, ctxp->sid, in lpfc_nvmet_rcv_unsol_abort()
1981 ctxp->oxid); in lpfc_nvmet_rcv_unsol_abort()
2001 struct lpfc_async_xchg_ctx *ctxp) in lpfc_nvmet_wqfull_flush() argument
2021 if (ctxp) { in lpfc_nvmet_wqfull_flush()
2023 if (nvmewqeq->context2 == ctxp) { in lpfc_nvmet_wqfull_flush()
2040 if (!ctxp) in lpfc_nvmet_wqfull_flush()
2052 struct lpfc_async_xchg_ctx *ctxp; in lpfc_nvmet_wqfull_process() local
2066 ctxp = (struct lpfc_async_xchg_ctx *)nvmewqeq->context2; in lpfc_nvmet_wqfull_process()
2067 rc = lpfc_sli4_issue_wqe(phba, ctxp->hdwq, nvmewqeq); in lpfc_nvmet_wqfull_process()
2077 if (ctxp->ts_cmd_nvme) { in lpfc_nvmet_wqfull_process()
2078 if (ctxp->hdlrctx.fcp_req.op == NVMET_FCOP_RSP) in lpfc_nvmet_wqfull_process()
2079 ctxp->ts_status_wqput = ktime_get_ns(); in lpfc_nvmet_wqfull_process()
2081 ctxp->ts_data_wqput = ktime_get_ns(); in lpfc_nvmet_wqfull_process()
2179 struct lpfc_async_xchg_ctx *ctxp = ctx_buf->context; in lpfc_nvmet_process_rcv_fcp_req() local
2180 struct lpfc_hba *phba = ctxp->phba; in lpfc_nvmet_process_rcv_fcp_req()
2181 struct rqb_dmabuf *nvmebuf = ctxp->rqb_buffer; in lpfc_nvmet_process_rcv_fcp_req()
2191 ctxp->oxid, ctxp->flag, ctxp->state); in lpfc_nvmet_process_rcv_fcp_req()
2192 spin_lock_irqsave(&ctxp->ctxlock, iflags); in lpfc_nvmet_process_rcv_fcp_req()
2193 lpfc_nvmet_defer_release(phba, ctxp); in lpfc_nvmet_process_rcv_fcp_req()
2194 spin_unlock_irqrestore(&ctxp->ctxlock, iflags); in lpfc_nvmet_process_rcv_fcp_req()
2195 lpfc_nvmet_unsol_fcp_issue_abort(phba, ctxp, ctxp->sid, in lpfc_nvmet_process_rcv_fcp_req()
2196 ctxp->oxid); in lpfc_nvmet_process_rcv_fcp_req()
2200 if (ctxp->flag & LPFC_NVME_ABTS_RCV) { in lpfc_nvmet_process_rcv_fcp_req()
2203 ctxp->oxid); in lpfc_nvmet_process_rcv_fcp_req()
2209 ctxp->flag |= LPFC_NVME_TNOTIFY; in lpfc_nvmet_process_rcv_fcp_req()
2211 if (ctxp->ts_isr_cmd) in lpfc_nvmet_process_rcv_fcp_req()
2212 ctxp->ts_cmd_nvme = ktime_get_ns(); in lpfc_nvmet_process_rcv_fcp_req()
2223 rc = nvmet_fc_rcv_fcp_req(phba->targetport, &ctxp->hdlrctx.fcp_req, in lpfc_nvmet_process_rcv_fcp_req()
2224 payload, ctxp->size); in lpfc_nvmet_process_rcv_fcp_req()
2228 spin_lock_irqsave(&ctxp->ctxlock, iflags); in lpfc_nvmet_process_rcv_fcp_req()
2229 if ((ctxp->flag & LPFC_NVME_CTX_REUSE_WQ) || in lpfc_nvmet_process_rcv_fcp_req()
2230 (nvmebuf != ctxp->rqb_buffer)) { in lpfc_nvmet_process_rcv_fcp_req()
2231 spin_unlock_irqrestore(&ctxp->ctxlock, iflags); in lpfc_nvmet_process_rcv_fcp_req()
2234 ctxp->rqb_buffer = NULL; in lpfc_nvmet_process_rcv_fcp_req()
2235 spin_unlock_irqrestore(&ctxp->ctxlock, iflags); in lpfc_nvmet_process_rcv_fcp_req()
2244 ctxp->oxid, ctxp->size, ctxp->sid); in lpfc_nvmet_process_rcv_fcp_req()
2247 spin_lock_irqsave(&ctxp->ctxlock, iflags); in lpfc_nvmet_process_rcv_fcp_req()
2248 if (ctxp->flag & LPFC_NVME_CTX_REUSE_WQ) { in lpfc_nvmet_process_rcv_fcp_req()
2249 spin_unlock_irqrestore(&ctxp->ctxlock, iflags); in lpfc_nvmet_process_rcv_fcp_req()
2252 spin_unlock_irqrestore(&ctxp->ctxlock, iflags); in lpfc_nvmet_process_rcv_fcp_req()
2263 ctxp->flag &= ~LPFC_NVME_TNOTIFY; in lpfc_nvmet_process_rcv_fcp_req()
2267 ctxp->oxid, rc, in lpfc_nvmet_process_rcv_fcp_req()
2272 ctxp->oxid, ctxp->size, ctxp->sid); in lpfc_nvmet_process_rcv_fcp_req()
2273 spin_lock_irqsave(&ctxp->ctxlock, iflags); in lpfc_nvmet_process_rcv_fcp_req()
2274 lpfc_nvmet_defer_release(phba, ctxp); in lpfc_nvmet_process_rcv_fcp_req()
2275 spin_unlock_irqrestore(&ctxp->ctxlock, iflags); in lpfc_nvmet_process_rcv_fcp_req()
2276 lpfc_nvmet_unsol_fcp_issue_abort(phba, ctxp, ctxp->sid, ctxp->oxid); in lpfc_nvmet_process_rcv_fcp_req()
2370 struct lpfc_async_xchg_ctx *ctxp; in lpfc_nvmet_unsol_fcp_buffer() local
2452 ctxp = (struct lpfc_async_xchg_ctx *)ctx_buf->context; in lpfc_nvmet_unsol_fcp_buffer()
2454 list_add_tail(&ctxp->list, &phba->sli4_hba.t_active_ctx_list); in lpfc_nvmet_unsol_fcp_buffer()
2456 if (ctxp->state != LPFC_NVME_STE_FREE) { in lpfc_nvmet_unsol_fcp_buffer()
2459 ctxp->state, ctxp->entry_cnt, ctxp->oxid); in lpfc_nvmet_unsol_fcp_buffer()
2461 ctxp->wqeq = NULL; in lpfc_nvmet_unsol_fcp_buffer()
2462 ctxp->offset = 0; in lpfc_nvmet_unsol_fcp_buffer()
2463 ctxp->phba = phba; in lpfc_nvmet_unsol_fcp_buffer()
2464 ctxp->size = size; in lpfc_nvmet_unsol_fcp_buffer()
2465 ctxp->oxid = oxid; in lpfc_nvmet_unsol_fcp_buffer()
2466 ctxp->sid = sid; in lpfc_nvmet_unsol_fcp_buffer()
2467 ctxp->idx = idx; in lpfc_nvmet_unsol_fcp_buffer()
2468 ctxp->state = LPFC_NVME_STE_RCV; in lpfc_nvmet_unsol_fcp_buffer()
2469 ctxp->entry_cnt = 1; in lpfc_nvmet_unsol_fcp_buffer()
2470 ctxp->flag = 0; in lpfc_nvmet_unsol_fcp_buffer()
2471 ctxp->ctxbuf = ctx_buf; in lpfc_nvmet_unsol_fcp_buffer()
2472 ctxp->rqb_buffer = (void *)nvmebuf; in lpfc_nvmet_unsol_fcp_buffer()
2473 ctxp->hdwq = NULL; in lpfc_nvmet_unsol_fcp_buffer()
2474 spin_lock_init(&ctxp->ctxlock); in lpfc_nvmet_unsol_fcp_buffer()
2478 ctxp->ts_isr_cmd = isr_timestamp; in lpfc_nvmet_unsol_fcp_buffer()
2479 ctxp->ts_cmd_nvme = 0; in lpfc_nvmet_unsol_fcp_buffer()
2480 ctxp->ts_nvme_data = 0; in lpfc_nvmet_unsol_fcp_buffer()
2481 ctxp->ts_data_wqput = 0; in lpfc_nvmet_unsol_fcp_buffer()
2482 ctxp->ts_isr_data = 0; in lpfc_nvmet_unsol_fcp_buffer()
2483 ctxp->ts_data_nvme = 0; in lpfc_nvmet_unsol_fcp_buffer()
2484 ctxp->ts_nvme_status = 0; in lpfc_nvmet_unsol_fcp_buffer()
2485 ctxp->ts_status_wqput = 0; in lpfc_nvmet_unsol_fcp_buffer()
2486 ctxp->ts_isr_status = 0; in lpfc_nvmet_unsol_fcp_buffer()
2487 ctxp->ts_status_nvme = 0; in lpfc_nvmet_unsol_fcp_buffer()
2502 ctxp->oxid, in lpfc_nvmet_unsol_fcp_buffer()
2507 spin_lock_irqsave(&ctxp->ctxlock, iflag); in lpfc_nvmet_unsol_fcp_buffer()
2508 lpfc_nvmet_defer_release(phba, ctxp); in lpfc_nvmet_unsol_fcp_buffer()
2509 spin_unlock_irqrestore(&ctxp->ctxlock, iflag); in lpfc_nvmet_unsol_fcp_buffer()
2510 lpfc_nvmet_unsol_fcp_issue_abort(phba, ctxp, sid, oxid); in lpfc_nvmet_unsol_fcp_buffer()
2574 struct lpfc_async_xchg_ctx *ctxp, in lpfc_nvmet_prep_ls_wqe() argument
2585 ctxp->sid, ctxp->oxid, ctxp->state); in lpfc_nvmet_prep_ls_wqe()
2595 ctxp->sid, ctxp->oxid, ctxp->state); in lpfc_nvmet_prep_ls_wqe()
2599 ndlp = lpfc_findnode_did(phba->pport, ctxp->sid); in lpfc_nvmet_prep_ls_wqe()
2606 ctxp->sid, ctxp->oxid, ctxp->state); in lpfc_nvmet_prep_ls_wqe()
2609 ctxp->wqeq = nvmewqe; in lpfc_nvmet_prep_ls_wqe()
2615 nvmewqe->context2 = ctxp; in lpfc_nvmet_prep_ls_wqe()
2655 bf_set(wqe_rcvoxid, &wqe->xmit_sequence.wqe_com, ctxp->oxid); in lpfc_nvmet_prep_ls_wqe()
2682 ndlp->nlp_DID, nvmewqe->iotag, ctxp->oxid, in lpfc_nvmet_prep_ls_wqe()
2696 struct lpfc_async_xchg_ctx *ctxp) in lpfc_nvmet_prep_fcp_wqe() argument
2698 struct nvmefc_tgt_fcp_req *rsp = &ctxp->hdlrctx.fcp_req; in lpfc_nvmet_prep_fcp_wqe()
2715 ctxp->sid, ctxp->oxid, ctxp->state); in lpfc_nvmet_prep_fcp_wqe()
2719 ndlp = lpfc_findnode_did(phba->pport, ctxp->sid); in lpfc_nvmet_prep_fcp_wqe()
2726 ctxp->sid, ctxp->oxid, ctxp->state); in lpfc_nvmet_prep_fcp_wqe()
2734 ctxp->sid, ctxp->oxid, ctxp->state, in lpfc_nvmet_prep_fcp_wqe()
2741 nvmewqe = ctxp->wqeq; in lpfc_nvmet_prep_fcp_wqe()
2744 nvmewqe = ctxp->ctxbuf->iocbq; in lpfc_nvmet_prep_fcp_wqe()
2749 ctxp->sid, ctxp->oxid, ctxp->state); in lpfc_nvmet_prep_fcp_wqe()
2752 ctxp->wqeq = nvmewqe; in lpfc_nvmet_prep_fcp_wqe()
2759 if (((ctxp->state == LPFC_NVME_STE_RCV) && in lpfc_nvmet_prep_fcp_wqe()
2760 (ctxp->entry_cnt == 1)) || in lpfc_nvmet_prep_fcp_wqe()
2761 (ctxp->state == LPFC_NVME_STE_DATA)) { in lpfc_nvmet_prep_fcp_wqe()
2766 ctxp->state, ctxp->entry_cnt); in lpfc_nvmet_prep_fcp_wqe()
2770 sgl = (struct sli4_sge *)ctxp->ctxbuf->sglq->sgl; in lpfc_nvmet_prep_fcp_wqe()
2792 wqe->fcp_tsend.relative_offset = ctxp->offset; in lpfc_nvmet_prep_fcp_wqe()
2810 bf_set(wqe_rcvoxid, &wqe->fcp_tsend.wqe_com, ctxp->oxid); in lpfc_nvmet_prep_fcp_wqe()
2875 wqe->fcp_treceive.relative_offset = ctxp->offset; in lpfc_nvmet_prep_fcp_wqe()
2890 bf_set(wqe_rcvoxid, &wqe->fcp_treceive.wqe_com, ctxp->oxid); in lpfc_nvmet_prep_fcp_wqe()
2956 bf_set(wqe_rcvoxid, &wqe->fcp_trsp.wqe_com, ctxp->oxid); in lpfc_nvmet_prep_fcp_wqe()
3002 bf_set(lpfc_sli4_sge_offset, sgl, ctxp->offset); in lpfc_nvmet_prep_fcp_wqe()
3022 ctxp->offset += cnt; in lpfc_nvmet_prep_fcp_wqe()
3024 ctxp->state = LPFC_NVME_STE_DATA; in lpfc_nvmet_prep_fcp_wqe()
3025 ctxp->entry_cnt++; in lpfc_nvmet_prep_fcp_wqe()
3043 struct lpfc_async_xchg_ctx *ctxp; in lpfc_nvmet_sol_fcp_abort_cmp() local
3049 ctxp = cmdwqe->context2; in lpfc_nvmet_sol_fcp_abort_cmp()
3053 if (ctxp->flag & LPFC_NVME_ABORT_OP) in lpfc_nvmet_sol_fcp_abort_cmp()
3056 spin_lock_irqsave(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_abort_cmp()
3057 ctxp->state = LPFC_NVME_STE_DONE; in lpfc_nvmet_sol_fcp_abort_cmp()
3062 if ((ctxp->flag & LPFC_NVME_CTX_RLS) && in lpfc_nvmet_sol_fcp_abort_cmp()
3063 !(ctxp->flag & LPFC_NVME_XBUSY)) { in lpfc_nvmet_sol_fcp_abort_cmp()
3065 list_del_init(&ctxp->list); in lpfc_nvmet_sol_fcp_abort_cmp()
3069 ctxp->flag &= ~LPFC_NVME_ABORT_OP; in lpfc_nvmet_sol_fcp_abort_cmp()
3070 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_abort_cmp()
3076 ctxp->oxid, ctxp->flag, released, in lpfc_nvmet_sol_fcp_abort_cmp()
3087 lpfc_nvmet_ctxbuf_post(phba, ctxp->ctxbuf); in lpfc_nvmet_sol_fcp_abort_cmp()
3112 struct lpfc_async_xchg_ctx *ctxp; in lpfc_nvmet_unsol_fcp_abort_cmp() local
3118 ctxp = cmdwqe->context2; in lpfc_nvmet_unsol_fcp_abort_cmp()
3121 if (!ctxp) { in lpfc_nvmet_unsol_fcp_abort_cmp()
3131 spin_lock_irqsave(&ctxp->ctxlock, flags); in lpfc_nvmet_unsol_fcp_abort_cmp()
3132 if (ctxp->flag & LPFC_NVME_ABORT_OP) in lpfc_nvmet_unsol_fcp_abort_cmp()
3136 if (ctxp->state != LPFC_NVME_STE_ABORT) { in lpfc_nvmet_unsol_fcp_abort_cmp()
3139 ctxp->state, ctxp->oxid); in lpfc_nvmet_unsol_fcp_abort_cmp()
3145 ctxp->state = LPFC_NVME_STE_DONE; in lpfc_nvmet_unsol_fcp_abort_cmp()
3146 if ((ctxp->flag & LPFC_NVME_CTX_RLS) && in lpfc_nvmet_unsol_fcp_abort_cmp()
3147 !(ctxp->flag & LPFC_NVME_XBUSY)) { in lpfc_nvmet_unsol_fcp_abort_cmp()
3149 list_del_init(&ctxp->list); in lpfc_nvmet_unsol_fcp_abort_cmp()
3153 ctxp->flag &= ~LPFC_NVME_ABORT_OP; in lpfc_nvmet_unsol_fcp_abort_cmp()
3154 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_unsol_fcp_abort_cmp()
3160 ctxp->oxid, ctxp->flag, released, in lpfc_nvmet_unsol_fcp_abort_cmp()
3171 lpfc_nvmet_ctxbuf_post(phba, ctxp->ctxbuf); in lpfc_nvmet_unsol_fcp_abort_cmp()
3193 struct lpfc_async_xchg_ctx *ctxp; in lpfc_nvmet_xmt_ls_abort_cmp() local
3197 ctxp = cmdwqe->context2; in lpfc_nvmet_xmt_ls_abort_cmp()
3207 ctxp, wcqe->word0, wcqe->total_data_placed, in lpfc_nvmet_xmt_ls_abort_cmp()
3210 if (!ctxp) { in lpfc_nvmet_xmt_ls_abort_cmp()
3221 if (ctxp->state != LPFC_NVME_STE_LS_ABORT) { in lpfc_nvmet_xmt_ls_abort_cmp()
3225 ctxp->oxid, ctxp->state, ctxp->entry_cnt); in lpfc_nvmet_xmt_ls_abort_cmp()
3231 kfree(ctxp); in lpfc_nvmet_xmt_ls_abort_cmp()
3236 struct lpfc_async_xchg_ctx *ctxp, in lpfc_nvmet_unsol_issue_abort() argument
3246 sid, xri, ctxp->wqeq->sli4_xritag); in lpfc_nvmet_unsol_issue_abort()
3265 abts_wqeq = ctxp->wqeq; in lpfc_nvmet_unsol_issue_abort()
3317 abts_wqeq->context2 = ctxp; in lpfc_nvmet_unsol_issue_abort()
3332 struct lpfc_async_xchg_ctx *ctxp, in lpfc_nvmet_sol_fcp_issue_abort() argument
3343 if (!ctxp->wqeq) { in lpfc_nvmet_sol_fcp_issue_abort()
3344 ctxp->wqeq = ctxp->ctxbuf->iocbq; in lpfc_nvmet_sol_fcp_issue_abort()
3345 ctxp->wqeq->hba_wqidx = 0; in lpfc_nvmet_sol_fcp_issue_abort()
3358 spin_lock_irqsave(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_issue_abort()
3359 ctxp->flag &= ~LPFC_NVME_ABORT_OP; in lpfc_nvmet_sol_fcp_issue_abort()
3360 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_issue_abort()
3365 ctxp->abort_wqeq = lpfc_sli_get_iocbq(phba); in lpfc_nvmet_sol_fcp_issue_abort()
3366 spin_lock_irqsave(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_issue_abort()
3367 if (!ctxp->abort_wqeq) { in lpfc_nvmet_sol_fcp_issue_abort()
3371 "xri: x%x\n", ctxp->oxid); in lpfc_nvmet_sol_fcp_issue_abort()
3373 ctxp->flag &= ~LPFC_NVME_ABORT_OP; in lpfc_nvmet_sol_fcp_issue_abort()
3374 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_issue_abort()
3377 abts_wqeq = ctxp->abort_wqeq; in lpfc_nvmet_sol_fcp_issue_abort()
3378 ctxp->state = LPFC_NVME_STE_ABORT; in lpfc_nvmet_sol_fcp_issue_abort()
3379 opt = (ctxp->flag & LPFC_NVME_ABTS_RCV) ? INHIBIT_ABORT : 0; in lpfc_nvmet_sol_fcp_issue_abort()
3380 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_issue_abort()
3386 ctxp->sid, ctxp->oxid, ctxp->wqeq->sli4_xritag); in lpfc_nvmet_sol_fcp_issue_abort()
3399 phba->hba_flag, ctxp->oxid); in lpfc_nvmet_sol_fcp_issue_abort()
3401 spin_lock_irqsave(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_issue_abort()
3402 ctxp->flag &= ~LPFC_NVME_ABORT_OP; in lpfc_nvmet_sol_fcp_issue_abort()
3403 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_issue_abort()
3414 ctxp->oxid); in lpfc_nvmet_sol_fcp_issue_abort()
3416 spin_lock_irqsave(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_issue_abort()
3417 ctxp->flag &= ~LPFC_NVME_ABORT_OP; in lpfc_nvmet_sol_fcp_issue_abort()
3418 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_issue_abort()
3425 lpfc_nvme_prep_abort_wqe(abts_wqeq, ctxp->wqeq->sli4_xritag, opt); in lpfc_nvmet_sol_fcp_issue_abort()
3428 abts_wqeq->hba_wqidx = ctxp->wqeq->hba_wqidx; in lpfc_nvmet_sol_fcp_issue_abort()
3432 abts_wqeq->context2 = ctxp; in lpfc_nvmet_sol_fcp_issue_abort()
3434 if (!ctxp->hdwq) in lpfc_nvmet_sol_fcp_issue_abort()
3435 ctxp->hdwq = &phba->sli4_hba.hdwq[abts_wqeq->hba_wqidx]; in lpfc_nvmet_sol_fcp_issue_abort()
3437 rc = lpfc_sli4_issue_wqe(phba, ctxp->hdwq, abts_wqeq); in lpfc_nvmet_sol_fcp_issue_abort()
3445 spin_lock_irqsave(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_issue_abort()
3446 ctxp->flag &= ~LPFC_NVME_ABORT_OP; in lpfc_nvmet_sol_fcp_issue_abort()
3447 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_issue_abort()
3452 rc, ctxp->oxid); in lpfc_nvmet_sol_fcp_issue_abort()
3458 struct lpfc_async_xchg_ctx *ctxp, in lpfc_nvmet_unsol_fcp_issue_abort() argument
3468 if (!ctxp->wqeq) { in lpfc_nvmet_unsol_fcp_issue_abort()
3469 ctxp->wqeq = ctxp->ctxbuf->iocbq; in lpfc_nvmet_unsol_fcp_issue_abort()
3470 ctxp->wqeq->hba_wqidx = 0; in lpfc_nvmet_unsol_fcp_issue_abort()
3473 if (ctxp->state == LPFC_NVME_STE_FREE) { in lpfc_nvmet_unsol_fcp_issue_abort()
3476 ctxp->state, ctxp->entry_cnt, ctxp->oxid); in lpfc_nvmet_unsol_fcp_issue_abort()
3480 ctxp->state = LPFC_NVME_STE_ABORT; in lpfc_nvmet_unsol_fcp_issue_abort()
3481 ctxp->entry_cnt++; in lpfc_nvmet_unsol_fcp_issue_abort()
3482 rc = lpfc_nvmet_unsol_issue_abort(phba, ctxp, sid, xri); in lpfc_nvmet_unsol_fcp_issue_abort()
3487 abts_wqeq = ctxp->wqeq; in lpfc_nvmet_unsol_fcp_issue_abort()
3491 if (!ctxp->hdwq) in lpfc_nvmet_unsol_fcp_issue_abort()
3492 ctxp->hdwq = &phba->sli4_hba.hdwq[abts_wqeq->hba_wqidx]; in lpfc_nvmet_unsol_fcp_issue_abort()
3494 rc = lpfc_sli4_issue_wqe(phba, ctxp->hdwq, abts_wqeq); in lpfc_nvmet_unsol_fcp_issue_abort()
3501 spin_lock_irqsave(&ctxp->ctxlock, flags); in lpfc_nvmet_unsol_fcp_issue_abort()
3502 if (ctxp->flag & LPFC_NVME_CTX_RLS) { in lpfc_nvmet_unsol_fcp_issue_abort()
3504 list_del_init(&ctxp->list); in lpfc_nvmet_unsol_fcp_issue_abort()
3508 ctxp->flag &= ~(LPFC_NVME_ABORT_OP | LPFC_NVME_CTX_RLS); in lpfc_nvmet_unsol_fcp_issue_abort()
3509 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_unsol_fcp_issue_abort()
3515 ctxp->oxid, rc, released); in lpfc_nvmet_unsol_fcp_issue_abort()
3517 lpfc_nvmet_ctxbuf_post(phba, ctxp->ctxbuf); in lpfc_nvmet_unsol_fcp_issue_abort()
3531 struct lpfc_async_xchg_ctx *ctxp, in lpfc_nvme_unsol_ls_issue_abort() argument
3539 if ((ctxp->state == LPFC_NVME_STE_LS_RCV && ctxp->entry_cnt == 1) || in lpfc_nvme_unsol_ls_issue_abort()
3540 (ctxp->state == LPFC_NVME_STE_LS_RSP && ctxp->entry_cnt == 2)) { in lpfc_nvme_unsol_ls_issue_abort()
3541 ctxp->state = LPFC_NVME_STE_LS_ABORT; in lpfc_nvme_unsol_ls_issue_abort()
3542 ctxp->entry_cnt++; in lpfc_nvme_unsol_ls_issue_abort()
3547 ctxp->oxid, ctxp->state, ctxp->entry_cnt); in lpfc_nvme_unsol_ls_issue_abort()
3548 ctxp->state = LPFC_NVME_STE_LS_ABORT; in lpfc_nvme_unsol_ls_issue_abort()
3554 if (!ctxp->wqeq) { in lpfc_nvme_unsol_ls_issue_abort()
3556 ctxp->wqeq = lpfc_sli_get_iocbq(phba); in lpfc_nvme_unsol_ls_issue_abort()
3557 if (!ctxp->wqeq) { in lpfc_nvme_unsol_ls_issue_abort()
3562 kfree(ctxp); in lpfc_nvme_unsol_ls_issue_abort()
3566 abts_wqeq = ctxp->wqeq; in lpfc_nvme_unsol_ls_issue_abort()
3568 if (lpfc_nvmet_unsol_issue_abort(phba, ctxp, sid, xri) == 0) { in lpfc_nvme_unsol_ls_issue_abort()
3577 rc = lpfc_sli4_issue_wqe(phba, ctxp->hdwq, abts_wqeq); in lpfc_nvme_unsol_ls_issue_abort()