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()
8185 lpfc_sli4_iocb2wqe(struct lpfc_hba *phba, struct lpfc_iocbq *iocbq, in lpfc_sli4_iocb2wqe() argument
8207 if (iocbq->iocb_flag & LPFC_IO_FCP) in lpfc_sli4_iocb2wqe()
8209 else if (fip && (iocbq->iocb_flag & LPFC_FIP_ELS_ID_MASK)) in lpfc_sli4_iocb2wqe()
8215 memcpy(wqe, &iocbq->iocb, sizeof(union lpfc_wqe)); in lpfc_sli4_iocb2wqe()
8216 abort_tag = (uint32_t) iocbq->iotag; in lpfc_sli4_iocb2wqe()
8217 xritag = iocbq->sli4_xritag; in lpfc_sli4_iocb2wqe()
8221 if (iocbq->iocb.un.genreq64.bdl.bdeFlags == BUFF_TYPE_BLP_64) { in lpfc_sli4_iocb2wqe()
8222 numBdes = iocbq->iocb.un.genreq64.bdl.bdeSize / in lpfc_sli4_iocb2wqe()
8225 ((struct lpfc_dmabuf *)iocbq->context3)->virt; in lpfc_sli4_iocb2wqe()
8243 xmit_len = iocbq->iocb.un.fcpi64.bdl.bdeSize; in lpfc_sli4_iocb2wqe()
8245 iocbq->iocb.ulpIoTag = iocbq->iotag; in lpfc_sli4_iocb2wqe()
8246 cmnd = iocbq->iocb.ulpCommand; in lpfc_sli4_iocb2wqe()
8248 switch (iocbq->iocb.ulpCommand) { in lpfc_sli4_iocb2wqe()
8250 if (iocbq->iocb_flag & LPFC_IO_LIBDFC) in lpfc_sli4_iocb2wqe()
8251 ndlp = iocbq->context_un.ndlp; in lpfc_sli4_iocb2wqe()
8253 ndlp = (struct lpfc_nodelist *)iocbq->context1; in lpfc_sli4_iocb2wqe()
8254 if (!iocbq->iocb.ulpLe) { in lpfc_sli4_iocb2wqe()
8258 iocbq->iocb.ulpCommand); in lpfc_sli4_iocb2wqe()
8265 iocbq->iocb.ulpTimeout); in lpfc_sli4_iocb2wqe()
8270 ct = ((iocbq->iocb.ulpCt_h << 1) | iocbq->iocb.ulpCt_l); in lpfc_sli4_iocb2wqe()
8272 iocbq->iocb.ulpContext); in lpfc_sli4_iocb2wqe()
8277 els_id = ((iocbq->iocb_flag & LPFC_FIP_ELS_ID_MASK) in lpfc_sli4_iocb2wqe()
8280 iocbq->context2)->virt); in lpfc_sli4_iocb2wqe()
8291 iocbq->vport->fc_myDID); in lpfc_sli4_iocb2wqe()
8298 phba->vpi_ids[iocbq->vport->vpi]); in lpfc_sli4_iocb2wqe()
8299 } else if (pcmd && iocbq->context1) { in lpfc_sli4_iocb2wqe()
8317 iocbq->iocb.un.ulpWord[3]); in lpfc_sli4_iocb2wqe()
8319 iocbq->iocb.unsli3.rcvsli3.ox_id); in lpfc_sli4_iocb2wqe()
8347 ((iocbq->iocb.ulpCt_h << 1) | iocbq->iocb.ulpCt_l)); in lpfc_sli4_iocb2wqe()
8365 iocbq->iocb.ulpFCP2Rcvy); in lpfc_sli4_iocb2wqe()
8366 bf_set(wqe_lnk, &wqe->fcp_iwrite.wqe_com, iocbq->iocb.ulpXS); in lpfc_sli4_iocb2wqe()
8373 bf_set(wqe_pu, &wqe->fcp_iwrite.wqe_com, iocbq->iocb.ulpPU); in lpfc_sli4_iocb2wqe()
8375 if (iocbq->iocb_flag & LPFC_IO_OAS) { in lpfc_sli4_iocb2wqe()
8394 iocbq->iocb.ulpFCP2Rcvy); in lpfc_sli4_iocb2wqe()
8395 bf_set(wqe_lnk, &wqe->fcp_iread.wqe_com, iocbq->iocb.ulpXS); in lpfc_sli4_iocb2wqe()
8402 bf_set(wqe_pu, &wqe->fcp_iread.wqe_com, iocbq->iocb.ulpPU); in lpfc_sli4_iocb2wqe()
8404 if (iocbq->iocb_flag & LPFC_IO_OAS) { in lpfc_sli4_iocb2wqe()
8431 iocbq->iocb.ulpFCP2Rcvy); in lpfc_sli4_iocb2wqe()
8432 if (iocbq->iocb_flag & LPFC_IO_OAS) { in lpfc_sli4_iocb2wqe()
8446 numBdes = iocbq->iocb.un.genreq64.bdl.bdeSize / in lpfc_sli4_iocb2wqe()
8459 if (iocbq->iocb.ulpCt_h || iocbq->iocb.ulpCt_l) { in lpfc_sli4_iocb2wqe()
8460 ct = ((iocbq->iocb.ulpCt_h << 1) | iocbq->iocb.ulpCt_l); in lpfc_sli4_iocb2wqe()
8463 ct, iocbq->iocb.ulpCommand); in lpfc_sli4_iocb2wqe()
8467 bf_set(wqe_tmo, &wqe->gen_req.wqe_com, iocbq->iocb.ulpTimeout); in lpfc_sli4_iocb2wqe()
8468 bf_set(wqe_pu, &wqe->gen_req.wqe_com, iocbq->iocb.ulpPU); in lpfc_sli4_iocb2wqe()
8478 ndlp = (struct lpfc_nodelist *)iocbq->context1; in lpfc_sli4_iocb2wqe()
8486 iocbq->iocb.un.xseq64.xmit_els_remoteID); in lpfc_sli4_iocb2wqe()
8491 if (iocbq->vport->fc_flag & FC_PT2PT) { in lpfc_sli4_iocb2wqe()
8494 iocbq->vport->fc_myDID); in lpfc_sli4_iocb2wqe()
8495 if (iocbq->vport->fc_myDID == Fabric_DID) { in lpfc_sli4_iocb2wqe()
8502 ((iocbq->iocb.ulpCt_h << 1) | iocbq->iocb.ulpCt_l)); in lpfc_sli4_iocb2wqe()
8503 bf_set(wqe_pu, &wqe->xmit_els_rsp.wqe_com, iocbq->iocb.ulpPU); in lpfc_sli4_iocb2wqe()
8505 iocbq->iocb.unsli3.rcvsli3.ox_id); in lpfc_sli4_iocb2wqe()
8506 if (!iocbq->iocb.ulpCt_h && iocbq->iocb.ulpCt_l) in lpfc_sli4_iocb2wqe()
8508 phba->vpi_ids[iocbq->vport->vpi]); in lpfc_sli4_iocb2wqe()
8518 iocbq->context2)->virt); in lpfc_sli4_iocb2wqe()
8522 iocbq->vport->fc_myDID); in lpfc_sli4_iocb2wqe()
8534 abrt_iotag = iocbq->iocb.un.acxri.abortContextTag; in lpfc_sli4_iocb2wqe()
8541 if ((iocbq->iocb.ulpCommand == CMD_CLOSE_XRI_CN) || fip) in lpfc_sli4_iocb2wqe()
8554 ((iocbq->iocb.ulpCt_h << 1) | iocbq->iocb.ulpCt_l)); in lpfc_sli4_iocb2wqe()
8555 abort_tag = iocbq->iocb.un.acxri.abortIoTag; in lpfc_sli4_iocb2wqe()
8569 ndlp = (struct lpfc_nodelist *)iocbq->context1; in lpfc_sli4_iocb2wqe()
8577 bf_get(lpfc_abts_oxid, &iocbq->iocb.un.bls_rsp)); in lpfc_sli4_iocb2wqe()
8578 if (bf_get(lpfc_abts_orig, &iocbq->iocb.un.bls_rsp) == in lpfc_sli4_iocb2wqe()
8585 iocbq->sli4_xritag); in lpfc_sli4_iocb2wqe()
8592 bf_get(lpfc_abts_rxid, &iocbq->iocb.un.bls_rsp)); in lpfc_sli4_iocb2wqe()
8601 iocbq->iocb.ulpContext); in lpfc_sli4_iocb2wqe()
8610 if (iocbq->iocb.un.xseq64.w5.hcsw.Rctl == FC_RCTL_BA_RJT) { in lpfc_sli4_iocb2wqe()
8612 bf_get(lpfc_vndr_code, &iocbq->iocb.un.bls_rsp)); in lpfc_sli4_iocb2wqe()
8614 bf_get(lpfc_rsn_expln, &iocbq->iocb.un.bls_rsp)); in lpfc_sli4_iocb2wqe()
8616 bf_get(lpfc_rsn_code, &iocbq->iocb.un.bls_rsp)); in lpfc_sli4_iocb2wqe()
8629 iocbq->iocb.ulpCommand); in lpfc_sli4_iocb2wqe()
8634 if (iocbq->iocb_flag & LPFC_IO_DIF_PASS) in lpfc_sli4_iocb2wqe()
8636 else if (iocbq->iocb_flag & LPFC_IO_DIF_STRIP) in lpfc_sli4_iocb2wqe()
8638 else if (iocbq->iocb_flag & LPFC_IO_DIF_INSERT) in lpfc_sli4_iocb2wqe()
8640 iocbq->iocb_flag &= ~(LPFC_IO_DIF_PASS | LPFC_IO_DIF_STRIP | in lpfc_sli4_iocb2wqe()
8643 bf_set(wqe_reqtag, &wqe->generic.wqe_com, iocbq->iotag); in lpfc_sli4_iocb2wqe()
8647 bf_set(wqe_class, &wqe->generic.wqe_com, iocbq->iocb.ulpClass); in lpfc_sli4_iocb2wqe()
8957 struct lpfc_iocbq *iocbq) in lpfc_sli_abts_err_handler() argument
8964 vpi = iocbq->iocb.un.asyncstat.sub_ctxt_tag; in lpfc_sli_abts_err_handler()
8965 rpi = iocbq->iocb.ulpContext; in lpfc_sli_abts_err_handler()
8970 vpi, rpi, iocbq->iocb.ulpStatus); in lpfc_sli_abts_err_handler()
8979 if (iocbq->iocb.ulpStatus == IOSTAT_LOCAL_REJECT) in lpfc_sli_abts_err_handler()
8987 iocbq->iocb.ulpContext, iocbq->iocb.ulpStatus, in lpfc_sli_abts_err_handler()
9051 struct lpfc_sli_ring * pring, struct lpfc_iocbq * iocbq) in lpfc_sli_async_event_handler() argument
9059 icmd = &iocbq->iocb; in lpfc_sli_async_event_handler()
9088 lpfc_sli_abts_err_handler(phba, iocbq); in lpfc_sli_async_event_handler()
9953 lpfc_sli_validate_fcp_iocb(struct lpfc_iocbq *iocbq, struct lpfc_vport *vport, in lpfc_sli_validate_fcp_iocb() argument
9960 if (!(iocbq->iocb_flag & LPFC_IO_FCP)) in lpfc_sli_validate_fcp_iocb()
9963 if (iocbq->vport != vport) in lpfc_sli_validate_fcp_iocb()
9966 lpfc_cmd = container_of(iocbq, struct lpfc_scsi_buf, cur_iocbq); in lpfc_sli_validate_fcp_iocb()
10019 struct lpfc_iocbq *iocbq; in lpfc_sli_sum_iocb() local
10023 iocbq = phba->sli.iocbq_lookup[i]; in lpfc_sli_sum_iocb()
10025 if (lpfc_sli_validate_fcp_iocb (iocbq, vport, tgt_id, lun_id, in lpfc_sli_sum_iocb()
10085 struct lpfc_iocbq *iocbq; in lpfc_sli_abort_iocb() local
10092 iocbq = phba->sli.iocbq_lookup[i]; in lpfc_sli_abort_iocb()
10094 if (lpfc_sli_validate_fcp_iocb(iocbq, vport, tgt_id, lun_id, in lpfc_sli_abort_iocb()
10102 if (iocbq->iocb_flag & LPFC_DRIVER_ABORTED) in lpfc_sli_abort_iocb()
10113 iocbq->iocb_flag |= LPFC_DRIVER_ABORTED; in lpfc_sli_abort_iocb()
10115 cmd = &iocbq->iocb; in lpfc_sli_abort_iocb()
10119 abtsiocb->iocb.un.acxri.abortIoTag = iocbq->sli4_xritag; in lpfc_sli_abort_iocb()
10127 abtsiocb->fcp_wqidx = iocbq->fcp_wqidx; in lpfc_sli_abort_iocb()
10128 if (iocbq->iocb_flag & LPFC_IO_FCP) in lpfc_sli_abort_iocb()
10130 if (iocbq->iocb_flag & LPFC_IO_FOF) in lpfc_sli_abort_iocb()
10182 struct lpfc_iocbq *iocbq; in lpfc_sli_abort_taskmgmt() local
10199 iocbq = phba->sli.iocbq_lookup[i]; in lpfc_sli_abort_taskmgmt()
10201 if (lpfc_sli_validate_fcp_iocb(iocbq, vport, tgt_id, lun_id, in lpfc_sli_abort_taskmgmt()
10209 if (iocbq->iocb_flag & LPFC_DRIVER_ABORTED) in lpfc_sli_abort_taskmgmt()
10217 icmd = &iocbq->iocb; in lpfc_sli_abort_taskmgmt()
10222 iocbq->sli4_xritag; in lpfc_sli_abort_taskmgmt()
10230 abtsiocbq->fcp_wqidx = iocbq->fcp_wqidx; in lpfc_sli_abort_taskmgmt()
10231 if (iocbq->iocb_flag & LPFC_IO_FCP) in lpfc_sli_abort_taskmgmt()
10233 if (iocbq->iocb_flag & LPFC_IO_FOF) in lpfc_sli_abort_taskmgmt()
10236 lpfc_cmd = container_of(iocbq, struct lpfc_scsi_buf, cur_iocbq); in lpfc_sli_abort_taskmgmt()
10252 iocbq->iocb_flag |= LPFC_DRIVER_ABORTED; in lpfc_sli_abort_taskmgmt()
10256 iocbq->fcp_wqidx; in lpfc_sli_abort_taskmgmt()
15321 struct lpfc_iocbq *first_iocbq, *iocbq; in lpfc_prep_seq() local
15372 iocbq = first_iocbq; in lpfc_prep_seq()
15378 if (!iocbq) { in lpfc_prep_seq()
15382 if (!iocbq->context3) { in lpfc_prep_seq()
15383 iocbq->context3 = d_buf; in lpfc_prep_seq()
15384 iocbq->iocb.ulpBdeCount++; in lpfc_prep_seq()
15390 &iocbq->iocb.unsli3.sli3Words[4]; in lpfc_prep_seq()
15396 iocbq->iocb.unsli3.rcvsli3.acc_len += len; in lpfc_prep_seq()
15399 iocbq = lpfc_sli_get_iocbq(vport->phba); in lpfc_prep_seq()
15400 if (!iocbq) { in lpfc_prep_seq()
15414 iocbq->context2 = d_buf; in lpfc_prep_seq()
15415 iocbq->context3 = NULL; in lpfc_prep_seq()
15416 iocbq->iocb.ulpBdeCount = 1; in lpfc_prep_seq()
15418 iocbq->iocb.un.cont64[0].tus.f.bdeSize = in lpfc_prep_seq()
15421 iocbq->iocb.un.cont64[0].tus.f.bdeSize = len; in lpfc_prep_seq()
15424 iocbq->iocb.unsli3.rcvsli3.acc_len = tot_len; in lpfc_prep_seq()
15426 iocbq->iocb.un.rcvels.remoteID = sid; in lpfc_prep_seq()
15427 list_add_tail(&iocbq->list, &first_iocbq->list); in lpfc_prep_seq()
15438 struct lpfc_iocbq *iocbq, *curr_iocb, *next_iocb; in lpfc_sli4_send_seq_to_ulp() local
15442 iocbq = lpfc_prep_seq(vport, seq_dmabuf); in lpfc_sli4_send_seq_to_ulp()
15443 if (!iocbq) { in lpfc_sli4_send_seq_to_ulp()
15453 iocbq, fc_hdr->fh_r_ctl, in lpfc_sli4_send_seq_to_ulp()
15463 &iocbq->list, list) { in lpfc_sli4_send_seq_to_ulp()
15467 lpfc_sli_release_iocbq(phba, iocbq); in lpfc_sli4_send_seq_to_ulp()