#include "lpfc_debugfs.h"
 
 static struct lpfc_iocbq *lpfc_nvmet_prep_ls_wqe(struct lpfc_hba *,
-                                                struct lpfc_nvmet_rcv_ctx *,
+                                                struct lpfc_async_xchg_ctx *,
                                                 dma_addr_t rspbuf,
                                                 uint16_t rspsize);
 static struct lpfc_iocbq *lpfc_nvmet_prep_fcp_wqe(struct lpfc_hba *,
-                                                 struct lpfc_nvmet_rcv_ctx *);
+                                                 struct lpfc_async_xchg_ctx *);
 static int lpfc_nvmet_sol_fcp_issue_abort(struct lpfc_hba *,
-                                         struct lpfc_nvmet_rcv_ctx *,
+                                         struct lpfc_async_xchg_ctx *,
                                          uint32_t, uint16_t);
 static int lpfc_nvmet_unsol_fcp_issue_abort(struct lpfc_hba *,
-                                           struct lpfc_nvmet_rcv_ctx *,
+                                           struct lpfc_async_xchg_ctx *,
                                            uint32_t, uint16_t);
 static int lpfc_nvmet_unsol_ls_issue_abort(struct lpfc_hba *,
-                                          struct lpfc_nvmet_rcv_ctx *,
+                                          struct lpfc_async_xchg_ctx *,
                                           uint32_t, uint16_t);
 static void lpfc_nvmet_wqfull_flush(struct lpfc_hba *, struct lpfc_queue *,
-                                   struct lpfc_nvmet_rcv_ctx *);
+                                   struct lpfc_async_xchg_ctx *);
 static void lpfc_nvmet_fcp_rqst_defer_work(struct work_struct *);
 
 static void lpfc_nvmet_process_rcv_fcp_req(struct lpfc_nvmet_ctxbuf *ctx_buf);
 }
 
 #if (IS_ENABLED(CONFIG_NVME_TARGET_FC))
-static struct lpfc_nvmet_rcv_ctx *
+static struct lpfc_async_xchg_ctx *
 lpfc_nvmet_get_ctx_for_xri(struct lpfc_hba *phba, u16 xri)
 {
-       struct lpfc_nvmet_rcv_ctx *ctxp;
+       struct lpfc_async_xchg_ctx *ctxp;
        unsigned long iflag;
        bool found = false;
 
        return NULL;
 }
 
