Lines Matching refs:iocbq

78 lpfc_get_iocb_from_iocbq(struct lpfc_iocbq *iocbq)  in lpfc_get_iocb_from_iocbq()  argument
80 return &iocbq->iocb; in lpfc_get_iocb_from_iocbq()
577 struct lpfc_iocbq * iocbq = NULL; in __lpfc_sli_get_iocbq() local
579 list_remove_head(lpfc_iocb_list, iocbq, struct lpfc_iocbq, list); in __lpfc_sli_get_iocbq()
580 if (iocbq) in __lpfc_sli_get_iocbq()
584 return iocbq; in __lpfc_sli_get_iocbq()
971 struct lpfc_iocbq * iocbq = NULL; in lpfc_sli_get_iocbq() local
975 iocbq = __lpfc_sli_get_iocbq(phba); in lpfc_sli_get_iocbq()
977 return iocbq; in lpfc_sli_get_iocbq()
999 __lpfc_sli_release_iocbq_s4(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq) in __lpfc_sli_release_iocbq_s4() argument
1006 if (iocbq->sli4_xritag == NO_XRI) in __lpfc_sli_release_iocbq_s4()
1009 sglq = __lpfc_clear_active_sglq(phba, iocbq->sli4_lxritag); in __lpfc_sli_release_iocbq_s4()
1013 if ((iocbq->iocb_flag & LPFC_EXCHANGE_BUSY) && in __lpfc_sli_release_iocbq_s4()
1039 memset((char *)iocbq + start_clean, 0, sizeof(*iocbq) - start_clean); in __lpfc_sli_release_iocbq_s4()
1040 iocbq->sli4_lxritag = NO_XRI; in __lpfc_sli_release_iocbq_s4()
1041 iocbq->sli4_xritag = NO_XRI; in __lpfc_sli_release_iocbq_s4()
1042 list_add_tail(&iocbq->list, &phba->lpfc_iocb_list); in __lpfc_sli_release_iocbq_s4()
1057 __lpfc_sli_release_iocbq_s3(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq) in __lpfc_sli_release_iocbq_s3() argument
1065 memset((char*)iocbq + start_clean, 0, sizeof(*iocbq) - start_clean); in __lpfc_sli_release_iocbq_s3()
1066 iocbq->sli4_xritag = NO_XRI; in __lpfc_sli_release_iocbq_s3()
1067 list_add_tail(&iocbq->list, &phba->lpfc_iocb_list); in __lpfc_sli_release_iocbq_s3()
1081 __lpfc_sli_release_iocbq(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq) in __lpfc_sli_release_iocbq() argument
1083 phba->__lpfc_sli_release_iocbq(phba, iocbq); in __lpfc_sli_release_iocbq()
1096 lpfc_sli_release_iocbq(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq) in lpfc_sli_release_iocbq() argument
1104 __lpfc_sli_release_iocbq(phba, iocbq); in lpfc_sli_release_iocbq()
1420 lpfc_sli_next_iotag(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq) in lpfc_sli_next_iotag() argument
1432 psli->iocbq_lookup[iotag] = iocbq; in lpfc_sli_next_iotag()
1434 iocbq->iotag = iotag; in lpfc_sli_next_iotag()
1451 psli->iocbq_lookup[iotag] = iocbq; in lpfc_sli_next_iotag()
1453 iocbq->iotag = iotag; in lpfc_sli_next_iotag()
1466 psli->iocbq_lookup[iotag] = iocbq; in lpfc_sli_next_iotag()
1468 iocbq->iotag = iotag; in lpfc_sli_next_iotag()
2480 struct lpfc_iocbq *iocbq; in lpfc_sli_process_unsol_iocb() local
2548 list_for_each_entry(iocbq, &saveq->list, list) { in lpfc_sli_process_unsol_iocb()
2549 irsp = &(iocbq->iocb); in lpfc_sli_process_unsol_iocb()
2551 iocbq->context2 = lpfc_sli_get_buff(phba, pring, in lpfc_sli_process_unsol_iocb()
2553 if (!iocbq->context2) in lpfc_sli_process_unsol_iocb()
2563 iocbq->context3 = lpfc_sli_get_buff(phba, pring, in lpfc_sli_process_unsol_iocb()
2565 if (!iocbq->context3) in lpfc_sli_process_unsol_iocb()
2583 list_for_each_entry(iocbq, &pring->iocb_continue_saveq, clist) { in lpfc_sli_process_unsol_iocb()
2584 if (iocbq->iocb.unsli3.rcvsli3.ox_id == in lpfc_sli_process_unsol_iocb()
2586 list_add_tail(&saveq->list, &iocbq->list); in lpfc_sli_process_unsol_iocb()
2595 list_del_init(&iocbq->clist); in lpfc_sli_process_unsol_iocb()
2596 saveq = iocbq; in lpfc_sli_process_unsol_iocb()
8155 lpfc_sli4_iocb2wqe(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq, in lpfc_sli4_iocb2wqe() argument
8177 if (iocbq->iocb_flag & LPFC_IO_FCP) in lpfc_sli4_iocb2wqe()
8179 else if (fip && (iocbq->iocb_flag & LPFC_FIP_ELS_ID_MASK)) in lpfc_sli4_iocb2wqe()
8185 memcpy(wqe, &iocbq->iocb, sizeof(union lpfc_wqe)); in lpfc_sli4_iocb2wqe()
8186 abort_tag = (uint32_t) iocbq->iotag; in lpfc_sli4_iocb2wqe()
8187 xritag = iocbq->sli4_xritag; in lpfc_sli4_iocb2wqe()
8191 if (iocbq->iocb.un.genreq64.bdl.bdeFlags == BUFF_TYPE_BLP_64) { in lpfc_sli4_iocb2wqe()
8192 numBdes = iocbq->iocb.un.genreq64.bdl.bdeSize / in lpfc_sli4_iocb2wqe()
8195 ((struct lpfc_dmabuf *)iocbq->context3)->virt; in lpfc_sli4_iocb2wqe()
8213 xmit_len = iocbq->iocb.un.fcpi64.bdl.bdeSize; in lpfc_sli4_iocb2wqe()
8215 iocbq->iocb.ulpIoTag = iocbq->iotag; in lpfc_sli4_iocb2wqe()
8216 cmnd = iocbq->iocb.ulpCommand; in lpfc_sli4_iocb2wqe()
8218 switch (iocbq->iocb.ulpCommand) { in lpfc_sli4_iocb2wqe()
8220 if (iocbq->iocb_flag & LPFC_IO_LIBDFC) in lpfc_sli4_iocb2wqe()
8221 ndlp = iocbq->context_un.ndlp; in lpfc_sli4_iocb2wqe()
8223 ndlp = (struct lpfc_nodelist *)iocbq->context1; in lpfc_sli4_iocb2wqe()
8224 if (!iocbq->iocb.ulpLe) { in lpfc_sli4_iocb2wqe()
8228 iocbq->iocb.ulpCommand); in lpfc_sli4_iocb2wqe()
8235 iocbq->iocb.ulpTimeout); in lpfc_sli4_iocb2wqe()
8240 ct = ((iocbq->iocb.ulpCt_h << 1) | iocbq->iocb.ulpCt_l); in lpfc_sli4_iocb2wqe()
8242 iocbq->iocb.ulpContext); in lpfc_sli4_iocb2wqe()
8247 els_id = ((iocbq->iocb_flag & LPFC_FIP_ELS_ID_MASK) in lpfc_sli4_iocb2wqe()
8250 iocbq->context2)->virt); in lpfc_sli4_iocb2wqe()
8261 iocbq->vport->fc_myDID); in lpfc_sli4_iocb2wqe()
8268 phba->vpi_ids[iocbq->vport->vpi]); in lpfc_sli4_iocb2wqe()
8269 } else if (pcmd && iocbq->context1) { in lpfc_sli4_iocb2wqe()
8287 iocbq->iocb.un.ulpWord[3]); in lpfc_sli4_iocb2wqe()
8289 iocbq->iocb.unsli3.rcvsli3.ox_id); in lpfc_sli4_iocb2wqe()
8317 ((iocbq->iocb.ulpCt_h << 1) | iocbq->iocb.ulpCt_l)); in lpfc_sli4_iocb2wqe()
8335 iocbq->iocb.ulpFCP2Rcvy); in lpfc_sli4_iocb2wqe()
8336 bf_set(wqe_lnk, &wqe->fcp_iwrite.wqe_com, iocbq->iocb.ulpXS); in lpfc_sli4_iocb2wqe()
8343 bf_set(wqe_pu, &wqe->fcp_iwrite.wqe_com, iocbq->iocb.ulpPU); in lpfc_sli4_iocb2wqe()
8345 if (iocbq->iocb_flag & LPFC_IO_OAS) { in lpfc_sli4_iocb2wqe()
8364 iocbq->iocb.ulpFCP2Rcvy); in lpfc_sli4_iocb2wqe()
8365 bf_set(wqe_lnk, &wqe->fcp_iread.wqe_com, iocbq->iocb.ulpXS); in lpfc_sli4_iocb2wqe()
8372 bf_set(wqe_pu, &wqe->fcp_iread.wqe_com, iocbq->iocb.ulpPU); in lpfc_sli4_iocb2wqe()
8374 if (iocbq->iocb_flag & LPFC_IO_OAS) { in lpfc_sli4_iocb2wqe()
8401 iocbq->iocb.ulpFCP2Rcvy); in lpfc_sli4_iocb2wqe()
8402 if (iocbq->iocb_flag & LPFC_IO_OAS) { in lpfc_sli4_iocb2wqe()
8416 numBdes = iocbq->iocb.un.genreq64.bdl.bdeSize / in lpfc_sli4_iocb2wqe()
8429 if (iocbq->iocb.ulpCt_h || iocbq->iocb.ulpCt_l) { in lpfc_sli4_iocb2wqe()
8430 ct = ((iocbq->iocb.ulpCt_h << 1) | iocbq->iocb.ulpCt_l); in lpfc_sli4_iocb2wqe()
8433 ct, iocbq->iocb.ulpCommand); in lpfc_sli4_iocb2wqe()
8437 bf_set(wqe_tmo, &wqe->gen_req.wqe_com, iocbq->iocb.ulpTimeout); in lpfc_sli4_iocb2wqe()
8438 bf_set(wqe_pu, &wqe->gen_req.wqe_com, iocbq->iocb.ulpPU); in lpfc_sli4_iocb2wqe()
8448 ndlp = (struct lpfc_nodelist *)iocbq->context1; in lpfc_sli4_iocb2wqe()
8456 iocbq->iocb.un.xseq64.xmit_els_remoteID); in lpfc_sli4_iocb2wqe()
8461 if (iocbq->vport->fc_flag & FC_PT2PT) { in lpfc_sli4_iocb2wqe()
8464 iocbq->vport->fc_myDID); in lpfc_sli4_iocb2wqe()
8465 if (iocbq->vport->fc_myDID == Fabric_DID) { in lpfc_sli4_iocb2wqe()
8472 ((iocbq->iocb.ulpCt_h << 1) | iocbq->iocb.ulpCt_l)); in lpfc_sli4_iocb2wqe()
8473 bf_set(wqe_pu, &wqe->xmit_els_rsp.wqe_com, iocbq->iocb.ulpPU); in lpfc_sli4_iocb2wqe()
8475 iocbq->iocb.unsli3.rcvsli3.ox_id); in lpfc_sli4_iocb2wqe()
8476 if (!iocbq->iocb.ulpCt_h && iocbq->iocb.ulpCt_l) in lpfc_sli4_iocb2wqe()
8478 phba->vpi_ids[iocbq->vport->vpi]); in lpfc_sli4_iocb2wqe()
8488 iocbq->context2)->virt); in lpfc_sli4_iocb2wqe()
8492 iocbq->vport->fc_myDID); in lpfc_sli4_iocb2wqe()
8504 abrt_iotag = iocbq->iocb.un.acxri.abortContextTag; in lpfc_sli4_iocb2wqe()
8511 if ((iocbq->iocb.ulpCommand == CMD_CLOSE_XRI_CN) || fip) in lpfc_sli4_iocb2wqe()
8524 ((iocbq->iocb.ulpCt_h << 1) | iocbq->iocb.ulpCt_l)); in lpfc_sli4_iocb2wqe()
8525 abort_tag = iocbq->iocb.un.acxri.abortIoTag; in lpfc_sli4_iocb2wqe()
8539 ndlp = (struct lpfc_nodelist *)iocbq->context1; in lpfc_sli4_iocb2wqe()
8547 bf_get(lpfc_abts_oxid, &iocbq->iocb.un.bls_rsp)); in lpfc_sli4_iocb2wqe()
8548 if (bf_get(lpfc_abts_orig, &iocbq->iocb.un.bls_rsp) == in lpfc_sli4_iocb2wqe()
8555 iocbq->sli4_xritag); in lpfc_sli4_iocb2wqe()
8562 bf_get(lpfc_abts_rxid, &iocbq->iocb.un.bls_rsp)); in lpfc_sli4_iocb2wqe()
8571 iocbq->iocb.ulpContext); in lpfc_sli4_iocb2wqe()
8580 if (iocbq->iocb.un.xseq64.w5.hcsw.Rctl == FC_RCTL_BA_RJT) { in lpfc_sli4_iocb2wqe()
8582 bf_get(lpfc_vndr_code, &iocbq->iocb.un.bls_rsp)); in lpfc_sli4_iocb2wqe()
8584 bf_get(lpfc_rsn_expln, &iocbq->iocb.un.bls_rsp)); in lpfc_sli4_iocb2wqe()
8586 bf_get(lpfc_rsn_code, &iocbq->iocb.un.bls_rsp)); in lpfc_sli4_iocb2wqe()
8599 iocbq->iocb.ulpCommand); in lpfc_sli4_iocb2wqe()
8604 if (iocbq->iocb_flag & LPFC_IO_DIF_PASS) in lpfc_sli4_iocb2wqe()
8606 else if (iocbq->iocb_flag & LPFC_IO_DIF_STRIP) in lpfc_sli4_iocb2wqe()
8608 else if (iocbq->iocb_flag & LPFC_IO_DIF_INSERT) in lpfc_sli4_iocb2wqe()
8610 iocbq->iocb_flag &= ~(LPFC_IO_DIF_PASS | LPFC_IO_DIF_STRIP | in lpfc_sli4_iocb2wqe()
8613 bf_set(wqe_reqtag, &wqe->generic.wqe_com, iocbq->iotag); in lpfc_sli4_iocb2wqe()
8617 bf_set(wqe_class, &wqe->generic.wqe_com, iocbq->iocb.ulpClass); in lpfc_sli4_iocb2wqe()
8939 struct lpfc_iocbq *iocbq) in lpfc_sli_abts_err_handler() argument
8946 vpi = iocbq->iocb.un.asyncstat.sub_ctxt_tag; in lpfc_sli_abts_err_handler()
8947 rpi = iocbq->iocb.ulpContext; in lpfc_sli_abts_err_handler()
8952 vpi, rpi, iocbq->iocb.ulpStatus); in lpfc_sli_abts_err_handler()
8961 if (iocbq->iocb.ulpStatus == IOSTAT_LOCAL_REJECT) in lpfc_sli_abts_err_handler()
8969 iocbq->iocb.ulpContext, iocbq->iocb.ulpStatus, in lpfc_sli_abts_err_handler()
9033 struct lpfc_sli_ring * pring, struct lpfc_iocbq * iocbq) in lpfc_sli_async_event_handler() argument
9041 icmd = &iocbq->iocb; in lpfc_sli_async_event_handler()
9070 lpfc_sli_abts_err_handler(phba, iocbq); in lpfc_sli_async_event_handler()
9935 lpfc_sli_validate_fcp_iocb(struct lpfc_iocbq *iocbq, struct lpfc_vport *vport, in lpfc_sli_validate_fcp_iocb() argument
9942 if (!(iocbq->iocb_flag & LPFC_IO_FCP)) in lpfc_sli_validate_fcp_iocb()
9945 if (iocbq->vport != vport) in lpfc_sli_validate_fcp_iocb()
9948 lpfc_cmd = container_of(iocbq, struct lpfc_scsi_buf, cur_iocbq); in lpfc_sli_validate_fcp_iocb()
10001 struct lpfc_iocbq *iocbq; in lpfc_sli_sum_iocb() local
10005 iocbq = phba->sli.iocbq_lookup[i]; in lpfc_sli_sum_iocb()
10007 if (lpfc_sli_validate_fcp_iocb (iocbq, vport, tgt_id, lun_id, in lpfc_sli_sum_iocb()
10067 struct lpfc_iocbq *iocbq; in lpfc_sli_abort_iocb() local
10074 iocbq = phba->sli.iocbq_lookup[i]; in lpfc_sli_abort_iocb()
10076 if (lpfc_sli_validate_fcp_iocb(iocbq, vport, tgt_id, lun_id, in lpfc_sli_abort_iocb()
10084 if (iocbq->iocb_flag & LPFC_DRIVER_ABORTED) in lpfc_sli_abort_iocb()
10095 iocbq->iocb_flag |= LPFC_DRIVER_ABORTED; in lpfc_sli_abort_iocb()
10097 cmd = &iocbq->iocb; in lpfc_sli_abort_iocb()
10101 abtsiocb->iocb.un.acxri.abortIoTag = iocbq->sli4_xritag; in lpfc_sli_abort_iocb()
10109 abtsiocb->fcp_wqidx = iocbq->fcp_wqidx; in lpfc_sli_abort_iocb()
10110 if (iocbq->iocb_flag & LPFC_IO_FCP) in lpfc_sli_abort_iocb()
10112 if (iocbq->iocb_flag & LPFC_IO_FOF) in lpfc_sli_abort_iocb()
10164 struct lpfc_iocbq *iocbq; in lpfc_sli_abort_taskmgmt() local
10181 iocbq = phba->sli.iocbq_lookup[i]; in lpfc_sli_abort_taskmgmt()
10183 if (lpfc_sli_validate_fcp_iocb(iocbq, vport, tgt_id, lun_id, in lpfc_sli_abort_taskmgmt()
10191 if (iocbq->iocb_flag & LPFC_DRIVER_ABORTED) in lpfc_sli_abort_taskmgmt()
10199 icmd = &iocbq->iocb; in lpfc_sli_abort_taskmgmt()
10204 iocbq->sli4_xritag; in lpfc_sli_abort_taskmgmt()
10212 abtsiocbq->fcp_wqidx = iocbq->fcp_wqidx; in lpfc_sli_abort_taskmgmt()
10213 if (iocbq->iocb_flag & LPFC_IO_FCP) in lpfc_sli_abort_taskmgmt()
10215 if (iocbq->iocb_flag & LPFC_IO_FOF) in lpfc_sli_abort_taskmgmt()
10218 lpfc_cmd = container_of(iocbq, struct lpfc_scsi_buf, cur_iocbq); in lpfc_sli_abort_taskmgmt()
10234 iocbq->iocb_flag |= LPFC_DRIVER_ABORTED; in lpfc_sli_abort_taskmgmt()
10238 iocbq->fcp_wqidx; in lpfc_sli_abort_taskmgmt()
15297 struct lpfc_iocbq *first_iocbq, *iocbq; in lpfc_prep_seq() local
15348 iocbq = first_iocbq; in lpfc_prep_seq()
15354 if (!iocbq) { in lpfc_prep_seq()
15358 if (!iocbq->context3) { in lpfc_prep_seq()
15359 iocbq->context3 = d_buf; in lpfc_prep_seq()
15360 iocbq->iocb.ulpBdeCount++; in lpfc_prep_seq()
15366 &iocbq->iocb.unsli3.sli3Words[4]; in lpfc_prep_seq()
15372 iocbq->iocb.unsli3.rcvsli3.acc_len += len; in lpfc_prep_seq()
15375 iocbq = lpfc_sli_get_iocbq(vport->phba); in lpfc_prep_seq()
15376 if (!iocbq) { in lpfc_prep_seq()
15390 iocbq->context2 = d_buf; in lpfc_prep_seq()
15391 iocbq->context3 = NULL; in lpfc_prep_seq()
15392 iocbq->iocb.ulpBdeCount = 1; in lpfc_prep_seq()
15394 iocbq->iocb.un.cont64[0].tus.f.bdeSize = in lpfc_prep_seq()
15397 iocbq->iocb.un.cont64[0].tus.f.bdeSize = len; in lpfc_prep_seq()
15400 iocbq->iocb.unsli3.rcvsli3.acc_len = tot_len; in lpfc_prep_seq()
15402 iocbq->iocb.un.rcvels.remoteID = sid; in lpfc_prep_seq()
15403 list_add_tail(&iocbq->list, &first_iocbq->list); in lpfc_prep_seq()
15414 struct lpfc_iocbq *iocbq, *curr_iocb, *next_iocb; in lpfc_sli4_send_seq_to_ulp() local
15418 iocbq = lpfc_prep_seq(vport, seq_dmabuf); in lpfc_sli4_send_seq_to_ulp()
15419 if (!iocbq) { in lpfc_sli4_send_seq_to_ulp()
15429 iocbq, fc_hdr->fh_r_ctl, in lpfc_sli4_send_seq_to_ulp()
15439 &iocbq->list, list) { in lpfc_sli4_send_seq_to_ulp()
15443 lpfc_sli_release_iocbq(phba, iocbq); in lpfc_sli4_send_seq_to_ulp()