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()
389 struct lpfc_async_xchg_ctx *ctxp = ctx_buf->context; in lpfc_nvmet_ctxbuf_post() local
398 if (ctxp->state == LPFC_NVME_STE_FREE) { in lpfc_nvmet_ctxbuf_post()
401 ctxp->oxid, ctxp->state, ctxp->entry_cnt); in lpfc_nvmet_ctxbuf_post()
404 if (ctxp->rqb_buffer) { in lpfc_nvmet_ctxbuf_post()
405 spin_lock_irqsave(&ctxp->ctxlock, iflag); in lpfc_nvmet_ctxbuf_post()
406 nvmebuf = ctxp->rqb_buffer; in lpfc_nvmet_ctxbuf_post()
409 ctxp->rqb_buffer = NULL; in lpfc_nvmet_ctxbuf_post()
410 if (ctxp->flag & LPFC_NVME_CTX_REUSE_WQ) { in lpfc_nvmet_ctxbuf_post()
411 ctxp->flag &= ~LPFC_NVME_CTX_REUSE_WQ; in lpfc_nvmet_ctxbuf_post()
412 spin_unlock_irqrestore(&ctxp->ctxlock, iflag); in lpfc_nvmet_ctxbuf_post()
416 spin_unlock_irqrestore(&ctxp->ctxlock, iflag); in lpfc_nvmet_ctxbuf_post()
421 spin_unlock_irqrestore(&ctxp->ctxlock, iflag); in lpfc_nvmet_ctxbuf_post()
424 ctxp->state = LPFC_NVME_STE_FREE; in lpfc_nvmet_ctxbuf_post()
441 ctxp = (struct lpfc_async_xchg_ctx *)ctx_buf->context; in lpfc_nvmet_ctxbuf_post()
442 ctxp->wqeq = NULL; in lpfc_nvmet_ctxbuf_post()
443 ctxp->offset = 0; in lpfc_nvmet_ctxbuf_post()
444 ctxp->phba = phba; in lpfc_nvmet_ctxbuf_post()
445 ctxp->size = size; in lpfc_nvmet_ctxbuf_post()
446 ctxp->oxid = oxid; in lpfc_nvmet_ctxbuf_post()
447 ctxp->sid = sid; in lpfc_nvmet_ctxbuf_post()
448 ctxp->state = LPFC_NVME_STE_RCV; in lpfc_nvmet_ctxbuf_post()
449 ctxp->entry_cnt = 1; in lpfc_nvmet_ctxbuf_post()
450 ctxp->flag = 0; in lpfc_nvmet_ctxbuf_post()
451 ctxp->ctxbuf = ctx_buf; in lpfc_nvmet_ctxbuf_post()
452 ctxp->rqb_buffer = (void *)nvmebuf; in lpfc_nvmet_ctxbuf_post()
453 spin_lock_init(&ctxp->ctxlock); in lpfc_nvmet_ctxbuf_post()
457 if (ctxp->ts_isr_cmd) { in lpfc_nvmet_ctxbuf_post()
458 ctxp->ts_cmd_nvme = 0; in lpfc_nvmet_ctxbuf_post()
459 ctxp->ts_nvme_data = 0; in lpfc_nvmet_ctxbuf_post()
460 ctxp->ts_data_wqput = 0; in lpfc_nvmet_ctxbuf_post()
461 ctxp->ts_isr_data = 0; in lpfc_nvmet_ctxbuf_post()
462 ctxp->ts_data_nvme = 0; in lpfc_nvmet_ctxbuf_post()
463 ctxp->ts_nvme_status = 0; in lpfc_nvmet_ctxbuf_post()
464 ctxp->ts_status_wqput = 0; in lpfc_nvmet_ctxbuf_post()
465 ctxp->ts_isr_status = 0; in lpfc_nvmet_ctxbuf_post()
466 ctxp->ts_status_nvme = 0; in lpfc_nvmet_ctxbuf_post()
472 spin_lock_irqsave(&ctxp->ctxlock, iflag); in lpfc_nvmet_ctxbuf_post()
473 ctxp->flag |= LPFC_NVME_CTX_REUSE_WQ; in lpfc_nvmet_ctxbuf_post()
474 spin_unlock_irqrestore(&ctxp->ctxlock, iflag); in lpfc_nvmet_ctxbuf_post()
482 ctxp->oxid, in lpfc_nvmet_ctxbuf_post()
487 spin_lock_irqsave(&ctxp->ctxlock, iflag); in lpfc_nvmet_ctxbuf_post()
488 lpfc_nvmet_defer_release(phba, ctxp); in lpfc_nvmet_ctxbuf_post()
489 spin_unlock_irqrestore(&ctxp->ctxlock, iflag); in lpfc_nvmet_ctxbuf_post()
490 lpfc_nvmet_unsol_fcp_issue_abort(phba, ctxp, sid, oxid); in lpfc_nvmet_ctxbuf_post()
501 list_del_init(&ctxp->list); in lpfc_nvmet_ctxbuf_post()
504 infop = lpfc_get_ctx_list(phba, cpu, ctxp->idx); in lpfc_nvmet_ctxbuf_post()
515 struct lpfc_async_xchg_ctx *ctxp) in lpfc_nvmet_ktime() argument
521 if (!ctxp->ts_isr_cmd || !ctxp->ts_cmd_nvme || in lpfc_nvmet_ktime()
522 !ctxp->ts_nvme_data || !ctxp->ts_data_wqput || in lpfc_nvmet_ktime()
523 !ctxp->ts_isr_data || !ctxp->ts_data_nvme || in lpfc_nvmet_ktime()
524 !ctxp->ts_nvme_status || !ctxp->ts_status_wqput || in lpfc_nvmet_ktime()
525 !ctxp->ts_isr_status || !ctxp->ts_status_nvme) in lpfc_nvmet_ktime()
528 if (ctxp->ts_status_nvme < ctxp->ts_isr_cmd) in lpfc_nvmet_ktime()
530 if (ctxp->ts_isr_cmd > ctxp->ts_cmd_nvme) in lpfc_nvmet_ktime()
532 if (ctxp->ts_cmd_nvme > ctxp->ts_nvme_data) in lpfc_nvmet_ktime()
534 if (ctxp->ts_nvme_data > ctxp->ts_data_wqput) in lpfc_nvmet_ktime()
536 if (ctxp->ts_data_wqput > ctxp->ts_isr_data) in lpfc_nvmet_ktime()
538 if (ctxp->ts_isr_data > ctxp->ts_data_nvme) in lpfc_nvmet_ktime()
540 if (ctxp->ts_data_nvme > ctxp->ts_nvme_status) in lpfc_nvmet_ktime()
542 if (ctxp->ts_nvme_status > ctxp->ts_status_wqput) in lpfc_nvmet_ktime()
544 if (ctxp->ts_status_wqput > ctxp->ts_isr_status) in lpfc_nvmet_ktime()
546 if (ctxp->ts_isr_status > ctxp->ts_status_nvme) in lpfc_nvmet_ktime()
573 seg1 = ctxp->ts_cmd_nvme - ctxp->ts_isr_cmd; in lpfc_nvmet_ktime()
576 seg2 = ctxp->ts_nvme_data - ctxp->ts_isr_cmd; in lpfc_nvmet_ktime()
582 seg3 = ctxp->ts_data_wqput - ctxp->ts_isr_cmd; in lpfc_nvmet_ktime()
588 seg4 = ctxp->ts_isr_data - ctxp->ts_isr_cmd; in lpfc_nvmet_ktime()
594 seg5 = ctxp->ts_data_nvme - ctxp->ts_isr_cmd; in lpfc_nvmet_ktime()
602 if (ctxp->ts_nvme_status > ctxp->ts_data_nvme) { in lpfc_nvmet_ktime()
603 seg6 = ctxp->ts_nvme_status - ctxp->ts_isr_cmd; in lpfc_nvmet_ktime()
609 seg7 = ctxp->ts_status_wqput - ctxp->ts_isr_cmd; in lpfc_nvmet_ktime()
615 seg8 = ctxp->ts_isr_status - ctxp->ts_isr_cmd; in lpfc_nvmet_ktime()
621 seg9 = ctxp->ts_status_nvme - ctxp->ts_isr_cmd; in lpfc_nvmet_ktime()
627 if (ctxp->ts_isr_status < ctxp->ts_isr_cmd) in lpfc_nvmet_ktime()
629 seg10 = (ctxp->ts_isr_status - in lpfc_nvmet_ktime()
630 ctxp->ts_isr_cmd); in lpfc_nvmet_ktime()
632 if (ctxp->ts_isr_data < ctxp->ts_isr_cmd) in lpfc_nvmet_ktime()
638 seg10 = (ctxp->ts_isr_data - ctxp->ts_isr_cmd); in lpfc_nvmet_ktime()
724 struct lpfc_async_xchg_ctx *ctxp; in lpfc_nvmet_xmt_fcp_op_cmp() local
731 ctxp = cmdwqe->context_un.axchg; in lpfc_nvmet_xmt_fcp_op_cmp()
732 ctxp->flag &= ~LPFC_NVME_IO_INP; in lpfc_nvmet_xmt_fcp_op_cmp()
734 rsp = &ctxp->hdlrctx.fcp_req; in lpfc_nvmet_xmt_fcp_op_cmp()
746 ctxp->oxid, op, status); in lpfc_nvmet_xmt_fcp_op_cmp()
761 ctxp->flag |= LPFC_NVME_XBUSY; in lpfc_nvmet_xmt_fcp_op_cmp()
767 ctxp->flag &= ~LPFC_NVME_XBUSY; in lpfc_nvmet_xmt_fcp_op_cmp()
773 ctxp->oxid, ctxp->ctxbuf->sglq->sli4_xritag, in lpfc_nvmet_xmt_fcp_op_cmp()
774 status, result, ctxp->flag); in lpfc_nvmet_xmt_fcp_op_cmp()
789 ctxp->state = LPFC_NVME_STE_DONE; in lpfc_nvmet_xmt_fcp_op_cmp()
790 ctxp->entry_cnt++; in lpfc_nvmet_xmt_fcp_op_cmp()
793 if (ctxp->ts_cmd_nvme) { in lpfc_nvmet_xmt_fcp_op_cmp()
795 ctxp->ts_isr_data = in lpfc_nvmet_xmt_fcp_op_cmp()
797 ctxp->ts_data_nvme = in lpfc_nvmet_xmt_fcp_op_cmp()
799 ctxp->ts_nvme_status = in lpfc_nvmet_xmt_fcp_op_cmp()
800 ctxp->ts_data_nvme; in lpfc_nvmet_xmt_fcp_op_cmp()
801 ctxp->ts_status_wqput = in lpfc_nvmet_xmt_fcp_op_cmp()
802 ctxp->ts_data_nvme; in lpfc_nvmet_xmt_fcp_op_cmp()
803 ctxp->ts_isr_status = in lpfc_nvmet_xmt_fcp_op_cmp()
804 ctxp->ts_data_nvme; in lpfc_nvmet_xmt_fcp_op_cmp()
805 ctxp->ts_status_nvme = in lpfc_nvmet_xmt_fcp_op_cmp()
806 ctxp->ts_data_nvme; in lpfc_nvmet_xmt_fcp_op_cmp()
808 ctxp->ts_isr_status = in lpfc_nvmet_xmt_fcp_op_cmp()
810 ctxp->ts_status_nvme = in lpfc_nvmet_xmt_fcp_op_cmp()
817 if (ctxp->ts_cmd_nvme) in lpfc_nvmet_xmt_fcp_op_cmp()
818 lpfc_nvmet_ktime(phba, ctxp); in lpfc_nvmet_xmt_fcp_op_cmp()
822 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()
1013 struct lpfc_async_xchg_ctx *ctxp = in lpfc_nvmet_xmt_fcp_op() local
1015 struct lpfc_hba *phba = ctxp->phba; in lpfc_nvmet_xmt_fcp_op()
1031 if (ctxp->ts_cmd_nvme) { in lpfc_nvmet_xmt_fcp_op()
1033 ctxp->ts_nvme_status = ktime_get_ns(); in lpfc_nvmet_xmt_fcp_op()
1035 ctxp->ts_nvme_data = ktime_get_ns(); in lpfc_nvmet_xmt_fcp_op()
1039 if (!ctxp->hdwq) in lpfc_nvmet_xmt_fcp_op()
1040 ctxp->hdwq = &phba->sli4_hba.hdwq[rsp->hwqid]; in lpfc_nvmet_xmt_fcp_op()
1050 ctxp->cpu = id; /* Setup cpu for cmpl check */ in lpfc_nvmet_xmt_fcp_op()
1055 if ((ctxp->flag & LPFC_NVME_ABTS_RCV) || in lpfc_nvmet_xmt_fcp_op()
1056 (ctxp->state == LPFC_NVME_STE_ABORT)) { in lpfc_nvmet_xmt_fcp_op()
1060 ctxp->oxid); in lpfc_nvmet_xmt_fcp_op()
1065 nvmewqeq = lpfc_nvmet_prep_fcp_wqe(phba, ctxp); in lpfc_nvmet_xmt_fcp_op()
1070 ctxp->oxid); in lpfc_nvmet_xmt_fcp_op()
1076 nvmewqeq->context_un.axchg = ctxp; in lpfc_nvmet_xmt_fcp_op()
1078 ctxp->wqeq->hba_wqidx = rsp->hwqid; in lpfc_nvmet_xmt_fcp_op()
1081 ctxp->oxid, rsp->op, rsp->rsplen); in lpfc_nvmet_xmt_fcp_op()
1083 ctxp->flag |= LPFC_NVME_IO_INP; in lpfc_nvmet_xmt_fcp_op()
1084 rc = lpfc_sli4_issue_wqe(phba, ctxp->hdwq, nvmewqeq); in lpfc_nvmet_xmt_fcp_op()
1087 if (!ctxp->ts_cmd_nvme) in lpfc_nvmet_xmt_fcp_op()
1090 ctxp->ts_status_wqput = ktime_get_ns(); in lpfc_nvmet_xmt_fcp_op()
1092 ctxp->ts_data_wqput = ktime_get_ns(); in lpfc_nvmet_xmt_fcp_op()
1102 ctxp->flag |= LPFC_NVME_DEFER_WQFULL; in lpfc_nvmet_xmt_fcp_op()
1103 wq = ctxp->hdwq->io_wq; in lpfc_nvmet_xmt_fcp_op()
1117 ctxp->oxid, rc); in lpfc_nvmet_xmt_fcp_op()
1119 ctxp->wqeq->hba_wqidx = 0; in lpfc_nvmet_xmt_fcp_op()
1142 struct lpfc_async_xchg_ctx *ctxp = in lpfc_nvmet_xmt_fcp_abort() local
1144 struct lpfc_hba *phba = ctxp->phba; in lpfc_nvmet_xmt_fcp_abort()
1151 if (!ctxp->hdwq) in lpfc_nvmet_xmt_fcp_abort()
1152 ctxp->hdwq = &phba->sli4_hba.hdwq[0]; in lpfc_nvmet_xmt_fcp_abort()
1156 ctxp->oxid, ctxp->flag, ctxp->state); in lpfc_nvmet_xmt_fcp_abort()
1159 ctxp->oxid, ctxp->flag, ctxp->state); in lpfc_nvmet_xmt_fcp_abort()
1163 spin_lock_irqsave(&ctxp->ctxlock, flags); in lpfc_nvmet_xmt_fcp_abort()
1168 if (ctxp->flag & (LPFC_NVME_XBUSY | LPFC_NVME_ABORT_OP)) { in lpfc_nvmet_xmt_fcp_abort()
1169 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_xmt_fcp_abort()
1172 ctxp->flag |= LPFC_NVME_ABORT_OP; in lpfc_nvmet_xmt_fcp_abort()
1174 if (ctxp->flag & LPFC_NVME_DEFER_WQFULL) { in lpfc_nvmet_xmt_fcp_abort()
1175 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_xmt_fcp_abort()
1176 lpfc_nvmet_unsol_fcp_issue_abort(phba, ctxp, ctxp->sid, in lpfc_nvmet_xmt_fcp_abort()
1177 ctxp->oxid); in lpfc_nvmet_xmt_fcp_abort()
1178 wq = ctxp->hdwq->io_wq; in lpfc_nvmet_xmt_fcp_abort()
1179 lpfc_nvmet_wqfull_flush(phba, wq, ctxp); in lpfc_nvmet_xmt_fcp_abort()
1182 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_xmt_fcp_abort()
1188 if (ctxp->state == LPFC_NVME_STE_RCV) in lpfc_nvmet_xmt_fcp_abort()
1189 lpfc_nvmet_unsol_fcp_issue_abort(phba, ctxp, ctxp->sid, in lpfc_nvmet_xmt_fcp_abort()
1190 ctxp->oxid); in lpfc_nvmet_xmt_fcp_abort()
1192 lpfc_nvmet_sol_fcp_issue_abort(phba, ctxp, ctxp->sid, in lpfc_nvmet_xmt_fcp_abort()
1193 ctxp->oxid); in lpfc_nvmet_xmt_fcp_abort()
1201 struct lpfc_async_xchg_ctx *ctxp = in lpfc_nvmet_xmt_fcp_release() local
1203 struct lpfc_hba *phba = ctxp->phba; in lpfc_nvmet_xmt_fcp_release()
1207 spin_lock_irqsave(&ctxp->ctxlock, flags); in lpfc_nvmet_xmt_fcp_release()
1208 if (ctxp->flag & LPFC_NVME_XBUSY) in lpfc_nvmet_xmt_fcp_release()
1212 ctxp->flag, ctxp->oxid); in lpfc_nvmet_xmt_fcp_release()
1213 else if (ctxp->state != LPFC_NVME_STE_DONE && in lpfc_nvmet_xmt_fcp_release()
1214 ctxp->state != LPFC_NVME_STE_ABORT) in lpfc_nvmet_xmt_fcp_release()
1217 ctxp->state, ctxp->entry_cnt, ctxp->oxid); in lpfc_nvmet_xmt_fcp_release()
1219 if ((ctxp->flag & LPFC_NVME_ABORT_OP) || in lpfc_nvmet_xmt_fcp_release()
1220 (ctxp->flag & LPFC_NVME_XBUSY)) { in lpfc_nvmet_xmt_fcp_release()
1223 lpfc_nvmet_defer_release(phba, ctxp); in lpfc_nvmet_xmt_fcp_release()
1225 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_xmt_fcp_release()
1227 lpfc_nvmeio_data(phba, "NVMET FCP FREE: xri x%x ste %d abt %d\n", ctxp->oxid, in lpfc_nvmet_xmt_fcp_release()
1228 ctxp->state, aborting); in lpfc_nvmet_xmt_fcp_release()
1231 ctxp->flag &= ~LPFC_NVME_TNOTIFY; in lpfc_nvmet_xmt_fcp_release()
1236 lpfc_nvmet_ctxbuf_post(phba, ctxp->ctxbuf); in lpfc_nvmet_xmt_fcp_release()
1244 struct lpfc_async_xchg_ctx *ctxp = in lpfc_nvmet_defer_rcv() local
1246 struct rqb_dmabuf *nvmebuf = ctxp->rqb_buffer; in lpfc_nvmet_defer_rcv()
1247 struct lpfc_hba *phba = ctxp->phba; in lpfc_nvmet_defer_rcv()
1252 ctxp->oxid, ctxp->size, raw_smp_processor_id()); in lpfc_nvmet_defer_rcv()
1258 ctxp->oxid, ctxp->flag, ctxp->state); in lpfc_nvmet_defer_rcv()
1268 spin_lock_irqsave(&ctxp->ctxlock, iflag); in lpfc_nvmet_defer_rcv()
1269 ctxp->rqb_buffer = NULL; in lpfc_nvmet_defer_rcv()
1270 spin_unlock_irqrestore(&ctxp->ctxlock, iflag); in lpfc_nvmet_defer_rcv()
1782 struct lpfc_async_xchg_ctx *ctxp, *next_ctxp; in lpfc_sli4_nvmet_xri_aborted() local
1802 list_for_each_entry_safe(ctxp, next_ctxp, in lpfc_sli4_nvmet_xri_aborted()
1805 if (ctxp->ctxbuf->sglq->sli4_xritag != xri) in lpfc_sli4_nvmet_xri_aborted()
1811 spin_lock_irqsave(&ctxp->ctxlock, iflag); in lpfc_sli4_nvmet_xri_aborted()
1815 if (ctxp->flag & LPFC_NVME_CTX_RLS && in lpfc_sli4_nvmet_xri_aborted()
1816 !(ctxp->flag & LPFC_NVME_ABORT_OP)) { in lpfc_sli4_nvmet_xri_aborted()
1818 list_del_init(&ctxp->list); in lpfc_sli4_nvmet_xri_aborted()
1822 ctxp->flag &= ~LPFC_NVME_XBUSY; in lpfc_sli4_nvmet_xri_aborted()
1823 spin_unlock_irqrestore(&ctxp->ctxlock, iflag); in lpfc_sli4_nvmet_xri_aborted()
1828 ndlp = lpfc_findnode_did(phba->pport, ctxp->sid); in lpfc_sli4_nvmet_xri_aborted()
1833 ctxp->ctxbuf->sglq->sli4_lxritag, in lpfc_sli4_nvmet_xri_aborted()
1840 ctxp->oxid, ctxp->flag, released); in lpfc_sli4_nvmet_xri_aborted()
1842 lpfc_nvmet_ctxbuf_post(phba, ctxp->ctxbuf); in lpfc_sli4_nvmet_xri_aborted()
1849 ctxp = lpfc_nvmet_get_ctx_for_xri(phba, xri); in lpfc_sli4_nvmet_xri_aborted()
1850 if (ctxp) { in lpfc_sli4_nvmet_xri_aborted()
1858 xri, ctxp->state, ctxp->flag, ctxp->oxid, in lpfc_sli4_nvmet_xri_aborted()
1861 spin_lock_irqsave(&ctxp->ctxlock, iflag); in lpfc_sli4_nvmet_xri_aborted()
1862 ctxp->flag |= LPFC_NVME_ABTS_RCV; in lpfc_sli4_nvmet_xri_aborted()
1863 ctxp->state = LPFC_NVME_STE_ABORT; in lpfc_sli4_nvmet_xri_aborted()
1864 spin_unlock_irqrestore(&ctxp->ctxlock, iflag); in lpfc_sli4_nvmet_xri_aborted()
1870 req = &ctxp->hdlrctx.fcp_req; in lpfc_sli4_nvmet_xri_aborted()
1883 struct lpfc_async_xchg_ctx *ctxp, *next_ctxp; in lpfc_nvmet_rcv_unsol_abort() local
1893 list_for_each_entry_safe(ctxp, next_ctxp, in lpfc_nvmet_rcv_unsol_abort()
1896 if (ctxp->oxid != oxid || ctxp->sid != sid) in lpfc_nvmet_rcv_unsol_abort()
1899 xri = ctxp->ctxbuf->sglq->sli4_xritag; in lpfc_nvmet_rcv_unsol_abort()
1903 spin_lock_irqsave(&ctxp->ctxlock, iflag); in lpfc_nvmet_rcv_unsol_abort()
1904 ctxp->flag |= LPFC_NVME_ABTS_RCV; in lpfc_nvmet_rcv_unsol_abort()
1905 spin_unlock_irqrestore(&ctxp->ctxlock, iflag); in lpfc_nvmet_rcv_unsol_abort()
1914 rsp = &ctxp->hdlrctx.fcp_req; in lpfc_nvmet_rcv_unsol_abort()
1966 ctxp = lpfc_nvmet_get_ctx_for_oxid(phba, oxid, sid); in lpfc_nvmet_rcv_unsol_abort()
1967 if (ctxp) { in lpfc_nvmet_rcv_unsol_abort()
1968 xri = ctxp->ctxbuf->sglq->sli4_xritag; in lpfc_nvmet_rcv_unsol_abort()
1970 spin_lock_irqsave(&ctxp->ctxlock, iflag); in lpfc_nvmet_rcv_unsol_abort()
1971 ctxp->flag |= (LPFC_NVME_ABTS_RCV | LPFC_NVME_ABORT_OP); in lpfc_nvmet_rcv_unsol_abort()
1972 spin_unlock_irqrestore(&ctxp->ctxlock, iflag); in lpfc_nvmet_rcv_unsol_abort()
1981 ctxp->oxid, xri, ctxp->flag, ctxp->state); in lpfc_nvmet_rcv_unsol_abort()
1983 if (ctxp->flag & LPFC_NVME_TNOTIFY) { in lpfc_nvmet_rcv_unsol_abort()
1986 &ctxp->hdlrctx.fcp_req); in lpfc_nvmet_rcv_unsol_abort()
1988 cancel_work_sync(&ctxp->ctxbuf->defer_work); in lpfc_nvmet_rcv_unsol_abort()
1989 spin_lock_irqsave(&ctxp->ctxlock, iflag); in lpfc_nvmet_rcv_unsol_abort()
1990 lpfc_nvmet_defer_release(phba, ctxp); in lpfc_nvmet_rcv_unsol_abort()
1991 spin_unlock_irqrestore(&ctxp->ctxlock, iflag); in lpfc_nvmet_rcv_unsol_abort()
1993 lpfc_nvmet_sol_fcp_issue_abort(phba, ctxp, ctxp->sid, in lpfc_nvmet_rcv_unsol_abort()
1994 ctxp->oxid); in lpfc_nvmet_rcv_unsol_abort()
2014 struct lpfc_async_xchg_ctx *ctxp) in lpfc_nvmet_wqfull_flush() argument
2034 if (ctxp) { in lpfc_nvmet_wqfull_flush()
2036 if (nvmewqeq->context_un.axchg == ctxp) { in lpfc_nvmet_wqfull_flush()
2056 if (!ctxp) in lpfc_nvmet_wqfull_flush()
2068 struct lpfc_async_xchg_ctx *ctxp; in lpfc_nvmet_wqfull_process() local
2082 ctxp = nvmewqeq->context_un.axchg; in lpfc_nvmet_wqfull_process()
2083 rc = lpfc_sli4_issue_wqe(phba, ctxp->hdwq, nvmewqeq); in lpfc_nvmet_wqfull_process()
2093 if (ctxp->ts_cmd_nvme) { in lpfc_nvmet_wqfull_process()
2094 if (ctxp->hdlrctx.fcp_req.op == NVMET_FCOP_RSP) in lpfc_nvmet_wqfull_process()
2095 ctxp->ts_status_wqput = ktime_get_ns(); in lpfc_nvmet_wqfull_process()
2097 ctxp->ts_data_wqput = ktime_get_ns(); in lpfc_nvmet_wqfull_process()
2195 struct lpfc_async_xchg_ctx *ctxp = ctx_buf->context; in lpfc_nvmet_process_rcv_fcp_req() local
2196 struct lpfc_hba *phba = ctxp->phba; in lpfc_nvmet_process_rcv_fcp_req()
2197 struct rqb_dmabuf *nvmebuf = ctxp->rqb_buffer; in lpfc_nvmet_process_rcv_fcp_req()
2207 ctxp->oxid, ctxp->flag, ctxp->state); in lpfc_nvmet_process_rcv_fcp_req()
2208 spin_lock_irqsave(&ctxp->ctxlock, iflags); in lpfc_nvmet_process_rcv_fcp_req()
2209 lpfc_nvmet_defer_release(phba, ctxp); in lpfc_nvmet_process_rcv_fcp_req()
2210 spin_unlock_irqrestore(&ctxp->ctxlock, iflags); in lpfc_nvmet_process_rcv_fcp_req()
2211 lpfc_nvmet_unsol_fcp_issue_abort(phba, ctxp, ctxp->sid, in lpfc_nvmet_process_rcv_fcp_req()
2212 ctxp->oxid); in lpfc_nvmet_process_rcv_fcp_req()
2216 if (ctxp->flag & LPFC_NVME_ABTS_RCV) { in lpfc_nvmet_process_rcv_fcp_req()
2219 ctxp->oxid); in lpfc_nvmet_process_rcv_fcp_req()
2225 ctxp->flag |= LPFC_NVME_TNOTIFY; in lpfc_nvmet_process_rcv_fcp_req()
2227 if (ctxp->ts_isr_cmd) in lpfc_nvmet_process_rcv_fcp_req()
2228 ctxp->ts_cmd_nvme = ktime_get_ns(); in lpfc_nvmet_process_rcv_fcp_req()
2239 rc = nvmet_fc_rcv_fcp_req(phba->targetport, &ctxp->hdlrctx.fcp_req, in lpfc_nvmet_process_rcv_fcp_req()
2240 payload, ctxp->size); in lpfc_nvmet_process_rcv_fcp_req()
2244 spin_lock_irqsave(&ctxp->ctxlock, iflags); in lpfc_nvmet_process_rcv_fcp_req()
2245 if ((ctxp->flag & LPFC_NVME_CTX_REUSE_WQ) || in lpfc_nvmet_process_rcv_fcp_req()
2246 (nvmebuf != ctxp->rqb_buffer)) { in lpfc_nvmet_process_rcv_fcp_req()
2247 spin_unlock_irqrestore(&ctxp->ctxlock, iflags); in lpfc_nvmet_process_rcv_fcp_req()
2250 ctxp->rqb_buffer = NULL; in lpfc_nvmet_process_rcv_fcp_req()
2251 spin_unlock_irqrestore(&ctxp->ctxlock, iflags); in lpfc_nvmet_process_rcv_fcp_req()
2260 ctxp->oxid, ctxp->size, ctxp->sid); in lpfc_nvmet_process_rcv_fcp_req()
2263 spin_lock_irqsave(&ctxp->ctxlock, iflags); in lpfc_nvmet_process_rcv_fcp_req()
2264 if (ctxp->flag & LPFC_NVME_CTX_REUSE_WQ) { in lpfc_nvmet_process_rcv_fcp_req()
2265 spin_unlock_irqrestore(&ctxp->ctxlock, iflags); in lpfc_nvmet_process_rcv_fcp_req()
2268 spin_unlock_irqrestore(&ctxp->ctxlock, iflags); in lpfc_nvmet_process_rcv_fcp_req()
2279 ctxp->flag &= ~LPFC_NVME_TNOTIFY; in lpfc_nvmet_process_rcv_fcp_req()
2283 ctxp->oxid, rc, in lpfc_nvmet_process_rcv_fcp_req()
2288 ctxp->oxid, ctxp->size, ctxp->sid); in lpfc_nvmet_process_rcv_fcp_req()
2289 spin_lock_irqsave(&ctxp->ctxlock, iflags); in lpfc_nvmet_process_rcv_fcp_req()
2290 lpfc_nvmet_defer_release(phba, ctxp); in lpfc_nvmet_process_rcv_fcp_req()
2291 spin_unlock_irqrestore(&ctxp->ctxlock, iflags); in lpfc_nvmet_process_rcv_fcp_req()
2292 lpfc_nvmet_unsol_fcp_issue_abort(phba, ctxp, ctxp->sid, ctxp->oxid); in lpfc_nvmet_process_rcv_fcp_req()
2386 struct lpfc_async_xchg_ctx *ctxp; in lpfc_nvmet_unsol_fcp_buffer() local
2468 ctxp = (struct lpfc_async_xchg_ctx *)ctx_buf->context; in lpfc_nvmet_unsol_fcp_buffer()
2470 list_add_tail(&ctxp->list, &phba->sli4_hba.t_active_ctx_list); in lpfc_nvmet_unsol_fcp_buffer()
2472 if (ctxp->state != LPFC_NVME_STE_FREE) { in lpfc_nvmet_unsol_fcp_buffer()
2475 ctxp->state, ctxp->entry_cnt, ctxp->oxid); in lpfc_nvmet_unsol_fcp_buffer()
2477 ctxp->wqeq = NULL; in lpfc_nvmet_unsol_fcp_buffer()
2478 ctxp->offset = 0; in lpfc_nvmet_unsol_fcp_buffer()
2479 ctxp->phba = phba; in lpfc_nvmet_unsol_fcp_buffer()
2480 ctxp->size = size; in lpfc_nvmet_unsol_fcp_buffer()
2481 ctxp->oxid = oxid; in lpfc_nvmet_unsol_fcp_buffer()
2482 ctxp->sid = sid; in lpfc_nvmet_unsol_fcp_buffer()
2483 ctxp->idx = idx; in lpfc_nvmet_unsol_fcp_buffer()
2484 ctxp->state = LPFC_NVME_STE_RCV; in lpfc_nvmet_unsol_fcp_buffer()
2485 ctxp->entry_cnt = 1; in lpfc_nvmet_unsol_fcp_buffer()
2486 ctxp->flag = 0; in lpfc_nvmet_unsol_fcp_buffer()
2487 ctxp->ctxbuf = ctx_buf; in lpfc_nvmet_unsol_fcp_buffer()
2488 ctxp->rqb_buffer = (void *)nvmebuf; in lpfc_nvmet_unsol_fcp_buffer()
2489 ctxp->hdwq = NULL; in lpfc_nvmet_unsol_fcp_buffer()
2490 spin_lock_init(&ctxp->ctxlock); in lpfc_nvmet_unsol_fcp_buffer()
2494 ctxp->ts_isr_cmd = isr_timestamp; in lpfc_nvmet_unsol_fcp_buffer()
2495 ctxp->ts_cmd_nvme = 0; in lpfc_nvmet_unsol_fcp_buffer()
2496 ctxp->ts_nvme_data = 0; in lpfc_nvmet_unsol_fcp_buffer()
2497 ctxp->ts_data_wqput = 0; in lpfc_nvmet_unsol_fcp_buffer()
2498 ctxp->ts_isr_data = 0; in lpfc_nvmet_unsol_fcp_buffer()
2499 ctxp->ts_data_nvme = 0; in lpfc_nvmet_unsol_fcp_buffer()
2500 ctxp->ts_nvme_status = 0; in lpfc_nvmet_unsol_fcp_buffer()
2501 ctxp->ts_status_wqput = 0; in lpfc_nvmet_unsol_fcp_buffer()
2502 ctxp->ts_isr_status = 0; in lpfc_nvmet_unsol_fcp_buffer()
2503 ctxp->ts_status_nvme = 0; in lpfc_nvmet_unsol_fcp_buffer()
2518 ctxp->oxid, in lpfc_nvmet_unsol_fcp_buffer()
2523 spin_lock_irqsave(&ctxp->ctxlock, iflag); in lpfc_nvmet_unsol_fcp_buffer()
2524 lpfc_nvmet_defer_release(phba, ctxp); in lpfc_nvmet_unsol_fcp_buffer()
2525 spin_unlock_irqrestore(&ctxp->ctxlock, iflag); in lpfc_nvmet_unsol_fcp_buffer()
2526 lpfc_nvmet_unsol_fcp_issue_abort(phba, ctxp, sid, oxid); in lpfc_nvmet_unsol_fcp_buffer()
2590 struct lpfc_async_xchg_ctx *ctxp, in lpfc_nvmet_prep_ls_wqe() argument
2601 ctxp->sid, ctxp->oxid, ctxp->state); in lpfc_nvmet_prep_ls_wqe()
2611 ctxp->sid, ctxp->oxid, ctxp->state); in lpfc_nvmet_prep_ls_wqe()
2615 ndlp = lpfc_findnode_did(phba->pport, ctxp->sid); in lpfc_nvmet_prep_ls_wqe()
2622 ctxp->sid, ctxp->oxid, ctxp->state); in lpfc_nvmet_prep_ls_wqe()
2625 ctxp->wqeq = nvmewqe; in lpfc_nvmet_prep_ls_wqe()
2631 nvmewqe->context_un.axchg = ctxp; in lpfc_nvmet_prep_ls_wqe()
2671 bf_set(wqe_rcvoxid, &wqe->xmit_sequence.wqe_com, ctxp->oxid); in lpfc_nvmet_prep_ls_wqe()
2698 ndlp->nlp_DID, nvmewqe->iotag, ctxp->oxid, in lpfc_nvmet_prep_ls_wqe()
2713 struct lpfc_async_xchg_ctx *ctxp) in lpfc_nvmet_prep_fcp_wqe() argument
2715 struct nvmefc_tgt_fcp_req *rsp = &ctxp->hdlrctx.fcp_req; in lpfc_nvmet_prep_fcp_wqe()
2732 ctxp->sid, ctxp->oxid, ctxp->state); in lpfc_nvmet_prep_fcp_wqe()
2736 ndlp = lpfc_findnode_did(phba->pport, ctxp->sid); in lpfc_nvmet_prep_fcp_wqe()
2743 ctxp->sid, ctxp->oxid, ctxp->state); in lpfc_nvmet_prep_fcp_wqe()
2751 ctxp->sid, ctxp->oxid, ctxp->state, in lpfc_nvmet_prep_fcp_wqe()
2758 nvmewqe = ctxp->wqeq; in lpfc_nvmet_prep_fcp_wqe()
2761 nvmewqe = ctxp->ctxbuf->iocbq; in lpfc_nvmet_prep_fcp_wqe()
2766 ctxp->sid, ctxp->oxid, ctxp->state); in lpfc_nvmet_prep_fcp_wqe()
2769 ctxp->wqeq = nvmewqe; in lpfc_nvmet_prep_fcp_wqe()
2776 if (((ctxp->state == LPFC_NVME_STE_RCV) && in lpfc_nvmet_prep_fcp_wqe()
2777 (ctxp->entry_cnt == 1)) || in lpfc_nvmet_prep_fcp_wqe()
2778 (ctxp->state == LPFC_NVME_STE_DATA)) { in lpfc_nvmet_prep_fcp_wqe()
2783 ctxp->state, ctxp->entry_cnt); in lpfc_nvmet_prep_fcp_wqe()
2787 sgl = (struct sli4_sge *)ctxp->ctxbuf->sglq->sgl; in lpfc_nvmet_prep_fcp_wqe()
2809 wqe->fcp_tsend.relative_offset = ctxp->offset; in lpfc_nvmet_prep_fcp_wqe()
2827 bf_set(wqe_rcvoxid, &wqe->fcp_tsend.wqe_com, ctxp->oxid); in lpfc_nvmet_prep_fcp_wqe()
2889 wqe->fcp_treceive.relative_offset = ctxp->offset; in lpfc_nvmet_prep_fcp_wqe()
2904 bf_set(wqe_rcvoxid, &wqe->fcp_treceive.wqe_com, ctxp->oxid); in lpfc_nvmet_prep_fcp_wqe()
2971 bf_set(wqe_rcvoxid, &wqe->fcp_trsp.wqe_com, ctxp->oxid); in lpfc_nvmet_prep_fcp_wqe()
3016 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()
3039 ctxp->state = LPFC_NVME_STE_DATA; in lpfc_nvmet_prep_fcp_wqe()
3040 ctxp->entry_cnt++; in lpfc_nvmet_prep_fcp_wqe()
3058 struct lpfc_async_xchg_ctx *ctxp; in lpfc_nvmet_sol_fcp_abort_cmp() local
3065 ctxp = cmdwqe->context_un.axchg; in lpfc_nvmet_sol_fcp_abort_cmp()
3069 if (ctxp->flag & LPFC_NVME_ABORT_OP) in lpfc_nvmet_sol_fcp_abort_cmp()
3072 spin_lock_irqsave(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_abort_cmp()
3073 ctxp->state = LPFC_NVME_STE_DONE; in lpfc_nvmet_sol_fcp_abort_cmp()
3078 if ((ctxp->flag & LPFC_NVME_CTX_RLS) && in lpfc_nvmet_sol_fcp_abort_cmp()
3079 !(ctxp->flag & LPFC_NVME_XBUSY)) { in lpfc_nvmet_sol_fcp_abort_cmp()
3081 list_del_init(&ctxp->list); in lpfc_nvmet_sol_fcp_abort_cmp()
3085 ctxp->flag &= ~LPFC_NVME_ABORT_OP; in lpfc_nvmet_sol_fcp_abort_cmp()
3086 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_abort_cmp()
3092 ctxp->oxid, ctxp->flag, released, in lpfc_nvmet_sol_fcp_abort_cmp()
3103 lpfc_nvmet_ctxbuf_post(phba, ctxp->ctxbuf); in lpfc_nvmet_sol_fcp_abort_cmp()
3128 struct lpfc_async_xchg_ctx *ctxp; in lpfc_nvmet_unsol_fcp_abort_cmp() local
3135 ctxp = cmdwqe->context_un.axchg; in lpfc_nvmet_unsol_fcp_abort_cmp()
3138 if (!ctxp) { in lpfc_nvmet_unsol_fcp_abort_cmp()
3148 spin_lock_irqsave(&ctxp->ctxlock, flags); in lpfc_nvmet_unsol_fcp_abort_cmp()
3149 if (ctxp->flag & LPFC_NVME_ABORT_OP) in lpfc_nvmet_unsol_fcp_abort_cmp()
3153 if (ctxp->state != LPFC_NVME_STE_ABORT) { in lpfc_nvmet_unsol_fcp_abort_cmp()
3156 ctxp->state, ctxp->oxid); in lpfc_nvmet_unsol_fcp_abort_cmp()
3162 ctxp->state = LPFC_NVME_STE_DONE; in lpfc_nvmet_unsol_fcp_abort_cmp()
3163 if ((ctxp->flag & LPFC_NVME_CTX_RLS) && in lpfc_nvmet_unsol_fcp_abort_cmp()
3164 !(ctxp->flag & LPFC_NVME_XBUSY)) { in lpfc_nvmet_unsol_fcp_abort_cmp()
3166 list_del_init(&ctxp->list); in lpfc_nvmet_unsol_fcp_abort_cmp()
3170 ctxp->flag &= ~LPFC_NVME_ABORT_OP; in lpfc_nvmet_unsol_fcp_abort_cmp()
3171 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_unsol_fcp_abort_cmp()
3177 ctxp->oxid, ctxp->flag, released, in lpfc_nvmet_unsol_fcp_abort_cmp()
3188 lpfc_nvmet_ctxbuf_post(phba, ctxp->ctxbuf); in lpfc_nvmet_unsol_fcp_abort_cmp()
3210 struct lpfc_async_xchg_ctx *ctxp; in lpfc_nvmet_xmt_ls_abort_cmp() local
3215 ctxp = cmdwqe->context_un.axchg; in lpfc_nvmet_xmt_ls_abort_cmp()
3225 ctxp, wcqe->word0, wcqe->total_data_placed, in lpfc_nvmet_xmt_ls_abort_cmp()
3228 if (!ctxp) { in lpfc_nvmet_xmt_ls_abort_cmp()
3239 if (ctxp->state != LPFC_NVME_STE_LS_ABORT) { in lpfc_nvmet_xmt_ls_abort_cmp()
3243 ctxp->oxid, ctxp->state, ctxp->entry_cnt); in lpfc_nvmet_xmt_ls_abort_cmp()
3249 kfree(ctxp); in lpfc_nvmet_xmt_ls_abort_cmp()
3254 struct lpfc_async_xchg_ctx *ctxp, in lpfc_nvmet_unsol_issue_abort() argument
3264 sid, xri, ctxp->wqeq->sli4_xritag); in lpfc_nvmet_unsol_issue_abort()
3283 abts_wqeq = ctxp->wqeq; in lpfc_nvmet_unsol_issue_abort()
3335 abts_wqeq->context_un.axchg = ctxp; in lpfc_nvmet_unsol_issue_abort()
3350 struct lpfc_async_xchg_ctx *ctxp, in lpfc_nvmet_sol_fcp_issue_abort() argument
3361 if (!ctxp->wqeq) { in lpfc_nvmet_sol_fcp_issue_abort()
3362 ctxp->wqeq = ctxp->ctxbuf->iocbq; in lpfc_nvmet_sol_fcp_issue_abort()
3363 ctxp->wqeq->hba_wqidx = 0; in lpfc_nvmet_sol_fcp_issue_abort()
3376 spin_lock_irqsave(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_issue_abort()
3377 ctxp->flag &= ~LPFC_NVME_ABORT_OP; in lpfc_nvmet_sol_fcp_issue_abort()
3378 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_issue_abort()
3383 ctxp->abort_wqeq = lpfc_sli_get_iocbq(phba); in lpfc_nvmet_sol_fcp_issue_abort()
3384 spin_lock_irqsave(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_issue_abort()
3385 if (!ctxp->abort_wqeq) { in lpfc_nvmet_sol_fcp_issue_abort()
3389 "xri: x%x\n", ctxp->oxid); in lpfc_nvmet_sol_fcp_issue_abort()
3391 ctxp->flag &= ~LPFC_NVME_ABORT_OP; in lpfc_nvmet_sol_fcp_issue_abort()
3392 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_issue_abort()
3395 abts_wqeq = ctxp->abort_wqeq; in lpfc_nvmet_sol_fcp_issue_abort()
3396 ctxp->state = LPFC_NVME_STE_ABORT; in lpfc_nvmet_sol_fcp_issue_abort()
3397 ia = (ctxp->flag & LPFC_NVME_ABTS_RCV) ? true : false; in lpfc_nvmet_sol_fcp_issue_abort()
3398 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_issue_abort()
3404 ctxp->sid, ctxp->oxid, ctxp->wqeq->sli4_xritag); in lpfc_nvmet_sol_fcp_issue_abort()
3415 phba->hba_flag, ctxp->oxid); in lpfc_nvmet_sol_fcp_issue_abort()
3417 spin_lock_irqsave(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_issue_abort()
3418 ctxp->flag &= ~LPFC_NVME_ABORT_OP; in lpfc_nvmet_sol_fcp_issue_abort()
3419 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_issue_abort()
3431 ctxp->oxid); in lpfc_nvmet_sol_fcp_issue_abort()
3433 spin_lock_irqsave(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_issue_abort()
3434 ctxp->flag &= ~LPFC_NVME_ABORT_OP; in lpfc_nvmet_sol_fcp_issue_abort()
3435 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_issue_abort()
3442 lpfc_sli_prep_abort_xri(phba, abts_wqeq, ctxp->wqeq->sli4_xritag, in lpfc_nvmet_sol_fcp_issue_abort()
3447 abts_wqeq->hba_wqidx = ctxp->wqeq->hba_wqidx; in lpfc_nvmet_sol_fcp_issue_abort()
3450 abts_wqeq->context_un.axchg = ctxp; in lpfc_nvmet_sol_fcp_issue_abort()
3452 if (!ctxp->hdwq) in lpfc_nvmet_sol_fcp_issue_abort()
3453 ctxp->hdwq = &phba->sli4_hba.hdwq[abts_wqeq->hba_wqidx]; in lpfc_nvmet_sol_fcp_issue_abort()
3455 rc = lpfc_sli4_issue_wqe(phba, ctxp->hdwq, abts_wqeq); in lpfc_nvmet_sol_fcp_issue_abort()
3463 spin_lock_irqsave(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_issue_abort()
3464 ctxp->flag &= ~LPFC_NVME_ABORT_OP; in lpfc_nvmet_sol_fcp_issue_abort()
3465 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_sol_fcp_issue_abort()
3470 rc, ctxp->oxid); in lpfc_nvmet_sol_fcp_issue_abort()
3476 struct lpfc_async_xchg_ctx *ctxp, in lpfc_nvmet_unsol_fcp_issue_abort() argument
3486 if (!ctxp->wqeq) { in lpfc_nvmet_unsol_fcp_issue_abort()
3487 ctxp->wqeq = ctxp->ctxbuf->iocbq; in lpfc_nvmet_unsol_fcp_issue_abort()
3488 ctxp->wqeq->hba_wqidx = 0; in lpfc_nvmet_unsol_fcp_issue_abort()
3491 if (ctxp->state == LPFC_NVME_STE_FREE) { in lpfc_nvmet_unsol_fcp_issue_abort()
3494 ctxp->state, ctxp->entry_cnt, ctxp->oxid); in lpfc_nvmet_unsol_fcp_issue_abort()
3498 ctxp->state = LPFC_NVME_STE_ABORT; in lpfc_nvmet_unsol_fcp_issue_abort()
3499 ctxp->entry_cnt++; in lpfc_nvmet_unsol_fcp_issue_abort()
3500 rc = lpfc_nvmet_unsol_issue_abort(phba, ctxp, sid, xri); in lpfc_nvmet_unsol_fcp_issue_abort()
3505 abts_wqeq = ctxp->wqeq; in lpfc_nvmet_unsol_fcp_issue_abort()
3508 if (!ctxp->hdwq) in lpfc_nvmet_unsol_fcp_issue_abort()
3509 ctxp->hdwq = &phba->sli4_hba.hdwq[abts_wqeq->hba_wqidx]; in lpfc_nvmet_unsol_fcp_issue_abort()
3511 rc = lpfc_sli4_issue_wqe(phba, ctxp->hdwq, abts_wqeq); in lpfc_nvmet_unsol_fcp_issue_abort()
3518 spin_lock_irqsave(&ctxp->ctxlock, flags); in lpfc_nvmet_unsol_fcp_issue_abort()
3519 if (ctxp->flag & LPFC_NVME_CTX_RLS) { in lpfc_nvmet_unsol_fcp_issue_abort()
3521 list_del_init(&ctxp->list); in lpfc_nvmet_unsol_fcp_issue_abort()
3525 ctxp->flag &= ~(LPFC_NVME_ABORT_OP | LPFC_NVME_CTX_RLS); in lpfc_nvmet_unsol_fcp_issue_abort()
3526 spin_unlock_irqrestore(&ctxp->ctxlock, flags); in lpfc_nvmet_unsol_fcp_issue_abort()
3532 ctxp->oxid, rc, released); in lpfc_nvmet_unsol_fcp_issue_abort()
3534 lpfc_nvmet_ctxbuf_post(phba, ctxp->ctxbuf); in lpfc_nvmet_unsol_fcp_issue_abort()
3548 struct lpfc_async_xchg_ctx *ctxp, in lpfc_nvme_unsol_ls_issue_abort() argument
3556 if ((ctxp->state == LPFC_NVME_STE_LS_RCV && ctxp->entry_cnt == 1) || in lpfc_nvme_unsol_ls_issue_abort()
3557 (ctxp->state == LPFC_NVME_STE_LS_RSP && ctxp->entry_cnt == 2)) { in lpfc_nvme_unsol_ls_issue_abort()
3558 ctxp->state = LPFC_NVME_STE_LS_ABORT; in lpfc_nvme_unsol_ls_issue_abort()
3559 ctxp->entry_cnt++; in lpfc_nvme_unsol_ls_issue_abort()
3564 ctxp->oxid, ctxp->state, ctxp->entry_cnt); in lpfc_nvme_unsol_ls_issue_abort()
3565 ctxp->state = LPFC_NVME_STE_LS_ABORT; in lpfc_nvme_unsol_ls_issue_abort()
3571 if (!ctxp->wqeq) { in lpfc_nvme_unsol_ls_issue_abort()
3573 ctxp->wqeq = lpfc_sli_get_iocbq(phba); in lpfc_nvme_unsol_ls_issue_abort()
3574 if (!ctxp->wqeq) { in lpfc_nvme_unsol_ls_issue_abort()
3579 kfree(ctxp); in lpfc_nvme_unsol_ls_issue_abort()
3583 abts_wqeq = ctxp->wqeq; in lpfc_nvme_unsol_ls_issue_abort()
3585 if (lpfc_nvmet_unsol_issue_abort(phba, ctxp, sid, xri) == 0) { in lpfc_nvme_unsol_ls_issue_abort()
3593 rc = lpfc_sli4_issue_wqe(phba, ctxp->hdwq, abts_wqeq); in lpfc_nvme_unsol_ls_issue_abort()