-static struct lpfc_nvmet_rcv_ctx *
+static struct lpfc_async_xchg_ctx *
 lpfc_nvmet_get_ctx_for_oxid(struct lpfc_hba *phba, u16 oxid, u32 sid)
 {
-       struct lpfc_nvmet_rcv_ctx *ctxp;
+       struct lpfc_async_xchg_ctx *ctxp;
        unsigned long iflag;
        bool found = false;
 
 #endif
 
 static void
-lpfc_nvmet_defer_release(struct lpfc_hba *phba, struct lpfc_nvmet_rcv_ctx *ctxp)
+lpfc_nvmet_defer_release(struct lpfc_hba *phba,
+                       struct lpfc_async_xchg_ctx *ctxp)
 {
        lockdep_assert_held(&ctxp->ctxlock);
 
 {
        struct lpfc_nvmet_tgtport *tgtp;
        struct nvmefc_ls_rsp *rsp;
-       struct lpfc_nvmet_rcv_ctx *ctxp;
+       struct lpfc_async_xchg_ctx *ctxp;
        uint32_t status, result;
 
        status = bf_get(lpfc_wcqe_c_status, wcqe);
        }
 
 out:
-       rsp = &ctxp->ctx.ls_rsp;
+       rsp = &ctxp->ls_rsp;
 
        lpfc_nvmeio_data(phba, "NVMET LS  CMPL: xri x%x stat x%x result x%x\n",
                         ctxp->oxid, status, result);
 lpfc_nvmet_ctxbuf_post(struct lpfc_hba *phba, struct lpfc_nvmet_ctxbuf *ctx_buf)
 {
 #if (IS_ENABLED(CONFIG_NVME_TARGET_FC))
-       struct lpfc_nvmet_rcv_ctx *ctxp = ctx_buf->context;
+       struct lpfc_async_xchg_ctx *ctxp = ctx_buf->context;
        struct lpfc_nvmet_tgtport *tgtp;
        struct fc_frame_header *fc_hdr;
        struct rqb_dmabuf *nvmebuf;
                size = nvmebuf->bytes_recv;
                sid = sli4_sid_from_fc_hdr(fc_hdr);
 
-               ctxp = (struct lpfc_nvmet_rcv_ctx *)ctx_buf->context;
+               ctxp = (struct lpfc_async_xchg_ctx *)ctx_buf->context;
                ctxp->wqeq = NULL;
                ctxp->offset = 0;
                ctxp->phba = phba;
 #ifdef CONFIG_SCSI_LPFC_DEBUG_FS
 static void
 lpfc_nvmet_ktime(struct lpfc_hba *phba,
-                struct lpfc_nvmet_rcv_ctx *ctxp)
+                struct lpfc_async_xchg_ctx *ctxp)
 {
        uint64_t seg1, seg2, seg3, seg4, seg5;
        uint64_t seg6, seg7, seg8, seg9, seg10;
 {
        struct lpfc_nvmet_tgtport *tgtp;
        struct nvmefc_tgt_fcp_req *rsp;
-       struct lpfc_nvmet_rcv_ctx *ctxp;
+       struct lpfc_async_xchg_ctx *ctxp;
        uint32_t status, result, op, start_clean, logerr;
 #ifdef CONFIG_SCSI_LPFC_DEBUG_FS
        int id;
        ctxp = cmdwqe->context2;
        ctxp->flag &= ~LPFC_NVMET_IO_INP;
 
-       rsp = &ctxp->ctx.fcp_req;
+       rsp = &ctxp->hdlrctx.fcp_req;
        op = rsp->op;
 
        status = bf_get(lpfc_wcqe_c_status, wcqe);
 lpfc_nvmet_xmt_ls_rsp(struct nvmet_fc_target_port *tgtport,
                      struct nvmefc_ls_rsp *rsp)
 {
-       struct lpfc_nvmet_rcv_ctx *ctxp =
-               container_of(rsp, struct lpfc_nvmet_rcv_ctx, ctx.ls_rsp);
+       struct lpfc_async_xchg_ctx *ctxp =
+               container_of(rsp, struct lpfc_async_xchg_ctx, ls_rsp);
        struct lpfc_hba *phba = ctxp->phba;
        struct hbq_dmabuf *nvmebuf =
                (struct hbq_dmabuf *)ctxp->rqb_buffer;
                      struct nvmefc_tgt_fcp_req *rsp)
 {
        struct lpfc_nvmet_tgtport *lpfc_nvmep = tgtport->private;
-       struct lpfc_nvmet_rcv_ctx *ctxp =
-               container_of(rsp, struct lpfc_nvmet_rcv_ctx, ctx.fcp_req);
+       struct lpfc_async_xchg_ctx *ctxp =
+               container_of(rsp, struct lpfc_async_xchg_ctx, hdlrctx.fcp_req);
        struct lpfc_hba *phba = ctxp->phba;
        struct lpfc_queue *wq;
        struct lpfc_iocbq *nvmewqeq;
                         struct nvmefc_tgt_fcp_req *req)
 {
        struct lpfc_nvmet_tgtport *lpfc_nvmep = tgtport->private;
-       struct lpfc_nvmet_rcv_ctx *ctxp =
-               container_of(req, struct lpfc_nvmet_rcv_ctx, ctx.fcp_req);
+       struct lpfc_async_xchg_ctx *ctxp =
+               container_of(req, struct lpfc_async_xchg_ctx, hdlrctx.fcp_req);
        struct lpfc_hba *phba = ctxp->phba;
        struct lpfc_queue *wq;
        unsigned long flags;
                           struct nvmefc_tgt_fcp_req *rsp)
 {
        struct lpfc_nvmet_tgtport *lpfc_nvmep = tgtport->private;
-       struct lpfc_nvmet_rcv_ctx *ctxp =
-               container_of(rsp, struct lpfc_nvmet_rcv_ctx, ctx.fcp_req);
+       struct lpfc_async_xchg_ctx *ctxp =
+               container_of(rsp, struct lpfc_async_xchg_ctx, hdlrctx.fcp_req);
        struct lpfc_hba *phba = ctxp->phba;
        unsigned long flags;
        bool aborting = false;
                     struct nvmefc_tgt_fcp_req *rsp)
 {
        struct lpfc_nvmet_tgtport *tgtp;
-       struct lpfc_nvmet_rcv_ctx *ctxp =
-               container_of(rsp, struct lpfc_nvmet_rcv_ctx, ctx.fcp_req);
+       struct lpfc_async_xchg_ctx *ctxp =
+               container_of(rsp, struct lpfc_async_xchg_ctx, hdlrctx.fcp_req);
        struct rqb_dmabuf *nvmebuf = ctxp->rqb_buffer;
        struct lpfc_hba *phba = ctxp->phba;
        unsigned long iflag;
 #if (IS_ENABLED(CONFIG_NVME_TARGET_FC))
        uint16_t xri = bf_get(lpfc_wcqe_xa_xri, axri);
        uint16_t rxid = bf_get(lpfc_wcqe_xa_remote_xid, axri);
-       struct lpfc_nvmet_rcv_ctx *ctxp, *next_ctxp;
+       struct lpfc_async_xchg_ctx *ctxp, *next_ctxp;
        struct lpfc_nvmet_tgtport *tgtp;
        struct nvmefc_tgt_fcp_req *req = NULL;
        struct lpfc_nodelist *ndlp;
                                 "NVMET ABTS RCV: xri x%x CPU %02x rjt %d\n",
                                 xri, raw_smp_processor_id(), 0);
 
-               req = &ctxp->ctx.fcp_req;
+               req = &ctxp->hdlrctx.fcp_req;
                if (req)
                        nvmet_fc_rcv_fcp_abort(phba->targetport, req);
        }
 {
 #if (IS_ENABLED(CONFIG_NVME_TARGET_FC))
        struct lpfc_hba *phba = vport->phba;
-       struct lpfc_nvmet_rcv_ctx *ctxp, *next_ctxp;
+       struct lpfc_async_xchg_ctx *ctxp, *next_ctxp;
        struct nvmefc_tgt_fcp_req *rsp;
        uint32_t sid;
        uint16_t oxid, xri;
                lpfc_printf_log(phba, KERN_INFO, LOG_NVME_ABTS,
                                "6319 NVMET Rcv ABTS:acc xri x%x\n", xri);
 
-               rsp = &ctxp->ctx.fcp_req;
+               rsp = &ctxp->hdlrctx.fcp_req;
                nvmet_fc_rcv_fcp_abort(phba->targetport, rsp);
 
                /* Respond with BA_ACC accordingly */
                if (ctxp->flag & LPFC_NVMET_TNOTIFY) {
                        /* Notify the transport */
                        nvmet_fc_rcv_fcp_abort(phba->targetport,
-                                              &ctxp->ctx.fcp_req);
+                                              &ctxp->hdlrctx.fcp_req);
                } else {
                        cancel_work_sync(&ctxp->ctxbuf->defer_work);
                        spin_lock_irqsave(&ctxp->ctxlock, iflag);
 
 static void
 lpfc_nvmet_wqfull_flush(struct lpfc_hba *phba, struct lpfc_queue *wq,
-                       struct lpfc_nvmet_rcv_ctx *ctxp)
+                       struct lpfc_async_xchg_ctx *ctxp)
 {
        struct lpfc_sli_ring *pring;
        struct lpfc_iocbq *nvmewqeq;
 #if (IS_ENABLED(CONFIG_NVME_TARGET_FC))
        struct lpfc_sli_ring *pring;
        struct lpfc_iocbq *nvmewqeq;
-       struct lpfc_nvmet_rcv_ctx *ctxp;
+       struct lpfc_async_xchg_ctx *ctxp;
        unsigned long iflags;
        int rc;
 
                list_remove_head(&wq->wqfull_list, nvmewqeq, struct lpfc_iocbq,
                                 list);
                spin_unlock_irqrestore(&pring->ring_lock, iflags);
-               ctxp = (struct lpfc_nvmet_rcv_ctx *)nvmewqeq->context2;
+               ctxp = (struct lpfc_async_xchg_ctx *)nvmewqeq->context2;
                rc = lpfc_sli4_issue_wqe(phba, ctxp->hdwq, nvmewqeq);
                spin_lock_irqsave(&pring->ring_lock, iflags);
                if (rc == -EBUSY) {
                if (rc == WQE_SUCCESS) {
 #ifdef CONFIG_SCSI_LPFC_DEBUG_FS
                        if (ctxp->ts_cmd_nvme) {
-                               if (ctxp->ctx.fcp_req.op == NVMET_FCOP_RSP)
+                               if (ctxp->hdlrctx.fcp_req.op == NVMET_FCOP_RSP)
                                        ctxp->ts_status_wqput = ktime_get_ns();
                                else
                                        ctxp->ts_data_wqput = ktime_get_ns();
 #if (IS_ENABLED(CONFIG_NVME_TARGET_FC))
        struct lpfc_nvmet_tgtport *tgtp;
        struct fc_frame_header *fc_hdr;
-       struct lpfc_nvmet_rcv_ctx *ctxp;
+       struct lpfc_async_xchg_ctx *ctxp;
        uint32_t *payload;
        uint32_t size, oxid, sid, rc;
 
        size = bf_get(lpfc_rcqe_length,  &nvmebuf->cq_event.cqe.rcqe_cmpl);
        sid = sli4_sid_from_fc_hdr(fc_hdr);
 
-       ctxp = kzalloc(sizeof(struct lpfc_nvmet_rcv_ctx), GFP_ATOMIC);
+       ctxp = kzalloc(sizeof(struct lpfc_async_xchg_ctx), GFP_ATOMIC);
        if (ctxp == NULL) {
                atomic_inc(&tgtp->rcv_ls_req_drop);
                lpfc_printf_log(phba, KERN_ERR, LOG_NVME_IOERR,
         * lpfc_nvmet_xmt_ls_rsp_cmp should free the allocated ctxp.
         */
        atomic_inc(&tgtp->rcv_ls_req_in);
-       rc = nvmet_fc_rcv_ls_req(phba->targetport, NULL, &ctxp->ctx.ls_rsp,
+       rc = nvmet_fc_rcv_ls_req(phba->targetport, NULL, &ctxp->ls_rsp,
                                 payload, size);
 
        lpfc_printf_log(phba, KERN_INFO, LOG_NVME_DISC,
 lpfc_nvmet_process_rcv_fcp_req(struct lpfc_nvmet_ctxbuf *ctx_buf)
 {
 #if (IS_ENABLED(CONFIG_NVME_TARGET_FC))
-       struct lpfc_nvmet_rcv_ctx *ctxp = ctx_buf->context;
+       struct lpfc_async_xchg_ctx *ctxp = ctx_buf->context;
        struct lpfc_hba *phba = ctxp->phba;
        struct rqb_dmabuf *nvmebuf = ctxp->rqb_buffer;
        struct lpfc_nvmet_tgtport *tgtp;
         * A buffer has already been reposted for this IO, so just free
         * the nvmebuf.
         */
-       rc = nvmet_fc_rcv_fcp_req(phba->targetport, &ctxp->ctx.fcp_req,
+       rc = nvmet_fc_rcv_fcp_req(phba->targetport, &ctxp->hdlrctx.fcp_req,
                                  payload, ctxp->size);
        /* Process FCP command */
        if (rc == 0) {
                            uint64_t isr_timestamp,
                            uint8_t cqflag)
 {
-       struct lpfc_nvmet_rcv_ctx *ctxp;
+       struct lpfc_async_xchg_ctx *ctxp;
        struct lpfc_nvmet_tgtport *tgtp;
        struct fc_frame_header *fc_hdr;
        struct lpfc_nvmet_ctxbuf *ctx_buf;
 
        sid = sli4_sid_from_fc_hdr(fc_hdr);
 
-       ctxp = (struct lpfc_nvmet_rcv_ctx *)ctx_buf->context;
+       ctxp = (struct lpfc_async_xchg_ctx *)ctx_buf->context;
        spin_lock_irqsave(&phba->sli4_hba.t_active_list_lock, iflag);
        list_add_tail(&ctxp->list, &phba->sli4_hba.t_active_ctx_list);
        spin_unlock_irqrestore(&phba->sli4_hba.t_active_list_lock, iflag);
  **/
 static struct lpfc_iocbq *
 lpfc_nvmet_prep_ls_wqe(struct lpfc_hba *phba,
-                      struct lpfc_nvmet_rcv_ctx *ctxp,
+                      struct lpfc_async_xchg_ctx *ctxp,
                       dma_addr_t rspbuf, uint16_t rspsize)
 {
        struct lpfc_nodelist *ndlp;
 
 static struct lpfc_iocbq *
 lpfc_nvmet_prep_fcp_wqe(struct lpfc_hba *phba,
-                       struct lpfc_nvmet_rcv_ctx *ctxp)
+                       struct lpfc_async_xchg_ctx *ctxp)
 {
-       struct nvmefc_tgt_fcp_req *rsp = &ctxp->ctx.fcp_req;
+       struct nvmefc_tgt_fcp_req *rsp = &ctxp->hdlrctx.fcp_req;
        struct lpfc_nvmet_tgtport *tgtp;
        struct sli4_sge *sgl;
        struct lpfc_nodelist *ndlp;
 lpfc_nvmet_sol_fcp_abort_cmp(struct lpfc_hba *phba, struct lpfc_iocbq *cmdwqe,
                             struct lpfc_wcqe_complete *wcqe)
 {
-       struct lpfc_nvmet_rcv_ctx *ctxp;
+       struct lpfc_async_xchg_ctx *ctxp;
        struct lpfc_nvmet_tgtport *tgtp;
        uint32_t result;
        unsigned long flags;
 lpfc_nvmet_unsol_fcp_abort_cmp(struct lpfc_hba *phba, struct lpfc_iocbq *cmdwqe,
                               struct lpfc_wcqe_complete *wcqe)
 {
-       struct lpfc_nvmet_rcv_ctx *ctxp;
+       struct lpfc_async_xchg_ctx *ctxp;
        struct lpfc_nvmet_tgtport *tgtp;
        unsigned long flags;
        uint32_t result;
 lpfc_nvmet_xmt_ls_abort_cmp(struct lpfc_hba *phba, struct lpfc_iocbq *cmdwqe,
                            struct lpfc_wcqe_complete *wcqe)
 {
-       struct lpfc_nvmet_rcv_ctx *ctxp;
+       struct lpfc_async_xchg_ctx *ctxp;
        struct lpfc_nvmet_tgtport *tgtp;
        uint32_t result;
 
 
 static int
 lpfc_nvmet_unsol_issue_abort(struct lpfc_hba *phba,
-                            struct lpfc_nvmet_rcv_ctx *ctxp,
+                            struct lpfc_async_xchg_ctx *ctxp,
                             uint32_t sid, uint16_t xri)
 {
        struct lpfc_nvmet_tgtport *tgtp;
 
 static int
 lpfc_nvmet_sol_fcp_issue_abort(struct lpfc_hba *phba,
-                              struct lpfc_nvmet_rcv_ctx *ctxp,
+                              struct lpfc_async_xchg_ctx *ctxp,
                               uint32_t sid, uint16_t xri)
 {
        struct lpfc_nvmet_tgtport *tgtp;
 
 static int
 lpfc_nvmet_unsol_fcp_issue_abort(struct lpfc_hba *phba,
-                                struct lpfc_nvmet_rcv_ctx *ctxp,
+                                struct lpfc_async_xchg_ctx *ctxp,
                                 uint32_t sid, uint16_t xri)
 {
        struct lpfc_nvmet_tgtport *tgtp;
 
 static int
 lpfc_nvmet_unsol_ls_issue_abort(struct lpfc_hba *phba,
-                               struct lpfc_nvmet_rcv_ctx *ctxp,
+                               struct lpfc_async_xchg_ctx *ctxp,
                                uint32_t sid, uint16_t xri)
 {
        struct lpfc_nvmet_tgtport *tgtp;